From 135df6accc042471807536659e79cec942212fb8 Mon Sep 17 00:00:00 2001 From: Karan Shah Date: Mon, 10 Jan 2022 10:52:02 +0000 Subject: [PATCH 001/383] Setup the API code Signed-off-by: Karan Shah --- plugins/airbrake/src/api/airbrake-api.ts | 26 ++++++ plugins/airbrake/src/api/airbrake-groups.d.ts | 65 ++++++++++++++ plugins/airbrake/src/api/index.ts | 21 +++++ .../api/mock/airbrake-groups-api-mock.json | 85 +++++++++++++++++++ plugins/airbrake/src/api/mock/index.ts | 17 ++++ plugins/airbrake/src/api/mock/mock-api.ts | 27 ++++++ plugins/airbrake/src/api/production-api.ts | 37 ++++++++ 7 files changed, 278 insertions(+) create mode 100644 plugins/airbrake/src/api/airbrake-api.ts create mode 100644 plugins/airbrake/src/api/airbrake-groups.d.ts create mode 100644 plugins/airbrake/src/api/index.ts create mode 100644 plugins/airbrake/src/api/mock/airbrake-groups-api-mock.json create mode 100644 plugins/airbrake/src/api/mock/index.ts create mode 100644 plugins/airbrake/src/api/mock/mock-api.ts create mode 100644 plugins/airbrake/src/api/production-api.ts diff --git a/plugins/airbrake/src/api/airbrake-api.ts b/plugins/airbrake/src/api/airbrake-api.ts new file mode 100644 index 0000000000..1a3cfa72e4 --- /dev/null +++ b/plugins/airbrake/src/api/airbrake-api.ts @@ -0,0 +1,26 @@ +/* + * Copyright 2020 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { Groups } from './airbrake-groups'; +import { createApiRef } from '@backstage/core-plugin-api'; + +export const airbrakeApiRef = createApiRef({ + id: 'plugin.airbrake.service', +}); + +export interface AirbrakeApi { + fetchGroups(project: string): Promise; +} diff --git a/plugins/airbrake/src/api/airbrake-groups.d.ts b/plugins/airbrake/src/api/airbrake-groups.d.ts new file mode 100644 index 0000000000..df4c5de120 --- /dev/null +++ b/plugins/airbrake/src/api/airbrake-groups.d.ts @@ -0,0 +1,65 @@ +/* + * 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 interface Groups { + count: number; + end: string; + groups?: Group[] | null; + page: number; + resolvedCount: number; + unresolvedCount: number; +} + +export interface Group { + id: string; + projectId: number; + resolved: boolean; + muted: boolean; + mutedBy: number; + mutedAt?: null; + errors?: Error[] | null; + attributes?: null; + context: Context; + lastDeployId: string; + lastDeployAt?: null; + lastNoticeId: string; + lastNoticeAt: string; + noticeCount: number; + noticeTotalCount: number; + commentCount: number; + createdAt: string; +} + +export interface Error { + type: string; + message: string; + backtrace?: Backtrace[] | null; +} + +export interface Backtrace { + file: string; + function: string; + line: number; + column: number; + code?: null; +} + +export interface Context { + action: string; + component: string; + environment: string; + severity: string; +} diff --git a/plugins/airbrake/src/api/index.ts b/plugins/airbrake/src/api/index.ts new file mode 100644 index 0000000000..7bad94e298 --- /dev/null +++ b/plugins/airbrake/src/api/index.ts @@ -0,0 +1,21 @@ +/* + * Copyright 2020 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export * from './mock'; +export type { AirbrakeApi } from './airbrake-api'; +export { airbrakeApiRef } from './airbrake-api'; +export type { Groups } from './airbrake-groups'; +export { ProductionAirbrakeApi } from './production-api'; diff --git a/plugins/airbrake/src/api/mock/airbrake-groups-api-mock.json b/plugins/airbrake/src/api/mock/airbrake-groups-api-mock.json new file mode 100644 index 0000000000..fa654ec50b --- /dev/null +++ b/plugins/airbrake/src/api/mock/airbrake-groups-api-mock.json @@ -0,0 +1,85 @@ +{ + "count": 2, + "end": "", + "groups": [ + { + "id": "1", + "projectId": 123, + "resolved": false, + "muted": false, + "mutedBy": 0, + "mutedAt": null, + "errors": [ + { + "type": "Error", + "message": "useSearch must be used within a SearchContextProvider", + "backtrace": [ + { + "file": "webpack-internal:///../../node_modules/@backstage/plugin-search/dist/esm/index-893ec2f5.esm.js", + "function": "useSearch", + "line": 303, + "column": 11, + "code": null + } + ] + } + ], + "attributes": null, + "context": { + "action": "", + "component": "", + "environment": "local", + "severity": "error" + }, + "lastDeployId": "0", + "lastDeployAt": null, + "lastNoticeId": "234", + "lastNoticeAt": "2021-12-19T09:59:00.124Z", + "noticeCount": 5, + "noticeTotalCount": 5, + "commentCount": 0, + "createdAt": "2021-12-19T09:44:30.067447Z" + }, + { + "id": "2", + "projectId": 123, + "resolved": true, + "muted": false, + "mutedBy": 0, + "mutedAt": null, + "errors": [ + { + "type": "ChunkLoadError", + "message": "Loading chunk 7764 failed.", + "backtrace": [ + { + "file": "/PROJECT_ROOT/static/runtime.069c874d.js", + "function": "Object._.f.j", + "line": 1, + "column": 19465, + "code": null + } + ] + } + ], + "attributes": null, + "context": { + "action": "", + "component": "", + "environment": "local", + "severity": "error" + }, + "lastDeployId": "0", + "lastDeployAt": null, + "lastNoticeId": "345", + "lastNoticeAt": "2021-12-15T17:16:38.419Z", + "noticeCount": 1, + "noticeTotalCount": 1, + "commentCount": 0, + "createdAt": "2021-12-15T17:16:38.41983Z" + } + ], + "page": 1, + "resolvedCount": 1, + "unresolvedCount": 1 +} diff --git a/plugins/airbrake/src/api/mock/index.ts b/plugins/airbrake/src/api/mock/index.ts new file mode 100644 index 0000000000..f084268951 --- /dev/null +++ b/plugins/airbrake/src/api/mock/index.ts @@ -0,0 +1,17 @@ +/* + * Copyright 2020 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export { MockAirbrakeApi } from './mock-api'; diff --git a/plugins/airbrake/src/api/mock/mock-api.ts b/plugins/airbrake/src/api/mock/mock-api.ts new file mode 100644 index 0000000000..df0293da7c --- /dev/null +++ b/plugins/airbrake/src/api/mock/mock-api.ts @@ -0,0 +1,27 @@ +/* + * Copyright 2020 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { Groups } from '../airbrake-groups'; +import { AirbrakeApi } from '../airbrake-api'; +import mockGroupsData from './airbrake-groups-api-mock.json'; + +export class MockAirbrakeApi implements AirbrakeApi { + fetchGroups(): Promise { + return new Promise(resolve => { + setTimeout(() => resolve(mockGroupsData), 800); + }); + } +} diff --git a/plugins/airbrake/src/api/production-api.ts b/plugins/airbrake/src/api/production-api.ts new file mode 100644 index 0000000000..37ac938752 --- /dev/null +++ b/plugins/airbrake/src/api/production-api.ts @@ -0,0 +1,37 @@ +/* + * Copyright 2020 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { Groups } from './airbrake-groups'; +import { AirbrakeApi } from './airbrake-api'; +import { DiscoveryApi } from '@backstage/core-plugin-api'; + +export class ProductionAirbrakeApi implements AirbrakeApi { + constructor(private readonly discoveryApi: DiscoveryApi) {} + + async fetchGroups(project: string): Promise { + const apiUrl = `${await this.discoveryApi.getBaseUrl( + 'proxy', + )}/airbrake/api`; + + const response = await fetch(`${apiUrl}/v4/projects/${project}/groups`); + + if (response.status >= 400 && response.status < 600) { + throw new Error('Failed fetching Airbrake issues'); + } + + return (await response.json()) as Groups; + } +} From f3d7baaefa248681c8db3e0829f95cf02af40934 Mon Sep 17 00:00:00 2001 From: Karan Shah Date: Mon, 10 Jan 2022 11:49:23 +0000 Subject: [PATCH 002/383] Connect the API code to the components Signed-off-by: Karan Shah --- plugins/airbrake/package.json | 1 + plugins/airbrake/src/api/airbrake-groups.d.ts | 12 +-- .../EntityAirbrakeContent.tsx | 65 ++++++++++++-- .../EntityAirbrakeContent/example-data.json | 85 ------------------- .../airbrake/src/components/useProjectSlug.ts | 23 +++++ 5 files changed, 87 insertions(+), 99 deletions(-) delete mode 100644 plugins/airbrake/src/components/EntityAirbrakeContent/example-data.json create mode 100644 plugins/airbrake/src/components/useProjectSlug.ts diff --git a/plugins/airbrake/package.json b/plugins/airbrake/package.json index 7294c97413..7f96f0bc61 100644 --- a/plugins/airbrake/package.json +++ b/plugins/airbrake/package.json @@ -20,6 +20,7 @@ "clean": "backstage-cli clean" }, "dependencies": { + "@backstage/catalog-model": "^0.9.7", "@backstage/core-components": "^0.8.3", "@backstage/core-plugin-api": "^0.4.1", "@backstage/theme": "^0.2.14", diff --git a/plugins/airbrake/src/api/airbrake-groups.d.ts b/plugins/airbrake/src/api/airbrake-groups.d.ts index df4c5de120..e1887eca9b 100644 --- a/plugins/airbrake/src/api/airbrake-groups.d.ts +++ b/plugins/airbrake/src/api/airbrake-groups.d.ts @@ -29,12 +29,12 @@ export interface Group { resolved: boolean; muted: boolean; mutedBy: number; - mutedAt?: null; - errors?: Error[] | null; - attributes?: null; + mutedAt?: string | null; + errors?: Error[]; + attributes?: string | null; context: Context; lastDeployId: string; - lastDeployAt?: null; + lastDeployAt?: string | null; lastNoticeId: string; lastNoticeAt: string; noticeCount: number; @@ -46,7 +46,7 @@ export interface Group { export interface Error { type: string; message: string; - backtrace?: Backtrace[] | null; + backtrace?: Backtrace[]; } export interface Backtrace { @@ -54,7 +54,7 @@ export interface Backtrace { function: string; line: number; column: number; - code?: null; + code?: string | null; } export interface Context { diff --git a/plugins/airbrake/src/components/EntityAirbrakeContent/EntityAirbrakeContent.tsx b/plugins/airbrake/src/components/EntityAirbrakeContent/EntityAirbrakeContent.tsx index 062d9e898a..2bd3917443 100644 --- a/plugins/airbrake/src/components/EntityAirbrakeContent/EntityAirbrakeContent.tsx +++ b/plugins/airbrake/src/components/EntityAirbrakeContent/EntityAirbrakeContent.tsx @@ -13,13 +13,25 @@ * 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 React, { useEffect } from 'react'; import { Grid, Typography } from '@material-ui/core'; -import { InfoCard } from '@backstage/core-components'; -import exampleData from './example-data.json'; +import { + EmptyState, + InfoCard, + MissingAnnotationEmptyState, + Progress, +} from '@backstage/core-components'; import hash from 'object-hash'; import { makeStyles } from '@material-ui/core/styles'; import { BackstageTheme } from '@backstage/theme'; +import { ErrorApi, errorApiRef, useApi } from '@backstage/core-plugin-api'; +import { airbrakeApiRef } from '../../api'; +import useAsync from 'react-use/lib/useAsync'; +import { + AIRBRAKE_PROJECT_SLUG_ANNOTATION, + useProjectSlug, +} from '../useProjectSlug'; const useStyles = makeStyles(() => ({ multilineText: { @@ -27,17 +39,54 @@ const useStyles = makeStyles(() => ({ }, })); -export const EntityAirbrakeContent = () => { +export const EntityAirbrakeContent = ({ entity }: { entity: Entity }) => { const classes = useStyles(); + const projectId = useProjectSlug(entity); + const errorApi = useApi(errorApiRef); + const airbrakeApi = useApi(airbrakeApiRef); + + const { loading, value, error } = useAsync( + () => airbrakeApi.fetchGroups(projectId), + [projectId], + ); + + useEffect(() => { + if (error) { + errorApi.post(error); + } + }, [error, errorApi]); + + if (loading || !projectId || error) { + return ( + + {loading && } + + {!loading && !projectId && ( + + )} + + {!loading && error && ( + + )} + + ); + } + return ( - {exampleData.groups.map(group => ( + {value?.groups?.map(group => ( - {group.errors.map(error => ( - + {group.errors?.map(groupError => ( + - {error.message} + {groupError.message} ))} diff --git a/plugins/airbrake/src/components/EntityAirbrakeContent/example-data.json b/plugins/airbrake/src/components/EntityAirbrakeContent/example-data.json deleted file mode 100644 index fa654ec50b..0000000000 --- a/plugins/airbrake/src/components/EntityAirbrakeContent/example-data.json +++ /dev/null @@ -1,85 +0,0 @@ -{ - "count": 2, - "end": "", - "groups": [ - { - "id": "1", - "projectId": 123, - "resolved": false, - "muted": false, - "mutedBy": 0, - "mutedAt": null, - "errors": [ - { - "type": "Error", - "message": "useSearch must be used within a SearchContextProvider", - "backtrace": [ - { - "file": "webpack-internal:///../../node_modules/@backstage/plugin-search/dist/esm/index-893ec2f5.esm.js", - "function": "useSearch", - "line": 303, - "column": 11, - "code": null - } - ] - } - ], - "attributes": null, - "context": { - "action": "", - "component": "", - "environment": "local", - "severity": "error" - }, - "lastDeployId": "0", - "lastDeployAt": null, - "lastNoticeId": "234", - "lastNoticeAt": "2021-12-19T09:59:00.124Z", - "noticeCount": 5, - "noticeTotalCount": 5, - "commentCount": 0, - "createdAt": "2021-12-19T09:44:30.067447Z" - }, - { - "id": "2", - "projectId": 123, - "resolved": true, - "muted": false, - "mutedBy": 0, - "mutedAt": null, - "errors": [ - { - "type": "ChunkLoadError", - "message": "Loading chunk 7764 failed.", - "backtrace": [ - { - "file": "/PROJECT_ROOT/static/runtime.069c874d.js", - "function": "Object._.f.j", - "line": 1, - "column": 19465, - "code": null - } - ] - } - ], - "attributes": null, - "context": { - "action": "", - "component": "", - "environment": "local", - "severity": "error" - }, - "lastDeployId": "0", - "lastDeployAt": null, - "lastNoticeId": "345", - "lastNoticeAt": "2021-12-15T17:16:38.419Z", - "noticeCount": 1, - "noticeTotalCount": 1, - "commentCount": 0, - "createdAt": "2021-12-15T17:16:38.41983Z" - } - ], - "page": 1, - "resolvedCount": 1, - "unresolvedCount": 1 -} diff --git a/plugins/airbrake/src/components/useProjectSlug.ts b/plugins/airbrake/src/components/useProjectSlug.ts new file mode 100644 index 0000000000..4c6337b49e --- /dev/null +++ b/plugins/airbrake/src/components/useProjectSlug.ts @@ -0,0 +1,23 @@ +/* + * Copyright 2020 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { Entity } from '@backstage/catalog-model'; + +export const AIRBRAKE_PROJECT_SLUG_ANNOTATION = 'airbrake.io/project-slug'; + +export const useProjectSlug = (entity: Entity) => { + return entity?.metadata.annotations?.[AIRBRAKE_PROJECT_SLUG_ANNOTATION] ?? ''; +}; From b7e049377029e2fb699d1d2c9fd6be111e7bb89a Mon Sep 17 00:00:00 2001 From: Karan Shah Date: Mon, 10 Jan 2022 13:51:33 +0000 Subject: [PATCH 003/383] Documentation should just point to the plugin folder, not the README file directly. Signed-off-by: Karan Shah --- microsite/data/plugins/airbrake.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/microsite/data/plugins/airbrake.yaml b/microsite/data/plugins/airbrake.yaml index 96de75c002..29c1f394d7 100644 --- a/microsite/data/plugins/airbrake.yaml +++ b/microsite/data/plugins/airbrake.yaml @@ -4,6 +4,6 @@ author: Simply Business authorUrl: https://github.com/simplybusiness/ category: Monitoring description: Access Airbrake error monitoring and other integrations from within Backstage -documentation: https://github.com/backstage/backstage/blob/master/plugins/airbrake/README.md +documentation: https://github.com/backstage/backstage/blob/master/plugins/airbrake iconUrl: https://wp-assets.airbrake.io/wp-content/uploads/2020/10/05222904/Square-white-A-on-Orange.png npmPackageName: '@backstage/plugin-airbrake' From d16c977381980614e529a65a28bc6b5dc5a2e352 Mon Sep 17 00:00:00 2001 From: Karan Shah Date: Mon, 10 Jan 2022 16:27:46 +0000 Subject: [PATCH 004/383] Incorporate the API changes to the rest of the code. Signed-off-by: Karan Shah --- plugins/airbrake/dev/index.tsx | 2 +- plugins/airbrake/package.json | 1 + .../EntityAirbrakeWidget.test.tsx} | 22 +++++++++-- .../EntityAirbrakeWidget.tsx} | 2 +- .../components/EntityAirbrakeWidget/index.ts | 17 +++++++++ ...keContent.test.tsx => extensions.test.tsx} | 2 +- plugins/airbrake/src/extensions.tsx | 38 +++++++++++++++++++ plugins/airbrake/src/index.ts | 3 +- plugins/airbrake/src/plugin.ts | 28 ++++++++------ 9 files changed, 96 insertions(+), 19 deletions(-) rename plugins/airbrake/src/components/{EntityAirbrakeContent/EntityAirbrakeContent.test.tsx => EntityAirbrakeWidget/EntityAirbrakeWidget.test.tsx} (61%) rename plugins/airbrake/src/components/{EntityAirbrakeContent/EntityAirbrakeContent.tsx => EntityAirbrakeWidget/EntityAirbrakeWidget.tsx} (97%) create mode 100644 plugins/airbrake/src/components/EntityAirbrakeWidget/index.ts rename plugins/airbrake/src/{EntityAirbrakeContent.test.tsx => extensions.test.tsx} (94%) create mode 100644 plugins/airbrake/src/extensions.tsx diff --git a/plugins/airbrake/dev/index.tsx b/plugins/airbrake/dev/index.tsx index e74ce68ee5..4c52e27094 100644 --- a/plugins/airbrake/dev/index.tsx +++ b/plugins/airbrake/dev/index.tsx @@ -15,7 +15,7 @@ */ import React from 'react'; import { createDevApp } from '@backstage/dev-utils'; -import { EntityAirbrakeContent, airbrakePlugin } from '../src/plugin'; +import { EntityAirbrakeContent, airbrakePlugin } from '../src'; import { Content, ContentHeader, diff --git a/plugins/airbrake/package.json b/plugins/airbrake/package.json index 7f96f0bc61..5ebfae651f 100644 --- a/plugins/airbrake/package.json +++ b/plugins/airbrake/package.json @@ -23,6 +23,7 @@ "@backstage/catalog-model": "^0.9.7", "@backstage/core-components": "^0.8.3", "@backstage/core-plugin-api": "^0.4.1", + "@backstage/plugin-catalog-react": "^0.6.10", "@backstage/theme": "^0.2.14", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", diff --git a/plugins/airbrake/src/components/EntityAirbrakeContent/EntityAirbrakeContent.test.tsx b/plugins/airbrake/src/components/EntityAirbrakeWidget/EntityAirbrakeWidget.test.tsx similarity index 61% rename from plugins/airbrake/src/components/EntityAirbrakeContent/EntityAirbrakeContent.test.tsx rename to plugins/airbrake/src/components/EntityAirbrakeWidget/EntityAirbrakeWidget.test.tsx index a621eb281c..d93c642e6c 100644 --- a/plugins/airbrake/src/components/EntityAirbrakeContent/EntityAirbrakeContent.test.tsx +++ b/plugins/airbrake/src/components/EntityAirbrakeWidget/EntityAirbrakeWidget.test.tsx @@ -15,13 +15,29 @@ */ import React from 'react'; -import { EntityAirbrakeContent } from './EntityAirbrakeContent'; -import exampleData from './example-data.json'; +import { EntityAirbrakeWidget } from './EntityAirbrakeWidget'; +import exampleData from '../../api/mock/airbrake-groups-api-mock.json'; import { renderInTestApp } from '@backstage/test-utils'; +import { AIRBRAKE_PROJECT_SLUG_ANNOTATION } from '../useProjectSlug'; +import { Entity } from '@backstage/catalog-model'; describe('EntityAirbrakeContent', () => { + const entity = (name?: string) => + ({ + apiVersion: 'backstage.io/v1alpha1', + kind: 'Component', + metadata: { + annotations: { + [AIRBRAKE_PROJECT_SLUG_ANNOTATION]: name, + }, + name: name, + }, + } as Entity); + it('renders all errors sent from Airbrake', async () => { - const table = await renderInTestApp(); + const table = await renderInTestApp( + , + ); expect(exampleData.groups.length).toBeGreaterThan(0); for (const group of exampleData.groups) { expect( diff --git a/plugins/airbrake/src/components/EntityAirbrakeContent/EntityAirbrakeContent.tsx b/plugins/airbrake/src/components/EntityAirbrakeWidget/EntityAirbrakeWidget.tsx similarity index 97% rename from plugins/airbrake/src/components/EntityAirbrakeContent/EntityAirbrakeContent.tsx rename to plugins/airbrake/src/components/EntityAirbrakeWidget/EntityAirbrakeWidget.tsx index 2bd3917443..53f7d63f13 100644 --- a/plugins/airbrake/src/components/EntityAirbrakeContent/EntityAirbrakeContent.tsx +++ b/plugins/airbrake/src/components/EntityAirbrakeWidget/EntityAirbrakeWidget.tsx @@ -39,7 +39,7 @@ const useStyles = makeStyles(() => ({ }, })); -export const EntityAirbrakeContent = ({ entity }: { entity: Entity }) => { +export const EntityAirbrakeWidget = ({ entity }: { entity: Entity }) => { const classes = useStyles(); const projectId = useProjectSlug(entity); diff --git a/plugins/airbrake/src/components/EntityAirbrakeWidget/index.ts b/plugins/airbrake/src/components/EntityAirbrakeWidget/index.ts new file mode 100644 index 0000000000..0a85263c5f --- /dev/null +++ b/plugins/airbrake/src/components/EntityAirbrakeWidget/index.ts @@ -0,0 +1,17 @@ +/* + * Copyright 2020 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export { EntityAirbrakeWidget } from './EntityAirbrakeWidget'; diff --git a/plugins/airbrake/src/EntityAirbrakeContent.test.tsx b/plugins/airbrake/src/extensions.test.tsx similarity index 94% rename from plugins/airbrake/src/EntityAirbrakeContent.test.tsx rename to plugins/airbrake/src/extensions.test.tsx index f0afef425f..db8670ac50 100644 --- a/plugins/airbrake/src/EntityAirbrakeContent.test.tsx +++ b/plugins/airbrake/src/extensions.test.tsx @@ -14,7 +14,7 @@ * limitations under the License. */ import React from 'react'; -import { EntityAirbrakeContent } from './plugin'; +import { EntityAirbrakeContent } from './extensions'; import { renderInTestApp } from '@backstage/test-utils'; describe('The Airbrake entity', () => { diff --git a/plugins/airbrake/src/extensions.tsx b/plugins/airbrake/src/extensions.tsx new file mode 100644 index 0000000000..582088b250 --- /dev/null +++ b/plugins/airbrake/src/extensions.tsx @@ -0,0 +1,38 @@ +/* + * Copyright 2020 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { useEntity } from '@backstage/plugin-catalog-react'; +import React from 'react'; +import { airbrakePlugin } from './plugin'; +import { createRoutableExtension } from '@backstage/core-plugin-api'; +import { rootRouteRef } from './routes'; + +export const EntityAirbrakeContent = airbrakePlugin.provide( + createRoutableExtension({ + name: 'EntityAirbrakeContent', + mountPoint: rootRouteRef, + component: () => + import('./components/EntityAirbrakeWidget').then( + ({ EntityAirbrakeWidget }) => { + const AirbrakePage = () => { + const { entity } = useEntity(); + return ; + }; + return AirbrakePage; + }, + ), + }), +); diff --git a/plugins/airbrake/src/index.ts b/plugins/airbrake/src/index.ts index 8f319e02fd..d5aedd9ba6 100644 --- a/plugins/airbrake/src/index.ts +++ b/plugins/airbrake/src/index.ts @@ -13,4 +13,5 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -export { airbrakePlugin, EntityAirbrakeContent } from './plugin'; +export { airbrakePlugin } from './plugin'; +export { EntityAirbrakeContent } from './extensions'; diff --git a/plugins/airbrake/src/plugin.ts b/plugins/airbrake/src/plugin.ts index 0a3679baa4..30dc6749c5 100644 --- a/plugins/airbrake/src/plugin.ts +++ b/plugins/airbrake/src/plugin.ts @@ -14,26 +14,30 @@ * limitations under the License. */ import { + configApiRef, + createApiFactory, createPlugin, - createRoutableExtension, + discoveryApiRef, + identityApiRef, } from '@backstage/core-plugin-api'; import { rootRouteRef } from './routes'; +import { airbrakeApiRef, ProductionAirbrakeApi } from './api'; export const airbrakePlugin = createPlugin({ id: 'airbrake', + apis: [ + createApiFactory({ + api: airbrakeApiRef, + deps: { + configApi: configApiRef, + discoveryApi: discoveryApiRef, + identityApi: identityApiRef, + }, + factory: ({ discoveryApi }) => new ProductionAirbrakeApi(discoveryApi), + }), + ], routes: { root: rootRouteRef, }, }); - -export const EntityAirbrakeContent = airbrakePlugin.provide( - createRoutableExtension({ - name: 'EntityAirbrakeContent', - component: () => - import('./components/EntityAirbrakeContent/EntityAirbrakeContent').then( - m => m.EntityAirbrakeContent, - ), - mountPoint: rootRouteRef, - }), -); From 32ab08a4b14e4a2ef1b538fee7a5f58d368367cd Mon Sep 17 00:00:00 2001 From: Karan Shah Date: Tue, 11 Jan 2022 09:35:22 +0000 Subject: [PATCH 005/383] Register the mock API for the dev app Signed-off-by: Karan Shah --- plugins/airbrake/dev/index.tsx | 6 ++++++ plugins/airbrake/src/plugin.ts | 4 ---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/plugins/airbrake/dev/index.tsx b/plugins/airbrake/dev/index.tsx index 4c52e27094..ec6c4fd0b6 100644 --- a/plugins/airbrake/dev/index.tsx +++ b/plugins/airbrake/dev/index.tsx @@ -24,9 +24,15 @@ import { Page, SupportButton, } from '@backstage/core-components'; +import { airbrakeApiRef, MockAirbrakeApi } from '../src/api'; createDevApp() .registerPlugin(airbrakePlugin) + .registerApi({ + api: airbrakeApiRef, + deps: {}, + factory: () => new MockAirbrakeApi(), + }) .addPage({ element: ( diff --git a/plugins/airbrake/src/plugin.ts b/plugins/airbrake/src/plugin.ts index 30dc6749c5..5a58f5b4b3 100644 --- a/plugins/airbrake/src/plugin.ts +++ b/plugins/airbrake/src/plugin.ts @@ -14,11 +14,9 @@ * limitations under the License. */ import { - configApiRef, createApiFactory, createPlugin, discoveryApiRef, - identityApiRef, } from '@backstage/core-plugin-api'; import { rootRouteRef } from './routes'; @@ -30,9 +28,7 @@ export const airbrakePlugin = createPlugin({ createApiFactory({ api: airbrakeApiRef, deps: { - configApi: configApiRef, discoveryApi: discoveryApiRef, - identityApi: identityApiRef, }, factory: ({ discoveryApi }) => new ProductionAirbrakeApi(discoveryApi), }), From 87ffa4698ddc6bd1a8b3c655a831ea8a1db36567 Mon Sep 17 00:00:00 2001 From: Karan Shah Date: Tue, 11 Jan 2022 10:14:21 +0000 Subject: [PATCH 006/383] Create a mock entity Signed-off-by: Karan Shah --- plugins/airbrake/dev/index.tsx | 8 +++-- plugins/airbrake/src/api/mock/mock-entity.ts | 29 +++++++++++++++++++ .../EntityAirbrakeWidget.test.tsx | 15 +--------- plugins/airbrake/src/extensions.tsx | 3 +- 4 files changed, 37 insertions(+), 18 deletions(-) create mode 100644 plugins/airbrake/src/api/mock/mock-entity.ts diff --git a/plugins/airbrake/dev/index.tsx b/plugins/airbrake/dev/index.tsx index ec6c4fd0b6..cd980408ae 100644 --- a/plugins/airbrake/dev/index.tsx +++ b/plugins/airbrake/dev/index.tsx @@ -15,7 +15,7 @@ */ import React from 'react'; import { createDevApp } from '@backstage/dev-utils'; -import { EntityAirbrakeContent, airbrakePlugin } from '../src'; +import { airbrakePlugin, EntityAirbrakeContent } from '../src'; import { Content, ContentHeader, @@ -25,6 +25,8 @@ import { SupportButton, } from '@backstage/core-components'; import { airbrakeApiRef, MockAirbrakeApi } from '../src/api'; +import { EntityProvider } from '@backstage/plugin-catalog-react'; +import { entity } from '../src/api/mock/mock-entity'; createDevApp() .registerPlugin(airbrakePlugin) @@ -49,7 +51,9 @@ createDevApp() A description of your plugin goes here. - + + + ), diff --git a/plugins/airbrake/src/api/mock/mock-entity.ts b/plugins/airbrake/src/api/mock/mock-entity.ts new file mode 100644 index 0000000000..7e5b897cca --- /dev/null +++ b/plugins/airbrake/src/api/mock/mock-entity.ts @@ -0,0 +1,29 @@ +/* + * 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 { AIRBRAKE_PROJECT_SLUG_ANNOTATION } from '../../components/useProjectSlug'; +import { Entity } from '@backstage/catalog-model'; + +export const entity = (name?: string) => + ({ + apiVersion: 'backstage.io/v1alpha1', + kind: 'Component', + metadata: { + annotations: { + [AIRBRAKE_PROJECT_SLUG_ANNOTATION]: name, + }, + name: name, + }, + } as Entity); diff --git a/plugins/airbrake/src/components/EntityAirbrakeWidget/EntityAirbrakeWidget.test.tsx b/plugins/airbrake/src/components/EntityAirbrakeWidget/EntityAirbrakeWidget.test.tsx index d93c642e6c..000bd8f230 100644 --- a/plugins/airbrake/src/components/EntityAirbrakeWidget/EntityAirbrakeWidget.test.tsx +++ b/plugins/airbrake/src/components/EntityAirbrakeWidget/EntityAirbrakeWidget.test.tsx @@ -18,22 +18,9 @@ import React from 'react'; import { EntityAirbrakeWidget } from './EntityAirbrakeWidget'; import exampleData from '../../api/mock/airbrake-groups-api-mock.json'; import { renderInTestApp } from '@backstage/test-utils'; -import { AIRBRAKE_PROJECT_SLUG_ANNOTATION } from '../useProjectSlug'; -import { Entity } from '@backstage/catalog-model'; +import { entity } from '../../api/mock/mock-entity'; describe('EntityAirbrakeContent', () => { - const entity = (name?: string) => - ({ - apiVersion: 'backstage.io/v1alpha1', - kind: 'Component', - metadata: { - annotations: { - [AIRBRAKE_PROJECT_SLUG_ANNOTATION]: name, - }, - name: name, - }, - } as Entity); - it('renders all errors sent from Airbrake', async () => { const table = await renderInTestApp( , diff --git a/plugins/airbrake/src/extensions.tsx b/plugins/airbrake/src/extensions.tsx index 582088b250..6fbea68409 100644 --- a/plugins/airbrake/src/extensions.tsx +++ b/plugins/airbrake/src/extensions.tsx @@ -27,11 +27,10 @@ export const EntityAirbrakeContent = airbrakePlugin.provide( component: () => import('./components/EntityAirbrakeWidget').then( ({ EntityAirbrakeWidget }) => { - const AirbrakePage = () => { + return () => { const { entity } = useEntity(); return ; }; - return AirbrakePage; }, ), }), From 35ab9befbaddb8aa8832df66613a16f7091d96c9 Mon Sep 17 00:00:00 2001 From: Karan Shah Date: Tue, 11 Jan 2022 10:45:29 +0000 Subject: [PATCH 007/383] Rename entity() to createEntity() Signed-off-by: Karan Shah --- plugins/airbrake/dev/index.tsx | 4 ++-- plugins/airbrake/src/api/mock/mock-entity.ts | 2 +- .../EntityAirbrakeWidget/EntityAirbrakeWidget.test.tsx | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/plugins/airbrake/dev/index.tsx b/plugins/airbrake/dev/index.tsx index cd980408ae..8c3dd2f643 100644 --- a/plugins/airbrake/dev/index.tsx +++ b/plugins/airbrake/dev/index.tsx @@ -26,7 +26,7 @@ import { } from '@backstage/core-components'; import { airbrakeApiRef, MockAirbrakeApi } from '../src/api'; import { EntityProvider } from '@backstage/plugin-catalog-react'; -import { entity } from '../src/api/mock/mock-entity'; +import { createEntity } from '../src/api/mock/mock-entity'; createDevApp() .registerPlugin(airbrakePlugin) @@ -51,7 +51,7 @@ createDevApp() A description of your plugin goes here. - + diff --git a/plugins/airbrake/src/api/mock/mock-entity.ts b/plugins/airbrake/src/api/mock/mock-entity.ts index 7e5b897cca..b169938004 100644 --- a/plugins/airbrake/src/api/mock/mock-entity.ts +++ b/plugins/airbrake/src/api/mock/mock-entity.ts @@ -16,7 +16,7 @@ import { AIRBRAKE_PROJECT_SLUG_ANNOTATION } from '../../components/useProjectSlug'; import { Entity } from '@backstage/catalog-model'; -export const entity = (name?: string) => +export const createEntity = (name?: string) => ({ apiVersion: 'backstage.io/v1alpha1', kind: 'Component', diff --git a/plugins/airbrake/src/components/EntityAirbrakeWidget/EntityAirbrakeWidget.test.tsx b/plugins/airbrake/src/components/EntityAirbrakeWidget/EntityAirbrakeWidget.test.tsx index 000bd8f230..3c63f84f19 100644 --- a/plugins/airbrake/src/components/EntityAirbrakeWidget/EntityAirbrakeWidget.test.tsx +++ b/plugins/airbrake/src/components/EntityAirbrakeWidget/EntityAirbrakeWidget.test.tsx @@ -18,12 +18,12 @@ import React from 'react'; import { EntityAirbrakeWidget } from './EntityAirbrakeWidget'; import exampleData from '../../api/mock/airbrake-groups-api-mock.json'; import { renderInTestApp } from '@backstage/test-utils'; -import { entity } from '../../api/mock/mock-entity'; +import { createEntity } from '../../api/mock/mock-entity'; describe('EntityAirbrakeContent', () => { it('renders all errors sent from Airbrake', async () => { const table = await renderInTestApp( - , + , ); expect(exampleData.groups.length).toBeGreaterThan(0); for (const group of exampleData.groups) { From 4b794662c184fe1af07e3b413e33cc32cc8dd301 Mon Sep 17 00:00:00 2001 From: Karan Shah Date: Tue, 25 Jan 2022 10:40:40 +0000 Subject: [PATCH 008/383] Added the UI ability to change APIs Signed-off-by: Karan Shah --- .../airbrake/dev/components/ApiBar/ApiBar.tsx | 62 +++++++++++++++++++ .../airbrake/dev/components/ApiBar/index.ts | 17 +++++ plugins/airbrake/dev/index.tsx | 35 +++++------ 3 files changed, 94 insertions(+), 20 deletions(-) create mode 100644 plugins/airbrake/dev/components/ApiBar/ApiBar.tsx create mode 100644 plugins/airbrake/dev/components/ApiBar/index.ts diff --git a/plugins/airbrake/dev/components/ApiBar/ApiBar.tsx b/plugins/airbrake/dev/components/ApiBar/ApiBar.tsx new file mode 100644 index 0000000000..f86cb348ba --- /dev/null +++ b/plugins/airbrake/dev/components/ApiBar/ApiBar.tsx @@ -0,0 +1,62 @@ +/* + * 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, { useState } from 'react'; +import { Select, SelectItem } from '@backstage/core-components'; +import { makeStyles, TextField } from '@material-ui/core'; + +const useStyles = makeStyles({ + root: { + display: 'flex', + gap: '1em', + flexWrap: 'wrap', + }, +}); + +export const ApiBar = () => { + const classes = useStyles(); + const apiOptions: SelectItem[] = [ + { label: 'Fake', value: 'fake' }, + { label: 'Real', value: 'real' }, + ]; + const [api, setApi] = useState('fake'); + const [projectId, setProjectId] = useState(); + const [apiKey, setApiKey] = useState(''); + + return ( +
+ setApi(newValue as string)} - /> + value={api} + onChange={e => setApi(e.target.value)} + > + {apiOptions.map(option => ( + + {option.label} + + ))} + {api === 'real' && ( <> Date: Wed, 26 Jan 2022 10:27:54 +0000 Subject: [PATCH 010/383] Start moving towards 2 pages Signed-off-by: Karan Shah --- plugins/airbrake/dev/index.tsx | 33 +++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/plugins/airbrake/dev/index.tsx b/plugins/airbrake/dev/index.tsx index 17bbcf3d18..36f271a995 100644 --- a/plugins/airbrake/dev/index.tsx +++ b/plugins/airbrake/dev/index.tsx @@ -21,6 +21,8 @@ import { ApiBar } from './components/ApiBar'; import { Content, Header, Page } from '@backstage/core-components'; import { EntityProvider } from '@backstage/plugin-catalog-react'; import { createEntity } from '../src/api/mock/mock-entity'; +import AirplanemodeActiveIcon from '@material-ui/icons/AirplanemodeActive'; +import AirplanemodeInactiveIcon from '@material-ui/icons/AirplanemodeInactive'; createDevApp() .registerPlugin(airbrakePlugin) @@ -29,6 +31,32 @@ createDevApp() deps: {}, factory: () => new MockAirbrakeApi(), }) + .addPage({ + element: ( + +
+ +
+ + + +
+
+ + ), + title: 'Mock API', + path: '/airbrake-mock-api', + icon: AirplanemodeActiveIcon, + }) .addPage({ element: ( @@ -52,7 +80,8 @@ createDevApp() ), - title: 'Root Page', - path: '/airbrake', + title: 'Real API', + path: '/airbrake-real-api', + icon: AirplanemodeInactiveIcon, }) .render(); From de5133035009e4d7b3f05f40566315b80802442d Mon Sep 17 00:00:00 2001 From: Karan Shah Date: Wed, 26 Jan 2022 10:42:20 +0000 Subject: [PATCH 011/383] Added in FlexColumn.tsx Signed-off-by: Karan Shah --- .../airbrake/dev/components/ApiBar/ApiBar.tsx | 41 +++++-------------- .../dev/components/FlexColumn/FlexColumn.tsx | 34 +++++++++++++++ .../dev/components/FlexColumn/index.ts | 18 ++++++++ plugins/airbrake/dev/index.tsx | 21 +++------- 4 files changed, 67 insertions(+), 47 deletions(-) create mode 100644 plugins/airbrake/dev/components/FlexColumn/FlexColumn.tsx create mode 100644 plugins/airbrake/dev/components/FlexColumn/index.ts diff --git a/plugins/airbrake/dev/components/ApiBar/ApiBar.tsx b/plugins/airbrake/dev/components/ApiBar/ApiBar.tsx index d782113dc0..5c2b71ca14 100644 --- a/plugins/airbrake/dev/components/ApiBar/ApiBar.tsx +++ b/plugins/airbrake/dev/components/ApiBar/ApiBar.tsx @@ -14,7 +14,7 @@ * limitations under the License. */ import React, { useState } from 'react'; -import { makeStyles, MenuItem, TextField } from '@material-ui/core'; +import { makeStyles, TextField } from '@material-ui/core'; const useStyles = makeStyles({ root: { @@ -26,42 +26,21 @@ const useStyles = makeStyles({ export const ApiBar = () => { const classes = useStyles(); - const apiOptions = [ - { label: 'Fake', value: 'fake' }, - { label: 'Real', value: 'real' }, - ]; - const [api, setApi] = useState('fake'); const [projectId, setProjectId] = useState(); const [apiKey, setApiKey] = useState(''); return (
setApi(e.target.value)} - > - {apiOptions.map(option => ( - - {option.label} - - ))} - - {api === 'real' && ( - <> - setProjectId(parseInt(e.target.value, 10))} - /> - setApiKey(e.target.value)} - /> - - )} + label="Project ID" + value={projectId} + onChange={e => setProjectId(parseInt(e.target.value, 10))} + /> + setApiKey(e.target.value)} + />
); }; diff --git a/plugins/airbrake/dev/components/FlexColumn/FlexColumn.tsx b/plugins/airbrake/dev/components/FlexColumn/FlexColumn.tsx new file mode 100644 index 0000000000..aaf64d3513 --- /dev/null +++ b/plugins/airbrake/dev/components/FlexColumn/FlexColumn.tsx @@ -0,0 +1,34 @@ +/* + * 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, { PropsWithChildren, ReactNode } from 'react'; + +export declare type FlexColumnProps = { + children?: ReactNode; +}; + +export const FlexColumn = (props: PropsWithChildren) => { + return ( +
+ {props.children} +
+ ); +}; diff --git a/plugins/airbrake/dev/components/FlexColumn/index.ts b/plugins/airbrake/dev/components/FlexColumn/index.ts new file mode 100644 index 0000000000..5926c3cb28 --- /dev/null +++ b/plugins/airbrake/dev/components/FlexColumn/index.ts @@ -0,0 +1,18 @@ +/* + * Copyright 2020 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export { FlexColumn } from './FlexColumn'; +export type { FlexColumnProps } from './FlexColumn'; diff --git a/plugins/airbrake/dev/index.tsx b/plugins/airbrake/dev/index.tsx index 36f271a995..ba520892cb 100644 --- a/plugins/airbrake/dev/index.tsx +++ b/plugins/airbrake/dev/index.tsx @@ -23,6 +23,7 @@ import { EntityProvider } from '@backstage/plugin-catalog-react'; import { createEntity } from '../src/api/mock/mock-entity'; import AirplanemodeActiveIcon from '@material-ui/icons/AirplanemodeActive'; import AirplanemodeInactiveIcon from '@material-ui/icons/AirplanemodeInactive'; +import { FlexColumn } from './components/FlexColumn'; createDevApp() .registerPlugin(airbrakePlugin) @@ -39,17 +40,11 @@ createDevApp() subtitle="This uses a fake API" /> -
+ -
+
), @@ -65,18 +60,12 @@ createDevApp() subtitle="Test the plugin below" /> -
+ -
+
), From 39a5bfb958f74f2a6d891c1946a1ec77decaa747 Mon Sep 17 00:00:00 2001 From: Karan Shah Date: Wed, 26 Jan 2022 10:53:42 +0000 Subject: [PATCH 012/383] Improved the icons Signed-off-by: Karan Shah --- .../dev/components/FlexColumn/FlexColumn.tsx | 34 ----------------- .../dev/components/FlexColumn/index.ts | 18 --------- plugins/airbrake/dev/index.tsx | 38 +++++++------------ 3 files changed, 14 insertions(+), 76 deletions(-) delete mode 100644 plugins/airbrake/dev/components/FlexColumn/FlexColumn.tsx delete mode 100644 plugins/airbrake/dev/components/FlexColumn/index.ts diff --git a/plugins/airbrake/dev/components/FlexColumn/FlexColumn.tsx b/plugins/airbrake/dev/components/FlexColumn/FlexColumn.tsx deleted file mode 100644 index aaf64d3513..0000000000 --- a/plugins/airbrake/dev/components/FlexColumn/FlexColumn.tsx +++ /dev/null @@ -1,34 +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, { PropsWithChildren, ReactNode } from 'react'; - -export declare type FlexColumnProps = { - children?: ReactNode; -}; - -export const FlexColumn = (props: PropsWithChildren) => { - return ( -
- {props.children} -
- ); -}; diff --git a/plugins/airbrake/dev/components/FlexColumn/index.ts b/plugins/airbrake/dev/components/FlexColumn/index.ts deleted file mode 100644 index 5926c3cb28..0000000000 --- a/plugins/airbrake/dev/components/FlexColumn/index.ts +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -export { FlexColumn } from './FlexColumn'; -export type { FlexColumnProps } from './FlexColumn'; diff --git a/plugins/airbrake/dev/index.tsx b/plugins/airbrake/dev/index.tsx index ba520892cb..4163590069 100644 --- a/plugins/airbrake/dev/index.tsx +++ b/plugins/airbrake/dev/index.tsx @@ -21,9 +21,8 @@ import { ApiBar } from './components/ApiBar'; import { Content, Header, Page } from '@backstage/core-components'; import { EntityProvider } from '@backstage/plugin-catalog-react'; import { createEntity } from '../src/api/mock/mock-entity'; -import AirplanemodeActiveIcon from '@material-ui/icons/AirplanemodeActive'; -import AirplanemodeInactiveIcon from '@material-ui/icons/AirplanemodeInactive'; -import { FlexColumn } from './components/FlexColumn'; +import CloudOffIcon from '@material-ui/icons/CloudOff'; +import CloudIcon from '@material-ui/icons/Cloud'; createDevApp() .registerPlugin(airbrakePlugin) @@ -35,42 +34,33 @@ createDevApp() .addPage({ element: ( -
+
- - - - - + + + ), title: 'Mock API', path: '/airbrake-mock-api', - icon: AirplanemodeActiveIcon, + icon: CloudOffIcon, }) .addPage({ element: ( -
+
+ +
- - - - - - + + + ), title: 'Real API', path: '/airbrake-real-api', - icon: AirplanemodeInactiveIcon, + icon: CloudIcon, }) .render(); From 1c2ba8ccdeeb83298aa601878ea7d246bb1837a2 Mon Sep 17 00:00:00 2001 From: Karan Shah Date: Thu, 27 Jan 2022 10:47:41 +0000 Subject: [PATCH 013/383] Added state to the top level for the real API Signed-off-by: Karan Shah --- .../airbrake/dev/components/ApiBar/ApiBar.tsx | 33 +++++++------ .../ContextProvider/ContextProvider.tsx | 48 +++++++++++++++++++ .../dev/components/ContextProvider/index.ts | 17 +++++++ plugins/airbrake/dev/index.tsx | 29 +++++++---- 4 files changed, 102 insertions(+), 25 deletions(-) create mode 100644 plugins/airbrake/dev/components/ContextProvider/ContextProvider.tsx create mode 100644 plugins/airbrake/dev/components/ContextProvider/index.ts diff --git a/plugins/airbrake/dev/components/ApiBar/ApiBar.tsx b/plugins/airbrake/dev/components/ApiBar/ApiBar.tsx index 5c2b71ca14..bd8079420f 100644 --- a/plugins/airbrake/dev/components/ApiBar/ApiBar.tsx +++ b/plugins/airbrake/dev/components/ApiBar/ApiBar.tsx @@ -13,8 +13,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import React, { useState } from 'react'; +import React from 'react'; import { makeStyles, TextField } from '@material-ui/core'; +import { Context } from '../ContextProvider'; const useStyles = makeStyles({ root: { @@ -26,21 +27,23 @@ const useStyles = makeStyles({ export const ApiBar = () => { const classes = useStyles(); - const [projectId, setProjectId] = useState(); - const [apiKey, setApiKey] = useState(''); return ( -
- setProjectId(parseInt(e.target.value, 10))} - /> - setApiKey(e.target.value)} - /> -
+ + {value => ( +
+ value.setProjectId?.(parseInt(e.target.value, 10))} + /> + value.setApiKey?.(e.target.value)} + /> +
+ )} +
); }; diff --git a/plugins/airbrake/dev/components/ContextProvider/ContextProvider.tsx b/plugins/airbrake/dev/components/ContextProvider/ContextProvider.tsx new file mode 100644 index 0000000000..bbf72f3b99 --- /dev/null +++ b/plugins/airbrake/dev/components/ContextProvider/ContextProvider.tsx @@ -0,0 +1,48 @@ +/* + * 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, { + Dispatch, + PropsWithChildren, + SetStateAction, + useState, +} from 'react'; + +interface ContextInterface { + projectId?: number; + setProjectId?: Dispatch>; + apiKey?: String; + setApiKey?: Dispatch>; +} + +export const Context = React.createContext({}); + +export const ContextProvider = ({ children }: PropsWithChildren<{}>) => { + const [projectId, setProjectId] = useState(); + const [apiKey, setApiKey] = useState(''); + + return ( + + {children} + + ); +}; diff --git a/plugins/airbrake/dev/components/ContextProvider/index.ts b/plugins/airbrake/dev/components/ContextProvider/index.ts new file mode 100644 index 0000000000..f1e350868a --- /dev/null +++ b/plugins/airbrake/dev/components/ContextProvider/index.ts @@ -0,0 +1,17 @@ +/* + * Copyright 2020 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export { ContextProvider, Context } from './ContextProvider'; diff --git a/plugins/airbrake/dev/index.tsx b/plugins/airbrake/dev/index.tsx index 4163590069..37b1810142 100644 --- a/plugins/airbrake/dev/index.tsx +++ b/plugins/airbrake/dev/index.tsx @@ -23,6 +23,7 @@ import { EntityProvider } from '@backstage/plugin-catalog-react'; import { createEntity } from '../src/api/mock/mock-entity'; import CloudOffIcon from '@material-ui/icons/CloudOff'; import CloudIcon from '@material-ui/icons/Cloud'; +import { ContextProvider, Context } from './components/ContextProvider'; createDevApp() .registerPlugin(airbrakePlugin) @@ -48,16 +49,24 @@ createDevApp() }) .addPage({ element: ( - -
- -
- - - - - -
+ + +
+ +
+ + + {value => ( + + + + )} + + +
+
), title: 'Real API', path: '/airbrake-real-api', From f3238a1a6c69f04a778bd9aef445c5eedf022ef9 Mon Sep 17 00:00:00 2001 From: Karan Shah Date: Thu, 27 Jan 2022 11:07:21 +0000 Subject: [PATCH 014/383] Make the project slug into a project ID Signed-off-by: Karan Shah --- plugins/airbrake/dev/components/ApiBar/ApiBar.tsx | 4 +++- plugins/airbrake/dev/index.tsx | 6 ++---- plugins/airbrake/src/api/mock/mock-entity.ts | 15 +++++++++------ .../EntityAirbrakeWidget.test.tsx | 2 +- .../EntityAirbrakeWidget/EntityAirbrakeWidget.tsx | 4 ++-- plugins/airbrake/src/components/useProjectSlug.ts | 4 ++-- 6 files changed, 19 insertions(+), 16 deletions(-) diff --git a/plugins/airbrake/dev/components/ApiBar/ApiBar.tsx b/plugins/airbrake/dev/components/ApiBar/ApiBar.tsx index bd8079420f..8437559baf 100644 --- a/plugins/airbrake/dev/components/ApiBar/ApiBar.tsx +++ b/plugins/airbrake/dev/components/ApiBar/ApiBar.tsx @@ -35,7 +35,9 @@ export const ApiBar = () => { value.setProjectId?.(parseInt(e.target.value, 10))} + onChange={e => + value.setProjectId?.(parseInt(e.target.value, 10) || undefined) + } />
- + @@ -57,9 +57,7 @@ createDevApp() {value => ( - + )} diff --git a/plugins/airbrake/src/api/mock/mock-entity.ts b/plugins/airbrake/src/api/mock/mock-entity.ts index b169938004..7891478f51 100644 --- a/plugins/airbrake/src/api/mock/mock-entity.ts +++ b/plugins/airbrake/src/api/mock/mock-entity.ts @@ -13,17 +13,20 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { AIRBRAKE_PROJECT_SLUG_ANNOTATION } from '../../components/useProjectSlug'; +import { AIRBRAKE_PROJECT_ID_ANNOTATION } from '../../components/useProjectSlug'; import { Entity } from '@backstage/catalog-model'; -export const createEntity = (name?: string) => - ({ +export const createEntity = (projectId?: number) => { + const projectIdString = projectId?.toString(); + + return { apiVersion: 'backstage.io/v1alpha1', kind: 'Component', metadata: { annotations: { - [AIRBRAKE_PROJECT_SLUG_ANNOTATION]: name, + [AIRBRAKE_PROJECT_ID_ANNOTATION]: projectIdString, }, - name: name, + name: projectIdString, }, - } as Entity); + } as Entity; +}; diff --git a/plugins/airbrake/src/components/EntityAirbrakeWidget/EntityAirbrakeWidget.test.tsx b/plugins/airbrake/src/components/EntityAirbrakeWidget/EntityAirbrakeWidget.test.tsx index 3c63f84f19..5fd1aa9bf5 100644 --- a/plugins/airbrake/src/components/EntityAirbrakeWidget/EntityAirbrakeWidget.test.tsx +++ b/plugins/airbrake/src/components/EntityAirbrakeWidget/EntityAirbrakeWidget.test.tsx @@ -23,7 +23,7 @@ import { createEntity } from '../../api/mock/mock-entity'; describe('EntityAirbrakeContent', () => { it('renders all errors sent from Airbrake', async () => { const table = await renderInTestApp( - , + , ); expect(exampleData.groups.length).toBeGreaterThan(0); for (const group of exampleData.groups) { diff --git a/plugins/airbrake/src/components/EntityAirbrakeWidget/EntityAirbrakeWidget.tsx b/plugins/airbrake/src/components/EntityAirbrakeWidget/EntityAirbrakeWidget.tsx index 53f7d63f13..543ebbefc0 100644 --- a/plugins/airbrake/src/components/EntityAirbrakeWidget/EntityAirbrakeWidget.tsx +++ b/plugins/airbrake/src/components/EntityAirbrakeWidget/EntityAirbrakeWidget.tsx @@ -29,7 +29,7 @@ import { ErrorApi, errorApiRef, useApi } from '@backstage/core-plugin-api'; import { airbrakeApiRef } from '../../api'; import useAsync from 'react-use/lib/useAsync'; import { - AIRBRAKE_PROJECT_SLUG_ANNOTATION, + AIRBRAKE_PROJECT_ID_ANNOTATION, useProjectSlug, } from '../useProjectSlug'; @@ -64,7 +64,7 @@ export const EntityAirbrakeWidget = ({ entity }: { entity: Entity }) => { {!loading && !projectId && ( )} diff --git a/plugins/airbrake/src/components/useProjectSlug.ts b/plugins/airbrake/src/components/useProjectSlug.ts index 4c6337b49e..07ba527c00 100644 --- a/plugins/airbrake/src/components/useProjectSlug.ts +++ b/plugins/airbrake/src/components/useProjectSlug.ts @@ -16,8 +16,8 @@ import { Entity } from '@backstage/catalog-model'; -export const AIRBRAKE_PROJECT_SLUG_ANNOTATION = 'airbrake.io/project-slug'; +export const AIRBRAKE_PROJECT_ID_ANNOTATION = 'airbrake.io/project-id'; export const useProjectSlug = (entity: Entity) => { - return entity?.metadata.annotations?.[AIRBRAKE_PROJECT_SLUG_ANNOTATION] ?? ''; + return entity?.metadata.annotations?.[AIRBRAKE_PROJECT_ID_ANNOTATION] ?? ''; }; From 6b5b9f2f1ba0c30a3344b687b9160e41fcb2c8aa Mon Sep 17 00:00:00 2001 From: Karan Shah Date: Thu, 27 Jan 2022 14:21:27 +0000 Subject: [PATCH 015/383] Rename useProjectSlug.ts to useProjectId.ts Signed-off-by: Karan Shah --- plugins/airbrake/src/api/mock/mock-entity.ts | 2 +- .../EntityAirbrakeWidget/EntityAirbrakeWidget.tsx | 7 ++----- .../src/components/{useProjectSlug.ts => useProjectId.ts} | 2 +- 3 files changed, 4 insertions(+), 7 deletions(-) rename plugins/airbrake/src/components/{useProjectSlug.ts => useProjectId.ts} (93%) diff --git a/plugins/airbrake/src/api/mock/mock-entity.ts b/plugins/airbrake/src/api/mock/mock-entity.ts index 7891478f51..13534f2458 100644 --- a/plugins/airbrake/src/api/mock/mock-entity.ts +++ b/plugins/airbrake/src/api/mock/mock-entity.ts @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { AIRBRAKE_PROJECT_ID_ANNOTATION } from '../../components/useProjectSlug'; +import { AIRBRAKE_PROJECT_ID_ANNOTATION } from '../../components/useProjectId'; import { Entity } from '@backstage/catalog-model'; export const createEntity = (projectId?: number) => { diff --git a/plugins/airbrake/src/components/EntityAirbrakeWidget/EntityAirbrakeWidget.tsx b/plugins/airbrake/src/components/EntityAirbrakeWidget/EntityAirbrakeWidget.tsx index 543ebbefc0..4564af6079 100644 --- a/plugins/airbrake/src/components/EntityAirbrakeWidget/EntityAirbrakeWidget.tsx +++ b/plugins/airbrake/src/components/EntityAirbrakeWidget/EntityAirbrakeWidget.tsx @@ -28,10 +28,7 @@ import { BackstageTheme } from '@backstage/theme'; import { ErrorApi, errorApiRef, useApi } from '@backstage/core-plugin-api'; import { airbrakeApiRef } from '../../api'; import useAsync from 'react-use/lib/useAsync'; -import { - AIRBRAKE_PROJECT_ID_ANNOTATION, - useProjectSlug, -} from '../useProjectSlug'; +import { AIRBRAKE_PROJECT_ID_ANNOTATION, useProjectId } from '../useProjectId'; const useStyles = makeStyles(() => ({ multilineText: { @@ -42,7 +39,7 @@ const useStyles = makeStyles(() => ({ export const EntityAirbrakeWidget = ({ entity }: { entity: Entity }) => { const classes = useStyles(); - const projectId = useProjectSlug(entity); + const projectId = useProjectId(entity); const errorApi = useApi(errorApiRef); const airbrakeApi = useApi(airbrakeApiRef); diff --git a/plugins/airbrake/src/components/useProjectSlug.ts b/plugins/airbrake/src/components/useProjectId.ts similarity index 93% rename from plugins/airbrake/src/components/useProjectSlug.ts rename to plugins/airbrake/src/components/useProjectId.ts index 07ba527c00..3402778b7b 100644 --- a/plugins/airbrake/src/components/useProjectSlug.ts +++ b/plugins/airbrake/src/components/useProjectId.ts @@ -18,6 +18,6 @@ import { Entity } from '@backstage/catalog-model'; export const AIRBRAKE_PROJECT_ID_ANNOTATION = 'airbrake.io/project-id'; -export const useProjectSlug = (entity: Entity) => { +export const useProjectId = (entity: Entity) => { return entity?.metadata.annotations?.[AIRBRAKE_PROJECT_ID_ANNOTATION] ?? ''; }; From f99d31d38526990abce378b7a1e61d2b8dbb158e Mon Sep 17 00:00:00 2001 From: Karan Shah Date: Thu, 27 Jan 2022 15:23:42 +0000 Subject: [PATCH 016/383] Improved how the API Bar looks Signed-off-by: Karan Shah --- .../airbrake/dev/components/ApiBar/ApiBar.tsx | 60 +++++++++++++++---- 1 file changed, 47 insertions(+), 13 deletions(-) diff --git a/plugins/airbrake/dev/components/ApiBar/ApiBar.tsx b/plugins/airbrake/dev/components/ApiBar/ApiBar.tsx index 8437559baf..294e4506d1 100644 --- a/plugins/airbrake/dev/components/ApiBar/ApiBar.tsx +++ b/plugins/airbrake/dev/components/ApiBar/ApiBar.tsx @@ -14,7 +14,12 @@ * limitations under the License. */ import React from 'react'; -import { makeStyles, TextField } from '@material-ui/core'; +import { + createTheme, + makeStyles, + MuiThemeProvider, + TextField, +} from '@material-ui/core'; import { Context } from '../ContextProvider'; const useStyles = makeStyles({ @@ -25,6 +30,31 @@ const useStyles = makeStyles({ }, }); +const textFieldTheme = createTheme({ + palette: { + type: 'dark', + primary: { + light: '#fff', + main: '#fff', + dark: '#fff', + contrastText: '#fff', + }, + secondary: { + light: '#fff', + main: '#fff', + dark: '#fff', + contrastText: '#fff', + }, + action: { + disabled: '#fff', + }, + text: { + primary: '#fff', + secondary: '#fff', + }, + }, +}); + export const ApiBar = () => { const classes = useStyles(); @@ -32,18 +62,22 @@ export const ApiBar = () => { {value => (
- - value.setProjectId?.(parseInt(e.target.value, 10) || undefined) - } - /> - value.setApiKey?.(e.target.value)} - /> + + + value.setProjectId?.(parseInt(e.target.value, 10) || undefined) + } + /> + value.setApiKey?.(e.target.value)} + /> +
)}
From 3bbb4d98c65ab5140180184c3845b4f953a28047 Mon Sep 17 00:00:00 2001 From: Jonathan Ash Date: Fri, 28 Jan 2022 16:27:47 +0000 Subject: [PATCH 017/383] Added the option to supply a custom error page to TechDocsPage Signed-off-by: Jonathan Ash --- .changeset/healthy-shoes-flash.md | 5 ++ .../reader/components/TechDocsPage.test.tsx | 58 +++++++++++++++++++ .../src/reader/components/TechDocsPage.tsx | 10 +++- 3 files changed, 70 insertions(+), 3 deletions(-) create mode 100644 .changeset/healthy-shoes-flash.md diff --git a/.changeset/healthy-shoes-flash.md b/.changeset/healthy-shoes-flash.md new file mode 100644 index 0000000000..8ca1006635 --- /dev/null +++ b/.changeset/healthy-shoes-flash.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-techdocs': minor +--- + +Added ability for to display a custom error page component via prop "NotFoundPage" diff --git a/plugins/techdocs/src/reader/components/TechDocsPage.test.tsx b/plugins/techdocs/src/reader/components/TechDocsPage.test.tsx index b297466a62..5dfa104a25 100644 --- a/plugins/techdocs/src/reader/components/TechDocsPage.test.tsx +++ b/plugins/techdocs/src/reader/components/TechDocsPage.test.tsx @@ -173,4 +173,62 @@ describe('', () => { expect(rendered.getByText('A custom header')).toBeInTheDocument(); }); }); + + it('should render a custom error page if supplied', async () => { + const CustomErrorPage = ({ errorMessage }: { errorMessage: string }) => ( +
{errorMessage}
+ ); + + useParams.mockReturnValue({ + entityRef: 'Component::backstage', + }); + + const scmIntegrationsApi: ScmIntegrationsApi = + ScmIntegrationsApi.fromConfig( + new ConfigReader({ + integrations: {}, + }), + ); + const techdocsApi: Partial = { + getEntityMetadata: () => + Promise.reject({ + name: 'error', + message: 'error message', + }), + getTechDocsMetadata: () => + Promise.resolve({ + site_name: 'string', + site_description: 'string', + }), + }; + + const techdocsStorageApi: Partial = { + getEntityDocs: (): Promise => Promise.resolve('String'), + getBaseUrl: (): Promise => Promise.resolve('String'), + getApiOrigin: (): Promise => Promise.resolve('String'), + }; + const searchApi = { + query: () => + Promise.resolve({ + results: [], + }), + }; + const apiRegistry = TestApiRegistry.from( + [scmIntegrationsApiRef, scmIntegrationsApi], + [techdocsApiRef, techdocsApi], + [techdocsStorageApiRef, techdocsStorageApi], + [searchApiRef, searchApi], + ); + + await act(async () => { + const rendered = render( + wrapInTestApp( + + + , + ), + ); + expect(await rendered.findByText('error message')).toBeInTheDocument(); + }); + }); }); diff --git a/plugins/techdocs/src/reader/components/TechDocsPage.tsx b/plugins/techdocs/src/reader/components/TechDocsPage.tsx index aae88d406e..1fb75f8d76 100644 --- a/plugins/techdocs/src/reader/components/TechDocsPage.tsx +++ b/plugins/techdocs/src/reader/components/TechDocsPage.tsx @@ -14,7 +14,7 @@ * limitations under the License. */ -import React, { useCallback, useState } from 'react'; +import React, { useCallback, useState, ComponentType } from 'react'; import { useOutlet } from 'react-router'; import { useParams } from 'react-router-dom'; import useAsync from 'react-use/lib/useAsync'; @@ -39,9 +39,13 @@ export type TechDocsPageRenderFunction = ({ export type TechDocsPageProps = { children?: TechDocsPageRenderFunction | React.ReactNode; + NotFoundPage?: ComponentType<{errorMessage: string}> }; -export const TechDocsPage = ({ children }: TechDocsPageProps) => { +export const TechDocsPage = ({ + children, + NotFoundPage = TechDocsNotFound, +}: TechDocsPageProps) => { const outlet = useOutlet(); const [documentReady, setDocumentReady] = useState(false); @@ -67,7 +71,7 @@ export const TechDocsPage = ({ children }: TechDocsPageProps) => { }, [setDocumentReady]); if (entityMetadataError) { - return ; + return ; } if (!children) return outlet || ; From 899b8d748fa414bbe1d0c5d1ea71cafda1a18431 Mon Sep 17 00:00:00 2001 From: Karan Shah Date: Mon, 31 Jan 2022 16:39:49 +0000 Subject: [PATCH 018/383] Connect up the production API Signed-off-by: Karan Shah --- .../airbrake/dev/components/ApiBar/ApiBar.tsx | 4 +-- .../ContextProvider/ContextProvider.tsx | 2 +- plugins/airbrake/dev/index.tsx | 34 ++++++++++++------- plugins/airbrake/src/api/airbrake-api.ts | 2 +- plugins/airbrake/src/api/production-api.ts | 13 +++---- .../EntityAirbrakeWidget.tsx | 4 +-- 6 files changed, 32 insertions(+), 27 deletions(-) diff --git a/plugins/airbrake/dev/components/ApiBar/ApiBar.tsx b/plugins/airbrake/dev/components/ApiBar/ApiBar.tsx index 294e4506d1..eae00c2d32 100644 --- a/plugins/airbrake/dev/components/ApiBar/ApiBar.tsx +++ b/plugins/airbrake/dev/components/ApiBar/ApiBar.tsx @@ -66,7 +66,7 @@ export const ApiBar = () => { value.setProjectId?.(parseInt(e.target.value, 10) || undefined) } @@ -74,7 +74,7 @@ export const ApiBar = () => { value.setApiKey?.(e.target.value)} /> diff --git a/plugins/airbrake/dev/components/ContextProvider/ContextProvider.tsx b/plugins/airbrake/dev/components/ContextProvider/ContextProvider.tsx index bbf72f3b99..6d7fe0f7f2 100644 --- a/plugins/airbrake/dev/components/ContextProvider/ContextProvider.tsx +++ b/plugins/airbrake/dev/components/ContextProvider/ContextProvider.tsx @@ -23,7 +23,7 @@ import React, { interface ContextInterface { projectId?: number; setProjectId?: Dispatch>; - apiKey?: String; + apiKey?: string; setApiKey?: Dispatch>; } diff --git a/plugins/airbrake/dev/index.tsx b/plugins/airbrake/dev/index.tsx index c0a7c59fd9..7f32d30b4a 100644 --- a/plugins/airbrake/dev/index.tsx +++ b/plugins/airbrake/dev/index.tsx @@ -15,31 +15,33 @@ */ import React from 'react'; import { createDevApp } from '@backstage/dev-utils'; +import { TestApiProvider } from '@backstage/test-utils'; import { airbrakePlugin, EntityAirbrakeContent } from '../src'; -import { airbrakeApiRef, MockAirbrakeApi } from '../src/api'; +import { + airbrakeApiRef, + MockAirbrakeApi, + ProductionAirbrakeApi, +} from '../src/api'; import { ApiBar } from './components/ApiBar'; import { Content, Header, Page } from '@backstage/core-components'; import { EntityProvider } from '@backstage/plugin-catalog-react'; import { createEntity } from '../src/api/mock/mock-entity'; import CloudOffIcon from '@material-ui/icons/CloudOff'; import CloudIcon from '@material-ui/icons/Cloud'; -import { ContextProvider, Context } from './components/ContextProvider'; +import { Context, ContextProvider } from './components/ContextProvider'; createDevApp() .registerPlugin(airbrakePlugin) - .registerApi({ - api: airbrakeApiRef, - deps: {}, - factory: () => new MockAirbrakeApi(), - }) .addPage({ element: (
- - - + + + + + ), @@ -57,9 +59,15 @@ createDevApp() {value => ( - - - + + + + + )} diff --git a/plugins/airbrake/src/api/airbrake-api.ts b/plugins/airbrake/src/api/airbrake-api.ts index 1a3cfa72e4..3e3fe123b9 100644 --- a/plugins/airbrake/src/api/airbrake-api.ts +++ b/plugins/airbrake/src/api/airbrake-api.ts @@ -22,5 +22,5 @@ export const airbrakeApiRef = createApiRef({ }); export interface AirbrakeApi { - fetchGroups(project: string): Promise; + fetchGroups(projectId: string): Promise; } diff --git a/plugins/airbrake/src/api/production-api.ts b/plugins/airbrake/src/api/production-api.ts index 37ac938752..cd8d2f95bf 100644 --- a/plugins/airbrake/src/api/production-api.ts +++ b/plugins/airbrake/src/api/production-api.ts @@ -16,20 +16,17 @@ import { Groups } from './airbrake-groups'; import { AirbrakeApi } from './airbrake-api'; -import { DiscoveryApi } from '@backstage/core-plugin-api'; export class ProductionAirbrakeApi implements AirbrakeApi { - constructor(private readonly discoveryApi: DiscoveryApi) {} + constructor(private readonly apiKey?: string) {} - async fetchGroups(project: string): Promise { - const apiUrl = `${await this.discoveryApi.getBaseUrl( - 'proxy', - )}/airbrake/api`; + async fetchGroups(projectId: string): Promise { + const apiUrl = `https://api.airbrake.io/api/v4/projects/${projectId}/groups?key=${this.apiKey}`; - const response = await fetch(`${apiUrl}/v4/projects/${project}/groups`); + const response = await fetch(apiUrl); if (response.status >= 400 && response.status < 600) { - throw new Error('Failed fetching Airbrake issues'); + throw new Error('Failed fetching Airbrake groups'); } return (await response.json()) as Groups; diff --git a/plugins/airbrake/src/components/EntityAirbrakeWidget/EntityAirbrakeWidget.tsx b/plugins/airbrake/src/components/EntityAirbrakeWidget/EntityAirbrakeWidget.tsx index 4564af6079..b11116aeef 100644 --- a/plugins/airbrake/src/components/EntityAirbrakeWidget/EntityAirbrakeWidget.tsx +++ b/plugins/airbrake/src/components/EntityAirbrakeWidget/EntityAirbrakeWidget.tsx @@ -45,7 +45,7 @@ export const EntityAirbrakeWidget = ({ entity }: { entity: Entity }) => { const { loading, value, error } = useAsync( () => airbrakeApi.fetchGroups(projectId), - [projectId], + [airbrakeApi, projectId], ); useEffect(() => { @@ -69,7 +69,7 @@ export const EntityAirbrakeWidget = ({ entity }: { entity: Entity }) => { )} From 3193d9d3bb1bdb1212726442bb0bdbf8de068684 Mon Sep 17 00:00:00 2001 From: Karan Shah Date: Tue, 1 Feb 2022 11:03:33 +0000 Subject: [PATCH 019/383] Add back catalog model and catalog plugin react Signed-off-by: Karan Shah --- plugins/airbrake/package.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/plugins/airbrake/package.json b/plugins/airbrake/package.json index e037e38009..2ccb7f31b8 100644 --- a/plugins/airbrake/package.json +++ b/plugins/airbrake/package.json @@ -20,8 +20,10 @@ "clean": "backstage-cli clean" }, "dependencies": { + "@backstage/catalog-model": "^0.9.10", "@backstage/core-components": "^0.8.6", "@backstage/core-plugin-api": "^0.6.0", + "@backstage/plugin-catalog-react": "^0.6.12", "@backstage/theme": "^0.2.14", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", From 6c3a7ad51fef61c550f7e47f4bb6a3b087ee6783 Mon Sep 17 00:00:00 2001 From: Karan Shah Date: Tue, 1 Feb 2022 15:24:25 +0000 Subject: [PATCH 020/383] Remove Discovery API Ref Signed-off-by: Karan Shah --- plugins/airbrake/src/plugin.ts | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/plugins/airbrake/src/plugin.ts b/plugins/airbrake/src/plugin.ts index 5a58f5b4b3..f008b48ad4 100644 --- a/plugins/airbrake/src/plugin.ts +++ b/plugins/airbrake/src/plugin.ts @@ -13,11 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { - createApiFactory, - createPlugin, - discoveryApiRef, -} from '@backstage/core-plugin-api'; +import { createApiFactory, createPlugin } from '@backstage/core-plugin-api'; import { rootRouteRef } from './routes'; import { airbrakeApiRef, ProductionAirbrakeApi } from './api'; @@ -27,10 +23,8 @@ export const airbrakePlugin = createPlugin({ apis: [ createApiFactory({ api: airbrakeApiRef, - deps: { - discoveryApi: discoveryApiRef, - }, - factory: ({ discoveryApi }) => new ProductionAirbrakeApi(discoveryApi), + deps: {}, + factory: () => new ProductionAirbrakeApi(), }), ], routes: { From 9e505d20a340879289384684ccbdf24b0edb7464 Mon Sep 17 00:00:00 2001 From: Karan Shah Date: Tue, 1 Feb 2022 15:56:46 +0000 Subject: [PATCH 021/383] Added a changeset Signed-off-by: Karan Shah --- .changeset/two-elephants-arrive.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/two-elephants-arrive.md diff --git a/.changeset/two-elephants-arrive.md b/.changeset/two-elephants-arrive.md new file mode 100644 index 0000000000..6a1e713602 --- /dev/null +++ b/.changeset/two-elephants-arrive.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-airbrake': minor +--- + +API connectivity has added, but currently will only work by running it standalone on a browser with CORS disabled. From 499f8f547eb613efc24d221f83b4bba0229d1871 Mon Sep 17 00:00:00 2001 From: Karan Shah Date: Tue, 1 Feb 2022 17:18:22 +0000 Subject: [PATCH 022/383] Add some routes to the extensions test Signed-off-by: Karan Shah --- plugins/airbrake/src/extensions.test.tsx | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/plugins/airbrake/src/extensions.test.tsx b/plugins/airbrake/src/extensions.test.tsx index db8670ac50..5532621848 100644 --- a/plugins/airbrake/src/extensions.test.tsx +++ b/plugins/airbrake/src/extensions.test.tsx @@ -15,11 +15,23 @@ */ import React from 'react'; import { EntityAirbrakeContent } from './extensions'; -import { renderInTestApp } from '@backstage/test-utils'; +import { renderInTestApp, TestApiProvider } from '@backstage/test-utils'; +import { airbrakeApiRef, MockAirbrakeApi } from './api'; +import { rootRouteRef } from './routes'; describe('The Airbrake entity', () => { it('should render the content properly', async () => { - const rendered = await renderInTestApp(); + const rendered = await renderInTestApp( + + + , + { + mountedRoutes: { + '/': rootRouteRef, + }, + routeEntries: ['/'], + }, + ); expect(rendered.getByText('ChunkLoadError')).toBeInTheDocument(); }); }); From 2a8fee1a512e02f93983499ae24995f9466ec6a8 Mon Sep 17 00:00:00 2001 From: Karan Shah Date: Wed, 2 Feb 2022 14:33:50 +0000 Subject: [PATCH 023/383] Initial commit of the airbrake-backend plugin Signed-off-by: Karan Shah --- packages/backend/package.json | 11 ++-- plugins/airbrake-backend/.eslintrc.js | 3 ++ plugins/airbrake-backend/README.md | 16 ++++++ plugins/airbrake-backend/package.json | 50 +++++++++++++++++++ plugins/airbrake-backend/src/index.ts | 17 +++++++ plugins/airbrake-backend/src/run.ts | 33 ++++++++++++ .../src/service/router.test.ts | 45 +++++++++++++++++ .../airbrake-backend/src/service/router.ts | 40 +++++++++++++++ .../src/service/standaloneServer.ts | 50 +++++++++++++++++++ plugins/airbrake-backend/src/setupTests.ts | 17 +++++++ yarn.lock | 41 ++++++++++++--- 11 files changed, 312 insertions(+), 11 deletions(-) create mode 100644 plugins/airbrake-backend/.eslintrc.js create mode 100644 plugins/airbrake-backend/README.md create mode 100644 plugins/airbrake-backend/package.json create mode 100644 plugins/airbrake-backend/src/index.ts create mode 100644 plugins/airbrake-backend/src/run.ts create mode 100644 plugins/airbrake-backend/src/service/router.test.ts create mode 100644 plugins/airbrake-backend/src/service/router.ts create mode 100644 plugins/airbrake-backend/src/service/standaloneServer.ts create mode 100644 plugins/airbrake-backend/src/setupTests.ts diff --git a/packages/backend/package.json b/packages/backend/package.json index c9e1c9d7c3..f3e150522c 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -38,8 +38,8 @@ "@backstage/plugin-code-coverage-backend": "^0.1.20", "@backstage/plugin-graphql-backend": "^0.1.12", "@backstage/plugin-jenkins-backend": "^0.1.11", - "@backstage/plugin-kubernetes-backend": "^0.4.5", "@backstage/plugin-kafka-backend": "^0.2.15", + "@backstage/plugin-kubernetes-backend": "^0.4.5", "@backstage/plugin-permission-backend": "^0.4.2-next.0", "@backstage/plugin-permission-common": "^0.4.0", "@backstage/plugin-permission-node": "^0.4.2-next.0", @@ -48,22 +48,23 @@ "@backstage/plugin-scaffolder-backend": "^0.15.23-next.0", "@backstage/plugin-scaffolder-backend-module-rails": "^0.2.5-next.0", "@backstage/plugin-search-backend": "^0.4.1-next.0", - "@backstage/plugin-search-backend-node": "^0.4.5", "@backstage/plugin-search-backend-module-elasticsearch": "^0.0.8", "@backstage/plugin-search-backend-module-pg": "^0.2.4", - "@backstage/plugin-techdocs-backend": "^0.13.1", + "@backstage/plugin-search-backend-node": "^0.4.5", "@backstage/plugin-tech-insights-backend": "^0.2.2", - "@backstage/plugin-tech-insights-node": "^0.2.0", "@backstage/plugin-tech-insights-backend-module-jsonfc": "^0.1.6", + "@backstage/plugin-tech-insights-node": "^0.2.0", + "@backstage/plugin-techdocs-backend": "^0.13.1", "@backstage/plugin-todo-backend": "^0.1.19", "@gitbeaker/node": "^35.1.0", "@octokit/rest": "^18.5.3", "azure-devops-node-api": "^11.0.1", + "backstage-plugin-airbrake-backend": "^0.0.0", "dockerode": "^3.3.1", "example-app": "file:../app", "express": "^4.17.1", - "express-promise-router": "^4.1.0", "express-prom-bundle": "^6.3.6", + "express-promise-router": "^4.1.0", "knex": "^0.95.1", "pg": "^8.3.0", "pg-connection-string": "^2.3.0", diff --git a/plugins/airbrake-backend/.eslintrc.js b/plugins/airbrake-backend/.eslintrc.js new file mode 100644 index 0000000000..16a033dbc6 --- /dev/null +++ b/plugins/airbrake-backend/.eslintrc.js @@ -0,0 +1,3 @@ +module.exports = { + extends: [require.resolve('@backstage/cli/config/eslint.backend')], +}; diff --git a/plugins/airbrake-backend/README.md b/plugins/airbrake-backend/README.md new file mode 100644 index 0000000000..42369524d6 --- /dev/null +++ b/plugins/airbrake-backend/README.md @@ -0,0 +1,16 @@ +# airbrake-backend + +Welcome to the airbrake-backend backend plugin! + +_This plugin was created through the Backstage CLI_ + +## Getting started + +Your plugin has been added to the example app in this repository, meaning you'll be able to access it by running `yarn start` in the root directory, and then navigating to [/airbrake-backend](http://localhost:7007/airbrake-backend). + +Here is an example endpoint: http://localhost:7007/airbrake-backend/health + +You can also serve the plugin in isolation by running `yarn start` in the plugin directory. +This method of serving the plugin provides quicker iteration speed and a faster startup and hot reloads. + +It is only meant for local development. diff --git a/plugins/airbrake-backend/package.json b/plugins/airbrake-backend/package.json new file mode 100644 index 0000000000..01cca714b5 --- /dev/null +++ b/plugins/airbrake-backend/package.json @@ -0,0 +1,50 @@ +{ + "name": "backstage-plugin-airbrake-backend", + "version": "0.0.0", + "main": "src/index.ts", + "types": "src/index.ts", + "license": "Apache-2.0", + "private": true, + "publishConfig": { + "access": "public", + "main": "dist/index.cjs.js", + "types": "dist/index.d.ts" + }, + "scripts": { + "start": "backstage-cli backend:dev", + "build": "backstage-cli backend:build", + "lint": "backstage-cli lint", + "test": "backstage-cli test", + "prepack": "backstage-cli prepack", + "postpack": "backstage-cli postpack", + "clean": "backstage-cli clean" + }, + "dependencies": { + "@backstage/backend-common": "^0.10.5", + "@backstage/config": "^0.1.13", + "@types/express": "*", + "express": "^4.17.1", + "express-promise-router": "^4.1.0", + "winston": "^3.2.1", + "cross-fetch": "^3.0.6", + "yn": "^4.0.0" + }, + "devDependencies": { + "@backstage/cli": "^0.13.1-next.0", + "@types/supertest": "^2.0.8", + "supertest": "^4.0.2", + "msw": "^0.35.0" + }, + "files": [ + "dist" + ], + "jest": { + "coverageThreshold": { + "global": { + "functions": 100, + "lines": 100, + "statements": 100 + } + } + } +} diff --git a/plugins/airbrake-backend/src/index.ts b/plugins/airbrake-backend/src/index.ts new file mode 100644 index 0000000000..ca73cb27ba --- /dev/null +++ b/plugins/airbrake-backend/src/index.ts @@ -0,0 +1,17 @@ +/* + * Copyright 2020 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export * from './service/router'; diff --git a/plugins/airbrake-backend/src/run.ts b/plugins/airbrake-backend/src/run.ts new file mode 100644 index 0000000000..0a3ed2b7f0 --- /dev/null +++ b/plugins/airbrake-backend/src/run.ts @@ -0,0 +1,33 @@ +/* + * Copyright 2020 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { getRootLogger } from '@backstage/backend-common'; +import yn from 'yn'; +import { startStandaloneServer } from './service/standaloneServer'; + +const port = process.env.PLUGIN_PORT ? Number(process.env.PLUGIN_PORT) : 7007; +const enableCors = yn(process.env.PLUGIN_CORS, { default: false }); +const logger = getRootLogger(); + +startStandaloneServer({ port, enableCors, logger }).catch(err => { + logger.error(err); + process.exit(1); +}); + +process.on('SIGINT', () => { + logger.info('CTRL+C pressed; exiting.'); + process.exit(0); +}); diff --git a/plugins/airbrake-backend/src/service/router.test.ts b/plugins/airbrake-backend/src/service/router.test.ts new file mode 100644 index 0000000000..8b77a04348 --- /dev/null +++ b/plugins/airbrake-backend/src/service/router.test.ts @@ -0,0 +1,45 @@ +/* + * Copyright 2020 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { getVoidLogger } from '@backstage/backend-common'; +import express from 'express'; +import request from 'supertest'; + +import { createRouter } from './router'; + +describe('createRouter', () => { + let app: express.Express; + + beforeAll(async () => { + const router = await createRouter({ + logger: getVoidLogger(), + }); + app = express().use(router); + }); + + beforeEach(() => { + jest.resetAllMocks(); + }); + + describe('GET /health', () => { + it('returns ok', async () => { + const response = await request(app).get('/health'); + + expect(response.status).toEqual(200); + expect(response.body).toEqual({ status: 'ok' }); + }); + }); +}); diff --git a/plugins/airbrake-backend/src/service/router.ts b/plugins/airbrake-backend/src/service/router.ts new file mode 100644 index 0000000000..9ceaa47627 --- /dev/null +++ b/plugins/airbrake-backend/src/service/router.ts @@ -0,0 +1,40 @@ +/* + * Copyright 2020 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { errorHandler } from '@backstage/backend-common'; +import express from 'express'; +import Router from 'express-promise-router'; +import { Logger } from 'winston'; + +export interface RouterOptions { + logger: Logger; +} + +export async function createRouter( + options: RouterOptions, +): Promise { + const { logger } = options; + + const router = Router(); + router.use(express.json()); + + router.get('/health', (_, response) => { + logger.info('PONG!'); + response.send({ status: 'ok' }); + }); + router.use(errorHandler()); + return router; +} diff --git a/plugins/airbrake-backend/src/service/standaloneServer.ts b/plugins/airbrake-backend/src/service/standaloneServer.ts new file mode 100644 index 0000000000..6287bf9f97 --- /dev/null +++ b/plugins/airbrake-backend/src/service/standaloneServer.ts @@ -0,0 +1,50 @@ +/* + * Copyright 2020 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { createServiceBuilder } from '@backstage/backend-common'; +import { Server } from 'http'; +import { Logger } from 'winston'; +import { createRouter } from './router'; + +export interface ServerOptions { + port: number; + enableCors: boolean; + logger: Logger; +} + +export async function startStandaloneServer( + options: ServerOptions, +): Promise { + const logger = options.logger.child({ service: 'airbrake-backend-backend' }); + logger.debug('Starting application server...'); + const router = await createRouter({ + logger, + }); + + let service = createServiceBuilder(module) + .setPort(options.port) + .addRouter('/airbrake-backend', router); + if (options.enableCors) { + service = service.enableCors({ origin: 'http://localhost:3000' }); + } + + return await service.start().catch(err => { + logger.error(err); + process.exit(1); + }); +} + +module.hot?.accept(); diff --git a/plugins/airbrake-backend/src/setupTests.ts b/plugins/airbrake-backend/src/setupTests.ts new file mode 100644 index 0000000000..d3232290a7 --- /dev/null +++ b/plugins/airbrake-backend/src/setupTests.ts @@ -0,0 +1,17 @@ +/* + * Copyright 2020 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export {}; diff --git a/yarn.lock b/yarn.lock index 65307c3d71..a716334c57 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9026,7 +9026,7 @@ compare-func@^2.0.0: array-ify "^1.0.0" dot-prop "^5.1.0" -component-emitter@^1.2.1, component-emitter@^1.3.0: +component-emitter@^1.2.0, component-emitter@^1.2.1, component-emitter@^1.3.0: version "1.3.0" resolved "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== @@ -9307,7 +9307,7 @@ cookie@0.4.1, cookie@^0.4.1, cookie@~0.4.1: resolved "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz#afd713fe26ebd21ba95ceb61f9a8116e50a537d1" integrity sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA== -cookiejar@^2.1.3: +cookiejar@^2.1.0, cookiejar@^2.1.3: version "2.1.3" resolved "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.3.tgz#fc7a6216e408e74414b90230050842dacda75acc" integrity sha512-JxbCBUdrfr6AQjOXrxoTvAMJO4HBTUIlBzslcJPAz+/KT8yk53fXun51u+RenNYvad/+Vc2DIz5o9UxlCDymFQ== @@ -12344,7 +12344,7 @@ form-data@4.0.0, form-data@^4.0.0: combined-stream "^1.0.8" mime-types "^2.1.12" -form-data@^2.3.2, form-data@^2.5.0: +form-data@^2.3.1, form-data@^2.3.2, form-data@^2.5.0: version "2.5.1" resolved "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz#f2cbec57b5e59e23716e128fe44d4e5dd23895f4" integrity sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA== @@ -12392,6 +12392,11 @@ formdata-node@^4.3.1: node-domexception "1.0.0" web-streams-polyfill "4.0.0-beta.1" +formidable@^1.2.0: + version "1.2.6" + resolved "https://registry.npmjs.org/formidable/-/formidable-1.2.6.tgz#d2a51d60162bbc9b4a055d8457a7c75315d1a168" + integrity sha512-KcpbcpuLNOwrEjnbpMC0gS+X8ciDoZE1kkqzat4a8vrprf+s9pKNQ/QIwWfbfs4ltgmFl3MD177SNTkve3BwGQ== + formidable@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/formidable/-/formidable-2.0.1.tgz#4310bc7965d185536f9565184dee74fbb75557ff" @@ -16969,7 +16974,7 @@ meros@1.1.4, meros@^1.1.4: resolved "https://registry.npmjs.org/meros/-/meros-1.1.4.tgz#c17994d3133db8b23807f62bec7f0cb276cfd948" integrity sha512-E9ZXfK9iQfG9s73ars9qvvvbSIkJZF5yOo9j4tcwM5tN8mUKfj/EKN5PzOr3ZH0y5wL7dLAHw3RVEfpQV9Q7VQ== -methods@^1.0.0, methods@^1.1.2, methods@~1.1.2: +methods@^1.0.0, methods@^1.1.1, methods@^1.1.2, methods@~1.1.2: version "1.1.2" resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= @@ -17324,7 +17329,7 @@ mime-types@^2.0.8, mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.31, m dependencies: mime-db "1.51.0" -mime@1.6.0: +mime@1.6.0, mime@^1.4.1: version "1.6.0" resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== @@ -20105,7 +20110,7 @@ qs@6.9.6: resolved "https://registry.npmjs.org/qs/-/qs-6.9.6.tgz#26ed3c8243a431b2924aca84cc90471f35d5a0ee" integrity sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ== -qs@^6.10.1, qs@^6.10.2, qs@^6.9.1, qs@^6.9.4, qs@^6.9.6: +qs@^6.10.1, qs@^6.10.2, qs@^6.5.1, qs@^6.9.1, qs@^6.9.4, qs@^6.9.6: version "6.10.3" resolved "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz#d6cde1b2ffca87b5aa57889816c5f81535e22e8e" integrity sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ== @@ -22855,6 +22860,22 @@ sucrase@^3.18.0, sucrase@^3.20.2: pirates "^4.0.1" ts-interface-checker "^0.1.9" +superagent@^3.8.3: + version "3.8.3" + resolved "https://registry.npmjs.org/superagent/-/superagent-3.8.3.tgz#460ea0dbdb7d5b11bc4f78deba565f86a178e128" + integrity sha512-GLQtLMCoEIK4eDv6OGtkOoSMt3D+oq0y3dsxMuYuDvaNUvuT8eFBuLmfR0iYYzHC1e8hpzC6ZsxbuP6DIalMFA== + dependencies: + component-emitter "^1.2.0" + cookiejar "^2.1.0" + debug "^3.1.0" + extend "^3.0.0" + form-data "^2.3.1" + formidable "^1.2.0" + methods "^1.1.1" + mime "^1.4.1" + qs "^6.5.1" + readable-stream "^2.3.5" + superagent@^7.1.0: version "7.1.1" resolved "https://registry.npmjs.org/superagent/-/superagent-7.1.1.tgz#2ab187d38c3078c31c3771c0b751f10163a27136" @@ -22872,6 +22893,14 @@ superagent@^7.1.0: readable-stream "^3.6.0" semver "^7.3.5" +supertest@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/supertest/-/supertest-4.0.2.tgz#c2234dbdd6dc79b6f15b99c8d6577b90e4ce3f36" + integrity sha512-1BAbvrOZsGA3YTCWqbmh14L0YEq0EGICX/nBnfkfVJn7SrxQV1I3pMYjSzG9y/7ZU2V9dWqyqk2POwxlb09duQ== + dependencies: + methods "^1.1.2" + superagent "^3.8.3" + supertest@^6.1.3, supertest@^6.1.6: version "6.2.2" resolved "https://registry.npmjs.org/supertest/-/supertest-6.2.2.tgz#04a5998fd3efaff187cb69f07a169755d655b001" From 58c213f0afcad25f1a045c164e22dabce7c5defe Mon Sep 17 00:00:00 2001 From: Karan Shah Date: Wed, 2 Feb 2022 15:21:24 +0000 Subject: [PATCH 024/383] Ignore generated code Signed-off-by: Karan Shah --- plugins/airbrake-backend/package.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/plugins/airbrake-backend/package.json b/plugins/airbrake-backend/package.json index 01cca714b5..7fa5e3d464 100644 --- a/plugins/airbrake-backend/package.json +++ b/plugins/airbrake-backend/package.json @@ -45,6 +45,11 @@ "lines": 100, "statements": 100 } - } + }, + "coveragePathIgnorePatterns": [ + "standaloneServer.ts", + "index.ts", + "run.ts" + ] } } From 64045884baaddc0e297fe2461270ee85f68d8113 Mon Sep 17 00:00:00 2001 From: Karan Shah Date: Thu, 3 Feb 2022 10:54:18 +0000 Subject: [PATCH 025/383] Added: - Config management - path rewrite Signed-off-by: Karan Shah --- plugins/airbrake-backend/package.json | 2 ++ .../src/config/ExtractAirbrakeConfig.ts | 26 +++++++++++++++++++ plugins/airbrake-backend/src/config/index.ts | 18 +++++++++++++ .../src/service/router.test.ts | 13 +++++++++- .../airbrake-backend/src/service/router.ts | 23 ++++++++++++++++ .../src/service/standaloneServer.ts | 9 ++++++- 6 files changed, 89 insertions(+), 2 deletions(-) create mode 100644 plugins/airbrake-backend/src/config/ExtractAirbrakeConfig.ts create mode 100644 plugins/airbrake-backend/src/config/index.ts diff --git a/plugins/airbrake-backend/package.json b/plugins/airbrake-backend/package.json index 7fa5e3d464..3f174caee4 100644 --- a/plugins/airbrake-backend/package.json +++ b/plugins/airbrake-backend/package.json @@ -25,12 +25,14 @@ "@types/express": "*", "express": "^4.17.1", "express-promise-router": "^4.1.0", + "http-proxy-middleware": "^2.0.0", "winston": "^3.2.1", "cross-fetch": "^3.0.6", "yn": "^4.0.0" }, "devDependencies": { "@backstage/cli": "^0.13.1-next.0", + "@types/http-proxy-middleware": "^0.19.3", "@types/supertest": "^2.0.8", "supertest": "^4.0.2", "msw": "^0.35.0" diff --git a/plugins/airbrake-backend/src/config/ExtractAirbrakeConfig.ts b/plugins/airbrake-backend/src/config/ExtractAirbrakeConfig.ts new file mode 100644 index 0000000000..06f5e46e85 --- /dev/null +++ b/plugins/airbrake-backend/src/config/ExtractAirbrakeConfig.ts @@ -0,0 +1,26 @@ +/* + * 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 { Config } from '@backstage/config'; + +export type AirbrakeConfig = { + apiKey: string; +}; + +export function extractAirbrakeConfig(config: Config): AirbrakeConfig { + return { + apiKey: config.getString('integrations.airbrake.apiKey'), + }; +} diff --git a/plugins/airbrake-backend/src/config/index.ts b/plugins/airbrake-backend/src/config/index.ts new file mode 100644 index 0000000000..6200baca53 --- /dev/null +++ b/plugins/airbrake-backend/src/config/index.ts @@ -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. + */ + +export { extractAirbrakeConfig } from './ExtractAirbrakeConfig'; +export type { AirbrakeConfig } from './ExtractAirbrakeConfig'; diff --git a/plugins/airbrake-backend/src/service/router.test.ts b/plugins/airbrake-backend/src/service/router.test.ts index 8b77a04348..ec21a340a3 100644 --- a/plugins/airbrake-backend/src/service/router.test.ts +++ b/plugins/airbrake-backend/src/service/router.test.ts @@ -17,15 +17,26 @@ import { getVoidLogger } from '@backstage/backend-common'; import express from 'express'; import request from 'supertest'; - +import { ConfigReader } from '@backstage/config'; import { createRouter } from './router'; +import { extractAirbrakeConfig } from '../config'; describe('createRouter', () => { let app: express.Express; beforeAll(async () => { + const config = new ConfigReader({ + integrations: { + airbrake: { + apiKey: 'fakeApiKey', + }, + }, + }); + const airbrakeConfig = extractAirbrakeConfig(config); + const router = await createRouter({ logger: getVoidLogger(), + airbrakeConfig, }); app = express().use(router); }); diff --git a/plugins/airbrake-backend/src/service/router.ts b/plugins/airbrake-backend/src/service/router.ts index 9ceaa47627..77b115f088 100644 --- a/plugins/airbrake-backend/src/service/router.ts +++ b/plugins/airbrake-backend/src/service/router.ts @@ -18,9 +18,12 @@ import { errorHandler } from '@backstage/backend-common'; import express from 'express'; import Router from 'express-promise-router'; import { Logger } from 'winston'; +import { createProxyMiddleware } from 'http-proxy-middleware'; +import { AirbrakeConfig } from '../config'; export interface RouterOptions { logger: Logger; + airbrakeConfig: AirbrakeConfig; } export async function createRouter( @@ -35,6 +38,26 @@ export async function createRouter( logger.info('PONG!'); response.send({ status: 'ok' }); }); + + router.use( + '/api', + createProxyMiddleware({ + target: 'https://api.airbrake.io/api', + changeOrigin: true, + pathRewrite: path => { + const apiKey = options.airbrakeConfig.apiKey; + + let newPath = path.replace(/.+?(\/api)/, ''); + if (newPath.includes('?')) { + newPath += `&key=${apiKey}`; + } else { + newPath += `?key=${apiKey}`; + } + return newPath; + }, + }), + ); + router.use(errorHandler()); return router; } diff --git a/plugins/airbrake-backend/src/service/standaloneServer.ts b/plugins/airbrake-backend/src/service/standaloneServer.ts index 6287bf9f97..5957dd0b7f 100644 --- a/plugins/airbrake-backend/src/service/standaloneServer.ts +++ b/plugins/airbrake-backend/src/service/standaloneServer.ts @@ -14,10 +14,14 @@ * limitations under the License. */ -import { createServiceBuilder } from '@backstage/backend-common'; +import { + createServiceBuilder, + loadBackendConfig, +} from '@backstage/backend-common'; import { Server } from 'http'; import { Logger } from 'winston'; import { createRouter } from './router'; +import { extractAirbrakeConfig } from '../config'; export interface ServerOptions { port: number; @@ -29,9 +33,12 @@ export async function startStandaloneServer( options: ServerOptions, ): Promise { const logger = options.logger.child({ service: 'airbrake-backend-backend' }); + const config = await loadBackendConfig({ logger, argv: process.argv }); + const airbrakeConfig = extractAirbrakeConfig(config); logger.debug('Starting application server...'); const router = await createRouter({ logger, + airbrakeConfig, }); let service = createServiceBuilder(module) From a3dd1a8b6da0e0f258f27025bd699c612bace159 Mon Sep 17 00:00:00 2001 From: Karan Shah Date: Thu, 3 Feb 2022 11:51:47 +0000 Subject: [PATCH 026/383] Add a way to access the Airbrake secret from env Signed-off-by: Karan Shah --- app-config.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app-config.yaml b/app-config.yaml index b025064c74..1f03105cde 100644 --- a/app-config.yaml +++ b/app-config.yaml @@ -193,6 +193,8 @@ integrations: - host: amazonaws.com accessKeyId: ${AWS_ACCESS_KEY_ID} secretAccessKey: ${AWS_SECRET_ACCESS_KEY} + airbrake: + apiKey: ${AIRBRAKE_API_KEY} catalog: import: From 9723a4a96a3a6465a8125cb70feee343ea8ac1e5 Mon Sep 17 00:00:00 2001 From: Karan Shah Date: Fri, 4 Feb 2022 10:27:01 +0000 Subject: [PATCH 027/383] Write a test for pathRewrite Signed-off-by: Karan Shah --- .../src/service/router.test.ts | 35 ++++++++++++++----- .../airbrake-backend/src/service/router.ts | 29 +++++++++------ 2 files changed, 45 insertions(+), 19 deletions(-) diff --git a/plugins/airbrake-backend/src/service/router.test.ts b/plugins/airbrake-backend/src/service/router.test.ts index ec21a340a3..f36d36d6f1 100644 --- a/plugins/airbrake-backend/src/service/router.test.ts +++ b/plugins/airbrake-backend/src/service/router.test.ts @@ -18,13 +18,20 @@ import { getVoidLogger } from '@backstage/backend-common'; import express from 'express'; import request from 'supertest'; import { ConfigReader } from '@backstage/config'; -import { createRouter } from './router'; -import { extractAirbrakeConfig } from '../config'; +import { + createRouter, + generateAirbrakePathRewrite, + RouterOptions, +} from './router'; +import { AirbrakeConfig, extractAirbrakeConfig } from '../config'; describe('createRouter', () => { let app: express.Express; + let airbrakeConfig: AirbrakeConfig; + + beforeEach(async () => { + jest.resetAllMocks(); - beforeAll(async () => { const config = new ConfigReader({ integrations: { airbrake: { @@ -32,7 +39,7 @@ describe('createRouter', () => { }, }, }); - const airbrakeConfig = extractAirbrakeConfig(config); + airbrakeConfig = extractAirbrakeConfig(config); const router = await createRouter({ logger: getVoidLogger(), @@ -41,10 +48,6 @@ describe('createRouter', () => { app = express().use(router); }); - beforeEach(() => { - jest.resetAllMocks(); - }); - describe('GET /health', () => { it('returns ok', async () => { const response = await request(app).get('/health'); @@ -53,4 +56,20 @@ describe('createRouter', () => { expect(response.body).toEqual({ status: 'ok' }); }); }); + + describe('GET /api', () => { + it('appends the API Key properly', () => { + const options: RouterOptions = { + logger: getVoidLogger(), + airbrakeConfig, + }; + const pathRewrite = generateAirbrakePathRewrite(options) as ( + path: string, + ) => string; + + expect(pathRewrite('/airbrake-backend/api/random/endpoint')).toBe( + '/random/endpoint?key=fakeApiKey', + ); + }); + }); }); diff --git a/plugins/airbrake-backend/src/service/router.ts b/plugins/airbrake-backend/src/service/router.ts index 77b115f088..670a98eb78 100644 --- a/plugins/airbrake-backend/src/service/router.ts +++ b/plugins/airbrake-backend/src/service/router.ts @@ -20,12 +20,29 @@ import Router from 'express-promise-router'; import { Logger } from 'winston'; import { createProxyMiddleware } from 'http-proxy-middleware'; import { AirbrakeConfig } from '../config'; +import { Options } from 'http-proxy-middleware/dist/types'; export interface RouterOptions { logger: Logger; airbrakeConfig: AirbrakeConfig; } +export const generateAirbrakePathRewrite = ( + options: RouterOptions, +): Options['pathRewrite'] => { + const apiKey = options.airbrakeConfig.apiKey; + + return path => { + let newPath = path.replace(/.+?(\/api)/, ''); + if (newPath.includes('?')) { + newPath += `&key=${apiKey}`; + } else { + newPath += `?key=${apiKey}`; + } + return newPath; + }; +}; + export async function createRouter( options: RouterOptions, ): Promise { @@ -44,17 +61,7 @@ export async function createRouter( createProxyMiddleware({ target: 'https://api.airbrake.io/api', changeOrigin: true, - pathRewrite: path => { - const apiKey = options.airbrakeConfig.apiKey; - - let newPath = path.replace(/.+?(\/api)/, ''); - if (newPath.includes('?')) { - newPath += `&key=${apiKey}`; - } else { - newPath += `?key=${apiKey}`; - } - return newPath; - }, + pathRewrite: generateAirbrakePathRewrite(options), }), ); From c0d61279af21ff72d5da138aed829a6916e3f743 Mon Sep 17 00:00:00 2001 From: Karan Shah Date: Fri, 4 Feb 2022 10:50:50 +0000 Subject: [PATCH 028/383] Fix extensions.test.tsx Signed-off-by: Karan Shah --- plugins/airbrake/dev/index.tsx | 2 +- plugins/airbrake/src/api/mock/mock-api.ts | 8 +++++++- plugins/airbrake/src/extensions.test.tsx | 18 +++++++++--------- 3 files changed, 17 insertions(+), 11 deletions(-) diff --git a/plugins/airbrake/dev/index.tsx b/plugins/airbrake/dev/index.tsx index 7f32d30b4a..8fc43a73a1 100644 --- a/plugins/airbrake/dev/index.tsx +++ b/plugins/airbrake/dev/index.tsx @@ -37,7 +37,7 @@ createDevApp()
- + diff --git a/plugins/airbrake/src/api/mock/mock-api.ts b/plugins/airbrake/src/api/mock/mock-api.ts index df0293da7c..4acfa51778 100644 --- a/plugins/airbrake/src/api/mock/mock-api.ts +++ b/plugins/airbrake/src/api/mock/mock-api.ts @@ -19,9 +19,15 @@ import { AirbrakeApi } from '../airbrake-api'; import mockGroupsData from './airbrake-groups-api-mock.json'; export class MockAirbrakeApi implements AirbrakeApi { + waitTimeInMillis: number; + + constructor(waitTimeInMillis = 10) { + this.waitTimeInMillis = waitTimeInMillis; + } + fetchGroups(): Promise { return new Promise(resolve => { - setTimeout(() => resolve(mockGroupsData), 800); + setTimeout(() => resolve(mockGroupsData), this.waitTimeInMillis); }); } } diff --git a/plugins/airbrake/src/extensions.test.tsx b/plugins/airbrake/src/extensions.test.tsx index 5532621848..3b2d1927d9 100644 --- a/plugins/airbrake/src/extensions.test.tsx +++ b/plugins/airbrake/src/extensions.test.tsx @@ -15,23 +15,23 @@ */ import React from 'react'; import { EntityAirbrakeContent } from './extensions'; +import { Route } from 'react-router'; import { renderInTestApp, TestApiProvider } from '@backstage/test-utils'; import { airbrakeApiRef, MockAirbrakeApi } from './api'; -import { rootRouteRef } from './routes'; +import { createEntity } from './api/mock/mock-entity'; +import { EntityProvider } from '@backstage/plugin-catalog-react'; describe('The Airbrake entity', () => { it('should render the content properly', async () => { const rendered = await renderInTestApp( - + + } /> + , - { - mountedRoutes: { - '/': rootRouteRef, - }, - routeEntries: ['/'], - }, ); - expect(rendered.getByText('ChunkLoadError')).toBeInTheDocument(); + await expect( + rendered.findByText('ChunkLoadError'), + ).resolves.toBeInTheDocument(); }); }); From f7ad6f0795c7f20c53856b9027aa72881cfe3796 Mon Sep 17 00:00:00 2001 From: Karan Shah Date: Fri, 4 Feb 2022 11:59:40 +0000 Subject: [PATCH 029/383] Fix EntityAirbrakeWidget.test.tsx Signed-off-by: Karan Shah --- .../EntityAirbrakeWidget/EntityAirbrakeWidget.test.tsx | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/plugins/airbrake/src/components/EntityAirbrakeWidget/EntityAirbrakeWidget.test.tsx b/plugins/airbrake/src/components/EntityAirbrakeWidget/EntityAirbrakeWidget.test.tsx index 5fd1aa9bf5..7b3bd6595b 100644 --- a/plugins/airbrake/src/components/EntityAirbrakeWidget/EntityAirbrakeWidget.test.tsx +++ b/plugins/airbrake/src/components/EntityAirbrakeWidget/EntityAirbrakeWidget.test.tsx @@ -17,13 +17,16 @@ import React from 'react'; import { EntityAirbrakeWidget } from './EntityAirbrakeWidget'; import exampleData from '../../api/mock/airbrake-groups-api-mock.json'; -import { renderInTestApp } from '@backstage/test-utils'; +import { renderInTestApp, TestApiProvider } from '@backstage/test-utils'; import { createEntity } from '../../api/mock/mock-entity'; +import { airbrakeApiRef, MockAirbrakeApi } from '../../api'; describe('EntityAirbrakeContent', () => { it('renders all errors sent from Airbrake', async () => { const table = await renderInTestApp( - , + + + , ); expect(exampleData.groups.length).toBeGreaterThan(0); for (const group of exampleData.groups) { From e8731ffbc6ddd19d61901ffe1a417bde6f8f7157 Mon Sep 17 00:00:00 2001 From: Karan Shah Date: Fri, 4 Feb 2022 14:06:18 +0000 Subject: [PATCH 030/383] Added a test for the annotation missing component Signed-off-by: Karan Shah --- .../EntityAirbrakeWidget.test.tsx | 12 ++++++++++++ plugins/airbrake/src/plugin.test.ts | 7 +++++++ 2 files changed, 19 insertions(+) diff --git a/plugins/airbrake/src/components/EntityAirbrakeWidget/EntityAirbrakeWidget.test.tsx b/plugins/airbrake/src/components/EntityAirbrakeWidget/EntityAirbrakeWidget.test.tsx index 7b3bd6595b..5baabe92f6 100644 --- a/plugins/airbrake/src/components/EntityAirbrakeWidget/EntityAirbrakeWidget.test.tsx +++ b/plugins/airbrake/src/components/EntityAirbrakeWidget/EntityAirbrakeWidget.test.tsx @@ -35,4 +35,16 @@ describe('EntityAirbrakeContent', () => { ).toBeInTheDocument(); } }); + + it('states that the annotation is missing if no annotation is provided', async () => { + const table = await renderInTestApp( + + + , + ); + expect(exampleData.groups.length).toBeGreaterThan(0); + await expect( + table.findByText('Missing Annotation'), + ).resolves.toBeInTheDocument(); + }); }); diff --git a/plugins/airbrake/src/plugin.test.ts b/plugins/airbrake/src/plugin.test.ts index c8e9c30e83..ad7865713f 100644 --- a/plugins/airbrake/src/plugin.test.ts +++ b/plugins/airbrake/src/plugin.test.ts @@ -15,9 +15,16 @@ */ import { airbrakePlugin } from './plugin'; +import { ProductionAirbrakeApi } from './api'; describe('catalog', () => { it('should export plugin', () => { expect(airbrakePlugin).toBeDefined(); }); + + it('should have at least one API, the production API', () => { + const apiFactories = Array.from(airbrakePlugin.getApis()); + expect(apiFactories.length).toBe(1); + expect(apiFactories[0].factory({})).toBeInstanceOf(ProductionAirbrakeApi); + }); }); From d5470ec47f5191ce637226cb1390efde70be98a3 Mon Sep 17 00:00:00 2001 From: Karan Shah Date: Fri, 4 Feb 2022 14:24:03 +0000 Subject: [PATCH 031/383] Added a test for appending the API key to a URL parameter Signed-off-by: Karan Shah --- .../src/service/router.test.ts | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/plugins/airbrake-backend/src/service/router.test.ts b/plugins/airbrake-backend/src/service/router.test.ts index f36d36d6f1..7fae43fe8c 100644 --- a/plugins/airbrake-backend/src/service/router.test.ts +++ b/plugins/airbrake-backend/src/service/router.test.ts @@ -58,7 +58,7 @@ describe('createRouter', () => { }); describe('GET /api', () => { - it('appends the API Key properly', () => { + it('appends the API Key properly with no other url parameters', () => { const options: RouterOptions = { logger: getVoidLogger(), airbrakeConfig, @@ -71,5 +71,21 @@ describe('createRouter', () => { '/random/endpoint?key=fakeApiKey', ); }); + + it('appends the API Key properly despite there being other URL parameters', () => { + const options: RouterOptions = { + logger: getVoidLogger(), + airbrakeConfig, + }; + const pathRewrite = generateAirbrakePathRewrite(options) as ( + path: string, + ) => string; + + expect( + pathRewrite( + '/airbrake-backend/api/random/endpoint?param1=123¶m2=abc', + ), + ).toBe('/random/endpoint?param1=123¶m2=abc&key=fakeApiKey'); + }); }); }); From 761b6ead75ca584ace781d13e4d4545a47b9973c Mon Sep 17 00:00:00 2001 From: Karan Shah Date: Fri, 4 Feb 2022 14:29:16 +0000 Subject: [PATCH 032/383] Added /v4 to tests to better explain what it's trying to do Signed-off-by: Karan Shah --- plugins/airbrake-backend/src/service/router.test.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/plugins/airbrake-backend/src/service/router.test.ts b/plugins/airbrake-backend/src/service/router.test.ts index 7fae43fe8c..d4d86722a8 100644 --- a/plugins/airbrake-backend/src/service/router.test.ts +++ b/plugins/airbrake-backend/src/service/router.test.ts @@ -67,8 +67,8 @@ describe('createRouter', () => { path: string, ) => string; - expect(pathRewrite('/airbrake-backend/api/random/endpoint')).toBe( - '/random/endpoint?key=fakeApiKey', + expect(pathRewrite('/airbrake-backend/api/v4/random/endpoint')).toBe( + '/v4/random/endpoint?key=fakeApiKey', ); }); @@ -83,9 +83,9 @@ describe('createRouter', () => { expect( pathRewrite( - '/airbrake-backend/api/random/endpoint?param1=123¶m2=abc', + '/airbrake-backend/api/v4/random/endpoint?param1=123¶m2=abc', ), - ).toBe('/random/endpoint?param1=123¶m2=abc&key=fakeApiKey'); + ).toBe('/v4/random/endpoint?param1=123¶m2=abc&key=fakeApiKey'); }); }); }); From 86458c3ebeb8e3c21e93ee81287156c9f7b5d60a Mon Sep 17 00:00:00 2001 From: Karan Shah Date: Mon, 7 Feb 2022 13:32:51 +0000 Subject: [PATCH 033/383] Added a changeset Signed-off-by: Karan Shah --- .changeset/unlucky-spoons-sort.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/unlucky-spoons-sort.md diff --git a/.changeset/unlucky-spoons-sort.md b/.changeset/unlucky-spoons-sort.md new file mode 100644 index 0000000000..9c0d6cb49b --- /dev/null +++ b/.changeset/unlucky-spoons-sort.md @@ -0,0 +1,5 @@ +--- +'backstage-plugin-airbrake-backend': minor +--- + +Airbrake backend plugin created which proxies all requests to Airbrake's API From a5aebe3e30b0968738c7f0ba845f6e32de3070c5 Mon Sep 17 00:00:00 2001 From: Karan Shah Date: Mon, 7 Feb 2022 14:34:57 +0000 Subject: [PATCH 034/383] Updated package name Signed-off-by: Karan Shah --- .changeset/modern-lizards-sniff.md | 5 ++++ .changeset/unlucky-spoons-sort.md | 5 ---- packages/backend/package.json | 2 +- plugins/airbrake-backend/api-report.md | 35 ++++++++++++++++++++++++++ plugins/airbrake-backend/package.json | 2 +- 5 files changed, 42 insertions(+), 7 deletions(-) create mode 100644 .changeset/modern-lizards-sniff.md delete mode 100644 .changeset/unlucky-spoons-sort.md create mode 100644 plugins/airbrake-backend/api-report.md diff --git a/.changeset/modern-lizards-sniff.md b/.changeset/modern-lizards-sniff.md new file mode 100644 index 0000000000..cf1994ee7f --- /dev/null +++ b/.changeset/modern-lizards-sniff.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-airbrake-backend': minor +--- + +Created the Airbrake backend plugin that proxies requests to the Airbrake API diff --git a/.changeset/unlucky-spoons-sort.md b/.changeset/unlucky-spoons-sort.md deleted file mode 100644 index 9c0d6cb49b..0000000000 --- a/.changeset/unlucky-spoons-sort.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'backstage-plugin-airbrake-backend': minor ---- - -Airbrake backend plugin created which proxies all requests to Airbrake's API diff --git a/packages/backend/package.json b/packages/backend/package.json index 6f3621cc85..b61b7ad81c 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -30,6 +30,7 @@ "@backstage/catalog-model": "^0.9.10", "@backstage/config": "^0.1.13", "@backstage/integration": "^0.7.2", + "@backstage/plugin-airbrake-backend": "^0.0.0", "@backstage/plugin-app-backend": "^0.3.23", "@backstage/plugin-auth-backend": "^0.9.0", "@backstage/plugin-azure-devops-backend": "^0.3.2", @@ -59,7 +60,6 @@ "@gitbeaker/node": "^35.1.0", "@octokit/rest": "^18.5.3", "azure-devops-node-api": "^11.0.1", - "backstage-plugin-airbrake-backend": "^0.0.0", "dockerode": "^3.3.1", "example-app": "file:../app", "express": "^4.17.1", diff --git a/plugins/airbrake-backend/api-report.md b/plugins/airbrake-backend/api-report.md new file mode 100644 index 0000000000..cd56b87f86 --- /dev/null +++ b/plugins/airbrake-backend/api-report.md @@ -0,0 +1,35 @@ +## API Report File for "@backstage/plugin-airbrake-backend" + +> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). + +```ts +import express from 'express'; +import { Logger as Logger_2 } from 'winston'; +import { Options } from 'http-proxy-middleware/dist/types'; + +// 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) "generateAirbrakePathRewrite" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export const generateAirbrakePathRewrite: ( + options: RouterOptions, +) => Options['pathRewrite']; + +// 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 { + // Warning: (ae-forgotten-export) The symbol "AirbrakeConfig" needs to be exported by the entry point index.d.ts + // + // (undocumented) + airbrakeConfig: AirbrakeConfig; + // (undocumented) + logger: Logger_2; +} + +// (No @packageDocumentation comment for this package) +``` diff --git a/plugins/airbrake-backend/package.json b/plugins/airbrake-backend/package.json index 3f174caee4..812ad33654 100644 --- a/plugins/airbrake-backend/package.json +++ b/plugins/airbrake-backend/package.json @@ -1,5 +1,5 @@ { - "name": "backstage-plugin-airbrake-backend", + "name": "@backstage/plugin-airbrake-backend", "version": "0.0.0", "main": "src/index.ts", "types": "src/index.ts", From c16a3a60a026c5fa505ed3789428074e387d9166 Mon Sep 17 00:00:00 2001 From: Karan Shah Date: Mon, 7 Feb 2022 14:49:21 +0000 Subject: [PATCH 035/383] Attempt to fix "Incomplete multi-character sanitization" Signed-off-by: Karan Shah --- plugins/airbrake-backend/src/service/router.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/airbrake-backend/src/service/router.ts b/plugins/airbrake-backend/src/service/router.ts index 670a98eb78..9dc80ab7e1 100644 --- a/plugins/airbrake-backend/src/service/router.ts +++ b/plugins/airbrake-backend/src/service/router.ts @@ -33,7 +33,7 @@ export const generateAirbrakePathRewrite = ( const apiKey = options.airbrakeConfig.apiKey; return path => { - let newPath = path.replace(/.+?(\/api)/, ''); + let newPath = path.replace(/.+?(\/api)/g, ''); if (newPath.includes('?')) { newPath += `&key=${apiKey}`; } else { From e76d563fe0b586b7912a650041c513d4fa1194b3 Mon Sep 17 00:00:00 2001 From: Karan Shah Date: Mon, 7 Feb 2022 15:42:26 +0000 Subject: [PATCH 036/383] Added production-api.test.ts Signed-off-by: Karan Shah --- plugins/airbrake/package.json | 9 ++-- .../airbrake/src/api/production-api.test.ts | 50 +++++++++++++++++++ yarn.lock | 20 ++++++++ 3 files changed, 75 insertions(+), 4 deletions(-) create mode 100644 plugins/airbrake/src/api/production-api.test.ts diff --git a/plugins/airbrake/package.json b/plugins/airbrake/package.json index 92e142c1a9..1c38212f36 100644 --- a/plugins/airbrake/package.json +++ b/plugins/airbrake/package.json @@ -28,14 +28,13 @@ "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", - "react-use": "^17.2.4", - "object-hash": "^2.2.0" + "object-hash": "^2.2.0", + "react-use": "^17.2.4" }, "peerDependencies": { "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@types/object-hash": "^2.2.1", "@backstage/app-defaults": "^0.1.6", "@backstage/cli": "^0.13.1", "@backstage/core-app-api": "^0.5.2", @@ -46,8 +45,10 @@ "@testing-library/user-event": "^13.1.8", "@types/jest": "^26.0.7", "@types/node": "^14.14.32", - "msw": "^0.35.0", + "@types/object-hash": "^2.2.1", "cross-fetch": "^3.0.6", + "msw": "^0.35.0", + "nock": "^13.2.4", "react-router": "6.0.0-beta.0" }, "files": [ diff --git a/plugins/airbrake/src/api/production-api.test.ts b/plugins/airbrake/src/api/production-api.test.ts new file mode 100644 index 0000000000..89b7908f9a --- /dev/null +++ b/plugins/airbrake/src/api/production-api.test.ts @@ -0,0 +1,50 @@ +/* + * 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 { ProductionAirbrakeApi } from './production-api'; +import nock from 'nock'; +import mockGroupsData from './mock/airbrake-groups-api-mock.json'; + +describe('The production Airbrake API', () => { + let productionApi: ProductionAirbrakeApi; + + beforeEach(() => { + productionApi = new ProductionAirbrakeApi('fakeApiKey'); + }); + + it('fetches groups using the provided project ID', async () => { + const scope = nock('https://api.airbrake.io') + .get('/api/v4/projects/123456/groups?key=fakeApiKey') + .reply(200, mockGroupsData); + expect(scope.isDone()).toBe(false); + + const groups = await productionApi.fetchGroups('123456'); + + expect(scope.isDone()).toBe(true); + expect(groups).toStrictEqual(mockGroupsData); + }); + + it('throws if fetching groups was unsuccessful', async () => { + const scope = nock('https://api.airbrake.io') + .get('/api/v4/projects/123456/groups?key=fakeApiKey') + .reply(500, mockGroupsData); + expect(scope.isDone()).toBe(false); + + await expect(productionApi.fetchGroups('123456')).rejects.toThrow(); + + expect(scope.isDone()).toBe(true); + }); +}); diff --git a/yarn.lock b/yarn.lock index 83e5796a6e..efe58ad8f0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -16155,6 +16155,11 @@ lodash.once@^4.0.0, lodash.once@^4.1.1: resolved "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" integrity sha1-DdOXEhPHxW34gJd9UEyI+0cal6w= +lodash.set@^4.3.2: + version "4.3.2" + resolved "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz#d8757b1da807dde24816b0d6a84bea1a76230b23" + integrity sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM= + lodash.sortby@^4.7.0: version "4.7.0" resolved "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" @@ -17658,6 +17663,16 @@ no-case@^3.0.4: lower-case "^2.0.2" tslib "^2.0.3" +nock@^13.2.4: + version "13.2.4" + resolved "https://registry.npmjs.org/nock/-/nock-13.2.4.tgz#43a309d93143ee5cdcca91358614e7bde56d20e1" + integrity sha512-8GPznwxcPNCH/h8B+XZcKjYPXnUV5clOKCjAqyjsiqA++MpNx9E9+t8YPp0MbThO+KauRo7aZJ1WuIZmOrT2Ug== + dependencies: + debug "^4.1.0" + json-stringify-safe "^5.0.1" + lodash.set "^4.3.2" + propagate "^2.0.0" + node-abort-controller@^3.0.1: version "3.0.1" resolved "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.0.1.tgz#f91fa50b1dee3f909afabb7e261b1e1d6b0cb74e" @@ -19759,6 +19774,11 @@ prop-types@^15.0.0, prop-types@^15.5.10, prop-types@^15.5.7, prop-types@^15.5.8, object-assign "^4.1.1" react-is "^16.13.1" +propagate@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/propagate/-/propagate-2.0.1.tgz#40cdedab18085c792334e64f0ac17256d38f9a45" + integrity sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag== + properties-reader@^2.2.0: version "2.2.0" resolved "https://registry.npmjs.org/properties-reader/-/properties-reader-2.2.0.tgz#41d837fe143d8d5f2386b6a869a1975c0b2c595c" From 82641a96d40fafadfa5ab61a8e11605756ffa653 Mon Sep 17 00:00:00 2001 From: Karan Shah Date: Mon, 7 Feb 2022 16:25:49 +0000 Subject: [PATCH 037/383] Fleshing out more tests with API failures Signed-off-by: Karan Shah --- .../airbrake/src/api/production-api.test.ts | 2 +- .../EntityAirbrakeWidget.test.tsx | 30 +++++++++++++++++-- 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/plugins/airbrake/src/api/production-api.test.ts b/plugins/airbrake/src/api/production-api.test.ts index 89b7908f9a..3753cab592 100644 --- a/plugins/airbrake/src/api/production-api.test.ts +++ b/plugins/airbrake/src/api/production-api.test.ts @@ -40,7 +40,7 @@ describe('The production Airbrake API', () => { it('throws if fetching groups was unsuccessful', async () => { const scope = nock('https://api.airbrake.io') .get('/api/v4/projects/123456/groups?key=fakeApiKey') - .reply(500, mockGroupsData); + .reply(500); expect(scope.isDone()).toBe(false); await expect(productionApi.fetchGroups('123456')).rejects.toThrow(); diff --git a/plugins/airbrake/src/components/EntityAirbrakeWidget/EntityAirbrakeWidget.test.tsx b/plugins/airbrake/src/components/EntityAirbrakeWidget/EntityAirbrakeWidget.test.tsx index 5baabe92f6..5d3787b875 100644 --- a/plugins/airbrake/src/components/EntityAirbrakeWidget/EntityAirbrakeWidget.test.tsx +++ b/plugins/airbrake/src/components/EntityAirbrakeWidget/EntityAirbrakeWidget.test.tsx @@ -19,7 +19,12 @@ import { EntityAirbrakeWidget } from './EntityAirbrakeWidget'; import exampleData from '../../api/mock/airbrake-groups-api-mock.json'; import { renderInTestApp, TestApiProvider } from '@backstage/test-utils'; import { createEntity } from '../../api/mock/mock-entity'; -import { airbrakeApiRef, MockAirbrakeApi } from '../../api'; +import { + airbrakeApiRef, + MockAirbrakeApi, + ProductionAirbrakeApi, +} from '../../api'; +import nock from 'nock'; describe('EntityAirbrakeContent', () => { it('renders all errors sent from Airbrake', async () => { @@ -36,15 +41,34 @@ describe('EntityAirbrakeContent', () => { } }); - it('states that the annotation is missing if no annotation is provided', async () => { + it('states that the annotation is missing if no project ID annotation is provided', async () => { const table = await renderInTestApp( , ); - expect(exampleData.groups.length).toBeGreaterThan(0); await expect( table.findByText('Missing Annotation'), ).resolves.toBeInTheDocument(); }); + + it('states that an error occurred if API call fails', async () => { + const scope = nock('https://api.airbrake.io') + .get('/api/v4/projects/123/groups?key=fakeApiKey') + .reply(500); + expect(scope.isDone()).toBe(false); + + const table = await renderInTestApp( + + + , + ); + + await expect( + table.findByText('*there was an issue communicating with Airbrake*'), + ).resolves.toBeInTheDocument(); + expect(scope.isDone()).toBe(true); + }); }); From db4ed55d9d380ff9851cad327a799d86c059202b Mon Sep 17 00:00:00 2001 From: Karan Shah Date: Tue, 8 Feb 2022 10:03:15 +0000 Subject: [PATCH 038/383] Error test now passes Signed-off-by: Karan Shah --- .../EntityAirbrakeWidget.test.tsx | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/plugins/airbrake/src/components/EntityAirbrakeWidget/EntityAirbrakeWidget.test.tsx b/plugins/airbrake/src/components/EntityAirbrakeWidget/EntityAirbrakeWidget.test.tsx index 5d3787b875..2415aa1bdf 100644 --- a/plugins/airbrake/src/components/EntityAirbrakeWidget/EntityAirbrakeWidget.test.tsx +++ b/plugins/airbrake/src/components/EntityAirbrakeWidget/EntityAirbrakeWidget.test.tsx @@ -17,7 +17,11 @@ import React from 'react'; import { EntityAirbrakeWidget } from './EntityAirbrakeWidget'; import exampleData from '../../api/mock/airbrake-groups-api-mock.json'; -import { renderInTestApp, TestApiProvider } from '@backstage/test-utils'; +import { + MockErrorApi, + renderInTestApp, + TestApiProvider, +} from '@backstage/test-utils'; import { createEntity } from '../../api/mock/mock-entity'; import { airbrakeApiRef, @@ -25,6 +29,7 @@ import { ProductionAirbrakeApi, } from '../../api'; import nock from 'nock'; +import { errorApiRef } from '@backstage/core-plugin-api'; describe('EntityAirbrakeContent', () => { it('renders all errors sent from Airbrake', async () => { @@ -57,18 +62,26 @@ describe('EntityAirbrakeContent', () => { .get('/api/v4/projects/123/groups?key=fakeApiKey') .reply(500); expect(scope.isDone()).toBe(false); + const mockErrorApi = new MockErrorApi({ collect: true }); const table = await renderInTestApp( , ); await expect( - table.findByText('*there was an issue communicating with Airbrake*'), + table.findByText(/.*there was an issue communicating with Airbrake.*/), ).resolves.toBeInTheDocument(); + expect(mockErrorApi.getErrors().length).toBe(1); + expect(mockErrorApi.getErrors()[0].error.message).toStrictEqual( + 'Failed fetching Airbrake groups', + ); expect(scope.isDone()).toBe(true); }); }); From 81e19c612ae1e067c573afedd0f67b47661ad60c Mon Sep 17 00:00:00 2001 From: Karan Shah Date: Tue, 8 Feb 2022 10:04:39 +0000 Subject: [PATCH 039/383] Minor refactoring to better name variables Signed-off-by: Karan Shah --- .../EntityAirbrakeWidget.test.tsx | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/plugins/airbrake/src/components/EntityAirbrakeWidget/EntityAirbrakeWidget.test.tsx b/plugins/airbrake/src/components/EntityAirbrakeWidget/EntityAirbrakeWidget.test.tsx index 2415aa1bdf..5317d1469c 100644 --- a/plugins/airbrake/src/components/EntityAirbrakeWidget/EntityAirbrakeWidget.test.tsx +++ b/plugins/airbrake/src/components/EntityAirbrakeWidget/EntityAirbrakeWidget.test.tsx @@ -33,7 +33,7 @@ import { errorApiRef } from '@backstage/core-plugin-api'; describe('EntityAirbrakeContent', () => { it('renders all errors sent from Airbrake', async () => { - const table = await renderInTestApp( + const widget = await renderInTestApp( , @@ -41,30 +41,30 @@ describe('EntityAirbrakeContent', () => { expect(exampleData.groups.length).toBeGreaterThan(0); for (const group of exampleData.groups) { expect( - await table.getByText(group.errors[0].message), + await widget.getByText(group.errors[0].message), ).toBeInTheDocument(); } }); it('states that the annotation is missing if no project ID annotation is provided', async () => { - const table = await renderInTestApp( + const widget = await renderInTestApp( , ); await expect( - table.findByText('Missing Annotation'), + widget.findByText('Missing Annotation'), ).resolves.toBeInTheDocument(); }); - it('states that an error occurred if API call fails', async () => { + it('states that an error occurred if the API call fails', async () => { const scope = nock('https://api.airbrake.io') .get('/api/v4/projects/123/groups?key=fakeApiKey') .reply(500); expect(scope.isDone()).toBe(false); const mockErrorApi = new MockErrorApi({ collect: true }); - const table = await renderInTestApp( + const widget = await renderInTestApp( { ); await expect( - table.findByText(/.*there was an issue communicating with Airbrake.*/), + widget.findByText(/.*there was an issue communicating with Airbrake.*/), ).resolves.toBeInTheDocument(); expect(mockErrorApi.getErrors().length).toBe(1); expect(mockErrorApi.getErrors()[0].error.message).toStrictEqual( From 7dc3a7d32a1d5dd1a0db05a30bc135f3de2579b4 Mon Sep 17 00:00:00 2001 From: Karan Shah Date: Tue, 8 Feb 2022 11:23:10 +0000 Subject: [PATCH 040/383] Address comments and suggestions - Added documentation for api-report.md - Reverted the change to ADOPTERS.md Signed-off-by: Karan Shah --- app-config.yaml | 5 ++-- plugins/airbrake-backend/api-report.md | 29 +++++++------------ .../src/config/ExtractAirbrakeConfig.ts | 17 ++++++++++- plugins/airbrake-backend/src/index.ts | 7 +++++ .../airbrake-backend/src/service/router.ts | 26 +++++++++++++++++ 5 files changed, 62 insertions(+), 22 deletions(-) diff --git a/app-config.yaml b/app-config.yaml index 1f03105cde..e49e29c45a 100644 --- a/app-config.yaml +++ b/app-config.yaml @@ -193,8 +193,6 @@ integrations: - host: amazonaws.com accessKeyId: ${AWS_ACCESS_KEY_ID} secretAccessKey: ${AWS_SECRET_ACCESS_KEY} - airbrake: - apiKey: ${AIRBRAKE_API_KEY} catalog: import: @@ -466,3 +464,6 @@ apacheAirflow: gocd: baseUrl: https://your.gocd.instance.com + +airbrake: + apiKey: ${AIRBRAKE_API_KEY} diff --git a/plugins/airbrake-backend/api-report.md b/plugins/airbrake-backend/api-report.md index cd56b87f86..c888d55e5b 100644 --- a/plugins/airbrake-backend/api-report.md +++ b/plugins/airbrake-backend/api-report.md @@ -3,33 +3,24 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts +import { Config } from '@backstage/config'; import express from 'express'; import { Logger as Logger_2 } from 'winston'; -import { Options } from 'http-proxy-middleware/dist/types'; -// 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) +// @public +export type AirbrakeConfig = { + apiKey: string; +}; + +// @public export function createRouter(options: RouterOptions): Promise; -// Warning: (ae-missing-release-tag) "generateAirbrakePathRewrite" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export const generateAirbrakePathRewrite: ( - options: RouterOptions, -) => Options['pathRewrite']; +// @public +export function extractAirbrakeConfig(config: Config): AirbrakeConfig; -// 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) +// @public export interface RouterOptions { - // Warning: (ae-forgotten-export) The symbol "AirbrakeConfig" needs to be exported by the entry point index.d.ts - // - // (undocumented) airbrakeConfig: AirbrakeConfig; - // (undocumented) logger: Logger_2; } - -// (No @packageDocumentation comment for this package) ``` diff --git a/plugins/airbrake-backend/src/config/ExtractAirbrakeConfig.ts b/plugins/airbrake-backend/src/config/ExtractAirbrakeConfig.ts index 06f5e46e85..6d6c814345 100644 --- a/plugins/airbrake-backend/src/config/ExtractAirbrakeConfig.ts +++ b/plugins/airbrake-backend/src/config/ExtractAirbrakeConfig.ts @@ -15,12 +15,27 @@ */ import { Config } from '@backstage/config'; +/** + * The Airbrake config object + * + * @public + */ export type AirbrakeConfig = { + /** + * The API Key + */ apiKey: string; }; +/** + * Extract the Airbrake config from a config object + * + * @public + * + * @param config - The config object to extract from + */ export function extractAirbrakeConfig(config: Config): AirbrakeConfig { return { - apiKey: config.getString('integrations.airbrake.apiKey'), + apiKey: config.getString('airbrake.apiKey'), }; } diff --git a/plugins/airbrake-backend/src/index.ts b/plugins/airbrake-backend/src/index.ts index ca73cb27ba..f4ec6008c2 100644 --- a/plugins/airbrake-backend/src/index.ts +++ b/plugins/airbrake-backend/src/index.ts @@ -14,4 +14,11 @@ * limitations under the License. */ +/** + * The Airbrake Backend plugin used by \@backstage/plugin-airbrake + * + * @packageDocumentation + */ + export * from './service/router'; +export * from './config'; diff --git a/plugins/airbrake-backend/src/service/router.ts b/plugins/airbrake-backend/src/service/router.ts index 9dc80ab7e1..b870eb5c13 100644 --- a/plugins/airbrake-backend/src/service/router.ts +++ b/plugins/airbrake-backend/src/service/router.ts @@ -22,11 +22,30 @@ import { createProxyMiddleware } from 'http-proxy-middleware'; import { AirbrakeConfig } from '../config'; import { Options } from 'http-proxy-middleware/dist/types'; +/** + * The router options that are needed when creating a router. + * + * @public + */ export interface RouterOptions { + /** + * A logger object + */ logger: Logger; + + /** + * The Airbrake config obtained from {@link extractAirbrakeConfig} + */ airbrakeConfig: AirbrakeConfig; } +/** + * Mainly used internally to generate the path. + * + * @internal + * + * @param options - Router options + */ export const generateAirbrakePathRewrite = ( options: RouterOptions, ): Options['pathRewrite'] => { @@ -43,6 +62,13 @@ export const generateAirbrakePathRewrite = ( }; }; +/** + * Create the Airbrake Router, used for making API calls to the Airbrake API. + * + * @public + * + * @param options - Router options + */ export async function createRouter( options: RouterOptions, ): Promise { From a61c56423f4e0611f87e74ea4ed0933865987aaa Mon Sep 17 00:00:00 2001 From: Karan Shah Date: Tue, 8 Feb 2022 11:27:20 +0000 Subject: [PATCH 041/383] Address comments and suggestions - Updated supertest Signed-off-by: Karan Shah --- plugins/airbrake-backend/package.json | 2 +- yarn.lock | 41 ++++----------------------- 2 files changed, 7 insertions(+), 36 deletions(-) diff --git a/plugins/airbrake-backend/package.json b/plugins/airbrake-backend/package.json index 812ad33654..0ad55d192c 100644 --- a/plugins/airbrake-backend/package.json +++ b/plugins/airbrake-backend/package.json @@ -34,7 +34,7 @@ "@backstage/cli": "^0.13.1-next.0", "@types/http-proxy-middleware": "^0.19.3", "@types/supertest": "^2.0.8", - "supertest": "^4.0.2", + "supertest": "^6.1.6", "msw": "^0.35.0" }, "files": [ diff --git a/yarn.lock b/yarn.lock index ddfec88ac7..386ba1955c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8903,7 +8903,7 @@ compare-func@^2.0.0: array-ify "^1.0.0" dot-prop "^5.1.0" -component-emitter@^1.2.0, component-emitter@^1.2.1, component-emitter@^1.3.0: +component-emitter@^1.2.1, component-emitter@^1.3.0: version "1.3.0" resolved "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== @@ -9184,7 +9184,7 @@ cookie@0.4.1, cookie@^0.4.1, cookie@~0.4.1: resolved "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz#afd713fe26ebd21ba95ceb61f9a8116e50a537d1" integrity sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA== -cookiejar@^2.1.0, cookiejar@^2.1.3: +cookiejar@^2.1.3: version "2.1.3" resolved "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.3.tgz#fc7a6216e408e74414b90230050842dacda75acc" integrity sha512-JxbCBUdrfr6AQjOXrxoTvAMJO4HBTUIlBzslcJPAz+/KT8yk53fXun51u+RenNYvad/+Vc2DIz5o9UxlCDymFQ== @@ -12202,7 +12202,7 @@ form-data@4.0.0, form-data@^4.0.0: combined-stream "^1.0.8" mime-types "^2.1.12" -form-data@^2.3.1, form-data@^2.3.2, form-data@^2.5.0: +form-data@^2.3.2, form-data@^2.5.0: version "2.5.1" resolved "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz#f2cbec57b5e59e23716e128fe44d4e5dd23895f4" integrity sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA== @@ -12250,11 +12250,6 @@ formdata-node@^4.3.1: node-domexception "1.0.0" web-streams-polyfill "4.0.0-beta.1" -formidable@^1.2.0: - version "1.2.6" - resolved "https://registry.npmjs.org/formidable/-/formidable-1.2.6.tgz#d2a51d60162bbc9b4a055d8457a7c75315d1a168" - integrity sha512-KcpbcpuLNOwrEjnbpMC0gS+X8ciDoZE1kkqzat4a8vrprf+s9pKNQ/QIwWfbfs4ltgmFl3MD177SNTkve3BwGQ== - formidable@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/formidable/-/formidable-2.0.1.tgz#4310bc7965d185536f9565184dee74fbb75557ff" @@ -16812,7 +16807,7 @@ meros@1.1.4, meros@^1.1.4: resolved "https://registry.npmjs.org/meros/-/meros-1.1.4.tgz#c17994d3133db8b23807f62bec7f0cb276cfd948" integrity sha512-E9ZXfK9iQfG9s73ars9qvvvbSIkJZF5yOo9j4tcwM5tN8mUKfj/EKN5PzOr3ZH0y5wL7dLAHw3RVEfpQV9Q7VQ== -methods@^1.0.0, methods@^1.1.1, methods@^1.1.2, methods@~1.1.2: +methods@^1.0.0, methods@^1.1.2, methods@~1.1.2: version "1.1.2" resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= @@ -17167,7 +17162,7 @@ mime-types@^2.0.8, mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.31, m dependencies: mime-db "1.51.0" -mime@1.6.0, mime@^1.4.1: +mime@1.6.0: version "1.6.0" resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== @@ -19948,7 +19943,7 @@ qs@6.9.6: resolved "https://registry.npmjs.org/qs/-/qs-6.9.6.tgz#26ed3c8243a431b2924aca84cc90471f35d5a0ee" integrity sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ== -qs@^6.10.1, qs@^6.10.2, qs@^6.5.1, qs@^6.9.1, qs@^6.9.4, qs@^6.9.6: +qs@^6.10.1, qs@^6.10.2, qs@^6.9.1, qs@^6.9.4, qs@^6.9.6: version "6.10.3" resolved "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz#d6cde1b2ffca87b5aa57889816c5f81535e22e8e" integrity sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ== @@ -22682,22 +22677,6 @@ sucrase@^3.18.0, sucrase@^3.20.2: pirates "^4.0.1" ts-interface-checker "^0.1.9" -superagent@^3.8.3: - version "3.8.3" - resolved "https://registry.npmjs.org/superagent/-/superagent-3.8.3.tgz#460ea0dbdb7d5b11bc4f78deba565f86a178e128" - integrity sha512-GLQtLMCoEIK4eDv6OGtkOoSMt3D+oq0y3dsxMuYuDvaNUvuT8eFBuLmfR0iYYzHC1e8hpzC6ZsxbuP6DIalMFA== - dependencies: - component-emitter "^1.2.0" - cookiejar "^2.1.0" - debug "^3.1.0" - extend "^3.0.0" - form-data "^2.3.1" - formidable "^1.2.0" - methods "^1.1.1" - mime "^1.4.1" - qs "^6.5.1" - readable-stream "^2.3.5" - superagent@^7.1.0: version "7.1.1" resolved "https://registry.npmjs.org/superagent/-/superagent-7.1.1.tgz#2ab187d38c3078c31c3771c0b751f10163a27136" @@ -22715,14 +22694,6 @@ superagent@^7.1.0: readable-stream "^3.6.0" semver "^7.3.5" -supertest@^4.0.2: - version "4.0.2" - resolved "https://registry.npmjs.org/supertest/-/supertest-4.0.2.tgz#c2234dbdd6dc79b6f15b99c8d6577b90e4ce3f36" - integrity sha512-1BAbvrOZsGA3YTCWqbmh14L0YEq0EGICX/nBnfkfVJn7SrxQV1I3pMYjSzG9y/7ZU2V9dWqyqk2POwxlb09duQ== - dependencies: - methods "^1.1.2" - superagent "^3.8.3" - supertest@^6.1.3, supertest@^6.1.6: version "6.2.2" resolved "https://registry.npmjs.org/supertest/-/supertest-6.2.2.tgz#04a5998fd3efaff187cb69f07a169755d655b001" From 49619acc93b96b9eb95fcfae9664fa5ccfcd4d1b Mon Sep 17 00:00:00 2001 From: Karan Shah Date: Tue, 8 Feb 2022 11:29:27 +0000 Subject: [PATCH 042/383] Address comments and suggestions - Revert ADOPTERS.md to whatever is on the main branch Signed-off-by: Karan Shah --- ADOPTERS.md | 184 ++++++++++++++++++++++++++-------------------------- 1 file changed, 92 insertions(+), 92 deletions(-) diff --git a/ADOPTERS.md b/ADOPTERS.md index 58ee92e094..120c828c43 100644 --- a/ADOPTERS.md +++ b/ADOPTERS.md @@ -1,92 +1,92 @@ -| Organization | Contact | Description of Use | -| --------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [Spotify](https://www.spotify.com) | [@leemills83](https://github.com/leemills83) | Main interface towards all of Spotify's infrastructure and technical documentation. | -| [bol.com](https://www.bol.com) | [@sagacity](https://github.com/sagacity) | Initial work being done to unify platform tooling. | -| [DFDS](https://www.dfds.com) | [@carlsendk](https://github.com/carlsendk) | V2 self-service platform. | -| [Roadie](https://roadie.io) | [@dtuite](https://github.com/dtuite) | Hosted, managed Backstage with easy set-up | -| [Roku](https://www.roku.com) | [@timurista](https://github.com/timurista) | Initial work on Cloud engineering service platform. | -| [SDA SE](https://sda.se) | [@dschwank](https://github.com/dschwank), [@iammnils](https://github.com/iammnils) | Central place for developing and sharing services in our insurance ecosystem. | -| [H-E-B](https://www.heb.com) | [@german-j-rodriguez](https://github.com/german-j-rodriguez) | Initial work on Engineering Portal service platform. | -| [American Airlines](https://www.aa.com) | [@paulpach](https://github.com/paulpach) | Central place for developers to develop and maintain applications | -| [Kiwi.com](https://kiwi.com) | [@aexvir](https://github.com/aexvir) | Replacing the frontend of [The Zoo](https://github.com/kiwicom/the-zoo), their service registry. | -| [Voi](https://www.voiscooters.com/) | [@K-Phoen](https://github.com/K-Phoen) | Developer portal, main gateway to our infrastructure, documentation and internal tooling. | -| [Talkdesk](https://www.talkdesk.com) | [@jaime-talkdesk](https://github.com/jaime-talkdesk) | Initial work for Engineering Portal and Self Provisioning to R&D | -| [Wealthsimple](https://www.wealthsimple.com) | [@andrewthauer](https://github.com/andrewthauer) | Developer portal, service catalog, documentation and tooling | -| [Grab](https://www.grab.com) | [@althafh](https://github.com/althafh) | Initial work as a unified interface for all of Grab's internal tooling | -| [Telenor Sweden](https://www.telenor.se) | [@O5ten](https://github.com/O5ten) | Building a developer portal for scaffolding projects towards our unified build environment and microservice stacks | -| [Fiverr](https://www.fiverr.com) | [@nirga](https://github.com/nirga) | Unifying separate tools that developers are using today (i.e. monitoring, dead letter queues management, etc.) into a single platform. | -| [Zalando SE](https://www.zalando.de) | [@leviferreira](https://github.com/leviferreira) | Building V2 of the Internal Development Portal. | -| [LegalZoom](https://legalzoom.com) | [@backjo](https://github.com/backjo) | Developer portal - hub for all engineering projects and metadata. | -| [Expedia Group](https://www.expediagroup.com) | [Mike Turner](mailto:miturner@expediagroup.com), [Sneha Kumar](mailto:snkumar@expediagroup.com), [@guillermomanzo](https://github.com/guillermomanzo), [Erik Lindgren](https://github.com/lindgren) | EG Common Developer Toolkit | -| [Paddle.com](https://paddle.com) | [Ioannis Georgoulas](https://github.com/geototti21) | Developer portal (Tech Docs, Service Catalog, Internal Tooling), we use vanilla Backstage FE and custom BE implementation in Go | -| [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/) | [Jim Haughwout](https://github.com/JimHaughwout) | 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. | -| [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. | -| [Netflix](https://www.netflix.com/) | [bleathem](https://github.com/bleathem) | Our Backstage implementation will be the front door to a unified experience connecting our internal platform products across important workflows with integrated knowledge and support. | -| [b.well](https://www.icanbwell.com/) | [Jacob Rosales](https://github.com/jrosales) | Foundation for our engineering portal and cloud insights. | -| [PagerDuty](https://www.pagerduty.com/) | [Mark Shaw](https://github.com/markshawtoronto) | Developer portal, initially focused on software templates and tech-docs. | -| [MoonShiner](https://moonshiner.at) | [Fabian Hippmann](https://github.com/FabianHippmann) | Developer portal - helps us keep track of our customer projects, onboard new developers & improve our development process 🌕🚀🧑‍🚀 | -| [FundApps](https://www.fundapps.co/) | [Elliot Greenwood](https://github.com/egnwd) | Developer Portal - A place for us to keep track of our projects and documentation for all services and processes | -| [DAZN](https://dazn.com/) | [Lou Bichard](https://twitter.com/loujaybee), [Marco Crivellaro](https://github.com/crivetechie), [Alex Hollerith](mailto:alex.hollerith@dazn.com) | Ingesting all of DAZN's repos for the catalog, migrating our internal platform apps (pull request boards, release information, inner source marketplace etc) to Backstage plugins (where applicable). | -| [HelloFresh](https://www.hellofresh.de/) | [@iammuho](https://github.com/iammuho), [@ElenaForester](https://github.com/ElenaForester), [@diegomarangoni](https://github.com/diegomarangoni) | Our developer portal at HelloFresh - Spread across an organisation of 500+ engineers globally. | -| [FactSet](https://www.factset.com/) | [@kuangp](https://github.com/kuangp) | Developer portal to provide discoverability to all internal components, APIs, documentation, and scaffold templates with integrations to our internal infrastructure tools. | -| [Workrise](https://www.workrise.com/) | [Michael Rode](https://github.com/michaelrode) | Developer portal, main gateway to our infrastructure, documentation and internal tooling. | -| [RedVentures](https://www.redventures.com/) | [Chris Diaz](https://github.com/codingdiaz) | Developer portal that brings everything an engineer needs to provide value into a single pane of glass. | -| [MavTek](https://www.mavtek.com/) | [@fgascon](https://github.com/fgascon) | Developer portal focused on standardizing practices, centralizing documentation and streamlining developer practices. | -| [QuintoAndar](https://www.quintoandar.com.br/) | [@quintoandar](https://github.com/quintoandar) | Developer portal, services catalog and centralization of service metrics. | -| [empathy.co](https://empathy.co/) | [@guillermotti](https://github.com/guillermotti) | Developer portal for tech docs, service catalog, plugin discovery and much more. | -| [creditas.com](https://creditas.com/) | [@aureliosaraiva](https://github.com/aureliosaraiva) [@Creditas](https://github.com/creditas) | Centralization of all services, standards, documentation, etc. We started the deployment process. | -| [Prisjakt](https://www.prisjakt.nu) / [PriceSpy](https://pricespy.co.uk) | [@kennylindahl](https://github.com/kennylindahl) | Internal developer portal - Documentation, scaffolding, software catalog, TechRadar, Gitlab org data integration | -| [Powerspike](https://powerspike.tv/) | [@trelore](https://github.com/trelore) | Developer portal for documentation of core libraries and repositories. | -| [2U](https://2u.com) | [Andrew Thal](https://github.com/athal7) | Development team home-base, promoting service discoverability, resource dependencies, and tech radar | -| [Taxfix](https://taxfix.de/) | [Sami Ur Rehman](https://github.com/samiurrehman92) | Developer's portal with software catalog at it's core. Hosts API Specs, Tech Docs, Tech Radar and some custom plugins. | -| [Busuu](https://busuu.com/) | [Adam Tester](https://github.com/adamtester) | Developer portal with service catalog, API docs, Event docs, service templating, and cost insights. | -| [Loadsmart](https://loadsmart.com/) | [Loadsmart](https://github.com/loadsmart) | Improve services visibility and operations for service owners and developers. | -| [Monzo](https://monzo.com/) | [@WillSewell](https://github.com/WillSewell), [@joechrisellis](https://github.com/joechrisellis) | Developer portal showing metadata and docs for over 2000 microservices. We have built a number of plugins such as a UI for our system to measure [software excellence](https://monzo.com/blog/2021/09/15/how-we-measure-software-excellence), and a UI to show deployment and config change events. | -| [Vaimo](https://www.vaimo.com) | [@vaimo-magnus](https://github.com/vaimo-magnus) | Developer Portal for our developers at Vaimo, currently docs and self-service towards our internal PaaS based on k8s. Plans to extend the catalog into Projects, Environments etc | -| [Wayfair](https://www.wayfair.com) | [@fransan](https://github.com/fransan), [@errskipower](https://github.com/errskipower), [@hrrs](https://github.com/hrrs) | Developer portal for service catalog, technical documentation, and APIs. | -| [CircleHD](https://www.circlehd.com) | [@circlehddev](https://github.com/circlehddev) | Developer Portal for internal dev team across the globe | -| [CastDesk](https://castdesk.com) | [@circlehddev](https://github.com/circlehddev) | Developer Portal for internal dev team across the globe | -| [Santagostino](https://santagostino.it) | [@santagostino](https://github.com/santagostino) | Developer portal, gateway to our infrastructure, documentation, service catalog and internal tooling. | -| [Peak](https://peak.ai) | [Luke Beamish](https://github.com/lukebeamish-peak) | Developer portal for all internal engineers to access documentation and tooling. | -| [Gelato](https://gelato.com/) | [Dmitry Makarenko](https://github.com/dmitry-makarenko-gelato) | Developer portal: documentation, service templates, org structure, service catalog, plugins for integration with internal and third-party systems🚀. | -| [GoCardless](https://gocardless.com/) | [James Turley](https://github.com/tragiclifestories) | Developer portal: documentation, service templates, org structure, service catalog, plugins for integration with internal systems. | -| [Box](https://www.box.com) | [@kielosz](https://github.com/kielosz), [@jluk-box](https://github.com/jluk-box), [@ptychu](https://github.com/ptychu), [@alexrybch](https://github.com/alexrybch), [@szubster](https://github.com/szubster) | Developer portal for service catalog, integration with internal systems, new service onboarding. | -| [Bazaarvoice](https://www.bazaarvoice.com) | [@niallmccullagh](https://github.com/niallmccullagh) | Developer portal for service catalog and scaffolds, publishing Github docs and API documentation, visualising our internal tech radar and our product engineering org structure. | -| [Krateo PlatformOps](https://www.krateo.io) | [@projectkerberus](https://github.com/projectkerberus) | A multi-cloud control plane to create, manage and deploy any kind of resource easily and centrally via a Developer Portal that centralizes via a self-service catalog the templating and ownership of services, the available documentation, the overview of the components that compose an entire domain and all the data of the service lifecycle. | -| [Adevinta](https://www.adevinta.com) | [Ray Sinnema](https://github.com/RemonSinnema) | Showcase shared services to our internal customers. | -| [Splunk](https://www.splunk.com) | [@tonytamsf](https://github.com/tonytamsf) | Developer portal as a centralized place to find people, services, documentation, escalation policies and give bravos. This portal is also being used as a centralized search engine for engineering specific documentation. | -| [SoundCloud](https://www.soundcloud.com) | [Julio Zynger](https://github.com/julioz) | Developer portal as a [humane registry](https://martinfowler.com/bliki/HumaneRegistry.html) for the organization: catalog of people, services, documentation, feature toggles, escalation policies, etc. | -| [Volvofinans Bank](https://www.volvofinans.se) | [Johan Hammar](https://github.com/johanhammar) | Developer portal enabling engineers to manage and explore software and documentation. | -| [Palo Alto Networks](https://www.paloaltonetworks.com) | [Jeremy Guarini](https://github.com/jeremyguarini), [Brian Lomeland](https://github.com/bbbmmmlll), [Palo Alto Networks](https://github.com/PaloAltoNetworks) | Developer portal, service catalog, documentation and tooling | -| [Signal Iduna Group](https://www.signal-iduna.de/) | [Jonas Thomsen](https://github.com/JoThomsen) | Developer Portal, documentation, monitoring, service catalog for our insurance ecosystem | -| [Tradeshift](https://www.tradeshift.com/) | [Soren Mathiasen](https://github.com/sorenmat) | Developer Portal: documentation, monitoring, service templates, service catalog for our micro services | -| [Unity](https://unity.com) | [Ted Cordery](https://github.com/TeddyBallGame) | A centralized service catalog with documentation for our service engineers. | -| [PicPay](https://www.picpay.com) | [Luis Baroni](https://github.com/lcsbaroni), [Renata Poluceno](https://github.com/renatapoluceno), [PicPay](https://github.com/picpay) | Developer portal for building services throught templates, service catalog with ownership of services, documentation and metrics providing autonomy and visibility for all. | -| [Epic Games](https://www.epicgames.com) | [Brian Jung](https://github.com/brian-at-epic), [Jeff Goldian](https://github.com/jeffgoldian-Epic) | Developer Portal: Service Catalog, Documentation, Software Templates and more making our internal teams' lives easier! | -| [Globo](https://globo.com) | [Carlos Gusmão](https://github.com/caeugusmao), [Guilherme Vierno](https://github.com/vierno), [Denis Aoki](https://github.com/dnsaoki2), [Maycon Dionisio](https://github.com/MayconDionisio), | Reduce the friction of accessing the information engineers need about Globo's digital services through a coherent and centralized experience. | -| [QBE](https://www.qbe.com/) | [Daniel Steel](https://github.com/danielsteelqbe), [Pete Jespers](https://github.com/petejespersqbe) | Developer portal allowing our global teams to explore and create applications, documentation and cloud infrastructure easily and quickly 🚀 | -| [LogMeIn](https://www.logmein.com) | [Lorenzo Orsatti](https://github.com/lorsatti) | Improve onboarding experience of new developers. Discover faster and painlessly developer documentation, API definitions and team information. Provide useful dev metrics in a central place. Provide easy-to-use templates for new services. | -| [Telstra](https://www.telstra.com.au) | [@kiranpatel11](https://github.com/kiranpatel11), [JasonC](https://github.com/JasonC17) | Primary usage: software catalog and templates
Emerging usage : TechDocs, Explore Ecosystem, TechRadar, etc | -| [Mosaico](https://www.mosaico.com.br/) | [Wédney Yuri](https://github.com/wedneyyuri),[@tino.milton](https://github.com/miltonjacomini) | A centralized service catalog of our documentation for our service engineers. | -| [Mox Bank](https://www.mox.com/) | [Nick Laqua](https://github.com/nick-laqua-dragon), [Gauthier Roebroeck](https://github.com/gauthier-roebroeck-mox) | "Single pane of glass" developer portal for providing a best-in-class developer experience to our product teams and making Mox the best tech environment in Hongkong 🥰🚀 | -| [Keyloop](https://www.keyloop.com/) | [Andre Wanlin](https://github.com/awanlin) | Future-motive Developer Portal to help our teams create technology to make everything about buying and owning a car better. 🚗 | -| [Simply Business](https://sbtech.simplybusiness.co.uk/) | [@addersuk](https://github.com/addersuk), [@LightningStairs](https://github.com/LightningStairs), [@punitcse](https://github.com/punitcse), [@moltenice](https://github.com/moltenice) | Central developer portal to access everything a developer needs such as docs, internal service catalog, and the ability to quickly create a new service from a template. Internally developed Backstage plugins allow us to customise the experience to how we work. | -| [Overwolf](https://www.overwolf.com) | [@tomwolfgang](https://github.com/tomwolfgang) | Dev portal - software catalog, tech-docs, scaffolding | -| [Hotmart](https://www.hotmart.com) | [@fabioviana-hotmart](https://github.com/fabioviana-hotmart) | The main Developers Portal to centralize docs, applications and technical metrics. | -| [EF Education First](https://www.ef.com) | [Daan Boerlage](https://github.com/runebaas), [Rafał Nowosielski](https://github.com/rnowosielski) | Our developer portal - primarily used for cataloging and scaffolding with the ambition to expand with more feature adoptions over time | -| [Power Home Remodeling](https://www.techatpower.com) | [Ben Langfeld](https://github.com/benlangfeld) | Developer portal to our internal services, build on open-source software (including Kubernetes) in our own datacenters. Our Portal allows our team members to navigate inherant complexity and standardise. | -| [Livspace](https://www.livspace.com) | [Praveen Kumar](https://github.com/praveen-livspace) | Developer portal, service catalog, tech docs, API docs and plugins | -| [Just Eat Takeaway](https://www.justeattakeaway.com) | [Kim Wilson](https://github.com/kwilson541) | Our developer portal which centralises applications, reduces cognitive load and provides teams insights. | -| [Hopin](https://hopin.com) | [Vladimir Glafirov](https://github.com/vglafirov), [Chloe Lee](https://github.com/msfuko) | Developer portal to streamline the development practices. Integrated with service catalog, software templates, application monitoring, tech docs and plugins. | -| [HBO Max](https://hbomax.com) | [@mdb](https://github.com/mdb), [@nesta219](https://github.com/nesta219), [@nmische](https://github.com/nmische), [@hbomark](https://github.com/hbomark) | Developer portal hosting service catalog and API documentation, as well as cloud infrastructure details, operational visibility tools, and a custom plugin for browsing notable platform change events, such as deployments and configuration updates. | -| [RCHLO](https://www.riachuelo.com.br) & [MIDWAY](https://www.midway.com.br) | [@marcosborges](https://github.com/marcosborges), [@defaultbr](https://github.com/defaultbr) | Self-Service Platform | -| [HP Inc](https://www.hp.com) | [Damon Kaswell](https://github.com/dekoding) | DevEx engagement hub (dev portal: docs, standards, Q&A) and extensive assets catalog (APIs, services, code, data, etc.) for the pan-HP internal developer community. | -| [VMware](https://www.vmware.com) | [@mpriamo](https://github.com/mpriamo), [@krisapplegate](https://github.com/krisapplegate) | Part of [Tanzu Application Platform](https://docs.vmware.com/en/VMware-Tanzu-Application-Platform/index.html) offering; internal developer portal | -| [Ualá](https://www.uala.com.ar/) | [Santiago Bernal](https://github.com/sabernal) | Initial work being done to centralize documentation for all our microservices and APIs, as well as scaffolding new services and tracking code quality | -| [IKEA IT AB](https://www.ingka.com) | [@bjornramberg](https://github.com/bjornramberg), [@supriyachitale](https://github.com/supriyachitale) | Supporting engineers at scale with self serve access and connecting the dots of our engineering platform and services, enabling product teams to move faster and go further, and unleashing innovation, reuse and co-creation across the organisation. | +| Organization | Contact | Description of Use | +| ------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [Spotify](https://www.spotify.com) | [@leemills83](https://github.com/leemills83) | Main interface towards all of Spotify's infrastructure and technical documentation. | +| [bol.com](https://www.bol.com) | [@sagacity](https://github.com/sagacity) | Initial work being done to unify platform tooling. | +| [DFDS](https://www.dfds.com) | [@carlsendk](https://github.com/carlsendk) | V2 self-service platform. | +| [Roadie](https://roadie.io) | [@dtuite](https://github.com/dtuite) | Hosted, managed Backstage with easy set-up | +| [Roku](https://www.roku.com) | [@timurista](https://github.com/timurista) | Initial work on Cloud engineering service platform. | +| [SDA SE](https://sda.se) | [@dschwank](https://github.com/dschwank), [@iammnils](https://github.com/iammnils) | Central place for developing and sharing services in our insurance ecosystem. | +| [H-E-B](https://www.heb.com) | [@german-j-rodriguez](https://github.com/german-j-rodriguez) | Initial work on Engineering Portal service platform. | +| [American Airlines](https://www.aa.com) | [@paulpach](https://github.com/paulpach) | Central place for developers to develop and maintain applications | +| [Kiwi.com](https://kiwi.com) | [@aexvir](https://github.com/aexvir) | Replacing the frontend of [The Zoo](https://github.com/kiwicom/the-zoo), their service registry. | +| [Voi](https://www.voiscooters.com/) | [@K-Phoen](https://github.com/K-Phoen) | Developer portal, main gateway to our infrastructure, documentation and internal tooling. | +| [Talkdesk](https://www.talkdesk.com) | [@jaime-talkdesk](https://github.com/jaime-talkdesk) | Initial work for Engineering Portal and Self Provisioning to R&D | +| [Wealthsimple](https://www.wealthsimple.com) | [@andrewthauer](https://github.com/andrewthauer) | Developer portal, service catalog, documentation and tooling | +| [Grab](https://www.grab.com) | [@althafh](https://github.com/althafh) | Initial work as a unified interface for all of Grab's internal tooling | +| [Telenor Sweden](https://www.telenor.se) | [@O5ten](https://github.com/O5ten) | Building a developer portal for scaffolding projects towards our unified build environment and microservice stacks | +| [Fiverr](https://www.fiverr.com) | [@nirga](https://github.com/nirga) | Unifying separate tools that developers are using today (i.e. monitoring, dead letter queues management, etc.) into a single platform. | +| [Zalando SE](https://www.zalando.de) | [@leviferreira](https://github.com/leviferreira) | Building V2 of the Internal Development Portal. | +| [LegalZoom](https://legalzoom.com) | [@backjo](https://github.com/backjo) | Developer portal - hub for all engineering projects and metadata. | +| [Expedia Group](https://www.expediagroup.com) | [Mike Turner](mailto:miturner@expediagroup.com), [Sneha Kumar](mailto:snkumar@expediagroup.com), [@guillermomanzo](https://github.com/guillermomanzo), [Erik Lindgren](https://github.com/lindgren) | EG Common Developer Toolkit | +| [Paddle.com](https://paddle.com) | [Ioannis Georgoulas](https://github.com/geototti21) | Developer portal (Tech Docs, Service Catalog, Internal Tooling), we use vanilla Backstage FE and custom BE implementation in Go | +| [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/) | [Jim Haughwout](https://github.com/JimHaughwout) | 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. | +| [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. | +| [Netflix](https://www.netflix.com/) | [bleathem](https://github.com/bleathem) | Our Backstage implementation will be the front door to a unified experience connecting our internal platform products across important workflows with integrated knowledge and support. | +| [b.well](https://www.icanbwell.com/) | [Jacob Rosales](https://github.com/jrosales) | Foundation for our engineering portal and cloud insights. | +| [PagerDuty](https://www.pagerduty.com/) | [Mark Shaw](https://github.com/markshawtoronto) | Developer portal, initially focused on software templates and tech-docs. | +| [MoonShiner](https://moonshiner.at) | [Fabian Hippmann](https://github.com/FabianHippmann) | Developer portal - helps us keep track of our customer projects, onboard new developers & improve our development process 🌕🚀🧑‍🚀 | +| [FundApps](https://www.fundapps.co/) | [Elliot Greenwood](https://github.com/egnwd) | Developer Portal - A place for us to keep track of our projects and documentation for all services and processes | +| [DAZN](https://dazn.com/) | [Lou Bichard](https://twitter.com/loujaybee), [Marco Crivellaro](https://github.com/crivetechie), [Alex Hollerith](mailto:alex.hollerith@dazn.com) | Ingesting all of DAZN's repos for the catalog, migrating our internal platform apps (pull request boards, release information, inner source marketplace etc) to Backstage plugins (where applicable). | +| [HelloFresh](https://www.hellofresh.de/) | [@iammuho](https://github.com/iammuho), [@ElenaForester](https://github.com/ElenaForester), [@diegomarangoni](https://github.com/diegomarangoni) | Our developer portal at HelloFresh - Spread across an organisation of 500+ engineers globally. | +| [FactSet](https://www.factset.com/) | [@kuangp](https://github.com/kuangp) | Developer portal to provide discoverability to all internal components, APIs, documentation, and scaffold templates with integrations to our internal infrastructure tools. | +| [Workrise](https://www.workrise.com/) | [Michael Rode](https://github.com/michaelrode) | Developer portal, main gateway to our infrastructure, documentation and internal tooling. | +| [RedVentures](https://www.redventures.com/) | [Chris Diaz](https://github.com/codingdiaz) | Developer portal that brings everything an engineer needs to provide value into a single pane of glass. | +| [MavTek](https://www.mavtek.com/) | [@fgascon](https://github.com/fgascon) | Developer portal focused on standardizing practices, centralizing documentation and streamlining developer practices. | +| [QuintoAndar](https://www.quintoandar.com.br/) | [@quintoandar](https://github.com/quintoandar) | Developer portal, services catalog and centralization of service metrics. | +| [empathy.co](https://empathy.co/) | [@guillermotti](https://github.com/guillermotti) | Developer portal for tech docs, service catalog, plugin discovery and much more. | +| [creditas.com](https://creditas.com/) | [@aureliosaraiva](https://github.com/aureliosaraiva) [@Creditas](https://github.com/creditas) | Centralization of all services, standards, documentation, etc. We started the deployment process. | +| [Prisjakt](https://www.prisjakt.nu) / [PriceSpy](https://pricespy.co.uk) | [@kennylindahl](https://github.com/kennylindahl) | Internal developer portal - Documentation, scaffolding, software catalog, TechRadar, Gitlab org data integration | +| [Powerspike](https://powerspike.tv/) | [@trelore](https://github.com/trelore) | Developer portal for documentation of core libraries and repositories. | +| [2U](https://2u.com) | [Andrew Thal](https://github.com/athal7) | Development team home-base, promoting service discoverability, resource dependencies, and tech radar | +| [Taxfix](https://taxfix.de/) | [Sami Ur Rehman](https://github.com/samiurrehman92) | Developer's portal with software catalog at it's core. Hosts API Specs, Tech Docs, Tech Radar and some custom plugins. | +| [Busuu](https://busuu.com/) | [Adam Tester](https://github.com/adamtester) | Developer portal with service catalog, API docs, Event docs, service templating, and cost insights. | +| [Loadsmart](https://loadsmart.com/) | [Loadsmart](https://github.com/loadsmart) | Improve services visibility and operations for service owners and developers. | +| [Monzo](https://monzo.com/) | [@WillSewell](https://github.com/WillSewell), [@joechrisellis](https://github.com/joechrisellis) | Developer portal showing metadata and docs for over 2000 microservices. We have built a number of plugins such as a UI for our system to measure [software excellence](https://monzo.com/blog/2021/09/15/how-we-measure-software-excellence), and a UI to show deployment and config change events. | +| [Vaimo](https://www.vaimo.com) | [@vaimo-magnus](https://github.com/vaimo-magnus) | Developer Portal for our developers at Vaimo, currently docs and self-service towards our internal PaaS based on k8s. Plans to extend the catalog into Projects, Environments etc | +| [Wayfair](https://www.wayfair.com) | [@fransan](https://github.com/fransan), [@errskipower](https://github.com/errskipower), [@hrrs](https://github.com/hrrs) | Developer portal for service catalog, technical documentation, and APIs. | +| [CircleHD](https://www.circlehd.com) | [@circlehddev](https://github.com/circlehddev) | Developer Portal for internal dev team across the globe | +| [CastDesk](https://castdesk.com) | [@circlehddev](https://github.com/circlehddev) | Developer Portal for internal dev team across the globe | +| [Santagostino](https://santagostino.it) | [@santagostino](https://github.com/santagostino) | Developer portal, gateway to our infrastructure, documentation, service catalog and internal tooling. | +| [Peak](https://peak.ai) | [Luke Beamish](https://github.com/lukebeamish-peak) | Developer portal for all internal engineers to access documentation and tooling. | +| [Gelato](https://gelato.com/) | [Dmitry Makarenko](https://github.com/dmitry-makarenko-gelato) | Developer portal: documentation, service templates, org structure, service catalog, plugins for integration with internal and third-party systems🚀. | +| [GoCardless](https://gocardless.com/) | [James Turley](https://github.com/tragiclifestories) | Developer portal: documentation, service templates, org structure, service catalog, plugins for integration with internal systems. | +| [Box](https://www.box.com) | [@kielosz](https://github.com/kielosz), [@jluk-box](https://github.com/jluk-box), [@ptychu](https://github.com/ptychu), [@alexrybch](https://github.com/alexrybch), [@szubster](https://github.com/szubster) | Developer portal for service catalog, integration with internal systems, new service onboarding. | +| [Bazaarvoice](https://www.bazaarvoice.com) | [@niallmccullagh](https://github.com/niallmccullagh) | Developer portal for service catalog and scaffolds, publishing Github docs and API documentation, visualising our internal tech radar and our product engineering org structure. | +| [Krateo PlatformOps](https://www.krateo.io) | [@projectkerberus](https://github.com/projectkerberus) | A multi-cloud control plane to create, manage and deploy any kind of resource easily and centrally via a Developer Portal that centralizes via a self-service catalog the templating and ownership of services, the available documentation, the overview of the components that compose an entire domain and all the data of the service lifecycle. | +| [Adevinta](https://www.adevinta.com) | [Ray Sinnema](https://github.com/RemonSinnema) | Showcase shared services to our internal customers. | +| [Splunk](https://www.splunk.com) | [@tonytamsf](https://github.com/tonytamsf) | Developer portal as a centralized place to find people, services, documentation, escalation policies and give bravos. This portal is also being used as a centralized search engine for engineering specific documentation. | +| [SoundCloud](https://www.soundcloud.com) | [Julio Zynger](https://github.com/julioz) | Developer portal as a [humane registry](https://martinfowler.com/bliki/HumaneRegistry.html) for the organization: catalog of people, services, documentation, feature toggles, escalation policies, etc. | +| [Volvofinans Bank](https://www.volvofinans.se) | [Johan Hammar](https://github.com/johanhammar) | Developer portal enabling engineers to manage and explore software and documentation. | +| [Palo Alto Networks](https://www.paloaltonetworks.com) | [Jeremy Guarini](https://github.com/jeremyguarini), [Brian Lomeland](https://github.com/bbbmmmlll), [Palo Alto Networks](https://github.com/PaloAltoNetworks) | Developer portal, service catalog, documentation and tooling | +| [Signal Iduna Group](https://www.signal-iduna.de/) | [Jonas Thomsen](https://github.com/JoThomsen) | Developer Portal, documentation, monitoring, service catalog for our insurance ecosystem | +| [Tradeshift](https://www.tradeshift.com/) | [Soren Mathiasen](https://github.com/sorenmat) | Developer Portal: documentation, monitoring, service templates, service catalog for our micro services | +| [Unity](https://unity.com) | [Ted Cordery](https://github.com/TeddyBallGame) | A centralized service catalog with documentation for our service engineers. | +| [PicPay](https://www.picpay.com) | [Luis Baroni](https://github.com/lcsbaroni), [Renata Poluceno](https://github.com/renatapoluceno), [PicPay](https://github.com/picpay) | Developer portal for building services throught templates, service catalog with ownership of services, documentation and metrics providing autonomy and visibility for all. | +| [Epic Games](https://www.epicgames.com) | [Brian Jung](https://github.com/brian-at-epic), [Jeff Goldian](https://github.com/jeffgoldian-Epic) | Developer Portal: Service Catalog, Documentation, Software Templates and more making our internal teams' lives easier! | +| [Globo](https://globo.com) | [Carlos Gusmão](https://github.com/caeugusmao), [Guilherme Vierno](https://github.com/vierno), [Denis Aoki](https://github.com/dnsaoki2), [Maycon Dionisio](https://github.com/MayconDionisio), | Reduce the friction of accessing the information engineers need about Globo's digital services through a coherent and centralized experience. | +| [QBE](https://www.qbe.com/) | [Daniel Steel](https://github.com/danielsteelqbe), [Pete Jespers](https://github.com/petejespersqbe) | Developer portal allowing our global teams to explore and create applications, documentation and cloud infrastructure easily and quickly 🚀 | +| [LogMeIn](https://www.logmein.com) | [Lorenzo Orsatti](https://github.com/lorsatti) | Improve onboarding experience of new developers. Discover faster and painlessly developer documentation, API definitions and team information. Provide useful dev metrics in a central place. Provide easy-to-use templates for new services. | +| [Telstra](https://www.telstra.com.au) | [@kiranpatel11](https://github.com/kiranpatel11), [JasonC](https://github.com/JasonC17) | Primary usage: software catalog and templates
Emerging usage : TechDocs, Explore Ecosystem, TechRadar, etc | +| [Mosaico](https://www.mosaico.com.br/) | [Wédney Yuri](https://github.com/wedneyyuri),[@tino.milton](https://github.com/miltonjacomini) | A centralized service catalog of our documentation for our service engineers. | +| [Mox Bank](https://www.mox.com/) | [Nick Laqua](https://github.com/nick-laqua-dragon), [Gauthier Roebroeck](https://github.com/gauthier-roebroeck-mox) | "Single pane of glass" developer portal for providing a best-in-class developer experience to our product teams and making Mox the best tech environment in Hongkong 🥰🚀 | +| [Keyloop](https://www.keyloop.com/) | [Andre Wanlin](https://github.com/awanlin) | Future-motive Developer Portal to help our teams create technology to make everything about buying and owning a car better. 🚗 | +| [Simply Business](https://sbtech.simplybusiness.co.uk/) | [@addersuk](https://github.com/addersuk), [@LightningStairs](https://github.com/LightningStairs), [@punitcse](https://github.com/punitcse), [@moltenice](https://github.com/moltenice) | Central developer portal to access everything a developer needs such as docs, internal service catalog, and the ability to quickly create a new service from a template. Internally developed Backstage plugins allow us to customise the experience to how we work. | +| [Overwolf](https://www.overwolf.com) | [@tomwolfgang](https://github.com/tomwolfgang) | Dev portal - software catalog, tech-docs, scaffolding | +| [Hotmart](https://www.hotmart.com) | [@fabioviana-hotmart](https://github.com/fabioviana-hotmart) | The main Developers Portal to centralize docs, applications and technical metrics. | +| [EF Education First](https://www.ef.com) | [Daan Boerlage](https://github.com/runebaas), [Rafał Nowosielski](https://github.com/rnowosielski) | Our developer portal - primarily used for cataloging and scaffolding with the ambition to expand with more feature adoptions over time | +| [Power Home Remodeling](https://www.techatpower.com) | [Ben Langfeld](https://github.com/benlangfeld) | Developer portal to our internal services, build on open-source software (including Kubernetes) in our own datacenters. Our Portal allows our team members to navigate inherant complexity and standardise. | +| [Livspace](https://www.livspace.com) | [Praveen Kumar](https://github.com/praveen-livspace) | Developer portal, service catalog, tech docs, API docs and plugins | +| [Just Eat Takeaway](https://www.justeattakeaway.com) | [Kim Wilson](https://github.com/kwilson541) | Our developer portal which centralises applications, reduces cognitive load and provides teams insights. | +| [Hopin](https://hopin.com) | [Vladimir Glafirov](https://github.com/vglafirov), [Chloe Lee](https://github.com/msfuko) | Developer portal to streamline the development practices. Integrated with service catalog, software templates, application monitoring, tech docs and plugins. | +| [HBO Max](https://hbomax.com) | [@mdb](https://github.com/mdb), [@nesta219](https://github.com/nesta219), [@nmische](https://github.com/nmische), [@hbomark](https://github.com/hbomark) | Developer portal hosting service catalog and API documentation, as well as cloud infrastructure details, operational visibility tools, and a custom plugin for browsing notable platform change events, such as deployments and configuration updates. | +| [RCHLO](https://www.riachuelo.com.br) & [MIDWAY](https://www.midway.com.br) | [@marcosborges](https://github.com/marcosborges), [@defaultbr](https://github.com/defaultbr) | Self-Service Platform | +| [HP Inc](https://www.hp.com) | [Damon Kaswell](https://github.com/dekoding) | DevEx engagement hub (dev portal: docs, standards, Q&A) and extensive assets catalog (APIs, services, code, data, etc.) for the pan-HP internal developer community. +| [VMware](https://www.vmware.com) | [@mpriamo](https://github.com/mpriamo), [@krisapplegate](https://github.com/krisapplegate) | Part of [Tanzu Application Platform](https://docs.vmware.com/en/VMware-Tanzu-Application-Platform/index.html) offering; internal developer portal | +| [Ualá](https://www.uala.com.ar/) | [Santiago Bernal](https://github.com/sabernal) | Initial work being done to centralize documentation for all our microservices and APIs, as well as scaffolding new services and tracking code quality | +| [IKEA IT AB](https://www.ingka.com) | [@bjornramberg](https://github.com/bjornramberg), [@supriyachitale](https://github.com/supriyachitale) | Supporting engineers at scale with self serve access and connecting the dots of our engineering platform and services, enabling product teams to move faster and go further, and unleashing innovation, reuse and co-creation across the organisation. | From 48bf5cedc51b1cb3837daab8ae6d0edfb837adf2 Mon Sep 17 00:00:00 2001 From: Karan Shah Date: Tue, 8 Feb 2022 13:39:30 +0000 Subject: [PATCH 043/383] Change the config changes on the test too Signed-off-by: Karan Shah --- plugins/airbrake-backend/src/service/router.test.ts | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/plugins/airbrake-backend/src/service/router.test.ts b/plugins/airbrake-backend/src/service/router.test.ts index d4d86722a8..60c1f52126 100644 --- a/plugins/airbrake-backend/src/service/router.test.ts +++ b/plugins/airbrake-backend/src/service/router.test.ts @@ -33,10 +33,8 @@ describe('createRouter', () => { jest.resetAllMocks(); const config = new ConfigReader({ - integrations: { - airbrake: { - apiKey: 'fakeApiKey', - }, + airbrake: { + apiKey: 'fakeApiKey', }, }); airbrakeConfig = extractAirbrakeConfig(config); From dc9fd0acf9b9333212ac3152e5aba2734863302e Mon Sep 17 00:00:00 2001 From: Richard Luong Date: Tue, 8 Feb 2022 17:04:20 +0100 Subject: [PATCH 044/383] Use Avatar instead of custom svg icon Signed-off-by: Richard Luong --- .changeset/fresh-ears-knock.md | 5 ++++ plugins/shortcuts/src/ShortcutIcon.tsx | 41 +++++++++++--------------- 2 files changed, 23 insertions(+), 23 deletions(-) create mode 100644 .changeset/fresh-ears-knock.md diff --git a/.changeset/fresh-ears-knock.md b/.changeset/fresh-ears-knock.md new file mode 100644 index 0000000000..1e8b33fd03 --- /dev/null +++ b/.changeset/fresh-ears-knock.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-shortcuts': minor +--- + +Use Avatar instead of custom icon for ShortcutIcon diff --git a/plugins/shortcuts/src/ShortcutIcon.tsx b/plugins/shortcuts/src/ShortcutIcon.tsx index 94a894fcb0..be78928452 100644 --- a/plugins/shortcuts/src/ShortcutIcon.tsx +++ b/plugins/shortcuts/src/ShortcutIcon.tsx @@ -15,33 +15,28 @@ */ import React from 'react'; +import { makeStyles } from '@material-ui/core/styles'; +import Avatar from '@material-ui/core/Avatar'; type Props = { text: string; color: string; }; -export const ShortcutIcon = ({ text, color }: Props) => { - const size = 28; - return ( - - - - {text} - - - ); +const useStyles = makeStyles(theme => ({ + avatar: (props: Props) => ({ + color: theme.palette.getContrastText(props.color), + backgroundColor: props.color, + width: 28, + height: 28, + fontWeight: 'bold', + fontSize: 13, + filter: 'contrast(150%) brightness(1.4)', + }), +})); + +export const ShortcutIcon = (props: Props) => { + const classes = useStyles(props); + + return {props.text}; }; From 821bebdff781fcccb5380d5577a565f90d3fa9cd Mon Sep 17 00:00:00 2001 From: Himanshu Mishra Date: Mon, 7 Feb 2022 16:21:09 +0100 Subject: [PATCH 045/383] complete instructions on setting up custom homepage Signed-off-by: Himanshu Mishra --- .../getting-started/sidebar-with-catalog.png | Bin 0 -> 18065 bytes .../sidebar-without-catalog.png | Bin 0 -> 16689 bytes .../getting-started/simple-homepage.png | Bin 0 -> 79587 bytes docs/getting-started/app-custom-theme.md | 69 -------- docs/getting-started/homepage.md | 150 ++++++++++++++++++ ...2022-01-25-backstage-homepage-templates.md | 2 +- microsite/sidebars.json | 3 +- 7 files changed, 153 insertions(+), 71 deletions(-) create mode 100644 docs/assets/getting-started/sidebar-with-catalog.png create mode 100644 docs/assets/getting-started/sidebar-without-catalog.png create mode 100644 docs/assets/getting-started/simple-homepage.png create mode 100644 docs/getting-started/homepage.md diff --git a/docs/assets/getting-started/sidebar-with-catalog.png b/docs/assets/getting-started/sidebar-with-catalog.png new file mode 100644 index 0000000000000000000000000000000000000000..d80346c21189e3905a96f3ff67fc6d87ee8734ac GIT binary patch literal 18065 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 Rx*y)$RhCzmE0r-1{U5w- literal 0 HcmV?d00001 diff --git a/docs/assets/getting-started/sidebar-without-catalog.png b/docs/assets/getting-started/sidebar-without-catalog.png new file mode 100644 index 0000000000000000000000000000000000000000..bfeab13235d1961443cf547629c7c89b54329783 GIT binary patch literal 16689 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©pEI=z_AO~w7$J0dl%;cu73>Q{TiPF(haM>C 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 RMuC6Zw;6BE*ld6De*iqZpGW`z literal 0 HcmV?d00001 diff --git a/docs/getting-started/app-custom-theme.md b/docs/getting-started/app-custom-theme.md index fc68008ae8..b9b74f92dd 100644 --- a/docs/getting-started/app-custom-theme.md +++ b/docs/getting-started/app-custom-theme.md @@ -253,72 +253,3 @@ const LogoFull = () => { return ; }; ``` - -## Custom Homepage - -In addition to a custom theme, a custom logo, you can also customize the -homepage of your app. To do that we need to go through a few steps. - -### Setting up the Home Page - -1. Create a Home Page Component that will be used for composition. - -`packages/app/src/components/home/HomePage.tsx` - -```tsx -import React from 'react'; - -export const HomePage = () => { - return { - /* TODO: Compose a Home Page here */ - }; -}; -``` - -2. Add a route where the homepage will live, presumably `/`. - -`packages/app/src/App.tsx` - -```tsx -import { HomepageCompositionRoot } from '@backstage/plugin-home'; -import { HomePage } from './components/home/HomePage'; - -// ... -}> - -; -// ... -``` - -### Composing your Home Page - -Composing a Home Page is no different from creating a regular React Component, -i.e. the App Integrator is free to include whatever content they like. However, -there are components developed with the Home Page in mind. If you are looking -for components to use when composing your homepage, you can take a look at the -[collection of Homepage components](https://backstage.io/?path=/story/plugins-home-components) -in storybook. If you don't find a component that suits your needs but want to -contribute, check the -[Contributing documentation](https://github.com/backstage/backstage/blob/master/plugins/home/README.md#contributing). - -> If you want to use one of the available homepage templates you can find the -> [templates](https://backstage.io/storybook/?path=/story/plugins-home-templates) -> in the storybook under the "Home" plugin. And if you would like to contribute -> a template, please see the -> [Contributing documentation](https://github.com/backstage/backstage/blob/master/plugins/home/README.md#contributing) - -```tsx -import React from 'react'; -import Grid from '@material-ui/core/Grid'; -import { HomePageCompanyLogo } from '@backstage/plugin-home'; - -export const HomePage = () => { - return ( - - - - - - ); -}; -``` diff --git a/docs/getting-started/homepage.md b/docs/getting-started/homepage.md new file mode 100644 index 0000000000..175d539d68 --- /dev/null +++ b/docs/getting-started/homepage.md @@ -0,0 +1,150 @@ +--- +id: homepage +title: Backstage Home Page - Setup and Customization +description: Documentation on setting up and customizing Backstage homepage +--- + +## Home Page + +Having a good Backstage home page can significantly improve the discoverability of the platform. You want your users to find all the things they need right from the home page and never have to remember direct URLs in Backstage. The [Home plugin](https://github.com/backstage/backstage/tree/master/plugins/home) introduces a system for composing a home page for Backstage in order to surface relevant info and provide convenient shortcuts for common tasks. It's designed with composability in mind with an open ecosystem that allows anyone to contribute with any component, to be included in any home page. + +For App Integrators, the system is designed to be composable to give total freedom in designing a Home Page that suits the needs of the organization. From the perspective of a Component Developer who wishes to contribute with building blocks to be included in Home Pages, there's a convenient interface for bundling the different parts and exporting them with both error boundary and lazy loading handled under the surface. + +Let's get started by installing the home plugin and creating a simple home page for your Backstage app. + +### Setup home page + +#### 1. Install the plugin + +``` +# From the Backstage repository root +cd packages/app +yarn add @backstage/plugin-home +``` + +#### 2. Create a new HomePage component + +Inside your `packages/app`, create a new file where our new Home Page component is going to live. Create `packages/app/src/components/home/HomePage.tsx` with the following initial code + +```tsx +import React from 'react'; + +export const HomePage = () => { + /* We will shortly compose a pretty Home Page here. */ + return

Welcome to Backstage!

; +}; +``` + +#### 3. Update router for the root `/` route + +If you don't have a home page already, most likely you have a redirect setup to use the Catalog home page as a home page. + +Inside your `packages/app/src/App.tsx`, look for + +```tsx +const routes = ( + + +``` + +Let's replace the `` line and use the new component we created in the previous step as the new home page. + +```diff +// File: packages/app/src/App.tsx + ++ import { HomepageCompositionRoot } from '@backstage/plugin-home'; ++ import { HomePage } from './components/home/HomePage'; + +// ... +const routes = ( + +- ++ }> ++ ++ +// ... + +) +``` + +### 4. Update sidebar items + +Let's update the route for "Home" in the Backstage sidebar to point to the new home page. We'll also add a Sidebar item to quickly open Catalog. + + + + + + + + +
Sidebar without Catalog + Sidebar with Catalog +
BeforeAfter
+ +The code for the Backstage sidebar is most likely inside your [`packages/app/src/components/Root/Root.tsx`](https://github.com/backstage/backstage/blob/master/packages/app/src/components/Root/Root.tsx). + +Let's make the following changes + +```diff +// Other imports ++ import CategoryIcon from '@material-ui/icons/Category'; + +export const Root = ({ children }: PropsWithChildren<{}>) => ( + + + + # ... + }> + {/* Global nav, not org-specific */} +- ++ ++ + + + + + {/* End global nav */} + +``` + +That's it! You should now have _(although slightly boring)_ a home page! + +Screenshot of a blank homepage + +In the next steps, we will make it interesting and useful! There is a default home page template ([storybook link](https://backstage.io/storybook/?path=/story/plugins-home-templates--default-template)) which we will use to set up our home page. + +#### 2. Use the default template + +### Composing your Home Page + +Composing a Home Page is no different from creating a regular React Component, +i.e. the App Integrator is free to include whatever content they like. However, +there are components developed with the Home Page in mind. If you are looking +for components to use when composing your homepage, you can take a look at the +[collection of Homepage components](https://backstage.io/?path=/story/plugins-home-components) +in storybook. If you don't find a component that suits your needs but want to +contribute, check the +[Contributing documentation](https://github.com/backstage/backstage/blob/master/plugins/home/README.md#contributing). + +> If you want to use one of the available homepage templates you can find the +> [templates](https://backstage.io/storybook/?path=/story/plugins-home-templates) +> in the storybook under the "Home" plugin. And if you would like to contribute +> a template, please see the +> [Contributing documentation](https://github.com/backstage/backstage/blob/master/plugins/home/README.md#contributing) + +```tsx +import React from 'react'; +import Grid from '@material-ui/core/Grid'; +import { HomePageCompanyLogo } from '@backstage/plugin-home'; + +export const HomePage = () => { + return ( + + + + + + ); +}; +``` diff --git a/microsite/blog/2022-01-25-backstage-homepage-templates.md b/microsite/blog/2022-01-25-backstage-homepage-templates.md index 7ed5ee92e3..8ca8b7373e 100644 --- a/microsite/blog/2022-01-25-backstage-homepage-templates.md +++ b/microsite/blog/2022-01-25-backstage-homepage-templates.md @@ -33,7 +33,7 @@ _Example of the default homepage template in Backstage Storybook_ ## How to get started -To get started, you first need to set up your homepage plugin in the app if you have not already, then you can move on to composing your homepage. You can find our step-by-step documentation of how to do this under the [App Configuration - Customize the look-and-feel of your App documentation](https://backstage.io/docs/getting-started/app-custom-theme#custom-homepage). You can also access the [Backstage UI Kit in Figma](https://www.figma.com/file/nUaAw56hTgC0RIOYkuLSrB/Backstage-Design-System?node-id=2185%3A2978) to duplicate your own version and play around with a fitting homepage for your own organization. +To get started, you first need to set up your homepage plugin in the app if you have not already, then you can move on to composing your homepage. You can find our step-by-step documentation of how to do this under the [App Configuration - Customize the look-and-feel of your App documentation](https://backstage.io/docs/getting-started/homepage). You can also access the [Backstage UI Kit in Figma](https://www.figma.com/file/nUaAw56hTgC0RIOYkuLSrB/Backstage-Design-System?node-id=2185%3A2978) to duplicate your own version and play around with a fitting homepage for your own organization. ![Example of homepage components in the Backstage UI Kit in Figma](assets/22-01-25/homepage-components-figma.png) _Example of the homepage components in the Backstage UI Kit in Figma_ diff --git a/microsite/sidebars.json b/microsite/sidebars.json index cb7c0d5036..5369182013 100644 --- a/microsite/sidebars.json +++ b/microsite/sidebars.json @@ -22,7 +22,8 @@ "label": "App configuration", "ids": [ "getting-started/configure-app-with-plugins", - "getting-started/app-custom-theme" + "getting-started/app-custom-theme", + "getting-started/homepage" ] }, "getting-started/keeping-backstage-updated", From e0ca377789da85a0e25bcc6ecec80581bc81416b Mon Sep 17 00:00:00 2001 From: Himanshu Mishra Date: Mon, 7 Feb 2022 16:28:53 +0100 Subject: [PATCH 046/383] add section about the homepage template Signed-off-by: Himanshu Mishra --- docs/getting-started/homepage.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/docs/getting-started/homepage.md b/docs/getting-started/homepage.md index 175d539d68..4b48929b9a 100644 --- a/docs/getting-started/homepage.md +++ b/docs/getting-started/homepage.md @@ -112,9 +112,13 @@ That's it! You should now have _(although slightly boring)_ a home page! Screenshot of a blank homepage -In the next steps, we will make it interesting and useful! There is a default home page template ([storybook link](https://backstage.io/storybook/?path=/story/plugins-home-templates--default-template)) which we will use to set up our home page. +In the next steps, we will make it interesting and useful! -#### 2. Use the default template +### Use the default template + +There is a default home page template ([storybook link](https://backstage.io/storybook/?path=/story/plugins-home-templates--default-template)) which we will use to set up our home page. Checkout the [blog post announcement](https://backstage.io/blog/2022/01/25/backstage-homepage-templates) about the Backstage home page templates for more information. + + ### Composing your Home Page From f87a740a6a97562e9fff66412686dd7ab5ecbd6a Mon Sep 17 00:00:00 2001 From: Himanshu Mishra Date: Wed, 9 Feb 2022 10:54:51 +0100 Subject: [PATCH 047/383] keep the custom homepage section in app custom theme page Signed-off-by: Himanshu Mishra --- docs/getting-started/app-custom-theme.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/getting-started/app-custom-theme.md b/docs/getting-started/app-custom-theme.md index b9b74f92dd..526150d184 100644 --- a/docs/getting-started/app-custom-theme.md +++ b/docs/getting-started/app-custom-theme.md @@ -253,3 +253,8 @@ const LogoFull = () => { return ; }; ``` + +## Custom Home Page + +In addition to a custom theme, a custom logo, you can also customize the +homepage of your app. Read the full guide on the [next page](homepage.md). From 805f8acfd0cf45f808377384b69623818e1005ad Mon Sep 17 00:00:00 2001 From: Himanshu Mishra Date: Wed, 9 Feb 2022 10:59:54 +0100 Subject: [PATCH 048/383] `packages/app` directory Signed-off-by: Himanshu Mishra --- docs/getting-started/homepage.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/getting-started/homepage.md b/docs/getting-started/homepage.md index 4b48929b9a..cb3a43b1fd 100644 --- a/docs/getting-started/homepage.md +++ b/docs/getting-started/homepage.md @@ -24,7 +24,7 @@ yarn add @backstage/plugin-home #### 2. Create a new HomePage component -Inside your `packages/app`, create a new file where our new Home Page component is going to live. Create `packages/app/src/components/home/HomePage.tsx` with the following initial code +Inside your `packages/app` directory, create a new file where our new Home Page component is going to live. Create `packages/app/src/components/home/HomePage.tsx` with the following initial code ```tsx import React from 'react'; From d3fcf47a962a19a7e6de47731814efcf5587f00d Mon Sep 17 00:00:00 2001 From: Himanshu Mishra Date: Wed, 9 Feb 2022 11:02:54 +0100 Subject: [PATCH 049/383] docs: use Backstage application directory Signed-off-by: Himanshu Mishra --- docs/getting-started/homepage.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/getting-started/homepage.md b/docs/getting-started/homepage.md index cb3a43b1fd..c497610e6e 100644 --- a/docs/getting-started/homepage.md +++ b/docs/getting-started/homepage.md @@ -17,7 +17,7 @@ Let's get started by installing the home plugin and creating a simple home page #### 1. Install the plugin ``` -# From the Backstage repository root +# From your Backstage application directory cd packages/app yarn add @backstage/plugin-home ``` From cc274eb7baa41ff736189c9bc82eae6f32389d43 Mon Sep 17 00:00:00 2001 From: Himanshu Mishra Date: Wed, 9 Feb 2022 11:49:28 +0100 Subject: [PATCH 050/383] add pre-reqs and expectations of the tutorial Signed-off-by: Himanshu Mishra --- docs/getting-started/homepage.md | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/docs/getting-started/homepage.md b/docs/getting-started/homepage.md index c497610e6e..87cf741b15 100644 --- a/docs/getting-started/homepage.md +++ b/docs/getting-started/homepage.md @@ -10,7 +10,19 @@ Having a good Backstage home page can significantly improve the discoverability For App Integrators, the system is designed to be composable to give total freedom in designing a Home Page that suits the needs of the organization. From the perspective of a Component Developer who wishes to contribute with building blocks to be included in Home Pages, there's a convenient interface for bundling the different parts and exporting them with both error boundary and lazy loading handled under the surface. -Let's get started by installing the home plugin and creating a simple home page for your Backstage app. +At the end of this tutorial, you can expect: + +- Your Backstage app to have a dedicated home page instead of Software Catalog. +- Understand the composability of home page and how to start customizing it for your own organization. + +### Prerequisites + +Before we begin, make sure + +- You have created your own standalone Backstage app using [`@backstage/create-app`](index.md#create-your-backstage-app) and not using a fork of the [backstage](https://github.com/backstage/backstage) repository. +- You do not have an existing home page, and by default you are redirected to Software Catalog when you open Backstage. + +Now, let's get started by installing the home plugin and creating a simple home page for your Backstage app. ### Setup home page @@ -118,7 +130,7 @@ In the next steps, we will make it interesting and useful! There is a default home page template ([storybook link](https://backstage.io/storybook/?path=/story/plugins-home-templates--default-template)) which we will use to set up our home page. Checkout the [blog post announcement](https://backstage.io/blog/2022/01/25/backstage-homepage-templates) about the Backstage home page templates for more information. - + ### Composing your Home Page From 15a87dd83278e4667794399b7dc8918118b55a4d Mon Sep 17 00:00:00 2001 From: Karan Shah Date: Wed, 9 Feb 2022 11:17:38 +0000 Subject: [PATCH 051/383] Added a config.d.ts Signed-off-by: Karan Shah --- plugins/airbrake-backend/config.d.ts | 25 +++++++++++++++++++ plugins/airbrake-backend/package.json | 3 ++- .../src/config/ExtractAirbrakeConfig.ts | 17 +++---------- plugins/airbrake-backend/src/config/index.ts | 2 +- 4 files changed, 32 insertions(+), 15 deletions(-) create mode 100644 plugins/airbrake-backend/config.d.ts diff --git a/plugins/airbrake-backend/config.d.ts b/plugins/airbrake-backend/config.d.ts new file mode 100644 index 0000000000..8787d2c94e --- /dev/null +++ b/plugins/airbrake-backend/config.d.ts @@ -0,0 +1,25 @@ +/* + * Copyright 2021 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export interface Config { + /** Configuration options for the Airbrake plugin */ + airbrake?: { + /** + * The API Key to authenticate requests. More details on how to get this here: https://airbrake.io/docs/api/#authentication + */ + apiKey: string; + }; +} diff --git a/plugins/airbrake-backend/package.json b/plugins/airbrake-backend/package.json index 0ad55d192c..22589c8f21 100644 --- a/plugins/airbrake-backend/package.json +++ b/plugins/airbrake-backend/package.json @@ -38,7 +38,8 @@ "msw": "^0.35.0" }, "files": [ - "dist" + "dist", + "config.d.ts" ], "jest": { "coverageThreshold": { diff --git a/plugins/airbrake-backend/src/config/ExtractAirbrakeConfig.ts b/plugins/airbrake-backend/src/config/ExtractAirbrakeConfig.ts index 6d6c814345..0e3d032190 100644 --- a/plugins/airbrake-backend/src/config/ExtractAirbrakeConfig.ts +++ b/plugins/airbrake-backend/src/config/ExtractAirbrakeConfig.ts @@ -14,18 +14,7 @@ * limitations under the License. */ import { Config } from '@backstage/config'; - -/** - * The Airbrake config object - * - * @public - */ -export type AirbrakeConfig = { - /** - * The API Key - */ - apiKey: string; -}; +import { AirbrakeConfig } from '.'; /** * Extract the Airbrake config from a config object @@ -34,7 +23,9 @@ export type AirbrakeConfig = { * * @param config - The config object to extract from */ -export function extractAirbrakeConfig(config: Config): AirbrakeConfig { +export function extractAirbrakeConfig( + config: Config, +): AirbrakeConfig['airbrake'] { return { apiKey: config.getString('airbrake.apiKey'), }; diff --git a/plugins/airbrake-backend/src/config/index.ts b/plugins/airbrake-backend/src/config/index.ts index 6200baca53..746d9fcafb 100644 --- a/plugins/airbrake-backend/src/config/index.ts +++ b/plugins/airbrake-backend/src/config/index.ts @@ -15,4 +15,4 @@ */ export { extractAirbrakeConfig } from './ExtractAirbrakeConfig'; -export type { AirbrakeConfig } from './ExtractAirbrakeConfig'; +export type { Config as AirbrakeConfig } from '../../config'; From 54e0073d9f12a4d2e600e90616ecf67294c35f7f Mon Sep 17 00:00:00 2001 From: Karan Shah Date: Wed, 9 Feb 2022 11:39:01 +0000 Subject: [PATCH 052/383] Make config required Signed-off-by: Karan Shah --- plugins/airbrake-backend/config.d.ts | 2 +- .../src/config/ExtractAirbrakeConfig.ts | 4 +- plugins/airbrake-backend/src/config/index.ts | 3 +- yarn.lock | 187 +++++++++++++++++- 4 files changed, 188 insertions(+), 8 deletions(-) diff --git a/plugins/airbrake-backend/config.d.ts b/plugins/airbrake-backend/config.d.ts index 8787d2c94e..ab6a7ef537 100644 --- a/plugins/airbrake-backend/config.d.ts +++ b/plugins/airbrake-backend/config.d.ts @@ -16,7 +16,7 @@ export interface Config { /** Configuration options for the Airbrake plugin */ - airbrake?: { + airbrake: { /** * The API Key to authenticate requests. More details on how to get this here: https://airbrake.io/docs/api/#authentication */ diff --git a/plugins/airbrake-backend/src/config/ExtractAirbrakeConfig.ts b/plugins/airbrake-backend/src/config/ExtractAirbrakeConfig.ts index 0e3d032190..6fc2c5e04c 100644 --- a/plugins/airbrake-backend/src/config/ExtractAirbrakeConfig.ts +++ b/plugins/airbrake-backend/src/config/ExtractAirbrakeConfig.ts @@ -23,9 +23,7 @@ import { AirbrakeConfig } from '.'; * * @param config - The config object to extract from */ -export function extractAirbrakeConfig( - config: Config, -): AirbrakeConfig['airbrake'] { +export function extractAirbrakeConfig(config: Config): AirbrakeConfig { return { apiKey: config.getString('airbrake.apiKey'), }; diff --git a/plugins/airbrake-backend/src/config/index.ts b/plugins/airbrake-backend/src/config/index.ts index 746d9fcafb..bc87a3c795 100644 --- a/plugins/airbrake-backend/src/config/index.ts +++ b/plugins/airbrake-backend/src/config/index.ts @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +import { Config } from '../../config'; export { extractAirbrakeConfig } from './ExtractAirbrakeConfig'; -export type { Config as AirbrakeConfig } from '../../config'; +export type AirbrakeConfig = Config['airbrake']; diff --git a/yarn.lock b/yarn.lock index f6e6d29d57..92a7e80f97 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1366,6 +1366,147 @@ "@babel/helper-validator-identifier" "^7.16.7" to-fast-properties "^2.0.0" +"@backstage/backend-common@^0.10.5": + version "0.10.6" + resolved "https://registry.npmjs.org/@backstage/backend-common/-/backend-common-0.10.6.tgz#482c1355518a6421596a3b9678a693eaaa17e8de" + integrity sha512-4AdrR9SrG2C+W9BMawRNoRkUbhLD5tcQEhI6/bxOpV62WSHVu5OQjgZbjCrFG5p+Q0syOVNAxX3MtjcQhkvfwg== + dependencies: + "@backstage/cli-common" "^0.1.6" + "@backstage/config" "^0.1.13" + "@backstage/config-loader" "^0.9.3" + "@backstage/errors" "^0.2.0" + "@backstage/integration" "^0.7.2" + "@backstage/types" "^0.1.1" + "@google-cloud/storage" "^5.8.0" + "@manypkg/get-packages" "^1.1.3" + "@octokit/rest" "^18.5.3" + "@types/cors" "^2.8.6" + "@types/dockerode" "^3.3.0" + "@types/express" "^4.17.6" + "@types/luxon" "^2.0.4" + archiver "^5.0.2" + aws-sdk "^2.840.0" + compression "^1.7.4" + concat-stream "^2.0.0" + cors "^2.8.5" + dockerode "^3.3.1" + express "^4.17.1" + express-promise-router "^4.1.0" + fs-extra "9.1.0" + git-url-parse "^11.6.0" + helmet "^4.0.0" + isomorphic-git "^1.8.0" + jose "^1.27.1" + keyv "^4.0.3" + keyv-memcache "^1.2.5" + knex "^0.95.1" + lodash "^4.17.21" + logform "^2.3.2" + luxon "^2.0.2" + minimatch "^3.0.4" + minimist "^1.2.5" + morgan "^1.10.0" + node-abort-controller "^3.0.1" + node-fetch "^2.6.1" + raw-body "^2.4.1" + selfsigned "^1.10.7" + stoppable "^1.1.0" + tar "^6.1.2" + unzipper "^0.10.11" + winston "^3.2.1" + yn "^4.0.0" + +"@backstage/cli@^0.13.1-next.0": + version "0.13.1" + resolved "https://registry.npmjs.org/@backstage/cli/-/cli-0.13.1.tgz#67959eea81c6d0474aa3e3769c0c80b7b4665c05" + integrity sha512-Zc1kWvRCOoCl/E3/X6J3q0DKc1i14mkSnyA6gKUT0JmoG7H0Lf8ULQQLDr97/wm+dyiYpx/yl8ggkBB0OV9+bw== + dependencies: + "@backstage/cli-common" "^0.1.6" + "@backstage/config" "^0.1.13" + "@backstage/config-loader" "^0.9.3" + "@backstage/errors" "^0.2.0" + "@backstage/types" "^0.1.1" + "@hot-loader/react-dom" "^16.13.0" + "@manypkg/get-packages" "^1.1.3" + "@octokit/request" "^5.4.12" + "@rollup/plugin-commonjs" "^21.0.1" + "@rollup/plugin-json" "^4.1.0" + "@rollup/plugin-node-resolve" "^13.0.0" + "@rollup/plugin-yaml" "^3.1.0" + "@spotify/eslint-config-base" "^12.0.0" + "@spotify/eslint-config-react" "^12.0.0" + "@spotify/eslint-config-typescript" "^12.0.0" + "@sucrase/jest-plugin" "^2.1.1" + "@sucrase/webpack-loader" "^2.0.0" + "@svgr/plugin-jsx" "6.2.x" + "@svgr/plugin-svgo" "6.2.x" + "@svgr/rollup" "5.5.x" + "@svgr/webpack" "5.5.x" + "@types/webpack-env" "^1.15.2" + "@typescript-eslint/eslint-plugin" "^5.9.0" + "@typescript-eslint/parser" "^5.9.0" + "@yarnpkg/lockfile" "^1.1.0" + bfj "^7.0.2" + buffer "^6.0.3" + chalk "^4.0.0" + chokidar "^3.3.1" + commander "^6.1.0" + css-loader "^6.5.1" + diff "^5.0.0" + esbuild "^0.14.10" + esbuild-loader "^2.18.0" + eslint "^8.6.0" + eslint-config-prettier "^8.3.0" + eslint-formatter-friendly "^7.0.0" + eslint-plugin-import "^2.25.4" + eslint-plugin-jest "^25.3.4" + eslint-plugin-jsx-a11y "^6.5.1" + eslint-plugin-monorepo "^0.3.2" + eslint-plugin-react "^7.28.0" + eslint-plugin-react-hooks "^4.3.0" + eslint-webpack-plugin "^2.6.0" + express "^4.17.1" + fork-ts-checker-webpack-plugin "^7.0.0-alpha.8" + fs-extra "9.1.0" + glob "^7.1.7" + handlebars "^4.7.3" + html-webpack-plugin "^5.3.1" + inquirer "^8.2.0" + jest "^26.0.1" + jest-css-modules "^2.1.0" + jest-transform-yaml "^1.0.0" + json-schema "^0.4.0" + lodash "^4.17.21" + mini-css-extract-plugin "^2.4.2" + minimatch "3.0.4" + node-libs-browser "^2.2.1" + ora "^5.3.0" + postcss "^8.1.0" + process "^0.11.10" + react-dev-utils "^12.0.0-next.60" + react-hot-loader "^4.13.0" + recursive-readdir "^2.2.2" + replace-in-file "^6.0.0" + rollup "^2.60.2" + rollup-plugin-dts "^4.0.1" + rollup-plugin-esbuild "^4.7.2" + rollup-plugin-peer-deps-external "^2.2.2" + rollup-plugin-postcss "^4.0.0" + rollup-pluginutils "^2.8.2" + run-script-webpack-plugin "^0.0.11" + semver "^7.3.2" + style-loader "^3.3.1" + sucrase "^3.20.2" + tar "^6.1.2" + terser-webpack-plugin "^5.1.3" + util "^0.12.3" + webpack "^5.66.0" + webpack-dev-server "^4.7.3" + webpack-node-externals "^3.0.0" + yaml "^1.10.0" + yml-loader "^2.1.0" + yn "^4.0.0" + "@backstage/core-components@*", "@backstage/core-components@^0.8.0", "@backstage/core-components@^0.8.7": version "0.8.7" resolved "https://registry.npmjs.org/@backstage/core-components/-/core-components-0.8.7.tgz#c4bb9760d57971882065415e6e715eb750db2392" @@ -8966,7 +9107,7 @@ commander@^6.1.0: resolved "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== -commander@^7.2.0: +commander@^7.1.0, commander@^7.2.0: version "7.2.0" resolved "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== @@ -12624,6 +12765,11 @@ get-value@^2.0.3, get-value@^2.0.6: resolved "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= +getopts@2.2.5: + version "2.2.5" + resolved "https://registry.npmjs.org/getopts/-/getopts-2.2.5.tgz#67a0fe471cacb9c687d817cab6450b96dde8313b" + integrity sha512-9jb7AW5p3in+IiJWhQiZmmwkpLaR/ccTWdWQCtZM66HJcHHLegowh4q4tSD7gouUyeNvFWRavfK9GXosQHDpFA== + getopts@2.3.0: version "2.3.0" resolved "https://registry.npmjs.org/getopts/-/getopts-2.3.0.tgz#71e5593284807e03e2427449d4f6712a268666f4" @@ -14040,7 +14186,7 @@ is-core-module@^2.1.0, is-core-module@^2.2.0: dependencies: has "^1.0.3" -is-core-module@^2.8.0: +is-core-module@^2.8.0, is-core-module@^2.8.1: version "2.8.1" resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211" integrity sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA== @@ -15726,6 +15872,25 @@ kleur@^4.0.3: resolved "https://registry.npmjs.org/kleur/-/kleur-4.1.4.tgz#8c202987d7e577766d039a8cd461934c01cda04d" integrity sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA== +knex@^0.95.1: + version "0.95.15" + resolved "https://registry.npmjs.org/knex/-/knex-0.95.15.tgz#39d7e7110a6e2ad7de5d673d2dea94143015e0e7" + integrity sha512-Loq6WgHaWlmL2bfZGWPsy4l8xw4pOE+tmLGkPG0auBppxpI0UcK+GYCycJcqz9W54f2LiGewkCVLBm3Wq4ur/w== + dependencies: + colorette "2.0.16" + commander "^7.1.0" + debug "4.3.2" + escalade "^3.1.1" + esm "^3.2.25" + getopts "2.2.5" + interpret "^2.2.0" + lodash "^4.17.21" + pg-connection-string "2.5.0" + rechoir "0.7.0" + resolve-from "^5.0.0" + tarn "^3.0.1" + tildify "2.0.0" + knex@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/knex/-/knex-1.0.2.tgz#1b79273f39f587a631c1a5515482c203d5971781" @@ -20669,6 +20834,13 @@ recharts@^1.8.5: recharts-scale "^0.4.2" reduce-css-calc "^1.3.0" +rechoir@0.7.0: + version "0.7.0" + resolved "https://registry.npmjs.org/rechoir/-/rechoir-0.7.0.tgz#32650fd52c21ab252aa5d65b19310441c7e03aca" + integrity sha512-ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q== + dependencies: + resolve "^1.9.0" + rechoir@^0.6.2: version "0.6.2" resolved "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" @@ -21126,6 +21298,15 @@ resolve@^1.1.6, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.18 path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" +resolve@^1.9.0: + version "1.22.0" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198" + integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw== + dependencies: + is-core-module "^2.8.1" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + resolve@^2.0.0-next.3: version "2.0.0-next.3" resolved "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz#d41016293d4a8586a39ca5d9b5f15cbea1f55e46" @@ -22953,7 +23134,7 @@ tar@^6.0.2, tar@^6.1.0, tar@^6.1.2: mkdirp "^1.0.3" yallist "^4.0.0" -tarn@^3.0.2: +tarn@^3.0.1, tarn@^3.0.2: version "3.0.2" resolved "https://registry.npmjs.org/tarn/-/tarn-3.0.2.tgz#73b6140fbb881b71559c4f8bfde3d9a4b3d27693" integrity sha512-51LAVKUSZSVfI05vjPESNc5vwqqZpbXCsU+/+wxlOrUjk2SnFTt97v9ZgQrD4YmxYW1Px6w2KjaDitCfkvgxMQ== From b02ab44f3b477e9b3b3e7eaf31cd4e94a9d6af0d Mon Sep 17 00:00:00 2001 From: Karan Shah Date: Wed, 9 Feb 2022 14:40:38 +0000 Subject: [PATCH 053/383] Update @backstage/cli dependency Signed-off-by: Karan Shah --- plugins/airbrake-backend/package.json | 2 +- yarn.lock | 91 --------------------------- 2 files changed, 1 insertion(+), 92 deletions(-) diff --git a/plugins/airbrake-backend/package.json b/plugins/airbrake-backend/package.json index 22589c8f21..e10cd50090 100644 --- a/plugins/airbrake-backend/package.json +++ b/plugins/airbrake-backend/package.json @@ -31,7 +31,7 @@ "yn": "^4.0.0" }, "devDependencies": { - "@backstage/cli": "^0.13.1-next.0", + "@backstage/cli": "^0.13.2-next.0", "@types/http-proxy-middleware": "^0.19.3", "@types/supertest": "^2.0.8", "supertest": "^6.1.6", diff --git a/yarn.lock b/yarn.lock index a5cc9933e2..aae5c90071 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1416,97 +1416,6 @@ winston "^3.2.1" yn "^4.0.0" -"@backstage/cli@^0.13.1-next.0": - version "0.13.1" - resolved "https://registry.npmjs.org/@backstage/cli/-/cli-0.13.1.tgz#67959eea81c6d0474aa3e3769c0c80b7b4665c05" - integrity sha512-Zc1kWvRCOoCl/E3/X6J3q0DKc1i14mkSnyA6gKUT0JmoG7H0Lf8ULQQLDr97/wm+dyiYpx/yl8ggkBB0OV9+bw== - dependencies: - "@backstage/cli-common" "^0.1.6" - "@backstage/config" "^0.1.13" - "@backstage/config-loader" "^0.9.3" - "@backstage/errors" "^0.2.0" - "@backstage/types" "^0.1.1" - "@hot-loader/react-dom" "^16.13.0" - "@manypkg/get-packages" "^1.1.3" - "@octokit/request" "^5.4.12" - "@rollup/plugin-commonjs" "^21.0.1" - "@rollup/plugin-json" "^4.1.0" - "@rollup/plugin-node-resolve" "^13.0.0" - "@rollup/plugin-yaml" "^3.1.0" - "@spotify/eslint-config-base" "^12.0.0" - "@spotify/eslint-config-react" "^12.0.0" - "@spotify/eslint-config-typescript" "^12.0.0" - "@sucrase/jest-plugin" "^2.1.1" - "@sucrase/webpack-loader" "^2.0.0" - "@svgr/plugin-jsx" "6.2.x" - "@svgr/plugin-svgo" "6.2.x" - "@svgr/rollup" "5.5.x" - "@svgr/webpack" "5.5.x" - "@types/webpack-env" "^1.15.2" - "@typescript-eslint/eslint-plugin" "^5.9.0" - "@typescript-eslint/parser" "^5.9.0" - "@yarnpkg/lockfile" "^1.1.0" - bfj "^7.0.2" - buffer "^6.0.3" - chalk "^4.0.0" - chokidar "^3.3.1" - commander "^6.1.0" - css-loader "^6.5.1" - diff "^5.0.0" - esbuild "^0.14.10" - esbuild-loader "^2.18.0" - eslint "^8.6.0" - eslint-config-prettier "^8.3.0" - eslint-formatter-friendly "^7.0.0" - eslint-plugin-import "^2.25.4" - eslint-plugin-jest "^25.3.4" - eslint-plugin-jsx-a11y "^6.5.1" - eslint-plugin-monorepo "^0.3.2" - eslint-plugin-react "^7.28.0" - eslint-plugin-react-hooks "^4.3.0" - eslint-webpack-plugin "^2.6.0" - express "^4.17.1" - fork-ts-checker-webpack-plugin "^7.0.0-alpha.8" - fs-extra "9.1.0" - glob "^7.1.7" - handlebars "^4.7.3" - html-webpack-plugin "^5.3.1" - inquirer "^8.2.0" - jest "^26.0.1" - jest-css-modules "^2.1.0" - jest-transform-yaml "^1.0.0" - json-schema "^0.4.0" - lodash "^4.17.21" - mini-css-extract-plugin "^2.4.2" - minimatch "3.0.4" - node-libs-browser "^2.2.1" - ora "^5.3.0" - postcss "^8.1.0" - process "^0.11.10" - react-dev-utils "^12.0.0-next.60" - react-hot-loader "^4.13.0" - recursive-readdir "^2.2.2" - replace-in-file "^6.0.0" - rollup "^2.60.2" - rollup-plugin-dts "^4.0.1" - rollup-plugin-esbuild "^4.7.2" - rollup-plugin-peer-deps-external "^2.2.2" - rollup-plugin-postcss "^4.0.0" - rollup-pluginutils "^2.8.2" - run-script-webpack-plugin "^0.0.11" - semver "^7.3.2" - style-loader "^3.3.1" - sucrase "^3.20.2" - tar "^6.1.2" - terser-webpack-plugin "^5.1.3" - util "^0.12.3" - webpack "^5.66.0" - webpack-dev-server "^4.7.3" - webpack-node-externals "^3.0.0" - yaml "^1.10.0" - yml-loader "^2.1.0" - yn "^4.0.0" - "@backstage/core-components@*", "@backstage/core-components@^0.8.0", "@backstage/core-components@^0.8.7": version "0.8.7" resolved "https://registry.npmjs.org/@backstage/core-components/-/core-components-0.8.7.tgz#c4bb9760d57971882065415e6e715eb750db2392" From b958d198b808a7816feeb10b0eb6e1c6fe0521f3 Mon Sep 17 00:00:00 2001 From: Karan Shah Date: Wed, 9 Feb 2022 15:01:44 +0000 Subject: [PATCH 054/383] Update @backstage/backend-common dependency Signed-off-by: Karan Shah --- plugins/airbrake-backend/package.json | 2 +- yarn.lock | 96 +-------------------------- 2 files changed, 4 insertions(+), 94 deletions(-) diff --git a/plugins/airbrake-backend/package.json b/plugins/airbrake-backend/package.json index e10cd50090..456423a0b2 100644 --- a/plugins/airbrake-backend/package.json +++ b/plugins/airbrake-backend/package.json @@ -20,7 +20,7 @@ "clean": "backstage-cli clean" }, "dependencies": { - "@backstage/backend-common": "^0.10.5", + "@backstage/backend-common": "^0.10.7-next.0", "@backstage/config": "^0.1.13", "@types/express": "*", "express": "^4.17.1", diff --git a/yarn.lock b/yarn.lock index aae5c90071..232f883cf0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1366,56 +1366,6 @@ "@babel/helper-validator-identifier" "^7.16.7" to-fast-properties "^2.0.0" -"@backstage/backend-common@^0.10.5": - version "0.10.6" - resolved "https://registry.npmjs.org/@backstage/backend-common/-/backend-common-0.10.6.tgz#482c1355518a6421596a3b9678a693eaaa17e8de" - integrity sha512-4AdrR9SrG2C+W9BMawRNoRkUbhLD5tcQEhI6/bxOpV62WSHVu5OQjgZbjCrFG5p+Q0syOVNAxX3MtjcQhkvfwg== - dependencies: - "@backstage/cli-common" "^0.1.6" - "@backstage/config" "^0.1.13" - "@backstage/config-loader" "^0.9.3" - "@backstage/errors" "^0.2.0" - "@backstage/integration" "^0.7.2" - "@backstage/types" "^0.1.1" - "@google-cloud/storage" "^5.8.0" - "@manypkg/get-packages" "^1.1.3" - "@octokit/rest" "^18.5.3" - "@types/cors" "^2.8.6" - "@types/dockerode" "^3.3.0" - "@types/express" "^4.17.6" - "@types/luxon" "^2.0.4" - archiver "^5.0.2" - aws-sdk "^2.840.0" - compression "^1.7.4" - concat-stream "^2.0.0" - cors "^2.8.5" - dockerode "^3.3.1" - express "^4.17.1" - express-promise-router "^4.1.0" - fs-extra "9.1.0" - git-url-parse "^11.6.0" - helmet "^4.0.0" - isomorphic-git "^1.8.0" - jose "^1.27.1" - keyv "^4.0.3" - keyv-memcache "^1.2.5" - knex "^0.95.1" - lodash "^4.17.21" - logform "^2.3.2" - luxon "^2.0.2" - minimatch "^3.0.4" - minimist "^1.2.5" - morgan "^1.10.0" - node-abort-controller "^3.0.1" - node-fetch "^2.6.1" - raw-body "^2.4.1" - selfsigned "^1.10.7" - stoppable "^1.1.0" - tar "^6.1.2" - unzipper "^0.10.11" - winston "^3.2.1" - yn "^4.0.0" - "@backstage/core-components@*", "@backstage/core-components@^0.8.0", "@backstage/core-components@^0.8.7": version "0.8.7" resolved "https://registry.npmjs.org/@backstage/core-components/-/core-components-0.8.7.tgz#c4bb9760d57971882065415e6e715eb750db2392" @@ -9016,7 +8966,7 @@ commander@^6.1.0: resolved "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== -commander@^7.1.0, commander@^7.2.0: +commander@^7.2.0: version "7.2.0" resolved "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== @@ -12674,11 +12624,6 @@ get-value@^2.0.3, get-value@^2.0.6: resolved "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= -getopts@2.2.5: - version "2.2.5" - resolved "https://registry.npmjs.org/getopts/-/getopts-2.2.5.tgz#67a0fe471cacb9c687d817cab6450b96dde8313b" - integrity sha512-9jb7AW5p3in+IiJWhQiZmmwkpLaR/ccTWdWQCtZM66HJcHHLegowh4q4tSD7gouUyeNvFWRavfK9GXosQHDpFA== - getopts@2.3.0: version "2.3.0" resolved "https://registry.npmjs.org/getopts/-/getopts-2.3.0.tgz#71e5593284807e03e2427449d4f6712a268666f4" @@ -14095,7 +14040,7 @@ is-core-module@^2.1.0, is-core-module@^2.2.0: dependencies: has "^1.0.3" -is-core-module@^2.8.0, is-core-module@^2.8.1: +is-core-module@^2.8.0: version "2.8.1" resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211" integrity sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA== @@ -15781,25 +15726,6 @@ kleur@^4.0.3: resolved "https://registry.npmjs.org/kleur/-/kleur-4.1.4.tgz#8c202987d7e577766d039a8cd461934c01cda04d" integrity sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA== -knex@^0.95.1: - version "0.95.15" - resolved "https://registry.npmjs.org/knex/-/knex-0.95.15.tgz#39d7e7110a6e2ad7de5d673d2dea94143015e0e7" - integrity sha512-Loq6WgHaWlmL2bfZGWPsy4l8xw4pOE+tmLGkPG0auBppxpI0UcK+GYCycJcqz9W54f2LiGewkCVLBm3Wq4ur/w== - dependencies: - colorette "2.0.16" - commander "^7.1.0" - debug "4.3.2" - escalade "^3.1.1" - esm "^3.2.25" - getopts "2.2.5" - interpret "^2.2.0" - lodash "^4.17.21" - pg-connection-string "2.5.0" - rechoir "0.7.0" - resolve-from "^5.0.0" - tarn "^3.0.1" - tildify "2.0.0" - knex@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/knex/-/knex-1.0.2.tgz#1b79273f39f587a631c1a5515482c203d5971781" @@ -20743,13 +20669,6 @@ recharts@^1.8.5: recharts-scale "^0.4.2" reduce-css-calc "^1.3.0" -rechoir@0.7.0: - version "0.7.0" - resolved "https://registry.npmjs.org/rechoir/-/rechoir-0.7.0.tgz#32650fd52c21ab252aa5d65b19310441c7e03aca" - integrity sha512-ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q== - dependencies: - resolve "^1.9.0" - rechoir@^0.6.2: version "0.6.2" resolved "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" @@ -21207,15 +21126,6 @@ resolve@^1.1.6, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.18 path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" -resolve@^1.9.0: - version "1.22.0" - resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198" - integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw== - dependencies: - is-core-module "^2.8.1" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - resolve@^2.0.0-next.3: version "2.0.0-next.3" resolved "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz#d41016293d4a8586a39ca5d9b5f15cbea1f55e46" @@ -23043,7 +22953,7 @@ tar@^6.0.2, tar@^6.1.0, tar@^6.1.2: mkdirp "^1.0.3" yallist "^4.0.0" -tarn@^3.0.1, tarn@^3.0.2: +tarn@^3.0.2: version "3.0.2" resolved "https://registry.npmjs.org/tarn/-/tarn-3.0.2.tgz#73b6140fbb881b71559c4f8bfde3d9a4b3d27693" integrity sha512-51LAVKUSZSVfI05vjPESNc5vwqqZpbXCsU+/+wxlOrUjk2SnFTt97v9ZgQrD4YmxYW1Px6w2KjaDitCfkvgxMQ== From 6cb193343af1a84bf2b0022ec12c04bbd0611ff7 Mon Sep 17 00:00:00 2001 From: Karan Shah Date: Wed, 9 Feb 2022 16:04:08 +0000 Subject: [PATCH 055/383] Update yarn.lock Signed-off-by: Karan Shah --- yarn.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/yarn.lock b/yarn.lock index d7521577c4..7461cc24f2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1440,7 +1440,7 @@ "@material-ui/lab" "4.0.0-alpha.57" react-use "^17.2.4" -"@backstage/plugin-catalog-react@^0.6.13", "@backstage/plugin-catalog-react@^0.6.5": +"@backstage/plugin-catalog-react@^0.6.12", "@backstage/plugin-catalog-react@^0.6.13", "@backstage/plugin-catalog-react@^0.6.5": version "0.6.13" resolved "https://registry.npmjs.org/@backstage/plugin-catalog-react/-/plugin-catalog-react-0.6.13.tgz#b325eae501d3edeb8b7caef5d9615f2e632f5430" integrity sha512-XBwop7PwAZqfongx3KP6jAJar+MEscLSp8nLuHYX5XxA+suQNiBgi96uO3SEQmvtae+hvsRM7c0WHSxbYiXsDA== From 7a8ac1db0bc78ca3ef4d7e89ec483c4f7f816780 Mon Sep 17 00:00:00 2001 From: Karan Shah Date: Wed, 9 Feb 2022 16:07:15 +0000 Subject: [PATCH 056/383] Revert ADOPTERS.md Signed-off-by: Karan Shah --- ADOPTERS.md | 188 ++++++++++++++++++++++++++-------------------------- 1 file changed, 94 insertions(+), 94 deletions(-) diff --git a/ADOPTERS.md b/ADOPTERS.md index d70ffe4cc0..beb161d9ee 100644 --- a/ADOPTERS.md +++ b/ADOPTERS.md @@ -1,94 +1,94 @@ -| Organization | Contact | Description of Use | -| --------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [Spotify](https://www.spotify.com) | [@leemills83](https://github.com/leemills83) | Main interface towards all of Spotify's infrastructure and technical documentation. | -| [bol.com](https://www.bol.com) | [@sagacity](https://github.com/sagacity) | Initial work being done to unify platform tooling. | -| [DFDS](https://www.dfds.com) | [@carlsendk](https://github.com/carlsendk) | V2 self-service platform. | -| [Roadie](https://roadie.io) | [@dtuite](https://github.com/dtuite) | Hosted, managed Backstage with easy set-up | -| [Roku](https://www.roku.com) | [@timurista](https://github.com/timurista) | Initial work on Cloud engineering service platform. | -| [SDA SE](https://sda.se) | [@dschwank](https://github.com/dschwank), [@iammnils](https://github.com/iammnils) | Central place for developing and sharing services in our insurance ecosystem. | -| [H-E-B](https://www.heb.com) | [@german-j-rodriguez](https://github.com/german-j-rodriguez) | Initial work on Engineering Portal service platform. | -| [American Airlines](https://www.aa.com) | [@paulpach](https://github.com/paulpach) | Central place for developers to develop and maintain applications | -| [Kiwi.com](https://kiwi.com) | [@aexvir](https://github.com/aexvir) | Replacing the frontend of [The Zoo](https://github.com/kiwicom/the-zoo), their service registry. | -| [Voi](https://www.voiscooters.com/) | [@K-Phoen](https://github.com/K-Phoen) | Developer portal, main gateway to our infrastructure, documentation and internal tooling. | -| [Talkdesk](https://www.talkdesk.com) | [@jaime-talkdesk](https://github.com/jaime-talkdesk) | Initial work for Engineering Portal and Self Provisioning to R&D | -| [Wealthsimple](https://www.wealthsimple.com) | [@andrewthauer](https://github.com/andrewthauer) | Developer portal, service catalog, documentation and tooling | -| [Grab](https://www.grab.com) | [@althafh](https://github.com/althafh) | Initial work as a unified interface for all of Grab's internal tooling | -| [Telenor Sweden](https://www.telenor.se) | [@O5ten](https://github.com/O5ten) | Building a developer portal for scaffolding projects towards our unified build environment and microservice stacks | -| [Fiverr](https://www.fiverr.com) | [@nirga](https://github.com/nirga) | Unifying separate tools that developers are using today (i.e. monitoring, dead letter queues management, etc.) into a single platform. | -| [Zalando SE](https://www.zalando.de) | [@leviferreira](https://github.com/leviferreira) | Building V2 of the Internal Development Portal. | -| [LegalZoom](https://legalzoom.com) | [@backjo](https://github.com/backjo) | Developer portal - hub for all engineering projects and metadata. | -| [Expedia Group](https://www.expediagroup.com) | [Mike Turner](mailto:miturner@expediagroup.com), [Sneha Kumar](mailto:snkumar@expediagroup.com), [@guillermomanzo](https://github.com/guillermomanzo), [Erik Lindgren](https://github.com/lindgren) | EG Common Developer Toolkit | -| [Paddle.com](https://paddle.com) | [Ioannis Georgoulas](https://github.com/geototti21) | Developer portal (Tech Docs, Service Catalog, Internal Tooling), we use vanilla Backstage FE and custom BE implementation in Go | -| [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/) | [Jim Haughwout](https://github.com/JimHaughwout) | 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. | -| [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. | -| [Netflix](https://www.netflix.com/) | [bleathem](https://github.com/bleathem) | Our Backstage implementation will be the front door to a unified experience connecting our internal platform products across important workflows with integrated knowledge and support. | -| [b.well](https://www.icanbwell.com/) | [Jacob Rosales](https://github.com/jrosales) | Foundation for our engineering portal and cloud insights. | -| [PagerDuty](https://www.pagerduty.com/) | [Mark Shaw](https://github.com/markshawtoronto) | Developer portal, initially focused on software templates and tech-docs. | -| [MoonShiner](https://moonshiner.at) | [Fabian Hippmann](https://github.com/FabianHippmann) | Developer portal - helps us keep track of our customer projects, onboard new developers & improve our development process 🌕🚀🧑‍🚀 | -| [FundApps](https://www.fundapps.co/) | [Elliot Greenwood](https://github.com/egnwd) | Developer Portal - A place for us to keep track of our projects and documentation for all services and processes | -| [DAZN](https://dazn.com/) | [Lou Bichard](https://twitter.com/loujaybee), [Marco Crivellaro](https://github.com/crivetechie), [Alex Hollerith](mailto:alex.hollerith@dazn.com) | Ingesting all of DAZN's repos for the catalog, migrating our internal platform apps (pull request boards, release information, inner source marketplace etc) to Backstage plugins (where applicable). | -| [HelloFresh](https://www.hellofresh.de/) | [@iammuho](https://github.com/iammuho), [@ElenaForester](https://github.com/ElenaForester), [@diegomarangoni](https://github.com/diegomarangoni) | Our developer portal at HelloFresh - Spread across an organisation of 500+ engineers globally. | -| [FactSet](https://www.factset.com/) | [@kuangp](https://github.com/kuangp) | Developer portal to provide discoverability to all internal components, APIs, documentation, and scaffold templates with integrations to our internal infrastructure tools. | -| [Workrise](https://www.workrise.com/) | [Michael Rode](https://github.com/michaelrode) | Developer portal, main gateway to our infrastructure, documentation and internal tooling. | -| [RedVentures](https://www.redventures.com/) | [Chris Diaz](https://github.com/codingdiaz) | Developer portal that brings everything an engineer needs to provide value into a single pane of glass. | -| [MavTek](https://www.mavtek.com/) | [@fgascon](https://github.com/fgascon) | Developer portal focused on standardizing practices, centralizing documentation and streamlining developer practices. | -| [QuintoAndar](https://www.quintoandar.com.br/) | [@quintoandar](https://github.com/quintoandar) | Developer portal, services catalog and centralization of service metrics. | -| [empathy.co](https://empathy.co/) | [@guillermotti](https://github.com/guillermotti) | Developer portal for tech docs, service catalog, plugin discovery and much more. | -| [creditas.com](https://creditas.com/) | [@aureliosaraiva](https://github.com/aureliosaraiva) [@Creditas](https://github.com/creditas) | Centralization of all services, standards, documentation, etc. We started the deployment process. | -| [Prisjakt](https://www.prisjakt.nu) / [PriceSpy](https://pricespy.co.uk) | [@kennylindahl](https://github.com/kennylindahl) | Internal developer portal - Documentation, scaffolding, software catalog, TechRadar, Gitlab org data integration | -| [Powerspike](https://powerspike.tv/) | [@trelore](https://github.com/trelore) | Developer portal for documentation of core libraries and repositories. | -| [2U](https://2u.com) | [Andrew Thal](https://github.com/athal7) | Development team home-base, promoting service discoverability, resource dependencies, and tech radar | -| [Taxfix](https://taxfix.de/) | [Sami Ur Rehman](https://github.com/samiurrehman92) | Developer's portal with software catalog at it's core. Hosts API Specs, Tech Docs, Tech Radar and some custom plugins. | -| [Busuu](https://busuu.com/) | [Adam Tester](https://github.com/adamtester) | Developer portal with service catalog, API docs, Event docs, service templating, and cost insights. | -| [Loadsmart](https://loadsmart.com/) | [Loadsmart](https://github.com/loadsmart) | Improve services visibility and operations for service owners and developers. | -| [Monzo](https://monzo.com/) | [@WillSewell](https://github.com/WillSewell), [@joechrisellis](https://github.com/joechrisellis) | Developer portal showing metadata and docs for over 2000 microservices. We have built a number of plugins such as a UI for our system to measure [software excellence](https://monzo.com/blog/2021/09/15/how-we-measure-software-excellence), and a UI to show deployment and config change events. | -| [Vaimo](https://www.vaimo.com) | [@vaimo-magnus](https://github.com/vaimo-magnus) | Developer Portal for our developers at Vaimo, currently docs and self-service towards our internal PaaS based on k8s. Plans to extend the catalog into Projects, Environments etc | -| [Wayfair](https://www.wayfair.com) | [@fransan](https://github.com/fransan), [@errskipower](https://github.com/errskipower), [@hrrs](https://github.com/hrrs) | Developer portal for service catalog, technical documentation, and APIs. | -| [CircleHD](https://www.circlehd.com) | [@circlehddev](https://github.com/circlehddev) | Developer Portal for internal dev team across the globe | -| [CastDesk](https://castdesk.com) | [@circlehddev](https://github.com/circlehddev) | Developer Portal for internal dev team across the globe | -| [Santagostino](https://santagostino.it) | [@santagostino](https://github.com/santagostino) | Developer portal, gateway to our infrastructure, documentation, service catalog and internal tooling. | -| [Peak](https://peak.ai) | [Luke Beamish](https://github.com/lukebeamish-peak) | Developer portal for all internal engineers to access documentation and tooling. | -| [Gelato](https://gelato.com/) | [Dmitry Makarenko](https://github.com/dmitry-makarenko-gelato) | Developer portal: documentation, service templates, org structure, service catalog, plugins for integration with internal and third-party systems🚀. | -| [GoCardless](https://gocardless.com/) | [James Turley](https://github.com/tragiclifestories) | Developer portal: documentation, service templates, org structure, service catalog, plugins for integration with internal systems. | -| [Box](https://www.box.com) | [@kielosz](https://github.com/kielosz), [@jluk-box](https://github.com/jluk-box), [@ptychu](https://github.com/ptychu), [@alexrybch](https://github.com/alexrybch), [@szubster](https://github.com/szubster) | Developer portal for service catalog, integration with internal systems, new service onboarding. | -| [Bazaarvoice](https://www.bazaarvoice.com) | [@niallmccullagh](https://github.com/niallmccullagh) | Developer portal for service catalog and scaffolds, publishing Github docs and API documentation, visualising our internal tech radar and our product engineering org structure. | -| [Krateo PlatformOps](https://www.krateo.io) | [@projectkerberus](https://github.com/projectkerberus) | A multi-cloud control plane to create, manage and deploy any kind of resource easily and centrally via a Developer Portal that centralizes via a self-service catalog the templating and ownership of services, the available documentation, the overview of the components that compose an entire domain and all the data of the service lifecycle. | -| [Adevinta](https://www.adevinta.com) | [Ray Sinnema](https://github.com/RemonSinnema) | Showcase shared services to our internal customers. | -| [Splunk](https://www.splunk.com) | [@tonytamsf](https://github.com/tonytamsf) | Developer portal as a centralized place to find people, services, documentation, escalation policies and give bravos. This portal is also being used as a centralized search engine for engineering specific documentation. | -| [SoundCloud](https://www.soundcloud.com) | [Julio Zynger](https://github.com/julioz) | Developer portal as a [humane registry](https://martinfowler.com/bliki/HumaneRegistry.html) for the organization: catalog of people, services, documentation, feature toggles, escalation policies, etc. | -| [Volvofinans Bank](https://www.volvofinans.se) | [Johan Hammar](https://github.com/johanhammar) | Developer portal enabling engineers to manage and explore software and documentation. | -| [Palo Alto Networks](https://www.paloaltonetworks.com) | [Jeremy Guarini](https://github.com/jeremyguarini), [Brian Lomeland](https://github.com/bbbmmmlll), [Palo Alto Networks](https://github.com/PaloAltoNetworks) | Developer portal, service catalog, documentation and tooling | -| [Signal Iduna Group](https://www.signal-iduna.de/) | [Jonas Thomsen](https://github.com/JoThomsen) | Developer Portal, documentation, monitoring, service catalog for our insurance ecosystem | -| [Tradeshift](https://www.tradeshift.com/) | [Soren Mathiasen](https://github.com/sorenmat) | Developer Portal: documentation, monitoring, service templates, service catalog for our micro services | -| [Unity](https://unity.com) | [Ted Cordery](https://github.com/TeddyBallGame) | A centralized service catalog with documentation for our service engineers. | -| [PicPay](https://www.picpay.com) | [Luis Baroni](https://github.com/lcsbaroni), [Renata Poluceno](https://github.com/renatapoluceno), [PicPay](https://github.com/picpay) | Developer portal for building services throught templates, service catalog with ownership of services, documentation and metrics providing autonomy and visibility for all. | -| [Epic Games](https://www.epicgames.com) | [Brian Jung](https://github.com/brian-at-epic), [Jeff Goldian](https://github.com/jeffgoldian-Epic) | Developer Portal: Service Catalog, Documentation, Software Templates and more making our internal teams' lives easier! | -| [Globo](https://globo.com) | [Carlos Gusmão](https://github.com/caeugusmao), [Guilherme Vierno](https://github.com/vierno), [Denis Aoki](https://github.com/dnsaoki2), [Maycon Dionisio](https://github.com/MayconDionisio), | Reduce the friction of accessing the information engineers need about Globo's digital services through a coherent and centralized experience. | -| [QBE](https://www.qbe.com/) | [Daniel Steel](https://github.com/danielsteelqbe), [Pete Jespers](https://github.com/petejespersqbe) | Developer portal allowing our global teams to explore and create applications, documentation and cloud infrastructure easily and quickly 🚀 | -| [GoTo](https://www.goto.com) | [Lorenzo Orsatti](https://github.com/lorsatti) | Improve onboarding experience of new developers. Discover faster and painlessly developer documentation, API definitions and team information. Provide useful dev metrics in a central place. Provide easy-to-use templates for new services. | -| [Telstra](https://www.telstra.com.au) | [@kiranpatel11](https://github.com/kiranpatel11), [JasonC](https://github.com/JasonC17) | Primary usage: software catalog and templates
Emerging usage : TechDocs, Explore Ecosystem, TechRadar, etc | -| [Mosaico](https://www.mosaico.com.br/) | [Wédney Yuri](https://github.com/wedneyyuri),[@tino.milton](https://github.com/miltonjacomini) | A centralized service catalog of our documentation for our service engineers. | -| [Mox Bank](https://www.mox.com/) | [Nick Laqua](https://github.com/nick-laqua-dragon), [Gauthier Roebroeck](https://github.com/gauthier-roebroeck-mox) | "Single pane of glass" developer portal for providing a best-in-class developer experience to our product teams and making Mox the best tech environment in Hongkong 🥰🚀 | -| [Keyloop](https://www.keyloop.com/) | [Andre Wanlin](https://github.com/awanlin) | Future-motive Developer Portal to help our teams create technology to make everything about buying and owning a car better. 🚗 | -| [Simply Business](https://sbtech.simplybusiness.co.uk/) | [@addersuk](https://github.com/addersuk), [@LightningStairs](https://github.com/LightningStairs), [@punitcse](https://github.com/punitcse), [@moltenice](https://github.com/moltenice) | Central developer portal to access everything a developer needs such as docs, internal service catalog, and the ability to quickly create a new service from a template. Internally developed Backstage plugins allow us to customise the experience to how we work. | -| [Overwolf](https://www.overwolf.com) | [@tomwolfgang](https://github.com/tomwolfgang) | Dev portal - software catalog, tech-docs, scaffolding | -| [Hotmart](https://www.hotmart.com) | [@fabioviana-hotmart](https://github.com/fabioviana-hotmart) | The main Developers Portal to centralize docs, applications and technical metrics. | -| [EF Education First](https://www.ef.com) | [Daan Boerlage](https://github.com/runebaas), [Rafał Nowosielski](https://github.com/rnowosielski) | Our developer portal - primarily used for cataloging and scaffolding with the ambition to expand with more feature adoptions over time | -| [Power Home Remodeling](https://www.techatpower.com) | [Ben Langfeld](https://github.com/benlangfeld) | Developer portal to our internal services, build on open-source software (including Kubernetes) in our own datacenters. Our Portal allows our team members to navigate inherant complexity and standardise. | -| [Livspace](https://www.livspace.com) | [Praveen Kumar](https://github.com/praveen-livspace) | Developer portal, service catalog, tech docs, API docs and plugins | -| [Just Eat Takeaway](https://www.justeattakeaway.com) | [Kim Wilson](https://github.com/kwilson541) | Our developer portal which centralises applications, reduces cognitive load and provides teams insights. | -| [Hopin](https://hopin.com) | [Vladimir Glafirov](https://github.com/vglafirov), [Chloe Lee](https://github.com/msfuko) | Developer portal to streamline the development practices. Integrated with service catalog, software templates, application monitoring, tech docs and plugins. | -| [HBO Max](https://hbomax.com) | [@mdb](https://github.com/mdb), [@nesta219](https://github.com/nesta219), [@nmische](https://github.com/nmische), [@hbomark](https://github.com/hbomark) | Developer portal hosting service catalog and API documentation, as well as cloud infrastructure details, operational visibility tools, and a custom plugin for browsing notable platform change events, such as deployments and configuration updates. | -| [RCHLO](https://www.riachuelo.com.br) & [MIDWAY](https://www.midway.com.br) | [@marcosborges](https://github.com/marcosborges), [@defaultbr](https://github.com/defaultbr) | Self-Service Platform | -| [HP Inc](https://www.hp.com) | [Damon Kaswell](https://github.com/dekoding) | DevEx engagement hub (dev portal: docs, standards, Q&A) and extensive assets catalog (APIs, services, code, data, etc.) for the pan-HP internal developer community. | -| [VMware](https://www.vmware.com) | [@mpriamo](https://github.com/mpriamo), [@krisapplegate](https://github.com/krisapplegate) | Part of [Tanzu Application Platform](https://docs.vmware.com/en/VMware-Tanzu-Application-Platform/index.html) offering; internal developer portal | -| [Ualá](https://www.uala.com.ar/) | [Santiago Bernal](https://github.com/sabernal) | Initial work being done to centralize documentation for all our microservices and APIs, as well as scaffolding new services and tracking code quality | -| [IKEA IT AB](https://www.ingka.com) | [@bjornramberg](https://github.com/bjornramberg), [@supriyachitale](https://github.com/supriyachitale) | Supporting engineers at scale with self serve access and connecting the dots of our engineering platform and services, enabling product teams to move faster and go further, and unleashing innovation, reuse and co-creation across the organisation. | -| [Invitae](https://www.invitae.com/en) | [@ryan-hanchett](https://github.com/ryan-hanchett), [@gmandler42](https://github.com/gmandler42) | Centralized Developer Experience portal, putting all of our tooling behind a single pane of glass and creating a living service catalog. | -| [Fortum](https://www.fortum.com/) | [@brunoamaroalmeida](https://github.com/brunoamaroalmeida), [@dhaval-vithalani](https://github.com/dhaval-vithalani), [@sunilkumarmohanty](https://github.com/sunilkumarmohanty) | A central portal containing information about our applications, services, processes and other software assets to be used by Fortum software engineering community. | +| Organization | Contact | Description of Use | +| ------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [Spotify](https://www.spotify.com) | [@leemills83](https://github.com/leemills83) | Main interface towards all of Spotify's infrastructure and technical documentation. | +| [bol.com](https://www.bol.com) | [@sagacity](https://github.com/sagacity) | Initial work being done to unify platform tooling. | +| [DFDS](https://www.dfds.com) | [@carlsendk](https://github.com/carlsendk) | V2 self-service platform. | +| [Roadie](https://roadie.io) | [@dtuite](https://github.com/dtuite) | Hosted, managed Backstage with easy set-up | +| [Roku](https://www.roku.com) | [@timurista](https://github.com/timurista) | Initial work on Cloud engineering service platform. | +| [SDA SE](https://sda.se) | [@dschwank](https://github.com/dschwank), [@iammnils](https://github.com/iammnils) | Central place for developing and sharing services in our insurance ecosystem. | +| [H-E-B](https://www.heb.com) | [@german-j-rodriguez](https://github.com/german-j-rodriguez) | Initial work on Engineering Portal service platform. | +| [American Airlines](https://www.aa.com) | [@paulpach](https://github.com/paulpach) | Central place for developers to develop and maintain applications | +| [Kiwi.com](https://kiwi.com) | [@aexvir](https://github.com/aexvir) | Replacing the frontend of [The Zoo](https://github.com/kiwicom/the-zoo), their service registry. | +| [Voi](https://www.voiscooters.com/) | [@K-Phoen](https://github.com/K-Phoen) | Developer portal, main gateway to our infrastructure, documentation and internal tooling. | +| [Talkdesk](https://www.talkdesk.com) | [@jaime-talkdesk](https://github.com/jaime-talkdesk) | Initial work for Engineering Portal and Self Provisioning to R&D | +| [Wealthsimple](https://www.wealthsimple.com) | [@andrewthauer](https://github.com/andrewthauer) | Developer portal, service catalog, documentation and tooling | +| [Grab](https://www.grab.com) | [@althafh](https://github.com/althafh) | Initial work as a unified interface for all of Grab's internal tooling | +| [Telenor Sweden](https://www.telenor.se) | [@O5ten](https://github.com/O5ten) | Building a developer portal for scaffolding projects towards our unified build environment and microservice stacks | +| [Fiverr](https://www.fiverr.com) | [@nirga](https://github.com/nirga) | Unifying separate tools that developers are using today (i.e. monitoring, dead letter queues management, etc.) into a single platform. | +| [Zalando SE](https://www.zalando.de) | [@leviferreira](https://github.com/leviferreira) | Building V2 of the Internal Development Portal. | +| [LegalZoom](https://legalzoom.com) | [@backjo](https://github.com/backjo) | Developer portal - hub for all engineering projects and metadata. | +| [Expedia Group](https://www.expediagroup.com) | [Mike Turner](mailto:miturner@expediagroup.com), [Sneha Kumar](mailto:snkumar@expediagroup.com), [@guillermomanzo](https://github.com/guillermomanzo), [Erik Lindgren](https://github.com/lindgren) | EG Common Developer Toolkit | +| [Paddle.com](https://paddle.com) | [Ioannis Georgoulas](https://github.com/geototti21) | Developer portal (Tech Docs, Service Catalog, Internal Tooling), we use vanilla Backstage FE and custom BE implementation in Go | +| [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/) | [Jim Haughwout](https://github.com/JimHaughwout) | 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. | +| [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. | +| [Netflix](https://www.netflix.com/) | [bleathem](https://github.com/bleathem) | Our Backstage implementation will be the front door to a unified experience connecting our internal platform products across important workflows with integrated knowledge and support. | +| [b.well](https://www.icanbwell.com/) | [Jacob Rosales](https://github.com/jrosales) | Foundation for our engineering portal and cloud insights. | +| [PagerDuty](https://www.pagerduty.com/) | [Mark Shaw](https://github.com/markshawtoronto) | Developer portal, initially focused on software templates and tech-docs. | +| [MoonShiner](https://moonshiner.at) | [Fabian Hippmann](https://github.com/FabianHippmann) | Developer portal - helps us keep track of our customer projects, onboard new developers & improve our development process 🌕🚀🧑‍🚀 | +| [FundApps](https://www.fundapps.co/) | [Elliot Greenwood](https://github.com/egnwd) | Developer Portal - A place for us to keep track of our projects and documentation for all services and processes | +| [DAZN](https://dazn.com/) | [Lou Bichard](https://twitter.com/loujaybee), [Marco Crivellaro](https://github.com/crivetechie), [Alex Hollerith](mailto:alex.hollerith@dazn.com) | Ingesting all of DAZN's repos for the catalog, migrating our internal platform apps (pull request boards, release information, inner source marketplace etc) to Backstage plugins (where applicable). | +| [HelloFresh](https://www.hellofresh.de/) | [@iammuho](https://github.com/iammuho), [@ElenaForester](https://github.com/ElenaForester), [@diegomarangoni](https://github.com/diegomarangoni) | Our developer portal at HelloFresh - Spread across an organisation of 500+ engineers globally. | +| [FactSet](https://www.factset.com/) | [@kuangp](https://github.com/kuangp) | Developer portal to provide discoverability to all internal components, APIs, documentation, and scaffold templates with integrations to our internal infrastructure tools. | +| [Workrise](https://www.workrise.com/) | [Michael Rode](https://github.com/michaelrode) | Developer portal, main gateway to our infrastructure, documentation and internal tooling. | +| [RedVentures](https://www.redventures.com/) | [Chris Diaz](https://github.com/codingdiaz) | Developer portal that brings everything an engineer needs to provide value into a single pane of glass. | +| [MavTek](https://www.mavtek.com/) | [@fgascon](https://github.com/fgascon) | Developer portal focused on standardizing practices, centralizing documentation and streamlining developer practices. | +| [QuintoAndar](https://www.quintoandar.com.br/) | [@quintoandar](https://github.com/quintoandar) | Developer portal, services catalog and centralization of service metrics. | +| [empathy.co](https://empathy.co/) | [@guillermotti](https://github.com/guillermotti) | Developer portal for tech docs, service catalog, plugin discovery and much more. | +| [creditas.com](https://creditas.com/) | [@aureliosaraiva](https://github.com/aureliosaraiva) [@Creditas](https://github.com/creditas) | Centralization of all services, standards, documentation, etc. We started the deployment process. | +| [Prisjakt](https://www.prisjakt.nu) / [PriceSpy](https://pricespy.co.uk) | [@kennylindahl](https://github.com/kennylindahl) | Internal developer portal - Documentation, scaffolding, software catalog, TechRadar, Gitlab org data integration | +| [Powerspike](https://powerspike.tv/) | [@trelore](https://github.com/trelore) | Developer portal for documentation of core libraries and repositories. | +| [2U](https://2u.com) | [Andrew Thal](https://github.com/athal7) | Development team home-base, promoting service discoverability, resource dependencies, and tech radar | +| [Taxfix](https://taxfix.de/) | [Sami Ur Rehman](https://github.com/samiurrehman92) | Developer's portal with software catalog at it's core. Hosts API Specs, Tech Docs, Tech Radar and some custom plugins. | +| [Busuu](https://busuu.com/) | [Adam Tester](https://github.com/adamtester) | Developer portal with service catalog, API docs, Event docs, service templating, and cost insights. | +| [Loadsmart](https://loadsmart.com/) | [Loadsmart](https://github.com/loadsmart) | Improve services visibility and operations for service owners and developers. | +| [Monzo](https://monzo.com/) | [@WillSewell](https://github.com/WillSewell), [@joechrisellis](https://github.com/joechrisellis) | Developer portal showing metadata and docs for over 2000 microservices. We have built a number of plugins such as a UI for our system to measure [software excellence](https://monzo.com/blog/2021/09/15/how-we-measure-software-excellence), and a UI to show deployment and config change events. | +| [Vaimo](https://www.vaimo.com) | [@vaimo-magnus](https://github.com/vaimo-magnus) | Developer Portal for our developers at Vaimo, currently docs and self-service towards our internal PaaS based on k8s. Plans to extend the catalog into Projects, Environments etc | +| [Wayfair](https://www.wayfair.com) | [@fransan](https://github.com/fransan), [@errskipower](https://github.com/errskipower), [@hrrs](https://github.com/hrrs) | Developer portal for service catalog, technical documentation, and APIs. | +| [CircleHD](https://www.circlehd.com) | [@circlehddev](https://github.com/circlehddev) | Developer Portal for internal dev team across the globe | +| [CastDesk](https://castdesk.com) | [@circlehddev](https://github.com/circlehddev) | Developer Portal for internal dev team across the globe | +| [Santagostino](https://santagostino.it) | [@santagostino](https://github.com/santagostino) | Developer portal, gateway to our infrastructure, documentation, service catalog and internal tooling. | +| [Peak](https://peak.ai) | [Luke Beamish](https://github.com/lukebeamish-peak) | Developer portal for all internal engineers to access documentation and tooling. | +| [Gelato](https://gelato.com/) | [Dmitry Makarenko](https://github.com/dmitry-makarenko-gelato) | Developer portal: documentation, service templates, org structure, service catalog, plugins for integration with internal and third-party systems🚀. | +| [GoCardless](https://gocardless.com/) | [James Turley](https://github.com/tragiclifestories) | Developer portal: documentation, service templates, org structure, service catalog, plugins for integration with internal systems. | +| [Box](https://www.box.com) | [@kielosz](https://github.com/kielosz), [@jluk-box](https://github.com/jluk-box), [@ptychu](https://github.com/ptychu), [@alexrybch](https://github.com/alexrybch), [@szubster](https://github.com/szubster) | Developer portal for service catalog, integration with internal systems, new service onboarding. | +| [Bazaarvoice](https://www.bazaarvoice.com) | [@niallmccullagh](https://github.com/niallmccullagh) | Developer portal for service catalog and scaffolds, publishing Github docs and API documentation, visualising our internal tech radar and our product engineering org structure. | +| [Krateo PlatformOps](https://www.krateo.io) | [@projectkerberus](https://github.com/projectkerberus) | A multi-cloud control plane to create, manage and deploy any kind of resource easily and centrally via a Developer Portal that centralizes via a self-service catalog the templating and ownership of services, the available documentation, the overview of the components that compose an entire domain and all the data of the service lifecycle. | +| [Adevinta](https://www.adevinta.com) | [Ray Sinnema](https://github.com/RemonSinnema) | Showcase shared services to our internal customers. | +| [Splunk](https://www.splunk.com) | [@tonytamsf](https://github.com/tonytamsf) | Developer portal as a centralized place to find people, services, documentation, escalation policies and give bravos. This portal is also being used as a centralized search engine for engineering specific documentation. | +| [SoundCloud](https://www.soundcloud.com) | [Julio Zynger](https://github.com/julioz) | Developer portal as a [humane registry](https://martinfowler.com/bliki/HumaneRegistry.html) for the organization: catalog of people, services, documentation, feature toggles, escalation policies, etc. | +| [Volvofinans Bank](https://www.volvofinans.se) | [Johan Hammar](https://github.com/johanhammar) | Developer portal enabling engineers to manage and explore software and documentation. | +| [Palo Alto Networks](https://www.paloaltonetworks.com) | [Jeremy Guarini](https://github.com/jeremyguarini), [Brian Lomeland](https://github.com/bbbmmmlll), [Palo Alto Networks](https://github.com/PaloAltoNetworks) | Developer portal, service catalog, documentation and tooling | +| [Signal Iduna Group](https://www.signal-iduna.de/) | [Jonas Thomsen](https://github.com/JoThomsen) | Developer Portal, documentation, monitoring, service catalog for our insurance ecosystem | +| [Tradeshift](https://www.tradeshift.com/) | [Soren Mathiasen](https://github.com/sorenmat) | Developer Portal: documentation, monitoring, service templates, service catalog for our micro services | +| [Unity](https://unity.com) | [Ted Cordery](https://github.com/TeddyBallGame) | A centralized service catalog with documentation for our service engineers. | +| [PicPay](https://www.picpay.com) | [Luis Baroni](https://github.com/lcsbaroni), [Renata Poluceno](https://github.com/renatapoluceno), [PicPay](https://github.com/picpay) | Developer portal for building services throught templates, service catalog with ownership of services, documentation and metrics providing autonomy and visibility for all. | +| [Epic Games](https://www.epicgames.com) | [Brian Jung](https://github.com/brian-at-epic), [Jeff Goldian](https://github.com/jeffgoldian-Epic) | Developer Portal: Service Catalog, Documentation, Software Templates and more making our internal teams' lives easier! | +| [Globo](https://globo.com) | [Carlos Gusmão](https://github.com/caeugusmao), [Guilherme Vierno](https://github.com/vierno), [Denis Aoki](https://github.com/dnsaoki2), [Maycon Dionisio](https://github.com/MayconDionisio), | Reduce the friction of accessing the information engineers need about Globo's digital services through a coherent and centralized experience. | +| [QBE](https://www.qbe.com/) | [Daniel Steel](https://github.com/danielsteelqbe), [Pete Jespers](https://github.com/petejespersqbe) | Developer portal allowing our global teams to explore and create applications, documentation and cloud infrastructure easily and quickly 🚀 | +| [GoTo](https://www.goto.com) | [Lorenzo Orsatti](https://github.com/lorsatti) | Improve onboarding experience of new developers. Discover faster and painlessly developer documentation, API definitions and team information. Provide useful dev metrics in a central place. Provide easy-to-use templates for new services. | +| [Telstra](https://www.telstra.com.au) | [@kiranpatel11](https://github.com/kiranpatel11), [JasonC](https://github.com/JasonC17) | Primary usage: software catalog and templates
Emerging usage : TechDocs, Explore Ecosystem, TechRadar, etc | +| [Mosaico](https://www.mosaico.com.br/) | [Wédney Yuri](https://github.com/wedneyyuri),[@tino.milton](https://github.com/miltonjacomini) | A centralized service catalog of our documentation for our service engineers. | +| [Mox Bank](https://www.mox.com/) | [Nick Laqua](https://github.com/nick-laqua-dragon), [Gauthier Roebroeck](https://github.com/gauthier-roebroeck-mox) | "Single pane of glass" developer portal for providing a best-in-class developer experience to our product teams and making Mox the best tech environment in Hongkong 🥰🚀 | +| [Keyloop](https://www.keyloop.com/) | [Andre Wanlin](https://github.com/awanlin) | Future-motive Developer Portal to help our teams create technology to make everything about buying and owning a car better. 🚗 | +| [Simply Business](https://sbtech.simplybusiness.co.uk/) | [@addersuk](https://github.com/addersuk), [@LightningStairs](https://github.com/LightningStairs), [@punitcse](https://github.com/punitcse), [@moltenice](https://github.com/moltenice) | Central developer portal to access everything a developer needs such as docs, internal service catalog, and the ability to quickly create a new service from a template. Internally developed Backstage plugins allow us to customise the experience to how we work. | +| [Overwolf](https://www.overwolf.com) | [@tomwolfgang](https://github.com/tomwolfgang) | Dev portal - software catalog, tech-docs, scaffolding | +| [Hotmart](https://www.hotmart.com) | [@fabioviana-hotmart](https://github.com/fabioviana-hotmart) | The main Developers Portal to centralize docs, applications and technical metrics. | +| [EF Education First](https://www.ef.com) | [Daan Boerlage](https://github.com/runebaas), [Rafał Nowosielski](https://github.com/rnowosielski) | Our developer portal - primarily used for cataloging and scaffolding with the ambition to expand with more feature adoptions over time | +| [Power Home Remodeling](https://www.techatpower.com) | [Ben Langfeld](https://github.com/benlangfeld) | Developer portal to our internal services, build on open-source software (including Kubernetes) in our own datacenters. Our Portal allows our team members to navigate inherant complexity and standardise. | +| [Livspace](https://www.livspace.com) | [Praveen Kumar](https://github.com/praveen-livspace) | Developer portal, service catalog, tech docs, API docs and plugins | +| [Just Eat Takeaway](https://www.justeattakeaway.com) | [Kim Wilson](https://github.com/kwilson541) | Our developer portal which centralises applications, reduces cognitive load and provides teams insights. | +| [Hopin](https://hopin.com) | [Vladimir Glafirov](https://github.com/vglafirov), [Chloe Lee](https://github.com/msfuko) | Developer portal to streamline the development practices. Integrated with service catalog, software templates, application monitoring, tech docs and plugins. | +| [HBO Max](https://hbomax.com) | [@mdb](https://github.com/mdb), [@nesta219](https://github.com/nesta219), [@nmische](https://github.com/nmische), [@hbomark](https://github.com/hbomark) | Developer portal hosting service catalog and API documentation, as well as cloud infrastructure details, operational visibility tools, and a custom plugin for browsing notable platform change events, such as deployments and configuration updates. | +| [RCHLO](https://www.riachuelo.com.br) & [MIDWAY](https://www.midway.com.br) | [@marcosborges](https://github.com/marcosborges), [@defaultbr](https://github.com/defaultbr) | Self-Service Platform | +| [HP Inc](https://www.hp.com) | [Damon Kaswell](https://github.com/dekoding) | DevEx engagement hub (dev portal: docs, standards, Q&A) and extensive assets catalog (APIs, services, code, data, etc.) for the pan-HP internal developer community. +| [VMware](https://www.vmware.com) | [@mpriamo](https://github.com/mpriamo), [@krisapplegate](https://github.com/krisapplegate) | Part of [Tanzu Application Platform](https://docs.vmware.com/en/VMware-Tanzu-Application-Platform/index.html) offering; internal developer portal | +| [Ualá](https://www.uala.com.ar/) | [Santiago Bernal](https://github.com/sabernal) | Initial work being done to centralize documentation for all our microservices and APIs, as well as scaffolding new services and tracking code quality | +| [IKEA IT AB](https://www.ingka.com) | [@bjornramberg](https://github.com/bjornramberg), [@supriyachitale](https://github.com/supriyachitale) | Supporting engineers at scale with self serve access and connecting the dots of our engineering platform and services, enabling product teams to move faster and go further, and unleashing innovation, reuse and co-creation across the organisation. | +| [Invitae](https://www.invitae.com/en) | [@ryan-hanchett](https://github.com/ryan-hanchett), [@gmandler42](https://github.com/gmandler42) | Centralized Developer Experience portal, putting all of our tooling behind a single pane of glass and creating a living service catalog. | +| [Fortum](https://www.fortum.com/) | [@brunoamaroalmeida](https://github.com/brunoamaroalmeida), [@dhaval-vithalani](https://github.com/dhaval-vithalani), [@sunilkumarmohanty](https://github.com/sunilkumarmohanty) | A central portal containing information about our applications, services, processes and other software assets to be used by Fortum software engineering community. | From b9e83843e276f3313c627737b7d4fcd2f47257ef Mon Sep 17 00:00:00 2001 From: Karan Shah Date: Wed, 9 Feb 2022 16:19:58 +0000 Subject: [PATCH 057/383] Stop using snake case Signed-off-by: Karan Shah --- plugins/airbrake/dev/index.tsx | 2 +- plugins/airbrake/package.json | 5 ++--- .../airbrake/src/api/{airbrake-api.ts => AirbrakeApi.ts} | 2 +- .../api/{production-api.test.ts => ProductionApi.test.ts} | 4 ++-- .../src/api/{production-api.ts => ProductionApi.ts} | 4 ++-- .../src/api/{airbrake-groups.d.ts => airbrakeGroups.d.ts} | 0 plugins/airbrake/src/api/index.ts | 8 ++++---- plugins/airbrake/src/api/mock/{mock-api.ts => MockApi.ts} | 6 +++--- .../src/api/mock/{mock-entity.ts => MockEntity.ts} | 0 ...ke-groups-api-mock.json => airbrakeGroupsApiMock.json} | 0 plugins/airbrake/src/api/mock/index.ts | 2 +- .../EntityAirbrakeWidget/EntityAirbrakeWidget.test.tsx | 4 ++-- plugins/airbrake/src/extensions.test.tsx | 2 +- 13 files changed, 19 insertions(+), 20 deletions(-) rename plugins/airbrake/src/api/{airbrake-api.ts => AirbrakeApi.ts} (95%) rename plugins/airbrake/src/api/{production-api.test.ts => ProductionApi.test.ts} (92%) rename plugins/airbrake/src/api/{production-api.ts => ProductionApi.ts} (92%) rename plugins/airbrake/src/api/{airbrake-groups.d.ts => airbrakeGroups.d.ts} (100%) rename plugins/airbrake/src/api/mock/{mock-api.ts => MockApi.ts} (85%) rename plugins/airbrake/src/api/mock/{mock-entity.ts => MockEntity.ts} (100%) rename plugins/airbrake/src/api/mock/{airbrake-groups-api-mock.json => airbrakeGroupsApiMock.json} (100%) diff --git a/plugins/airbrake/dev/index.tsx b/plugins/airbrake/dev/index.tsx index 8fc43a73a1..cd0d29301f 100644 --- a/plugins/airbrake/dev/index.tsx +++ b/plugins/airbrake/dev/index.tsx @@ -25,7 +25,7 @@ import { import { ApiBar } from './components/ApiBar'; import { Content, Header, Page } from '@backstage/core-components'; import { EntityProvider } from '@backstage/plugin-catalog-react'; -import { createEntity } from '../src/api/mock/mock-entity'; +import { createEntity } from '../src/api/mock/MockEntity'; import CloudOffIcon from '@material-ui/icons/CloudOff'; import CloudIcon from '@material-ui/icons/Cloud'; import { Context, ContextProvider } from './components/ContextProvider'; diff --git a/plugins/airbrake/package.json b/plugins/airbrake/package.json index 220873dbea..1ebd99434e 100644 --- a/plugins/airbrake/package.json +++ b/plugins/airbrake/package.json @@ -23,7 +23,9 @@ "@backstage/catalog-model": "^0.9.10", "@backstage/core-components": "^0.8.8-next.0", "@backstage/core-plugin-api": "^0.6.0", + "@backstage/dev-utils": "^0.2.21-next.0", "@backstage/plugin-catalog-react": "^0.6.12", + "@backstage/test-utils": "^0.2.4", "@backstage/theme": "^0.2.14", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", @@ -35,12 +37,9 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@types/object-hash": "^2.2.1", "@backstage/app-defaults": "^0.1.7-next.0", "@backstage/cli": "^0.13.2-next.0", "@backstage/core-app-api": "^0.5.2", - "@backstage/dev-utils": "^0.2.21-next.0", - "@backstage/test-utils": "^0.2.4", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^11.2.5", "@testing-library/user-event": "^13.1.8", diff --git a/plugins/airbrake/src/api/airbrake-api.ts b/plugins/airbrake/src/api/AirbrakeApi.ts similarity index 95% rename from plugins/airbrake/src/api/airbrake-api.ts rename to plugins/airbrake/src/api/AirbrakeApi.ts index 3e3fe123b9..a29aa3eca7 100644 --- a/plugins/airbrake/src/api/airbrake-api.ts +++ b/plugins/airbrake/src/api/AirbrakeApi.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import { Groups } from './airbrake-groups'; +import { Groups } from './airbrakeGroups'; import { createApiRef } from '@backstage/core-plugin-api'; export const airbrakeApiRef = createApiRef({ diff --git a/plugins/airbrake/src/api/production-api.test.ts b/plugins/airbrake/src/api/ProductionApi.test.ts similarity index 92% rename from plugins/airbrake/src/api/production-api.test.ts rename to plugins/airbrake/src/api/ProductionApi.test.ts index 3753cab592..d978cd82a0 100644 --- a/plugins/airbrake/src/api/production-api.test.ts +++ b/plugins/airbrake/src/api/ProductionApi.test.ts @@ -14,9 +14,9 @@ * limitations under the License. */ -import { ProductionAirbrakeApi } from './production-api'; +import { ProductionAirbrakeApi } from './ProductionApi'; import nock from 'nock'; -import mockGroupsData from './mock/airbrake-groups-api-mock.json'; +import mockGroupsData from './mock/airbrakeGroupsApiMock.json'; describe('The production Airbrake API', () => { let productionApi: ProductionAirbrakeApi; diff --git a/plugins/airbrake/src/api/production-api.ts b/plugins/airbrake/src/api/ProductionApi.ts similarity index 92% rename from plugins/airbrake/src/api/production-api.ts rename to plugins/airbrake/src/api/ProductionApi.ts index cd8d2f95bf..76416bc173 100644 --- a/plugins/airbrake/src/api/production-api.ts +++ b/plugins/airbrake/src/api/ProductionApi.ts @@ -14,8 +14,8 @@ * limitations under the License. */ -import { Groups } from './airbrake-groups'; -import { AirbrakeApi } from './airbrake-api'; +import { Groups } from './airbrakeGroups'; +import { AirbrakeApi } from './AirbrakeApi'; export class ProductionAirbrakeApi implements AirbrakeApi { constructor(private readonly apiKey?: string) {} diff --git a/plugins/airbrake/src/api/airbrake-groups.d.ts b/plugins/airbrake/src/api/airbrakeGroups.d.ts similarity index 100% rename from plugins/airbrake/src/api/airbrake-groups.d.ts rename to plugins/airbrake/src/api/airbrakeGroups.d.ts diff --git a/plugins/airbrake/src/api/index.ts b/plugins/airbrake/src/api/index.ts index 7bad94e298..2d92789653 100644 --- a/plugins/airbrake/src/api/index.ts +++ b/plugins/airbrake/src/api/index.ts @@ -15,7 +15,7 @@ */ export * from './mock'; -export type { AirbrakeApi } from './airbrake-api'; -export { airbrakeApiRef } from './airbrake-api'; -export type { Groups } from './airbrake-groups'; -export { ProductionAirbrakeApi } from './production-api'; +export type { AirbrakeApi } from './AirbrakeApi'; +export { airbrakeApiRef } from './AirbrakeApi'; +export type { Groups } from './airbrakeGroups'; +export { ProductionAirbrakeApi } from './ProductionApi'; diff --git a/plugins/airbrake/src/api/mock/mock-api.ts b/plugins/airbrake/src/api/mock/MockApi.ts similarity index 85% rename from plugins/airbrake/src/api/mock/mock-api.ts rename to plugins/airbrake/src/api/mock/MockApi.ts index 4acfa51778..dbb1d5c049 100644 --- a/plugins/airbrake/src/api/mock/mock-api.ts +++ b/plugins/airbrake/src/api/mock/MockApi.ts @@ -14,9 +14,9 @@ * limitations under the License. */ -import { Groups } from '../airbrake-groups'; -import { AirbrakeApi } from '../airbrake-api'; -import mockGroupsData from './airbrake-groups-api-mock.json'; +import { Groups } from '../airbrakeGroups'; +import { AirbrakeApi } from '../AirbrakeApi'; +import mockGroupsData from './airbrakeGroupsApiMock.json'; export class MockAirbrakeApi implements AirbrakeApi { waitTimeInMillis: number; diff --git a/plugins/airbrake/src/api/mock/mock-entity.ts b/plugins/airbrake/src/api/mock/MockEntity.ts similarity index 100% rename from plugins/airbrake/src/api/mock/mock-entity.ts rename to plugins/airbrake/src/api/mock/MockEntity.ts diff --git a/plugins/airbrake/src/api/mock/airbrake-groups-api-mock.json b/plugins/airbrake/src/api/mock/airbrakeGroupsApiMock.json similarity index 100% rename from plugins/airbrake/src/api/mock/airbrake-groups-api-mock.json rename to plugins/airbrake/src/api/mock/airbrakeGroupsApiMock.json diff --git a/plugins/airbrake/src/api/mock/index.ts b/plugins/airbrake/src/api/mock/index.ts index f084268951..0588d45fa6 100644 --- a/plugins/airbrake/src/api/mock/index.ts +++ b/plugins/airbrake/src/api/mock/index.ts @@ -14,4 +14,4 @@ * limitations under the License. */ -export { MockAirbrakeApi } from './mock-api'; +export { MockAirbrakeApi } from './MockApi'; diff --git a/plugins/airbrake/src/components/EntityAirbrakeWidget/EntityAirbrakeWidget.test.tsx b/plugins/airbrake/src/components/EntityAirbrakeWidget/EntityAirbrakeWidget.test.tsx index 5317d1469c..c242ff77f2 100644 --- a/plugins/airbrake/src/components/EntityAirbrakeWidget/EntityAirbrakeWidget.test.tsx +++ b/plugins/airbrake/src/components/EntityAirbrakeWidget/EntityAirbrakeWidget.test.tsx @@ -16,13 +16,13 @@ import React from 'react'; import { EntityAirbrakeWidget } from './EntityAirbrakeWidget'; -import exampleData from '../../api/mock/airbrake-groups-api-mock.json'; +import exampleData from '../../api/mock/airbrakeGroupsApiMock.json'; import { MockErrorApi, renderInTestApp, TestApiProvider, } from '@backstage/test-utils'; -import { createEntity } from '../../api/mock/mock-entity'; +import { createEntity } from '../../api/mock/MockEntity'; import { airbrakeApiRef, MockAirbrakeApi, diff --git a/plugins/airbrake/src/extensions.test.tsx b/plugins/airbrake/src/extensions.test.tsx index 3b2d1927d9..d677d939a4 100644 --- a/plugins/airbrake/src/extensions.test.tsx +++ b/plugins/airbrake/src/extensions.test.tsx @@ -18,7 +18,7 @@ import { EntityAirbrakeContent } from './extensions'; import { Route } from 'react-router'; import { renderInTestApp, TestApiProvider } from '@backstage/test-utils'; import { airbrakeApiRef, MockAirbrakeApi } from './api'; -import { createEntity } from './api/mock/mock-entity'; +import { createEntity } from './api/mock/MockEntity'; import { EntityProvider } from '@backstage/plugin-catalog-react'; describe('The Airbrake entity', () => { From 71a6648e74adfb0886ee80e733e9ad3e840c3ca4 Mon Sep 17 00:00:00 2001 From: Karan Shah Date: Thu, 10 Feb 2022 09:39:11 +0000 Subject: [PATCH 058/383] Move tests to MSW from Nock Signed-off-by: Karan Shah --- plugins/airbrake/package.json | 1 - .../airbrake/src/api/ProductionApi.test.ts | 42 +++++++++++-------- .../EntityAirbrakeWidget.test.tsx | 20 ++++++--- yarn.lock | 20 --------- 4 files changed, 39 insertions(+), 44 deletions(-) diff --git a/plugins/airbrake/package.json b/plugins/airbrake/package.json index 1ebd99434e..36eb40f60b 100644 --- a/plugins/airbrake/package.json +++ b/plugins/airbrake/package.json @@ -48,7 +48,6 @@ "@types/object-hash": "^2.2.1", "cross-fetch": "^3.0.6", "msw": "^0.35.0", - "nock": "^13.2.4", "react-router": "6.0.0-beta.0" }, "files": [ diff --git a/plugins/airbrake/src/api/ProductionApi.test.ts b/plugins/airbrake/src/api/ProductionApi.test.ts index d978cd82a0..04bb73caf7 100644 --- a/plugins/airbrake/src/api/ProductionApi.test.ts +++ b/plugins/airbrake/src/api/ProductionApi.test.ts @@ -15,36 +15,44 @@ */ import { ProductionAirbrakeApi } from './ProductionApi'; -import nock from 'nock'; +import { rest } from 'msw'; import mockGroupsData from './mock/airbrakeGroupsApiMock.json'; +import { setupServer } from 'msw/node'; +import { setupRequestMockHandlers } from '@backstage/test-utils'; describe('The production Airbrake API', () => { - let productionApi: ProductionAirbrakeApi; - - beforeEach(() => { - productionApi = new ProductionAirbrakeApi('fakeApiKey'); - }); + const productionApi = new ProductionAirbrakeApi('fakeApiKey'); + const worker = setupServer(); + setupRequestMockHandlers(worker); it('fetches groups using the provided project ID', async () => { - const scope = nock('https://api.airbrake.io') - .get('/api/v4/projects/123456/groups?key=fakeApiKey') - .reply(200, mockGroupsData); - expect(scope.isDone()).toBe(false); + worker.use( + rest.get( + 'https://api.airbrake.io/api/v4/projects/123456/groups', + (req, res, ctx) => { + if (req.url.searchParams.get('key') === 'fakeApiKey') { + return res(ctx.status(200), ctx.json(mockGroupsData)); + } + return res(ctx.status(401)); + }, + ), + ); const groups = await productionApi.fetchGroups('123456'); - expect(scope.isDone()).toBe(true); expect(groups).toStrictEqual(mockGroupsData); }); it('throws if fetching groups was unsuccessful', async () => { - const scope = nock('https://api.airbrake.io') - .get('/api/v4/projects/123456/groups?key=fakeApiKey') - .reply(500); - expect(scope.isDone()).toBe(false); + worker.use( + rest.get( + 'https://api.airbrake.io/api/v4/projects/123456/groups', + (_, res, ctx) => { + return res(ctx.status(500)); + }, + ), + ); await expect(productionApi.fetchGroups('123456')).rejects.toThrow(); - - expect(scope.isDone()).toBe(true); }); }); diff --git a/plugins/airbrake/src/components/EntityAirbrakeWidget/EntityAirbrakeWidget.test.tsx b/plugins/airbrake/src/components/EntityAirbrakeWidget/EntityAirbrakeWidget.test.tsx index c242ff77f2..ef1ac229c9 100644 --- a/plugins/airbrake/src/components/EntityAirbrakeWidget/EntityAirbrakeWidget.test.tsx +++ b/plugins/airbrake/src/components/EntityAirbrakeWidget/EntityAirbrakeWidget.test.tsx @@ -20,6 +20,7 @@ import exampleData from '../../api/mock/airbrakeGroupsApiMock.json'; import { MockErrorApi, renderInTestApp, + setupRequestMockHandlers, TestApiProvider, } from '@backstage/test-utils'; import { createEntity } from '../../api/mock/MockEntity'; @@ -28,10 +29,14 @@ import { MockAirbrakeApi, ProductionAirbrakeApi, } from '../../api'; -import nock from 'nock'; import { errorApiRef } from '@backstage/core-plugin-api'; +import { rest } from 'msw'; +import { setupServer } from 'msw/node'; describe('EntityAirbrakeContent', () => { + const worker = setupServer(); + setupRequestMockHandlers(worker); + it('renders all errors sent from Airbrake', async () => { const widget = await renderInTestApp( @@ -58,10 +63,14 @@ describe('EntityAirbrakeContent', () => { }); it('states that an error occurred if the API call fails', async () => { - const scope = nock('https://api.airbrake.io') - .get('/api/v4/projects/123/groups?key=fakeApiKey') - .reply(500); - expect(scope.isDone()).toBe(false); + worker.use( + rest.get( + 'https://api.airbrake.io/api/v4/projects/123/groups', + (_, res, ctx) => { + return res(ctx.status(500)); + }, + ), + ); const mockErrorApi = new MockErrorApi({ collect: true }); const widget = await renderInTestApp( @@ -82,6 +91,5 @@ describe('EntityAirbrakeContent', () => { expect(mockErrorApi.getErrors()[0].error.message).toStrictEqual( 'Failed fetching Airbrake groups', ); - expect(scope.isDone()).toBe(true); }); }); diff --git a/yarn.lock b/yarn.lock index 7461cc24f2..cbe90e7e83 100644 --- a/yarn.lock +++ b/yarn.lock @@ -16250,11 +16250,6 @@ lodash.once@^4.0.0, lodash.once@^4.1.1: resolved "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" integrity sha1-DdOXEhPHxW34gJd9UEyI+0cal6w= -lodash.set@^4.3.2: - version "4.3.2" - resolved "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz#d8757b1da807dde24816b0d6a84bea1a76230b23" - integrity sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM= - lodash.sortby@^4.7.0: version "4.7.0" resolved "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" @@ -17738,16 +17733,6 @@ no-case@^3.0.4: lower-case "^2.0.2" tslib "^2.0.3" -nock@^13.2.4: - version "13.2.4" - resolved "https://registry.npmjs.org/nock/-/nock-13.2.4.tgz#43a309d93143ee5cdcca91358614e7bde56d20e1" - integrity sha512-8GPznwxcPNCH/h8B+XZcKjYPXnUV5clOKCjAqyjsiqA++MpNx9E9+t8YPp0MbThO+KauRo7aZJ1WuIZmOrT2Ug== - dependencies: - debug "^4.1.0" - json-stringify-safe "^5.0.1" - lodash.set "^4.3.2" - propagate "^2.0.0" - node-abort-controller@^3.0.1: version "3.0.1" resolved "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.0.1.tgz#f91fa50b1dee3f909afabb7e261b1e1d6b0cb74e" @@ -19804,11 +19789,6 @@ prop-types@^15.0.0, prop-types@^15.5.10, prop-types@^15.5.7, prop-types@^15.5.8, object-assign "^4.1.1" react-is "^16.13.1" -propagate@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/propagate/-/propagate-2.0.1.tgz#40cdedab18085c792334e64f0ac17256d38f9a45" - integrity sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag== - properties-reader@^2.2.0: version "2.2.0" resolved "https://registry.npmjs.org/properties-reader/-/properties-reader-2.2.0.tgz#41d837fe143d8d5f2386b6a869a1975c0b2c595c" From c13bb6fc29ca8c332af98543600a30691ab6a63e Mon Sep 17 00:00:00 2001 From: Karan Shah Date: Thu, 10 Feb 2022 09:57:55 +0000 Subject: [PATCH 059/383] Updated yarn.lock after fixing conflict with master Signed-off-by: Karan Shah --- yarn.lock | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/yarn.lock b/yarn.lock index 6988edda3f..b0eabdb265 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1440,7 +1440,7 @@ "@material-ui/lab" "4.0.0-alpha.57" react-use "^17.2.4" -"@backstage/plugin-catalog-react@^0.6.13", "@backstage/plugin-catalog-react@^0.6.5", "@backstage/plugin-catalog-react@^0.6.9": +"@backstage/plugin-catalog-react@^0.6.12", "@backstage/plugin-catalog-react@^0.6.13", "@backstage/plugin-catalog-react@^0.6.5", "@backstage/plugin-catalog-react@^0.6.9": version "0.6.13" resolved "https://registry.npmjs.org/@backstage/plugin-catalog-react/-/plugin-catalog-react-0.6.13.tgz#b325eae501d3edeb8b7caef5d9615f2e632f5430" integrity sha512-XBwop7PwAZqfongx3KP6jAJar+MEscLSp8nLuHYX5XxA+suQNiBgi96uO3SEQmvtae+hvsRM7c0WHSxbYiXsDA== @@ -1835,14 +1835,7 @@ dependencies: "@date-io/core" "^1.3.13" -"@date-io/luxon@1.x": - version "1.3.13" - resolved "https://registry.npmjs.org/@date-io/luxon/-/luxon-1.3.13.tgz#68f0134bb38ef486b2ed6df01981f814c633e28a" - integrity sha512-9wUrJCNSMZJeYAiH+dbb45oGpnHeFP7TOH/Lt26If47gjFCkjvyINzWx+K5AGsnlP0Qosxc7hkF1yLi6ecutxw== - dependencies: - "@date-io/core" "^1.3.13" - -"@date-io/luxon@^1.3.13": +"@date-io/luxon@1.x", "@date-io/luxon@^1.3.13": version "1.3.13" resolved "https://registry.npmjs.org/@date-io/luxon/-/luxon-1.3.13.tgz#68f0134bb38ef486b2ed6df01981f814c633e28a" integrity sha512-9wUrJCNSMZJeYAiH+dbb45oGpnHeFP7TOH/Lt26If47gjFCkjvyINzWx+K5AGsnlP0Qosxc7hkF1yLi6ecutxw== From dcbd590efc1dc04109a953c50606a9f9e5d92ca5 Mon Sep 17 00:00:00 2001 From: Karan Shah Date: Thu, 10 Feb 2022 10:41:21 +0000 Subject: [PATCH 060/383] Try and properly support having config.d.ts away from the root folder Signed-off-by: Karan Shah --- plugins/airbrake-backend/package.json | 3 ++- plugins/airbrake-backend/{ => src/config}/config.d.ts | 0 plugins/airbrake-backend/src/config/index.ts | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) rename plugins/airbrake-backend/{ => src/config}/config.d.ts (100%) diff --git a/plugins/airbrake-backend/package.json b/plugins/airbrake-backend/package.json index 456423a0b2..fb9bca210f 100644 --- a/plugins/airbrake-backend/package.json +++ b/plugins/airbrake-backend/package.json @@ -39,8 +39,9 @@ }, "files": [ "dist", - "config.d.ts" + "src/config/config.d.ts" ], + "configSchema": "src/config/config.d.ts", "jest": { "coverageThreshold": { "global": { diff --git a/plugins/airbrake-backend/config.d.ts b/plugins/airbrake-backend/src/config/config.d.ts similarity index 100% rename from plugins/airbrake-backend/config.d.ts rename to plugins/airbrake-backend/src/config/config.d.ts diff --git a/plugins/airbrake-backend/src/config/index.ts b/plugins/airbrake-backend/src/config/index.ts index bc87a3c795..7cad13e15e 100644 --- a/plugins/airbrake-backend/src/config/index.ts +++ b/plugins/airbrake-backend/src/config/index.ts @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { Config } from '../../config'; +import { Config } from './config'; export { extractAirbrakeConfig } from './ExtractAirbrakeConfig'; export type AirbrakeConfig = Config['airbrake']; From e5f1efcd96b4d12c30e56f6d5d4fc4557528aa56 Mon Sep 17 00:00:00 2001 From: Karan Shah Date: Thu, 10 Feb 2022 11:13:33 +0000 Subject: [PATCH 061/383] Duplicating the Airbrake config section instead of reusing. It looks very tough to get it to work. Signed-off-by: Karan Shah --- plugins/airbrake-backend/api-report.md | 4 ++-- .../airbrake-backend/{src/config => }/config.d.ts | 0 plugins/airbrake-backend/package.json | 4 ++-- .../src/config/ExtractAirbrakeConfig.ts | 13 ++++++++++++- plugins/airbrake-backend/src/config/index.ts | 4 +--- 5 files changed, 17 insertions(+), 8 deletions(-) rename plugins/airbrake-backend/{src/config => }/config.d.ts (100%) diff --git a/plugins/airbrake-backend/api-report.md b/plugins/airbrake-backend/api-report.md index c888d55e5b..b9e9a50e0b 100644 --- a/plugins/airbrake-backend/api-report.md +++ b/plugins/airbrake-backend/api-report.md @@ -8,9 +8,9 @@ import express from 'express'; import { Logger as Logger_2 } from 'winston'; // @public -export type AirbrakeConfig = { +export interface AirbrakeConfig { apiKey: string; -}; +} // @public export function createRouter(options: RouterOptions): Promise; diff --git a/plugins/airbrake-backend/src/config/config.d.ts b/plugins/airbrake-backend/config.d.ts similarity index 100% rename from plugins/airbrake-backend/src/config/config.d.ts rename to plugins/airbrake-backend/config.d.ts diff --git a/plugins/airbrake-backend/package.json b/plugins/airbrake-backend/package.json index fb9bca210f..da025b117c 100644 --- a/plugins/airbrake-backend/package.json +++ b/plugins/airbrake-backend/package.json @@ -39,9 +39,9 @@ }, "files": [ "dist", - "src/config/config.d.ts" + "config.d.ts" ], - "configSchema": "src/config/config.d.ts", + "configSchema": "config.d.ts", "jest": { "coverageThreshold": { "global": { diff --git a/plugins/airbrake-backend/src/config/ExtractAirbrakeConfig.ts b/plugins/airbrake-backend/src/config/ExtractAirbrakeConfig.ts index 6fc2c5e04c..ea39a27d11 100644 --- a/plugins/airbrake-backend/src/config/ExtractAirbrakeConfig.ts +++ b/plugins/airbrake-backend/src/config/ExtractAirbrakeConfig.ts @@ -14,7 +14,18 @@ * limitations under the License. */ import { Config } from '@backstage/config'; -import { AirbrakeConfig } from '.'; + +/** + * The configuration needed for the airbrake-backend plugin + * + * @public + */ +export interface AirbrakeConfig { + /** + * The API Key to authenticate requests. More details on how to get this here: https://airbrake.io/docs/api/#authentication + */ + apiKey: string; +} /** * Extract the Airbrake config from a config object diff --git a/plugins/airbrake-backend/src/config/index.ts b/plugins/airbrake-backend/src/config/index.ts index 7cad13e15e..60d60c2761 100644 --- a/plugins/airbrake-backend/src/config/index.ts +++ b/plugins/airbrake-backend/src/config/index.ts @@ -13,7 +13,5 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { Config } from './config'; -export { extractAirbrakeConfig } from './ExtractAirbrakeConfig'; -export type AirbrakeConfig = Config['airbrake']; +export * from './ExtractAirbrakeConfig'; From 8855e652fa803c3e442b6fec8cdd5237260a31a6 Mon Sep 17 00:00:00 2001 From: Karan Shah Date: Thu, 10 Feb 2022 14:46:44 +0000 Subject: [PATCH 062/383] Update package.json dependencies to the latest versions of Backstage dependencies Signed-off-by: Karan Shah --- plugins/airbrake-backend/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/airbrake-backend/package.json b/plugins/airbrake-backend/package.json index da025b117c..09d18079a1 100644 --- a/plugins/airbrake-backend/package.json +++ b/plugins/airbrake-backend/package.json @@ -20,7 +20,7 @@ "clean": "backstage-cli clean" }, "dependencies": { - "@backstage/backend-common": "^0.10.7-next.0", + "@backstage/backend-common": "^0.10.7", "@backstage/config": "^0.1.13", "@types/express": "*", "express": "^4.17.1", @@ -31,7 +31,7 @@ "yn": "^4.0.0" }, "devDependencies": { - "@backstage/cli": "^0.13.2-next.0", + "@backstage/cli": "^0.13.2", "@types/http-proxy-middleware": "^0.19.3", "@types/supertest": "^2.0.8", "supertest": "^6.1.6", From aab863538baf61520669b48dc31e7d1634826fe1 Mon Sep 17 00:00:00 2001 From: Karan Shah Date: Thu, 10 Feb 2022 15:38:40 +0000 Subject: [PATCH 063/383] Update package.json dependencies to the latest versions of Backstage dependencies Signed-off-by: Karan Shah --- plugins/airbrake/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/airbrake/package.json b/plugins/airbrake/package.json index 4c6ab0c21e..915762896a 100644 --- a/plugins/airbrake/package.json +++ b/plugins/airbrake/package.json @@ -23,8 +23,8 @@ "@backstage/catalog-model": "^0.9.10", "@backstage/core-components": "^0.8.8", "@backstage/core-plugin-api": "^0.6.0", - "@backstage/dev-utils": "^0.2.21-next.0", - "@backstage/plugin-catalog-react": "^0.6.12", + "@backstage/dev-utils": "^0.2.21", + "@backstage/plugin-catalog-react": "^0.6.14", "@backstage/test-utils": "^0.2.4", "@backstage/theme": "^0.2.14", "@material-ui/core": "^4.12.2", From 32e27023f452192a83a6d6c215d601a087b46deb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 11 Feb 2022 04:15:05 +0000 Subject: [PATCH 064/383] chore(deps-dev): bump @types/aws4 from 1.5.2 to 1.11.1 Bumps [@types/aws4](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/aws4) from 1.5.2 to 1.11.1. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/aws4) --- updated-dependencies: - dependency-name: "@types/aws4" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- yarn.lock | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index d4357ea49e..0506feda3b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5023,9 +5023,11 @@ integrity sha512-dB14TltT1SNq73z3MaZfKyyBZ37NAgAFl8jze59bisR4fJ6pB6AYGxItHFkooZbN7UcVJX/cFudM4p8wp1W4rA== "@types/aws4@^1.5.1": - version "1.5.2" - resolved "https://registry.npmjs.org/@types/aws4/-/aws4-1.5.2.tgz#34e35b4405a619b9205be3e7678963bc7c8a47db" - integrity sha512-r8+XOv0BKw3Br0oU6w9cfu21PaQq/5ZeXvMOivNQYJLc9WcPCpEFDaQu72QNEQjYv5Otu48VhjjnbtwrSmk/rg== + version "1.11.1" + resolved "https://registry.npmjs.org/@types/aws4/-/aws4-1.11.1.tgz#1783c88bd2a2fd0ad5ed497668a6d0df8d5f3c43" + integrity sha512-yUnPMlHP5JMZJiiNZElJG5qj1ShezlaET6Bug9SBhYsxKVamh7aOwl7Q/XR1Y//cZ5PoeRb9j4hi9svb2+FLlg== + dependencies: + "@types/node" "*" "@types/babel__core@^7.0.0", "@types/babel__core@^7.1.7": version "7.1.9" From 029a5650fd7e026e848a7f6f2bd766e736627ec2 Mon Sep 17 00:00:00 2001 From: Himanshu Mishra Date: Fri, 11 Feb 2022 12:32:14 +0100 Subject: [PATCH 065/383] use homepage consistently Signed-off-by: Himanshu Mishra --- docs/getting-started/homepage.md | 38 ++++++++++++++++---------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/docs/getting-started/homepage.md b/docs/getting-started/homepage.md index 87cf741b15..b7f7b88c6f 100644 --- a/docs/getting-started/homepage.md +++ b/docs/getting-started/homepage.md @@ -1,30 +1,30 @@ --- id: homepage -title: Backstage Home Page - Setup and Customization +title: Backstage homepage - Setup and Customization description: Documentation on setting up and customizing Backstage homepage --- -## Home Page +## Homepage -Having a good Backstage home page can significantly improve the discoverability of the platform. You want your users to find all the things they need right from the home page and never have to remember direct URLs in Backstage. The [Home plugin](https://github.com/backstage/backstage/tree/master/plugins/home) introduces a system for composing a home page for Backstage in order to surface relevant info and provide convenient shortcuts for common tasks. It's designed with composability in mind with an open ecosystem that allows anyone to contribute with any component, to be included in any home page. +Having a good Backstage homepage can significantly improve the discoverability of the platform. You want your users to find all the things they need right from the homepage and never have to remember direct URLs in Backstage. The [Home plugin](https://github.com/backstage/backstage/tree/master/plugins/home) introduces a system for composing a homepage for Backstage in order to surface relevant info and provide convenient shortcuts for common tasks. It's designed with composability in mind with an open ecosystem that allows anyone to contribute with any component, to be included in any homepage. -For App Integrators, the system is designed to be composable to give total freedom in designing a Home Page that suits the needs of the organization. From the perspective of a Component Developer who wishes to contribute with building blocks to be included in Home Pages, there's a convenient interface for bundling the different parts and exporting them with both error boundary and lazy loading handled under the surface. +For App Integrators, the system is designed to be composable to give total freedom in designing a Homepage that suits the needs of the organization. From the perspective of a Component Developer who wishes to contribute with building blocks to be included in Homepages, there's a convenient interface for bundling the different parts and exporting them with both error boundary and lazy loading handled under the surface. At the end of this tutorial, you can expect: -- Your Backstage app to have a dedicated home page instead of Software Catalog. -- Understand the composability of home page and how to start customizing it for your own organization. +- Your Backstage app to have a dedicated homepage instead of Software Catalog. +- Understand the composability of homepage and how to start customizing it for your own organization. ### Prerequisites Before we begin, make sure - You have created your own standalone Backstage app using [`@backstage/create-app`](index.md#create-your-backstage-app) and not using a fork of the [backstage](https://github.com/backstage/backstage) repository. -- You do not have an existing home page, and by default you are redirected to Software Catalog when you open Backstage. +- You do not have an existing homepage, and by default you are redirected to Software Catalog when you open Backstage. -Now, let's get started by installing the home plugin and creating a simple home page for your Backstage app. +Now, let's get started by installing the home plugin and creating a simple homepage for your Backstage app. -### Setup home page +### Setup homepage #### 1. Install the plugin @@ -36,20 +36,20 @@ yarn add @backstage/plugin-home #### 2. Create a new HomePage component -Inside your `packages/app` directory, create a new file where our new Home Page component is going to live. Create `packages/app/src/components/home/HomePage.tsx` with the following initial code +Inside your `packages/app` directory, create a new file where our new homepage component is going to live. Create `packages/app/src/components/home/HomePage.tsx` with the following initial code ```tsx import React from 'react'; export const HomePage = () => { - /* We will shortly compose a pretty Home Page here. */ + /* We will shortly compose a pretty homepage here. */ return

Welcome to Backstage!

; }; ``` #### 3. Update router for the root `/` route -If you don't have a home page already, most likely you have a redirect setup to use the Catalog home page as a home page. +If you don't have a homepage already, most likely you have a redirect setup to use the Catalog homepage as a homepage. Inside your `packages/app/src/App.tsx`, look for @@ -59,7 +59,7 @@ const routes = ( ``` -Let's replace the `` line and use the new component we created in the previous step as the new home page. +Let's replace the `` line and use the new component we created in the previous step as the new homepage. ```diff // File: packages/app/src/App.tsx @@ -81,7 +81,7 @@ const routes = ( ### 4. Update sidebar items -Let's update the route for "Home" in the Backstage sidebar to point to the new home page. We'll also add a Sidebar item to quickly open Catalog. +Let's update the route for "Home" in the Backstage sidebar to point to the new homepage. We'll also add a Sidebar item to quickly open Catalog. @@ -120,7 +120,7 @@ export const Root = ({ children }: PropsWithChildren<{}>) => ( ``` -That's it! You should now have _(although slightly boring)_ a home page! +That's it! You should now have _(although slightly boring)_ a homepage! Screenshot of a blank homepage @@ -128,15 +128,15 @@ In the next steps, we will make it interesting and useful! ### Use the default template -There is a default home page template ([storybook link](https://backstage.io/storybook/?path=/story/plugins-home-templates--default-template)) which we will use to set up our home page. Checkout the [blog post announcement](https://backstage.io/blog/2022/01/25/backstage-homepage-templates) about the Backstage home page templates for more information. +There is a default homepage template ([storybook link](https://backstage.io/storybook/?path=/story/plugins-home-templates--default-template)) which we will use to set up our homepage. Checkout the [blog post announcement](https://backstage.io/blog/2022/01/25/backstage-homepage-templates) about the Backstage homepage templates for more information. -### Composing your Home Page +### Composing your homepage -Composing a Home Page is no different from creating a regular React Component, +Composing a homepage is no different from creating a regular React Component, i.e. the App Integrator is free to include whatever content they like. However, -there are components developed with the Home Page in mind. If you are looking +there are components developed with the homepage in mind. If you are looking for components to use when composing your homepage, you can take a look at the [collection of Homepage components](https://backstage.io/?path=/story/plugins-home-components) in storybook. If you don't find a component that suits your needs but want to From cb672b0502fab6740b0f0004c777d4b2336deb2a Mon Sep 17 00:00:00 2001 From: Karan Shah Date: Fri, 11 Feb 2022 14:44:05 +0000 Subject: [PATCH 066/383] Add a discovery API Signed-off-by: Karan Shah --- .../airbrake/dev/components/ApiBar/ApiBar.tsx | 6 ------ .../ContextProvider/ContextProvider.tsx | 5 ----- plugins/airbrake/dev/index.tsx | 8 +++++-- plugins/airbrake/package.json | 2 +- .../airbrake/src/api/ProductionApi.test.ts | 14 ++++++------- plugins/airbrake/src/api/ProductionApi.ts | 6 ++++-- .../src/api/mock/LocalDiscoveryApi.ts | 21 +++++++++++++++++++ plugins/airbrake/src/api/mock/index.ts | 4 +++- .../EntityAirbrakeWidget.test.tsx | 7 ++++--- plugins/airbrake/src/extensions.test.tsx | 2 +- plugins/airbrake/src/plugin.ts | 10 ++++++--- 11 files changed, 53 insertions(+), 32 deletions(-) create mode 100644 plugins/airbrake/src/api/mock/LocalDiscoveryApi.ts diff --git a/plugins/airbrake/dev/components/ApiBar/ApiBar.tsx b/plugins/airbrake/dev/components/ApiBar/ApiBar.tsx index eae00c2d32..7a4ee42f14 100644 --- a/plugins/airbrake/dev/components/ApiBar/ApiBar.tsx +++ b/plugins/airbrake/dev/components/ApiBar/ApiBar.tsx @@ -71,12 +71,6 @@ export const ApiBar = () => { value.setProjectId?.(parseInt(e.target.value, 10) || undefined) } /> - value.setApiKey?.(e.target.value)} - /> )} diff --git a/plugins/airbrake/dev/components/ContextProvider/ContextProvider.tsx b/plugins/airbrake/dev/components/ContextProvider/ContextProvider.tsx index 6d7fe0f7f2..d46366d8f6 100644 --- a/plugins/airbrake/dev/components/ContextProvider/ContextProvider.tsx +++ b/plugins/airbrake/dev/components/ContextProvider/ContextProvider.tsx @@ -23,23 +23,18 @@ import React, { interface ContextInterface { projectId?: number; setProjectId?: Dispatch>; - apiKey?: string; - setApiKey?: Dispatch>; } export const Context = React.createContext({}); export const ContextProvider = ({ children }: PropsWithChildren<{}>) => { const [projectId, setProjectId] = useState(); - const [apiKey, setApiKey] = useState(''); return ( {children} diff --git a/plugins/airbrake/dev/index.tsx b/plugins/airbrake/dev/index.tsx index cd0d29301f..d2b2d33e40 100644 --- a/plugins/airbrake/dev/index.tsx +++ b/plugins/airbrake/dev/index.tsx @@ -19,13 +19,14 @@ import { TestApiProvider } from '@backstage/test-utils'; import { airbrakePlugin, EntityAirbrakeContent } from '../src'; import { airbrakeApiRef, + localDiscoveryApi, MockAirbrakeApi, ProductionAirbrakeApi, } from '../src/api'; import { ApiBar } from './components/ApiBar'; import { Content, Header, Page } from '@backstage/core-components'; import { EntityProvider } from '@backstage/plugin-catalog-react'; -import { createEntity } from '../src/api/mock/MockEntity'; +import { createEntity } from '../src/api'; import CloudOffIcon from '@material-ui/icons/CloudOff'; import CloudIcon from '@material-ui/icons/Cloud'; import { Context, ContextProvider } from './components/ContextProvider'; @@ -61,7 +62,10 @@ createDevApp() {value => ( diff --git a/plugins/airbrake/package.json b/plugins/airbrake/package.json index a914013d77..45671a94cd 100644 --- a/plugins/airbrake/package.json +++ b/plugins/airbrake/package.json @@ -22,6 +22,7 @@ "dependencies": { "@backstage/catalog-model": "^0.9.10", "@backstage/core-components": "^0.8.8", + "@backstage/core-app-api": "^0.5.2", "@backstage/core-plugin-api": "^0.6.0", "@backstage/dev-utils": "^0.2.21", "@backstage/plugin-catalog-react": "^0.6.14", @@ -39,7 +40,6 @@ "devDependencies": { "@backstage/app-defaults": "^0.1.7", "@backstage/cli": "^0.13.2", - "@backstage/core-app-api": "^0.5.2", "@backstage/dev-utils": "^0.2.21", "@backstage/test-utils": "^0.2.4", "@testing-library/jest-dom": "^5.10.1", diff --git a/plugins/airbrake/src/api/ProductionApi.test.ts b/plugins/airbrake/src/api/ProductionApi.test.ts index 04bb73caf7..f09127b4c2 100644 --- a/plugins/airbrake/src/api/ProductionApi.test.ts +++ b/plugins/airbrake/src/api/ProductionApi.test.ts @@ -19,21 +19,19 @@ import { rest } from 'msw'; import mockGroupsData from './mock/airbrakeGroupsApiMock.json'; import { setupServer } from 'msw/node'; import { setupRequestMockHandlers } from '@backstage/test-utils'; +import { localDiscoveryApi } from './mock'; describe('The production Airbrake API', () => { - const productionApi = new ProductionAirbrakeApi('fakeApiKey'); + const productionApi = new ProductionAirbrakeApi(localDiscoveryApi); const worker = setupServer(); setupRequestMockHandlers(worker); it('fetches groups using the provided project ID', async () => { worker.use( rest.get( - 'https://api.airbrake.io/api/v4/projects/123456/groups', - (req, res, ctx) => { - if (req.url.searchParams.get('key') === 'fakeApiKey') { - return res(ctx.status(200), ctx.json(mockGroupsData)); - } - return res(ctx.status(401)); + 'http://localhost:7007/api/airbrake/api/v4/projects/123456/groups', + (_, res, ctx) => { + return res(ctx.status(200), ctx.json(mockGroupsData)); }, ), ); @@ -46,7 +44,7 @@ describe('The production Airbrake API', () => { it('throws if fetching groups was unsuccessful', async () => { worker.use( rest.get( - 'https://api.airbrake.io/api/v4/projects/123456/groups', + 'http://localhost:7007/api/airbrake/api/v4/projects/123456/groups', (_, res, ctx) => { return res(ctx.status(500)); }, diff --git a/plugins/airbrake/src/api/ProductionApi.ts b/plugins/airbrake/src/api/ProductionApi.ts index 76416bc173..21ca19ee7d 100644 --- a/plugins/airbrake/src/api/ProductionApi.ts +++ b/plugins/airbrake/src/api/ProductionApi.ts @@ -16,12 +16,14 @@ import { Groups } from './airbrakeGroups'; import { AirbrakeApi } from './AirbrakeApi'; +import { DiscoveryApi } from '@backstage/core-plugin-api'; export class ProductionAirbrakeApi implements AirbrakeApi { - constructor(private readonly apiKey?: string) {} + constructor(private readonly discoveryApi: DiscoveryApi) {} async fetchGroups(projectId: string): Promise { - const apiUrl = `https://api.airbrake.io/api/v4/projects/${projectId}/groups?key=${this.apiKey}`; + const baseUrl = await this.discoveryApi.getBaseUrl('airbrake'); + const apiUrl = `${baseUrl}/api/v4/projects/${projectId}/groups`; const response = await fetch(apiUrl); diff --git a/plugins/airbrake/src/api/mock/LocalDiscoveryApi.ts b/plugins/airbrake/src/api/mock/LocalDiscoveryApi.ts new file mode 100644 index 0000000000..6990ce9c93 --- /dev/null +++ b/plugins/airbrake/src/api/mock/LocalDiscoveryApi.ts @@ -0,0 +1,21 @@ +/* + * 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 { UrlPatternDiscovery } from '@backstage/core-app-api'; + +export const localDiscoveryApi = UrlPatternDiscovery.compile( + 'http://localhost:7007/api/{{ pluginId }}', +); diff --git a/plugins/airbrake/src/api/mock/index.ts b/plugins/airbrake/src/api/mock/index.ts index 0588d45fa6..4e0ab5fabf 100644 --- a/plugins/airbrake/src/api/mock/index.ts +++ b/plugins/airbrake/src/api/mock/index.ts @@ -14,4 +14,6 @@ * limitations under the License. */ -export { MockAirbrakeApi } from './MockApi'; +export * from './MockApi'; +export * from './MockEntity'; +export * from './LocalDiscoveryApi'; diff --git a/plugins/airbrake/src/components/EntityAirbrakeWidget/EntityAirbrakeWidget.test.tsx b/plugins/airbrake/src/components/EntityAirbrakeWidget/EntityAirbrakeWidget.test.tsx index ef1ac229c9..ee14a17f9a 100644 --- a/plugins/airbrake/src/components/EntityAirbrakeWidget/EntityAirbrakeWidget.test.tsx +++ b/plugins/airbrake/src/components/EntityAirbrakeWidget/EntityAirbrakeWidget.test.tsx @@ -23,9 +23,10 @@ import { setupRequestMockHandlers, TestApiProvider, } from '@backstage/test-utils'; -import { createEntity } from '../../api/mock/MockEntity'; +import { createEntity } from '../../api'; import { airbrakeApiRef, + localDiscoveryApi, MockAirbrakeApi, ProductionAirbrakeApi, } from '../../api'; @@ -65,7 +66,7 @@ describe('EntityAirbrakeContent', () => { it('states that an error occurred if the API call fails', async () => { worker.use( rest.get( - 'https://api.airbrake.io/api/v4/projects/123/groups', + 'http://localhost:7007/api/airbrake/api/v4/projects/123/groups', (_, res, ctx) => { return res(ctx.status(500)); }, @@ -76,7 +77,7 @@ describe('EntityAirbrakeContent', () => { const widget = await renderInTestApp( diff --git a/plugins/airbrake/src/extensions.test.tsx b/plugins/airbrake/src/extensions.test.tsx index d677d939a4..05afe8f1e3 100644 --- a/plugins/airbrake/src/extensions.test.tsx +++ b/plugins/airbrake/src/extensions.test.tsx @@ -18,7 +18,7 @@ import { EntityAirbrakeContent } from './extensions'; import { Route } from 'react-router'; import { renderInTestApp, TestApiProvider } from '@backstage/test-utils'; import { airbrakeApiRef, MockAirbrakeApi } from './api'; -import { createEntity } from './api/mock/MockEntity'; +import { createEntity } from './api'; import { EntityProvider } from '@backstage/plugin-catalog-react'; describe('The Airbrake entity', () => { diff --git a/plugins/airbrake/src/plugin.ts b/plugins/airbrake/src/plugin.ts index f008b48ad4..e7e3dae1cb 100644 --- a/plugins/airbrake/src/plugin.ts +++ b/plugins/airbrake/src/plugin.ts @@ -13,7 +13,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { createApiFactory, createPlugin } from '@backstage/core-plugin-api'; +import { + createApiFactory, + createPlugin, + discoveryApiRef, +} from '@backstage/core-plugin-api'; import { rootRouteRef } from './routes'; import { airbrakeApiRef, ProductionAirbrakeApi } from './api'; @@ -23,8 +27,8 @@ export const airbrakePlugin = createPlugin({ apis: [ createApiFactory({ api: airbrakeApiRef, - deps: {}, - factory: () => new ProductionAirbrakeApi(), + deps: { discoveryApi: discoveryApiRef }, + factory: ({ discoveryApi }) => new ProductionAirbrakeApi(discoveryApi), }), ], routes: { From 761b3c978e5ca92679d20da2bffda0ad5feef85c Mon Sep 17 00:00:00 2001 From: Karan Shah Date: Fri, 11 Feb 2022 15:28:03 +0000 Subject: [PATCH 067/383] Update the Airbrake backend standalone server Signed-off-by: Karan Shah --- plugins/airbrake-backend/src/service/standaloneServer.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/airbrake-backend/src/service/standaloneServer.ts b/plugins/airbrake-backend/src/service/standaloneServer.ts index 5957dd0b7f..6e48a49b49 100644 --- a/plugins/airbrake-backend/src/service/standaloneServer.ts +++ b/plugins/airbrake-backend/src/service/standaloneServer.ts @@ -32,7 +32,7 @@ export interface ServerOptions { export async function startStandaloneServer( options: ServerOptions, ): Promise { - const logger = options.logger.child({ service: 'airbrake-backend-backend' }); + const logger = options.logger.child({ service: 'airbrake-backend' }); const config = await loadBackendConfig({ logger, argv: process.argv }); const airbrakeConfig = extractAirbrakeConfig(config); logger.debug('Starting application server...'); @@ -43,7 +43,7 @@ export async function startStandaloneServer( let service = createServiceBuilder(module) .setPort(options.port) - .addRouter('/airbrake-backend', router); + .addRouter('/api/airbrake', router); if (options.enableCors) { service = service.enableCors({ origin: 'http://localhost:3000' }); } From 58a801eefc4ea6360a917db21390b7bf3eb8c698 Mon Sep 17 00:00:00 2001 From: Karan Shah Date: Fri, 11 Feb 2022 15:56:27 +0000 Subject: [PATCH 068/383] Make the API Key a secret visibility config Signed-off-by: Karan Shah --- plugins/airbrake-backend/config.d.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/airbrake-backend/config.d.ts b/plugins/airbrake-backend/config.d.ts index ab6a7ef537..af28d7e73e 100644 --- a/plugins/airbrake-backend/config.d.ts +++ b/plugins/airbrake-backend/config.d.ts @@ -19,6 +19,7 @@ export interface Config { airbrake: { /** * The API Key to authenticate requests. More details on how to get this here: https://airbrake.io/docs/api/#authentication + * @visibility secret */ apiKey: string; }; From 938c7ff213e5f220c96104e2c15acfdd12e85b2d Mon Sep 17 00:00:00 2001 From: Karan Shah Date: Fri, 11 Feb 2022 16:19:43 +0000 Subject: [PATCH 069/383] Sort out CORS Signed-off-by: Karan Shah --- plugins/airbrake-backend/src/service/standaloneServer.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/plugins/airbrake-backend/src/service/standaloneServer.ts b/plugins/airbrake-backend/src/service/standaloneServer.ts index 6e48a49b49..6825e60a0a 100644 --- a/plugins/airbrake-backend/src/service/standaloneServer.ts +++ b/plugins/airbrake-backend/src/service/standaloneServer.ts @@ -45,7 +45,11 @@ export async function startStandaloneServer( .setPort(options.port) .addRouter('/api/airbrake', router); if (options.enableCors) { + logger.info('CORS is enabled, limiting to localhost with port 3000'); service = service.enableCors({ origin: 'http://localhost:3000' }); + } else { + logger.info('CORS is disabled, allowing all origins'); + service = service.enableCors({ origin: '*' }); } return await service.start().catch(err => { From 90f3729b9daa5006d5867c7607a8d0b2af901946 Mon Sep 17 00:00:00 2001 From: Pawel Wamej Date: Sat, 12 Feb 2022 19:06:19 +0100 Subject: [PATCH 070/383] remove node version from installation instructions It's outdated (v16 is the active LTS curently) and IMO it's better to link to the Node docs rather than update it every 6 months. Signed-off-by: Pawel Wamej --- docs/getting-started/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/getting-started/index.md b/docs/getting-started/index.md index a622313739..7f1d7d6ef5 100644 --- a/docs/getting-started/index.md +++ b/docs/getting-started/index.md @@ -25,7 +25,7 @@ guide to do a repository-based installation. [Windows Subsystem for Linux](https://docs.microsoft.com/en-us/windows/wsl/) - An account with elevated rights to install the dependencies - `curl` or `wget` installed -- Node.js Active LTS Release installed (currently v14) using one of these +- [Node.js Active LTS Release](https://nodejs.org/en/about/releases/) installed using one of these methods: - Using `nvm` (recommended) - [Installing nvm](https://github.com/nvm-sh/nvm#install--update-script) From e33e45625ed7a1f6d30240d1bc8f1df9f3e38a68 Mon Sep 17 00:00:00 2001 From: Pawel Wamej Date: Sun, 13 Feb 2022 00:04:26 +0100 Subject: [PATCH 071/383] fix other references to Node LTS Signed-off-by: Pawel Wamej --- docs/getting-started/create-an-app.md | 3 +-- docs/getting-started/running-backstage-locally.md | 7 ++++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/getting-started/create-an-app.md b/docs/getting-started/create-an-app.md index 1d65f25d1b..05c12ffb75 100644 --- a/docs/getting-started/create-an-app.md +++ b/docs/getting-started/create-an-app.md @@ -16,8 +16,7 @@ may want to [Run Backstage Locally](./running-backstage-locally.md) instead. ## Create an app To create a Backstage app, you will need to have -[Node.js](https://nodejs.org/en/download/) Active LTS Release installed -(currently v14). +Node.js [Active LTS Release](https://nodejs.org/en/about/releases/) installed. Backstage provides a utility for creating new apps. It guides you through the initial setup of selecting the name of the app and a database for the backend. diff --git a/docs/getting-started/running-backstage-locally.md b/docs/getting-started/running-backstage-locally.md index daad7bf195..3443b85285 100644 --- a/docs/getting-started/running-backstage-locally.md +++ b/docs/getting-started/running-backstage-locally.md @@ -13,13 +13,14 @@ trying to contribute, follow the instructions to - Node.js -First make sure you are using Node.js with an Active LTS Release, currently v14. +First make sure you are using Node.js with an [Active LTS Release](https://nodejs.org/en/about/releases/). This is made easy with a version manager such as [nvm](https://github.com/nvm-sh/nvm) which allows for version switching. ```bash -# Installing a new version -nvm install 14 +# Installing current LTS release +nvm install --lts +> Installing latest LTS version. > Downloading and installing node v14.15.1... > Now using node v14.15.1 (npm v6.14.8) From b521c1b83be483dfafb32a8b73c474fb6d638d10 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sat, 22 Jan 2022 18:19:55 +0100 Subject: [PATCH 072/383] detect all package roles Signed-off-by: Patrik Oldsberg --- packages/app-defaults/package.json | 3 +++ packages/app/package.json | 3 +++ packages/backend-common/package.json | 3 +++ packages/backend-tasks/package.json | 3 +++ packages/backend-test-utils/package.json | 3 +++ packages/backend/package.json | 3 +++ packages/catalog-client/package.json | 3 +++ packages/catalog-model/package.json | 3 +++ packages/cli-common/package.json | 3 +++ packages/cli/package.json | 3 +++ packages/codemods/package.json | 3 +++ packages/config-loader/package.json | 3 +++ packages/config/package.json | 3 +++ packages/core-app-api/package.json | 3 +++ packages/core-components/package.json | 3 +++ packages/core-plugin-api/package.json | 3 +++ packages/create-app/package.json | 3 +++ packages/dev-utils/package.json | 3 +++ packages/e2e-test/package.json | 3 +++ packages/errors/package.json | 3 +++ packages/integration-react/package.json | 3 +++ packages/integration/package.json | 3 +++ packages/release-manifests/package.json | 3 +++ packages/search-common/package.json | 3 +++ packages/techdocs-cli-embedded-app/package.json | 3 +++ packages/techdocs-cli/package.json | 3 +++ packages/techdocs-common/package.json | 3 +++ packages/test-utils/package.json | 3 +++ packages/theme/package.json | 3 +++ packages/types/package.json | 3 +++ packages/version-bridge/package.json | 3 +++ plugins/airbrake/package.json | 3 +++ plugins/allure/package.json | 3 +++ plugins/analytics-module-ga/package.json | 3 +++ plugins/apache-airflow/package.json | 3 +++ plugins/api-docs/package.json | 3 +++ plugins/app-backend/package.json | 3 +++ plugins/auth-backend/package.json | 3 +++ plugins/auth-node/package.json | 3 +++ plugins/azure-devops-backend/package.json | 3 +++ plugins/azure-devops-common/package.json | 3 +++ plugins/azure-devops/package.json | 3 +++ plugins/badges-backend/package.json | 3 +++ plugins/badges/package.json | 3 +++ plugins/bazaar-backend/package.json | 3 +++ plugins/bazaar/package.json | 3 +++ plugins/bitrise/package.json | 3 +++ plugins/catalog-backend-module-ldap/package.json | 3 +++ plugins/catalog-backend-module-msgraph/package.json | 3 +++ plugins/catalog-backend/package.json | 3 +++ plugins/catalog-common/package.json | 3 +++ plugins/catalog-graph/package.json | 3 +++ plugins/catalog-graphql/package.json | 3 +++ plugins/catalog-import/package.json | 3 +++ plugins/catalog-react/package.json | 3 +++ plugins/catalog/package.json | 3 +++ plugins/cicd-statistics/package.json | 3 +++ plugins/circleci/package.json | 3 +++ plugins/cloudbuild/package.json | 3 +++ plugins/code-coverage-backend/package.json | 3 +++ plugins/code-coverage/package.json | 3 +++ plugins/config-schema/package.json | 3 +++ plugins/cost-insights/package.json | 3 +++ plugins/explore-react/package.json | 3 +++ plugins/explore/package.json | 3 +++ plugins/firehydrant/package.json | 3 +++ plugins/fossa/package.json | 3 +++ plugins/gcp-projects/package.json | 3 +++ plugins/git-release-manager/package.json | 3 +++ plugins/github-actions/package.json | 3 +++ plugins/github-deployments/package.json | 3 +++ plugins/gitops-profiles/package.json | 3 +++ plugins/gocd/package.json | 3 +++ plugins/graphiql/package.json | 3 +++ plugins/graphql-backend/package.json | 3 +++ plugins/home/package.json | 3 +++ plugins/ilert/package.json | 3 +++ plugins/jenkins-backend/package.json | 3 +++ plugins/jenkins/package.json | 3 +++ plugins/kafka-backend/package.json | 3 +++ plugins/kafka/package.json | 3 +++ plugins/kubernetes-backend/package.json | 3 +++ plugins/kubernetes-common/package.json | 3 +++ plugins/kubernetes/package.json | 3 +++ plugins/lighthouse/package.json | 3 +++ plugins/newrelic-dashboard/package.json | 3 +++ plugins/newrelic/package.json | 3 +++ plugins/org/package.json | 3 +++ plugins/pagerduty/package.json | 3 +++ plugins/permission-backend/package.json | 3 +++ plugins/permission-common/package.json | 3 +++ plugins/permission-node/package.json | 3 +++ plugins/permission-react/package.json | 3 +++ plugins/proxy-backend/package.json | 3 +++ plugins/rollbar-backend/package.json | 3 +++ plugins/rollbar/package.json | 3 +++ plugins/scaffolder-backend-module-cookiecutter/package.json | 3 +++ plugins/scaffolder-backend-module-rails/package.json | 3 +++ plugins/scaffolder-backend-module-yeoman/package.json | 3 +++ plugins/scaffolder-backend/package.json | 3 +++ plugins/scaffolder-common/package.json | 3 +++ plugins/scaffolder/package.json | 3 +++ plugins/search-backend-module-elasticsearch/package.json | 3 +++ plugins/search-backend-module-pg/package.json | 3 +++ plugins/search-backend-node/package.json | 3 +++ plugins/search-backend/package.json | 3 +++ plugins/search/package.json | 3 +++ plugins/sentry/package.json | 3 +++ plugins/shortcuts/package.json | 3 +++ plugins/sonarqube/package.json | 3 +++ plugins/splunk-on-call/package.json | 3 +++ plugins/tech-insights-backend-module-jsonfc/package.json | 3 +++ plugins/tech-insights-backend/package.json | 3 +++ plugins/tech-insights-common/package.json | 3 +++ plugins/tech-insights-node/package.json | 3 +++ plugins/tech-insights/package.json | 3 +++ plugins/tech-radar/package.json | 3 +++ plugins/techdocs-backend/package.json | 3 +++ plugins/techdocs/package.json | 3 +++ plugins/todo-backend/package.json | 3 +++ plugins/todo/package.json | 3 +++ plugins/user-settings/package.json | 3 +++ plugins/xcmetrics/package.json | 3 +++ 123 files changed, 369 insertions(+) diff --git a/packages/app-defaults/package.json b/packages/app-defaults/package.json index c7cb87faa4..db0eea8303 100644 --- a/packages/app-defaults/package.json +++ b/packages/app-defaults/package.json @@ -8,6 +8,9 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "web-library" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/packages/app/package.json b/packages/app/package.json index bdade7974a..3f870970bd 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -2,6 +2,9 @@ "name": "example-app", "version": "0.2.64", "private": true, + "backstage": { + "role": "app" + }, "bundled": true, "dependencies": { "@backstage/app-defaults": "^0.1.7", diff --git a/packages/backend-common/package.json b/packages/backend-common/package.json index 13a34a1d81..41408330a6 100644 --- a/packages/backend-common/package.json +++ b/packages/backend-common/package.json @@ -11,6 +11,9 @@ "types": "dist/index.d.ts", "alphaTypes": "dist/index.alpha.d.ts" }, + "backstage": { + "role": "node-library" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/packages/backend-tasks/package.json b/packages/backend-tasks/package.json index 364f1d1380..8f11561c41 100644 --- a/packages/backend-tasks/package.json +++ b/packages/backend-tasks/package.json @@ -10,6 +10,9 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "node-library" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/packages/backend-test-utils/package.json b/packages/backend-test-utils/package.json index 8a9767b292..5cffa1130d 100644 --- a/packages/backend-test-utils/package.json +++ b/packages/backend-test-utils/package.json @@ -10,6 +10,9 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "node-library" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/packages/backend/package.json b/packages/backend/package.json index 35b234aeda..e0b97c8510 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -5,6 +5,9 @@ "types": "src/index.ts", "license": "Apache-2.0", "private": true, + "backstage": { + "role": "backend" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/packages/catalog-client/package.json b/packages/catalog-client/package.json index 3a45a74680..6bf8869f72 100644 --- a/packages/catalog-client/package.json +++ b/packages/catalog-client/package.json @@ -12,6 +12,9 @@ "module": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "common-library" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/packages/catalog-model/package.json b/packages/catalog-model/package.json index 62e577df4a..6af022ee88 100644 --- a/packages/catalog-model/package.json +++ b/packages/catalog-model/package.json @@ -13,6 +13,9 @@ "types": "dist/index.d.ts", "alphaTypes": "dist/index.alpha.d.ts" }, + "backstage": { + "role": "common-library" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/packages/cli-common/package.json b/packages/cli-common/package.json index cdb4b01b6d..453fa85bf9 100644 --- a/packages/cli-common/package.json +++ b/packages/cli-common/package.json @@ -10,6 +10,9 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "node-library" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/packages/cli/package.json b/packages/cli/package.json index 589ac58646..934b97c124 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -6,6 +6,9 @@ "publishConfig": { "access": "public" }, + "backstage": { + "role": "cli" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/packages/codemods/package.json b/packages/codemods/package.json index dc1fe6a537..aa74584114 100644 --- a/packages/codemods/package.json +++ b/packages/codemods/package.json @@ -7,6 +7,9 @@ "access": "public", "main": "dist/index.cjs.js" }, + "backstage": { + "role": "cli" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/packages/config-loader/package.json b/packages/config-loader/package.json index b374a02fbf..6839465cf4 100644 --- a/packages/config-loader/package.json +++ b/packages/config-loader/package.json @@ -9,6 +9,9 @@ "module": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "common-library" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/packages/config/package.json b/packages/config/package.json index 02c63af2b5..72ddeb054a 100644 --- a/packages/config/package.json +++ b/packages/config/package.json @@ -9,6 +9,9 @@ "module": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "common-library" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/packages/core-app-api/package.json b/packages/core-app-api/package.json index 04e87b5d0c..60801bae79 100644 --- a/packages/core-app-api/package.json +++ b/packages/core-app-api/package.json @@ -8,6 +8,9 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "web-library" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/packages/core-components/package.json b/packages/core-components/package.json index ecb910c50b..54a8e0c114 100644 --- a/packages/core-components/package.json +++ b/packages/core-components/package.json @@ -8,6 +8,9 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "web-library" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/packages/core-plugin-api/package.json b/packages/core-plugin-api/package.json index c9f110b432..0f9a815b35 100644 --- a/packages/core-plugin-api/package.json +++ b/packages/core-plugin-api/package.json @@ -8,6 +8,9 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "web-library" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/packages/create-app/package.json b/packages/create-app/package.json index 4ab263abfd..064664465c 100644 --- a/packages/create-app/package.json +++ b/packages/create-app/package.json @@ -6,6 +6,9 @@ "publishConfig": { "access": "public" }, + "backstage": { + "role": "cli" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 9d55d17592..4af8ec1c17 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -8,6 +8,9 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "web-library" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/packages/e2e-test/package.json b/packages/e2e-test/package.json index bbf55fac17..70a3e68327 100644 --- a/packages/e2e-test/package.json +++ b/packages/e2e-test/package.json @@ -3,6 +3,9 @@ "description": "E2E test for verifying Backstage packages", "version": "0.2.0", "private": true, + "backstage": { + "role": "cli" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/packages/errors/package.json b/packages/errors/package.json index f97adef8e1..345e304646 100644 --- a/packages/errors/package.json +++ b/packages/errors/package.json @@ -12,6 +12,9 @@ "module": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "common-library" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/packages/integration-react/package.json b/packages/integration-react/package.json index 8413442b3d..e86d7777cb 100644 --- a/packages/integration-react/package.json +++ b/packages/integration-react/package.json @@ -11,6 +11,9 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-frontend" + }, "scripts": { "build": "backstage-cli plugin:build", "start": "backstage-cli plugin:serve", diff --git a/packages/integration/package.json b/packages/integration/package.json index d6d0edd77a..694c12fd4a 100644 --- a/packages/integration/package.json +++ b/packages/integration/package.json @@ -12,6 +12,9 @@ "module": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "common-library" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/packages/release-manifests/package.json b/packages/release-manifests/package.json index 8ddbb73bca..d3000688c2 100644 --- a/packages/release-manifests/package.json +++ b/packages/release-manifests/package.json @@ -11,6 +11,9 @@ "module": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "common-library" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/packages/search-common/package.json b/packages/search-common/package.json index 10b03ab663..503e0dd9f3 100644 --- a/packages/search-common/package.json +++ b/packages/search-common/package.json @@ -10,6 +10,9 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "node-library" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/packages/techdocs-cli-embedded-app/package.json b/packages/techdocs-cli-embedded-app/package.json index 975bfef43b..aa2d2d5457 100644 --- a/packages/techdocs-cli-embedded-app/package.json +++ b/packages/techdocs-cli-embedded-app/package.json @@ -2,6 +2,9 @@ "name": "techdocs-cli-embedded-app", "version": "0.2.63", "private": true, + "backstage": { + "role": "app" + }, "bundled": true, "dependencies": { "@backstage/app-defaults": "^0.1.7", diff --git a/packages/techdocs-cli/package.json b/packages/techdocs-cli/package.json index 19514b63d2..ce408e814c 100644 --- a/packages/techdocs-cli/package.json +++ b/packages/techdocs-cli/package.json @@ -6,6 +6,9 @@ "publishConfig": { "access": "public" }, + "backstage": { + "role": "cli" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/packages/techdocs-common/package.json b/packages/techdocs-common/package.json index f45f842100..0078b1ab65 100644 --- a/packages/techdocs-common/package.json +++ b/packages/techdocs-common/package.json @@ -10,6 +10,9 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "node-library" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/packages/test-utils/package.json b/packages/test-utils/package.json index 67b68e08cc..0cf9c4a245 100644 --- a/packages/test-utils/package.json +++ b/packages/test-utils/package.json @@ -8,6 +8,9 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "web-library" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/packages/theme/package.json b/packages/theme/package.json index 2846db2805..5090836437 100644 --- a/packages/theme/package.json +++ b/packages/theme/package.json @@ -8,6 +8,9 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "web-library" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/packages/types/package.json b/packages/types/package.json index ae18fe519d..8c452d0b87 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -12,6 +12,9 @@ "module": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "common-library" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/packages/version-bridge/package.json b/packages/version-bridge/package.json index 6989aec3cf..ff14d07be0 100644 --- a/packages/version-bridge/package.json +++ b/packages/version-bridge/package.json @@ -8,6 +8,9 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "web-library" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/plugins/airbrake/package.json b/plugins/airbrake/package.json index 40b4787dd5..8d35ab3f67 100644 --- a/plugins/airbrake/package.json +++ b/plugins/airbrake/package.json @@ -9,6 +9,9 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-frontend" + }, "scripts": { "build": "backstage-cli plugin:build", "start": "backstage-cli plugin:serve", diff --git a/plugins/allure/package.json b/plugins/allure/package.json index 5ea3129746..06db3459eb 100644 --- a/plugins/allure/package.json +++ b/plugins/allure/package.json @@ -11,6 +11,9 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-frontend" + }, "scripts": { "build": "backstage-cli plugin:build", "start": "backstage-cli plugin:serve", diff --git a/plugins/analytics-module-ga/package.json b/plugins/analytics-module-ga/package.json index 0b0c3a6cdc..1c3b952c5b 100644 --- a/plugins/analytics-module-ga/package.json +++ b/plugins/analytics-module-ga/package.json @@ -10,6 +10,9 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-frontend-module" + }, "scripts": { "build": "backstage-cli plugin:build", "start": "backstage-cli plugin:serve", diff --git a/plugins/apache-airflow/package.json b/plugins/apache-airflow/package.json index e36e925fcb..b3e31d3109 100644 --- a/plugins/apache-airflow/package.json +++ b/plugins/apache-airflow/package.json @@ -9,6 +9,9 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-frontend" + }, "scripts": { "build": "backstage-cli plugin:build", "start": "backstage-cli plugin:serve", diff --git a/plugins/api-docs/package.json b/plugins/api-docs/package.json index 3b92cdf17e..bebbd1876e 100644 --- a/plugins/api-docs/package.json +++ b/plugins/api-docs/package.json @@ -10,6 +10,9 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-frontend" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/plugins/app-backend/package.json b/plugins/app-backend/package.json index 52da00fed3..0f68706db3 100644 --- a/plugins/app-backend/package.json +++ b/plugins/app-backend/package.json @@ -11,6 +11,9 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-backend" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/plugins/auth-backend/package.json b/plugins/auth-backend/package.json index 5d40523895..4b55ba1558 100644 --- a/plugins/auth-backend/package.json +++ b/plugins/auth-backend/package.json @@ -11,6 +11,9 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-backend" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/plugins/auth-node/package.json b/plugins/auth-node/package.json index 4e059c5e19..7646385f04 100644 --- a/plugins/auth-node/package.json +++ b/plugins/auth-node/package.json @@ -10,6 +10,9 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "node-library" + }, "scripts": { "build": "backstage-cli backend:build", "lint": "backstage-cli lint", diff --git a/plugins/azure-devops-backend/package.json b/plugins/azure-devops-backend/package.json index a87a48046e..5754043120 100644 --- a/plugins/azure-devops-backend/package.json +++ b/plugins/azure-devops-backend/package.json @@ -10,6 +10,9 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-backend" + }, "scripts": { "start": "backstage-cli backend:dev", "build": "backstage-cli backend:build", diff --git a/plugins/azure-devops-common/package.json b/plugins/azure-devops-common/package.json index 02faebca61..f38ee26755 100644 --- a/plugins/azure-devops-common/package.json +++ b/plugins/azure-devops-common/package.json @@ -11,6 +11,9 @@ "module": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "common-library" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/plugins/azure-devops/package.json b/plugins/azure-devops/package.json index a34686d856..bd1cde48bb 100644 --- a/plugins/azure-devops/package.json +++ b/plugins/azure-devops/package.json @@ -10,6 +10,9 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-frontend" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/plugins/badges-backend/package.json b/plugins/badges-backend/package.json index b5fc38f289..45f4599b7d 100644 --- a/plugins/badges-backend/package.json +++ b/plugins/badges-backend/package.json @@ -11,6 +11,9 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-backend" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/plugins/badges/package.json b/plugins/badges/package.json index 5250318164..959e9e08e7 100644 --- a/plugins/badges/package.json +++ b/plugins/badges/package.json @@ -10,6 +10,9 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-frontend" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/plugins/bazaar-backend/package.json b/plugins/bazaar-backend/package.json index 71980acea4..e522b74435 100644 --- a/plugins/bazaar-backend/package.json +++ b/plugins/bazaar-backend/package.json @@ -10,6 +10,9 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-backend" + }, "scripts": { "start": "backstage-cli backend:dev", "build": "backstage-cli backend:build", diff --git a/plugins/bazaar/package.json b/plugins/bazaar/package.json index bfdcb18ca3..43d4f0d175 100644 --- a/plugins/bazaar/package.json +++ b/plugins/bazaar/package.json @@ -10,6 +10,9 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-frontend" + }, "scripts": { "build": "backstage-cli plugin:build", "start": "backstage-cli plugin:serve", diff --git a/plugins/bitrise/package.json b/plugins/bitrise/package.json index 8b50459a84..299d317025 100644 --- a/plugins/bitrise/package.json +++ b/plugins/bitrise/package.json @@ -10,6 +10,9 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-frontend" + }, "scripts": { "build": "backstage-cli plugin:build", "start": "backstage-cli plugin:serve", diff --git a/plugins/catalog-backend-module-ldap/package.json b/plugins/catalog-backend-module-ldap/package.json index a499049265..0b9d462bc3 100644 --- a/plugins/catalog-backend-module-ldap/package.json +++ b/plugins/catalog-backend-module-ldap/package.json @@ -11,6 +11,9 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-backend-module" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/plugins/catalog-backend-module-msgraph/package.json b/plugins/catalog-backend-module-msgraph/package.json index 7fd0a2d319..3b4ea6000b 100644 --- a/plugins/catalog-backend-module-msgraph/package.json +++ b/plugins/catalog-backend-module-msgraph/package.json @@ -11,6 +11,9 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-backend-module" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/plugins/catalog-backend/package.json b/plugins/catalog-backend/package.json index a4a40af206..a127310167 100644 --- a/plugins/catalog-backend/package.json +++ b/plugins/catalog-backend/package.json @@ -11,6 +11,9 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-backend" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/plugins/catalog-common/package.json b/plugins/catalog-common/package.json index 4b94809ed5..61e9f47b63 100644 --- a/plugins/catalog-common/package.json +++ b/plugins/catalog-common/package.json @@ -12,6 +12,9 @@ "module": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "common-library" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/plugins/catalog-graph/package.json b/plugins/catalog-graph/package.json index 541d21f319..753a6c6602 100644 --- a/plugins/catalog-graph/package.json +++ b/plugins/catalog-graph/package.json @@ -10,6 +10,9 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-frontend" + }, "scripts": { "build": "backstage-cli plugin:build", "start": "backstage-cli plugin:serve", diff --git a/plugins/catalog-graphql/package.json b/plugins/catalog-graphql/package.json index b757790275..282fb7f5d0 100644 --- a/plugins/catalog-graphql/package.json +++ b/plugins/catalog-graphql/package.json @@ -10,6 +10,9 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-backend" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/plugins/catalog-import/package.json b/plugins/catalog-import/package.json index 7ce6f8524f..6c4d923daf 100644 --- a/plugins/catalog-import/package.json +++ b/plugins/catalog-import/package.json @@ -11,6 +11,9 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-frontend" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/plugins/catalog-react/package.json b/plugins/catalog-react/package.json index d995fdf848..4d5177e4d9 100644 --- a/plugins/catalog-react/package.json +++ b/plugins/catalog-react/package.json @@ -11,6 +11,9 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "web-library" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/plugins/catalog/package.json b/plugins/catalog/package.json index a2492aaba7..63de8b1a90 100644 --- a/plugins/catalog/package.json +++ b/plugins/catalog/package.json @@ -11,6 +11,9 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-frontend" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/plugins/cicd-statistics/package.json b/plugins/cicd-statistics/package.json index a058917b09..8af45db80a 100644 --- a/plugins/cicd-statistics/package.json +++ b/plugins/cicd-statistics/package.json @@ -11,6 +11,9 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "web-library" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/plugins/circleci/package.json b/plugins/circleci/package.json index 58df662e68..5305f63bac 100644 --- a/plugins/circleci/package.json +++ b/plugins/circleci/package.json @@ -11,6 +11,9 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-frontend" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/plugins/cloudbuild/package.json b/plugins/cloudbuild/package.json index 7ed6f48f71..3d9554813f 100644 --- a/plugins/cloudbuild/package.json +++ b/plugins/cloudbuild/package.json @@ -10,6 +10,9 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-frontend" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/plugins/code-coverage-backend/package.json b/plugins/code-coverage-backend/package.json index c5c77f9873..21f0a12af3 100644 --- a/plugins/code-coverage-backend/package.json +++ b/plugins/code-coverage-backend/package.json @@ -10,6 +10,9 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-backend" + }, "scripts": { "start": "backstage-cli backend:dev", "build": "backstage-cli backend:build", diff --git a/plugins/code-coverage/package.json b/plugins/code-coverage/package.json index 49f092bf25..91520e81fa 100644 --- a/plugins/code-coverage/package.json +++ b/plugins/code-coverage/package.json @@ -10,6 +10,9 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-frontend" + }, "scripts": { "build": "backstage-cli plugin:build", "start": "backstage-cli plugin:serve", diff --git a/plugins/config-schema/package.json b/plugins/config-schema/package.json index 46e030dbc8..2d2c085db4 100644 --- a/plugins/config-schema/package.json +++ b/plugins/config-schema/package.json @@ -10,6 +10,9 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-frontend" + }, "scripts": { "build": "backstage-cli plugin:build", "start": "backstage-cli plugin:serve", diff --git a/plugins/cost-insights/package.json b/plugins/cost-insights/package.json index 45178cb475..dce356c420 100644 --- a/plugins/cost-insights/package.json +++ b/plugins/cost-insights/package.json @@ -11,6 +11,9 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-frontend" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/plugins/explore-react/package.json b/plugins/explore-react/package.json index 3da9de5e08..aea81d17d6 100644 --- a/plugins/explore-react/package.json +++ b/plugins/explore-react/package.json @@ -11,6 +11,9 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "web-library" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/plugins/explore/package.json b/plugins/explore/package.json index 7cb22f5782..f3be9f82ac 100644 --- a/plugins/explore/package.json +++ b/plugins/explore/package.json @@ -11,6 +11,9 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-frontend" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/plugins/firehydrant/package.json b/plugins/firehydrant/package.json index 81272e2b6d..1fa66440d2 100644 --- a/plugins/firehydrant/package.json +++ b/plugins/firehydrant/package.json @@ -11,6 +11,9 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-frontend" + }, "scripts": { "build": "backstage-cli plugin:build", "start": "backstage-cli plugin:serve", diff --git a/plugins/fossa/package.json b/plugins/fossa/package.json index 53e40aae96..1c6a2fe6a6 100644 --- a/plugins/fossa/package.json +++ b/plugins/fossa/package.json @@ -11,6 +11,9 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-frontend" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/plugins/gcp-projects/package.json b/plugins/gcp-projects/package.json index 992336300f..4c5b505c33 100644 --- a/plugins/gcp-projects/package.json +++ b/plugins/gcp-projects/package.json @@ -10,6 +10,9 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-frontend" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/plugins/git-release-manager/package.json b/plugins/git-release-manager/package.json index 381ca0dd24..1ab7d133f8 100644 --- a/plugins/git-release-manager/package.json +++ b/plugins/git-release-manager/package.json @@ -10,6 +10,9 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-frontend" + }, "scripts": { "build": "backstage-cli plugin:build", "start": "backstage-cli plugin:serve", diff --git a/plugins/github-actions/package.json b/plugins/github-actions/package.json index cb112fedb1..8c50004b09 100644 --- a/plugins/github-actions/package.json +++ b/plugins/github-actions/package.json @@ -11,6 +11,9 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-frontend" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/plugins/github-deployments/package.json b/plugins/github-deployments/package.json index e4c3e4917c..513ebc94c0 100644 --- a/plugins/github-deployments/package.json +++ b/plugins/github-deployments/package.json @@ -10,6 +10,9 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-frontend" + }, "scripts": { "build": "backstage-cli plugin:build", "start": "backstage-cli plugin:serve", diff --git a/plugins/gitops-profiles/package.json b/plugins/gitops-profiles/package.json index 1cadbc8d65..22a20b166d 100644 --- a/plugins/gitops-profiles/package.json +++ b/plugins/gitops-profiles/package.json @@ -11,6 +11,9 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-frontend" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/plugins/gocd/package.json b/plugins/gocd/package.json index 86802a43f2..de73318cc2 100644 --- a/plugins/gocd/package.json +++ b/plugins/gocd/package.json @@ -11,6 +11,9 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-frontend" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/plugins/graphiql/package.json b/plugins/graphiql/package.json index 185e273c3f..372298a13f 100644 --- a/plugins/graphiql/package.json +++ b/plugins/graphiql/package.json @@ -8,6 +8,9 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-frontend" + }, "homepage": "https://github.com/backstage/backstage/tree/master/plugins/graphiql#readme", "repository": { "type": "git", diff --git a/plugins/graphql-backend/package.json b/plugins/graphql-backend/package.json index a13a901646..291902585b 100644 --- a/plugins/graphql-backend/package.json +++ b/plugins/graphql-backend/package.json @@ -11,6 +11,9 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-backend" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/plugins/home/package.json b/plugins/home/package.json index 80754d33c8..121aa391ca 100644 --- a/plugins/home/package.json +++ b/plugins/home/package.json @@ -10,6 +10,9 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-frontend" + }, "homepage": "https://github.com/backstage/backstage/tree/master/plugins/home#readme", "repository": { "type": "git", diff --git a/plugins/ilert/package.json b/plugins/ilert/package.json index 4c6581553c..8bde3b011b 100644 --- a/plugins/ilert/package.json +++ b/plugins/ilert/package.json @@ -10,6 +10,9 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-frontend" + }, "scripts": { "build": "backstage-cli plugin:build", "start": "backstage-cli plugin:serve", diff --git a/plugins/jenkins-backend/package.json b/plugins/jenkins-backend/package.json index 52e8862fae..85e77aa7e2 100644 --- a/plugins/jenkins-backend/package.json +++ b/plugins/jenkins-backend/package.json @@ -11,6 +11,9 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-backend" + }, "configSchema": "config.d.ts", "scripts": { "start": "backstage-cli backend:dev", diff --git a/plugins/jenkins/package.json b/plugins/jenkins/package.json index 7b1283cd23..6ae4ed7d6c 100644 --- a/plugins/jenkins/package.json +++ b/plugins/jenkins/package.json @@ -11,6 +11,9 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-frontend" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/plugins/kafka-backend/package.json b/plugins/kafka-backend/package.json index 01b23ba696..76e67d7056 100644 --- a/plugins/kafka-backend/package.json +++ b/plugins/kafka-backend/package.json @@ -11,6 +11,9 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-backend" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/plugins/kafka/package.json b/plugins/kafka/package.json index 12dd578daa..a3edc70b4b 100644 --- a/plugins/kafka/package.json +++ b/plugins/kafka/package.json @@ -10,6 +10,9 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-frontend" + }, "scripts": { "build": "backstage-cli plugin:build", "start": "backstage-cli plugin:serve", diff --git a/plugins/kubernetes-backend/package.json b/plugins/kubernetes-backend/package.json index feb6a4defd..5d95ebd5f4 100644 --- a/plugins/kubernetes-backend/package.json +++ b/plugins/kubernetes-backend/package.json @@ -11,6 +11,9 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-backend" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/plugins/kubernetes-common/package.json b/plugins/kubernetes-common/package.json index cd12eb3519..db0276e6a3 100644 --- a/plugins/kubernetes-common/package.json +++ b/plugins/kubernetes-common/package.json @@ -11,6 +11,9 @@ "module": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "common-library" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/plugins/kubernetes/package.json b/plugins/kubernetes/package.json index 1a60997405..3ed986741e 100644 --- a/plugins/kubernetes/package.json +++ b/plugins/kubernetes/package.json @@ -10,6 +10,9 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-frontend" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/plugins/lighthouse/package.json b/plugins/lighthouse/package.json index 618202b54c..6bb24c2225 100644 --- a/plugins/lighthouse/package.json +++ b/plugins/lighthouse/package.json @@ -11,6 +11,9 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-frontend" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/plugins/newrelic-dashboard/package.json b/plugins/newrelic-dashboard/package.json index dba9cc1148..a75e3db981 100644 --- a/plugins/newrelic-dashboard/package.json +++ b/plugins/newrelic-dashboard/package.json @@ -9,6 +9,9 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-frontend" + }, "scripts": { "build": "backstage-cli plugin:build", "start": "backstage-cli plugin:serve", diff --git a/plugins/newrelic/package.json b/plugins/newrelic/package.json index 9f9d51eae3..220135a245 100644 --- a/plugins/newrelic/package.json +++ b/plugins/newrelic/package.json @@ -11,6 +11,9 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-frontend" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/plugins/org/package.json b/plugins/org/package.json index 947d5e8a0b..093de5cfb3 100644 --- a/plugins/org/package.json +++ b/plugins/org/package.json @@ -10,6 +10,9 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-frontend" + }, "scripts": { "build": "backstage-cli plugin:build", "start": "backstage-cli plugin:serve", diff --git a/plugins/pagerduty/package.json b/plugins/pagerduty/package.json index 7912a32f15..47e6ac53a8 100644 --- a/plugins/pagerduty/package.json +++ b/plugins/pagerduty/package.json @@ -10,6 +10,9 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-frontend" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/plugins/permission-backend/package.json b/plugins/permission-backend/package.json index e1a4e10c5c..ca578a383f 100644 --- a/plugins/permission-backend/package.json +++ b/plugins/permission-backend/package.json @@ -9,6 +9,9 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-backend" + }, "scripts": { "start": "backstage-cli backend:dev", "build": "backstage-cli backend:build", diff --git a/plugins/permission-common/package.json b/plugins/permission-common/package.json index d3054fe9fe..13955b09b8 100644 --- a/plugins/permission-common/package.json +++ b/plugins/permission-common/package.json @@ -10,6 +10,9 @@ "module": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "common-library" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/plugins/permission-node/package.json b/plugins/permission-node/package.json index 04a567f16b..b88ad71dd1 100644 --- a/plugins/permission-node/package.json +++ b/plugins/permission-node/package.json @@ -10,6 +10,9 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "node-library" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/plugins/permission-react/package.json b/plugins/permission-react/package.json index ce6e2dbf54..b687761828 100644 --- a/plugins/permission-react/package.json +++ b/plugins/permission-react/package.json @@ -9,6 +9,9 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "web-library" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/plugins/proxy-backend/package.json b/plugins/proxy-backend/package.json index 5336bbb098..ad78a05127 100644 --- a/plugins/proxy-backend/package.json +++ b/plugins/proxy-backend/package.json @@ -10,6 +10,9 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-backend" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/plugins/rollbar-backend/package.json b/plugins/rollbar-backend/package.json index 36683ef66a..8b88058281 100644 --- a/plugins/rollbar-backend/package.json +++ b/plugins/rollbar-backend/package.json @@ -11,6 +11,9 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-backend" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/plugins/rollbar/package.json b/plugins/rollbar/package.json index 5767f26c5e..f331c63eb3 100644 --- a/plugins/rollbar/package.json +++ b/plugins/rollbar/package.json @@ -11,6 +11,9 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-frontend" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/plugins/scaffolder-backend-module-cookiecutter/package.json b/plugins/scaffolder-backend-module-cookiecutter/package.json index cee138b576..9ab1eef088 100644 --- a/plugins/scaffolder-backend-module-cookiecutter/package.json +++ b/plugins/scaffolder-backend-module-cookiecutter/package.json @@ -10,6 +10,9 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-backend-module" + }, "scripts": { "start": "backstage-cli backend:dev", "build": "backstage-cli backend:build", diff --git a/plugins/scaffolder-backend-module-rails/package.json b/plugins/scaffolder-backend-module-rails/package.json index 5f32dbadd8..bc5e90049a 100644 --- a/plugins/scaffolder-backend-module-rails/package.json +++ b/plugins/scaffolder-backend-module-rails/package.json @@ -11,6 +11,9 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-backend-module" + }, "scripts": { "build": "backstage-cli backend:build", "start": "backstage-cli backend:dev", diff --git a/plugins/scaffolder-backend-module-yeoman/package.json b/plugins/scaffolder-backend-module-yeoman/package.json index b2ce1bf571..d9c66b0a8e 100644 --- a/plugins/scaffolder-backend-module-yeoman/package.json +++ b/plugins/scaffolder-backend-module-yeoman/package.json @@ -10,6 +10,9 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-backend-module" + }, "scripts": { "start": "backstage-cli backend:dev", "build": "backstage-cli backend:build", diff --git a/plugins/scaffolder-backend/package.json b/plugins/scaffolder-backend/package.json index 3161448562..f1b3e0f7fc 100644 --- a/plugins/scaffolder-backend/package.json +++ b/plugins/scaffolder-backend/package.json @@ -11,6 +11,9 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-backend" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/plugins/scaffolder-common/package.json b/plugins/scaffolder-common/package.json index 6b03a7c884..95e0f3153e 100644 --- a/plugins/scaffolder-common/package.json +++ b/plugins/scaffolder-common/package.json @@ -12,6 +12,9 @@ "module": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "common-library" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/plugins/scaffolder/package.json b/plugins/scaffolder/package.json index 0e31d6c4a5..d232eaee9d 100644 --- a/plugins/scaffolder/package.json +++ b/plugins/scaffolder/package.json @@ -11,6 +11,9 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-frontend" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/plugins/search-backend-module-elasticsearch/package.json b/plugins/search-backend-module-elasticsearch/package.json index 8a0e0d9d2c..d4cb19b8a4 100644 --- a/plugins/search-backend-module-elasticsearch/package.json +++ b/plugins/search-backend-module-elasticsearch/package.json @@ -10,6 +10,9 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-backend-module" + }, "scripts": { "start": "backstage-cli backend:dev", "build": "backstage-cli backend:build", diff --git a/plugins/search-backend-module-pg/package.json b/plugins/search-backend-module-pg/package.json index 392b9af73a..9277fa558e 100644 --- a/plugins/search-backend-module-pg/package.json +++ b/plugins/search-backend-module-pg/package.json @@ -10,6 +10,9 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-backend-module" + }, "scripts": { "start": "backstage-cli backend:dev", "build": "backstage-cli backend:build", diff --git a/plugins/search-backend-node/package.json b/plugins/search-backend-node/package.json index e2d83d0f4f..d59881c87a 100644 --- a/plugins/search-backend-node/package.json +++ b/plugins/search-backend-node/package.json @@ -10,6 +10,9 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-backend" + }, "scripts": { "start": "backstage-cli backend:dev", "build": "backstage-cli backend:build", diff --git a/plugins/search-backend/package.json b/plugins/search-backend/package.json index 117e484c62..80092b7288 100644 --- a/plugins/search-backend/package.json +++ b/plugins/search-backend/package.json @@ -10,6 +10,9 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-backend" + }, "scripts": { "start": "backstage-cli backend:dev", "build": "backstage-cli backend:build", diff --git a/plugins/search/package.json b/plugins/search/package.json index 34baf41306..20fb30304e 100644 --- a/plugins/search/package.json +++ b/plugins/search/package.json @@ -10,6 +10,9 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-frontend" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/plugins/sentry/package.json b/plugins/sentry/package.json index 48137dc5e1..0231e9c659 100644 --- a/plugins/sentry/package.json +++ b/plugins/sentry/package.json @@ -11,6 +11,9 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-frontend" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/plugins/shortcuts/package.json b/plugins/shortcuts/package.json index d3bcb14f15..619849ca7c 100644 --- a/plugins/shortcuts/package.json +++ b/plugins/shortcuts/package.json @@ -10,6 +10,9 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-frontend" + }, "scripts": { "build": "backstage-cli plugin:build", "start": "backstage-cli plugin:serve", diff --git a/plugins/sonarqube/package.json b/plugins/sonarqube/package.json index fb2de64ffe..58c171781e 100644 --- a/plugins/sonarqube/package.json +++ b/plugins/sonarqube/package.json @@ -11,6 +11,9 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-frontend" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/plugins/splunk-on-call/package.json b/plugins/splunk-on-call/package.json index 1bc8948d95..1ffe79c552 100644 --- a/plugins/splunk-on-call/package.json +++ b/plugins/splunk-on-call/package.json @@ -10,6 +10,9 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-frontend" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/plugins/tech-insights-backend-module-jsonfc/package.json b/plugins/tech-insights-backend-module-jsonfc/package.json index fc2c6b7add..de04a17e65 100644 --- a/plugins/tech-insights-backend-module-jsonfc/package.json +++ b/plugins/tech-insights-backend-module-jsonfc/package.json @@ -10,6 +10,9 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-backend-module" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/plugins/tech-insights-backend/package.json b/plugins/tech-insights-backend/package.json index 5a60e478d8..4c8b5c081d 100644 --- a/plugins/tech-insights-backend/package.json +++ b/plugins/tech-insights-backend/package.json @@ -10,6 +10,9 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-backend" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/plugins/tech-insights-common/package.json b/plugins/tech-insights-common/package.json index a0b840da74..7f0d4ab64a 100644 --- a/plugins/tech-insights-common/package.json +++ b/plugins/tech-insights-common/package.json @@ -10,6 +10,9 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-backend" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/plugins/tech-insights-node/package.json b/plugins/tech-insights-node/package.json index 05c6f10071..30333862c7 100644 --- a/plugins/tech-insights-node/package.json +++ b/plugins/tech-insights-node/package.json @@ -10,6 +10,9 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-backend" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/plugins/tech-insights/package.json b/plugins/tech-insights/package.json index b7b1b6877c..b35751e80e 100644 --- a/plugins/tech-insights/package.json +++ b/plugins/tech-insights/package.json @@ -9,6 +9,9 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-frontend" + }, "scripts": { "build": "backstage-cli plugin:build", "start": "backstage-cli plugin:serve", diff --git a/plugins/tech-radar/package.json b/plugins/tech-radar/package.json index 29601d1755..3d26cedb4b 100644 --- a/plugins/tech-radar/package.json +++ b/plugins/tech-radar/package.json @@ -11,6 +11,9 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-frontend" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/plugins/techdocs-backend/package.json b/plugins/techdocs-backend/package.json index 37b15ffbe0..bac32f8bdf 100644 --- a/plugins/techdocs-backend/package.json +++ b/plugins/techdocs-backend/package.json @@ -11,6 +11,9 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-backend" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/plugins/techdocs/package.json b/plugins/techdocs/package.json index 794e386136..ac2ba7502a 100644 --- a/plugins/techdocs/package.json +++ b/plugins/techdocs/package.json @@ -11,6 +11,9 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-frontend" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/plugins/todo-backend/package.json b/plugins/todo-backend/package.json index 3371dbbecc..54b1e6e085 100644 --- a/plugins/todo-backend/package.json +++ b/plugins/todo-backend/package.json @@ -10,6 +10,9 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "node-library" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/plugins/todo/package.json b/plugins/todo/package.json index 8282772d90..a047e54c7d 100644 --- a/plugins/todo/package.json +++ b/plugins/todo/package.json @@ -10,6 +10,9 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-frontend" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/plugins/user-settings/package.json b/plugins/user-settings/package.json index 4c33a1ac50..6d976afbe1 100644 --- a/plugins/user-settings/package.json +++ b/plugins/user-settings/package.json @@ -11,6 +11,9 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-frontend" + }, "homepage": "https://backstage.io", "repository": { "type": "git", diff --git a/plugins/xcmetrics/package.json b/plugins/xcmetrics/package.json index b765a1be2d..e0045e5bc7 100644 --- a/plugins/xcmetrics/package.json +++ b/plugins/xcmetrics/package.json @@ -10,6 +10,9 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "plugin-frontend" + }, "scripts": { "build": "backstage-cli plugin:build", "start": "backstage-cli plugin:serve", From a5fc44d8809ab7c60a33457da1f5509a70578105 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sat, 22 Jan 2022 18:21:56 +0100 Subject: [PATCH 073/383] tweak incorrectly detected package roles Signed-off-by: Patrik Oldsberg --- packages/config-loader/package.json | 2 +- packages/integration-react/package.json | 2 +- packages/search-common/package.json | 2 +- plugins/cicd-statistics/package.json | 2 +- plugins/search-backend-node/package.json | 2 +- plugins/tech-insights-common/package.json | 2 +- plugins/todo-backend/package.json | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/packages/config-loader/package.json b/packages/config-loader/package.json index 6839465cf4..10e9b447ae 100644 --- a/packages/config-loader/package.json +++ b/packages/config-loader/package.json @@ -10,7 +10,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "common-library" + "role": "node-library" }, "homepage": "https://backstage.io", "repository": { diff --git a/packages/integration-react/package.json b/packages/integration-react/package.json index e86d7777cb..ed26937f7e 100644 --- a/packages/integration-react/package.json +++ b/packages/integration-react/package.json @@ -12,7 +12,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-frontend" + "role": "web-library" }, "scripts": { "build": "backstage-cli plugin:build", diff --git a/packages/search-common/package.json b/packages/search-common/package.json index 503e0dd9f3..2f885ca874 100644 --- a/packages/search-common/package.json +++ b/packages/search-common/package.json @@ -11,7 +11,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "node-library" + "role": "common-library" }, "homepage": "https://backstage.io", "repository": { diff --git a/plugins/cicd-statistics/package.json b/plugins/cicd-statistics/package.json index 8af45db80a..272472916a 100644 --- a/plugins/cicd-statistics/package.json +++ b/plugins/cicd-statistics/package.json @@ -12,7 +12,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "web-library" + "role": "plugin-frontend" }, "homepage": "https://backstage.io", "repository": { diff --git a/plugins/search-backend-node/package.json b/plugins/search-backend-node/package.json index d59881c87a..82af4f79df 100644 --- a/plugins/search-backend-node/package.json +++ b/plugins/search-backend-node/package.json @@ -11,7 +11,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-backend" + "role": "node-library" }, "scripts": { "start": "backstage-cli backend:dev", diff --git a/plugins/tech-insights-common/package.json b/plugins/tech-insights-common/package.json index 7f0d4ab64a..bc77a4b1f5 100644 --- a/plugins/tech-insights-common/package.json +++ b/plugins/tech-insights-common/package.json @@ -11,7 +11,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-backend" + "role": "common-library" }, "homepage": "https://backstage.io", "repository": { diff --git a/plugins/todo-backend/package.json b/plugins/todo-backend/package.json index 54b1e6e085..85d49a5a78 100644 --- a/plugins/todo-backend/package.json +++ b/plugins/todo-backend/package.json @@ -11,7 +11,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "node-library" + "role": "plugin-backend" }, "homepage": "https://backstage.io", "repository": { From c77c5c7eb6bc9a47c77b0575c70a7a101d979213 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sun, 30 Jan 2022 19:17:45 +0100 Subject: [PATCH 074/383] changesets: added changeset for package role additions Signed-off-by: Patrik Oldsberg --- .changeset/chatty-walls-judge.md | 123 +++++++++++++++++++++++++++++++ 1 file changed, 123 insertions(+) create mode 100644 .changeset/chatty-walls-judge.md diff --git a/.changeset/chatty-walls-judge.md b/.changeset/chatty-walls-judge.md new file mode 100644 index 0000000000..72e636e026 --- /dev/null +++ b/.changeset/chatty-walls-judge.md @@ -0,0 +1,123 @@ +--- +'@backstage/app-defaults': patch +'@backstage/backend-common': patch +'@backstage/backend-tasks': patch +'@backstage/backend-test-utils': patch +'@backstage/catalog-client': patch +'@backstage/catalog-model': patch +'@backstage/cli': patch +'@backstage/cli-common': patch +'@backstage/codemods': patch +'@backstage/config': patch +'@backstage/config-loader': patch +'@backstage/core-app-api': patch +'@backstage/core-components': patch +'@backstage/core-plugin-api': patch +'@backstage/create-app': patch +'@backstage/dev-utils': patch +'@backstage/errors': patch +'@backstage/integration': patch +'@backstage/integration-react': patch +'@backstage/release-manifests': patch +'@backstage/search-common': patch +'@techdocs/cli': patch +'@backstage/techdocs-common': patch +'@backstage/test-utils': patch +'@backstage/theme': patch +'@backstage/types': patch +'@backstage/version-bridge': 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-app-backend': patch +'@backstage/plugin-auth-backend': patch +'@backstage/plugin-auth-node': patch +'@backstage/plugin-azure-devops': patch +'@backstage/plugin-azure-devops-backend': patch +'@backstage/plugin-azure-devops-common': patch +'@backstage/plugin-badges': patch +'@backstage/plugin-badges-backend': patch +'@backstage/plugin-bazaar': patch +'@backstage/plugin-bazaar-backend': patch +'@backstage/plugin-bitrise': patch +'@backstage/plugin-catalog': patch +'@backstage/plugin-catalog-backend': patch +'@backstage/plugin-catalog-backend-module-ldap': patch +'@backstage/plugin-catalog-backend-module-msgraph': patch +'@backstage/plugin-catalog-common': patch +'@backstage/plugin-catalog-graph': patch +'@backstage/plugin-catalog-graphql': patch +'@backstage/plugin-catalog-import': patch +'@backstage/plugin-catalog-react': patch +'@backstage/plugin-cicd-statistics': patch +'@backstage/plugin-circleci': patch +'@backstage/plugin-cloudbuild': patch +'@backstage/plugin-code-coverage': patch +'@backstage/plugin-code-coverage-backend': patch +'@backstage/plugin-config-schema': patch +'@backstage/plugin-cost-insights': patch +'@backstage/plugin-explore': patch +'@backstage/plugin-explore-react': patch +'@backstage/plugin-firehydrant': patch +'@backstage/plugin-fossa': patch +'@backstage/plugin-gcp-projects': patch +'@backstage/plugin-git-release-manager': patch +'@backstage/plugin-github-actions': patch +'@backstage/plugin-github-deployments': 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': patch +'@backstage/plugin-jenkins-backend': patch +'@backstage/plugin-kafka': patch +'@backstage/plugin-kafka-backend': patch +'@backstage/plugin-kubernetes': patch +'@backstage/plugin-kubernetes-backend': patch +'@backstage/plugin-kubernetes-common': patch +'@backstage/plugin-lighthouse': patch +'@backstage/plugin-newrelic': patch +'@backstage/plugin-newrelic-dashboard': patch +'@backstage/plugin-org': patch +'@backstage/plugin-pagerduty': patch +'@backstage/plugin-permission-backend': patch +'@backstage/plugin-permission-common': patch +'@backstage/plugin-permission-node': patch +'@backstage/plugin-permission-react': patch +'@backstage/plugin-proxy-backend': patch +'@backstage/plugin-rollbar': patch +'@backstage/plugin-rollbar-backend': patch +'@backstage/plugin-scaffolder': patch +'@backstage/plugin-scaffolder-backend': patch +'@backstage/plugin-scaffolder-backend-module-cookiecutter': patch +'@backstage/plugin-scaffolder-backend-module-rails': patch +'@backstage/plugin-scaffolder-backend-module-yeoman': patch +'@backstage/plugin-scaffolder-common': patch +'@backstage/plugin-search': patch +'@backstage/plugin-search-backend': patch +'@backstage/plugin-search-backend-module-elasticsearch': patch +'@backstage/plugin-search-backend-module-pg': patch +'@backstage/plugin-search-backend-node': patch +'@backstage/plugin-sentry': patch +'@backstage/plugin-shortcuts': patch +'@backstage/plugin-sonarqube': patch +'@backstage/plugin-splunk-on-call': patch +'@backstage/plugin-tech-insights': patch +'@backstage/plugin-tech-insights-backend': patch +'@backstage/plugin-tech-insights-backend-module-jsonfc': patch +'@backstage/plugin-tech-insights-common': patch +'@backstage/plugin-tech-insights-node': patch +'@backstage/plugin-tech-radar': patch +'@backstage/plugin-techdocs': patch +'@backstage/plugin-techdocs-backend': patch +'@backstage/plugin-todo': patch +'@backstage/plugin-todo-backend': patch +'@backstage/plugin-user-settings': patch +'@backstage/plugin-xcmetrics': patch +--- + +Added `backstage.role` to `package.json` From d3381edcb17afecd2ea293adede3e021c2a7b9ae Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sun, 13 Feb 2022 22:59:30 +0100 Subject: [PATCH 075/383] cli: rename plugin-x roles to x-plugin Signed-off-by: Patrik Oldsberg --- packages/cli/src/commands/start/command.ts | 8 ++++---- packages/cli/src/lib/role/packageRoles.test.ts | 8 ++++---- packages/cli/src/lib/role/packageRoles.ts | 16 ++++++++-------- packages/cli/src/lib/role/types.ts | 8 ++++---- 4 files changed, 20 insertions(+), 20 deletions(-) diff --git a/packages/cli/src/commands/start/command.ts b/packages/cli/src/commands/start/command.ts index 6615d5fd46..66aaa897ef 100644 --- a/packages/cli/src/commands/start/command.ts +++ b/packages/cli/src/commands/start/command.ts @@ -31,8 +31,8 @@ export async function command(cmd: Command): Promise { switch (role) { case 'backend': - case 'plugin-backend': - case 'plugin-backend-module': + case 'backend-plugin': + case 'backend-plugin-module': case 'node-library': return startBackend(options); case 'app': @@ -42,8 +42,8 @@ export async function command(cmd: Command): Promise { verifyVersions: true, }); case 'web-library': - case 'plugin-frontend': - case 'plugin-frontend-module': + case 'frontend-plugin': + case 'frontend-plugin-module': return startFrontend({ entry: 'dev/index', ...options }); default: throw new Error( diff --git a/packages/cli/src/lib/role/packageRoles.test.ts b/packages/cli/src/lib/role/packageRoles.test.ts index f6c9fb418a..db6b63f327 100644 --- a/packages/cli/src/lib/role/packageRoles.test.ts +++ b/packages/cli/src/lib/role/packageRoles.test.ts @@ -180,7 +180,7 @@ describe('detectRoleFromPackage', () => { clean: 'backstage-cli clean', }, }), - ).toEqual('plugin-frontend'); + ).toEqual('frontend-plugin'); }); it('detects the role of @backstage/plugin-catalog-backend', () => { @@ -204,7 +204,7 @@ describe('detectRoleFromPackage', () => { clean: 'backstage-cli clean', }, }), - ).toEqual('plugin-backend'); + ).toEqual('backend-plugin'); }); it('detects the role of @backstage/plugin-catalog-react', () => { @@ -274,7 +274,7 @@ describe('detectRoleFromPackage', () => { clean: 'backstage-cli clean', }, }), - ).toEqual('plugin-backend-module'); + ).toEqual('backend-plugin-module'); }); it('detects the role of @backstage/plugin-permission-node', () => { @@ -323,6 +323,6 @@ describe('detectRoleFromPackage', () => { clean: 'backstage-cli clean', }, }), - ).toEqual('plugin-frontend-module'); + ).toEqual('frontend-plugin-module'); }); }); diff --git a/packages/cli/src/lib/role/packageRoles.ts b/packages/cli/src/lib/role/packageRoles.ts index 7c855ee0fd..b5fbd75b56 100644 --- a/packages/cli/src/lib/role/packageRoles.ts +++ b/packages/cli/src/lib/role/packageRoles.ts @@ -52,22 +52,22 @@ const packageRoleInfos: PackageRoleInfo[] = [ output: ['types', 'esm', 'cjs'], }, { - role: 'plugin-frontend', + role: 'frontend-plugin', platform: 'web', output: ['types', 'esm'], }, { - role: 'plugin-frontend-module', + role: 'frontend-plugin-module', platform: 'web', output: ['types', 'esm'], }, { - role: 'plugin-backend', + role: 'backend-plugin', platform: 'node', output: ['types', 'cjs'], }, { - role: 'plugin-backend-module', + role: 'backend-plugin-module', platform: 'node', output: ['types', 'cjs'], }, @@ -153,16 +153,16 @@ export function detectRoleFromPackage( return 'backend'; } if (pkg.name?.includes('plugin-') && pkg.name?.includes('-backend-module-')) { - return 'plugin-backend-module'; + return 'backend-plugin-module'; } if (pkg.name?.includes('plugin-') && pkg.name?.includes('-module-')) { - return 'plugin-frontend-module'; + return 'frontend-plugin-module'; } if (pkg.scripts?.start?.includes('plugin:serve')) { - return 'plugin-frontend'; + return 'frontend-plugin'; } if (pkg.scripts?.start?.includes('backend:dev')) { - return 'plugin-backend'; + return 'backend-plugin'; } const mainEntry = pkg.publishConfig?.main || pkg.main; diff --git a/packages/cli/src/lib/role/types.ts b/packages/cli/src/lib/role/types.ts index 6a89f7bdaf..1b18c71620 100644 --- a/packages/cli/src/lib/role/types.ts +++ b/packages/cli/src/lib/role/types.ts @@ -21,10 +21,10 @@ export type PackageRole = | 'web-library' | 'node-library' | 'common-library' - | 'plugin-frontend' - | 'plugin-frontend-module' - | 'plugin-backend' - | 'plugin-backend-module'; + | 'frontend-plugin' + | 'frontend-plugin-module' + | 'backend-plugin' + | 'backend-plugin-module'; export type PackagePlatform = 'node' | 'web' | 'common'; export type PackageOutputType = 'bundle' | 'types' | 'esm' | 'cjs'; From bb5fcc3209757630041d414386a6efd2cff94c09 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sun, 13 Feb 2022 22:55:21 +0100 Subject: [PATCH 076/383] update all plugin package roles Signed-off-by: Patrik Oldsberg --- 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/app-backend/package.json | 2 +- plugins/auth-backend/package.json | 2 +- plugins/azure-devops-backend/package.json | 2 +- plugins/azure-devops/package.json | 2 +- plugins/badges-backend/package.json | 2 +- plugins/badges/package.json | 2 +- plugins/bazaar-backend/package.json | 2 +- plugins/bazaar/package.json | 2 +- plugins/bitrise/package.json | 2 +- plugins/catalog-backend-module-ldap/package.json | 2 +- plugins/catalog-backend-module-msgraph/package.json | 2 +- plugins/catalog-backend/package.json | 2 +- plugins/catalog-graph/package.json | 2 +- plugins/catalog-graphql/package.json | 2 +- plugins/catalog-import/package.json | 2 +- plugins/catalog/package.json | 2 +- plugins/cicd-statistics/package.json | 2 +- plugins/circleci/package.json | 2 +- plugins/cloudbuild/package.json | 2 +- plugins/code-coverage-backend/package.json | 2 +- plugins/code-coverage/package.json | 2 +- plugins/config-schema/package.json | 2 +- plugins/cost-insights/package.json | 2 +- plugins/explore/package.json | 2 +- plugins/firehydrant/package.json | 2 +- plugins/fossa/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/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-backend/package.json | 2 +- plugins/kafka/package.json | 2 +- plugins/kubernetes-backend/package.json | 2 +- plugins/kubernetes/package.json | 2 +- plugins/lighthouse/package.json | 2 +- plugins/newrelic-dashboard/package.json | 2 +- plugins/newrelic/package.json | 2 +- plugins/org/package.json | 2 +- plugins/pagerduty/package.json | 2 +- plugins/permission-backend/package.json | 2 +- plugins/proxy-backend/package.json | 2 +- plugins/rollbar-backend/package.json | 2 +- plugins/rollbar/package.json | 2 +- plugins/scaffolder-backend-module-cookiecutter/package.json | 2 +- plugins/scaffolder-backend-module-rails/package.json | 2 +- plugins/scaffolder-backend-module-yeoman/package.json | 2 +- plugins/scaffolder-backend/package.json | 2 +- plugins/scaffolder/package.json | 2 +- plugins/search-backend-module-elasticsearch/package.json | 2 +- plugins/search-backend-module-pg/package.json | 2 +- plugins/search-backend/package.json | 2 +- plugins/search/package.json | 2 +- plugins/sentry/package.json | 2 +- plugins/shortcuts/package.json | 2 +- plugins/sonarqube/package.json | 2 +- plugins/splunk-on-call/package.json | 2 +- plugins/tech-insights-backend-module-jsonfc/package.json | 2 +- plugins/tech-insights-backend/package.json | 2 +- plugins/tech-insights-node/package.json | 2 +- plugins/tech-insights/package.json | 2 +- plugins/tech-radar/package.json | 2 +- plugins/techdocs-backend/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/xcmetrics/package.json | 2 +- 80 files changed, 80 insertions(+), 80 deletions(-) diff --git a/plugins/airbrake/package.json b/plugins/airbrake/package.json index 8d35ab3f67..a8cfc938d0 100644 --- a/plugins/airbrake/package.json +++ b/plugins/airbrake/package.json @@ -10,7 +10,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-frontend" + "role": "frontend-plugin" }, "scripts": { "build": "backstage-cli plugin:build", diff --git a/plugins/allure/package.json b/plugins/allure/package.json index 06db3459eb..197b57f978 100644 --- a/plugins/allure/package.json +++ b/plugins/allure/package.json @@ -12,7 +12,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-frontend" + "role": "frontend-plugin" }, "scripts": { "build": "backstage-cli plugin:build", diff --git a/plugins/analytics-module-ga/package.json b/plugins/analytics-module-ga/package.json index 1c3b952c5b..600f59a4e2 100644 --- a/plugins/analytics-module-ga/package.json +++ b/plugins/analytics-module-ga/package.json @@ -11,7 +11,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-frontend-module" + "role": "frontend-plugin-module" }, "scripts": { "build": "backstage-cli plugin:build", diff --git a/plugins/apache-airflow/package.json b/plugins/apache-airflow/package.json index b3e31d3109..4872b8f406 100644 --- a/plugins/apache-airflow/package.json +++ b/plugins/apache-airflow/package.json @@ -10,7 +10,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-frontend" + "role": "frontend-plugin" }, "scripts": { "build": "backstage-cli plugin:build", diff --git a/plugins/api-docs/package.json b/plugins/api-docs/package.json index bebbd1876e..5dd27e005b 100644 --- a/plugins/api-docs/package.json +++ b/plugins/api-docs/package.json @@ -11,7 +11,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-frontend" + "role": "frontend-plugin" }, "homepage": "https://backstage.io", "repository": { diff --git a/plugins/app-backend/package.json b/plugins/app-backend/package.json index 0f68706db3..582ad10a56 100644 --- a/plugins/app-backend/package.json +++ b/plugins/app-backend/package.json @@ -12,7 +12,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-backend" + "role": "backend-plugin" }, "homepage": "https://backstage.io", "repository": { diff --git a/plugins/auth-backend/package.json b/plugins/auth-backend/package.json index 4b55ba1558..40e24ab723 100644 --- a/plugins/auth-backend/package.json +++ b/plugins/auth-backend/package.json @@ -12,7 +12,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-backend" + "role": "backend-plugin" }, "homepage": "https://backstage.io", "repository": { diff --git a/plugins/azure-devops-backend/package.json b/plugins/azure-devops-backend/package.json index 5754043120..4d7cfa5fbb 100644 --- a/plugins/azure-devops-backend/package.json +++ b/plugins/azure-devops-backend/package.json @@ -11,7 +11,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-backend" + "role": "backend-plugin" }, "scripts": { "start": "backstage-cli backend:dev", diff --git a/plugins/azure-devops/package.json b/plugins/azure-devops/package.json index bd1cde48bb..a8e6233990 100644 --- a/plugins/azure-devops/package.json +++ b/plugins/azure-devops/package.json @@ -11,7 +11,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-frontend" + "role": "frontend-plugin" }, "homepage": "https://backstage.io", "repository": { diff --git a/plugins/badges-backend/package.json b/plugins/badges-backend/package.json index 45f4599b7d..433d03ce8e 100644 --- a/plugins/badges-backend/package.json +++ b/plugins/badges-backend/package.json @@ -12,7 +12,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-backend" + "role": "backend-plugin" }, "homepage": "https://backstage.io", "repository": { diff --git a/plugins/badges/package.json b/plugins/badges/package.json index 959e9e08e7..9567c3c40e 100644 --- a/plugins/badges/package.json +++ b/plugins/badges/package.json @@ -11,7 +11,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-frontend" + "role": "frontend-plugin" }, "homepage": "https://backstage.io", "repository": { diff --git a/plugins/bazaar-backend/package.json b/plugins/bazaar-backend/package.json index e522b74435..afe1f5ef16 100644 --- a/plugins/bazaar-backend/package.json +++ b/plugins/bazaar-backend/package.json @@ -11,7 +11,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-backend" + "role": "backend-plugin" }, "scripts": { "start": "backstage-cli backend:dev", diff --git a/plugins/bazaar/package.json b/plugins/bazaar/package.json index 43d4f0d175..02df40bc83 100644 --- a/plugins/bazaar/package.json +++ b/plugins/bazaar/package.json @@ -11,7 +11,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-frontend" + "role": "frontend-plugin" }, "scripts": { "build": "backstage-cli plugin:build", diff --git a/plugins/bitrise/package.json b/plugins/bitrise/package.json index 299d317025..11215adb49 100644 --- a/plugins/bitrise/package.json +++ b/plugins/bitrise/package.json @@ -11,7 +11,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-frontend" + "role": "frontend-plugin" }, "scripts": { "build": "backstage-cli plugin:build", diff --git a/plugins/catalog-backend-module-ldap/package.json b/plugins/catalog-backend-module-ldap/package.json index 0b9d462bc3..26a53e7858 100644 --- a/plugins/catalog-backend-module-ldap/package.json +++ b/plugins/catalog-backend-module-ldap/package.json @@ -12,7 +12,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-backend-module" + "role": "backend-plugin-module" }, "homepage": "https://backstage.io", "repository": { diff --git a/plugins/catalog-backend-module-msgraph/package.json b/plugins/catalog-backend-module-msgraph/package.json index 3b4ea6000b..7285fb2f12 100644 --- a/plugins/catalog-backend-module-msgraph/package.json +++ b/plugins/catalog-backend-module-msgraph/package.json @@ -12,7 +12,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-backend-module" + "role": "backend-plugin-module" }, "homepage": "https://backstage.io", "repository": { diff --git a/plugins/catalog-backend/package.json b/plugins/catalog-backend/package.json index a127310167..67560f49f8 100644 --- a/plugins/catalog-backend/package.json +++ b/plugins/catalog-backend/package.json @@ -12,7 +12,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-backend" + "role": "backend-plugin" }, "homepage": "https://backstage.io", "repository": { diff --git a/plugins/catalog-graph/package.json b/plugins/catalog-graph/package.json index 753a6c6602..d0ba2ae4a8 100644 --- a/plugins/catalog-graph/package.json +++ b/plugins/catalog-graph/package.json @@ -11,7 +11,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-frontend" + "role": "frontend-plugin" }, "scripts": { "build": "backstage-cli plugin:build", diff --git a/plugins/catalog-graphql/package.json b/plugins/catalog-graphql/package.json index 282fb7f5d0..49dab8aaa8 100644 --- a/plugins/catalog-graphql/package.json +++ b/plugins/catalog-graphql/package.json @@ -11,7 +11,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-backend" + "role": "backend-plugin" }, "homepage": "https://backstage.io", "repository": { diff --git a/plugins/catalog-import/package.json b/plugins/catalog-import/package.json index 6c4d923daf..0160618dd9 100644 --- a/plugins/catalog-import/package.json +++ b/plugins/catalog-import/package.json @@ -12,7 +12,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-frontend" + "role": "frontend-plugin" }, "homepage": "https://backstage.io", "repository": { diff --git a/plugins/catalog/package.json b/plugins/catalog/package.json index 63de8b1a90..72951945e0 100644 --- a/plugins/catalog/package.json +++ b/plugins/catalog/package.json @@ -12,7 +12,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-frontend" + "role": "frontend-plugin" }, "homepage": "https://backstage.io", "repository": { diff --git a/plugins/cicd-statistics/package.json b/plugins/cicd-statistics/package.json index 272472916a..1860fdc1a6 100644 --- a/plugins/cicd-statistics/package.json +++ b/plugins/cicd-statistics/package.json @@ -12,7 +12,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-frontend" + "role": "frontend-plugin" }, "homepage": "https://backstage.io", "repository": { diff --git a/plugins/circleci/package.json b/plugins/circleci/package.json index 5305f63bac..f3f78db349 100644 --- a/plugins/circleci/package.json +++ b/plugins/circleci/package.json @@ -12,7 +12,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-frontend" + "role": "frontend-plugin" }, "homepage": "https://backstage.io", "repository": { diff --git a/plugins/cloudbuild/package.json b/plugins/cloudbuild/package.json index 3d9554813f..9e79a59a7f 100644 --- a/plugins/cloudbuild/package.json +++ b/plugins/cloudbuild/package.json @@ -11,7 +11,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-frontend" + "role": "frontend-plugin" }, "homepage": "https://backstage.io", "repository": { diff --git a/plugins/code-coverage-backend/package.json b/plugins/code-coverage-backend/package.json index 21f0a12af3..128fea3f3c 100644 --- a/plugins/code-coverage-backend/package.json +++ b/plugins/code-coverage-backend/package.json @@ -11,7 +11,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-backend" + "role": "backend-plugin" }, "scripts": { "start": "backstage-cli backend:dev", diff --git a/plugins/code-coverage/package.json b/plugins/code-coverage/package.json index 91520e81fa..f88661dd92 100644 --- a/plugins/code-coverage/package.json +++ b/plugins/code-coverage/package.json @@ -11,7 +11,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-frontend" + "role": "frontend-plugin" }, "scripts": { "build": "backstage-cli plugin:build", diff --git a/plugins/config-schema/package.json b/plugins/config-schema/package.json index 2d2c085db4..c796508452 100644 --- a/plugins/config-schema/package.json +++ b/plugins/config-schema/package.json @@ -11,7 +11,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-frontend" + "role": "frontend-plugin" }, "scripts": { "build": "backstage-cli plugin:build", diff --git a/plugins/cost-insights/package.json b/plugins/cost-insights/package.json index dce356c420..74f5788a55 100644 --- a/plugins/cost-insights/package.json +++ b/plugins/cost-insights/package.json @@ -12,7 +12,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-frontend" + "role": "frontend-plugin" }, "homepage": "https://backstage.io", "repository": { diff --git a/plugins/explore/package.json b/plugins/explore/package.json index f3be9f82ac..5e19ef8b2a 100644 --- a/plugins/explore/package.json +++ b/plugins/explore/package.json @@ -12,7 +12,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-frontend" + "role": "frontend-plugin" }, "homepage": "https://backstage.io", "repository": { diff --git a/plugins/firehydrant/package.json b/plugins/firehydrant/package.json index 1fa66440d2..474d5f69a8 100644 --- a/plugins/firehydrant/package.json +++ b/plugins/firehydrant/package.json @@ -12,7 +12,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-frontend" + "role": "frontend-plugin" }, "scripts": { "build": "backstage-cli plugin:build", diff --git a/plugins/fossa/package.json b/plugins/fossa/package.json index 1c6a2fe6a6..27329a50ea 100644 --- a/plugins/fossa/package.json +++ b/plugins/fossa/package.json @@ -12,7 +12,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-frontend" + "role": "frontend-plugin" }, "homepage": "https://backstage.io", "repository": { diff --git a/plugins/gcp-projects/package.json b/plugins/gcp-projects/package.json index 4c5b505c33..6be44b609a 100644 --- a/plugins/gcp-projects/package.json +++ b/plugins/gcp-projects/package.json @@ -11,7 +11,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-frontend" + "role": "frontend-plugin" }, "homepage": "https://backstage.io", "repository": { diff --git a/plugins/git-release-manager/package.json b/plugins/git-release-manager/package.json index 1ab7d133f8..e0400ac022 100644 --- a/plugins/git-release-manager/package.json +++ b/plugins/git-release-manager/package.json @@ -11,7 +11,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-frontend" + "role": "frontend-plugin" }, "scripts": { "build": "backstage-cli plugin:build", diff --git a/plugins/github-actions/package.json b/plugins/github-actions/package.json index 8c50004b09..5d9b0688d2 100644 --- a/plugins/github-actions/package.json +++ b/plugins/github-actions/package.json @@ -12,7 +12,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-frontend" + "role": "frontend-plugin" }, "homepage": "https://backstage.io", "repository": { diff --git a/plugins/github-deployments/package.json b/plugins/github-deployments/package.json index 513ebc94c0..dcdb13b038 100644 --- a/plugins/github-deployments/package.json +++ b/plugins/github-deployments/package.json @@ -11,7 +11,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-frontend" + "role": "frontend-plugin" }, "scripts": { "build": "backstage-cli plugin:build", diff --git a/plugins/gitops-profiles/package.json b/plugins/gitops-profiles/package.json index 22a20b166d..0f47ac32f6 100644 --- a/plugins/gitops-profiles/package.json +++ b/plugins/gitops-profiles/package.json @@ -12,7 +12,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-frontend" + "role": "frontend-plugin" }, "homepage": "https://backstage.io", "repository": { diff --git a/plugins/gocd/package.json b/plugins/gocd/package.json index de73318cc2..b82e1f12ee 100644 --- a/plugins/gocd/package.json +++ b/plugins/gocd/package.json @@ -12,7 +12,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-frontend" + "role": "frontend-plugin" }, "homepage": "https://backstage.io", "repository": { diff --git a/plugins/graphiql/package.json b/plugins/graphiql/package.json index 372298a13f..781bfcf063 100644 --- a/plugins/graphiql/package.json +++ b/plugins/graphiql/package.json @@ -9,7 +9,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-frontend" + "role": "frontend-plugin" }, "homepage": "https://github.com/backstage/backstage/tree/master/plugins/graphiql#readme", "repository": { diff --git a/plugins/graphql-backend/package.json b/plugins/graphql-backend/package.json index 291902585b..31df1a5571 100644 --- a/plugins/graphql-backend/package.json +++ b/plugins/graphql-backend/package.json @@ -12,7 +12,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-backend" + "role": "backend-plugin" }, "homepage": "https://backstage.io", "repository": { diff --git a/plugins/home/package.json b/plugins/home/package.json index 121aa391ca..404482a3bd 100644 --- a/plugins/home/package.json +++ b/plugins/home/package.json @@ -11,7 +11,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-frontend" + "role": "frontend-plugin" }, "homepage": "https://github.com/backstage/backstage/tree/master/plugins/home#readme", "repository": { diff --git a/plugins/ilert/package.json b/plugins/ilert/package.json index 8bde3b011b..ccff499504 100644 --- a/plugins/ilert/package.json +++ b/plugins/ilert/package.json @@ -11,7 +11,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-frontend" + "role": "frontend-plugin" }, "scripts": { "build": "backstage-cli plugin:build", diff --git a/plugins/jenkins-backend/package.json b/plugins/jenkins-backend/package.json index 85e77aa7e2..8662abcbcf 100644 --- a/plugins/jenkins-backend/package.json +++ b/plugins/jenkins-backend/package.json @@ -12,7 +12,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-backend" + "role": "backend-plugin" }, "configSchema": "config.d.ts", "scripts": { diff --git a/plugins/jenkins/package.json b/plugins/jenkins/package.json index 6ae4ed7d6c..c3220221d1 100644 --- a/plugins/jenkins/package.json +++ b/plugins/jenkins/package.json @@ -12,7 +12,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-frontend" + "role": "frontend-plugin" }, "homepage": "https://backstage.io", "repository": { diff --git a/plugins/kafka-backend/package.json b/plugins/kafka-backend/package.json index 76e67d7056..aa164ae85e 100644 --- a/plugins/kafka-backend/package.json +++ b/plugins/kafka-backend/package.json @@ -12,7 +12,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-backend" + "role": "backend-plugin" }, "homepage": "https://backstage.io", "repository": { diff --git a/plugins/kafka/package.json b/plugins/kafka/package.json index a3edc70b4b..ca35e0d3e0 100644 --- a/plugins/kafka/package.json +++ b/plugins/kafka/package.json @@ -11,7 +11,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-frontend" + "role": "frontend-plugin" }, "scripts": { "build": "backstage-cli plugin:build", diff --git a/plugins/kubernetes-backend/package.json b/plugins/kubernetes-backend/package.json index 5d95ebd5f4..e1162622f3 100644 --- a/plugins/kubernetes-backend/package.json +++ b/plugins/kubernetes-backend/package.json @@ -12,7 +12,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-backend" + "role": "backend-plugin" }, "homepage": "https://backstage.io", "repository": { diff --git a/plugins/kubernetes/package.json b/plugins/kubernetes/package.json index 3ed986741e..2408bc6fda 100644 --- a/plugins/kubernetes/package.json +++ b/plugins/kubernetes/package.json @@ -11,7 +11,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-frontend" + "role": "frontend-plugin" }, "homepage": "https://backstage.io", "repository": { diff --git a/plugins/lighthouse/package.json b/plugins/lighthouse/package.json index 6bb24c2225..b60c3fd9d5 100644 --- a/plugins/lighthouse/package.json +++ b/plugins/lighthouse/package.json @@ -12,7 +12,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-frontend" + "role": "frontend-plugin" }, "homepage": "https://backstage.io", "repository": { diff --git a/plugins/newrelic-dashboard/package.json b/plugins/newrelic-dashboard/package.json index a75e3db981..e96ebeb744 100644 --- a/plugins/newrelic-dashboard/package.json +++ b/plugins/newrelic-dashboard/package.json @@ -10,7 +10,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-frontend" + "role": "frontend-plugin" }, "scripts": { "build": "backstage-cli plugin:build", diff --git a/plugins/newrelic/package.json b/plugins/newrelic/package.json index 220135a245..4aa18b744e 100644 --- a/plugins/newrelic/package.json +++ b/plugins/newrelic/package.json @@ -12,7 +12,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-frontend" + "role": "frontend-plugin" }, "homepage": "https://backstage.io", "repository": { diff --git a/plugins/org/package.json b/plugins/org/package.json index 093de5cfb3..52bab0e3a2 100644 --- a/plugins/org/package.json +++ b/plugins/org/package.json @@ -11,7 +11,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-frontend" + "role": "frontend-plugin" }, "scripts": { "build": "backstage-cli plugin:build", diff --git a/plugins/pagerduty/package.json b/plugins/pagerduty/package.json index 47e6ac53a8..166fcab5b3 100644 --- a/plugins/pagerduty/package.json +++ b/plugins/pagerduty/package.json @@ -11,7 +11,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-frontend" + "role": "frontend-plugin" }, "homepage": "https://backstage.io", "repository": { diff --git a/plugins/permission-backend/package.json b/plugins/permission-backend/package.json index ca578a383f..c1e945f42c 100644 --- a/plugins/permission-backend/package.json +++ b/plugins/permission-backend/package.json @@ -10,7 +10,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-backend" + "role": "backend-plugin" }, "scripts": { "start": "backstage-cli backend:dev", diff --git a/plugins/proxy-backend/package.json b/plugins/proxy-backend/package.json index ad78a05127..f6450296ef 100644 --- a/plugins/proxy-backend/package.json +++ b/plugins/proxy-backend/package.json @@ -11,7 +11,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-backend" + "role": "backend-plugin" }, "homepage": "https://backstage.io", "repository": { diff --git a/plugins/rollbar-backend/package.json b/plugins/rollbar-backend/package.json index 8b88058281..248248ad42 100644 --- a/plugins/rollbar-backend/package.json +++ b/plugins/rollbar-backend/package.json @@ -12,7 +12,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-backend" + "role": "backend-plugin" }, "homepage": "https://backstage.io", "repository": { diff --git a/plugins/rollbar/package.json b/plugins/rollbar/package.json index f331c63eb3..7cf9fc3a7f 100644 --- a/plugins/rollbar/package.json +++ b/plugins/rollbar/package.json @@ -12,7 +12,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-frontend" + "role": "frontend-plugin" }, "homepage": "https://backstage.io", "repository": { diff --git a/plugins/scaffolder-backend-module-cookiecutter/package.json b/plugins/scaffolder-backend-module-cookiecutter/package.json index 9ab1eef088..235432aadc 100644 --- a/plugins/scaffolder-backend-module-cookiecutter/package.json +++ b/plugins/scaffolder-backend-module-cookiecutter/package.json @@ -11,7 +11,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-backend-module" + "role": "backend-plugin-module" }, "scripts": { "start": "backstage-cli backend:dev", diff --git a/plugins/scaffolder-backend-module-rails/package.json b/plugins/scaffolder-backend-module-rails/package.json index bc5e90049a..c0463782c7 100644 --- a/plugins/scaffolder-backend-module-rails/package.json +++ b/plugins/scaffolder-backend-module-rails/package.json @@ -12,7 +12,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-backend-module" + "role": "backend-plugin-module" }, "scripts": { "build": "backstage-cli backend:build", diff --git a/plugins/scaffolder-backend-module-yeoman/package.json b/plugins/scaffolder-backend-module-yeoman/package.json index d9c66b0a8e..98c56c7174 100644 --- a/plugins/scaffolder-backend-module-yeoman/package.json +++ b/plugins/scaffolder-backend-module-yeoman/package.json @@ -11,7 +11,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-backend-module" + "role": "backend-plugin-module" }, "scripts": { "start": "backstage-cli backend:dev", diff --git a/plugins/scaffolder-backend/package.json b/plugins/scaffolder-backend/package.json index f1b3e0f7fc..4b3290cffd 100644 --- a/plugins/scaffolder-backend/package.json +++ b/plugins/scaffolder-backend/package.json @@ -12,7 +12,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-backend" + "role": "backend-plugin" }, "homepage": "https://backstage.io", "repository": { diff --git a/plugins/scaffolder/package.json b/plugins/scaffolder/package.json index d232eaee9d..ceb549014a 100644 --- a/plugins/scaffolder/package.json +++ b/plugins/scaffolder/package.json @@ -12,7 +12,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-frontend" + "role": "frontend-plugin" }, "homepage": "https://backstage.io", "repository": { diff --git a/plugins/search-backend-module-elasticsearch/package.json b/plugins/search-backend-module-elasticsearch/package.json index d4cb19b8a4..a7227a2e7f 100644 --- a/plugins/search-backend-module-elasticsearch/package.json +++ b/plugins/search-backend-module-elasticsearch/package.json @@ -11,7 +11,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-backend-module" + "role": "backend-plugin-module" }, "scripts": { "start": "backstage-cli backend:dev", diff --git a/plugins/search-backend-module-pg/package.json b/plugins/search-backend-module-pg/package.json index 9277fa558e..767ec5a9c2 100644 --- a/plugins/search-backend-module-pg/package.json +++ b/plugins/search-backend-module-pg/package.json @@ -11,7 +11,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-backend-module" + "role": "backend-plugin-module" }, "scripts": { "start": "backstage-cli backend:dev", diff --git a/plugins/search-backend/package.json b/plugins/search-backend/package.json index 80092b7288..9cde417263 100644 --- a/plugins/search-backend/package.json +++ b/plugins/search-backend/package.json @@ -11,7 +11,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-backend" + "role": "backend-plugin" }, "scripts": { "start": "backstage-cli backend:dev", diff --git a/plugins/search/package.json b/plugins/search/package.json index 20fb30304e..8c2664c604 100644 --- a/plugins/search/package.json +++ b/plugins/search/package.json @@ -11,7 +11,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-frontend" + "role": "frontend-plugin" }, "homepage": "https://backstage.io", "repository": { diff --git a/plugins/sentry/package.json b/plugins/sentry/package.json index 0231e9c659..03489c166f 100644 --- a/plugins/sentry/package.json +++ b/plugins/sentry/package.json @@ -12,7 +12,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-frontend" + "role": "frontend-plugin" }, "homepage": "https://backstage.io", "repository": { diff --git a/plugins/shortcuts/package.json b/plugins/shortcuts/package.json index 619849ca7c..9fafc63e4a 100644 --- a/plugins/shortcuts/package.json +++ b/plugins/shortcuts/package.json @@ -11,7 +11,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-frontend" + "role": "frontend-plugin" }, "scripts": { "build": "backstage-cli plugin:build", diff --git a/plugins/sonarqube/package.json b/plugins/sonarqube/package.json index 58c171781e..149219eb38 100644 --- a/plugins/sonarqube/package.json +++ b/plugins/sonarqube/package.json @@ -12,7 +12,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-frontend" + "role": "frontend-plugin" }, "homepage": "https://backstage.io", "repository": { diff --git a/plugins/splunk-on-call/package.json b/plugins/splunk-on-call/package.json index 1ffe79c552..38f57bb727 100644 --- a/plugins/splunk-on-call/package.json +++ b/plugins/splunk-on-call/package.json @@ -11,7 +11,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-frontend" + "role": "frontend-plugin" }, "homepage": "https://backstage.io", "repository": { diff --git a/plugins/tech-insights-backend-module-jsonfc/package.json b/plugins/tech-insights-backend-module-jsonfc/package.json index de04a17e65..53c059e9bf 100644 --- a/plugins/tech-insights-backend-module-jsonfc/package.json +++ b/plugins/tech-insights-backend-module-jsonfc/package.json @@ -11,7 +11,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-backend-module" + "role": "backend-plugin-module" }, "homepage": "https://backstage.io", "repository": { diff --git a/plugins/tech-insights-backend/package.json b/plugins/tech-insights-backend/package.json index 4c8b5c081d..67484263b7 100644 --- a/plugins/tech-insights-backend/package.json +++ b/plugins/tech-insights-backend/package.json @@ -11,7 +11,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-backend" + "role": "backend-plugin" }, "homepage": "https://backstage.io", "repository": { diff --git a/plugins/tech-insights-node/package.json b/plugins/tech-insights-node/package.json index 30333862c7..c9e115db92 100644 --- a/plugins/tech-insights-node/package.json +++ b/plugins/tech-insights-node/package.json @@ -11,7 +11,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-backend" + "role": "backend-plugin" }, "homepage": "https://backstage.io", "repository": { diff --git a/plugins/tech-insights/package.json b/plugins/tech-insights/package.json index b35751e80e..e002bf6a3a 100644 --- a/plugins/tech-insights/package.json +++ b/plugins/tech-insights/package.json @@ -10,7 +10,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-frontend" + "role": "frontend-plugin" }, "scripts": { "build": "backstage-cli plugin:build", diff --git a/plugins/tech-radar/package.json b/plugins/tech-radar/package.json index 3d26cedb4b..7ac2531d6d 100644 --- a/plugins/tech-radar/package.json +++ b/plugins/tech-radar/package.json @@ -12,7 +12,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-frontend" + "role": "frontend-plugin" }, "homepage": "https://backstage.io", "repository": { diff --git a/plugins/techdocs-backend/package.json b/plugins/techdocs-backend/package.json index bac32f8bdf..47479a44a0 100644 --- a/plugins/techdocs-backend/package.json +++ b/plugins/techdocs-backend/package.json @@ -12,7 +12,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-backend" + "role": "backend-plugin" }, "homepage": "https://backstage.io", "repository": { diff --git a/plugins/techdocs/package.json b/plugins/techdocs/package.json index ac2ba7502a..ac5cdbdde1 100644 --- a/plugins/techdocs/package.json +++ b/plugins/techdocs/package.json @@ -12,7 +12,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-frontend" + "role": "frontend-plugin" }, "homepage": "https://backstage.io", "repository": { diff --git a/plugins/todo-backend/package.json b/plugins/todo-backend/package.json index 85d49a5a78..1239aa6cc3 100644 --- a/plugins/todo-backend/package.json +++ b/plugins/todo-backend/package.json @@ -11,7 +11,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-backend" + "role": "backend-plugin" }, "homepage": "https://backstage.io", "repository": { diff --git a/plugins/todo/package.json b/plugins/todo/package.json index a047e54c7d..3825f5cbfc 100644 --- a/plugins/todo/package.json +++ b/plugins/todo/package.json @@ -11,7 +11,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-frontend" + "role": "frontend-plugin" }, "homepage": "https://backstage.io", "repository": { diff --git a/plugins/user-settings/package.json b/plugins/user-settings/package.json index 6d976afbe1..1109fe7125 100644 --- a/plugins/user-settings/package.json +++ b/plugins/user-settings/package.json @@ -12,7 +12,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-frontend" + "role": "frontend-plugin" }, "homepage": "https://backstage.io", "repository": { diff --git a/plugins/xcmetrics/package.json b/plugins/xcmetrics/package.json index e0045e5bc7..e8e67e02bf 100644 --- a/plugins/xcmetrics/package.json +++ b/plugins/xcmetrics/package.json @@ -11,7 +11,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "plugin-frontend" + "role": "frontend-plugin" }, "scripts": { "build": "backstage-cli plugin:build", From 510740be65af25476689767b2583b85837e4b36c Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sun, 13 Feb 2022 23:07:03 +0100 Subject: [PATCH 077/383] cli: add missing role option for build script command + mark experimental Signed-off-by: Patrik Oldsberg --- packages/cli/src/commands/index.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/cli/src/commands/index.ts b/packages/cli/src/commands/index.ts index 770d216ba2..1c2b8feb5b 100644 --- a/packages/cli/src/commands/index.ts +++ b/packages/cli/src/commands/index.ts @@ -53,7 +53,10 @@ export function registerScriptCommand(program: CommanderStatic) { .command('start') .description('Start a package for local development') .option(...configOption) - .option('--role ', 'Run the command with an explicit package role') + .option( + '--role ', + 'Run the command with an explicit package role [EXPERIMENTAL]', + ) .option('--check', 'Enable type checking and linting if available') .option('--inspect', 'Enable debugger in Node.js environments') .option( @@ -65,6 +68,10 @@ export function registerScriptCommand(program: CommanderStatic) { command .command('build') .description('Build a package for production deployment or publishing') + .option( + '--role ', + 'Run the command with an explicit package role [EXPERIMENTAL]', + ) .option( '--minify', 'Minify the generated code. Does not apply to app or backend packages.', From 0266c65a37cdc4065eda60486cada8dc6abbb8b6 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sun, 13 Feb 2022 23:19:05 +0100 Subject: [PATCH 078/383] cli: upgrade package script migration to keep some flags Signed-off-by: Patrik Oldsberg --- .../src/commands/migrate/packageScripts.ts | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/packages/cli/src/commands/migrate/packageScripts.ts b/packages/cli/src/commands/migrate/packageScripts.ts index a3fdd20018..332387a1eb 100644 --- a/packages/cli/src/commands/migrate/packageScripts.ts +++ b/packages/cli/src/commands/migrate/packageScripts.ts @@ -35,9 +35,24 @@ export async function command() { const hasStart = !noStartRoles.includes(role); const isBundled = roleInfo.output.includes('bundle'); + const startCmd = ['start']; + if (packageJson.scripts?.start?.includes('--check')) { + startCmd.push('--check'); + } + + const buildCmd = ['build']; + if (packageJson.scripts?.build?.includes('--minify')) { + buildCmd.push('--minify'); + } + if (packageJson.scripts?.build?.includes('--experimental-type-build')) { + buildCmd.push('--experimental-type-build'); + } + const expectedScripts = { - ...(hasStart && { start: 'backstage-cli script start' }), - build: 'backstage-cli script build', + ...(hasStart && { + start: `backstage-cli script ${startCmd.join(' ')}`, + }), + build: `backstage-cli script ${buildCmd.join(' ')}`, lint: 'backstage-cli script lint', test: 'backstage-cli script test', clean: 'backstage-cli script clean', From 03fb4d9c9b9cfa2c5f749397288164be8722da6f Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sun, 13 Feb 2022 23:22:04 +0100 Subject: [PATCH 079/383] cli: avoid adding pack scripts when migrating scripts in cli packages Signed-off-by: Patrik Oldsberg --- packages/cli/src/commands/migrate/packageScripts.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/cli/src/commands/migrate/packageScripts.ts b/packages/cli/src/commands/migrate/packageScripts.ts index 332387a1eb..8e722a4bd0 100644 --- a/packages/cli/src/commands/migrate/packageScripts.ts +++ b/packages/cli/src/commands/migrate/packageScripts.ts @@ -33,7 +33,7 @@ export async function command() { const roleInfo = getRoleInfo(role); const hasStart = !noStartRoles.includes(role); - const isBundled = roleInfo.output.includes('bundle'); + const needsPack = !(roleInfo.output.includes('bundle') || role === 'cli'); const startCmd = ['start']; if (packageJson.scripts?.start?.includes('--check')) { @@ -56,7 +56,7 @@ export async function command() { lint: 'backstage-cli script lint', test: 'backstage-cli script test', clean: 'backstage-cli script clean', - ...(!isBundled && { + ...(needsPack && { postpack: 'backstage-cli script postpack', prepack: 'backstage-cli script prepack', }), From 11e1621e53ebb26291f3482cb6164106a732bb5d Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Mon, 14 Feb 2022 21:16:50 +0100 Subject: [PATCH 080/383] cli: fix test script setup and make it pass with no tests by default Signed-off-by: Patrik Oldsberg --- packages/cli/src/commands/index.ts | 4 ++-- packages/cli/src/commands/testCommand.ts | 10 +++++++++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/packages/cli/src/commands/index.ts b/packages/cli/src/commands/index.ts index 1c2b8feb5b..006975e77e 100644 --- a/packages/cli/src/commands/index.ts +++ b/packages/cli/src/commands/index.ts @@ -96,7 +96,7 @@ export function registerScriptCommand(program: CommanderStatic) { ) .action(lazy(() => import('./build').then(m => m.command))); - program + command .command('lint') .option( '--format ', @@ -107,7 +107,7 @@ export function registerScriptCommand(program: CommanderStatic) { .description('Lint a package') .action(lazy(() => import('./lint').then(m => m.default))); - program + command .command('test') .allowUnknownOption(true) // Allows the command to run, but we still need to parse raw args .helpOption(', --backstage-cli-help') // Let Jest handle help diff --git a/packages/cli/src/commands/testCommand.ts b/packages/cli/src/commands/testCommand.ts index 24a4e06f9e..7165b20925 100644 --- a/packages/cli/src/commands/testCommand.ts +++ b/packages/cli/src/commands/testCommand.ts @@ -29,7 +29,11 @@ function includesAnyOf(hayStack: string[], ...needles: string[]) { export default async (cmd: Command) => { // all args are forwarded to jest - const rawArgs = cmd.parent.rawArgs as string[]; + let parent = cmd; + while (parent.parent) { + parent = parent.parent; + } + const rawArgs = parent.rawArgs as string[]; const args = rawArgs.slice(rawArgs.indexOf('test') + 1); // Only include our config if caller isn't passing their own config @@ -37,6 +41,10 @@ export default async (cmd: Command) => { args.push('--config', paths.resolveOwn('config/jest.js')); } + if (!includesAnyOf(args, '--no-passWithNoTests', '--passWithNoTests=false')) { + args.push('--passWithNoTests'); + } + // Run in watch mode unless in CI, coverage mode, or running all tests if ( !process.env.CI && From 71973cd4d36c1ed9cb822ed6df8143cdd9618a80 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Mon, 14 Feb 2022 21:36:15 +0100 Subject: [PATCH 081/383] cli: improve package script migration to keep more args and not replace custom scripts Signed-off-by: Patrik Oldsberg --- .../src/commands/migrate/packageScripts.ts | 37 ++++++++++++++++--- 1 file changed, 32 insertions(+), 5 deletions(-) diff --git a/packages/cli/src/commands/migrate/packageScripts.ts b/packages/cli/src/commands/migrate/packageScripts.ts index 8e722a4bd0..c616fbba69 100644 --- a/packages/cli/src/commands/migrate/packageScripts.ts +++ b/packages/cli/src/commands/migrate/packageScripts.ts @@ -19,6 +19,8 @@ import { resolve as resolvePath } from 'path'; import { PackageGraph } from '../../lib/monorepo'; import { getRoleFromPackage, getRoleInfo, PackageRole } from '../../lib/role'; +const configArgPattern = /--config[=\s][^\s$]+/; + const noStartRoles: PackageRole[] = ['cli', 'common-library']; export async function command() { @@ -34,19 +36,39 @@ export async function command() { const roleInfo = getRoleInfo(role); const hasStart = !noStartRoles.includes(role); const needsPack = !(roleInfo.output.includes('bundle') || role === 'cli'); + const scripts = packageJson.scripts ?? {}; const startCmd = ['start']; - if (packageJson.scripts?.start?.includes('--check')) { + if (scripts.start?.includes('--check')) { startCmd.push('--check'); } + if (scripts.start?.includes('--config')) { + startCmd.push(...(scripts.start.match(configArgPattern) ?? [])); + } const buildCmd = ['build']; - if (packageJson.scripts?.build?.includes('--minify')) { + if (scripts.build?.includes('--minify')) { buildCmd.push('--minify'); } - if (packageJson.scripts?.build?.includes('--experimental-type-build')) { + if (scripts.build?.includes('--experimental-type-build')) { buildCmd.push('--experimental-type-build'); } + if (scripts.build?.includes('--config')) { + buildCmd.push(...(scripts.build.match(configArgPattern) ?? [])); + } + + // For test scripts we keep all existing flags except for --passWithNoTests, since that's now default + const testCmd = ['test']; + if (scripts.test?.startsWith('backstage-cli test')) { + const args = scripts.test + .slice('backstage-cli test'.length) + .split(' ') + .filter(Boolean); + if (args.includes('--passWithNoTests')) { + args.splice(args.indexOf('--passWithNoTests'), 1); + } + testCmd.push(...args); + } const expectedScripts = { ...(hasStart && { @@ -54,7 +76,7 @@ export async function command() { }), build: `backstage-cli script ${buildCmd.join(' ')}`, lint: 'backstage-cli script lint', - test: 'backstage-cli script test', + test: `backstage-cli script ${testCmd.join(' ')}`, clean: 'backstage-cli script clean', ...(needsPack && { postpack: 'backstage-cli script postpack', @@ -67,7 +89,12 @@ export async function command() { (packageJson.scripts = packageJson.scripts || {}); for (const [name, value] of Object.entries(expectedScripts)) { - if (currentScripts[name] !== value) { + const currentScript = currentScripts[name]; + + const isMissing = !currentScript; + const isDifferent = currentScript !== value; + const isBackstageScript = currentScript?.includes('backstage-cli'); + if (isMissing || (isDifferent && isBackstageScript)) { changed = true; currentScripts[name] = value; } From 8f82d80adf7c8bf324da1fc198391c5f01cf2c29 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Mon, 14 Feb 2022 21:40:19 +0100 Subject: [PATCH 082/383] migrate all package scripts Signed-off-by: Patrik Oldsberg --- packages/app-defaults/package.json | 13 +++++++------ packages/app/package.json | 10 +++++----- packages/backend-common/package.json | 13 +++++++------ packages/backend-tasks/package.json | 13 +++++++------ packages/backend-test-utils/package.json | 13 +++++++------ packages/backend/package.json | 10 +++++----- packages/catalog-client/package.json | 12 ++++++------ packages/catalog-model/package.json | 12 ++++++------ packages/cli-common/package.json | 13 +++++++------ packages/cli/package.json | 8 ++++---- packages/codemods/package.json | 8 ++++---- packages/config-loader/package.json | 13 +++++++------ packages/config/package.json | 12 ++++++------ packages/core-app-api/package.json | 13 +++++++------ packages/core-components/package.json | 13 +++++++------ packages/core-plugin-api/package.json | 13 +++++++------ packages/create-app/package.json | 8 ++++---- packages/dev-utils/package.json | 13 +++++++------ packages/e2e-test/package.json | 8 +++++--- packages/errors/package.json | 12 ++++++------ packages/integration-react/package.json | 14 +++++++------- packages/integration/package.json | 12 ++++++------ packages/release-manifests/package.json | 12 ++++++------ packages/search-common/package.json | 12 ++++++------ packages/techdocs-cli-embedded-app/package.json | 10 +++++----- packages/techdocs-cli/package.json | 8 ++++---- packages/techdocs-common/package.json | 13 +++++++------ packages/test-utils/package.json | 13 +++++++------ packages/theme/package.json | 12 +++++++----- packages/types/package.json | 12 ++++++------ packages/version-bridge/package.json | 13 +++++++------ plugins/airbrake/package.json | 14 +++++++------- plugins/allure/package.json | 14 +++++++------- plugins/analytics-module-ga/package.json | 14 +++++++------- plugins/apache-airflow/package.json | 14 +++++++------- plugins/api-docs/package.json | 14 +++++++------- plugins/app-backend/package.json | 14 +++++++------- plugins/auth-backend/package.json | 14 +++++++------- plugins/auth-node/package.json | 13 +++++++------ plugins/azure-devops-backend/package.json | 14 +++++++------- plugins/azure-devops-common/package.json | 12 ++++++------ plugins/azure-devops/package.json | 14 +++++++------- plugins/badges-backend/package.json | 14 +++++++------- plugins/badges/package.json | 14 +++++++------- plugins/bazaar-backend/package.json | 14 +++++++------- plugins/bazaar/package.json | 14 +++++++------- plugins/bitrise/package.json | 14 +++++++------- plugins/catalog-backend-module-ldap/package.json | 13 +++++++------ .../catalog-backend-module-msgraph/package.json | 13 +++++++------ plugins/catalog-backend/package.json | 14 +++++++------- plugins/catalog-common/package.json | 12 ++++++------ plugins/catalog-graph/package.json | 14 +++++++------- plugins/catalog-graphql/package.json | 14 +++++++------- plugins/catalog-import/package.json | 14 +++++++------- plugins/catalog-react/package.json | 13 +++++++------ plugins/catalog/package.json | 14 +++++++------- plugins/cicd-statistics/package.json | 13 +++++++------ plugins/circleci/package.json | 14 +++++++------- plugins/cloudbuild/package.json | 14 +++++++------- plugins/code-coverage-backend/package.json | 14 +++++++------- plugins/code-coverage/package.json | 14 +++++++------- plugins/config-schema/package.json | 14 +++++++------- plugins/cost-insights/package.json | 14 +++++++------- plugins/explore-react/package.json | 13 +++++++------ plugins/explore/package.json | 14 +++++++------- plugins/firehydrant/package.json | 14 +++++++------- plugins/fossa/package.json | 14 +++++++------- plugins/gcp-projects/package.json | 14 +++++++------- plugins/git-release-manager/package.json | 14 +++++++------- plugins/github-actions/package.json | 14 +++++++------- plugins/github-deployments/package.json | 14 +++++++------- plugins/gitops-profiles/package.json | 14 +++++++------- plugins/gocd/package.json | 14 +++++++------- plugins/graphiql/package.json | 14 +++++++------- plugins/graphql-backend/package.json | 14 +++++++------- plugins/home/package.json | 14 +++++++------- plugins/ilert/package.json | 14 +++++++------- plugins/jenkins-backend/package.json | 14 +++++++------- plugins/jenkins/package.json | 14 +++++++------- plugins/kafka-backend/package.json | 14 +++++++------- plugins/kafka/package.json | 14 +++++++------- plugins/kubernetes-backend/package.json | 14 +++++++------- plugins/kubernetes-common/package.json | 12 ++++++------ plugins/kubernetes/package.json | 14 +++++++------- plugins/lighthouse/package.json | 14 +++++++------- plugins/newrelic-dashboard/package.json | 14 +++++++------- plugins/newrelic/package.json | 14 +++++++------- plugins/org/package.json | 14 +++++++------- plugins/pagerduty/package.json | 14 +++++++------- plugins/permission-backend/package.json | 14 +++++++------- plugins/permission-common/package.json | 12 ++++++------ plugins/permission-node/package.json | 13 +++++++------ plugins/permission-react/package.json | 13 +++++++------ plugins/proxy-backend/package.json | 14 +++++++------- plugins/rollbar-backend/package.json | 14 +++++++------- plugins/rollbar/package.json | 14 +++++++------- .../package.json | 14 +++++++------- .../scaffolder-backend-module-rails/package.json | 14 +++++++------- .../scaffolder-backend-module-yeoman/package.json | 14 +++++++------- plugins/scaffolder-backend/package.json | 14 +++++++------- plugins/scaffolder-common/package.json | 12 ++++++------ plugins/scaffolder/package.json | 14 +++++++------- .../package.json | 14 +++++++------- plugins/search-backend-module-pg/package.json | 14 +++++++------- plugins/search-backend-node/package.json | 14 +++++++------- plugins/search-backend/package.json | 14 +++++++------- plugins/search/package.json | 14 +++++++------- plugins/sentry/package.json | 14 +++++++------- plugins/shortcuts/package.json | 14 +++++++------- plugins/sonarqube/package.json | 14 +++++++------- plugins/splunk-on-call/package.json | 14 +++++++------- .../package.json | 14 +++++++------- plugins/tech-insights-backend/package.json | 14 +++++++------- plugins/tech-insights-common/package.json | 12 ++++++------ plugins/tech-insights-node/package.json | 14 +++++++------- plugins/tech-insights/package.json | 14 +++++++------- plugins/tech-radar/package.json | 14 +++++++------- plugins/techdocs-backend/package.json | 14 +++++++------- plugins/techdocs/package.json | 14 +++++++------- plugins/todo-backend/package.json | 13 +++++++------ plugins/todo/package.json | 14 +++++++------- plugins/user-settings/package.json | 14 +++++++------- plugins/xcmetrics/package.json | 14 +++++++------- 123 files changed, 827 insertions(+), 801 deletions(-) diff --git a/packages/app-defaults/package.json b/packages/app-defaults/package.json index db0eea8303..a5c89553ba 100644 --- a/packages/app-defaults/package.json +++ b/packages/app-defaults/package.json @@ -24,12 +24,13 @@ "main": "src/index.ts", "types": "src/index.ts", "scripts": { - "build": "backstage-cli build --outputs types,esm", - "lint": "backstage-cli lint", - "test": "backstage-cli test", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "build": "backstage-cli script build", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean", + "start": "backstage-cli script start" }, "dependencies": { "@backstage/core-components": "^0.8.8", diff --git a/packages/app/package.json b/packages/app/package.json index 3f870970bd..8ebfdd6bff 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -92,13 +92,13 @@ "start-server-and-test": "^1.10.11" }, "scripts": { - "start": "backstage-cli app:serve", - "build": "backstage-cli app:build", - "clean": "backstage-cli clean", - "test": "backstage-cli test", + "start": "backstage-cli script start", + "build": "backstage-cli script build", + "clean": "backstage-cli script clean", + "test": "backstage-cli script test", "test:e2e": "start-server-and-test start http://localhost:3000 cy:dev", "test:e2e:ci": "start-server-and-test start http://localhost:3000 cy:run", - "lint": "backstage-cli lint", + "lint": "backstage-cli script lint", "cy:dev": "cypress open", "cy:run": "cypress run" }, diff --git a/packages/backend-common/package.json b/packages/backend-common/package.json index 41408330a6..9f0efc8785 100644 --- a/packages/backend-common/package.json +++ b/packages/backend-common/package.json @@ -25,12 +25,13 @@ ], "license": "Apache-2.0", "scripts": { - "build": "backstage-cli build --experimental-type-build --outputs cjs,types", - "lint": "backstage-cli lint", - "test": "backstage-cli test", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "build": "backstage-cli script build --experimental-type-build", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean", + "start": "backstage-cli script start" }, "dependencies": { "@backstage/cli-common": "^0.1.6", diff --git a/packages/backend-tasks/package.json b/packages/backend-tasks/package.json index 8f11561c41..624f37858d 100644 --- a/packages/backend-tasks/package.json +++ b/packages/backend-tasks/package.json @@ -24,12 +24,13 @@ ], "license": "Apache-2.0", "scripts": { - "build": "backstage-cli build --outputs cjs,types", - "lint": "backstage-cli lint", - "test": "backstage-cli test", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "build": "backstage-cli script build", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean", + "start": "backstage-cli script start" }, "dependencies": { "@backstage/backend-common": "^0.10.7", diff --git a/packages/backend-test-utils/package.json b/packages/backend-test-utils/package.json index 5cffa1130d..5916c25adb 100644 --- a/packages/backend-test-utils/package.json +++ b/packages/backend-test-utils/package.json @@ -25,12 +25,13 @@ ], "license": "Apache-2.0", "scripts": { - "build": "backstage-cli build --outputs cjs,types", - "lint": "backstage-cli lint", - "test": "backstage-cli test", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "build": "backstage-cli script build", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean", + "start": "backstage-cli script start" }, "dependencies": { "@backstage/backend-common": "^0.10.7", diff --git a/packages/backend/package.json b/packages/backend/package.json index e0b97c8510..80f88b5325 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -18,12 +18,12 @@ "backstage" ], "scripts": { - "build": "backstage-cli backend:bundle", + "build": "backstage-cli script build", "build-image": "docker build ../.. -f Dockerfile --tag example-backend", - "start": "backstage-cli backend:dev", - "lint": "backstage-cli lint", - "test": "backstage-cli test", - "clean": "backstage-cli clean", + "start": "backstage-cli script start", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", + "clean": "backstage-cli script clean", "migrate:create": "knex migrate:make -x ts" }, "dependencies": { diff --git a/packages/catalog-client/package.json b/packages/catalog-client/package.json index 6bf8869f72..5c8b36b9b0 100644 --- a/packages/catalog-client/package.json +++ b/packages/catalog-client/package.json @@ -25,12 +25,12 @@ "backstage" ], "scripts": { - "build": "backstage-cli build", - "lint": "backstage-cli lint", - "test": "backstage-cli test", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "build": "backstage-cli script build", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/catalog-model": "^0.9.10", diff --git a/packages/catalog-model/package.json b/packages/catalog-model/package.json index 6af022ee88..3ba52f0929 100644 --- a/packages/catalog-model/package.json +++ b/packages/catalog-model/package.json @@ -26,12 +26,12 @@ "backstage" ], "scripts": { - "build": "backstage-cli build --experimental-type-build", - "lint": "backstage-cli lint", - "test": "backstage-cli test", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "build": "backstage-cli script build --experimental-type-build", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/config": "^0.1.13", diff --git a/packages/cli-common/package.json b/packages/cli-common/package.json index 453fa85bf9..5e1f31795f 100644 --- a/packages/cli-common/package.json +++ b/packages/cli-common/package.json @@ -24,12 +24,13 @@ ], "license": "Apache-2.0", "scripts": { - "build": "backstage-cli build --outputs cjs,types", - "lint": "backstage-cli lint", - "test": "backstage-cli test", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "build": "backstage-cli script build", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean", + "start": "backstage-cli script start" }, "devDependencies": { "@types/jest": "^26.0.7", diff --git a/packages/cli/package.json b/packages/cli/package.json index 934b97c124..87b3ad599c 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -21,10 +21,10 @@ "license": "Apache-2.0", "main": "dist/index.cjs.js", "scripts": { - "build": "backstage-cli build --outputs cjs", - "lint": "backstage-cli lint", - "test": "backstage-cli test", - "clean": "backstage-cli clean", + "build": "backstage-cli script build", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", + "clean": "backstage-cli script clean", "start": "nodemon --" }, "bin": { diff --git a/packages/codemods/package.json b/packages/codemods/package.json index aa74584114..bc6eac7a0d 100644 --- a/packages/codemods/package.json +++ b/packages/codemods/package.json @@ -23,12 +23,12 @@ "main": "src/index.ts", "scripts": { "start": "nodemon --", - "build": "backstage-cli build --outputs cjs", - "lint": "backstage-cli lint", - "test": "backstage-cli test", + "build": "backstage-cli script build", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", "prepack": "backstage-cli prepack", "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "clean": "backstage-cli script clean" }, "bin": { "backstage-codemods": "bin/backstage-codemods" diff --git a/packages/config-loader/package.json b/packages/config-loader/package.json index 10e9b447ae..dccb21c9eb 100644 --- a/packages/config-loader/package.json +++ b/packages/config-loader/package.json @@ -25,12 +25,13 @@ "main": "src/index.ts", "types": "src/index.ts", "scripts": { - "build": "backstage-cli build", - "lint": "backstage-cli lint", - "test": "backstage-cli test", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "build": "backstage-cli script build", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean", + "start": "backstage-cli script start" }, "dependencies": { "@backstage/cli-common": "^0.1.6", diff --git a/packages/config/package.json b/packages/config/package.json index 72ddeb054a..de1e72350f 100644 --- a/packages/config/package.json +++ b/packages/config/package.json @@ -25,12 +25,12 @@ "main": "src/index.ts", "types": "src/index.ts", "scripts": { - "build": "backstage-cli build", - "lint": "backstage-cli lint", - "test": "backstage-cli test", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "build": "backstage-cli script build", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/types": "^0.1.1", diff --git a/packages/core-app-api/package.json b/packages/core-app-api/package.json index 60801bae79..84ec66f60c 100644 --- a/packages/core-app-api/package.json +++ b/packages/core-app-api/package.json @@ -24,12 +24,13 @@ "main": "src/index.ts", "types": "src/index.ts", "scripts": { - "build": "backstage-cli build --outputs types,esm", - "lint": "backstage-cli lint", - "test": "backstage-cli test", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "build": "backstage-cli script build", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean", + "start": "backstage-cli script start" }, "dependencies": { "@backstage/config": "^0.1.13", diff --git a/packages/core-components/package.json b/packages/core-components/package.json index 54a8e0c114..b65392f4c6 100644 --- a/packages/core-components/package.json +++ b/packages/core-components/package.json @@ -24,12 +24,13 @@ "main": "src/index.ts", "types": "src/index.ts", "scripts": { - "build": "backstage-cli build --outputs types,esm", - "lint": "backstage-cli lint", - "test": "backstage-cli test", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "build": "backstage-cli script build", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean", + "start": "backstage-cli script start" }, "dependencies": { "@backstage/config": "^0.1.13", diff --git a/packages/core-plugin-api/package.json b/packages/core-plugin-api/package.json index 0f9a815b35..003dea2698 100644 --- a/packages/core-plugin-api/package.json +++ b/packages/core-plugin-api/package.json @@ -24,12 +24,13 @@ "main": "src/index.ts", "types": "src/index.ts", "scripts": { - "build": "backstage-cli build --outputs types,esm", - "lint": "backstage-cli lint", - "test": "backstage-cli test", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "build": "backstage-cli script build", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean", + "start": "backstage-cli script start" }, "dependencies": { "@backstage/config": "^0.1.13", diff --git a/packages/create-app/package.json b/packages/create-app/package.json index 064664465c..3b57096a52 100644 --- a/packages/create-app/package.json +++ b/packages/create-app/package.json @@ -24,10 +24,10 @@ "backstage-create-app": "bin/backstage-create-app" }, "scripts": { - "build": "backstage-cli build --outputs cjs", - "lint": "backstage-cli lint", - "test": "backstage-cli test", - "clean": "backstage-cli clean", + "build": "backstage-cli script build", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", + "clean": "backstage-cli script clean", "prepack": "node scripts/prepack.js", "postpack": "node scripts/postpack.js", "start": "nodemon --" diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 4af8ec1c17..86fcb20bd0 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -24,12 +24,13 @@ "main": "src/index.ts", "types": "src/index.ts", "scripts": { - "build": "backstage-cli build --outputs types,esm", - "lint": "backstage-cli lint", - "test": "backstage-cli test", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "build": "backstage-cli script build", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean", + "start": "backstage-cli script start" }, "dependencies": { "@backstage/app-defaults": "^0.1.7", diff --git a/packages/e2e-test/package.json b/packages/e2e-test/package.json index 70a3e68327..7d6a979a8c 100644 --- a/packages/e2e-test/package.json +++ b/packages/e2e-test/package.json @@ -19,9 +19,11 @@ "main": "src/index.ts", "scripts": { "start": "nodemon --", - "lint": "backstage-cli lint", - "test": "backstage-cli test", - "test:e2e": "yarn start" + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", + "test:e2e": "yarn start", + "build": "backstage-cli script build", + "clean": "backstage-cli script clean" }, "bin": { "e2e-test": "bin/e2e-test" diff --git a/packages/errors/package.json b/packages/errors/package.json index 345e304646..4c8a985932 100644 --- a/packages/errors/package.json +++ b/packages/errors/package.json @@ -25,12 +25,12 @@ "backstage" ], "scripts": { - "build": "backstage-cli build", - "lint": "backstage-cli lint", - "test": "backstage-cli test", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "build": "backstage-cli script build", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/types": "^0.1.1", diff --git a/packages/integration-react/package.json b/packages/integration-react/package.json index ed26937f7e..148b64c39d 100644 --- a/packages/integration-react/package.json +++ b/packages/integration-react/package.json @@ -15,13 +15,13 @@ "role": "web-library" }, "scripts": { - "build": "backstage-cli plugin:build", - "start": "backstage-cli plugin:serve", - "lint": "backstage-cli lint", - "test": "backstage-cli test", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "build": "backstage-cli script build", + "start": "backstage-cli script start", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/config": "^0.1.13", diff --git a/packages/integration/package.json b/packages/integration/package.json index 694c12fd4a..dff83ef042 100644 --- a/packages/integration/package.json +++ b/packages/integration/package.json @@ -25,12 +25,12 @@ "backstage" ], "scripts": { - "build": "backstage-cli build", - "lint": "backstage-cli lint", - "test": "backstage-cli test", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "build": "backstage-cli script build", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/config": "^0.1.13", diff --git a/packages/release-manifests/package.json b/packages/release-manifests/package.json index d3000688c2..3a5a41d8b5 100644 --- a/packages/release-manifests/package.json +++ b/packages/release-manifests/package.json @@ -25,12 +25,12 @@ ], "license": "Apache-2.0", "scripts": { - "build": "backstage-cli build", - "lint": "backstage-cli lint", - "test": "backstage-cli test", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "build": "backstage-cli script build", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "cross-fetch": "^3.1.5" diff --git a/packages/search-common/package.json b/packages/search-common/package.json index 2f885ca874..5e1bd56609 100644 --- a/packages/search-common/package.json +++ b/packages/search-common/package.json @@ -28,12 +28,12 @@ "dist" ], "scripts": { - "build": "backstage-cli build --outputs cjs,types", - "lint": "backstage-cli lint", - "test": "backstage-cli test", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "build": "backstage-cli script build", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "bugs": { "url": "https://github.com/backstage/backstage/issues" diff --git a/packages/techdocs-cli-embedded-app/package.json b/packages/techdocs-cli-embedded-app/package.json index aa2d2d5457..75e2b280d5 100644 --- a/packages/techdocs-cli-embedded-app/package.json +++ b/packages/techdocs-cli-embedded-app/package.json @@ -42,11 +42,11 @@ "start-server-and-test": "^1.10.11" }, "scripts": { - "start": "backstage-cli app:serve --config ./app-config.yaml", - "build": "backstage-cli app:build --config ./app-config.yaml", - "clean": "backstage-cli clean", - "test": "backstage-cli test", - "lint": "backstage-cli lint", + "start": "backstage-cli script start --config ./app-config.yaml", + "build": "backstage-cli script build --config ./app-config.yaml", + "clean": "backstage-cli script clean", + "test": "backstage-cli script test", + "lint": "backstage-cli script lint", "test:e2e": "cross-env PORT=3001 start-server-and-test start http://localhost:3001 cy:dev", "test:e2e:ci": "cross-env PORT=3001 start-server-and-test start http://localhost:3001 cy:run", "cy:dev": "cypress open", diff --git a/packages/techdocs-cli/package.json b/packages/techdocs-cli/package.json index ce408e814c..9d65d8d51c 100644 --- a/packages/techdocs-cli/package.json +++ b/packages/techdocs-cli/package.json @@ -24,10 +24,10 @@ "types": "", "scripts": { "start": "nodemon --", - "build": "backstage-cli build --outputs cjs", - "clean": "backstage-cli clean", - "lint": "backstage-cli lint", - "test": "backstage-cli test --testPathIgnorePatterns=src/e2e.test.ts", + "build": "backstage-cli script build", + "clean": "backstage-cli script clean", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test --testPathIgnorePatterns=src/e2e.test.ts", "test:e2e": "backstage-cli test src/e2e.test.ts", "test:e2e:ci": "backstage-cli test --watchAll=false --ci src/e2e.test.ts", "prepack": "./scripts/prepack.sh" diff --git a/packages/techdocs-common/package.json b/packages/techdocs-common/package.json index 0078b1ab65..402254ff8b 100644 --- a/packages/techdocs-common/package.json +++ b/packages/techdocs-common/package.json @@ -28,12 +28,13 @@ "dist" ], "scripts": { - "build": "backstage-cli build --outputs cjs,types", - "lint": "backstage-cli lint", - "test": "backstage-cli test", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "build": "backstage-cli script build", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean", + "start": "backstage-cli script start" }, "bugs": { "url": "https://github.com/backstage/backstage/issues" diff --git a/packages/test-utils/package.json b/packages/test-utils/package.json index 0cf9c4a245..006a893500 100644 --- a/packages/test-utils/package.json +++ b/packages/test-utils/package.json @@ -24,12 +24,13 @@ "main": "src/index.ts", "types": "src/index.ts", "scripts": { - "build": "backstage-cli build --outputs types,esm", - "lint": "backstage-cli lint", - "test": "backstage-cli test", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "build": "backstage-cli script build", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean", + "start": "backstage-cli script start" }, "dependencies": { "@backstage/config": "^0.1.13", diff --git a/packages/theme/package.json b/packages/theme/package.json index 5090836437..446fca4029 100644 --- a/packages/theme/package.json +++ b/packages/theme/package.json @@ -24,11 +24,13 @@ "main": "src/index.ts", "types": "src/index.ts", "scripts": { - "build": "backstage-cli build --outputs types,esm", - "lint": "backstage-cli lint", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "build": "backstage-cli script build", + "lint": "backstage-cli script lint", + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean", + "start": "backstage-cli script start", + "test": "backstage-cli script test" }, "dependencies": { "@material-ui/core": "^4.12.2" diff --git a/packages/types/package.json b/packages/types/package.json index 8c452d0b87..a8225838a1 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -25,12 +25,12 @@ "backstage" ], "scripts": { - "build": "backstage-cli build", - "lint": "backstage-cli lint", - "test": "backstage-cli test", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "build": "backstage-cli script build", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": {}, "devDependencies": { diff --git a/packages/version-bridge/package.json b/packages/version-bridge/package.json index ff14d07be0..f52f12ed53 100644 --- a/packages/version-bridge/package.json +++ b/packages/version-bridge/package.json @@ -24,12 +24,13 @@ "main": "src/index.ts", "types": "src/index.ts", "scripts": { - "build": "backstage-cli build --outputs types,esm", - "lint": "backstage-cli lint", - "test": "backstage-cli test", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "build": "backstage-cli script build", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean", + "start": "backstage-cli script start" }, "peerDependencies": { "@types/react": "^16.13.1 || ^17.0.0", diff --git a/plugins/airbrake/package.json b/plugins/airbrake/package.json index a8cfc938d0..33cc354b9f 100644 --- a/plugins/airbrake/package.json +++ b/plugins/airbrake/package.json @@ -13,14 +13,14 @@ "role": "frontend-plugin" }, "scripts": { - "build": "backstage-cli plugin:build", - "start": "backstage-cli plugin:serve", - "lint": "backstage-cli lint", - "test": "backstage-cli test", + "build": "backstage-cli script build", + "start": "backstage-cli script start", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/core-components": "^0.8.8", diff --git a/plugins/allure/package.json b/plugins/allure/package.json index 197b57f978..1e61c8b500 100644 --- a/plugins/allure/package.json +++ b/plugins/allure/package.json @@ -15,14 +15,14 @@ "role": "frontend-plugin" }, "scripts": { - "build": "backstage-cli plugin:build", - "start": "backstage-cli plugin:serve", - "lint": "backstage-cli lint", - "test": "backstage-cli test", + "build": "backstage-cli script build", + "start": "backstage-cli script start", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/catalog-model": "^0.9.10", diff --git a/plugins/analytics-module-ga/package.json b/plugins/analytics-module-ga/package.json index 600f59a4e2..8ae8f11132 100644 --- a/plugins/analytics-module-ga/package.json +++ b/plugins/analytics-module-ga/package.json @@ -14,14 +14,14 @@ "role": "frontend-plugin-module" }, "scripts": { - "build": "backstage-cli plugin:build", - "start": "backstage-cli plugin:serve", - "lint": "backstage-cli lint", - "test": "backstage-cli test", + "build": "backstage-cli script build", + "start": "backstage-cli script start", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/config": "^0.1.13", diff --git a/plugins/apache-airflow/package.json b/plugins/apache-airflow/package.json index 4872b8f406..c54857eb93 100644 --- a/plugins/apache-airflow/package.json +++ b/plugins/apache-airflow/package.json @@ -13,14 +13,14 @@ "role": "frontend-plugin" }, "scripts": { - "build": "backstage-cli plugin:build", - "start": "backstage-cli plugin:serve", - "lint": "backstage-cli lint", - "test": "backstage-cli test", + "build": "backstage-cli script build", + "start": "backstage-cli script start", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/core-components": "^0.8.8", diff --git a/plugins/api-docs/package.json b/plugins/api-docs/package.json index 5dd27e005b..cbbeb1d3ce 100644 --- a/plugins/api-docs/package.json +++ b/plugins/api-docs/package.json @@ -23,14 +23,14 @@ "backstage" ], "scripts": { - "build": "backstage-cli plugin:build", - "start": "backstage-cli plugin:serve", - "lint": "backstage-cli lint", - "test": "backstage-cli test", + "build": "backstage-cli script build", + "start": "backstage-cli script start", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@asyncapi/react-component": "1.0.0-next.32", diff --git a/plugins/app-backend/package.json b/plugins/app-backend/package.json index 582ad10a56..7ae736161f 100644 --- a/plugins/app-backend/package.json +++ b/plugins/app-backend/package.json @@ -24,13 +24,13 @@ "backstage" ], "scripts": { - "start": "backstage-cli backend:dev", - "build": "backstage-cli backend:build", - "lint": "backstage-cli lint", - "test": "backstage-cli test", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "start": "backstage-cli script start", + "build": "backstage-cli script build", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/backend-common": "^0.10.7", diff --git a/plugins/auth-backend/package.json b/plugins/auth-backend/package.json index 40e24ab723..8b80adeb34 100644 --- a/plugins/auth-backend/package.json +++ b/plugins/auth-backend/package.json @@ -24,13 +24,13 @@ "backstage" ], "scripts": { - "start": "backstage-cli backend:dev", - "build": "backstage-cli backend:build", - "lint": "backstage-cli lint", - "test": "backstage-cli test", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "start": "backstage-cli script start", + "build": "backstage-cli script build", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/plugin-auth-node": "^0.1.0", diff --git a/plugins/auth-node/package.json b/plugins/auth-node/package.json index 7646385f04..401391df9e 100644 --- a/plugins/auth-node/package.json +++ b/plugins/auth-node/package.json @@ -14,12 +14,13 @@ "role": "node-library" }, "scripts": { - "build": "backstage-cli backend:build", - "lint": "backstage-cli lint", - "test": "backstage-cli test", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "build": "backstage-cli script build", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean", + "start": "backstage-cli script start" }, "dependencies": { "@backstage/backend-common": "^0.10.7", diff --git a/plugins/azure-devops-backend/package.json b/plugins/azure-devops-backend/package.json index 4d7cfa5fbb..8415c82fef 100644 --- a/plugins/azure-devops-backend/package.json +++ b/plugins/azure-devops-backend/package.json @@ -14,13 +14,13 @@ "role": "backend-plugin" }, "scripts": { - "start": "backstage-cli backend:dev", - "build": "backstage-cli backend:build", - "lint": "backstage-cli lint", - "test": "backstage-cli test", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "start": "backstage-cli script start", + "build": "backstage-cli script build", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/backend-common": "^0.10.7", diff --git a/plugins/azure-devops-common/package.json b/plugins/azure-devops-common/package.json index f38ee26755..af59bc42a6 100644 --- a/plugins/azure-devops-common/package.json +++ b/plugins/azure-devops-common/package.json @@ -24,12 +24,12 @@ "backstage" ], "scripts": { - "build": "backstage-cli build", - "lint": "backstage-cli lint", - "test": "backstage-cli test --passWithNoTests", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "build": "backstage-cli script build", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "devDependencies": { "@backstage/cli": "^0.13.2-next.0" diff --git a/plugins/azure-devops/package.json b/plugins/azure-devops/package.json index a8e6233990..e26bf294c2 100644 --- a/plugins/azure-devops/package.json +++ b/plugins/azure-devops/package.json @@ -20,14 +20,14 @@ "directory": "plugins/azure-devops" }, "scripts": { - "build": "backstage-cli plugin:build", - "start": "backstage-cli plugin:serve", - "lint": "backstage-cli lint", - "test": "backstage-cli test", + "build": "backstage-cli script build", + "start": "backstage-cli script start", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/catalog-model": "^0.9.10", diff --git a/plugins/badges-backend/package.json b/plugins/badges-backend/package.json index 433d03ce8e..496fa2b4f5 100644 --- a/plugins/badges-backend/package.json +++ b/plugins/badges-backend/package.json @@ -25,13 +25,13 @@ "badges" ], "scripts": { - "start": "backstage-cli backend:dev", - "build": "backstage-cli backend:build", - "lint": "backstage-cli lint", - "test": "backstage-cli test", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "start": "backstage-cli script start", + "build": "backstage-cli script build", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/backend-common": "^0.10.7", diff --git a/plugins/badges/package.json b/plugins/badges/package.json index 9567c3c40e..cd3049e325 100644 --- a/plugins/badges/package.json +++ b/plugins/badges/package.json @@ -20,14 +20,14 @@ "directory": "plugins/badges" }, "scripts": { - "build": "backstage-cli plugin:build", - "start": "backstage-cli plugin:serve", - "lint": "backstage-cli lint", - "test": "backstage-cli test", + "build": "backstage-cli script build", + "start": "backstage-cli script start", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/catalog-model": "^0.9.10", diff --git a/plugins/bazaar-backend/package.json b/plugins/bazaar-backend/package.json index afe1f5ef16..7904913cb5 100644 --- a/plugins/bazaar-backend/package.json +++ b/plugins/bazaar-backend/package.json @@ -14,13 +14,13 @@ "role": "backend-plugin" }, "scripts": { - "start": "backstage-cli backend:dev", - "build": "backstage-cli backend:build", - "lint": "backstage-cli lint", - "test": "backstage-cli test", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "start": "backstage-cli script start", + "build": "backstage-cli script build", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/backend-common": "^0.10.7", diff --git a/plugins/bazaar/package.json b/plugins/bazaar/package.json index 02df40bc83..952a910c32 100644 --- a/plugins/bazaar/package.json +++ b/plugins/bazaar/package.json @@ -14,14 +14,14 @@ "role": "frontend-plugin" }, "scripts": { - "build": "backstage-cli plugin:build", - "start": "backstage-cli plugin:serve", - "lint": "backstage-cli lint", - "test": "backstage-cli test", + "build": "backstage-cli script build", + "start": "backstage-cli script start", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/catalog-client": "^0.6.0", diff --git a/plugins/bitrise/package.json b/plugins/bitrise/package.json index 11215adb49..29c1b045f8 100644 --- a/plugins/bitrise/package.json +++ b/plugins/bitrise/package.json @@ -14,14 +14,14 @@ "role": "frontend-plugin" }, "scripts": { - "build": "backstage-cli plugin:build", - "start": "backstage-cli plugin:serve", - "lint": "backstage-cli lint", - "test": "backstage-cli test", + "build": "backstage-cli script build", + "start": "backstage-cli script start", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/catalog-model": "^0.9.10", diff --git a/plugins/catalog-backend-module-ldap/package.json b/plugins/catalog-backend-module-ldap/package.json index 26a53e7858..2af4c02715 100644 --- a/plugins/catalog-backend-module-ldap/package.json +++ b/plugins/catalog-backend-module-ldap/package.json @@ -24,12 +24,13 @@ "backstage" ], "scripts": { - "build": "backstage-cli backend:build", - "lint": "backstage-cli lint", - "test": "backstage-cli test", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "build": "backstage-cli script build", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean", + "start": "backstage-cli script start" }, "dependencies": { "@backstage/catalog-model": "^0.9.10", diff --git a/plugins/catalog-backend-module-msgraph/package.json b/plugins/catalog-backend-module-msgraph/package.json index 7285fb2f12..56e9f94886 100644 --- a/plugins/catalog-backend-module-msgraph/package.json +++ b/plugins/catalog-backend-module-msgraph/package.json @@ -24,12 +24,13 @@ "backstage" ], "scripts": { - "build": "backstage-cli backend:build", - "lint": "backstage-cli lint", - "test": "backstage-cli test", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "build": "backstage-cli script build", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean", + "start": "backstage-cli script start" }, "dependencies": { "@azure/msal-node": "^1.1.0", diff --git a/plugins/catalog-backend/package.json b/plugins/catalog-backend/package.json index 67560f49f8..ebf86fc505 100644 --- a/plugins/catalog-backend/package.json +++ b/plugins/catalog-backend/package.json @@ -24,13 +24,13 @@ "backstage" ], "scripts": { - "start": "backstage-cli backend:dev", - "build": "backstage-cli backend:build", - "lint": "backstage-cli lint", - "test": "backstage-cli test", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "start": "backstage-cli script start", + "build": "backstage-cli script build", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/backend-common": "^0.10.7", diff --git a/plugins/catalog-common/package.json b/plugins/catalog-common/package.json index 61e9f47b63..367049212a 100644 --- a/plugins/catalog-common/package.json +++ b/plugins/catalog-common/package.json @@ -25,12 +25,12 @@ "backstage" ], "scripts": { - "build": "backstage-cli build", - "lint": "backstage-cli lint", - "test": "backstage-cli test --passWithNoTests", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "build": "backstage-cli script build", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/plugin-permission-common": "^0.4.0" diff --git a/plugins/catalog-graph/package.json b/plugins/catalog-graph/package.json index d0ba2ae4a8..e54bd28ca2 100644 --- a/plugins/catalog-graph/package.json +++ b/plugins/catalog-graph/package.json @@ -14,14 +14,14 @@ "role": "frontend-plugin" }, "scripts": { - "build": "backstage-cli plugin:build", - "start": "backstage-cli plugin:serve", - "lint": "backstage-cli lint", - "test": "backstage-cli test", + "build": "backstage-cli script build", + "start": "backstage-cli script start", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/catalog-client": "^0.6.0", diff --git a/plugins/catalog-graphql/package.json b/plugins/catalog-graphql/package.json index 49dab8aaa8..4ad28de016 100644 --- a/plugins/catalog-graphql/package.json +++ b/plugins/catalog-graphql/package.json @@ -24,14 +24,14 @@ "graphql" ], "scripts": { - "start": "backstage-cli backend:dev", - "build": "backstage-cli backend:build", - "lint": "backstage-cli lint", - "test": "backstage-cli test", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", + "start": "backstage-cli script start", + "build": "backstage-cli script build", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", "generate:types": "graphql-codegen", - "clean": "backstage-cli clean" + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/catalog-model": "^0.9.10", diff --git a/plugins/catalog-import/package.json b/plugins/catalog-import/package.json index 0160618dd9..0e6176e537 100644 --- a/plugins/catalog-import/package.json +++ b/plugins/catalog-import/package.json @@ -24,14 +24,14 @@ "backstage" ], "scripts": { - "build": "backstage-cli plugin:build", - "start": "backstage-cli plugin:serve", - "lint": "backstage-cli lint", - "test": "backstage-cli test", + "build": "backstage-cli script build", + "start": "backstage-cli script start", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/catalog-client": "^0.6.0", diff --git a/plugins/catalog-react/package.json b/plugins/catalog-react/package.json index 4d5177e4d9..23e25628ba 100644 --- a/plugins/catalog-react/package.json +++ b/plugins/catalog-react/package.json @@ -24,12 +24,13 @@ "backstage" ], "scripts": { - "build": "backstage-cli build", - "lint": "backstage-cli lint", - "test": "backstage-cli test", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "build": "backstage-cli script build", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean", + "start": "backstage-cli script start" }, "dependencies": { "@backstage/catalog-client": "^0.6.0", diff --git a/plugins/catalog/package.json b/plugins/catalog/package.json index 72951945e0..256c3343d1 100644 --- a/plugins/catalog/package.json +++ b/plugins/catalog/package.json @@ -24,14 +24,14 @@ "backstage" ], "scripts": { - "build": "backstage-cli plugin:build", - "start": "backstage-cli plugin:serve", - "lint": "backstage-cli lint", - "test": "backstage-cli test", + "build": "backstage-cli script build", + "start": "backstage-cli script start", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/catalog-client": "^0.6.0", diff --git a/plugins/cicd-statistics/package.json b/plugins/cicd-statistics/package.json index 1860fdc1a6..89ce3da557 100644 --- a/plugins/cicd-statistics/package.json +++ b/plugins/cicd-statistics/package.json @@ -24,12 +24,13 @@ "backstage" ], "scripts": { - "build": "backstage-cli build", - "lint": "backstage-cli lint", - "test": "backstage-cli test", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "build": "backstage-cli script build", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean", + "start": "backstage-cli script start" }, "devDependencies": { "@types/react": "^16.13.1 || ^17.0.0", diff --git a/plugins/circleci/package.json b/plugins/circleci/package.json index f3f78db349..4109d554e4 100644 --- a/plugins/circleci/package.json +++ b/plugins/circleci/package.json @@ -25,14 +25,14 @@ "circleci" ], "scripts": { - "build": "backstage-cli plugin:build", - "lint": "backstage-cli lint", - "test": "backstage-cli test", - "clean": "backstage-cli clean", + "build": "backstage-cli script build", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", + "clean": "backstage-cli script clean", "diff": "backstage-cli plugin:diff", - "start": "backstage-cli plugin:serve", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack" + "start": "backstage-cli script start", + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack" }, "dependencies": { "@backstage/catalog-model": "^0.9.10", diff --git a/plugins/cloudbuild/package.json b/plugins/cloudbuild/package.json index 9e79a59a7f..bd3707f0aa 100644 --- a/plugins/cloudbuild/package.json +++ b/plugins/cloudbuild/package.json @@ -24,14 +24,14 @@ "google cloud" ], "scripts": { - "build": "backstage-cli plugin:build", - "start": "backstage-cli plugin:serve", - "lint": "backstage-cli lint", - "test": "backstage-cli test", + "build": "backstage-cli script build", + "start": "backstage-cli script start", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/catalog-model": "^0.9.10", diff --git a/plugins/code-coverage-backend/package.json b/plugins/code-coverage-backend/package.json index 128fea3f3c..acbaf05214 100644 --- a/plugins/code-coverage-backend/package.json +++ b/plugins/code-coverage-backend/package.json @@ -14,13 +14,13 @@ "role": "backend-plugin" }, "scripts": { - "start": "backstage-cli backend:dev", - "build": "backstage-cli backend:build", - "lint": "backstage-cli lint", - "test": "backstage-cli test", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "start": "backstage-cli script start", + "build": "backstage-cli script build", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/backend-common": "^0.10.7", diff --git a/plugins/code-coverage/package.json b/plugins/code-coverage/package.json index f88661dd92..16ffd6c057 100644 --- a/plugins/code-coverage/package.json +++ b/plugins/code-coverage/package.json @@ -14,14 +14,14 @@ "role": "frontend-plugin" }, "scripts": { - "build": "backstage-cli plugin:build", - "start": "backstage-cli plugin:serve", - "lint": "backstage-cli lint", - "test": "backstage-cli test", + "build": "backstage-cli script build", + "start": "backstage-cli script start", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/catalog-model": "^0.9.10", diff --git a/plugins/config-schema/package.json b/plugins/config-schema/package.json index c796508452..1b6dfeb603 100644 --- a/plugins/config-schema/package.json +++ b/plugins/config-schema/package.json @@ -14,14 +14,14 @@ "role": "frontend-plugin" }, "scripts": { - "build": "backstage-cli plugin:build", - "start": "backstage-cli plugin:serve", - "lint": "backstage-cli lint", - "test": "backstage-cli test", + "build": "backstage-cli script build", + "start": "backstage-cli script start", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/config": "^0.1.13", diff --git a/plugins/cost-insights/package.json b/plugins/cost-insights/package.json index 74f5788a55..e65da6296e 100644 --- a/plugins/cost-insights/package.json +++ b/plugins/cost-insights/package.json @@ -24,14 +24,14 @@ "backstage" ], "scripts": { - "build": "backstage-cli plugin:build", - "start": "backstage-cli plugin:serve", - "lint": "backstage-cli lint", - "test": "backstage-cli test", + "build": "backstage-cli script build", + "start": "backstage-cli script start", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/catalog-model": "^0.9.10", diff --git a/plugins/explore-react/package.json b/plugins/explore-react/package.json index aea81d17d6..946c5922a0 100644 --- a/plugins/explore-react/package.json +++ b/plugins/explore-react/package.json @@ -24,12 +24,13 @@ "backstage" ], "scripts": { - "build": "backstage-cli plugin:build", - "lint": "backstage-cli lint", - "test": "backstage-cli test", - "clean": "backstage-cli clean", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack" + "build": "backstage-cli script build", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", + "clean": "backstage-cli script clean", + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "start": "backstage-cli script start" }, "dependencies": { "@backstage/core-plugin-api": "^0.6.0" diff --git a/plugins/explore/package.json b/plugins/explore/package.json index 5e19ef8b2a..e8f03a2bf3 100644 --- a/plugins/explore/package.json +++ b/plugins/explore/package.json @@ -24,14 +24,14 @@ "backstage" ], "scripts": { - "build": "backstage-cli plugin:build", - "lint": "backstage-cli lint", - "test": "backstage-cli test", + "build": "backstage-cli script build", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", "diff": "backstage-cli plugin:diff", - "clean": "backstage-cli clean", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "start": "backstage-cli plugin:serve" + "clean": "backstage-cli script clean", + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "start": "backstage-cli script start" }, "dependencies": { "@backstage/catalog-model": "^0.9.10", diff --git a/plugins/firehydrant/package.json b/plugins/firehydrant/package.json index 474d5f69a8..0cd7029d49 100644 --- a/plugins/firehydrant/package.json +++ b/plugins/firehydrant/package.json @@ -15,14 +15,14 @@ "role": "frontend-plugin" }, "scripts": { - "build": "backstage-cli plugin:build", - "start": "backstage-cli plugin:serve", - "lint": "backstage-cli lint", - "test": "backstage-cli test", + "build": "backstage-cli script build", + "start": "backstage-cli script start", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/core-components": "^0.8.8", diff --git a/plugins/fossa/package.json b/plugins/fossa/package.json index 27329a50ea..2e9d9a19c1 100644 --- a/plugins/fossa/package.json +++ b/plugins/fossa/package.json @@ -25,14 +25,14 @@ "fossa" ], "scripts": { - "build": "backstage-cli plugin:build", - "start": "backstage-cli plugin:serve", - "lint": "backstage-cli lint", - "test": "backstage-cli test", + "build": "backstage-cli script build", + "start": "backstage-cli script start", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/catalog-model": "^0.9.10", diff --git a/plugins/gcp-projects/package.json b/plugins/gcp-projects/package.json index 6be44b609a..d372b116dd 100644 --- a/plugins/gcp-projects/package.json +++ b/plugins/gcp-projects/package.json @@ -24,14 +24,14 @@ "google cloud" ], "scripts": { - "build": "backstage-cli plugin:build", - "start": "backstage-cli plugin:serve", - "lint": "backstage-cli lint", - "test": "backstage-cli test", + "build": "backstage-cli script build", + "start": "backstage-cli script start", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/core-components": "^0.8.8", diff --git a/plugins/git-release-manager/package.json b/plugins/git-release-manager/package.json index e0400ac022..9406ac5fb8 100644 --- a/plugins/git-release-manager/package.json +++ b/plugins/git-release-manager/package.json @@ -14,14 +14,14 @@ "role": "frontend-plugin" }, "scripts": { - "build": "backstage-cli plugin:build", - "start": "backstage-cli plugin:serve", - "lint": "backstage-cli lint", - "test": "backstage-cli test", + "build": "backstage-cli script build", + "start": "backstage-cli script start", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/core-components": "^0.8.8", diff --git a/plugins/github-actions/package.json b/plugins/github-actions/package.json index 5d9b0688d2..53fa0a469f 100644 --- a/plugins/github-actions/package.json +++ b/plugins/github-actions/package.json @@ -26,14 +26,14 @@ "github actions" ], "scripts": { - "build": "backstage-cli plugin:build", - "start": "backstage-cli plugin:serve", - "lint": "backstage-cli lint", - "test": "backstage-cli test", + "build": "backstage-cli script build", + "start": "backstage-cli script start", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/catalog-model": "^0.9.10", diff --git a/plugins/github-deployments/package.json b/plugins/github-deployments/package.json index dcdb13b038..37dea0059d 100644 --- a/plugins/github-deployments/package.json +++ b/plugins/github-deployments/package.json @@ -14,14 +14,14 @@ "role": "frontend-plugin" }, "scripts": { - "build": "backstage-cli plugin:build", - "start": "backstage-cli plugin:serve", - "lint": "backstage-cli lint", - "test": "backstage-cli test", + "build": "backstage-cli script build", + "start": "backstage-cli script start", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/catalog-model": "^0.9.10", diff --git a/plugins/gitops-profiles/package.json b/plugins/gitops-profiles/package.json index 0f47ac32f6..13dd6de689 100644 --- a/plugins/gitops-profiles/package.json +++ b/plugins/gitops-profiles/package.json @@ -25,14 +25,14 @@ "gitops" ], "scripts": { - "build": "backstage-cli plugin:build", - "start": "backstage-cli plugin:serve", - "lint": "backstage-cli lint", - "test": "backstage-cli test", + "build": "backstage-cli script build", + "start": "backstage-cli script start", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/core-components": "^0.8.8", diff --git a/plugins/gocd/package.json b/plugins/gocd/package.json index b82e1f12ee..4bd089c380 100644 --- a/plugins/gocd/package.json +++ b/plugins/gocd/package.json @@ -21,14 +21,14 @@ "directory": "plugins/gocd" }, "scripts": { - "build": "backstage-cli plugin:build", - "start": "backstage-cli plugin:serve", - "lint": "backstage-cli lint", - "test": "backstage-cli test", + "build": "backstage-cli script build", + "start": "backstage-cli script start", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/catalog-model": "^0.9.10", diff --git a/plugins/graphiql/package.json b/plugins/graphiql/package.json index 781bfcf063..3dac4ccc37 100644 --- a/plugins/graphiql/package.json +++ b/plugins/graphiql/package.json @@ -24,14 +24,14 @@ "main": "src/index.ts", "types": "src/index.ts", "scripts": { - "build": "backstage-cli plugin:build", - "start": "backstage-cli plugin:serve", - "lint": "backstage-cli lint", - "test": "backstage-cli test", + "build": "backstage-cli script build", + "start": "backstage-cli script start", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/core-components": "^0.8.8", diff --git a/plugins/graphql-backend/package.json b/plugins/graphql-backend/package.json index 31df1a5571..d60bdbc41e 100644 --- a/plugins/graphql-backend/package.json +++ b/plugins/graphql-backend/package.json @@ -25,13 +25,13 @@ "graphql" ], "scripts": { - "start": "backstage-cli backend:dev", - "build": "backstage-cli backend:build", - "lint": "backstage-cli lint", - "test": "backstage-cli test", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "start": "backstage-cli script start", + "build": "backstage-cli script build", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/backend-common": "^0.10.7", diff --git a/plugins/home/package.json b/plugins/home/package.json index 404482a3bd..5685f876f0 100644 --- a/plugins/home/package.json +++ b/plugins/home/package.json @@ -24,14 +24,14 @@ "homepage" ], "scripts": { - "build": "backstage-cli plugin:build", - "start": "backstage-cli plugin:serve", - "lint": "backstage-cli lint", - "test": "backstage-cli test", + "build": "backstage-cli script build", + "start": "backstage-cli script start", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/catalog-model": "^0.9.10", diff --git a/plugins/ilert/package.json b/plugins/ilert/package.json index ccff499504..2018122bb3 100644 --- a/plugins/ilert/package.json +++ b/plugins/ilert/package.json @@ -14,14 +14,14 @@ "role": "frontend-plugin" }, "scripts": { - "build": "backstage-cli plugin:build", - "start": "backstage-cli plugin:serve", - "lint": "backstage-cli lint", - "test": "backstage-cli test", + "build": "backstage-cli script build", + "start": "backstage-cli script start", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/catalog-model": "^0.9.10", diff --git a/plugins/jenkins-backend/package.json b/plugins/jenkins-backend/package.json index 8662abcbcf..c920f3f9c0 100644 --- a/plugins/jenkins-backend/package.json +++ b/plugins/jenkins-backend/package.json @@ -16,13 +16,13 @@ }, "configSchema": "config.d.ts", "scripts": { - "start": "backstage-cli backend:dev", - "build": "backstage-cli backend:build", - "lint": "backstage-cli lint", - "test": "backstage-cli test", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "start": "backstage-cli script start", + "build": "backstage-cli script build", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/backend-common": "^0.10.7", diff --git a/plugins/jenkins/package.json b/plugins/jenkins/package.json index c3220221d1..88881df2eb 100644 --- a/plugins/jenkins/package.json +++ b/plugins/jenkins/package.json @@ -25,14 +25,14 @@ "jenkins" ], "scripts": { - "build": "backstage-cli plugin:build", - "start": "backstage-cli plugin:serve", - "lint": "backstage-cli lint", - "test": "backstage-cli test", + "build": "backstage-cli script build", + "start": "backstage-cli script start", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/catalog-model": "^0.9.10", diff --git a/plugins/kafka-backend/package.json b/plugins/kafka-backend/package.json index aa164ae85e..f09fac9072 100644 --- a/plugins/kafka-backend/package.json +++ b/plugins/kafka-backend/package.json @@ -26,13 +26,13 @@ ], "configSchema": "config.d.ts", "scripts": { - "start": "backstage-cli backend:dev", - "build": "backstage-cli backend:build", - "lint": "backstage-cli lint", - "test": "backstage-cli test", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "start": "backstage-cli script start", + "build": "backstage-cli script build", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/backend-common": "^0.10.7", diff --git a/plugins/kafka/package.json b/plugins/kafka/package.json index ca35e0d3e0..5dac7c9e99 100644 --- a/plugins/kafka/package.json +++ b/plugins/kafka/package.json @@ -14,14 +14,14 @@ "role": "frontend-plugin" }, "scripts": { - "build": "backstage-cli plugin:build", - "start": "backstage-cli plugin:serve", - "lint": "backstage-cli lint", - "test": "backstage-cli test", + "build": "backstage-cli script build", + "start": "backstage-cli script start", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/catalog-model": "^0.9.10", diff --git a/plugins/kubernetes-backend/package.json b/plugins/kubernetes-backend/package.json index e1162622f3..b4f5137434 100644 --- a/plugins/kubernetes-backend/package.json +++ b/plugins/kubernetes-backend/package.json @@ -26,13 +26,13 @@ ], "configSchema": "schema.d.ts", "scripts": { - "start": "backstage-cli backend:dev", - "build": "backstage-cli backend:build", - "lint": "backstage-cli lint", - "test": "backstage-cli test", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "start": "backstage-cli script start", + "build": "backstage-cli script build", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/backend-common": "^0.10.7", diff --git a/plugins/kubernetes-common/package.json b/plugins/kubernetes-common/package.json index db0276e6a3..b10167ba27 100644 --- a/plugins/kubernetes-common/package.json +++ b/plugins/kubernetes-common/package.json @@ -27,12 +27,12 @@ "dist" ], "scripts": { - "build": "backstage-cli build", - "lint": "backstage-cli lint", - "test": "backstage-cli test --passWithNoTests", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "build": "backstage-cli script build", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "bugs": { "url": "https://github.com/backstage/backstage/issues" diff --git a/plugins/kubernetes/package.json b/plugins/kubernetes/package.json index 2408bc6fda..43175593f3 100644 --- a/plugins/kubernetes/package.json +++ b/plugins/kubernetes/package.json @@ -24,14 +24,14 @@ "kubernetes" ], "scripts": { - "build": "backstage-cli plugin:build", - "start": "backstage-cli plugin:serve", - "lint": "backstage-cli lint", - "test": "backstage-cli test", + "build": "backstage-cli script build", + "start": "backstage-cli script start", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/catalog-model": "^0.9.10", diff --git a/plugins/lighthouse/package.json b/plugins/lighthouse/package.json index b60c3fd9d5..7ecefbac45 100644 --- a/plugins/lighthouse/package.json +++ b/plugins/lighthouse/package.json @@ -25,14 +25,14 @@ "lighthouse" ], "scripts": { - "build": "backstage-cli plugin:build", - "lint": "backstage-cli lint", - "test": "backstage-cli test", + "build": "backstage-cli script build", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", "diff": "backstage-cli plugin:diff", - "clean": "backstage-cli clean", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "start": "backstage-cli plugin:serve" + "clean": "backstage-cli script clean", + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "start": "backstage-cli script start" }, "dependencies": { "@backstage/catalog-model": "^0.9.10", diff --git a/plugins/newrelic-dashboard/package.json b/plugins/newrelic-dashboard/package.json index e96ebeb744..656780c9d3 100644 --- a/plugins/newrelic-dashboard/package.json +++ b/plugins/newrelic-dashboard/package.json @@ -13,14 +13,14 @@ "role": "frontend-plugin" }, "scripts": { - "build": "backstage-cli plugin:build", - "start": "backstage-cli plugin:serve", - "lint": "backstage-cli lint", - "test": "backstage-cli test", + "build": "backstage-cli script build", + "start": "backstage-cli script start", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/catalog-model": "^0.9.10", diff --git a/plugins/newrelic/package.json b/plugins/newrelic/package.json index 4aa18b744e..4cdef7899e 100644 --- a/plugins/newrelic/package.json +++ b/plugins/newrelic/package.json @@ -25,14 +25,14 @@ "newrelic" ], "scripts": { - "build": "backstage-cli plugin:build", - "start": "backstage-cli plugin:serve", - "lint": "backstage-cli lint", - "test": "backstage-cli test", + "build": "backstage-cli script build", + "start": "backstage-cli script start", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/core-components": "^0.8.8", diff --git a/plugins/org/package.json b/plugins/org/package.json index 52bab0e3a2..be7537c18b 100644 --- a/plugins/org/package.json +++ b/plugins/org/package.json @@ -14,14 +14,14 @@ "role": "frontend-plugin" }, "scripts": { - "build": "backstage-cli plugin:build", - "start": "backstage-cli plugin:serve", - "lint": "backstage-cli lint", - "test": "backstage-cli test", + "build": "backstage-cli script build", + "start": "backstage-cli script start", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/catalog-model": "^0.9.10", diff --git a/plugins/pagerduty/package.json b/plugins/pagerduty/package.json index 166fcab5b3..8ba97477dc 100644 --- a/plugins/pagerduty/package.json +++ b/plugins/pagerduty/package.json @@ -24,14 +24,14 @@ "pagerduty" ], "scripts": { - "build": "backstage-cli plugin:build", - "start": "backstage-cli plugin:serve", - "lint": "backstage-cli lint", - "test": "backstage-cli test", + "build": "backstage-cli script build", + "start": "backstage-cli script start", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/catalog-model": "^0.9.10", diff --git a/plugins/permission-backend/package.json b/plugins/permission-backend/package.json index c1e945f42c..d8ba786979 100644 --- a/plugins/permission-backend/package.json +++ b/plugins/permission-backend/package.json @@ -13,13 +13,13 @@ "role": "backend-plugin" }, "scripts": { - "start": "backstage-cli backend:dev", - "build": "backstage-cli backend:build", - "lint": "backstage-cli lint", - "test": "backstage-cli test", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "start": "backstage-cli script start", + "build": "backstage-cli script build", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/backend-common": "^0.10.7", diff --git a/plugins/permission-common/package.json b/plugins/permission-common/package.json index 13955b09b8..350810fe2b 100644 --- a/plugins/permission-common/package.json +++ b/plugins/permission-common/package.json @@ -30,12 +30,12 @@ ], "configSchema": "config.d.ts", "scripts": { - "build": "backstage-cli build", - "lint": "backstage-cli lint", - "test": "backstage-cli test", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "build": "backstage-cli script build", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "bugs": { "url": "https://github.com/backstage/backstage/issues" diff --git a/plugins/permission-node/package.json b/plugins/permission-node/package.json index b88ad71dd1..902ea01138 100644 --- a/plugins/permission-node/package.json +++ b/plugins/permission-node/package.json @@ -24,12 +24,13 @@ "permissions" ], "scripts": { - "build": "backstage-cli backend:build", - "lint": "backstage-cli lint", - "test": "backstage-cli test", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "build": "backstage-cli script build", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean", + "start": "backstage-cli script start" }, "dependencies": { "@backstage/backend-common": "^0.10.7", diff --git a/plugins/permission-react/package.json b/plugins/permission-react/package.json index b687761828..3a56ccafe6 100644 --- a/plugins/permission-react/package.json +++ b/plugins/permission-react/package.json @@ -22,12 +22,13 @@ "backstage" ], "scripts": { - "build": "backstage-cli build", - "lint": "backstage-cli lint", - "test": "backstage-cli test", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "build": "backstage-cli script build", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean", + "start": "backstage-cli script start" }, "dependencies": { "@backstage/config": "^0.1.13", diff --git a/plugins/proxy-backend/package.json b/plugins/proxy-backend/package.json index f6450296ef..8585c600e6 100644 --- a/plugins/proxy-backend/package.json +++ b/plugins/proxy-backend/package.json @@ -23,13 +23,13 @@ "backstage" ], "scripts": { - "start": "backstage-cli backend:dev", - "build": "backstage-cli backend:build", - "lint": "backstage-cli lint", - "test": "backstage-cli test", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "start": "backstage-cli script start", + "build": "backstage-cli script build", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/backend-common": "^0.10.7", diff --git a/plugins/rollbar-backend/package.json b/plugins/rollbar-backend/package.json index 248248ad42..247ccd4513 100644 --- a/plugins/rollbar-backend/package.json +++ b/plugins/rollbar-backend/package.json @@ -25,13 +25,13 @@ "rollbar" ], "scripts": { - "start": "backstage-cli backend:dev", - "build": "backstage-cli backend:build", - "lint": "backstage-cli lint", - "test": "backstage-cli test", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "start": "backstage-cli script start", + "build": "backstage-cli script build", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/backend-common": "^0.10.7", diff --git a/plugins/rollbar/package.json b/plugins/rollbar/package.json index 7cf9fc3a7f..2da664a70e 100644 --- a/plugins/rollbar/package.json +++ b/plugins/rollbar/package.json @@ -25,14 +25,14 @@ "rollbar" ], "scripts": { - "build": "backstage-cli plugin:build", - "start": "backstage-cli plugin:serve", - "lint": "backstage-cli lint", - "test": "backstage-cli test", + "build": "backstage-cli script build", + "start": "backstage-cli script start", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/catalog-model": "^0.9.10", diff --git a/plugins/scaffolder-backend-module-cookiecutter/package.json b/plugins/scaffolder-backend-module-cookiecutter/package.json index 235432aadc..42478fc07e 100644 --- a/plugins/scaffolder-backend-module-cookiecutter/package.json +++ b/plugins/scaffolder-backend-module-cookiecutter/package.json @@ -14,13 +14,13 @@ "role": "backend-plugin-module" }, "scripts": { - "start": "backstage-cli backend:dev", - "build": "backstage-cli backend:build", - "lint": "backstage-cli lint", - "test": "backstage-cli test", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "start": "backstage-cli script start", + "build": "backstage-cli script build", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/backend-common": "^0.10.7", diff --git a/plugins/scaffolder-backend-module-rails/package.json b/plugins/scaffolder-backend-module-rails/package.json index c0463782c7..e1512bcaee 100644 --- a/plugins/scaffolder-backend-module-rails/package.json +++ b/plugins/scaffolder-backend-module-rails/package.json @@ -15,13 +15,13 @@ "role": "backend-plugin-module" }, "scripts": { - "build": "backstage-cli backend:build", - "start": "backstage-cli backend:dev", - "lint": "backstage-cli lint", - "test": "backstage-cli test", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "build": "backstage-cli script build", + "start": "backstage-cli script start", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/backend-common": "^0.10.7", diff --git a/plugins/scaffolder-backend-module-yeoman/package.json b/plugins/scaffolder-backend-module-yeoman/package.json index 98c56c7174..f5c0fdda66 100644 --- a/plugins/scaffolder-backend-module-yeoman/package.json +++ b/plugins/scaffolder-backend-module-yeoman/package.json @@ -14,13 +14,13 @@ "role": "backend-plugin-module" }, "scripts": { - "start": "backstage-cli backend:dev", - "build": "backstage-cli backend:build", - "lint": "backstage-cli lint", - "test": "backstage-cli test", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "start": "backstage-cli script start", + "build": "backstage-cli script build", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/config": "^0.1.13", diff --git a/plugins/scaffolder-backend/package.json b/plugins/scaffolder-backend/package.json index 4b3290cffd..9085c6db10 100644 --- a/plugins/scaffolder-backend/package.json +++ b/plugins/scaffolder-backend/package.json @@ -24,13 +24,13 @@ "backstage" ], "scripts": { - "start": "backstage-cli backend:dev", - "build": "backstage-cli backend:build", - "lint": "backstage-cli lint", - "test": "backstage-cli test", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean", + "start": "backstage-cli script start", + "build": "backstage-cli script build", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean", "build:assets": "node scripts/build-nunjucks.js" }, "dependencies": { diff --git a/plugins/scaffolder-common/package.json b/plugins/scaffolder-common/package.json index 95e0f3153e..909807c665 100644 --- a/plugins/scaffolder-common/package.json +++ b/plugins/scaffolder-common/package.json @@ -28,12 +28,12 @@ "dist" ], "scripts": { - "build": "backstage-cli build", - "lint": "backstage-cli lint", - "test": "backstage-cli test", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "build": "backstage-cli script build", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "bugs": { "url": "https://github.com/backstage/backstage/issues" diff --git a/plugins/scaffolder/package.json b/plugins/scaffolder/package.json index ceb549014a..350d8ff267 100644 --- a/plugins/scaffolder/package.json +++ b/plugins/scaffolder/package.json @@ -24,14 +24,14 @@ "backstage" ], "scripts": { - "build": "backstage-cli plugin:build", - "start": "backstage-cli plugin:serve", - "lint": "backstage-cli lint", - "test": "backstage-cli test", + "build": "backstage-cli script build", + "start": "backstage-cli script start", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/catalog-client": "^0.6.0", diff --git a/plugins/search-backend-module-elasticsearch/package.json b/plugins/search-backend-module-elasticsearch/package.json index a7227a2e7f..97007c3998 100644 --- a/plugins/search-backend-module-elasticsearch/package.json +++ b/plugins/search-backend-module-elasticsearch/package.json @@ -14,13 +14,13 @@ "role": "backend-plugin-module" }, "scripts": { - "start": "backstage-cli backend:dev", - "build": "backstage-cli backend:build", - "lint": "backstage-cli lint", - "test": "backstage-cli test", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "start": "backstage-cli script start", + "build": "backstage-cli script build", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/config": "^0.1.13", diff --git a/plugins/search-backend-module-pg/package.json b/plugins/search-backend-module-pg/package.json index 767ec5a9c2..c1e37aa4ce 100644 --- a/plugins/search-backend-module-pg/package.json +++ b/plugins/search-backend-module-pg/package.json @@ -14,13 +14,13 @@ "role": "backend-plugin-module" }, "scripts": { - "start": "backstage-cli backend:dev", - "build": "backstage-cli backend:build", - "lint": "backstage-cli lint", - "test": "backstage-cli test", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "start": "backstage-cli script start", + "build": "backstage-cli script build", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/backend-common": "^0.10.7", diff --git a/plugins/search-backend-node/package.json b/plugins/search-backend-node/package.json index 82af4f79df..8598d1befe 100644 --- a/plugins/search-backend-node/package.json +++ b/plugins/search-backend-node/package.json @@ -14,13 +14,13 @@ "role": "node-library" }, "scripts": { - "start": "backstage-cli backend:dev", - "build": "backstage-cli backend:build", - "lint": "backstage-cli lint", - "test": "backstage-cli test", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "start": "backstage-cli script start", + "build": "backstage-cli script build", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/search-common": "^0.2.2", diff --git a/plugins/search-backend/package.json b/plugins/search-backend/package.json index 9cde417263..00dad48f70 100644 --- a/plugins/search-backend/package.json +++ b/plugins/search-backend/package.json @@ -14,13 +14,13 @@ "role": "backend-plugin" }, "scripts": { - "start": "backstage-cli backend:dev", - "build": "backstage-cli backend:build", - "lint": "backstage-cli lint", - "test": "backstage-cli test", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "start": "backstage-cli script start", + "build": "backstage-cli script build", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/backend-common": "^0.10.7", diff --git a/plugins/search/package.json b/plugins/search/package.json index 8c2664c604..1c03faa5f9 100644 --- a/plugins/search/package.json +++ b/plugins/search/package.json @@ -23,14 +23,14 @@ "backstage" ], "scripts": { - "build": "backstage-cli plugin:build", - "start": "backstage-cli plugin:serve", - "lint": "backstage-cli lint", - "test": "backstage-cli test", + "build": "backstage-cli script build", + "start": "backstage-cli script start", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/catalog-model": "^0.9.10", diff --git a/plugins/sentry/package.json b/plugins/sentry/package.json index 03489c166f..b833c1b235 100644 --- a/plugins/sentry/package.json +++ b/plugins/sentry/package.json @@ -25,14 +25,14 @@ "sentry" ], "scripts": { - "build": "backstage-cli plugin:build", - "start": "backstage-cli plugin:serve", - "lint": "backstage-cli lint", - "test": "backstage-cli test", + "build": "backstage-cli script build", + "start": "backstage-cli script start", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/catalog-model": "^0.9.10", diff --git a/plugins/shortcuts/package.json b/plugins/shortcuts/package.json index 9fafc63e4a..4f250e668e 100644 --- a/plugins/shortcuts/package.json +++ b/plugins/shortcuts/package.json @@ -14,14 +14,14 @@ "role": "frontend-plugin" }, "scripts": { - "build": "backstage-cli plugin:build", - "start": "backstage-cli plugin:serve", - "lint": "backstage-cli lint", - "test": "backstage-cli test", + "build": "backstage-cli script build", + "start": "backstage-cli script start", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/core-components": "^0.8.8", diff --git a/plugins/sonarqube/package.json b/plugins/sonarqube/package.json index 149219eb38..a61e721fef 100644 --- a/plugins/sonarqube/package.json +++ b/plugins/sonarqube/package.json @@ -26,14 +26,14 @@ "sonarcloud" ], "scripts": { - "build": "backstage-cli plugin:build", - "start": "backstage-cli plugin:serve", - "lint": "backstage-cli lint", - "test": "backstage-cli test", + "build": "backstage-cli script build", + "start": "backstage-cli script start", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/catalog-model": "^0.9.10", diff --git a/plugins/splunk-on-call/package.json b/plugins/splunk-on-call/package.json index 38f57bb727..23b345390c 100644 --- a/plugins/splunk-on-call/package.json +++ b/plugins/splunk-on-call/package.json @@ -24,14 +24,14 @@ "splunk-on-call" ], "scripts": { - "build": "backstage-cli plugin:build", - "start": "backstage-cli plugin:serve", - "lint": "backstage-cli lint", - "test": "backstage-cli test", + "build": "backstage-cli script build", + "start": "backstage-cli script start", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/catalog-model": "^0.9.10", diff --git a/plugins/tech-insights-backend-module-jsonfc/package.json b/plugins/tech-insights-backend-module-jsonfc/package.json index 53c059e9bf..c446d745d1 100644 --- a/plugins/tech-insights-backend-module-jsonfc/package.json +++ b/plugins/tech-insights-backend-module-jsonfc/package.json @@ -25,13 +25,13 @@ "scorecard" ], "scripts": { - "start": "backstage-cli backend:dev", - "build": "backstage-cli backend:build", - "lint": "backstage-cli lint", - "test": "backstage-cli test", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "start": "backstage-cli script start", + "build": "backstage-cli script build", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/backend-common": "^0.10.7", diff --git a/plugins/tech-insights-backend/package.json b/plugins/tech-insights-backend/package.json index 67484263b7..d7f0e80963 100644 --- a/plugins/tech-insights-backend/package.json +++ b/plugins/tech-insights-backend/package.json @@ -25,13 +25,13 @@ "reporting" ], "scripts": { - "start": "backstage-cli backend:dev", - "build": "backstage-cli backend:build", - "lint": "backstage-cli lint", - "test": "backstage-cli test", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "start": "backstage-cli script start", + "build": "backstage-cli script build", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/backend-common": "^0.10.7", diff --git a/plugins/tech-insights-common/package.json b/plugins/tech-insights-common/package.json index bc77a4b1f5..b7c02e979a 100644 --- a/plugins/tech-insights-common/package.json +++ b/plugins/tech-insights-common/package.json @@ -25,12 +25,12 @@ ], "scripts": { "start": "backstage-cli backend:dev", - "build": "backstage-cli backend:build", - "lint": "backstage-cli lint", - "test": "backstage-cli test", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "build": "backstage-cli script build", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@types/luxon": "^2.0.5", diff --git a/plugins/tech-insights-node/package.json b/plugins/tech-insights-node/package.json index c9e115db92..c439231e02 100644 --- a/plugins/tech-insights-node/package.json +++ b/plugins/tech-insights-node/package.json @@ -24,13 +24,13 @@ "tech-insights" ], "scripts": { - "start": "backstage-cli backend:dev", - "build": "backstage-cli backend:build", - "lint": "backstage-cli lint", - "test": "backstage-cli test", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "start": "backstage-cli script start", + "build": "backstage-cli script build", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/backend-common": "^0.10.7", diff --git a/plugins/tech-insights/package.json b/plugins/tech-insights/package.json index e002bf6a3a..194d2141a2 100644 --- a/plugins/tech-insights/package.json +++ b/plugins/tech-insights/package.json @@ -13,14 +13,14 @@ "role": "frontend-plugin" }, "scripts": { - "build": "backstage-cli plugin:build", - "start": "backstage-cli plugin:serve", - "lint": "backstage-cli lint", - "test": "backstage-cli test", + "build": "backstage-cli script build", + "start": "backstage-cli script start", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/catalog-model": "^0.9.10", diff --git a/plugins/tech-radar/package.json b/plugins/tech-radar/package.json index 7ac2531d6d..8e7dfc2b13 100644 --- a/plugins/tech-radar/package.json +++ b/plugins/tech-radar/package.json @@ -24,14 +24,14 @@ "backstage" ], "scripts": { - "build": "backstage-cli plugin:build", - "lint": "backstage-cli lint", - "test": "backstage-cli test", + "build": "backstage-cli script build", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean", - "start": "backstage-cli plugin:serve" + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean", + "start": "backstage-cli script start" }, "dependencies": { "@backstage/core-components": "^0.8.8", diff --git a/plugins/techdocs-backend/package.json b/plugins/techdocs-backend/package.json index 47479a44a0..981bc4d93d 100644 --- a/plugins/techdocs-backend/package.json +++ b/plugins/techdocs-backend/package.json @@ -25,13 +25,13 @@ "techdocs" ], "scripts": { - "start": "backstage-cli backend:dev", - "build": "backstage-cli backend:build", - "lint": "backstage-cli lint", - "test": "backstage-cli test", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "start": "backstage-cli script start", + "build": "backstage-cli script build", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/backend-common": "^0.10.7", diff --git a/plugins/techdocs/package.json b/plugins/techdocs/package.json index ac5cdbdde1..917cff9c39 100644 --- a/plugins/techdocs/package.json +++ b/plugins/techdocs/package.json @@ -25,14 +25,14 @@ "techdocs" ], "scripts": { - "build": "backstage-cli plugin:build", - "start": "backstage-cli plugin:serve", - "lint": "backstage-cli lint", - "test": "backstage-cli test", + "build": "backstage-cli script build", + "start": "backstage-cli script start", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/catalog-model": "^0.9.10", diff --git a/plugins/todo-backend/package.json b/plugins/todo-backend/package.json index 1239aa6cc3..7572522090 100644 --- a/plugins/todo-backend/package.json +++ b/plugins/todo-backend/package.json @@ -20,12 +20,13 @@ "directory": "plugins/todo-backend" }, "scripts": { - "build": "backstage-cli backend:build", - "lint": "backstage-cli lint", - "test": "backstage-cli test", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "build": "backstage-cli script build", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean", + "start": "backstage-cli script start" }, "dependencies": { "@backstage/backend-common": "^0.10.7", diff --git a/plugins/todo/package.json b/plugins/todo/package.json index 3825f5cbfc..ad17d1ca51 100644 --- a/plugins/todo/package.json +++ b/plugins/todo/package.json @@ -20,14 +20,14 @@ "directory": "plugins/todo" }, "scripts": { - "build": "backstage-cli plugin:build", - "start": "backstage-cli plugin:serve", - "lint": "backstage-cli lint", - "test": "backstage-cli test", + "build": "backstage-cli script build", + "start": "backstage-cli script start", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/catalog-model": "^0.9.10", diff --git a/plugins/user-settings/package.json b/plugins/user-settings/package.json index 1109fe7125..a5521cd8e9 100644 --- a/plugins/user-settings/package.json +++ b/plugins/user-settings/package.json @@ -24,14 +24,14 @@ "backstage" ], "scripts": { - "build": "backstage-cli plugin:build", - "start": "backstage-cli plugin:serve", - "lint": "backstage-cli lint", - "test": "backstage-cli test", + "build": "backstage-cli script build", + "start": "backstage-cli script start", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/core-components": "^0.8.8", diff --git a/plugins/xcmetrics/package.json b/plugins/xcmetrics/package.json index e8e67e02bf..a547c752c3 100644 --- a/plugins/xcmetrics/package.json +++ b/plugins/xcmetrics/package.json @@ -14,14 +14,14 @@ "role": "frontend-plugin" }, "scripts": { - "build": "backstage-cli plugin:build", - "start": "backstage-cli plugin:serve", - "lint": "backstage-cli lint", - "test": "backstage-cli test", + "build": "backstage-cli script build", + "start": "backstage-cli script start", + "lint": "backstage-cli script lint", + "test": "backstage-cli script test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "prepack": "backstage-cli script prepack", + "postpack": "backstage-cli script postpack", + "clean": "backstage-cli script clean" }, "dependencies": { "@backstage/core-components": "^0.8.8", From 6a52a93417a2df9d066d4bc1c901c037ec6e6176 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Mon, 14 Feb 2022 21:47:57 +0100 Subject: [PATCH 083/383] cli: rename package-role migration command to package-roles Signed-off-by: Patrik Oldsberg --- packages/cli/src/commands/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/cli/src/commands/index.ts b/packages/cli/src/commands/index.ts index 006975e77e..f87ef1e8bd 100644 --- a/packages/cli/src/commands/index.ts +++ b/packages/cli/src/commands/index.ts @@ -136,7 +136,7 @@ export function registerMigrateCommand(program: CommanderStatic) { .description('Migration utilities [EXPERIMENTAL]'); command - .command('package-role') + .command('package-roles') .description(`Add package role field to packages that don't have it`) .action(lazy(() => import('./migrate/packageRole').then(m => m.default))); From 7410e122682602514221509c0844e665dfb4d101 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Mon, 14 Feb 2022 21:48:13 +0100 Subject: [PATCH 084/383] changesets: added changeset for CLI package role tweaks and test command change Signed-off-by: Patrik Oldsberg --- .changeset/polite-bulldogs-repeat.md | 11 +++++++++++ .changeset/tender-meals-move.md | 5 +++++ 2 files changed, 16 insertions(+) create mode 100644 .changeset/polite-bulldogs-repeat.md create mode 100644 .changeset/tender-meals-move.md diff --git a/.changeset/polite-bulldogs-repeat.md b/.changeset/polite-bulldogs-repeat.md new file mode 100644 index 0000000000..0b22398a55 --- /dev/null +++ b/.changeset/polite-bulldogs-repeat.md @@ -0,0 +1,11 @@ +--- +'@backstage/cli': patch +--- + +Several changes were made to the new experimental package roles system. Unless you have been experimenting with using this new system, these changes have no affect on your project. + +Renamed the `backstage-cli migrate package-role` command to `backstage-cli migrate package-roles`. + +Updated the package role definitions by renaming `plugin-frontend` to `frontend-plugin`, as well as the same reshuffle to `frontend-plugin-module`, `backend-plugin`, and `backend-plugin-module`. + +The `backstage-cli migrate package-scripts` received several tweaks to make it more accurate. It now tries to maintain existing script arguments, like `--config` parameters for `build` and `start` scripts. diff --git a/.changeset/tender-meals-move.md b/.changeset/tender-meals-move.md new file mode 100644 index 0000000000..03721b37b1 --- /dev/null +++ b/.changeset/tender-meals-move.md @@ -0,0 +1,5 @@ +--- +'@backstage/cli': patch +--- + +The `test` command now automatically adds `--passWithNoTests` to the Jest invocation. To revert this behavior, pass `--passWithNoTests=false` or `--no-passWithNoTests`. From c553646511f92587c509143ce1036f58d8162d1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Wamej?= Date: Tue, 15 Feb 2022 07:07:42 +0100 Subject: [PATCH 085/383] keep format consistent Co-authored-by: Andrew Basson Signed-off-by: Pawel Wamej --- docs/getting-started/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/getting-started/index.md b/docs/getting-started/index.md index 7f1d7d6ef5..69ad4f0160 100644 --- a/docs/getting-started/index.md +++ b/docs/getting-started/index.md @@ -25,7 +25,7 @@ guide to do a repository-based installation. [Windows Subsystem for Linux](https://docs.microsoft.com/en-us/windows/wsl/) - An account with elevated rights to install the dependencies - `curl` or `wget` installed -- [Node.js Active LTS Release](https://nodejs.org/en/about/releases/) installed using one of these +Node.js [Active LTS Release](https://nodejs.org/en/about/releases/) installed using one of these methods: - Using `nvm` (recommended) - [Installing nvm](https://github.com/nvm-sh/nvm#install--update-script) From 7f21538c9eed2eee13577bc338b64fb40bd31dfb Mon Sep 17 00:00:00 2001 From: Johan Haals Date: Tue, 15 Feb 2022 10:22:28 +0100 Subject: [PATCH 086/383] catalog-model: deprecate JSONSchema Signed-off-by: Johan Haals --- .changeset/sharp-rice-do.md | 5 +++++ packages/catalog-model/api-report.md | 2 +- packages/catalog-model/src/types.ts | 1 + 3 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 .changeset/sharp-rice-do.md diff --git a/.changeset/sharp-rice-do.md b/.changeset/sharp-rice-do.md new file mode 100644 index 0000000000..c1a6c0846c --- /dev/null +++ b/.changeset/sharp-rice-do.md @@ -0,0 +1,5 @@ +--- +'@backstage/catalog-model': patch +--- + +Deprecates `JSONSchema` export type. diff --git a/packages/catalog-model/api-report.md b/packages/catalog-model/api-report.md index 5124945933..b1ca96d750 100644 --- a/packages/catalog-model/api-report.md +++ b/packages/catalog-model/api-report.md @@ -289,7 +289,7 @@ export { GroupEntityV1alpha1 }; // @public export const groupEntityV1alpha1Validator: KindValidator; -// @public +// @public @deprecated export type JSONSchema = JSONSchema7 & { [key in string]?: JsonValue; }; diff --git a/packages/catalog-model/src/types.ts b/packages/catalog-model/src/types.ts index 1a0fab267c..0526f8807e 100644 --- a/packages/catalog-model/src/types.ts +++ b/packages/catalog-model/src/types.ts @@ -21,6 +21,7 @@ import { JSONSchema7 } from 'json-schema'; * JSONSchema extendable by arbitrary JSON attributes * * @public + * @deprecated use JSONSchema7 from the json-schema package instead. */ export type JSONSchema = JSONSchema7 & { [key in string]?: JsonValue }; From 651b919dbbe04c52b74fa0ad49e2a9bcc400622b Mon Sep 17 00:00:00 2001 From: Andrew Thauer Date: Tue, 15 Feb 2022 06:57:03 -0500 Subject: [PATCH 087/383] feat: add accordian home page toolkit support Signed-off-by: Andrew Thauer Co-authored-by: Emma Indal --- .changeset/long-dragons-kneel.md | 11 ++++ plugins/home/api-report.md | 2 + .../componentRenderers/ComponentAccordion.tsx | 13 +++-- .../Toolkit/Content.test.tsx | 25 ++++++--- .../homePageComponents/Toolkit/Content.tsx | 11 ++-- .../homePageComponents/Toolkit/Context.tsx | 52 +++++++++++++++++++ .../Toolkit/Toolkit.stories.tsx | 46 +++++++++++++++- .../src/homePageComponents/Toolkit/index.ts | 1 + 8 files changed, 143 insertions(+), 18 deletions(-) create mode 100644 .changeset/long-dragons-kneel.md create mode 100644 plugins/home/src/homePageComponents/Toolkit/Context.tsx diff --git a/.changeset/long-dragons-kneel.md b/.changeset/long-dragons-kneel.md new file mode 100644 index 0000000000..9380d95b55 --- /dev/null +++ b/.changeset/long-dragons-kneel.md @@ -0,0 +1,11 @@ +--- +'@backstage/plugin-home': patch +--- + +Add Renderer support for the HomePageToolkit component. + +Previously `` would +result in the error `can't access property "map", props.tools is undefined`. +This change adds a context that can pass props down to the HomePageToolkit. +Also introduced is an `expanded` prop on the `ComponentAccordion` to setting +the default expanded state. See `In Accordian` story for details. diff --git a/plugins/home/api-report.md b/plugins/home/api-report.md index 264189ee07..6fae50151c 100644 --- a/plugins/home/api-report.md +++ b/plugins/home/api-report.md @@ -24,6 +24,7 @@ export type ClockConfig = { // @public (undocumented) export const ComponentAccordion: ({ title, + expanded, Content, Actions, Settings, @@ -31,6 +32,7 @@ export const ComponentAccordion: ({ ...childProps }: { title: string; + expanded?: boolean | undefined; Content: () => JSX.Element; Actions?: (() => JSX.Element) | undefined; Settings?: (() => JSX.Element) | undefined; diff --git a/plugins/home/src/componentRenderers/ComponentAccordion.tsx b/plugins/home/src/componentRenderers/ComponentAccordion.tsx index 5cf54d7a0c..ef44f7f292 100644 --- a/plugins/home/src/componentRenderers/ComponentAccordion.tsx +++ b/plugins/home/src/componentRenderers/ComponentAccordion.tsx @@ -33,10 +33,14 @@ const useStyles = makeStyles((theme: Theme) => ({ settingsIconButton: { padding: theme.spacing(0, 1, 0, 0), }, + contentContainer: { + width: '100%', + }, })); export const ComponentAccordion = ({ title, + expanded = false, Content, Actions, Settings, @@ -44,6 +48,7 @@ export const ComponentAccordion = ({ ...childProps }: { title: string; + expanded?: boolean; Content: () => JSX.Element; Actions?: () => JSX.Element; Settings?: () => JSX.Element; @@ -51,7 +56,7 @@ export const ComponentAccordion = ({ }) => { const classes = useStyles(); const [settingsIsExpanded, setSettingsIsExpanded] = React.useState(false); - const [isExpanded, setIsExpanded] = React.useState(false); + const [isExpanded, setIsExpanded] = React.useState(expanded); const handleOpenSettings = (e: any) => { e.stopPropagation(); @@ -71,7 +76,9 @@ export const ComponentAccordion = ({ )} setIsExpanded(expanded)} + onChange={(_e: any, expandedValue: boolean) => + setIsExpanded(expandedValue) + } > }> {Settings && ( @@ -85,7 +92,7 @@ export const ComponentAccordion = ({ {title} -
+
{Actions && }
diff --git a/plugins/home/src/homePageComponents/Toolkit/Content.test.tsx b/plugins/home/src/homePageComponents/Toolkit/Content.test.tsx index 7fbaff08f9..1955019a4a 100644 --- a/plugins/home/src/homePageComponents/Toolkit/Content.test.tsx +++ b/plugins/home/src/homePageComponents/Toolkit/Content.test.tsx @@ -13,19 +13,32 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + import { renderInTestApp } from '@backstage/test-utils'; import React from 'react'; import { Content } from './Content'; +import { ContextProvider } from './Context'; describe('', () => { + const tools = [ + { label: 'tool', url: '/url', icon:
icon
}, + { label: 'tool 2', url: '/url-2', icon:
icon 2
}, + ]; + test('should render list of tools', async () => { + const { getByText } = await renderInTestApp(); + + expect(getByText('tool')).toBeInTheDocument(); + expect(getByText('tool 2')).toBeInTheDocument(); + expect(getByText('tool').closest('a')).toHaveAttribute('href', '/url'); + expect(getByText('tool 2').closest('a')).toHaveAttribute('href', '/url-2'); + }); + + test('should render list of tools using context', async () => { const { getByText } = await renderInTestApp( - icon
}, - { label: 'tool 2', url: '/url-2', icon:
icon 2
}, - ]} - />, + + + , ); expect(getByText('tool')).toBeInTheDocument(); diff --git a/plugins/home/src/homePageComponents/Toolkit/Content.tsx b/plugins/home/src/homePageComponents/Toolkit/Content.tsx index 4ee1884bd0..21affc57f1 100644 --- a/plugins/home/src/homePageComponents/Toolkit/Content.tsx +++ b/plugins/home/src/homePageComponents/Toolkit/Content.tsx @@ -22,6 +22,7 @@ import { ListItemText, } from '@material-ui/core'; import React from 'react'; +import { useToolkit, Tool } from './Context'; const useStyles = makeStyles(theme => ({ toolkit: { @@ -49,12 +50,6 @@ const useStyles = makeStyles(theme => ({ }, })); -type Tool = { - label: string; - url: string; - icon: React.ReactNode; -}; - /** * Props for Toolkit content component {@link Content}. * @@ -71,10 +66,12 @@ export type ToolkitContentProps = { */ export const Content = (props: ToolkitContentProps) => { const classes = useStyles(); + const toolkit = useToolkit(); + const tools = toolkit?.tools ?? props.tools; return ( - {props.tools.map((tool: Tool) => ( + {tools.map((tool: Tool) => ( {tool.icon} (undefined); + +export const ContextProvider = ({ + children, + tools, +}: { + children: JSX.Element; + tools: Tool[]; +}) => { + const [toolsValue, _setTools] = React.useState(tools); + + const value: ToolkitContextValue = { + tools: toolsValue, + }; + + return {children}; +}; + +export const useToolkit = () => { + const value = React.useContext(Context); + return value; +}; + +export default Context; diff --git a/plugins/home/src/homePageComponents/Toolkit/Toolkit.stories.tsx b/plugins/home/src/homePageComponents/Toolkit/Toolkit.stories.tsx index 0a8e6fffbe..cad188c5d6 100644 --- a/plugins/home/src/homePageComponents/Toolkit/Toolkit.stories.tsx +++ b/plugins/home/src/homePageComponents/Toolkit/Toolkit.stories.tsx @@ -14,11 +14,13 @@ * limitations under the License. */ -import { TemplateBackstageLogoIcon } from '../../templates'; -import { HomePageToolkit } from '../../plugin'; +import { InfoCard } from '@backstage/core-components'; import { wrapInTestApp } from '@backstage/test-utils'; import { Grid } from '@material-ui/core'; import React, { ComponentType } from 'react'; +import { ComponentAccordion } from '../../componentRenderers'; +import { HomePageToolkit } from '../../plugin'; +import { TemplateBackstageLogoIcon } from '../../templates'; export default { title: 'Plugins/Home/Components/Toolkit', @@ -38,3 +40,43 @@ export const Default = () => { ); }; + +export const InAccordian = () => { + const ExpandedComponentAccordion = (props: any) => ( + + ); + + return ( + + + , + })} + Renderer={ExpandedComponentAccordion} + /> + , + })} + Renderer={ComponentAccordion} + /> + , + })} + Renderer={ComponentAccordion} + /> + + + ); +}; diff --git a/plugins/home/src/homePageComponents/Toolkit/index.ts b/plugins/home/src/homePageComponents/Toolkit/index.ts index 98e0869825..67ea1f3c84 100644 --- a/plugins/home/src/homePageComponents/Toolkit/index.ts +++ b/plugins/home/src/homePageComponents/Toolkit/index.ts @@ -16,3 +16,4 @@ export { Content } from './Content'; export type { ToolkitContentProps } from './Content'; +export { ContextProvider } from './Context'; From 12dd25c2a1d4a4cbcba04d9ebe33c01a6e89d9ef Mon Sep 17 00:00:00 2001 From: Andre Wanlin Date: Tue, 15 Feb 2022 06:19:26 -0600 Subject: [PATCH 088/383] Updated EmptyFlags code example Signed-off-by: Andre Wanlin --- .changeset/nine-wombats-talk.md | 5 +++++ .../user-settings/src/components/FeatureFlags/EmptyFlags.tsx | 4 +--- 2 files changed, 6 insertions(+), 3 deletions(-) create mode 100644 .changeset/nine-wombats-talk.md diff --git a/.changeset/nine-wombats-talk.md b/.changeset/nine-wombats-talk.md new file mode 100644 index 0000000000..769bd9b085 --- /dev/null +++ b/.changeset/nine-wombats-talk.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-user-settings': patch +--- + +Updated example code for registering feature flags in the `EmptyFlags` component diff --git a/plugins/user-settings/src/components/FeatureFlags/EmptyFlags.tsx b/plugins/user-settings/src/components/FeatureFlags/EmptyFlags.tsx index 785f398d6f..0e2b911978 100644 --- a/plugins/user-settings/src/components/FeatureFlags/EmptyFlags.tsx +++ b/plugins/user-settings/src/components/FeatureFlags/EmptyFlags.tsx @@ -22,9 +22,7 @@ const EXAMPLE = `import { createPlugin } from '@backstage/core-plugin-api'; export default createPlugin({ id: 'plugin-name', - register({ router, featureFlags }) { - featureFlags.register('enable-example-feature'); - }, + featureFlags: [{ name: 'enable-example-feature' }], }); `; From 24cda4c9b1d27b847a29b7cb258e43311eca260b Mon Sep 17 00:00:00 2001 From: Brian Fletcher Date: Tue, 15 Feb 2022 12:52:59 +0000 Subject: [PATCH 089/383] switches gcp-projects to use react-hookz Signed-off-by: Brian Fletcher --- plugins/gcp-projects/package.json | 2 +- .../components/ProjectDetailsPage/ProjectDetailsPage.tsx | 8 ++++---- .../src/components/ProjectListPage/ProjectListPage.tsx | 8 ++++---- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/plugins/gcp-projects/package.json b/plugins/gcp-projects/package.json index 992336300f..b96570a3bb 100644 --- a/plugins/gcp-projects/package.json +++ b/plugins/gcp-projects/package.json @@ -38,7 +38,7 @@ "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", "react-router-dom": "6.0.0-beta.0", - "react-use": "^17.2.4" + "react-hookz": "^1.0.12" }, "peerDependencies": { "react": "^16.13.1 || ^17.0.0" diff --git a/plugins/gcp-projects/src/components/ProjectDetailsPage/ProjectDetailsPage.tsx b/plugins/gcp-projects/src/components/ProjectDetailsPage/ProjectDetailsPage.tsx index 36247ac492..00a4355675 100644 --- a/plugins/gcp-projects/src/components/ProjectDetailsPage/ProjectDetailsPage.tsx +++ b/plugins/gcp-projects/src/components/ProjectDetailsPage/ProjectDetailsPage.tsx @@ -27,7 +27,7 @@ import { Typography, } from '@material-ui/core'; import React from 'react'; -import useAsync from 'react-use/lib/useAsync'; +import { useAsync } from 'react-hookz'; import { gcpApiRef } from '../../api'; import { @@ -61,9 +61,9 @@ const DetailsPage = () => { const classes = useStyles(); const { - loading, + status, + result: details, error, - value: details, } = useAsync( async () => api.getProject( @@ -72,7 +72,7 @@ const DetailsPage = () => { [location.search], ); - if (loading) { + if (status === 'loading') { return ; } else if (error) { return ( diff --git a/plugins/gcp-projects/src/components/ProjectListPage/ProjectListPage.tsx b/plugins/gcp-projects/src/components/ProjectListPage/ProjectListPage.tsx index d5a57432b3..f78010db90 100644 --- a/plugins/gcp-projects/src/components/ProjectListPage/ProjectListPage.tsx +++ b/plugins/gcp-projects/src/components/ProjectListPage/ProjectListPage.tsx @@ -18,7 +18,7 @@ import { Button, LinearProgress, Tooltip, Typography } from '@material-ui/core'; import React from 'react'; -import useAsync from 'react-use/lib/useAsync'; +import { useAsync } from 'reach-hookz'; import { gcpApiRef, Project } from '../../api'; import { @@ -58,9 +58,9 @@ const labels = ( const PageContents = () => { const api = useApi(gcpApiRef); - const { loading, error, value } = useAsync(() => api.listProjects()); + const { status, result, error } = useAsync(() => api.listProjects()); - if (loading) { + if (status === 'loading') { return ; } else if (error) { return ( @@ -108,7 +108,7 @@ const PageContents = () => { }, ]} data={ - value?.map((project: Project) => ({ + result?.map((project: Project) => ({ id: project.projectId, name: project.name, projectNumber: project?.projectNumber || 'Error', From e242726f78cfe7e77102a28b369baddf8fc53c91 Mon Sep 17 00:00:00 2001 From: Brian Fletcher Date: Tue, 15 Feb 2022 12:54:13 +0000 Subject: [PATCH 090/383] adds changeset Signed-off-by: Brian Fletcher --- .changeset/weak-timers-punch.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/weak-timers-punch.md diff --git a/.changeset/weak-timers-punch.md b/.changeset/weak-timers-punch.md new file mode 100644 index 0000000000..a25724cb8f --- /dev/null +++ b/.changeset/weak-timers-punch.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-gcp-projects': patch +--- + +Switches to use react-hookz in place of react-use. From ac578f2f4467cd438723692debfa2b8c19b6cba3 Mon Sep 17 00:00:00 2001 From: Brian Fletcher Date: Tue, 15 Feb 2022 12:56:20 +0000 Subject: [PATCH 091/383] fixes react typo Signed-off-by: Brian Fletcher --- .../src/components/ProjectListPage/ProjectListPage.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/gcp-projects/src/components/ProjectListPage/ProjectListPage.tsx b/plugins/gcp-projects/src/components/ProjectListPage/ProjectListPage.tsx index f78010db90..67902db4fe 100644 --- a/plugins/gcp-projects/src/components/ProjectListPage/ProjectListPage.tsx +++ b/plugins/gcp-projects/src/components/ProjectListPage/ProjectListPage.tsx @@ -18,7 +18,7 @@ import { Button, LinearProgress, Tooltip, Typography } from '@material-ui/core'; import React from 'react'; -import { useAsync } from 'reach-hookz'; +import { useAsync } from 'react-hookz'; import { gcpApiRef, Project } from '../../api'; import { From 89186d8356b8b3053ec18b7abdc83afa3ee59fcf Mon Sep 17 00:00:00 2001 From: Johan Haals Date: Tue, 15 Feb 2022 14:29:36 +0100 Subject: [PATCH 092/383] chore: update wording Signed-off-by: Johan Haals --- .changeset/sharp-rice-do.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/sharp-rice-do.md b/.changeset/sharp-rice-do.md index c1a6c0846c..0441ac338a 100644 --- a/.changeset/sharp-rice-do.md +++ b/.changeset/sharp-rice-do.md @@ -2,4 +2,4 @@ '@backstage/catalog-model': patch --- -Deprecates `JSONSchema` export type. +Deprecated `JSONSchema` export type. From eca7c3a92db406018128a6f176dfdbdfa1f4fdda Mon Sep 17 00:00:00 2001 From: Brian Fletcher Date: Tue, 15 Feb 2022 14:08:46 +0000 Subject: [PATCH 093/383] fixes imports Signed-off-by: Brian Fletcher --- plugins/gcp-projects/package.json | 2 +- .../ProjectDetailsPage/ProjectDetailsPage.tsx | 16 +++++----------- .../ProjectListPage/ProjectListPage.tsx | 7 +++++-- yarn.lock | 12 ++++++++++++ 4 files changed, 23 insertions(+), 14 deletions(-) diff --git a/plugins/gcp-projects/package.json b/plugins/gcp-projects/package.json index b96570a3bb..079b1d2d71 100644 --- a/plugins/gcp-projects/package.json +++ b/plugins/gcp-projects/package.json @@ -38,7 +38,7 @@ "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", "react-router-dom": "6.0.0-beta.0", - "react-hookz": "^1.0.12" + "@react-hookz/web": "^12.3.0" }, "peerDependencies": { "react": "^16.13.1 || ^17.0.0" diff --git a/plugins/gcp-projects/src/components/ProjectDetailsPage/ProjectDetailsPage.tsx b/plugins/gcp-projects/src/components/ProjectDetailsPage/ProjectDetailsPage.tsx index 00a4355675..b900b81695 100644 --- a/plugins/gcp-projects/src/components/ProjectDetailsPage/ProjectDetailsPage.tsx +++ b/plugins/gcp-projects/src/components/ProjectDetailsPage/ProjectDetailsPage.tsx @@ -27,7 +27,7 @@ import { Typography, } from '@material-ui/core'; import React from 'react'; -import { useAsync } from 'react-hookz'; +import { useAsync, useMountEffect } from '@react-hookz/web'; import { gcpApiRef } from '../../api'; import { @@ -60,18 +60,12 @@ const DetailsPage = () => { const api = useApi(gcpApiRef); const classes = useStyles(); - const { - status, - result: details, - error, - } = useAsync( - async () => - api.getProject( - decodeURIComponent(location.search.split('projectId=')[1]), - ), - [location.search], + const [{ status, result: details, error }, { execute }] = useAsync(async () => + api.getProject(decodeURIComponent(location.search.split('projectId=')[1])), ); + useMountEffect(execute); + if (status === 'loading') { return ; } else if (error) { diff --git a/plugins/gcp-projects/src/components/ProjectListPage/ProjectListPage.tsx b/plugins/gcp-projects/src/components/ProjectListPage/ProjectListPage.tsx index 67902db4fe..dea12f4b60 100644 --- a/plugins/gcp-projects/src/components/ProjectListPage/ProjectListPage.tsx +++ b/plugins/gcp-projects/src/components/ProjectListPage/ProjectListPage.tsx @@ -18,7 +18,7 @@ import { Button, LinearProgress, Tooltip, Typography } from '@material-ui/core'; import React from 'react'; -import { useAsync } from 'react-hookz'; +import { useAsync, useMountEffect } from '@react-hookz/web'; import { gcpApiRef, Project } from '../../api'; import { @@ -58,7 +58,10 @@ const labels = ( const PageContents = () => { const api = useApi(gcpApiRef); - const { status, result, error } = useAsync(() => api.listProjects()); + const [{ status, result, error }, { execute }] = useAsync(() => + api.listProjects(), + ); + useMountEffect(execute); if (status === 'loading') { return ; diff --git a/yarn.lock b/yarn.lock index 90a6ef9c24..d1973a686c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4362,6 +4362,18 @@ resolved "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" integrity sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA= +"@react-hookz/deep-equal@^1.0.1": + version "1.0.1" + resolved "https://registry.npmjs.org/@react-hookz/deep-equal/-/deep-equal-1.0.1.tgz#1e9aad97b964879b54a3909f36f0727befa13e1f" + integrity sha512-6k/pU2jNlgYvKOy84vpCAZ8MGVwybvAdjzrh4UicCVOCPxz0LSBws1OE6O5TO4sPHaSw+yLfNzNK8RicGFc1Kw== + +"@react-hookz/web@^12.3.0": + version "12.3.0" + resolved "https://registry.npmjs.org/@react-hookz/web/-/web-12.3.0.tgz#a9a1311a15171a57d68a3db61492f913d4fd455a" + integrity sha512-Uujp2RfX/oDEtAbdkV0W/nhiQ5ZYVH+MEq04T7/8TstyiwoIlvsRbEic6c6gQA6sQ/lw93cZ8NP8R7AYjiqDvg== + dependencies: + "@react-hookz/deep-equal" "^1.0.1" + "@rjsf/core@^3.2.1": version "3.2.1" resolved "https://registry.npmjs.org/@rjsf/core/-/core-3.2.1.tgz#8a7b24c9a6f01f0ecb093fdfc777172c12b1b009" From deaf6065dbb6cb2734e85ee2feb718d08f97415f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Tue, 15 Feb 2022 19:15:38 +0100 Subject: [PATCH 094/383] Removed `CatalogApi.geLocationByEntity` and `CatalogApi.getOriginLocationByEntity`, and replaced them with `CatalogApi.getLocationByRef`. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .changeset/mean-cups-invite.md | 15 ++++++++ .changeset/unlucky-dodos-scream.md | 14 ++++++++ packages/catalog-client/api-report.md | 16 +++------ packages/catalog-client/src/CatalogClient.ts | 36 +++---------------- packages/catalog-client/src/types/api.ts | 19 +++------- .../DefaultApiExplorerPage.test.tsx | 2 +- .../ApisCards/ConsumedApisCard.test.tsx | 2 +- .../components/ApisCards/HasApisCard.test.tsx | 2 +- .../ApisCards/ProvidedApisCard.test.tsx | 2 +- .../ConsumingComponentsCard.test.tsx | 2 +- .../ProvidingComponentsCard.test.tsx | 2 +- .../lib/catalog/CatalogIdentityClient.test.ts | 3 +- .../badges-backend/src/service/router.test.ts | 3 +- .../CatalogGraphCard.test.tsx | 3 +- .../CatalogGraphPage.test.tsx | 3 +- .../EntityRelationsGraph.test.tsx | 3 +- .../useEntityStore.test.ts | 3 +- .../src/api/CatalogImportClient.test.ts | 3 +- .../StepPrepareCreatePullRequest.test.tsx | 3 +- .../useUnregisterEntityDialogState.test.tsx | 6 ++-- .../useUnregisterEntityDialogState.ts | 2 +- .../components/AboutCard/AboutCard.test.tsx | 2 +- .../CatalogPage/DefaultCatalogPage.test.tsx | 2 +- .../DefaultExplorePage.test.tsx | 3 +- .../DomainExplorerContent.test.tsx | 3 +- .../GroupsExplorerContent.test.tsx | 3 +- .../components/FossaPage/FossaPage.test.tsx | 3 +- .../fields/EntityPicker/EntityPicker.test.tsx | 2 +- .../fields/OwnerPicker/OwnerPicker.test.tsx | 2 +- .../src/service/TodoReaderService.test.ts | 3 +- 30 files changed, 67 insertions(+), 100 deletions(-) create mode 100644 .changeset/mean-cups-invite.md create mode 100644 .changeset/unlucky-dodos-scream.md diff --git a/.changeset/mean-cups-invite.md b/.changeset/mean-cups-invite.md new file mode 100644 index 0000000000..ba82c66043 --- /dev/null +++ b/.changeset/mean-cups-invite.md @@ -0,0 +1,15 @@ +--- +'@backstage/plugin-api-docs': patch +'@backstage/plugin-auth-backend': patch +'@backstage/plugin-badges-backend': patch +'@backstage/plugin-catalog': patch +'@backstage/plugin-catalog-graph': patch +'@backstage/plugin-catalog-import': patch +'@backstage/plugin-catalog-react': patch +'@backstage/plugin-explore': patch +'@backstage/plugin-fossa': patch +'@backstage/plugin-scaffolder': patch +'@backstage/plugin-todo-backend': patch +--- + +Adapt to the new `CatalogApi.getLocationByRef` diff --git a/.changeset/unlucky-dodos-scream.md b/.changeset/unlucky-dodos-scream.md new file mode 100644 index 0000000000..c44c3c7032 --- /dev/null +++ b/.changeset/unlucky-dodos-scream.md @@ -0,0 +1,14 @@ +--- +'@backstage/catalog-client': minor +--- + +Removed `CatalogApi.geLocationByEntity` and `CatalogApi.getOriginLocationByEntity`, and replaced them with `CatalogApi.getLocationByRef`. + +If you were using one of the two old methods, you can update your code as follows: + +```diff +-const originLocation = catalogApi.getOriginLocationByEntity(entity); ++const originLocation = catalogApi.getLocationByRef(entity.metadata.annotations[ANNOTATION_ORIGIN_LOCATION]!); +-const location = catalogApi.getLocationByEntity(entity); ++const location = catalogApi.getLocationByRef(entity.metadata.annotations[ANNOTATION_LOCATION]!); +``` diff --git a/packages/catalog-client/api-report.md b/packages/catalog-client/api-report.md index 090a1dbcc4..7427bdd235 100644 --- a/packages/catalog-client/api-report.md +++ b/packages/catalog-client/api-report.md @@ -43,16 +43,12 @@ export interface CatalogApi { name: EntityName, options?: CatalogRequestOptions, ): Promise; - getLocationByEntity( - entity: Entity, - options?: CatalogRequestOptions, - ): Promise; getLocationById( id: string, options?: CatalogRequestOptions, ): Promise; - getOriginLocationByEntity( - entity: Entity, + getLocationByRef( + locationRef: string, options?: CatalogRequestOptions, ): Promise; refreshEntity( @@ -95,16 +91,12 @@ export class CatalogClient implements CatalogApi { compoundName: EntityName, options?: CatalogRequestOptions, ): Promise; - getLocationByEntity( - entity: Entity, - options?: CatalogRequestOptions, - ): Promise; getLocationById( id: string, options?: CatalogRequestOptions, ): Promise; - getOriginLocationByEntity( - entity: Entity, + getLocationByRef( + locationRef: string, options?: CatalogRequestOptions, ): Promise; refreshEntity( diff --git a/packages/catalog-client/src/CatalogClient.ts b/packages/catalog-client/src/CatalogClient.ts index bcf8750658..84d5d02232 100644 --- a/packages/catalog-client/src/CatalogClient.ts +++ b/packages/catalog-client/src/CatalogClient.ts @@ -15,8 +15,6 @@ */ import { - ANNOTATION_LOCATION, - ANNOTATION_ORIGIN_LOCATION, Entity, EntityName, parseEntityRef, @@ -246,17 +244,12 @@ export class CatalogClient implements CatalogApi { } /** - * {@inheritdoc CatalogApi.getOriginLocationByEntity} + * {@inheritdoc CatalogApi.getLocationByRef} */ - async getOriginLocationByEntity( - entity: Entity, + async getLocationByRef( + locationRef: string, options?: CatalogRequestOptions, ): Promise { - const locationCompound = - entity.metadata.annotations?.[ANNOTATION_ORIGIN_LOCATION]; - if (!locationCompound) { - return undefined; - } const all: { data: Location }[] = await this.requestRequired( 'GET', '/locations', @@ -264,28 +257,7 @@ export class CatalogClient implements CatalogApi { ); return all .map(r => r.data) - .find(l => locationCompound === stringifyLocationRef(l)); - } - - /** - * {@inheritdoc CatalogApi.getLocationByEntity} - */ - async getLocationByEntity( - entity: Entity, - options?: CatalogRequestOptions, - ): Promise { - const locationCompound = entity.metadata.annotations?.[ANNOTATION_LOCATION]; - if (!locationCompound) { - return undefined; - } - const all: { data: Location }[] = await this.requestRequired( - 'GET', - '/locations', - options, - ); - return all - .map(r => r.data) - .find(l => locationCompound === stringifyLocationRef(l)); + .find(l => locationRef === stringifyLocationRef(l)); } /** diff --git a/packages/catalog-client/src/types/api.ts b/packages/catalog-client/src/types/api.ts index bf5a7327c6..b3d4bc2397 100644 --- a/packages/catalog-client/src/types/api.ts +++ b/packages/catalog-client/src/types/api.ts @@ -262,24 +262,13 @@ export interface CatalogApi { ): Promise; /** - * Gets origin location by Entity. + * Gets a registered location by its ref. * - * @param entity - An {@link catalog-model#Entity}. + * @param locationRef - A location ref, e.g. "url:https://github.com/..." * @param options - Additional options */ - getOriginLocationByEntity( - entity: Entity, - options?: CatalogRequestOptions, - ): Promise; - - /** - * Gets Location by Entity. - * - * @param entity - An {@link catalog-model#Entity}. - * @param options - Additional options - */ - getLocationByEntity( - entity: Entity, + getLocationByRef( + locationRef: string, options?: CatalogRequestOptions, ): Promise; diff --git a/plugins/api-docs/src/components/ApiExplorerPage/DefaultApiExplorerPage.test.tsx b/plugins/api-docs/src/components/ApiExplorerPage/DefaultApiExplorerPage.test.tsx index 9e4c861e24..9b79263b5f 100644 --- a/plugins/api-docs/src/components/ApiExplorerPage/DefaultApiExplorerPage.test.tsx +++ b/plugins/api-docs/src/components/ApiExplorerPage/DefaultApiExplorerPage.test.tsx @@ -56,7 +56,7 @@ describe('DefaultApiExplorerPage', () => { }, ] as Entity[], }), - getLocationByEntity: () => + getLocationByRef: () => Promise.resolve({ id: 'id', type: 'github', target: 'url' }), getEntityByName: async entityName => { return { diff --git a/plugins/api-docs/src/components/ApisCards/ConsumedApisCard.test.tsx b/plugins/api-docs/src/components/ApisCards/ConsumedApisCard.test.tsx index 5e7b22524a..d04a36770d 100644 --- a/plugins/api-docs/src/components/ApisCards/ConsumedApisCard.test.tsx +++ b/plugins/api-docs/src/components/ApisCards/ConsumedApisCard.test.tsx @@ -36,7 +36,7 @@ describe('', () => { getEntityByName: jest.fn(), getEntities: jest.fn(), addLocation: jest.fn(), - getLocationByEntity: jest.fn(), + getLocationByRef: jest.fn(), removeEntityByUid: jest.fn(), } as any; let Wrapper: React.ComponentType; diff --git a/plugins/api-docs/src/components/ApisCards/HasApisCard.test.tsx b/plugins/api-docs/src/components/ApisCards/HasApisCard.test.tsx index 4102bebf0e..050eeb8707 100644 --- a/plugins/api-docs/src/components/ApisCards/HasApisCard.test.tsx +++ b/plugins/api-docs/src/components/ApisCards/HasApisCard.test.tsx @@ -36,7 +36,7 @@ describe('', () => { getEntityByName: jest.fn(), getEntities: jest.fn(), addLocation: jest.fn(), - getLocationByEntity: jest.fn(), + getLocationByRef: jest.fn(), removeEntityByUid: jest.fn(), } as any; let Wrapper: React.ComponentType; diff --git a/plugins/api-docs/src/components/ApisCards/ProvidedApisCard.test.tsx b/plugins/api-docs/src/components/ApisCards/ProvidedApisCard.test.tsx index b29075aee9..34043c519b 100644 --- a/plugins/api-docs/src/components/ApisCards/ProvidedApisCard.test.tsx +++ b/plugins/api-docs/src/components/ApisCards/ProvidedApisCard.test.tsx @@ -36,7 +36,7 @@ describe('', () => { getEntityByName: jest.fn(), getEntities: jest.fn(), addLocation: jest.fn(), - getLocationByEntity: jest.fn(), + getLocationByRef: jest.fn(), removeEntityByUid: jest.fn(), } as any; let Wrapper: React.ComponentType; diff --git a/plugins/api-docs/src/components/ComponentsCards/ConsumingComponentsCard.test.tsx b/plugins/api-docs/src/components/ComponentsCards/ConsumingComponentsCard.test.tsx index 06022eec69..c81b4750bc 100644 --- a/plugins/api-docs/src/components/ComponentsCards/ConsumingComponentsCard.test.tsx +++ b/plugins/api-docs/src/components/ComponentsCards/ConsumingComponentsCard.test.tsx @@ -32,7 +32,7 @@ describe('', () => { getEntityByName: jest.fn(), getEntities: jest.fn(), addLocation: jest.fn(), - getLocationByEntity: jest.fn(), + getLocationByRef: jest.fn(), removeEntityByUid: jest.fn(), } as any; let Wrapper: React.ComponentType; diff --git a/plugins/api-docs/src/components/ComponentsCards/ProvidingComponentsCard.test.tsx b/plugins/api-docs/src/components/ComponentsCards/ProvidingComponentsCard.test.tsx index 275338d2f9..84e45dc058 100644 --- a/plugins/api-docs/src/components/ComponentsCards/ProvidingComponentsCard.test.tsx +++ b/plugins/api-docs/src/components/ComponentsCards/ProvidingComponentsCard.test.tsx @@ -32,7 +32,7 @@ describe('', () => { getEntityByName: jest.fn(), getEntities: jest.fn(), addLocation: jest.fn(), - getLocationByEntity: jest.fn(), + getLocationByRef: jest.fn(), removeEntityByUid: jest.fn(), } as any; let Wrapper: React.ComponentType; diff --git a/plugins/auth-backend/src/lib/catalog/CatalogIdentityClient.test.ts b/plugins/auth-backend/src/lib/catalog/CatalogIdentityClient.test.ts index 897233294f..83ebb5de73 100644 --- a/plugins/auth-backend/src/lib/catalog/CatalogIdentityClient.test.ts +++ b/plugins/auth-backend/src/lib/catalog/CatalogIdentityClient.test.ts @@ -30,8 +30,7 @@ describe('CatalogIdentityClient', () => { getEntities: jest.fn(), addLocation: jest.fn(), removeLocationById: jest.fn(), - getOriginLocationByEntity: jest.fn(), - getLocationByEntity: jest.fn(), + getLocationByRef: jest.fn(), removeEntityByUid: jest.fn(), refreshEntity: jest.fn(), getEntityAncestors: jest.fn(), diff --git a/plugins/badges-backend/src/service/router.test.ts b/plugins/badges-backend/src/service/router.test.ts index 286a2335f1..4b0ae2a44a 100644 --- a/plugins/badges-backend/src/service/router.test.ts +++ b/plugins/badges-backend/src/service/router.test.ts @@ -61,8 +61,7 @@ describe('createRouter', () => { addLocation: jest.fn(), getEntities: jest.fn(), getEntityByName: jest.fn(), - getOriginLocationByEntity: jest.fn(), - getLocationByEntity: jest.fn(), + getLocationByRef: jest.fn(), getLocationById: jest.fn(), removeLocationById: jest.fn(), removeEntityByUid: jest.fn(), diff --git a/plugins/catalog-graph/src/components/CatalogGraphCard/CatalogGraphCard.test.tsx b/plugins/catalog-graph/src/components/CatalogGraphCard/CatalogGraphCard.test.tsx index 7209a516a5..0e2fa723dc 100644 --- a/plugins/catalog-graph/src/components/CatalogGraphCard/CatalogGraphCard.test.tsx +++ b/plugins/catalog-graph/src/components/CatalogGraphCard/CatalogGraphCard.test.tsx @@ -60,8 +60,7 @@ describe('', () => { getEntityByName: jest.fn(async _ => ({ ...entity, relations: [] })), removeEntityByUid: jest.fn(), getLocationById: jest.fn(), - getOriginLocationByEntity: jest.fn(), - getLocationByEntity: jest.fn(), + getLocationByRef: jest.fn(), addLocation: jest.fn(), removeLocationById: jest.fn(), refreshEntity: jest.fn(), diff --git a/plugins/catalog-graph/src/components/CatalogGraphPage/CatalogGraphPage.test.tsx b/plugins/catalog-graph/src/components/CatalogGraphPage/CatalogGraphPage.test.tsx index 4c7a64a7ce..c509abd712 100644 --- a/plugins/catalog-graph/src/components/CatalogGraphPage/CatalogGraphPage.test.tsx +++ b/plugins/catalog-graph/src/components/CatalogGraphPage/CatalogGraphPage.test.tsx @@ -89,8 +89,7 @@ describe('', () => { getEntityByName: jest.fn(async n => (n.name === 'e' ? entityE : entityC)), removeEntityByUid: jest.fn(), getLocationById: jest.fn(), - getOriginLocationByEntity: jest.fn(), - getLocationByEntity: jest.fn(), + getLocationByRef: jest.fn(), addLocation: jest.fn(), removeLocationById: jest.fn(), refreshEntity: jest.fn(), diff --git a/plugins/catalog-graph/src/components/EntityRelationsGraph/EntityRelationsGraph.test.tsx b/plugins/catalog-graph/src/components/EntityRelationsGraph/EntityRelationsGraph.test.tsx index be0c4dc5e5..715f30e8c9 100644 --- a/plugins/catalog-graph/src/components/EntityRelationsGraph/EntityRelationsGraph.test.tsx +++ b/plugins/catalog-graph/src/components/EntityRelationsGraph/EntityRelationsGraph.test.tsx @@ -150,8 +150,7 @@ describe('', () => { getEntityByName: jest.fn(async n => entities[stringifyEntityRef(n)]), removeEntityByUid: jest.fn(), getLocationById: jest.fn(), - getOriginLocationByEntity: jest.fn(), - getLocationByEntity: jest.fn(), + getLocationByRef: jest.fn(), addLocation: jest.fn(), removeLocationById: jest.fn(), refreshEntity: jest.fn(), diff --git a/plugins/catalog-graph/src/components/EntityRelationsGraph/useEntityStore.test.ts b/plugins/catalog-graph/src/components/EntityRelationsGraph/useEntityStore.test.ts index a60750bab5..214f1a8fb9 100644 --- a/plugins/catalog-graph/src/components/EntityRelationsGraph/useEntityStore.test.ts +++ b/plugins/catalog-graph/src/components/EntityRelationsGraph/useEntityStore.test.ts @@ -32,8 +32,7 @@ describe('useEntityStore', () => { getEntityByName: jest.fn(), removeEntityByUid: jest.fn(), getLocationById: jest.fn(), - getOriginLocationByEntity: jest.fn(), - getLocationByEntity: jest.fn(), + getLocationByRef: jest.fn(), addLocation: jest.fn(), removeLocationById: jest.fn(), refreshEntity: jest.fn(), diff --git a/plugins/catalog-import/src/api/CatalogImportClient.test.ts b/plugins/catalog-import/src/api/CatalogImportClient.test.ts index fa63825af1..d2c7771804 100644 --- a/plugins/catalog-import/src/api/CatalogImportClient.test.ts +++ b/plugins/catalog-import/src/api/CatalogImportClient.test.ts @@ -94,8 +94,7 @@ describe('CatalogImportClient', () => { addLocation: jest.fn(), removeLocationById: jest.fn(), getEntityByName: jest.fn(), - getOriginLocationByEntity: jest.fn(), - getLocationByEntity: jest.fn(), + getLocationByRef: jest.fn(), getLocationById: jest.fn(), removeEntityByUid: jest.fn(), refreshEntity: jest.fn(), diff --git a/plugins/catalog-import/src/components/StepPrepareCreatePullRequest/StepPrepareCreatePullRequest.test.tsx b/plugins/catalog-import/src/components/StepPrepareCreatePullRequest/StepPrepareCreatePullRequest.test.tsx index 8d26657bb3..40c1152fe8 100644 --- a/plugins/catalog-import/src/components/StepPrepareCreatePullRequest/StepPrepareCreatePullRequest.test.tsx +++ b/plugins/catalog-import/src/components/StepPrepareCreatePullRequest/StepPrepareCreatePullRequest.test.tsx @@ -39,8 +39,7 @@ describe('', () => { getEntities: jest.fn(), addLocation: jest.fn(), getEntityByName: jest.fn(), - getOriginLocationByEntity: jest.fn(), - getLocationByEntity: jest.fn(), + getLocationByRef: jest.fn(), getLocationById: jest.fn(), removeLocationById: jest.fn(), removeEntityByUid: jest.fn(), diff --git a/plugins/catalog-react/src/components/UnregisterEntityDialog/useUnregisterEntityDialogState.test.tsx b/plugins/catalog-react/src/components/UnregisterEntityDialog/useUnregisterEntityDialogState.test.tsx index 44fc3886ea..25af7564d1 100644 --- a/plugins/catalog-react/src/components/UnregisterEntityDialog/useUnregisterEntityDialogState.test.tsx +++ b/plugins/catalog-react/src/components/UnregisterEntityDialog/useUnregisterEntityDialogState.test.tsx @@ -39,7 +39,7 @@ function defer(): { promise: Promise; resolve: (value: T) => void } { describe('useUnregisterEntityDialogState', () => { const catalogApiMock = { - getOriginLocationByEntity: jest.fn(), + getLocationByRef: jest.fn(), getEntities: jest.fn(), removeLocationById: jest.fn(), removeEntityByUid: jest.fn(), @@ -65,9 +65,7 @@ describe('useUnregisterEntityDialogState', () => { resolveLocation = deferredLocation.resolve; resolveColocatedEntities = deferredColocatedEntities.resolve; - catalogApiMock.getOriginLocationByEntity.mockReturnValue( - deferredLocation.promise, - ); + catalogApiMock.getLocationByRef.mockReturnValue(deferredLocation.promise); catalogApiMock.getEntities.mockReturnValue( deferredColocatedEntities.promise.then(items => ({ items })), ); diff --git a/plugins/catalog-react/src/components/UnregisterEntityDialog/useUnregisterEntityDialogState.ts b/plugins/catalog-react/src/components/UnregisterEntityDialog/useUnregisterEntityDialogState.ts index c637490268..6420ebd5ae 100644 --- a/plugins/catalog-react/src/components/UnregisterEntityDialog/useUnregisterEntityDialogState.ts +++ b/plugins/catalog-react/src/components/UnregisterEntityDialog/useUnregisterEntityDialogState.ts @@ -67,7 +67,7 @@ export function useUnregisterEntityDialogState( // Load the prerequisite data: what entities that are colocated with us, and // what location that spawned us const prerequisites = useAsync(async () => { - const locationPromise = catalogApi.getOriginLocationByEntity(entity); + const locationPromise = catalogApi.getLocationByRef(locationRef!); let colocatedEntitiesPromise: Promise; if (!locationRef) { diff --git a/plugins/catalog/src/components/AboutCard/AboutCard.test.tsx b/plugins/catalog/src/components/AboutCard/AboutCard.test.tsx index 4ef97b3d46..74c6490534 100644 --- a/plugins/catalog/src/components/AboutCard/AboutCard.test.tsx +++ b/plugins/catalog/src/components/AboutCard/AboutCard.test.tsx @@ -38,7 +38,7 @@ describe('', () => { getEntityByName: jest.fn(), getEntities: jest.fn(), addLocation: jest.fn(), - getLocationByEntity: jest.fn(), + getLocationByRef: jest.fn(), removeEntityByUid: jest.fn(), refreshEntity: jest.fn(), } as any; diff --git a/plugins/catalog/src/components/CatalogPage/DefaultCatalogPage.test.tsx b/plugins/catalog/src/components/CatalogPage/DefaultCatalogPage.test.tsx index 20acff3c50..c6a108ffc1 100644 --- a/plugins/catalog/src/components/CatalogPage/DefaultCatalogPage.test.tsx +++ b/plugins/catalog/src/components/CatalogPage/DefaultCatalogPage.test.tsx @@ -100,7 +100,7 @@ describe('DefaultCatalogPage', () => { }, ] as Entity[], }), - getLocationByEntity: () => + getLocationByRef: () => Promise.resolve({ id: 'id', type: 'github', target: 'url' }), getEntityByName: async entityName => { return { diff --git a/plugins/explore/src/components/DefaultExplorePage/DefaultExplorePage.test.tsx b/plugins/explore/src/components/DefaultExplorePage/DefaultExplorePage.test.tsx index d10c262357..db59e28f40 100644 --- a/plugins/explore/src/components/DefaultExplorePage/DefaultExplorePage.test.tsx +++ b/plugins/explore/src/components/DefaultExplorePage/DefaultExplorePage.test.tsx @@ -24,8 +24,7 @@ describe('', () => { const catalogApi: jest.Mocked = { addLocation: jest.fn(_a => new Promise(() => {})), getEntities: jest.fn(), - getOriginLocationByEntity: jest.fn(), - getLocationByEntity: jest.fn(), + getLocationByRef: jest.fn(), getLocationById: jest.fn(), removeLocationById: jest.fn(), removeEntityByUid: jest.fn(), diff --git a/plugins/explore/src/components/DomainExplorerContent/DomainExplorerContent.test.tsx b/plugins/explore/src/components/DomainExplorerContent/DomainExplorerContent.test.tsx index e36bd4ddb9..c431bd0c6c 100644 --- a/plugins/explore/src/components/DomainExplorerContent/DomainExplorerContent.test.tsx +++ b/plugins/explore/src/components/DomainExplorerContent/DomainExplorerContent.test.tsx @@ -25,8 +25,7 @@ describe('', () => { const catalogApi: jest.Mocked = { addLocation: jest.fn(_a => new Promise(() => {})), getEntities: jest.fn(), - getOriginLocationByEntity: jest.fn(), - getLocationByEntity: jest.fn(), + getLocationByRef: jest.fn(), getLocationById: jest.fn(), removeLocationById: jest.fn(), removeEntityByUid: jest.fn(), diff --git a/plugins/explore/src/components/GroupsExplorerContent/GroupsExplorerContent.test.tsx b/plugins/explore/src/components/GroupsExplorerContent/GroupsExplorerContent.test.tsx index 5d3f7c358b..23ae2a3e6d 100644 --- a/plugins/explore/src/components/GroupsExplorerContent/GroupsExplorerContent.test.tsx +++ b/plugins/explore/src/components/GroupsExplorerContent/GroupsExplorerContent.test.tsx @@ -25,8 +25,7 @@ describe('', () => { const catalogApi: jest.Mocked = { addLocation: jest.fn(_a => new Promise(() => {})), getEntities: jest.fn(), - getOriginLocationByEntity: jest.fn(), - getLocationByEntity: jest.fn(), + getLocationByRef: jest.fn(), getLocationById: jest.fn(), removeLocationById: jest.fn(), removeEntityByUid: jest.fn(), diff --git a/plugins/fossa/src/components/FossaPage/FossaPage.test.tsx b/plugins/fossa/src/components/FossaPage/FossaPage.test.tsx index 421ff4431f..df376895bc 100644 --- a/plugins/fossa/src/components/FossaPage/FossaPage.test.tsx +++ b/plugins/fossa/src/components/FossaPage/FossaPage.test.tsx @@ -30,9 +30,8 @@ describe('', () => { addLocation: jest.fn(), getEntities: jest.fn(), getEntityByName: jest.fn(), - getLocationByEntity: jest.fn(), + getLocationByRef: jest.fn(), getLocationById: jest.fn(), - getOriginLocationByEntity: jest.fn(), removeEntityByUid: jest.fn(), removeLocationById: jest.fn(), refreshEntity: jest.fn(), diff --git a/plugins/scaffolder/src/components/fields/EntityPicker/EntityPicker.test.tsx b/plugins/scaffolder/src/components/fields/EntityPicker/EntityPicker.test.tsx index 3dc609a63b..82f12ac0a3 100644 --- a/plugins/scaffolder/src/components/fields/EntityPicker/EntityPicker.test.tsx +++ b/plugins/scaffolder/src/components/fields/EntityPicker/EntityPicker.test.tsx @@ -46,7 +46,7 @@ describe('', () => { getEntityByName: jest.fn(), getEntities: jest.fn(async () => ({ items: entities })), addLocation: jest.fn(), - getLocationByEntity: jest.fn(), + getLocationByRef: jest.fn(), removeEntityByUid: jest.fn(), } as any; let Wrapper: React.ComponentType; diff --git a/plugins/scaffolder/src/components/fields/OwnerPicker/OwnerPicker.test.tsx b/plugins/scaffolder/src/components/fields/OwnerPicker/OwnerPicker.test.tsx index 31992fbc8a..b78d3add9e 100644 --- a/plugins/scaffolder/src/components/fields/OwnerPicker/OwnerPicker.test.tsx +++ b/plugins/scaffolder/src/components/fields/OwnerPicker/OwnerPicker.test.tsx @@ -43,7 +43,7 @@ describe('', () => { getEntityByName: jest.fn(), getEntities: jest.fn(async () => ({ items: entities })), addLocation: jest.fn(), - getLocationByEntity: jest.fn(), + getLocationByRef: jest.fn(), removeEntityByUid: jest.fn(), } as any; let Wrapper: React.ComponentType; diff --git a/plugins/todo-backend/src/service/TodoReaderService.test.ts b/plugins/todo-backend/src/service/TodoReaderService.test.ts index ce1c61d8a5..fbb1341e73 100644 --- a/plugins/todo-backend/src/service/TodoReaderService.test.ts +++ b/plugins/todo-backend/src/service/TodoReaderService.test.ts @@ -45,8 +45,7 @@ function mockCatalogClient(entity?: Entity): jest.Mocked { addLocation: jest.fn(), getEntities: jest.fn(), getEntityByName: jest.fn(), - getOriginLocationByEntity: jest.fn(), - getLocationByEntity: jest.fn(), + getLocationByRef: jest.fn(), getLocationById: jest.fn(), removeLocationById: jest.fn(), removeEntityByUid: jest.fn(), From d9aa726fe1fdb734ed6303ea637492f22c760834 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 15 Feb 2022 11:32:00 +0100 Subject: [PATCH 095/383] cli: skip diff of new package scripts Signed-off-by: Patrik Oldsberg --- packages/cli/src/lib/diff/handlers.ts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/packages/cli/src/lib/diff/handlers.ts b/packages/cli/src/lib/diff/handlers.ts index 5bd90e3d22..9a313c13ae 100644 --- a/packages/cli/src/lib/diff/handlers.ts +++ b/packages/cli/src/lib/diff/handlers.ts @@ -173,6 +173,14 @@ class PackageJsonHandler { return; } + // Skip diffing package scripts that have been migrated to the new commands + const hasNewScript = Object.values(targetScripts).some(script => + String(script).includes('backstage-cli script '), + ); + if (hasNewScript) { + return; + } + for (const key of Object.keys(pkgScripts)) { await this.syncField(key, pkgScripts, targetScripts, 'scripts'); } From 51ce07f0fe5d9f457188e010a3e04a615ae4436b Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Mon, 14 Feb 2022 22:51:47 +0100 Subject: [PATCH 096/383] cli: fix incorrect target package for app and backend build Signed-off-by: Patrik Oldsberg --- .changeset/polite-bulldogs-repeat.md | 2 ++ packages/cli/src/commands/build/buildBackend.ts | 9 +++++---- packages/cli/src/commands/build/command.ts | 4 ++-- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/.changeset/polite-bulldogs-repeat.md b/.changeset/polite-bulldogs-repeat.md index 0b22398a55..32264b80c1 100644 --- a/.changeset/polite-bulldogs-repeat.md +++ b/.changeset/polite-bulldogs-repeat.md @@ -9,3 +9,5 @@ Renamed the `backstage-cli migrate package-role` command to `backstage-cli migra Updated the package role definitions by renaming `plugin-frontend` to `frontend-plugin`, as well as the same reshuffle to `frontend-plugin-module`, `backend-plugin`, and `backend-plugin-module`. The `backstage-cli migrate package-scripts` received several tweaks to make it more accurate. It now tries to maintain existing script arguments, like `--config` parameters for `build` and `start` scripts. + +The `backstage-cli script build` command set an incorrect target directory for `app` and `backend` packages, which has been fixed. diff --git a/packages/cli/src/commands/build/buildBackend.ts b/packages/cli/src/commands/build/buildBackend.ts index e32b7956db..0768728f00 100644 --- a/packages/cli/src/commands/build/buildBackend.ts +++ b/packages/cli/src/commands/build/buildBackend.ts @@ -49,19 +49,20 @@ export async function buildBackend(options: BuildBackendOptions) { // We built the target backend package using the regular build process, but the result of // that has now been packed into the dist workspace, so clean up the dist dir. - await fs.remove(targetDir); - await fs.mkdir(targetDir); + const distDir = resolvePath(targetDir, 'dist'); + await fs.remove(distDir); + await fs.mkdir(distDir); // Move out skeleton.tar.gz before we create the main bundle, no point having that included up twice. await fs.move( resolvePath(tmpDir, SKELETON_FILE), - resolvePath(targetDir, SKELETON_FILE), + resolvePath(distDir, SKELETON_FILE), ); // Create main bundle.tar.gz, with some tweaks to make it more likely hit Docker build cache. await tar.create( { - file: resolvePath(targetDir, BUNDLE_FILE), + file: resolvePath(distDir, BUNDLE_FILE), cwd: tmpDir, portable: true, noMtime: true, diff --git a/packages/cli/src/commands/build/command.ts b/packages/cli/src/commands/build/command.ts index 1189883b12..04b9893c31 100644 --- a/packages/cli/src/commands/build/command.ts +++ b/packages/cli/src/commands/build/command.ts @@ -26,14 +26,14 @@ export async function command(cmd: Command): Promise { if (role === 'app') { return buildApp({ - targetDir: paths.resolveTarget('dist'), + targetDir: paths.targetDir, configPaths: cmd.config as string[], writeStats: Boolean(cmd.stats), }); } if (role === 'backend') { return buildBackend({ - targetDir: paths.resolveTarget('dist'), + targetDir: paths.targetDir, skipBuildDependencies: Boolean(cmd.skipBuildDependencies), }); } From 9892d74326c069162ba0bbb7348c944b166b3104 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 15 Feb 2022 21:27:12 +0100 Subject: [PATCH 097/383] cli: renamed `script` commands to `package` Signed-off-by: Patrik Oldsberg --- .changeset/polite-bulldogs-repeat.md | 4 ++- packages/app-defaults/package.json | 14 ++++----- packages/app/package.json | 10 +++---- packages/backend-common/package.json | 14 ++++----- packages/backend-tasks/package.json | 14 ++++----- packages/backend-test-utils/package.json | 14 ++++----- packages/backend/package.json | 10 +++---- packages/catalog-client/package.json | 12 ++++---- packages/catalog-model/package.json | 12 ++++---- packages/cli-common/package.json | 14 ++++----- packages/cli/package.json | 8 ++--- packages/cli/src/commands/index.ts | 30 +++++++++---------- .../src/commands/migrate/packageScripts.ts | 14 ++++----- packages/cli/src/commands/repo/build.ts | 6 ++-- packages/cli/src/lib/diff/handlers.ts | 2 +- .../src/lib/packager/createDistWorkspace.ts | 4 +-- packages/codemods/package.json | 8 ++--- packages/config-loader/package.json | 14 ++++----- packages/config/package.json | 12 ++++---- packages/core-app-api/package.json | 14 ++++----- packages/core-components/package.json | 14 ++++----- packages/core-plugin-api/package.json | 14 ++++----- packages/create-app/package.json | 8 ++--- packages/dev-utils/package.json | 14 ++++----- packages/e2e-test/package.json | 8 ++--- packages/errors/package.json | 12 ++++---- packages/integration-react/package.json | 14 ++++----- packages/integration/package.json | 12 ++++---- packages/release-manifests/package.json | 12 ++++---- packages/search-common/package.json | 12 ++++---- .../techdocs-cli-embedded-app/package.json | 10 +++---- packages/techdocs-cli/package.json | 8 ++--- packages/techdocs-common/package.json | 14 ++++----- packages/test-utils/package.json | 14 ++++----- packages/theme/package.json | 14 ++++----- packages/types/package.json | 12 ++++---- packages/version-bridge/package.json | 14 ++++----- plugins/airbrake/package.json | 14 ++++----- plugins/allure/package.json | 14 ++++----- plugins/analytics-module-ga/package.json | 14 ++++----- plugins/apache-airflow/package.json | 14 ++++----- plugins/api-docs/package.json | 14 ++++----- plugins/app-backend/package.json | 14 ++++----- plugins/auth-backend/package.json | 14 ++++----- plugins/auth-node/package.json | 14 ++++----- plugins/azure-devops-backend/package.json | 14 ++++----- plugins/azure-devops-common/package.json | 12 ++++---- plugins/azure-devops/package.json | 14 ++++----- plugins/badges-backend/package.json | 14 ++++----- plugins/badges/package.json | 14 ++++----- plugins/bazaar-backend/package.json | 14 ++++----- plugins/bazaar/package.json | 14 ++++----- plugins/bitrise/package.json | 14 ++++----- .../catalog-backend-module-ldap/package.json | 14 ++++----- .../package.json | 14 ++++----- plugins/catalog-backend/package.json | 14 ++++----- plugins/catalog-common/package.json | 12 ++++---- plugins/catalog-graph/package.json | 14 ++++----- plugins/catalog-graphql/package.json | 14 ++++----- plugins/catalog-import/package.json | 14 ++++----- plugins/catalog-react/package.json | 14 ++++----- plugins/catalog/package.json | 14 ++++----- plugins/cicd-statistics/package.json | 14 ++++----- plugins/circleci/package.json | 14 ++++----- plugins/cloudbuild/package.json | 14 ++++----- plugins/code-coverage-backend/package.json | 14 ++++----- plugins/code-coverage/package.json | 14 ++++----- plugins/config-schema/package.json | 14 ++++----- plugins/cost-insights/package.json | 14 ++++----- plugins/explore-react/package.json | 14 ++++----- plugins/explore/package.json | 14 ++++----- plugins/firehydrant/package.json | 14 ++++----- plugins/fossa/package.json | 14 ++++----- plugins/gcp-projects/package.json | 14 ++++----- plugins/git-release-manager/package.json | 14 ++++----- plugins/github-actions/package.json | 14 ++++----- plugins/github-deployments/package.json | 14 ++++----- plugins/gitops-profiles/package.json | 14 ++++----- plugins/gocd/package.json | 14 ++++----- plugins/graphiql/package.json | 14 ++++----- plugins/graphql-backend/package.json | 14 ++++----- plugins/home/package.json | 14 ++++----- plugins/ilert/package.json | 14 ++++----- plugins/jenkins-backend/package.json | 14 ++++----- plugins/jenkins/package.json | 14 ++++----- plugins/kafka-backend/package.json | 14 ++++----- plugins/kafka/package.json | 14 ++++----- plugins/kubernetes-backend/package.json | 14 ++++----- plugins/kubernetes-common/package.json | 12 ++++---- plugins/kubernetes/package.json | 14 ++++----- plugins/lighthouse/package.json | 14 ++++----- plugins/newrelic-dashboard/package.json | 14 ++++----- plugins/newrelic/package.json | 14 ++++----- plugins/org/package.json | 14 ++++----- plugins/pagerduty/package.json | 14 ++++----- plugins/permission-backend/package.json | 14 ++++----- plugins/permission-common/package.json | 12 ++++---- plugins/permission-node/package.json | 14 ++++----- plugins/permission-react/package.json | 14 ++++----- plugins/proxy-backend/package.json | 14 ++++----- plugins/rollbar-backend/package.json | 14 ++++----- plugins/rollbar/package.json | 14 ++++----- .../package.json | 14 ++++----- .../package.json | 14 ++++----- .../package.json | 14 ++++----- plugins/scaffolder-backend/package.json | 14 ++++----- plugins/scaffolder-common/package.json | 12 ++++---- plugins/scaffolder/package.json | 14 ++++----- .../package.json | 14 ++++----- plugins/search-backend-module-pg/package.json | 14 ++++----- plugins/search-backend-node/package.json | 14 ++++----- plugins/search-backend/package.json | 14 ++++----- plugins/search/package.json | 14 ++++----- plugins/sentry/package.json | 14 ++++----- plugins/shortcuts/package.json | 14 ++++----- plugins/sonarqube/package.json | 14 ++++----- plugins/splunk-on-call/package.json | 14 ++++----- .../package.json | 14 ++++----- plugins/tech-insights-backend/package.json | 14 ++++----- plugins/tech-insights-common/package.json | 12 ++++---- plugins/tech-insights-node/package.json | 14 ++++----- plugins/tech-insights/package.json | 14 ++++----- plugins/tech-radar/package.json | 14 ++++----- plugins/techdocs-backend/package.json | 14 ++++----- plugins/techdocs/package.json | 14 ++++----- plugins/todo-backend/package.json | 14 ++++----- plugins/todo/package.json | 14 ++++----- plugins/user-settings/package.json | 14 ++++----- plugins/xcmetrics/package.json | 14 ++++----- 129 files changed, 858 insertions(+), 854 deletions(-) diff --git a/.changeset/polite-bulldogs-repeat.md b/.changeset/polite-bulldogs-repeat.md index 32264b80c1..b3847aea33 100644 --- a/.changeset/polite-bulldogs-repeat.md +++ b/.changeset/polite-bulldogs-repeat.md @@ -10,4 +10,6 @@ Updated the package role definitions by renaming `plugin-frontend` to `frontend- The `backstage-cli migrate package-scripts` received several tweaks to make it more accurate. It now tries to maintain existing script arguments, like `--config` parameters for `build` and `start` scripts. -The `backstage-cli script build` command set an incorrect target directory for `app` and `backend` packages, which has been fixed. +The `script` command category has been renamed to `package`. + +The `backstage-cli package build` command set an incorrect target directory for `app` and `backend` packages, which has been fixed. diff --git a/packages/app-defaults/package.json b/packages/app-defaults/package.json index a5c89553ba..09c5af2b1c 100644 --- a/packages/app-defaults/package.json +++ b/packages/app-defaults/package.json @@ -24,13 +24,13 @@ "main": "src/index.ts", "types": "src/index.ts", "scripts": { - "build": "backstage-cli script build", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean", - "start": "backstage-cli script start" + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean", + "start": "backstage-cli package start" }, "dependencies": { "@backstage/core-components": "^0.8.8", diff --git a/packages/app/package.json b/packages/app/package.json index 8ebfdd6bff..6c3af47bc1 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -92,13 +92,13 @@ "start-server-and-test": "^1.10.11" }, "scripts": { - "start": "backstage-cli script start", - "build": "backstage-cli script build", - "clean": "backstage-cli script clean", - "test": "backstage-cli script test", + "start": "backstage-cli package start", + "build": "backstage-cli package build", + "clean": "backstage-cli package clean", + "test": "backstage-cli package test", "test:e2e": "start-server-and-test start http://localhost:3000 cy:dev", "test:e2e:ci": "start-server-and-test start http://localhost:3000 cy:run", - "lint": "backstage-cli script lint", + "lint": "backstage-cli package lint", "cy:dev": "cypress open", "cy:run": "cypress run" }, diff --git a/packages/backend-common/package.json b/packages/backend-common/package.json index 9f0efc8785..2d33daa4d3 100644 --- a/packages/backend-common/package.json +++ b/packages/backend-common/package.json @@ -25,13 +25,13 @@ ], "license": "Apache-2.0", "scripts": { - "build": "backstage-cli script build --experimental-type-build", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean", - "start": "backstage-cli script start" + "build": "backstage-cli package build --experimental-type-build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean", + "start": "backstage-cli package start" }, "dependencies": { "@backstage/cli-common": "^0.1.6", diff --git a/packages/backend-tasks/package.json b/packages/backend-tasks/package.json index 624f37858d..eca6f64f81 100644 --- a/packages/backend-tasks/package.json +++ b/packages/backend-tasks/package.json @@ -24,13 +24,13 @@ ], "license": "Apache-2.0", "scripts": { - "build": "backstage-cli script build", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean", - "start": "backstage-cli script start" + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean", + "start": "backstage-cli package start" }, "dependencies": { "@backstage/backend-common": "^0.10.7", diff --git a/packages/backend-test-utils/package.json b/packages/backend-test-utils/package.json index 5916c25adb..21ff0afc4b 100644 --- a/packages/backend-test-utils/package.json +++ b/packages/backend-test-utils/package.json @@ -25,13 +25,13 @@ ], "license": "Apache-2.0", "scripts": { - "build": "backstage-cli script build", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean", - "start": "backstage-cli script start" + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean", + "start": "backstage-cli package start" }, "dependencies": { "@backstage/backend-common": "^0.10.7", diff --git a/packages/backend/package.json b/packages/backend/package.json index 80f88b5325..41972c15d2 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -18,12 +18,12 @@ "backstage" ], "scripts": { - "build": "backstage-cli script build", + "build": "backstage-cli package build", "build-image": "docker build ../.. -f Dockerfile --tag example-backend", - "start": "backstage-cli script start", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", - "clean": "backstage-cli script clean", + "start": "backstage-cli package start", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "clean": "backstage-cli package clean", "migrate:create": "knex migrate:make -x ts" }, "dependencies": { diff --git a/packages/catalog-client/package.json b/packages/catalog-client/package.json index 5c8b36b9b0..eb24c3100c 100644 --- a/packages/catalog-client/package.json +++ b/packages/catalog-client/package.json @@ -25,12 +25,12 @@ "backstage" ], "scripts": { - "build": "backstage-cli script build", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/catalog-model": "^0.9.10", diff --git a/packages/catalog-model/package.json b/packages/catalog-model/package.json index 3ba52f0929..9cc8807a29 100644 --- a/packages/catalog-model/package.json +++ b/packages/catalog-model/package.json @@ -26,12 +26,12 @@ "backstage" ], "scripts": { - "build": "backstage-cli script build --experimental-type-build", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "build": "backstage-cli package build --experimental-type-build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/config": "^0.1.13", diff --git a/packages/cli-common/package.json b/packages/cli-common/package.json index 5e1f31795f..5d259ce2f3 100644 --- a/packages/cli-common/package.json +++ b/packages/cli-common/package.json @@ -24,13 +24,13 @@ ], "license": "Apache-2.0", "scripts": { - "build": "backstage-cli script build", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean", - "start": "backstage-cli script start" + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean", + "start": "backstage-cli package start" }, "devDependencies": { "@types/jest": "^26.0.7", diff --git a/packages/cli/package.json b/packages/cli/package.json index 87b3ad599c..c39cf261aa 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -21,10 +21,10 @@ "license": "Apache-2.0", "main": "dist/index.cjs.js", "scripts": { - "build": "backstage-cli script build", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", - "clean": "backstage-cli script clean", + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "clean": "backstage-cli package clean", "start": "nodemon --" }, "bin": { diff --git a/packages/cli/src/commands/index.ts b/packages/cli/src/commands/index.ts index f87ef1e8bd..0d6dc126e3 100644 --- a/packages/cli/src/commands/index.ts +++ b/packages/cli/src/commands/index.ts @@ -46,8 +46,8 @@ export function registerRepoCommand(program: CommanderStatic) { export function registerScriptCommand(program: CommanderStatic) { const command = program - .command('script [command]', { hidden: true }) - .description('Lifecycle scripts for Backstage packages [EXPERIMENTAL]'); + .command('package [command]', { hidden: true }) + .description('Lifecycle scripts for individual packages [EXPERIMENTAL]'); command .command('start') @@ -149,7 +149,7 @@ export function registerMigrateCommand(program: CommanderStatic) { } export function registerCommands(program: CommanderStatic) { - // TODO(Rugvip): Deprecate in favor of script variant + // TODO(Rugvip): Deprecate in favor of package variant program .command('app:build') .description('Build an app for a production release') @@ -157,7 +157,7 @@ export function registerCommands(program: CommanderStatic) { .option(...configOption) .action(lazy(() => import('./app/build').then(m => m.default))); - // TODO(Rugvip): Deprecate in favor of script variant + // TODO(Rugvip): Deprecate in favor of package variant program .command('app:serve') .description('Serve an app for local development') @@ -165,7 +165,7 @@ export function registerCommands(program: CommanderStatic) { .option(...configOption) .action(lazy(() => import('./app/serve').then(m => m.default))); - // TODO(Rugvip): Deprecate in favor of script variant + // TODO(Rugvip): Deprecate in favor of package variant program .command('backend:build') .description('Build a backend plugin') @@ -173,7 +173,7 @@ export function registerCommands(program: CommanderStatic) { .option('--experimental-type-build', 'Enable experimental type build') .action(lazy(() => import('./backend/build').then(m => m.default))); - // TODO(Rugvip): Deprecate in favor of script variant + // TODO(Rugvip): Deprecate in favor of package variant program .command('backend:bundle') .description('Bundle the backend into a deployment archive') @@ -183,7 +183,7 @@ export function registerCommands(program: CommanderStatic) { ) .action(lazy(() => import('./backend/bundle').then(m => m.default))); - // TODO(Rugvip): Deprecate in favor of script variant + // TODO(Rugvip): Deprecate in favor of package variant program .command('backend:dev') .description('Start local development server with HMR for the backend') @@ -232,7 +232,7 @@ export function registerCommands(program: CommanderStatic) { lazy(() => import('./create-plugin/createPlugin').then(m => m.default)), ); - // TODO(Rugvip): Deprecate in favor of script variant + // TODO(Rugvip): Deprecate in favor of package variant program .command('plugin:build') .description('Build a plugin') @@ -240,7 +240,7 @@ export function registerCommands(program: CommanderStatic) { .option('--experimental-type-build', 'Enable experimental type build') .action(lazy(() => import('./plugin/build').then(m => m.default))); - // TODO(Rugvip): Deprecate in favor of script variant + // TODO(Rugvip): Deprecate in favor of package variant program .command('plugin:serve') .description('Serves the dev/ folder of a plugin') @@ -255,7 +255,7 @@ export function registerCommands(program: CommanderStatic) { .description('Diff an existing plugin with the creation template') .action(lazy(() => import('./plugin/diff').then(m => m.default))); - // TODO(Rugvip): Deprecate in favor of script variant + // TODO(Rugvip): Deprecate in favor of package variant program .command('build') .description('Build a package for publishing') @@ -264,7 +264,7 @@ export function registerCommands(program: CommanderStatic) { .option('--experimental-type-build', 'Enable experimental type build') .action(lazy(() => import('./oldBuild').then(m => m.default))); - // TODO(Rugvip): Deprecate in favor of script variant + // TODO(Rugvip): Deprecate in favor of package variant program .command('lint') .option( @@ -276,7 +276,7 @@ export function registerCommands(program: CommanderStatic) { .description('Lint a package') .action(lazy(() => import('./lint').then(m => m.default))); - // TODO(Rugvip): Deprecate in favor of script variant + // TODO(Rugvip): Deprecate in favor of package variant program .command('test') .allowUnknownOption(true) // Allows the command to run, but we still need to parse raw args @@ -362,19 +362,19 @@ export function registerCommands(program: CommanderStatic) { .description('Check Backstage package versioning') .action(lazy(() => import('./versions/lint').then(m => m.default))); - // TODO(Rugvip): Deprecate in favor of script variant + // TODO(Rugvip): Deprecate in favor of package variant program .command('prepack') .description('Prepares a package for packaging before publishing') .action(lazy(() => import('./pack').then(m => m.pre))); - // TODO(Rugvip): Deprecate in favor of script variant + // TODO(Rugvip): Deprecate in favor of package variant program .command('postpack') .description('Restores the changes made by the prepack command') .action(lazy(() => import('./pack').then(m => m.post))); - // TODO(Rugvip): Deprecate in favor of script variant + // TODO(Rugvip): Deprecate in favor of package variant program .command('clean') .description('Delete cache directories') diff --git a/packages/cli/src/commands/migrate/packageScripts.ts b/packages/cli/src/commands/migrate/packageScripts.ts index c616fbba69..c7dab9466b 100644 --- a/packages/cli/src/commands/migrate/packageScripts.ts +++ b/packages/cli/src/commands/migrate/packageScripts.ts @@ -72,15 +72,15 @@ export async function command() { const expectedScripts = { ...(hasStart && { - start: `backstage-cli script ${startCmd.join(' ')}`, + start: `backstage-cli package ${startCmd.join(' ')}`, }), - build: `backstage-cli script ${buildCmd.join(' ')}`, - lint: 'backstage-cli script lint', - test: `backstage-cli script ${testCmd.join(' ')}`, - clean: 'backstage-cli script clean', + build: `backstage-cli package ${buildCmd.join(' ')}`, + lint: 'backstage-cli package lint', + test: `backstage-cli package ${testCmd.join(' ')}`, + clean: 'backstage-cli package clean', ...(needsPack && { - postpack: 'backstage-cli script postpack', - prepack: 'backstage-cli script prepack', + postpack: 'backstage-cli package postpack', + prepack: 'backstage-cli package prepack', }), }; diff --git a/packages/cli/src/commands/repo/build.ts b/packages/cli/src/commands/repo/build.ts index 9c32386304..b3f9add195 100644 --- a/packages/cli/src/commands/repo/build.ts +++ b/packages/cli/src/commands/repo/build.ts @@ -43,7 +43,9 @@ function createScriptOptionsParser(anyCmd: Command, commandPath: string[]) { } if (!targetCmd) { - throw new Error(`Could not find script command '${commandPath.join(' ')}'`); + throw new Error( + `Could not find package command '${commandPath.join(' ')}'`, + ); } const cmd = targetCmd; @@ -80,7 +82,7 @@ export async function command(cmd: Command): Promise { const apps = new Array(); const backends = new Array(); - const parseBuildScript = createScriptOptionsParser(cmd, ['script', 'build']); + const parseBuildScript = createScriptOptionsParser(cmd, ['package', 'build']); const options = packages.flatMap(pkg => { const role = diff --git a/packages/cli/src/lib/diff/handlers.ts b/packages/cli/src/lib/diff/handlers.ts index 9a313c13ae..55e9cddd3d 100644 --- a/packages/cli/src/lib/diff/handlers.ts +++ b/packages/cli/src/lib/diff/handlers.ts @@ -175,7 +175,7 @@ class PackageJsonHandler { // Skip diffing package scripts that have been migrated to the new commands const hasNewScript = Object.values(targetScripts).some(script => - String(script).includes('backstage-cli script '), + String(script).includes('backstage-cli package '), ); if (hasNewScript) { return; diff --git a/packages/cli/src/lib/packager/createDistWorkspace.ts b/packages/cli/src/lib/packager/createDistWorkspace.ts index 15ccda30c2..ef375387ef 100644 --- a/packages/cli/src/lib/packager/createDistWorkspace.ts +++ b/packages/cli/src/lib/packager/createDistWorkspace.ts @@ -142,7 +142,7 @@ export async function createDistWorkspace( continue; } - if (!buildScript.startsWith('backstage-cli script build')) { + if (!buildScript.startsWith('backstage-cli package build')) { console.warn( `Ignored ${pkg.packageJson.name} because it has a custom build script, '${buildScript}'`, ); @@ -216,7 +216,7 @@ export async function createDistWorkspace( const FAST_PACK_SCRIPTS = [ undefined, 'backstage-cli prepack', - 'backstage-cli script prepack', + 'backstage-cli package prepack', ]; async function moveToDistWorkspace( diff --git a/packages/codemods/package.json b/packages/codemods/package.json index bc6eac7a0d..eef854868c 100644 --- a/packages/codemods/package.json +++ b/packages/codemods/package.json @@ -23,12 +23,12 @@ "main": "src/index.ts", "scripts": { "start": "nodemon --", - "build": "backstage-cli script build", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", "prepack": "backstage-cli prepack", "postpack": "backstage-cli postpack", - "clean": "backstage-cli script clean" + "clean": "backstage-cli package clean" }, "bin": { "backstage-codemods": "bin/backstage-codemods" diff --git a/packages/config-loader/package.json b/packages/config-loader/package.json index dccb21c9eb..22323643b0 100644 --- a/packages/config-loader/package.json +++ b/packages/config-loader/package.json @@ -25,13 +25,13 @@ "main": "src/index.ts", "types": "src/index.ts", "scripts": { - "build": "backstage-cli script build", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean", - "start": "backstage-cli script start" + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean", + "start": "backstage-cli package start" }, "dependencies": { "@backstage/cli-common": "^0.1.6", diff --git a/packages/config/package.json b/packages/config/package.json index de1e72350f..b3cbc14988 100644 --- a/packages/config/package.json +++ b/packages/config/package.json @@ -25,12 +25,12 @@ "main": "src/index.ts", "types": "src/index.ts", "scripts": { - "build": "backstage-cli script build", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/types": "^0.1.1", diff --git a/packages/core-app-api/package.json b/packages/core-app-api/package.json index 84ec66f60c..b23eedd7c9 100644 --- a/packages/core-app-api/package.json +++ b/packages/core-app-api/package.json @@ -24,13 +24,13 @@ "main": "src/index.ts", "types": "src/index.ts", "scripts": { - "build": "backstage-cli script build", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean", - "start": "backstage-cli script start" + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean", + "start": "backstage-cli package start" }, "dependencies": { "@backstage/config": "^0.1.13", diff --git a/packages/core-components/package.json b/packages/core-components/package.json index b65392f4c6..e7d92b3c26 100644 --- a/packages/core-components/package.json +++ b/packages/core-components/package.json @@ -24,13 +24,13 @@ "main": "src/index.ts", "types": "src/index.ts", "scripts": { - "build": "backstage-cli script build", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean", - "start": "backstage-cli script start" + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean", + "start": "backstage-cli package start" }, "dependencies": { "@backstage/config": "^0.1.13", diff --git a/packages/core-plugin-api/package.json b/packages/core-plugin-api/package.json index 003dea2698..21ebd5699b 100644 --- a/packages/core-plugin-api/package.json +++ b/packages/core-plugin-api/package.json @@ -24,13 +24,13 @@ "main": "src/index.ts", "types": "src/index.ts", "scripts": { - "build": "backstage-cli script build", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean", - "start": "backstage-cli script start" + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean", + "start": "backstage-cli package start" }, "dependencies": { "@backstage/config": "^0.1.13", diff --git a/packages/create-app/package.json b/packages/create-app/package.json index 3b57096a52..fc1ccc1803 100644 --- a/packages/create-app/package.json +++ b/packages/create-app/package.json @@ -24,10 +24,10 @@ "backstage-create-app": "bin/backstage-create-app" }, "scripts": { - "build": "backstage-cli script build", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", - "clean": "backstage-cli script clean", + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "clean": "backstage-cli package clean", "prepack": "node scripts/prepack.js", "postpack": "node scripts/postpack.js", "start": "nodemon --" diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 86fcb20bd0..40f6eef595 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -24,13 +24,13 @@ "main": "src/index.ts", "types": "src/index.ts", "scripts": { - "build": "backstage-cli script build", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean", - "start": "backstage-cli script start" + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean", + "start": "backstage-cli package start" }, "dependencies": { "@backstage/app-defaults": "^0.1.7", diff --git a/packages/e2e-test/package.json b/packages/e2e-test/package.json index 7d6a979a8c..bbbeed2312 100644 --- a/packages/e2e-test/package.json +++ b/packages/e2e-test/package.json @@ -19,11 +19,11 @@ "main": "src/index.ts", "scripts": { "start": "nodemon --", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", "test:e2e": "yarn start", - "build": "backstage-cli script build", - "clean": "backstage-cli script clean" + "build": "backstage-cli package build", + "clean": "backstage-cli package clean" }, "bin": { "e2e-test": "bin/e2e-test" diff --git a/packages/errors/package.json b/packages/errors/package.json index 4c8a985932..17d32d7cd9 100644 --- a/packages/errors/package.json +++ b/packages/errors/package.json @@ -25,12 +25,12 @@ "backstage" ], "scripts": { - "build": "backstage-cli script build", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/types": "^0.1.1", diff --git a/packages/integration-react/package.json b/packages/integration-react/package.json index 148b64c39d..ce7c402c77 100644 --- a/packages/integration-react/package.json +++ b/packages/integration-react/package.json @@ -15,13 +15,13 @@ "role": "web-library" }, "scripts": { - "build": "backstage-cli script build", - "start": "backstage-cli script start", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "build": "backstage-cli package build", + "start": "backstage-cli package start", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/config": "^0.1.13", diff --git a/packages/integration/package.json b/packages/integration/package.json index dff83ef042..be6a5e6a87 100644 --- a/packages/integration/package.json +++ b/packages/integration/package.json @@ -25,12 +25,12 @@ "backstage" ], "scripts": { - "build": "backstage-cli script build", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/config": "^0.1.13", diff --git a/packages/release-manifests/package.json b/packages/release-manifests/package.json index 3a5a41d8b5..a8990be2f0 100644 --- a/packages/release-manifests/package.json +++ b/packages/release-manifests/package.json @@ -25,12 +25,12 @@ ], "license": "Apache-2.0", "scripts": { - "build": "backstage-cli script build", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "cross-fetch": "^3.1.5" diff --git a/packages/search-common/package.json b/packages/search-common/package.json index 5e1bd56609..d4df8921f7 100644 --- a/packages/search-common/package.json +++ b/packages/search-common/package.json @@ -28,12 +28,12 @@ "dist" ], "scripts": { - "build": "backstage-cli script build", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "bugs": { "url": "https://github.com/backstage/backstage/issues" diff --git a/packages/techdocs-cli-embedded-app/package.json b/packages/techdocs-cli-embedded-app/package.json index 75e2b280d5..a36653d5dc 100644 --- a/packages/techdocs-cli-embedded-app/package.json +++ b/packages/techdocs-cli-embedded-app/package.json @@ -42,11 +42,11 @@ "start-server-and-test": "^1.10.11" }, "scripts": { - "start": "backstage-cli script start --config ./app-config.yaml", - "build": "backstage-cli script build --config ./app-config.yaml", - "clean": "backstage-cli script clean", - "test": "backstage-cli script test", - "lint": "backstage-cli script lint", + "start": "backstage-cli package start --config ./app-config.yaml", + "build": "backstage-cli package build --config ./app-config.yaml", + "clean": "backstage-cli package clean", + "test": "backstage-cli package test", + "lint": "backstage-cli package lint", "test:e2e": "cross-env PORT=3001 start-server-and-test start http://localhost:3001 cy:dev", "test:e2e:ci": "cross-env PORT=3001 start-server-and-test start http://localhost:3001 cy:run", "cy:dev": "cypress open", diff --git a/packages/techdocs-cli/package.json b/packages/techdocs-cli/package.json index 9d65d8d51c..647ce6bdea 100644 --- a/packages/techdocs-cli/package.json +++ b/packages/techdocs-cli/package.json @@ -24,10 +24,10 @@ "types": "", "scripts": { "start": "nodemon --", - "build": "backstage-cli script build", - "clean": "backstage-cli script clean", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test --testPathIgnorePatterns=src/e2e.test.ts", + "build": "backstage-cli package build", + "clean": "backstage-cli package clean", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test --testPathIgnorePatterns=src/e2e.test.ts", "test:e2e": "backstage-cli test src/e2e.test.ts", "test:e2e:ci": "backstage-cli test --watchAll=false --ci src/e2e.test.ts", "prepack": "./scripts/prepack.sh" diff --git a/packages/techdocs-common/package.json b/packages/techdocs-common/package.json index 402254ff8b..fd2e34b413 100644 --- a/packages/techdocs-common/package.json +++ b/packages/techdocs-common/package.json @@ -28,13 +28,13 @@ "dist" ], "scripts": { - "build": "backstage-cli script build", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean", - "start": "backstage-cli script start" + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean", + "start": "backstage-cli package start" }, "bugs": { "url": "https://github.com/backstage/backstage/issues" diff --git a/packages/test-utils/package.json b/packages/test-utils/package.json index 006a893500..efde532268 100644 --- a/packages/test-utils/package.json +++ b/packages/test-utils/package.json @@ -24,13 +24,13 @@ "main": "src/index.ts", "types": "src/index.ts", "scripts": { - "build": "backstage-cli script build", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean", - "start": "backstage-cli script start" + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean", + "start": "backstage-cli package start" }, "dependencies": { "@backstage/config": "^0.1.13", diff --git a/packages/theme/package.json b/packages/theme/package.json index 446fca4029..24529d8c0d 100644 --- a/packages/theme/package.json +++ b/packages/theme/package.json @@ -24,13 +24,13 @@ "main": "src/index.ts", "types": "src/index.ts", "scripts": { - "build": "backstage-cli script build", - "lint": "backstage-cli script lint", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean", - "start": "backstage-cli script start", - "test": "backstage-cli script test" + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean", + "start": "backstage-cli package start", + "test": "backstage-cli package test" }, "dependencies": { "@material-ui/core": "^4.12.2" diff --git a/packages/types/package.json b/packages/types/package.json index a8225838a1..84237250b4 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -25,12 +25,12 @@ "backstage" ], "scripts": { - "build": "backstage-cli script build", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": {}, "devDependencies": { diff --git a/packages/version-bridge/package.json b/packages/version-bridge/package.json index f52f12ed53..cdf0858d38 100644 --- a/packages/version-bridge/package.json +++ b/packages/version-bridge/package.json @@ -24,13 +24,13 @@ "main": "src/index.ts", "types": "src/index.ts", "scripts": { - "build": "backstage-cli script build", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean", - "start": "backstage-cli script start" + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean", + "start": "backstage-cli package start" }, "peerDependencies": { "@types/react": "^16.13.1 || ^17.0.0", diff --git a/plugins/airbrake/package.json b/plugins/airbrake/package.json index 33cc354b9f..23fb280208 100644 --- a/plugins/airbrake/package.json +++ b/plugins/airbrake/package.json @@ -13,14 +13,14 @@ "role": "frontend-plugin" }, "scripts": { - "build": "backstage-cli script build", - "start": "backstage-cli script start", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", + "build": "backstage-cli package build", + "start": "backstage-cli package start", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/core-components": "^0.8.8", diff --git a/plugins/allure/package.json b/plugins/allure/package.json index 1e61c8b500..767d4c5cf1 100644 --- a/plugins/allure/package.json +++ b/plugins/allure/package.json @@ -15,14 +15,14 @@ "role": "frontend-plugin" }, "scripts": { - "build": "backstage-cli script build", - "start": "backstage-cli script start", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", + "build": "backstage-cli package build", + "start": "backstage-cli package start", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/catalog-model": "^0.9.10", diff --git a/plugins/analytics-module-ga/package.json b/plugins/analytics-module-ga/package.json index 8ae8f11132..c82ad9eefc 100644 --- a/plugins/analytics-module-ga/package.json +++ b/plugins/analytics-module-ga/package.json @@ -14,14 +14,14 @@ "role": "frontend-plugin-module" }, "scripts": { - "build": "backstage-cli script build", - "start": "backstage-cli script start", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", + "build": "backstage-cli package build", + "start": "backstage-cli package start", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/config": "^0.1.13", diff --git a/plugins/apache-airflow/package.json b/plugins/apache-airflow/package.json index c54857eb93..7f740efcf5 100644 --- a/plugins/apache-airflow/package.json +++ b/plugins/apache-airflow/package.json @@ -13,14 +13,14 @@ "role": "frontend-plugin" }, "scripts": { - "build": "backstage-cli script build", - "start": "backstage-cli script start", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", + "build": "backstage-cli package build", + "start": "backstage-cli package start", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/core-components": "^0.8.8", diff --git a/plugins/api-docs/package.json b/plugins/api-docs/package.json index cbbeb1d3ce..7a0d04e85c 100644 --- a/plugins/api-docs/package.json +++ b/plugins/api-docs/package.json @@ -23,14 +23,14 @@ "backstage" ], "scripts": { - "build": "backstage-cli script build", - "start": "backstage-cli script start", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", + "build": "backstage-cli package build", + "start": "backstage-cli package start", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@asyncapi/react-component": "1.0.0-next.32", diff --git a/plugins/app-backend/package.json b/plugins/app-backend/package.json index 7ae736161f..d04afa6874 100644 --- a/plugins/app-backend/package.json +++ b/plugins/app-backend/package.json @@ -24,13 +24,13 @@ "backstage" ], "scripts": { - "start": "backstage-cli script start", - "build": "backstage-cli script build", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "start": "backstage-cli package start", + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/backend-common": "^0.10.7", diff --git a/plugins/auth-backend/package.json b/plugins/auth-backend/package.json index 8b80adeb34..84ba85e8a9 100644 --- a/plugins/auth-backend/package.json +++ b/plugins/auth-backend/package.json @@ -24,13 +24,13 @@ "backstage" ], "scripts": { - "start": "backstage-cli script start", - "build": "backstage-cli script build", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "start": "backstage-cli package start", + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/plugin-auth-node": "^0.1.0", diff --git a/plugins/auth-node/package.json b/plugins/auth-node/package.json index 401391df9e..83b4a45d71 100644 --- a/plugins/auth-node/package.json +++ b/plugins/auth-node/package.json @@ -14,13 +14,13 @@ "role": "node-library" }, "scripts": { - "build": "backstage-cli script build", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean", - "start": "backstage-cli script start" + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean", + "start": "backstage-cli package start" }, "dependencies": { "@backstage/backend-common": "^0.10.7", diff --git a/plugins/azure-devops-backend/package.json b/plugins/azure-devops-backend/package.json index 8415c82fef..1264cbe069 100644 --- a/plugins/azure-devops-backend/package.json +++ b/plugins/azure-devops-backend/package.json @@ -14,13 +14,13 @@ "role": "backend-plugin" }, "scripts": { - "start": "backstage-cli script start", - "build": "backstage-cli script build", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "start": "backstage-cli package start", + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/backend-common": "^0.10.7", diff --git a/plugins/azure-devops-common/package.json b/plugins/azure-devops-common/package.json index af59bc42a6..fa1bb87d16 100644 --- a/plugins/azure-devops-common/package.json +++ b/plugins/azure-devops-common/package.json @@ -24,12 +24,12 @@ "backstage" ], "scripts": { - "build": "backstage-cli script build", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "devDependencies": { "@backstage/cli": "^0.13.2-next.0" diff --git a/plugins/azure-devops/package.json b/plugins/azure-devops/package.json index e26bf294c2..8aa97a85ab 100644 --- a/plugins/azure-devops/package.json +++ b/plugins/azure-devops/package.json @@ -20,14 +20,14 @@ "directory": "plugins/azure-devops" }, "scripts": { - "build": "backstage-cli script build", - "start": "backstage-cli script start", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", + "build": "backstage-cli package build", + "start": "backstage-cli package start", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/catalog-model": "^0.9.10", diff --git a/plugins/badges-backend/package.json b/plugins/badges-backend/package.json index 496fa2b4f5..f8b2a75a3a 100644 --- a/plugins/badges-backend/package.json +++ b/plugins/badges-backend/package.json @@ -25,13 +25,13 @@ "badges" ], "scripts": { - "start": "backstage-cli script start", - "build": "backstage-cli script build", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "start": "backstage-cli package start", + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/backend-common": "^0.10.7", diff --git a/plugins/badges/package.json b/plugins/badges/package.json index cd3049e325..5fe0eb14b8 100644 --- a/plugins/badges/package.json +++ b/plugins/badges/package.json @@ -20,14 +20,14 @@ "directory": "plugins/badges" }, "scripts": { - "build": "backstage-cli script build", - "start": "backstage-cli script start", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", + "build": "backstage-cli package build", + "start": "backstage-cli package start", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/catalog-model": "^0.9.10", diff --git a/plugins/bazaar-backend/package.json b/plugins/bazaar-backend/package.json index 7904913cb5..728a1a3ac6 100644 --- a/plugins/bazaar-backend/package.json +++ b/plugins/bazaar-backend/package.json @@ -14,13 +14,13 @@ "role": "backend-plugin" }, "scripts": { - "start": "backstage-cli script start", - "build": "backstage-cli script build", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "start": "backstage-cli package start", + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/backend-common": "^0.10.7", diff --git a/plugins/bazaar/package.json b/plugins/bazaar/package.json index 952a910c32..4cc3d72db7 100644 --- a/plugins/bazaar/package.json +++ b/plugins/bazaar/package.json @@ -14,14 +14,14 @@ "role": "frontend-plugin" }, "scripts": { - "build": "backstage-cli script build", - "start": "backstage-cli script start", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", + "build": "backstage-cli package build", + "start": "backstage-cli package start", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/catalog-client": "^0.6.0", diff --git a/plugins/bitrise/package.json b/plugins/bitrise/package.json index 29c1b045f8..2ddada7f6b 100644 --- a/plugins/bitrise/package.json +++ b/plugins/bitrise/package.json @@ -14,14 +14,14 @@ "role": "frontend-plugin" }, "scripts": { - "build": "backstage-cli script build", - "start": "backstage-cli script start", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", + "build": "backstage-cli package build", + "start": "backstage-cli package start", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/catalog-model": "^0.9.10", diff --git a/plugins/catalog-backend-module-ldap/package.json b/plugins/catalog-backend-module-ldap/package.json index 2af4c02715..315d04252a 100644 --- a/plugins/catalog-backend-module-ldap/package.json +++ b/plugins/catalog-backend-module-ldap/package.json @@ -24,13 +24,13 @@ "backstage" ], "scripts": { - "build": "backstage-cli script build", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean", - "start": "backstage-cli script start" + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean", + "start": "backstage-cli package start" }, "dependencies": { "@backstage/catalog-model": "^0.9.10", diff --git a/plugins/catalog-backend-module-msgraph/package.json b/plugins/catalog-backend-module-msgraph/package.json index 56e9f94886..84bdb9599a 100644 --- a/plugins/catalog-backend-module-msgraph/package.json +++ b/plugins/catalog-backend-module-msgraph/package.json @@ -24,13 +24,13 @@ "backstage" ], "scripts": { - "build": "backstage-cli script build", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean", - "start": "backstage-cli script start" + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean", + "start": "backstage-cli package start" }, "dependencies": { "@azure/msal-node": "^1.1.0", diff --git a/plugins/catalog-backend/package.json b/plugins/catalog-backend/package.json index ebf86fc505..07c0d1efbd 100644 --- a/plugins/catalog-backend/package.json +++ b/plugins/catalog-backend/package.json @@ -24,13 +24,13 @@ "backstage" ], "scripts": { - "start": "backstage-cli script start", - "build": "backstage-cli script build", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "start": "backstage-cli package start", + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/backend-common": "^0.10.7", diff --git a/plugins/catalog-common/package.json b/plugins/catalog-common/package.json index 367049212a..5f77133215 100644 --- a/plugins/catalog-common/package.json +++ b/plugins/catalog-common/package.json @@ -25,12 +25,12 @@ "backstage" ], "scripts": { - "build": "backstage-cli script build", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/plugin-permission-common": "^0.4.0" diff --git a/plugins/catalog-graph/package.json b/plugins/catalog-graph/package.json index e54bd28ca2..ad7161eb93 100644 --- a/plugins/catalog-graph/package.json +++ b/plugins/catalog-graph/package.json @@ -14,14 +14,14 @@ "role": "frontend-plugin" }, "scripts": { - "build": "backstage-cli script build", - "start": "backstage-cli script start", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", + "build": "backstage-cli package build", + "start": "backstage-cli package start", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/catalog-client": "^0.6.0", diff --git a/plugins/catalog-graphql/package.json b/plugins/catalog-graphql/package.json index 4ad28de016..a1920b76a3 100644 --- a/plugins/catalog-graphql/package.json +++ b/plugins/catalog-graphql/package.json @@ -24,14 +24,14 @@ "graphql" ], "scripts": { - "start": "backstage-cli script start", - "build": "backstage-cli script build", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", + "start": "backstage-cli package start", + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", "generate:types": "graphql-codegen", - "clean": "backstage-cli script clean" + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/catalog-model": "^0.9.10", diff --git a/plugins/catalog-import/package.json b/plugins/catalog-import/package.json index 0e6176e537..1e62395e64 100644 --- a/plugins/catalog-import/package.json +++ b/plugins/catalog-import/package.json @@ -24,14 +24,14 @@ "backstage" ], "scripts": { - "build": "backstage-cli script build", - "start": "backstage-cli script start", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", + "build": "backstage-cli package build", + "start": "backstage-cli package start", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/catalog-client": "^0.6.0", diff --git a/plugins/catalog-react/package.json b/plugins/catalog-react/package.json index 23e25628ba..a553b1d4fd 100644 --- a/plugins/catalog-react/package.json +++ b/plugins/catalog-react/package.json @@ -24,13 +24,13 @@ "backstage" ], "scripts": { - "build": "backstage-cli script build", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean", - "start": "backstage-cli script start" + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean", + "start": "backstage-cli package start" }, "dependencies": { "@backstage/catalog-client": "^0.6.0", diff --git a/plugins/catalog/package.json b/plugins/catalog/package.json index 256c3343d1..5f6caf65d7 100644 --- a/plugins/catalog/package.json +++ b/plugins/catalog/package.json @@ -24,14 +24,14 @@ "backstage" ], "scripts": { - "build": "backstage-cli script build", - "start": "backstage-cli script start", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", + "build": "backstage-cli package build", + "start": "backstage-cli package start", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/catalog-client": "^0.6.0", diff --git a/plugins/cicd-statistics/package.json b/plugins/cicd-statistics/package.json index 89ce3da557..6b9d21753d 100644 --- a/plugins/cicd-statistics/package.json +++ b/plugins/cicd-statistics/package.json @@ -24,13 +24,13 @@ "backstage" ], "scripts": { - "build": "backstage-cli script build", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean", - "start": "backstage-cli script start" + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean", + "start": "backstage-cli package start" }, "devDependencies": { "@types/react": "^16.13.1 || ^17.0.0", diff --git a/plugins/circleci/package.json b/plugins/circleci/package.json index 4109d554e4..12a313219b 100644 --- a/plugins/circleci/package.json +++ b/plugins/circleci/package.json @@ -25,14 +25,14 @@ "circleci" ], "scripts": { - "build": "backstage-cli script build", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", - "clean": "backstage-cli script clean", + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "clean": "backstage-cli package clean", "diff": "backstage-cli plugin:diff", - "start": "backstage-cli script start", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack" + "start": "backstage-cli package start", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack" }, "dependencies": { "@backstage/catalog-model": "^0.9.10", diff --git a/plugins/cloudbuild/package.json b/plugins/cloudbuild/package.json index bd3707f0aa..6f57c0a0a7 100644 --- a/plugins/cloudbuild/package.json +++ b/plugins/cloudbuild/package.json @@ -24,14 +24,14 @@ "google cloud" ], "scripts": { - "build": "backstage-cli script build", - "start": "backstage-cli script start", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", + "build": "backstage-cli package build", + "start": "backstage-cli package start", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/catalog-model": "^0.9.10", diff --git a/plugins/code-coverage-backend/package.json b/plugins/code-coverage-backend/package.json index acbaf05214..2148c3cddb 100644 --- a/plugins/code-coverage-backend/package.json +++ b/plugins/code-coverage-backend/package.json @@ -14,13 +14,13 @@ "role": "backend-plugin" }, "scripts": { - "start": "backstage-cli script start", - "build": "backstage-cli script build", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "start": "backstage-cli package start", + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/backend-common": "^0.10.7", diff --git a/plugins/code-coverage/package.json b/plugins/code-coverage/package.json index 16ffd6c057..213e64cb3b 100644 --- a/plugins/code-coverage/package.json +++ b/plugins/code-coverage/package.json @@ -14,14 +14,14 @@ "role": "frontend-plugin" }, "scripts": { - "build": "backstage-cli script build", - "start": "backstage-cli script start", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", + "build": "backstage-cli package build", + "start": "backstage-cli package start", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/catalog-model": "^0.9.10", diff --git a/plugins/config-schema/package.json b/plugins/config-schema/package.json index 1b6dfeb603..8cfe6b2a6f 100644 --- a/plugins/config-schema/package.json +++ b/plugins/config-schema/package.json @@ -14,14 +14,14 @@ "role": "frontend-plugin" }, "scripts": { - "build": "backstage-cli script build", - "start": "backstage-cli script start", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", + "build": "backstage-cli package build", + "start": "backstage-cli package start", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/config": "^0.1.13", diff --git a/plugins/cost-insights/package.json b/plugins/cost-insights/package.json index e65da6296e..4b3c93d2a8 100644 --- a/plugins/cost-insights/package.json +++ b/plugins/cost-insights/package.json @@ -24,14 +24,14 @@ "backstage" ], "scripts": { - "build": "backstage-cli script build", - "start": "backstage-cli script start", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", + "build": "backstage-cli package build", + "start": "backstage-cli package start", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/catalog-model": "^0.9.10", diff --git a/plugins/explore-react/package.json b/plugins/explore-react/package.json index 946c5922a0..714474ce06 100644 --- a/plugins/explore-react/package.json +++ b/plugins/explore-react/package.json @@ -24,13 +24,13 @@ "backstage" ], "scripts": { - "build": "backstage-cli script build", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", - "clean": "backstage-cli script clean", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "start": "backstage-cli script start" + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "clean": "backstage-cli package clean", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "start": "backstage-cli package start" }, "dependencies": { "@backstage/core-plugin-api": "^0.6.0" diff --git a/plugins/explore/package.json b/plugins/explore/package.json index e8f03a2bf3..7c76e88a59 100644 --- a/plugins/explore/package.json +++ b/plugins/explore/package.json @@ -24,14 +24,14 @@ "backstage" ], "scripts": { - "build": "backstage-cli script build", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", "diff": "backstage-cli plugin:diff", - "clean": "backstage-cli script clean", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "start": "backstage-cli script start" + "clean": "backstage-cli package clean", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "start": "backstage-cli package start" }, "dependencies": { "@backstage/catalog-model": "^0.9.10", diff --git a/plugins/firehydrant/package.json b/plugins/firehydrant/package.json index 0cd7029d49..974e3cc9e7 100644 --- a/plugins/firehydrant/package.json +++ b/plugins/firehydrant/package.json @@ -15,14 +15,14 @@ "role": "frontend-plugin" }, "scripts": { - "build": "backstage-cli script build", - "start": "backstage-cli script start", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", + "build": "backstage-cli package build", + "start": "backstage-cli package start", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/core-components": "^0.8.8", diff --git a/plugins/fossa/package.json b/plugins/fossa/package.json index 2e9d9a19c1..2d9674f0f7 100644 --- a/plugins/fossa/package.json +++ b/plugins/fossa/package.json @@ -25,14 +25,14 @@ "fossa" ], "scripts": { - "build": "backstage-cli script build", - "start": "backstage-cli script start", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", + "build": "backstage-cli package build", + "start": "backstage-cli package start", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/catalog-model": "^0.9.10", diff --git a/plugins/gcp-projects/package.json b/plugins/gcp-projects/package.json index d372b116dd..014b5f4032 100644 --- a/plugins/gcp-projects/package.json +++ b/plugins/gcp-projects/package.json @@ -24,14 +24,14 @@ "google cloud" ], "scripts": { - "build": "backstage-cli script build", - "start": "backstage-cli script start", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", + "build": "backstage-cli package build", + "start": "backstage-cli package start", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/core-components": "^0.8.8", diff --git a/plugins/git-release-manager/package.json b/plugins/git-release-manager/package.json index 9406ac5fb8..19e71b3bb8 100644 --- a/plugins/git-release-manager/package.json +++ b/plugins/git-release-manager/package.json @@ -14,14 +14,14 @@ "role": "frontend-plugin" }, "scripts": { - "build": "backstage-cli script build", - "start": "backstage-cli script start", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", + "build": "backstage-cli package build", + "start": "backstage-cli package start", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/core-components": "^0.8.8", diff --git a/plugins/github-actions/package.json b/plugins/github-actions/package.json index 53fa0a469f..a383771924 100644 --- a/plugins/github-actions/package.json +++ b/plugins/github-actions/package.json @@ -26,14 +26,14 @@ "github actions" ], "scripts": { - "build": "backstage-cli script build", - "start": "backstage-cli script start", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", + "build": "backstage-cli package build", + "start": "backstage-cli package start", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/catalog-model": "^0.9.10", diff --git a/plugins/github-deployments/package.json b/plugins/github-deployments/package.json index 37dea0059d..c8f37f5121 100644 --- a/plugins/github-deployments/package.json +++ b/plugins/github-deployments/package.json @@ -14,14 +14,14 @@ "role": "frontend-plugin" }, "scripts": { - "build": "backstage-cli script build", - "start": "backstage-cli script start", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", + "build": "backstage-cli package build", + "start": "backstage-cli package start", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/catalog-model": "^0.9.10", diff --git a/plugins/gitops-profiles/package.json b/plugins/gitops-profiles/package.json index 13dd6de689..851bc2501e 100644 --- a/plugins/gitops-profiles/package.json +++ b/plugins/gitops-profiles/package.json @@ -25,14 +25,14 @@ "gitops" ], "scripts": { - "build": "backstage-cli script build", - "start": "backstage-cli script start", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", + "build": "backstage-cli package build", + "start": "backstage-cli package start", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/core-components": "^0.8.8", diff --git a/plugins/gocd/package.json b/plugins/gocd/package.json index 4bd089c380..3cefcd9a82 100644 --- a/plugins/gocd/package.json +++ b/plugins/gocd/package.json @@ -21,14 +21,14 @@ "directory": "plugins/gocd" }, "scripts": { - "build": "backstage-cli script build", - "start": "backstage-cli script start", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", + "build": "backstage-cli package build", + "start": "backstage-cli package start", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/catalog-model": "^0.9.10", diff --git a/plugins/graphiql/package.json b/plugins/graphiql/package.json index 3dac4ccc37..269302f1bb 100644 --- a/plugins/graphiql/package.json +++ b/plugins/graphiql/package.json @@ -24,14 +24,14 @@ "main": "src/index.ts", "types": "src/index.ts", "scripts": { - "build": "backstage-cli script build", - "start": "backstage-cli script start", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", + "build": "backstage-cli package build", + "start": "backstage-cli package start", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/core-components": "^0.8.8", diff --git a/plugins/graphql-backend/package.json b/plugins/graphql-backend/package.json index d60bdbc41e..029963cdf6 100644 --- a/plugins/graphql-backend/package.json +++ b/plugins/graphql-backend/package.json @@ -25,13 +25,13 @@ "graphql" ], "scripts": { - "start": "backstage-cli script start", - "build": "backstage-cli script build", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "start": "backstage-cli package start", + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/backend-common": "^0.10.7", diff --git a/plugins/home/package.json b/plugins/home/package.json index 5685f876f0..204faa57bd 100644 --- a/plugins/home/package.json +++ b/plugins/home/package.json @@ -24,14 +24,14 @@ "homepage" ], "scripts": { - "build": "backstage-cli script build", - "start": "backstage-cli script start", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", + "build": "backstage-cli package build", + "start": "backstage-cli package start", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/catalog-model": "^0.9.10", diff --git a/plugins/ilert/package.json b/plugins/ilert/package.json index 2018122bb3..5f741b5a49 100644 --- a/plugins/ilert/package.json +++ b/plugins/ilert/package.json @@ -14,14 +14,14 @@ "role": "frontend-plugin" }, "scripts": { - "build": "backstage-cli script build", - "start": "backstage-cli script start", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", + "build": "backstage-cli package build", + "start": "backstage-cli package start", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/catalog-model": "^0.9.10", diff --git a/plugins/jenkins-backend/package.json b/plugins/jenkins-backend/package.json index c920f3f9c0..b21fdc794f 100644 --- a/plugins/jenkins-backend/package.json +++ b/plugins/jenkins-backend/package.json @@ -16,13 +16,13 @@ }, "configSchema": "config.d.ts", "scripts": { - "start": "backstage-cli script start", - "build": "backstage-cli script build", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "start": "backstage-cli package start", + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/backend-common": "^0.10.7", diff --git a/plugins/jenkins/package.json b/plugins/jenkins/package.json index 88881df2eb..719ed70615 100644 --- a/plugins/jenkins/package.json +++ b/plugins/jenkins/package.json @@ -25,14 +25,14 @@ "jenkins" ], "scripts": { - "build": "backstage-cli script build", - "start": "backstage-cli script start", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", + "build": "backstage-cli package build", + "start": "backstage-cli package start", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/catalog-model": "^0.9.10", diff --git a/plugins/kafka-backend/package.json b/plugins/kafka-backend/package.json index f09fac9072..8a35006feb 100644 --- a/plugins/kafka-backend/package.json +++ b/plugins/kafka-backend/package.json @@ -26,13 +26,13 @@ ], "configSchema": "config.d.ts", "scripts": { - "start": "backstage-cli script start", - "build": "backstage-cli script build", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "start": "backstage-cli package start", + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/backend-common": "^0.10.7", diff --git a/plugins/kafka/package.json b/plugins/kafka/package.json index 5dac7c9e99..eb0ab12232 100644 --- a/plugins/kafka/package.json +++ b/plugins/kafka/package.json @@ -14,14 +14,14 @@ "role": "frontend-plugin" }, "scripts": { - "build": "backstage-cli script build", - "start": "backstage-cli script start", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", + "build": "backstage-cli package build", + "start": "backstage-cli package start", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/catalog-model": "^0.9.10", diff --git a/plugins/kubernetes-backend/package.json b/plugins/kubernetes-backend/package.json index b4f5137434..9ce1634f83 100644 --- a/plugins/kubernetes-backend/package.json +++ b/plugins/kubernetes-backend/package.json @@ -26,13 +26,13 @@ ], "configSchema": "schema.d.ts", "scripts": { - "start": "backstage-cli script start", - "build": "backstage-cli script build", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "start": "backstage-cli package start", + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/backend-common": "^0.10.7", diff --git a/plugins/kubernetes-common/package.json b/plugins/kubernetes-common/package.json index b10167ba27..041032f0e1 100644 --- a/plugins/kubernetes-common/package.json +++ b/plugins/kubernetes-common/package.json @@ -27,12 +27,12 @@ "dist" ], "scripts": { - "build": "backstage-cli script build", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "bugs": { "url": "https://github.com/backstage/backstage/issues" diff --git a/plugins/kubernetes/package.json b/plugins/kubernetes/package.json index 43175593f3..1d9f9c1821 100644 --- a/plugins/kubernetes/package.json +++ b/plugins/kubernetes/package.json @@ -24,14 +24,14 @@ "kubernetes" ], "scripts": { - "build": "backstage-cli script build", - "start": "backstage-cli script start", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", + "build": "backstage-cli package build", + "start": "backstage-cli package start", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/catalog-model": "^0.9.10", diff --git a/plugins/lighthouse/package.json b/plugins/lighthouse/package.json index 7ecefbac45..3bb06ac0cf 100644 --- a/plugins/lighthouse/package.json +++ b/plugins/lighthouse/package.json @@ -25,14 +25,14 @@ "lighthouse" ], "scripts": { - "build": "backstage-cli script build", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", "diff": "backstage-cli plugin:diff", - "clean": "backstage-cli script clean", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "start": "backstage-cli script start" + "clean": "backstage-cli package clean", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "start": "backstage-cli package start" }, "dependencies": { "@backstage/catalog-model": "^0.9.10", diff --git a/plugins/newrelic-dashboard/package.json b/plugins/newrelic-dashboard/package.json index 656780c9d3..f0b3d29680 100644 --- a/plugins/newrelic-dashboard/package.json +++ b/plugins/newrelic-dashboard/package.json @@ -13,14 +13,14 @@ "role": "frontend-plugin" }, "scripts": { - "build": "backstage-cli script build", - "start": "backstage-cli script start", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", + "build": "backstage-cli package build", + "start": "backstage-cli package start", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/catalog-model": "^0.9.10", diff --git a/plugins/newrelic/package.json b/plugins/newrelic/package.json index 4cdef7899e..7f0b2e6c26 100644 --- a/plugins/newrelic/package.json +++ b/plugins/newrelic/package.json @@ -25,14 +25,14 @@ "newrelic" ], "scripts": { - "build": "backstage-cli script build", - "start": "backstage-cli script start", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", + "build": "backstage-cli package build", + "start": "backstage-cli package start", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/core-components": "^0.8.8", diff --git a/plugins/org/package.json b/plugins/org/package.json index be7537c18b..c5a52e14e5 100644 --- a/plugins/org/package.json +++ b/plugins/org/package.json @@ -14,14 +14,14 @@ "role": "frontend-plugin" }, "scripts": { - "build": "backstage-cli script build", - "start": "backstage-cli script start", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", + "build": "backstage-cli package build", + "start": "backstage-cli package start", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/catalog-model": "^0.9.10", diff --git a/plugins/pagerduty/package.json b/plugins/pagerduty/package.json index 8ba97477dc..2c9e0bc79d 100644 --- a/plugins/pagerduty/package.json +++ b/plugins/pagerduty/package.json @@ -24,14 +24,14 @@ "pagerduty" ], "scripts": { - "build": "backstage-cli script build", - "start": "backstage-cli script start", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", + "build": "backstage-cli package build", + "start": "backstage-cli package start", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/catalog-model": "^0.9.10", diff --git a/plugins/permission-backend/package.json b/plugins/permission-backend/package.json index d8ba786979..6b7817f10b 100644 --- a/plugins/permission-backend/package.json +++ b/plugins/permission-backend/package.json @@ -13,13 +13,13 @@ "role": "backend-plugin" }, "scripts": { - "start": "backstage-cli script start", - "build": "backstage-cli script build", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "start": "backstage-cli package start", + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/backend-common": "^0.10.7", diff --git a/plugins/permission-common/package.json b/plugins/permission-common/package.json index 350810fe2b..a3d099d1a8 100644 --- a/plugins/permission-common/package.json +++ b/plugins/permission-common/package.json @@ -30,12 +30,12 @@ ], "configSchema": "config.d.ts", "scripts": { - "build": "backstage-cli script build", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "bugs": { "url": "https://github.com/backstage/backstage/issues" diff --git a/plugins/permission-node/package.json b/plugins/permission-node/package.json index 902ea01138..1c3e711dfc 100644 --- a/plugins/permission-node/package.json +++ b/plugins/permission-node/package.json @@ -24,13 +24,13 @@ "permissions" ], "scripts": { - "build": "backstage-cli script build", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean", - "start": "backstage-cli script start" + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean", + "start": "backstage-cli package start" }, "dependencies": { "@backstage/backend-common": "^0.10.7", diff --git a/plugins/permission-react/package.json b/plugins/permission-react/package.json index 3a56ccafe6..b62a681c06 100644 --- a/plugins/permission-react/package.json +++ b/plugins/permission-react/package.json @@ -22,13 +22,13 @@ "backstage" ], "scripts": { - "build": "backstage-cli script build", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean", - "start": "backstage-cli script start" + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean", + "start": "backstage-cli package start" }, "dependencies": { "@backstage/config": "^0.1.13", diff --git a/plugins/proxy-backend/package.json b/plugins/proxy-backend/package.json index 8585c600e6..5b2e9a5713 100644 --- a/plugins/proxy-backend/package.json +++ b/plugins/proxy-backend/package.json @@ -23,13 +23,13 @@ "backstage" ], "scripts": { - "start": "backstage-cli script start", - "build": "backstage-cli script build", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "start": "backstage-cli package start", + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/backend-common": "^0.10.7", diff --git a/plugins/rollbar-backend/package.json b/plugins/rollbar-backend/package.json index 247ccd4513..bd2c548a3c 100644 --- a/plugins/rollbar-backend/package.json +++ b/plugins/rollbar-backend/package.json @@ -25,13 +25,13 @@ "rollbar" ], "scripts": { - "start": "backstage-cli script start", - "build": "backstage-cli script build", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "start": "backstage-cli package start", + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/backend-common": "^0.10.7", diff --git a/plugins/rollbar/package.json b/plugins/rollbar/package.json index 2da664a70e..764a4dc036 100644 --- a/plugins/rollbar/package.json +++ b/plugins/rollbar/package.json @@ -25,14 +25,14 @@ "rollbar" ], "scripts": { - "build": "backstage-cli script build", - "start": "backstage-cli script start", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", + "build": "backstage-cli package build", + "start": "backstage-cli package start", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/catalog-model": "^0.9.10", diff --git a/plugins/scaffolder-backend-module-cookiecutter/package.json b/plugins/scaffolder-backend-module-cookiecutter/package.json index 42478fc07e..e3386ee7a4 100644 --- a/plugins/scaffolder-backend-module-cookiecutter/package.json +++ b/plugins/scaffolder-backend-module-cookiecutter/package.json @@ -14,13 +14,13 @@ "role": "backend-plugin-module" }, "scripts": { - "start": "backstage-cli script start", - "build": "backstage-cli script build", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "start": "backstage-cli package start", + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/backend-common": "^0.10.7", diff --git a/plugins/scaffolder-backend-module-rails/package.json b/plugins/scaffolder-backend-module-rails/package.json index e1512bcaee..edf8c1cc84 100644 --- a/plugins/scaffolder-backend-module-rails/package.json +++ b/plugins/scaffolder-backend-module-rails/package.json @@ -15,13 +15,13 @@ "role": "backend-plugin-module" }, "scripts": { - "build": "backstage-cli script build", - "start": "backstage-cli script start", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "build": "backstage-cli package build", + "start": "backstage-cli package start", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/backend-common": "^0.10.7", diff --git a/plugins/scaffolder-backend-module-yeoman/package.json b/plugins/scaffolder-backend-module-yeoman/package.json index f5c0fdda66..5a82f2df32 100644 --- a/plugins/scaffolder-backend-module-yeoman/package.json +++ b/plugins/scaffolder-backend-module-yeoman/package.json @@ -14,13 +14,13 @@ "role": "backend-plugin-module" }, "scripts": { - "start": "backstage-cli script start", - "build": "backstage-cli script build", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "start": "backstage-cli package start", + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/config": "^0.1.13", diff --git a/plugins/scaffolder-backend/package.json b/plugins/scaffolder-backend/package.json index 9085c6db10..ff2063bfca 100644 --- a/plugins/scaffolder-backend/package.json +++ b/plugins/scaffolder-backend/package.json @@ -24,13 +24,13 @@ "backstage" ], "scripts": { - "start": "backstage-cli script start", - "build": "backstage-cli script build", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean", + "start": "backstage-cli package start", + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean", "build:assets": "node scripts/build-nunjucks.js" }, "dependencies": { diff --git a/plugins/scaffolder-common/package.json b/plugins/scaffolder-common/package.json index 909807c665..92e54d87f5 100644 --- a/plugins/scaffolder-common/package.json +++ b/plugins/scaffolder-common/package.json @@ -28,12 +28,12 @@ "dist" ], "scripts": { - "build": "backstage-cli script build", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "bugs": { "url": "https://github.com/backstage/backstage/issues" diff --git a/plugins/scaffolder/package.json b/plugins/scaffolder/package.json index 350d8ff267..1c9baafd48 100644 --- a/plugins/scaffolder/package.json +++ b/plugins/scaffolder/package.json @@ -24,14 +24,14 @@ "backstage" ], "scripts": { - "build": "backstage-cli script build", - "start": "backstage-cli script start", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", + "build": "backstage-cli package build", + "start": "backstage-cli package start", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/catalog-client": "^0.6.0", diff --git a/plugins/search-backend-module-elasticsearch/package.json b/plugins/search-backend-module-elasticsearch/package.json index 97007c3998..51df462b8a 100644 --- a/plugins/search-backend-module-elasticsearch/package.json +++ b/plugins/search-backend-module-elasticsearch/package.json @@ -14,13 +14,13 @@ "role": "backend-plugin-module" }, "scripts": { - "start": "backstage-cli script start", - "build": "backstage-cli script build", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "start": "backstage-cli package start", + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/config": "^0.1.13", diff --git a/plugins/search-backend-module-pg/package.json b/plugins/search-backend-module-pg/package.json index c1e37aa4ce..979d60a9bc 100644 --- a/plugins/search-backend-module-pg/package.json +++ b/plugins/search-backend-module-pg/package.json @@ -14,13 +14,13 @@ "role": "backend-plugin-module" }, "scripts": { - "start": "backstage-cli script start", - "build": "backstage-cli script build", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "start": "backstage-cli package start", + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/backend-common": "^0.10.7", diff --git a/plugins/search-backend-node/package.json b/plugins/search-backend-node/package.json index 8598d1befe..eaa1e171cf 100644 --- a/plugins/search-backend-node/package.json +++ b/plugins/search-backend-node/package.json @@ -14,13 +14,13 @@ "role": "node-library" }, "scripts": { - "start": "backstage-cli script start", - "build": "backstage-cli script build", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "start": "backstage-cli package start", + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/search-common": "^0.2.2", diff --git a/plugins/search-backend/package.json b/plugins/search-backend/package.json index 00dad48f70..db91541ccd 100644 --- a/plugins/search-backend/package.json +++ b/plugins/search-backend/package.json @@ -14,13 +14,13 @@ "role": "backend-plugin" }, "scripts": { - "start": "backstage-cli script start", - "build": "backstage-cli script build", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "start": "backstage-cli package start", + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/backend-common": "^0.10.7", diff --git a/plugins/search/package.json b/plugins/search/package.json index 1c03faa5f9..8832d41332 100644 --- a/plugins/search/package.json +++ b/plugins/search/package.json @@ -23,14 +23,14 @@ "backstage" ], "scripts": { - "build": "backstage-cli script build", - "start": "backstage-cli script start", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", + "build": "backstage-cli package build", + "start": "backstage-cli package start", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/catalog-model": "^0.9.10", diff --git a/plugins/sentry/package.json b/plugins/sentry/package.json index b833c1b235..f87f140cb4 100644 --- a/plugins/sentry/package.json +++ b/plugins/sentry/package.json @@ -25,14 +25,14 @@ "sentry" ], "scripts": { - "build": "backstage-cli script build", - "start": "backstage-cli script start", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", + "build": "backstage-cli package build", + "start": "backstage-cli package start", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/catalog-model": "^0.9.10", diff --git a/plugins/shortcuts/package.json b/plugins/shortcuts/package.json index 4f250e668e..43a5da6efb 100644 --- a/plugins/shortcuts/package.json +++ b/plugins/shortcuts/package.json @@ -14,14 +14,14 @@ "role": "frontend-plugin" }, "scripts": { - "build": "backstage-cli script build", - "start": "backstage-cli script start", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", + "build": "backstage-cli package build", + "start": "backstage-cli package start", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/core-components": "^0.8.8", diff --git a/plugins/sonarqube/package.json b/plugins/sonarqube/package.json index a61e721fef..40863c7cbd 100644 --- a/plugins/sonarqube/package.json +++ b/plugins/sonarqube/package.json @@ -26,14 +26,14 @@ "sonarcloud" ], "scripts": { - "build": "backstage-cli script build", - "start": "backstage-cli script start", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", + "build": "backstage-cli package build", + "start": "backstage-cli package start", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/catalog-model": "^0.9.10", diff --git a/plugins/splunk-on-call/package.json b/plugins/splunk-on-call/package.json index 23b345390c..fe0e050209 100644 --- a/plugins/splunk-on-call/package.json +++ b/plugins/splunk-on-call/package.json @@ -24,14 +24,14 @@ "splunk-on-call" ], "scripts": { - "build": "backstage-cli script build", - "start": "backstage-cli script start", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", + "build": "backstage-cli package build", + "start": "backstage-cli package start", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/catalog-model": "^0.9.10", diff --git a/plugins/tech-insights-backend-module-jsonfc/package.json b/plugins/tech-insights-backend-module-jsonfc/package.json index c446d745d1..9dfa01769a 100644 --- a/plugins/tech-insights-backend-module-jsonfc/package.json +++ b/plugins/tech-insights-backend-module-jsonfc/package.json @@ -25,13 +25,13 @@ "scorecard" ], "scripts": { - "start": "backstage-cli script start", - "build": "backstage-cli script build", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "start": "backstage-cli package start", + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/backend-common": "^0.10.7", diff --git a/plugins/tech-insights-backend/package.json b/plugins/tech-insights-backend/package.json index d7f0e80963..96f253519e 100644 --- a/plugins/tech-insights-backend/package.json +++ b/plugins/tech-insights-backend/package.json @@ -25,13 +25,13 @@ "reporting" ], "scripts": { - "start": "backstage-cli script start", - "build": "backstage-cli script build", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "start": "backstage-cli package start", + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/backend-common": "^0.10.7", diff --git a/plugins/tech-insights-common/package.json b/plugins/tech-insights-common/package.json index b7c02e979a..35e0c956e3 100644 --- a/plugins/tech-insights-common/package.json +++ b/plugins/tech-insights-common/package.json @@ -25,12 +25,12 @@ ], "scripts": { "start": "backstage-cli backend:dev", - "build": "backstage-cli script build", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@types/luxon": "^2.0.5", diff --git a/plugins/tech-insights-node/package.json b/plugins/tech-insights-node/package.json index c439231e02..4290d2fc1b 100644 --- a/plugins/tech-insights-node/package.json +++ b/plugins/tech-insights-node/package.json @@ -24,13 +24,13 @@ "tech-insights" ], "scripts": { - "start": "backstage-cli script start", - "build": "backstage-cli script build", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "start": "backstage-cli package start", + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/backend-common": "^0.10.7", diff --git a/plugins/tech-insights/package.json b/plugins/tech-insights/package.json index 194d2141a2..d364fa3b40 100644 --- a/plugins/tech-insights/package.json +++ b/plugins/tech-insights/package.json @@ -13,14 +13,14 @@ "role": "frontend-plugin" }, "scripts": { - "build": "backstage-cli script build", - "start": "backstage-cli script start", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", + "build": "backstage-cli package build", + "start": "backstage-cli package start", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/catalog-model": "^0.9.10", diff --git a/plugins/tech-radar/package.json b/plugins/tech-radar/package.json index 8e7dfc2b13..590c5cbd78 100644 --- a/plugins/tech-radar/package.json +++ b/plugins/tech-radar/package.json @@ -24,14 +24,14 @@ "backstage" ], "scripts": { - "build": "backstage-cli script build", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean", - "start": "backstage-cli script start" + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean", + "start": "backstage-cli package start" }, "dependencies": { "@backstage/core-components": "^0.8.8", diff --git a/plugins/techdocs-backend/package.json b/plugins/techdocs-backend/package.json index 981bc4d93d..27d2a952d9 100644 --- a/plugins/techdocs-backend/package.json +++ b/plugins/techdocs-backend/package.json @@ -25,13 +25,13 @@ "techdocs" ], "scripts": { - "start": "backstage-cli script start", - "build": "backstage-cli script build", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "start": "backstage-cli package start", + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/backend-common": "^0.10.7", diff --git a/plugins/techdocs/package.json b/plugins/techdocs/package.json index 917cff9c39..6e8594a33b 100644 --- a/plugins/techdocs/package.json +++ b/plugins/techdocs/package.json @@ -25,14 +25,14 @@ "techdocs" ], "scripts": { - "build": "backstage-cli script build", - "start": "backstage-cli script start", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", + "build": "backstage-cli package build", + "start": "backstage-cli package start", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/catalog-model": "^0.9.10", diff --git a/plugins/todo-backend/package.json b/plugins/todo-backend/package.json index 7572522090..90fcee6e55 100644 --- a/plugins/todo-backend/package.json +++ b/plugins/todo-backend/package.json @@ -20,13 +20,13 @@ "directory": "plugins/todo-backend" }, "scripts": { - "build": "backstage-cli script build", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean", - "start": "backstage-cli script start" + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean", + "start": "backstage-cli package start" }, "dependencies": { "@backstage/backend-common": "^0.10.7", diff --git a/plugins/todo/package.json b/plugins/todo/package.json index ad17d1ca51..274ada538f 100644 --- a/plugins/todo/package.json +++ b/plugins/todo/package.json @@ -20,14 +20,14 @@ "directory": "plugins/todo" }, "scripts": { - "build": "backstage-cli script build", - "start": "backstage-cli script start", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", + "build": "backstage-cli package build", + "start": "backstage-cli package start", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/catalog-model": "^0.9.10", diff --git a/plugins/user-settings/package.json b/plugins/user-settings/package.json index a5521cd8e9..ad8fa2142d 100644 --- a/plugins/user-settings/package.json +++ b/plugins/user-settings/package.json @@ -24,14 +24,14 @@ "backstage" ], "scripts": { - "build": "backstage-cli script build", - "start": "backstage-cli script start", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", + "build": "backstage-cli package build", + "start": "backstage-cli package start", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/core-components": "^0.8.8", diff --git a/plugins/xcmetrics/package.json b/plugins/xcmetrics/package.json index a547c752c3..e9cf5d80ea 100644 --- a/plugins/xcmetrics/package.json +++ b/plugins/xcmetrics/package.json @@ -14,14 +14,14 @@ "role": "frontend-plugin" }, "scripts": { - "build": "backstage-cli script build", - "start": "backstage-cli script start", - "lint": "backstage-cli script lint", - "test": "backstage-cli script test", + "build": "backstage-cli package build", + "start": "backstage-cli package start", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli script prepack", - "postpack": "backstage-cli script postpack", - "clean": "backstage-cli script clean" + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/core-components": "^0.8.8", From 0576463f0d335b77e50e11f3e8b4b5bef81d9a48 Mon Sep 17 00:00:00 2001 From: kim5566 <28945404+kim5566@users.noreply.github.com> Date: Wed, 16 Feb 2022 13:02:43 +1100 Subject: [PATCH 098/383] filter folders from app-config file Signed-off-by: kim5566 <28945404+kim5566@users.noreply.github.com> --- .../src/lib/TodoReader/TodoScmReader.test.ts | 61 +++++++++++++++++++ .../src/lib/TodoReader/TodoScmReader.ts | 18 +++++- yarn.lock | 6 +- 3 files changed, 80 insertions(+), 5 deletions(-) diff --git a/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.test.ts b/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.test.ts index 9675a285e0..5693c37783 100644 --- a/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.test.ts +++ b/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.test.ts @@ -189,4 +189,65 @@ describe('TodoScmReader', () => { 'Failed to parse TODO in https://github.com/o/r/catalog-info.yaml at my-file.sh, Error: failed to parse', ); }); + + it('should filter out exclude folders', async () => { + const reader = mockReader(); + const excludeFolders = ['vendor/']; + const todoReader = new TodoScmReader({ + logger: getVoidLogger(), + reader, + integrations: ScmIntegrations.fromConfig(new ConfigReader({})), + excludeFolders: excludeFolders, + }); + reader.readTree.mockResolvedValueOnce({ + files: async () => [ + { + content: async () => Buffer.from('// TODO: my-todo', 'utf8'), + path: 'vendor/another-file.go', + }, + { + content: async () => Buffer.from('// TODO: my-todo', 'utf8'), + path: 'my-folder/my-file.js', + }, + ], + } as ReadTreeResponse); + await expect( + todoReader.readTodos({ + url: 'https://github.com/backstage/backstage/catalog-info.yaml', + }), + ).resolves.toEqual({ + items: [ + { + text: 'my-todo', + tag: 'TODO', + lineNumber: 1, + repoFilePath: 'vendor/another-file.go', + viewUrl: + 'https://github.com/backstage/backstage/vendor/another-file.go#L1', + }, + { + text: 'my-todo', + tag: 'TODO', + lineNumber: 1, + repoFilePath: 'my-folder/my-file.js', + viewUrl: + 'https://github.com/backstage/backstage/my-folder/my-file.js#L1', + }, + ], + }); + expect(reader.readTree).toHaveBeenCalledTimes(1); + expect(reader.readTree).toHaveBeenCalledWith( + 'https://github.com/backstage/backstage/catalog-info.yaml', + { + etag: undefined, + filter: expect.any(Function), + }, + ); + // Filter function should filter out exclude folders + const filterFunc = reader.readTree.mock.calls[0][1]!.filter!; + expect(filterFunc('another-file.go')).toBe(true); + expect(filterFunc('vendor/another-file.go')).toBe(false); + expect(filterFunc('my-file.js')).toBe(true); + expect(filterFunc('my-folder/my-file.js')).toBe(true); + }); }); diff --git a/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.ts b/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.ts index 19890a8d23..f7cdba2d91 100644 --- a/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.ts +++ b/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.ts @@ -47,6 +47,7 @@ export type TodoScmReaderOptions = { reader: UrlReader; integrations: ScmIntegrations; parser?: TodoParser; + excludeFolders?: string[]; }; type CacheItem = { @@ -60,6 +61,7 @@ export class TodoScmReader implements TodoReader { private readonly reader: UrlReader; private readonly parser: TodoParser; private readonly integrations: ScmIntegrations; + private readonly excludeFolders: string[]; private readonly cache = new Map(); private readonly inFlightReads = new Map>(); @@ -68,8 +70,11 @@ export class TodoScmReader implements TodoReader { config: Config, options: Omit, ) { + const excludeFolders: string[] = + config.getOptionalStringArray('todo.excludeFolders') ?? []; return new TodoScmReader({ ...options, + excludeFolders, integrations: ScmIntegrations.fromConfig(config), }); } @@ -79,6 +84,7 @@ export class TodoScmReader implements TodoReader { this.reader = options.reader; this.parser = options.parser ?? createTodoParser(); this.integrations = options.integrations; + this.excludeFolders = options.excludeFolders ?? []; } async readTodos(options: ReadTodosOptions): Promise { @@ -89,7 +95,12 @@ export class TodoScmReader implements TodoReader { } const cacheItem = this.cache.get(url); - const newRead = this.doReadTodos({ url }, cacheItem?.etag).catch(error => { + const excludeFolders = this.excludeFolders; + const newRead = this.doReadTodos( + { url }, + excludeFolders, + cacheItem?.etag, + ).catch(error => { if (cacheItem && error.name === 'NotModifiedError') { return cacheItem; } @@ -108,6 +119,7 @@ export class TodoScmReader implements TodoReader { private async doReadTodos( options: ReadTodosOptions, + excludeFolders?: string[], etag?: string, ): Promise { const { url } = options; @@ -118,10 +130,12 @@ export class TodoScmReader implements TodoReader { if (info && info.size > MAX_FILE_SIZE) { return false; } + const excFolders = excludeFolders ?? []; return ( !filePath.startsWith('.') && !filePath.includes('/.') && - !excludedExtensions.includes(extname) + !excludedExtensions.includes(extname) && + !excFolders.some(exclude => filePath.startsWith(exclude)) ); }, }); diff --git a/yarn.lock b/yarn.lock index 90a6ef9c24..c124a60ca3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -15740,9 +15740,9 @@ kleur@^4.0.3: integrity sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA== knex@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/knex/-/knex-1.0.2.tgz#1b79273f39f587a631c1a5515482c203d5971781" - integrity sha512-RuDKTylj6X/3nYomnsFV8sOdxTcehLHczOd3yrUdULE4pQR8jVlZxYt3vvIU04otJF0Cw9DCtRt05S4PN4kDpw== + version "1.0.3" + resolved "https://registry.npmjs.org/knex/-/knex-1.0.3.tgz#a5f97aa98e5e036cfd0209a90d53b2a411280e84" + integrity sha512-rY1T7cgTQGHAUD9TshMka37bd+SEK+koPXXvZQEIoE8yjJ/E8ShsenaAmr3oaNNzqXuKD/SC0qlYtp7Js8tAXA== dependencies: colorette "2.0.16" commander "^8.3.0" From be9e010da0047eb2c236bb410aec6ab67854f47b Mon Sep 17 00:00:00 2001 From: kim5566 <28945404+kim5566@users.noreply.github.com> Date: Wed, 16 Feb 2022 13:10:19 +1100 Subject: [PATCH 099/383] add changeset Signed-off-by: kim5566 <28945404+kim5566@users.noreply.github.com> --- .changeset/mean-pumpkins-search.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 .changeset/mean-pumpkins-search.md diff --git a/.changeset/mean-pumpkins-search.md b/.changeset/mean-pumpkins-search.md new file mode 100644 index 0000000000..36f06661b1 --- /dev/null +++ b/.changeset/mean-pumpkins-search.md @@ -0,0 +1,12 @@ +--- +'@backstage/plugin-todo-backend': patch +--- + +Add support to exclude certain folders in `todo` plugin. + +To add excluded folders, edit `app-config.yaml` as follow: + +``` +todo: + excludeFolders: ['vendor/'] +``` From 252fed10e30fe57c7140427a73f5f50d5883f2c7 Mon Sep 17 00:00:00 2001 From: kim5566 <28945404+kim5566@users.noreply.github.com> Date: Wed, 16 Feb 2022 14:13:15 +1100 Subject: [PATCH 100/383] add api-report.md Signed-off-by: kim5566 <28945404+kim5566@users.noreply.github.com> --- plugins/todo-backend/api-report.md | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/todo-backend/api-report.md b/plugins/todo-backend/api-report.md index ac8b2ce957..602a6b4a87 100644 --- a/plugins/todo-backend/api-report.md +++ b/plugins/todo-backend/api-report.md @@ -131,6 +131,7 @@ export type TodoScmReaderOptions = { reader: UrlReader; integrations: ScmIntegrations; parser?: TodoParser; + excludeFolders?: string[]; }; // @public (undocumented) From 548550685ebd02e29f4c30bbc59a857d370d58c6 Mon Sep 17 00:00:00 2001 From: Brian Fletcher Date: Wed, 16 Feb 2022 06:59:52 +0000 Subject: [PATCH 101/383] remove react-use from core-plugin-api It does not appear to be used here. Signed-off-by: Brian Fletcher --- packages/core-plugin-api/package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/core-plugin-api/package.json b/packages/core-plugin-api/package.json index c9f110b432..47d880b974 100644 --- a/packages/core-plugin-api/package.json +++ b/packages/core-plugin-api/package.json @@ -35,7 +35,6 @@ "history": "^5.0.0", "prop-types": "^15.7.2", "react-router-dom": "6.0.0-beta.0", - "react-use": "^17.2.4", "zen-observable": "^0.8.15" }, "peerDependencies": { From 2dc67b70e50b76606ea91a3a6bb0a50469f249cc Mon Sep 17 00:00:00 2001 From: Eugene Malihins Date: Tue, 15 Feb 2022 15:19:59 +0200 Subject: [PATCH 102/383] remove duplicate ingress.class annotation `kubernetes.io/ingress.class` annotation is already rendered on line 23 from `.Values.ingress.annotations`. This removes the duplicate, allowing Flux to deploy the chart (https://github.com/fluxcd/flux2/issues/1522) Signed-off-by: Eugene Malihins --- contrib/chart/backstage/templates/ingress.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/contrib/chart/backstage/templates/ingress.yaml b/contrib/chart/backstage/templates/ingress.yaml index 3fa052485e..cac9b61553 100644 --- a/contrib/chart/backstage/templates/ingress.yaml +++ b/contrib/chart/backstage/templates/ingress.yaml @@ -15,7 +15,6 @@ metadata: {{- if .Values.issuer.email }} cert-manager.io/cluster-issuer: {{ .Values.issuer.clusterIssuer }} {{- end }} - kubernetes.io/ingress.class: nginx nginx.ingress.kubernetes.io/ssl-redirect: "false" nginx.ingress.kubernetes.io/configuration-snippet: | if ($scheme = https) { From 8fa3bba4a4244c0121c26d9e579caf8fe839f718 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 16 Feb 2022 08:40:07 +0000 Subject: [PATCH 103/383] chore(deps): bump rollup from 2.60.2 to 2.67.2 Bumps [rollup](https://github.com/rollup/rollup) from 2.60.2 to 2.67.2. - [Release notes](https://github.com/rollup/rollup/releases) - [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md) - [Commits](https://github.com/rollup/rollup/compare/v2.60.2...v2.67.2) --- updated-dependencies: - dependency-name: rollup dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index bba13cbc54..1ba67c9a51 100644 --- a/yarn.lock +++ b/yarn.lock @@ -21437,9 +21437,9 @@ rollup@^0.63.4: "@types/node" "*" rollup@^2.60.2: - version "2.60.2" - resolved "https://registry.npmjs.org/rollup/-/rollup-2.60.2.tgz#3f45ace36a9b10b4297181831ea0719922513463" - integrity sha512-1Bgjpq61sPjgoZzuiDSGvbI1tD91giZABgjCQBKM5aYLnzjq52GoDuWVwT/cm/MCxCMPU8gqQvkj8doQ5C8Oqw== + version "2.67.2" + resolved "https://registry.npmjs.org/rollup/-/rollup-2.67.2.tgz#d95e15f60932ad21e05a870bd0aa0b235d056f04" + integrity sha512-hoEiBWwZtf1QdK3jZIq59L0FJj4Fiv4RplCO4pvCRC86qsoFurWB4hKQIjoRf3WvJmk5UZ9b0y5ton+62fC7Tw== optionalDependencies: fsevents "~2.3.2" From 7063b7055dc41dd9cad2c9c73887fd40dfc3ca5f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 16 Feb 2022 08:43:03 +0000 Subject: [PATCH 104/383] chore(deps): bump cronstrue from 1.123.0 to 1.125.0 Bumps [cronstrue](https://github.com/bradymholt/cronstrue) from 1.123.0 to 1.125.0. - [Release notes](https://github.com/bradymholt/cronstrue/releases) - [Commits](https://github.com/bradymholt/cronstrue/compare/v1.123.0...v1.125.0) --- updated-dependencies: - dependency-name: cronstrue dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index bba13cbc54..5e0e0db07c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9376,9 +9376,9 @@ create-require@^1.1.0: integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== cronstrue@^1.122.0: - version "1.123.0" - resolved "https://registry.npmjs.org/cronstrue/-/cronstrue-1.123.0.tgz#de622dd8ea07981790f488d3f89a25e6e728ac8b" - integrity sha512-hVu9yNYRYr+jj5KET1p7FaBxFwtCHM1ByffP9lZ6yJ6p53u4VEmzH8117v9PUydxWNzc8Eq+sCZEzsKcB3ckiA== + version "1.125.0" + resolved "https://registry.npmjs.org/cronstrue/-/cronstrue-1.125.0.tgz#8030816d033d00caade9b2a9f9b71e69175bcf42" + integrity sha512-qkC5mVbVGuuyBVXmam5anaRtbLcgfBUKajoyZqCdf/XBdgF43PsLSEm8eEi2dsI3YbqDPbLSH2mWNzM1dVqHgQ== cross-env@^7.0.0: version "7.0.3" From 126074a04bb0d44a93f82ee873d5f3f4a1e66112 Mon Sep 17 00:00:00 2001 From: Brian Fletcher Date: Wed, 16 Feb 2022 07:25:46 +0000 Subject: [PATCH 105/383] ports core-components to react-hookz.. ..as far as possible. There are a couple of hooks that have not been implemented in react-hookz. - useWindowSize, useCopyToClipboard, useObservable I have not changed these. I am not very familiar with the debounce pattern so I hope I have ported that correctly. Signed-off-by: Brian Fletcher --- .changeset/silver-beds-wonder.md | 5 +++++ packages/core-components/package.json | 3 ++- .../components/LogViewer/useLogViewerSearch.tsx | 2 +- .../components/OverflowTooltip/OverflowTooltip.tsx | 4 ++-- .../src/hooks/useQueryParamState.ts | 6 +++--- .../layout/ProxiedSignInPage/ProxiedSignInPage.tsx | 10 ++++++---- .../core-components/src/layout/Sidebar/Intro.tsx | 4 ++-- .../src/layout/SignInPage/SignInPage.tsx | 4 ++-- yarn.lock | 14 +++++++++++++- 9 files changed, 36 insertions(+), 16 deletions(-) create mode 100644 .changeset/silver-beds-wonder.md diff --git a/.changeset/silver-beds-wonder.md b/.changeset/silver-beds-wonder.md new file mode 100644 index 0000000000..73ce3f9567 --- /dev/null +++ b/.changeset/silver-beds-wonder.md @@ -0,0 +1,5 @@ +--- +'@backstage/core-components': patch +--- + +Port supported react-use functions to react-hookz. diff --git a/packages/core-components/package.json b/packages/core-components/package.json index ecb910c50b..5406d55d52 100644 --- a/packages/core-components/package.json +++ b/packages/core-components/package.json @@ -60,7 +60,8 @@ "react-sparklines": "^1.7.0", "react-syntax-highlighter": "^15.4.5", "react-text-truncate": "^0.17.0", - "react-use": "^17.2.4", + "react-use": "^17.3.2", + "@react-hookz/web": "^12.3.0", "react-virtualized-auto-sizer": "^1.0.6", "react-window": "^1.8.6", "remark-gfm": "^3.0.1", diff --git a/packages/core-components/src/components/LogViewer/useLogViewerSearch.tsx b/packages/core-components/src/components/LogViewer/useLogViewerSearch.tsx index 7f0069bc44..14f71984f4 100644 --- a/packages/core-components/src/components/LogViewer/useLogViewerSearch.tsx +++ b/packages/core-components/src/components/LogViewer/useLogViewerSearch.tsx @@ -15,7 +15,7 @@ */ import { useMemo, useState } from 'react'; -import useToggle from 'react-use/lib/useToggle'; +import { useToggle } from '@react-hookz/web'; import { AnsiLine } from './AnsiProcessor'; export function applySearchFilter(lines: AnsiLine[], searchText: string) { diff --git a/packages/core-components/src/components/OverflowTooltip/OverflowTooltip.tsx b/packages/core-components/src/components/OverflowTooltip/OverflowTooltip.tsx index 69952d487a..da489725e4 100644 --- a/packages/core-components/src/components/OverflowTooltip/OverflowTooltip.tsx +++ b/packages/core-components/src/components/OverflowTooltip/OverflowTooltip.tsx @@ -18,7 +18,7 @@ import { makeStyles } from '@material-ui/core/styles'; import Tooltip, { TooltipProps } from '@material-ui/core/Tooltip'; import React, { useState } from 'react'; import TextTruncate, { TextTruncateProps } from 'react-text-truncate'; -import useMountedState from 'react-use/lib/useMountedState'; +import { useIsMounted } from '@react-hookz/web'; type Props = { text: TextTruncateProps['text']; @@ -41,7 +41,7 @@ const useStyles = makeStyles( export function OverflowTooltip(props: Props) { const [hover, setHover] = useState(false); - const isMounted = useMountedState(); + const isMounted = useIsMounted(); const classes = useStyles(); const handleToggled = (truncated: boolean) => { diff --git a/packages/core-components/src/hooks/useQueryParamState.ts b/packages/core-components/src/hooks/useQueryParamState.ts index 72ccafd99f..a5a90bdd53 100644 --- a/packages/core-components/src/hooks/useQueryParamState.ts +++ b/packages/core-components/src/hooks/useQueryParamState.ts @@ -18,7 +18,7 @@ import { isEqual } from 'lodash'; import qs from 'qs'; import { useEffect, useState } from 'react'; import { useSearchParams } from 'react-router-dom'; -import useDebounce from 'react-use/lib/useDebounce'; +import { useDebouncedCallback } from '@react-hookz/web'; function stringify(queryParams: any): string { // Even though these setting don't look nice (e.g. escaped brackets), we should keep @@ -75,7 +75,7 @@ export function useQueryParamState( ); }, [searchParamsString, setQueryParamState, stateName]); - useDebounce( + useDebouncedCallback( () => { const queryString = joinQueryString( searchParamsString, @@ -87,8 +87,8 @@ export function useQueryParamState( setSearchParams(queryString, { replace: true }); } }, - debounceTime, [setSearchParams, queryParamState, searchParamsString, stateName], + debounceTime, ); return [queryParamState, setQueryParamState]; diff --git a/packages/core-components/src/layout/ProxiedSignInPage/ProxiedSignInPage.tsx b/packages/core-components/src/layout/ProxiedSignInPage/ProxiedSignInPage.tsx index adcd6ced8f..13a61d259f 100644 --- a/packages/core-components/src/layout/ProxiedSignInPage/ProxiedSignInPage.tsx +++ b/packages/core-components/src/layout/ProxiedSignInPage/ProxiedSignInPage.tsx @@ -20,7 +20,7 @@ import { useApi, } from '@backstage/core-plugin-api'; import React from 'react'; -import useAsync from 'react-use/lib/useAsync'; +import { useAsync, useMountEffect } from '@react-hookz/web'; import { ErrorPanel } from '../../components/ErrorPanel'; import { Progress } from '../../components/Progress'; import { ProxiedSignInIdentity } from './ProxiedSignInIdentity'; @@ -56,7 +56,7 @@ export type ProxiedSignInPageProps = SignInPageProps & { export const ProxiedSignInPage = (props: ProxiedSignInPageProps) => { const discoveryApi = useApi(discoveryApiRef); - const { loading, error } = useAsync(async () => { + const [{ status, error }, { execute }] = useAsync(async () => { const identity = new ProxiedSignInIdentity({ provider: props.provider, discoveryApi, @@ -65,9 +65,11 @@ export const ProxiedSignInPage = (props: ProxiedSignInPageProps) => { await identity.start(); props.onSignInSuccess(identity); - }, []); + }); - if (loading) { + useMountEffect(execute); + + if (status === 'loading') { return ; } else if (error) { return ( diff --git a/packages/core-components/src/layout/Sidebar/Intro.tsx b/packages/core-components/src/layout/Sidebar/Intro.tsx index 7b2c5fa4d7..1fcc54188f 100644 --- a/packages/core-components/src/layout/Sidebar/Intro.tsx +++ b/packages/core-components/src/layout/Sidebar/Intro.tsx @@ -21,7 +21,7 @@ import { makeStyles } from '@material-ui/core/styles'; import Typography from '@material-ui/core/Typography'; import CloseIcon from '@material-ui/icons/Close'; import React, { useContext, useState } from 'react'; -import useLocalStorage from 'react-use/lib/useLocalStorage'; +import { useLocalStorageValue } from '@react-hookz/web'; import { sidebarConfig, SidebarContext, @@ -155,7 +155,7 @@ export function SidebarIntro(_props: {}) { recentlyViewedItemsDismissed: false, }; const [dismissedIntro, setDismissedIntro] = - useLocalStorage(SIDEBAR_INTRO_LOCAL_STORAGE); + useLocalStorageValue(SIDEBAR_INTRO_LOCAL_STORAGE); const { starredItemsDismissed, recentlyViewedItemsDismissed } = dismissedIntro ?? {}; diff --git a/packages/core-components/src/layout/SignInPage/SignInPage.tsx b/packages/core-components/src/layout/SignInPage/SignInPage.tsx index 2eac16cbf4..6092f2862f 100644 --- a/packages/core-components/src/layout/SignInPage/SignInPage.tsx +++ b/packages/core-components/src/layout/SignInPage/SignInPage.tsx @@ -25,7 +25,7 @@ import Button from '@material-ui/core/Button'; import Grid from '@material-ui/core/Grid'; import Typography from '@material-ui/core/Typography'; import React, { useState } from 'react'; -import useMount from 'react-use/lib/useMount'; +import { useMountEffect } from '@react-hookz/web'; import { Progress } from '../../components/Progress'; import { Content } from '../Content/Content'; import { ContentHeader } from '../ContentHeader/ContentHeader'; @@ -149,7 +149,7 @@ export const SingleSignInPage = ({ } }; - useMount(() => login({ checkExisting: true })); + useMountEffect(() => login({ checkExisting: true })); return showLoginPage ? ( diff --git a/yarn.lock b/yarn.lock index 90a6ef9c24..cc14124b9d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4362,6 +4362,18 @@ resolved "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" integrity sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA= +"@react-hookz/deep-equal@^1.0.1": + version "1.0.1" + resolved "https://registry.npmjs.org/@react-hookz/deep-equal/-/deep-equal-1.0.1.tgz#1e9aad97b964879b54a3909f36f0727befa13e1f" + integrity sha512-6k/pU2jNlgYvKOy84vpCAZ8MGVwybvAdjzrh4UicCVOCPxz0LSBws1OE6O5TO4sPHaSw+yLfNzNK8RicGFc1Kw== + +"@react-hookz/web@^12.3.0": + version "12.3.0" + resolved "https://registry.npmjs.org/@react-hookz/web/-/web-12.3.0.tgz#a9a1311a15171a57d68a3db61492f913d4fd455a" + integrity sha512-Uujp2RfX/oDEtAbdkV0W/nhiQ5ZYVH+MEq04T7/8TstyiwoIlvsRbEic6c6gQA6sQ/lw93cZ8NP8R7AYjiqDvg== + dependencies: + "@react-hookz/deep-equal" "^1.0.1" + "@rjsf/core@^3.2.1": version "3.2.1" resolved "https://registry.npmjs.org/@rjsf/core/-/core-3.2.1.tgz#8a7b24c9a6f01f0ecb093fdfc777172c12b1b009" @@ -20517,7 +20529,7 @@ react-use@^17.2.4: ts-easing "^0.2.0" tslib "^2.1.0" -react-use@^17.3.1: +react-use@^17.3.1, react-use@^17.3.2: version "17.3.2" resolved "https://registry.npmjs.org/react-use/-/react-use-17.3.2.tgz#448abf515f47c41c32455024db28167cb6e53be8" integrity sha512-bj7OD0/1wL03KyWmzFXAFe425zziuTf7q8olwCYBfOeFHY1qfO1FAMjROQLsLZYwG4Rx63xAfb7XAbBrJsZmEw== From 2714145cf5a8999f98b46471be19d5bbff263871 Mon Sep 17 00:00:00 2001 From: Brian Fletcher Date: Wed, 16 Feb 2022 09:02:45 +0000 Subject: [PATCH 106/383] Adds a changeset Signed-off-by: Brian Fletcher --- .changeset/strange-taxis-perform.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/strange-taxis-perform.md diff --git a/.changeset/strange-taxis-perform.md b/.changeset/strange-taxis-perform.md new file mode 100644 index 0000000000..d7b829fc34 --- /dev/null +++ b/.changeset/strange-taxis-perform.md @@ -0,0 +1,5 @@ +--- +'@backstage/core-plugin-api': patch +--- + +Removes unused react-use depdendency. From 2c5caf4e056a1a07e003bf737ca551ff8577884a Mon Sep 17 00:00:00 2001 From: Brian Fletcher Date: Wed, 16 Feb 2022 09:11:06 +0000 Subject: [PATCH 107/383] fixes typo in changeset Signed-off-by: Brian Fletcher --- .changeset/strange-taxis-perform.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/strange-taxis-perform.md b/.changeset/strange-taxis-perform.md index d7b829fc34..4d1ad18821 100644 --- a/.changeset/strange-taxis-perform.md +++ b/.changeset/strange-taxis-perform.md @@ -2,4 +2,4 @@ '@backstage/core-plugin-api': patch --- -Removes unused react-use depdendency. +Removes unused react-use dependency. From d0eb8aec8a19e2be725b11cb0005e3de4b6c0c0d Mon Sep 17 00:00:00 2001 From: Karan Shah Date: Wed, 16 Feb 2022 10:09:18 +0000 Subject: [PATCH 108/383] Initial README.md changes Signed-off-by: Karan Shah --- plugins/airbrake/README.md | 71 ++++++++++++++++++++++++++++++++++---- 1 file changed, 65 insertions(+), 6 deletions(-) diff --git a/plugins/airbrake/README.md b/plugins/airbrake/README.md index de041fb3ec..f81bb5a7e7 100644 --- a/plugins/airbrake/README.md +++ b/plugins/airbrake/README.md @@ -1,13 +1,72 @@ # Airbrake -Welcome to the Airbrake plugin! +The Airbrake plugin provides connectivity between Backstage and Airbrake (https://airbrake.io/). -This is a plugin providing connectivity between Backstage and Airbrake (https://airbrake.io/). +## How to use -_This plugin is currently not fit for use as it is work in progress_ +1. Install the Frontend plugin: + + ```bash + # From your Backstage root directory + cd packages/app + yarn add @backstage/plugin-airbrake + ``` + +2. Install the Backend plugin: + + ```bash + # From your Backstage root directory + cd packages/backend + yarn add @backstage/plugin-airbrake-backend + ``` + +3. Add the `EntityAirbrakeContent` to `packages/app/src/components/catalog/EntityPage.tsx`: + + ```typescript jsx + import { EntityAirbrakeContent } from '@backstage/plugin-airbrake'; + + const serviceEntityPage = ( + + + + + + ); + ``` + +4. Setup the Backend code in `packages/backend/src/index.ts`: + + ```typescript + import { + createRouter as createAirbrakeRouter, + extractAirbrakeConfig, + } from '@backstage/plugin-airbrake-backend'; + + async function main() { + //... After const config = await loadBackendConfig({ ... + + const airbrakeRouter = await createAirbrakeRouter({ + logger, + airbrakeConfig: extractAirbrakeConfig(config), + }); + + const service = createServiceBuilder(module) + // ... + .addRouter('/api/airbrake', airbrakeRouter); + } + ``` + +5. Add this config as a top level section in your `app-config.yaml`: + + ```yaml + airbrake: + apiKey: ${AIRBRAKE_API_KEY} + ``` + +6. Set an environment variable `AIRBRAKE_API_KEY` with your [API Key](https://airbrake.io/docs/api/#authentication) before starting Backstage backend. ## Getting started -You can serve the plugin in isolation by running `yarn start` in the plugin directory. -This method of serving the plugin provides quicker iteration speed and a faster startup and hot reloads. -It is only meant for local development, and the setup for it can be found inside the [/dev](./dev) directory. +You can serve the plugin in isolation by running `yarn start` in the plugin directory. This method of serving the plugin +provides quicker iteration speed and a faster startup and hot reloads. It is only meant for local development, and the +setup for it can be found inside the [/dev](./dev) directory. From 1208397ea62a18b2546311e1f20835d61498d93b Mon Sep 17 00:00:00 2001 From: Himanshu Mishra Date: Wed, 16 Feb 2022 12:33:35 +0100 Subject: [PATCH 109/383] Home page -> homepage for consistency Signed-off-by: Himanshu Mishra --- docs/getting-started/app-custom-theme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/getting-started/app-custom-theme.md b/docs/getting-started/app-custom-theme.md index 526150d184..34eca2429a 100644 --- a/docs/getting-started/app-custom-theme.md +++ b/docs/getting-started/app-custom-theme.md @@ -254,7 +254,7 @@ const LogoFull = () => { }; ``` -## Custom Home Page +## Custom Homepage In addition to a custom theme, a custom logo, you can also customize the homepage of your app. Read the full guide on the [next page](homepage.md). From d125e82723049c27cc5c55f0effa735e2ec94fb5 Mon Sep 17 00:00:00 2001 From: Jonathan Ash Date: Wed, 16 Feb 2022 11:36:16 +0000 Subject: [PATCH 110/383] Changed TechdocsReaderPage to use NotFoundErrorPage from createApp Signed-off-by: Jonathan Ash --- .../reader/components/TechDocsPage.test.tsx | 58 ------------------- .../src/reader/components/TechDocsPage.tsx | 16 ++--- 2 files changed, 5 insertions(+), 69 deletions(-) diff --git a/plugins/techdocs/src/reader/components/TechDocsPage.test.tsx b/plugins/techdocs/src/reader/components/TechDocsPage.test.tsx index 5dfa104a25..b297466a62 100644 --- a/plugins/techdocs/src/reader/components/TechDocsPage.test.tsx +++ b/plugins/techdocs/src/reader/components/TechDocsPage.test.tsx @@ -173,62 +173,4 @@ describe('', () => { expect(rendered.getByText('A custom header')).toBeInTheDocument(); }); }); - - it('should render a custom error page if supplied', async () => { - const CustomErrorPage = ({ errorMessage }: { errorMessage: string }) => ( -
{errorMessage}
- ); - - useParams.mockReturnValue({ - entityRef: 'Component::backstage', - }); - - const scmIntegrationsApi: ScmIntegrationsApi = - ScmIntegrationsApi.fromConfig( - new ConfigReader({ - integrations: {}, - }), - ); - const techdocsApi: Partial = { - getEntityMetadata: () => - Promise.reject({ - name: 'error', - message: 'error message', - }), - getTechDocsMetadata: () => - Promise.resolve({ - site_name: 'string', - site_description: 'string', - }), - }; - - const techdocsStorageApi: Partial = { - getEntityDocs: (): Promise => Promise.resolve('String'), - getBaseUrl: (): Promise => Promise.resolve('String'), - getApiOrigin: (): Promise => Promise.resolve('String'), - }; - const searchApi = { - query: () => - Promise.resolve({ - results: [], - }), - }; - const apiRegistry = TestApiRegistry.from( - [scmIntegrationsApiRef, scmIntegrationsApi], - [techdocsApiRef, techdocsApi], - [techdocsStorageApiRef, techdocsStorageApi], - [searchApiRef, searchApi], - ); - - await act(async () => { - const rendered = render( - wrapInTestApp( - - - , - ), - ); - expect(await rendered.findByText('error message')).toBeInTheDocument(); - }); - }); }); diff --git a/plugins/techdocs/src/reader/components/TechDocsPage.tsx b/plugins/techdocs/src/reader/components/TechDocsPage.tsx index 1fb75f8d76..c351f88f6e 100644 --- a/plugins/techdocs/src/reader/components/TechDocsPage.tsx +++ b/plugins/techdocs/src/reader/components/TechDocsPage.tsx @@ -14,16 +14,15 @@ * limitations under the License. */ -import React, { useCallback, useState, ComponentType } from 'react'; +import React, { useCallback, useState } from 'react'; import { useOutlet } from 'react-router'; import { useParams } from 'react-router-dom'; import useAsync from 'react-use/lib/useAsync'; import { techdocsApiRef } from '../../api'; -import { TechDocsNotFound } from './TechDocsNotFound'; import { LegacyTechDocsPage } from './LegacyTechDocsPage'; import { TechDocsEntityMetadata, TechDocsMetadata } from '../../types'; import { EntityName } from '@backstage/catalog-model'; -import { useApi } from '@backstage/core-plugin-api'; +import { useApi, useApp } from '@backstage/core-plugin-api'; import { Page } from '@backstage/core-components'; export type TechDocsPageRenderFunction = ({ @@ -39,13 +38,10 @@ export type TechDocsPageRenderFunction = ({ export type TechDocsPageProps = { children?: TechDocsPageRenderFunction | React.ReactNode; - NotFoundPage?: ComponentType<{errorMessage: string}> }; -export const TechDocsPage = ({ - children, - NotFoundPage = TechDocsNotFound, -}: TechDocsPageProps) => { +export const TechDocsPage = ({ children }: TechDocsPageProps) => { + const NotFoundErrorPage = useApp().getComponents().NotFoundErrorPage; const outlet = useOutlet(); const [documentReady, setDocumentReady] = useState(false); @@ -70,9 +66,7 @@ export const TechDocsPage = ({ setDocumentReady(true); }, [setDocumentReady]); - if (entityMetadataError) { - return ; - } + if (entityMetadataError) return ; if (!children) return outlet || ; From c8d1f915e780231c94f9fa1487bb241beeeeb63e Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Wed, 16 Feb 2022 12:39:27 +0100 Subject: [PATCH 111/383] shortcuts: remove unnecessary test Signed-off-by: Patrik Oldsberg --- plugins/shortcuts/src/ShortcutItem.test.tsx | 23 --------------------- 1 file changed, 23 deletions(-) diff --git a/plugins/shortcuts/src/ShortcutItem.test.tsx b/plugins/shortcuts/src/ShortcutItem.test.tsx index e080026f00..f002fb222e 100644 --- a/plugins/shortcuts/src/ShortcutItem.test.tsx +++ b/plugins/shortcuts/src/ShortcutItem.test.tsx @@ -77,27 +77,4 @@ describe('ShortcutItem', () => { expect(screen.getByText('MT')).toBeInTheDocument(); }); }); - - it('gets the color based on the theme', async () => { - const { rerender } = await renderInTestApp( - , - ); - - expect(document.querySelector('circle')?.getAttribute('fill')).toEqual( - pageTheme.tool.colors[0], - ); - - const newShortcut: Shortcut = { - id: 'id', - url: '/catalog', - title: 'some title', - }; - rerender(wrapInTestApp()); - - await waitFor(() => { - expect(document.querySelector('circle')?.getAttribute('fill')).toEqual( - pageTheme.home.colors[0], - ); - }); - }); }); From 8c767a0fb18b4e18c78c492e0826eddba6044069 Mon Sep 17 00:00:00 2001 From: Jonathan Ash Date: Wed, 16 Feb 2022 11:58:18 +0000 Subject: [PATCH 112/383] Updated changeset Signed-off-by: Jonathan Ash --- .changeset/healthy-shoes-flash.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/healthy-shoes-flash.md b/.changeset/healthy-shoes-flash.md index 8ca1006635..7e1619e9ec 100644 --- a/.changeset/healthy-shoes-flash.md +++ b/.changeset/healthy-shoes-flash.md @@ -2,4 +2,4 @@ '@backstage/plugin-techdocs': minor --- -Added ability for to display a custom error page component via prop "NotFoundPage" +Changed to use from createApp From 64da85d7aa41a6769e8b990f6cd026d10b423566 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Wed, 16 Feb 2022 13:09:05 +0100 Subject: [PATCH 113/383] shortcuts: remove unused import Signed-off-by: Patrik Oldsberg --- plugins/shortcuts/src/ShortcutItem.test.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/plugins/shortcuts/src/ShortcutItem.test.tsx b/plugins/shortcuts/src/ShortcutItem.test.tsx index f002fb222e..528eb13efa 100644 --- a/plugins/shortcuts/src/ShortcutItem.test.tsx +++ b/plugins/shortcuts/src/ShortcutItem.test.tsx @@ -24,7 +24,6 @@ import { renderInTestApp, wrapInTestApp, } from '@backstage/test-utils'; -import { pageTheme } from '@backstage/theme'; import { SidebarContext } from '@backstage/core-components'; describe('ShortcutItem', () => { From 3d0dc89b76841cc2ad9d6322285a08ac4a14a405 Mon Sep 17 00:00:00 2001 From: blam Date: Wed, 16 Feb 2022 13:01:46 +0100 Subject: [PATCH 114/383] chore: removed the token from actions, it's now backstageToken Signed-off-by: blam --- .../src/scaffolder/tasks/HandlebarsWorkflowRunner.ts | 2 -- .../src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts | 6 ++++-- .../src/scaffolder/tasks/NunjucksWorkflowRunner.ts | 8 -------- .../src/scaffolder/tasks/StorageTaskBroker.test.ts | 2 +- plugins/scaffolder-backend/src/scaffolder/tasks/types.ts | 2 -- plugins/scaffolder-backend/src/service/router.test.ts | 2 +- 6 files changed, 6 insertions(+), 16 deletions(-) diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/HandlebarsWorkflowRunner.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/HandlebarsWorkflowRunner.ts index 91c82edebb..86e719c828 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/HandlebarsWorkflowRunner.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/HandlebarsWorkflowRunner.ts @@ -236,8 +236,6 @@ export class HandlebarsWorkflowRunner implements WorkflowRunner { logger: taskLogger, logStream: stream, input, - // this token is deprecated, and will be removed in favour of secrets.backstageToken instead. - token: task.secrets?.token, secrets: task.secrets ?? {}, workspacePath, async createTemporaryDirectory() { diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts index 1597c575ac..d781fdc9cd 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts @@ -203,13 +203,15 @@ describe('DefaultWorkflowRunner', () => { ], }, { - token: fakeToken, + backstageToken: fakeToken, }, ); await runner.execute(task); - expect(fakeActionHandler.mock.calls[0][0].token).toEqual(fakeToken); + expect(fakeActionHandler.mock.calls[0][0].backstageToken).toEqual( + fakeToken, + ); }); }); diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.ts index 889e94d000..5d39d0bc00 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.ts @@ -258,17 +258,9 @@ export class NunjucksWorkflowRunner implements WorkflowRunner { const tmpDirs = new Array(); const stepOutput: { [outputName: string]: JsonValue } = {}; - if (!task.spec.metadata) { - console.warn( - 'DEPRECATION NOTICE: metadata is undefined. metadata will be required in the future.', - ); - } - await action.handler({ baseUrl: task.spec.baseUrl, input, - // this token is deprecated, and will be removed in favour of secrets.backstageToken instead. - token: task.secrets?.token, secrets: task.secrets ?? {}, logger: taskLogger, logStream: streamLogger, diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.test.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.test.ts index 130f6ced13..93285a4ab3 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.test.ts @@ -38,7 +38,7 @@ async function createStore(): Promise { describe('StorageTaskBroker', () => { let storage: DatabaseTaskStore; - const fakeSecrets = { token: 'secret' } as TaskSecrets; + const fakeSecrets = { backstageToken: 'secret' } as TaskSecrets; beforeAll(async () => { storage = await createStore(); diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/types.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/types.ts index 8caee87f57..8b28fe562c 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/types.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/types.ts @@ -90,8 +90,6 @@ export type SerializedTaskEvent = { * @public */ export type TaskSecrets = Record & { - /** @deprecated Use `backstageToken` instead */ - token?: string; backstageToken?: string; }; diff --git a/plugins/scaffolder-backend/src/service/router.test.ts b/plugins/scaffolder-backend/src/service/router.test.ts index 6e01c3d880..b20dfa5d24 100644 --- a/plugins/scaffolder-backend/src/service/router.test.ts +++ b/plugins/scaffolder-backend/src/service/router.test.ts @@ -182,7 +182,7 @@ describe('createRouter', () => { spec: {} as any, status: 'completed', createdAt: '', - secrets: { token: 'secret' }, + secrets: { backstageToken: 'secret' }, }); const response = await request(app).get(`/v2/tasks/a-random-id`); From 7bed999eb67770339b7daceb7ca53fbe004a105e Mon Sep 17 00:00:00 2001 From: blam Date: Wed, 16 Feb 2022 13:06:04 +0100 Subject: [PATCH 115/383] chore: updating api-report with removed token Signed-off-by: blam --- plugins/scaffolder-backend/api-report.md | 1 - 1 file changed, 1 deletion(-) diff --git a/plugins/scaffolder-backend/api-report.md b/plugins/scaffolder-backend/api-report.md index d2967bf88a..010b235621 100644 --- a/plugins/scaffolder-backend/api-report.md +++ b/plugins/scaffolder-backend/api-report.md @@ -553,7 +553,6 @@ export class TaskManager implements TaskContext { // @public export type TaskSecrets = Record & { - token?: string; backstageToken?: string; }; From 8db2b671c60f246fb184a9be6bae80eae994ec0c Mon Sep 17 00:00:00 2001 From: blam Date: Wed, 16 Feb 2022 13:08:28 +0100 Subject: [PATCH 116/383] chore: added changeset Signed-off-by: blam --- .changeset/pretty-gorillas-cheat.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/pretty-gorillas-cheat.md diff --git a/.changeset/pretty-gorillas-cheat.md b/.changeset/pretty-gorillas-cheat.md new file mode 100644 index 0000000000..349aee7355 --- /dev/null +++ b/.changeset/pretty-gorillas-cheat.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-backend': minor +--- + +**BREAKING**: `ctx.secrets.token` is now `ctx.secrets.backstageToken` in actions. Please update any of your actions that might call out to Backstage API's with this token. From 0df5389f2f03bdbfb7c052673afd2c8fd19d09aa Mon Sep 17 00:00:00 2001 From: blam Date: Wed, 16 Feb 2022 13:16:00 +0100 Subject: [PATCH 117/383] chore: remove from ActionsContext too Signed-off-by: blam --- plugins/scaffolder-backend/api-report.md | 1 - plugins/scaffolder-backend/src/scaffolder/actions/types.ts | 6 ------ 2 files changed, 7 deletions(-) diff --git a/plugins/scaffolder-backend/api-report.md b/plugins/scaffolder-backend/api-report.md index 010b235621..a28db34c0c 100644 --- a/plugins/scaffolder-backend/api-report.md +++ b/plugins/scaffolder-backend/api-report.md @@ -41,7 +41,6 @@ export type ActionContext = { baseUrl?: string; logger: Logger_2; logStream: Writable; - token?: string | undefined; secrets?: TaskSecrets; workspacePath: string; input: Input; diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/types.ts b/plugins/scaffolder-backend/src/scaffolder/actions/types.ts index f1e5dd7b77..6008e8183f 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/types.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/types.ts @@ -28,12 +28,6 @@ export type ActionContext = { logger: Logger; logStream: Writable; - - /** - * User token forwarded from initial request, for use in subsequent api requests - * @deprecated use `secrets.backstageToken` instead - */ - token?: string | undefined; secrets?: TaskSecrets; workspacePath: string; input: Input; From 79c500e10e0670534b9cc9e7a581b95c8f76326c Mon Sep 17 00:00:00 2001 From: blam Date: Wed, 16 Feb 2022 13:18:24 +0100 Subject: [PATCH 118/383] chore: updating changeset Signed-off-by: blam --- .changeset/pretty-gorillas-cheat.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/pretty-gorillas-cheat.md b/.changeset/pretty-gorillas-cheat.md index 349aee7355..d1500c6575 100644 --- a/.changeset/pretty-gorillas-cheat.md +++ b/.changeset/pretty-gorillas-cheat.md @@ -2,4 +2,4 @@ '@backstage/plugin-scaffolder-backend': minor --- -**BREAKING**: `ctx.secrets.token` is now `ctx.secrets.backstageToken` in actions. Please update any of your actions that might call out to Backstage API's with this token. +**BREAKING**: `ctx.token` is now `ctx.secrets.backstageToken` in Actions. Please update any of your Actions that might call out to Backstage API's with this token. From eca5c7944796aeb5887a53b3da87479531099174 Mon Sep 17 00:00:00 2001 From: Emma Indal Date: Wed, 16 Feb 2022 13:28:37 +0100 Subject: [PATCH 119/383] fix broken storybook link Signed-off-by: Emma Indal --- docs/getting-started/homepage.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/getting-started/homepage.md b/docs/getting-started/homepage.md index b7f7b88c6f..59272a285b 100644 --- a/docs/getting-started/homepage.md +++ b/docs/getting-started/homepage.md @@ -138,7 +138,7 @@ Composing a homepage is no different from creating a regular React Component, i.e. the App Integrator is free to include whatever content they like. However, there are components developed with the homepage in mind. If you are looking for components to use when composing your homepage, you can take a look at the -[collection of Homepage components](https://backstage.io/?path=/story/plugins-home-components) +[collection of Homepage components](https://backstage.io/storybook?path=/story/plugins-home-components) in storybook. If you don't find a component that suits your needs but want to contribute, check the [Contributing documentation](https://github.com/backstage/backstage/blob/master/plugins/home/README.md#contributing). From 91f6be833e7b6b8c21239867e55576eae5fc9f70 Mon Sep 17 00:00:00 2001 From: blam Date: Wed, 16 Feb 2022 14:55:30 +0100 Subject: [PATCH 120/383] chore: fixing test Signed-off-by: blam --- .../src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts index d781fdc9cd..f46d969eb8 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts @@ -209,8 +209,8 @@ describe('DefaultWorkflowRunner', () => { await runner.execute(task); - expect(fakeActionHandler.mock.calls[0][0].backstageToken).toEqual( - fakeToken, + expect(fakeActionHandler.mock.calls[0][0].secrets).toEqual( + expect.objectContaining({ backstageToken: fakeToken }), ); }); }); From 5116fb553ba3861b7621a8f7fc79c8db5e9add84 Mon Sep 17 00:00:00 2001 From: Karan Shah Date: Wed, 16 Feb 2022 14:25:45 +0000 Subject: [PATCH 121/383] Added further README changes for Airbrake Signed-off-by: Karan Shah --- plugins/airbrake-backend/README.md | 12 ++++++++---- plugins/airbrake/README.md | 15 +++++++++------ 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/plugins/airbrake-backend/README.md b/plugins/airbrake-backend/README.md index 42369524d6..c7588fdb4e 100644 --- a/plugins/airbrake-backend/README.md +++ b/plugins/airbrake-backend/README.md @@ -1,12 +1,16 @@ # airbrake-backend -Welcome to the airbrake-backend backend plugin! +The Airbrake backend plugin provides a simple proxy to the Airbrake API while hiding away the secret API key from the frontend. -_This plugin was created through the Backstage CLI_ +## How to use -## Getting started +See the [Airbrake plugin instructions](../airbrake/README.md#how-to-use). -Your plugin has been added to the example app in this repository, meaning you'll be able to access it by running `yarn start` in the root directory, and then navigating to [/airbrake-backend](http://localhost:7007/airbrake-backend). +## Local Development + +1. Set the environment variable `AIRBRAKE_API_KEY` with your API key. +2. Run this plugin in standalone mode by running `yarn start`. The configuration is already setup in the root [`app-config.yaml`](../../app-config.yaml) to pick up your API key from the environment variable above. +3. Access it from [/airbrake-backend](http://localhost:7007/airbrake-backend). Or use the Airbrake plugin which will talk to it automatically when using the real API. Here is an example endpoint: http://localhost:7007/airbrake-backend/health diff --git a/plugins/airbrake/README.md b/plugins/airbrake/README.md index f81bb5a7e7..3a77266890 100644 --- a/plugins/airbrake/README.md +++ b/plugins/airbrake/README.md @@ -51,7 +51,7 @@ The Airbrake plugin provides connectivity between Backstage and Airbrake (https: }); const service = createServiceBuilder(module) - // ... + // ... Add the airbrakeRouter here .addRouter('/api/airbrake', airbrakeRouter); } ``` @@ -63,10 +63,13 @@ The Airbrake plugin provides connectivity between Backstage and Airbrake (https: apiKey: ${AIRBRAKE_API_KEY} ``` -6. Set an environment variable `AIRBRAKE_API_KEY` with your [API Key](https://airbrake.io/docs/api/#authentication) before starting Backstage backend. +6. Set an environment variable `AIRBRAKE_API_KEY` with your [API Key](https://airbrake.io/docs/api/#authentication) + before starting Backstage backend. -## Getting started +## Local Development -You can serve the plugin in isolation by running `yarn start` in the plugin directory. This method of serving the plugin -provides quicker iteration speed and a faster startup and hot reloads. It is only meant for local development, and the -setup for it can be found inside the [/dev](./dev) directory. +Start this plugin in standalone mode by running `yarn start`. This method of serving the plugin provides quicker +iteration speed and a faster startup and hot reloads. It is only meant for local development, and the setup for it can +be found inside the [/dev](./dev) directory. + +> A mock API will be used to run it in standalone. If you want to talk to the real API [follow the instructions to start up Airbrake Backend in standalone](../airbrake-backend/README.md#local-development). From f5e370e0c38a57baef9da1d611a24f96feb83081 Mon Sep 17 00:00:00 2001 From: Karan Shah Date: Wed, 16 Feb 2022 14:26:41 +0000 Subject: [PATCH 122/383] Make the Airbrake backend plugin public Signed-off-by: Karan Shah --- plugins/airbrake-backend/package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/plugins/airbrake-backend/package.json b/plugins/airbrake-backend/package.json index 09d18079a1..0e94e6d998 100644 --- a/plugins/airbrake-backend/package.json +++ b/plugins/airbrake-backend/package.json @@ -4,7 +4,6 @@ "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", - "private": true, "publishConfig": { "access": "public", "main": "dist/index.cjs.js", From 0a033351bebe39baf8e81178aa934c3dc0855440 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Wed, 16 Feb 2022 09:48:39 +0100 Subject: [PATCH 123/383] catalog: clean up api reports MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .changeset/silly-seals-march.md | 8 + plugins/catalog/api-report.md | 469 +++++++++--------- plugins/catalog/package.json | 1 + .../src/components/AboutCard/AboutCard.tsx | 13 +- .../src/components/AboutCard/AboutContent.tsx | 15 +- .../src/components/AboutCard/AboutField.tsx | 15 +- .../catalog/src/components/AboutCard/index.ts | 3 + .../CatalogEntityPage/CatalogEntityPage.tsx | 13 +- .../src/components/CatalogEntityPage/index.ts | 1 + .../CatalogKindHeader/CatalogKindHeader.tsx | 17 +- .../src/components/CatalogKindHeader/index.ts | 2 + .../components/CatalogPage/CatalogPage.tsx | 4 +- .../CatalogPage/DefaultCatalogPage.test.tsx | 6 +- .../CatalogPage/DefaultCatalogPage.tsx | 23 +- .../src/components/CatalogPage/index.ts | 1 + .../CatalogResultListItem.tsx | 17 +- .../components/CatalogResultListItem/index.ts | 1 + .../components/CatalogTable/CatalogTable.tsx | 27 +- .../src/components/CatalogTable/columns.tsx | 221 ++++----- .../src/components/CatalogTable/index.ts | 3 +- .../src/components/CatalogTable/types.ts | 6 +- .../DependencyOfComponentsCard.tsx | 15 +- .../DependencyOfComponentsCard/index.ts | 1 + .../DependsOnComponentsCard.tsx | 13 +- .../DependsOnComponentsCard/index.ts | 1 + .../DependsOnResourcesCard.tsx | 10 +- .../DependsOnResourcesCard/index.ts | 1 + .../EntityContextMenu/EntityContextMenu.tsx | 27 +- .../components/EntityLayout/EntityLayout.tsx | 70 +-- .../src/components/EntityLayout/index.ts | 2 + .../EntityLinksCard/EntityLinksCard.tsx | 11 +- .../EntityLinksCard/EntityLinksEmptyState.tsx | 4 +- .../components/EntityLinksCard/IconLink.tsx | 12 +- .../EntityLinksCard/LinksGridList.tsx | 13 +- .../src/components/EntityLinksCard/index.ts | 1 + .../EntityNotFound/EntityNotFound.test.tsx | 1 - .../EntityNotFound/EntityNotFound.tsx | 5 +- .../components/EntityNotFound/Illo/Illo.tsx | 4 +- .../src/components/EntityNotFound/index.ts | 1 + .../DeleteEntityDialog.test.tsx | 2 +- .../DeleteEntityDialog.tsx | 14 +- .../EntityOrphanWarning.tsx | 20 +- .../EntityProcessingErrorsPanel.tsx | 21 +- .../components/EntitySwitch/EntitySwitch.tsx | 26 +- .../src/components/EntitySwitch/conditions.ts | 12 + .../src/components/EntitySwitch/index.ts | 1 + .../EntityListContainer.tsx | 15 +- .../FilteredEntityLayout/FilterContainer.tsx | 11 +- .../FilteredEntityLayout.tsx | 15 +- .../HasComponentsCard/HasComponentsCard.tsx | 10 +- .../src/components/HasComponentsCard/index.ts | 1 + .../HasResourcesCard/HasResourcesCard.tsx | 10 +- .../src/components/HasResourcesCard/index.ts | 1 + .../HasSubcomponentsCard.tsx | 10 +- .../components/HasSubcomponentsCard/index.ts | 1 + .../HasSystemsCard/HasSystemsCard.tsx | 10 +- .../src/components/HasSystemsCard/index.ts | 1 + .../RelatedEntitiesCard.tsx | 9 +- .../components/RelatedEntitiesCard/index.ts | 1 + plugins/catalog/src/index.ts | 16 +- plugins/catalog/src/plugin.ts | 107 ++-- 61 files changed, 786 insertions(+), 586 deletions(-) create mode 100644 .changeset/silly-seals-march.md diff --git a/.changeset/silly-seals-march.md b/.changeset/silly-seals-march.md new file mode 100644 index 0000000000..560f82493e --- /dev/null +++ b/.changeset/silly-seals-march.md @@ -0,0 +1,8 @@ +--- +'@backstage/plugin-catalog': minor +--- + +**BREAKING**: + +- The `CatalogResultListItem` `result` prop is now of the more narrow and correct type `IndexableDocument`, rather than `any`. +- The individual table column factories (e.g. `createNameColumn`) are now no longer available directly, but only through `CatalogTable.columns`. diff --git a/plugins/catalog/api-report.md b/plugins/catalog/api-report.md index 99bd727961..d5e4bab347 100644 --- a/plugins/catalog/api-report.md +++ b/plugins/catalog/api-report.md @@ -11,11 +11,10 @@ import { Entity } from '@backstage/catalog-model'; import { EntityName } from '@backstage/catalog-model'; import { ExternalRouteRef } from '@backstage/core-plugin-api'; import { IconComponent } from '@backstage/core-plugin-api'; +import { IndexableDocument } from '@backstage/search-common'; import { InfoCardVariants } from '@backstage/core-components'; import { Overrides } from '@material-ui/core/styles/overrides'; -import { PropsWithChildren } from 'react'; import { default as React_2 } from 'react'; -import { ReactNode } from 'react'; import { RouteRef } from '@backstage/core-plugin-api'; import { StyleRules } from '@material-ui/core/styles/withStyles'; import { TableColumn } from '@backstage/core-components'; @@ -23,28 +22,40 @@ import { TableProps } from '@backstage/core-components'; import { TabProps } from '@material-ui/core'; import { UserListFilterKind } from '@backstage/plugin-catalog-react'; -// Warning: (ae-forgotten-export) The symbol "AboutCardProps" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "AboutCard" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export function AboutCard({ variant }: AboutCardProps): JSX.Element; +export function AboutCard(props: AboutCardProps): 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) "AboutContent" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export const AboutContent: ({ entity }: Props) => JSX.Element; +// @public +export interface AboutCardProps { + // @deprecated (undocumented) + entity?: Entity; + // (undocumented) + variant?: InfoCardVariants; +} -// Warning: (ae-forgotten-export) The symbol "Props" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "AboutField" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export const AboutField: ({ - label, - value, - gridSizes, - children, -}: Props_2) => JSX.Element; +export function AboutContent(props: AboutContentProps): JSX.Element; + +// @public +export interface AboutContentProps { + // (undocumented) + entity: Entity; +} + +// @public (undocumented) +export function AboutField(props: AboutFieldProps): JSX.Element; + +// @public +export interface AboutFieldProps { + // (undocumented) + children?: React_2.ReactNode; + // (undocumented) + gridSizes?: Record; + // (undocumented) + label: string; + // (undocumented) + value?: string; +} // @public (undocumented) export type BackstageOverrides = Overrides & { @@ -53,26 +64,21 @@ export type BackstageOverrides = Overrides & { >; }; -// Warning: (ae-missing-release-tag) "CatalogEntityPage" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const CatalogEntityPage: () => JSX.Element; -// Warning: (ae-missing-release-tag) "CatalogIndexPage" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const CatalogIndexPage: (props: DefaultCatalogPageProps) => JSX.Element; -// Warning: (ae-forgotten-export) The symbol "CatalogKindHeaderProps" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "CatalogKindHeader" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export const CatalogKindHeader: ({ - initialFilter, -}: CatalogKindHeaderProps) => JSX.Element; +export function CatalogKindHeader(props: CatalogKindHeaderProps): JSX.Element; + +// @public +export interface CatalogKindHeaderProps { + // (undocumented) + initialFilter?: string; +} -// Warning: (ae-missing-release-tag) "catalogPlugin" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) const catalogPlugin: BackstagePlugin< { @@ -98,24 +104,50 @@ const catalogPlugin: BackstagePlugin< export { catalogPlugin }; export { catalogPlugin as plugin }; -// Warning: (ae-missing-release-tag) "CatalogResultListItem" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export const CatalogResultListItem: ({ result }: any) => JSX.Element; +export function CatalogResultListItem( + props: CatalogResultListItemProps, +): JSX.Element; + +// @public +export interface CatalogResultListItemProps { + // (undocumented) + result: IndexableDocument; +} -// Warning: (ae-missing-release-tag) "CatalogTable" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const CatalogTable: { - ({ columns, actions }: CatalogTableProps): JSX.Element; - columns: typeof columnFactories; + (props: CatalogTableProps): JSX.Element; + columns: Readonly<{ + createNameColumn( + options?: + | { + defaultKind?: string | undefined; + } + | undefined, + ): TableColumn; + createSystemColumn(): TableColumn; + createOwnerColumn(): TableColumn; + createSpecTypeColumn(): TableColumn; + createSpecLifecycleColumn(): TableColumn; + createMetadataDescriptionColumn(): TableColumn; + createTagsColumn(): TableColumn; + }>; }; -// Warning: (ae-missing-release-tag) "EntityRow" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// +// @public +export interface CatalogTableProps { + // (undocumented) + actions?: TableProps['actions']; + // (undocumented) + columns?: TableColumn[]; +} + // @public (undocumented) -export type CatalogTableRow = { +export interface CatalogTableRow { + // (undocumented) entity: Entity; + // (undocumented) resolved: { name: string; partOfSystemRelationTitle?: string; @@ -123,230 +155,230 @@ export type CatalogTableRow = { ownedByRelationsTitle?: string; ownedByRelations: EntityName[]; }; -}; +} -// Warning: (ae-missing-release-tag) "createMetadataDescriptionColumn" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export function createMetadataDescriptionColumn(): TableColumn; - -// Warning: (ae-forgotten-export) The symbol "NameColumnProps" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "createNameColumn" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export function createNameColumn( - props?: NameColumnProps, -): TableColumn; - -// Warning: (ae-missing-release-tag) "createOwnerColumn" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export function createOwnerColumn(): TableColumn; - -// Warning: (ae-missing-release-tag) "createSpecLifecycleColumn" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export function createSpecLifecycleColumn(): TableColumn; - -// Warning: (ae-missing-release-tag) "createSpecTypeColumn" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export function createSpecTypeColumn(): TableColumn; - -// Warning: (ae-missing-release-tag) "createSystemColumn" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export function createSystemColumn(): TableColumn; - -// Warning: (ae-missing-release-tag) "createTagsColumn" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export function createTagsColumn(): TableColumn; +export const columnFactories: Readonly<{ + createNameColumn( + options?: + | { + defaultKind?: string | undefined; + } + | undefined, + ): TableColumn; + createSystemColumn(): TableColumn; + createOwnerColumn(): TableColumn; + createSpecTypeColumn(): TableColumn; + createSpecLifecycleColumn(): TableColumn; + createMetadataDescriptionColumn(): TableColumn; + createTagsColumn(): TableColumn; +}>; // @public -export type DefaultCatalogPageProps = { - initiallySelectedFilter?: UserListFilterKind; - columns?: TableColumn[]; +export interface DefaultCatalogPageProps { + // (undocumented) actions?: TableProps['actions']; -}; + // (undocumented) + columns?: TableColumn[]; + // (undocumented) + initiallySelectedFilter?: UserListFilterKind; +} -// Warning: (ae-missing-release-tag) "EntityAboutCard" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export const EntityAboutCard: AboutCard; +export interface DependencyOfComponentsCardProps { + // (undocumented) + title?: string; + // (undocumented) + variant?: 'gridItem'; +} -// Warning: (ae-missing-release-tag) "EntityDependencyOfComponentsCard" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export const EntityDependencyOfComponentsCard: ({ - variant, - title, -}: { - variant?: 'gridItem' | undefined; - title?: string | undefined; -}) => JSX.Element; +export interface DependsOnComponentsCardProps { + // (undocumented) + title?: string; + // (undocumented) + variant?: 'gridItem'; +} -// Warning: (ae-missing-release-tag) "EntityDependsOnComponentsCard" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export const EntityDependsOnComponentsCard: ({ - variant, - title, -}: { - variant?: 'gridItem' | undefined; - title?: string | undefined; -}) => JSX.Element; +export interface DependsOnResourcesCardProps { + // (undocumented) + variant?: 'gridItem'; +} -// Warning: (ae-missing-release-tag) "EntityDependsOnResourcesCard" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export const EntityDependsOnResourcesCard: ({ - variant, -}: { - variant?: 'gridItem' | undefined; -}) => JSX.Element; +export const EntityAboutCard: (props: AboutCardProps) => JSX.Element; -// Warning: (ae-missing-release-tag) "EntityHasComponentsCard" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export const EntityHasComponentsCard: ({ - variant, -}: { - variant?: 'gridItem' | undefined; -}) => JSX.Element; +export const EntityDependencyOfComponentsCard: ( + props: DependencyOfComponentsCardProps, +) => JSX.Element; -// Warning: (ae-missing-release-tag) "EntityHasResourcesCard" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export const EntityHasResourcesCard: ({ - variant, -}: { - variant?: 'gridItem' | undefined; -}) => JSX.Element; +export const EntityDependsOnComponentsCard: ( + props: DependsOnComponentsCardProps, +) => JSX.Element; -// Warning: (ae-missing-release-tag) "EntityHasSubcomponentsCard" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export const EntityHasSubcomponentsCard: ({ - variant, -}: { - variant?: 'gridItem' | undefined; -}) => JSX.Element; +export const EntityDependsOnResourcesCard: ( + props: DependsOnResourcesCardProps, +) => JSX.Element; -// Warning: (ae-missing-release-tag) "EntityHasSystemsCard" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export const EntityHasSystemsCard: ({ - variant, -}: { - variant?: 'gridItem' | undefined; -}) => JSX.Element; +export const EntityHasComponentsCard: ( + props: HasComponentsCardProps, +) => JSX.Element; + +// @public (undocumented) +export const EntityHasResourcesCard: ( + props: HasResourcesCardProps, +) => JSX.Element; + +// @public (undocumented) +export const EntityHasSubcomponentsCard: ( + props: HasSubcomponentsCardProps, +) => JSX.Element; + +// @public (undocumented) +export const EntityHasSystemsCard: (props: HasSystemsCardProps) => JSX.Element; -// Warning: (ae-missing-release-tag) "EntityLayout" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public export const EntityLayout: { - ({ - UNSTABLE_extraContextMenuItems, - UNSTABLE_contextMenuOptions, - children, - }: EntityLayoutProps): JSX.Element; - Route: (props: SubRoute) => null; + (props: EntityLayoutProps): JSX.Element; + Route: (props: EntityLayoutRouteProps) => null; }; -// Warning: (ae-missing-release-tag) "EntityLinksCard" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// @public (undocumented) +export interface EntityLayoutProps { + // (undocumented) + children?: React_2.ReactNode; + // Warning: (ae-forgotten-export) The symbol "contextMenuOptions" needs to be exported by the entry point index.d.ts + // + // (undocumented) + UNSTABLE_contextMenuOptions?: contextMenuOptions; + // Warning: (ae-forgotten-export) The symbol "ExtraContextMenuItem" needs to be exported by the entry point index.d.ts + // + // (undocumented) + UNSTABLE_extraContextMenuItems?: ExtraContextMenuItem[]; +} + +// @public (undocumented) +export type EntityLayoutRouteProps = { + path: string; + title: string; + children: JSX.Element; + if?: (entity: Entity) => boolean; + tabProps?: TabProps< + React_2.ElementType, + { + component?: React_2.ElementType; + } + >; +}; + +// Warning: (ae-forgotten-export) The symbol "EntityLinksCard" needs to be exported by the entry point index.d.ts // // @public (undocumented) -export const EntityLinksCard: ({ - cols, - variant, -}: { - entity?: Entity | undefined; - cols?: number | ColumnBreakpoints | undefined; - variant?: 'gridItem' | undefined; -}) => JSX.Element; +export const EntityLinksCard: EntityLinksCard_2; + +// @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; + // @deprecated (undocumented) + entity?: Entity; + // (undocumented) + variant?: 'gridItem'; +} // @public (undocumented) export type EntityLinksEmptyStateClassKey = 'code'; -// Warning: (ae-missing-release-tag) "EntityListContainer" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export const EntityListContainer: ({ - children, -}: PropsWithChildren<{}>) => JSX.Element; +export function EntityListContainer(props: { + children: React_2.ReactNode; +}): JSX.Element; -// Warning: (ae-missing-release-tag) "EntityOrphanWarning" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public -export const EntityOrphanWarning: () => JSX.Element; +export function EntityOrphanWarning(): JSX.Element; -// Warning: (ae-missing-release-tag) "EntityProcessingErrorsPanel" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public -export const EntityProcessingErrorsPanel: () => JSX.Element | null; +export function EntityProcessingErrorsPanel(): JSX.Element | null; -// Warning: (ae-missing-release-tag) "EntitySwitch" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const EntitySwitch: { - ({ children }: PropsWithChildren<{}>): JSX.Element | null; - Case: (_: { - if?: - | (( - entity: Entity, - context: { - apis: ApiHolder; - }, - ) => boolean | Promise) - | undefined; - children: ReactNode; - }) => null; + (props: { children: React_2.ReactNode }): JSX.Element | null; + Case: (_props: EntitySwitchCaseProps) => null; }; -// Warning: (ae-missing-release-tag) "FilterContainer" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export const FilterContainer: ({ - children, -}: PropsWithChildren<{}>) => JSX.Element; +export interface EntitySwitchCaseProps { + // (undocumented) + children: React_2.ReactNode; + // (undocumented) + if?: ( + entity: Entity, + context: { + apis: ApiHolder; + }, + ) => boolean | Promise; +} -// Warning: (ae-missing-release-tag) "FilteredEntityLayout" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export const FilteredEntityLayout: ({ - children, -}: PropsWithChildren<{}>) => JSX.Element; +export function FilterContainer(props: { + children: React_2.ReactNode; +}): JSX.Element; -// Warning: (ae-missing-release-tag) "hasCatalogProcessingErrors" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export const hasCatalogProcessingErrors: ( +export function FilteredEntityLayout(props: { + children: React_2.ReactNode; +}): JSX.Element; + +// @public +export function hasCatalogProcessingErrors( entity: Entity, context: { apis: ApiHolder; }, -) => Promise; +): Promise; -// Warning: (ae-missing-release-tag) "isComponentType" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) +export interface HasComponentsCardProps { + // (undocumented) + variant?: 'gridItem'; +} + +// @public (undocumented) +export interface HasResourcesCardProps { + // (undocumented) + variant?: 'gridItem'; +} + +// @public (undocumented) +export interface HasSubcomponentsCardProps { + // (undocumented) + variant?: 'gridItem'; +} + +// @public (undocumented) +export interface HasSystemsCardProps { + // (undocumented) + variant?: 'gridItem'; +} + +// @public export function isComponentType(type: string): (entity: Entity) => boolean; -// Warning: (ae-missing-release-tag) "isKind" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) +// @public export function isKind(kind: string): (entity: Entity) => boolean; -// Warning: (ae-missing-release-tag) "isNamespace" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) +// @public export function isNamespace(namespace: string): (entity: Entity) => boolean; -// Warning: (ae-missing-release-tag) "isOrphan" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export const isOrphan: (entity: Entity) => boolean; +// @public +export function isOrphan(entity: Entity): boolean; // @public (undocumented) export type PluginCatalogComponentsNameToClassKey = { @@ -354,19 +386,22 @@ export type PluginCatalogComponentsNameToClassKey = { PluginCatalogSystemDiagramCard: SystemDiagramCardClassKey; }; -// Warning: (ae-missing-release-tag) "RelatedEntitiesCard" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export const RelatedEntitiesCard: (props: { - variant?: 'gridItem' | undefined; +export const RelatedEntitiesCard: ( + props: RelatedEntitiesCardProps, +) => JSX.Element; + +// @public (undocumented) +export type RelatedEntitiesCardProps = { + variant?: 'gridItem'; title: string; columns: TableColumn[]; - entityKind?: string | undefined; + entityKind?: string; relationType: string; emptyMessage: string; emptyHelpLink: string; asRenderableEntities: (entities: Entity[]) => T[]; -}) => JSX.Element; +}; // @public (undocumented) export type SystemDiagramCardClassKey = @@ -375,12 +410,4 @@ export type SystemDiagramCardClassKey = | 'componentNode' | 'apiNode' | 'resourceNode'; - -// Warnings were encountered during analysis: -// -// src/components/CatalogTable/CatalogTable.d.ts:10:5 - (ae-forgotten-export) The symbol "CatalogTableProps" needs to be exported by the entry point index.d.ts -// src/components/CatalogTable/CatalogTable.d.ts:11:5 - (ae-forgotten-export) The symbol "columnFactories" needs to be exported by the entry point index.d.ts -// src/components/EntityLayout/EntityLayout.d.ts:43:5 - (ae-forgotten-export) The symbol "EntityLayoutProps" needs to be exported by the entry point index.d.ts -// src/components/EntityLayout/EntityLayout.d.ts:44:5 - (ae-forgotten-export) The symbol "SubRoute" needs to be exported by the entry point index.d.ts -// src/plugin.d.ts:22:5 - (ae-forgotten-export) The symbol "ColumnBreakpoints" needs to be exported by the entry point index.d.ts ``` diff --git a/plugins/catalog/package.json b/plugins/catalog/package.json index a2492aaba7..4497a583e0 100644 --- a/plugins/catalog/package.json +++ b/plugins/catalog/package.json @@ -39,6 +39,7 @@ "@backstage/integration-react": "^0.1.21", "@backstage/plugin-catalog-common": "^0.1.2", "@backstage/plugin-catalog-react": "^0.6.14", + "@backstage/search-common": "^0.2.2", "@backstage/theme": "^0.2.14", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", diff --git a/plugins/catalog/src/components/AboutCard/AboutCard.tsx b/plugins/catalog/src/components/AboutCard/AboutCard.tsx index f552d50a68..fe9673dca7 100644 --- a/plugins/catalog/src/components/AboutCard/AboutCard.tsx +++ b/plugins/catalog/src/components/AboutCard/AboutCard.tsx @@ -72,13 +72,20 @@ const useStyles = makeStyles({ }, }); -type AboutCardProps = { +/** + * Props for {@link AboutCard}. + * + * @public + */ +export interface AboutCardProps { /** @deprecated The entity is now grabbed from context instead */ entity?: Entity; variant?: InfoCardVariants; -}; +} -export function AboutCard({ variant }: AboutCardProps) { +/** @public */ +export function AboutCard(props: AboutCardProps) { + const { variant } = props; const classes = useStyles(); const { entity } = useEntity(); const scmIntegrationsApi = useApi(scmIntegrationsApiRef); diff --git a/plugins/catalog/src/components/AboutCard/AboutContent.tsx b/plugins/catalog/src/components/AboutCard/AboutContent.tsx index 9c8260c14d..ee1dad5d39 100644 --- a/plugins/catalog/src/components/AboutCard/AboutContent.tsx +++ b/plugins/catalog/src/components/AboutCard/AboutContent.tsx @@ -33,11 +33,18 @@ const useStyles = makeStyles({ }, }); -type Props = { +/** + * Props for {@link AboutContent}. + * + * @public + */ +export interface AboutContentProps { entity: Entity; -}; +} -export const AboutContent = ({ entity }: Props) => { +/** @public */ +export function AboutContent(props: AboutContentProps) { + const { entity } = props; const classes = useStyles(); const isSystem = entity.kind.toLocaleLowerCase('en-US') === 'system'; const isResource = entity.kind.toLocaleLowerCase('en-US') === 'resource'; @@ -154,4 +161,4 @@ export const AboutContent = ({ entity }: Props) => { ); -}; +} diff --git a/plugins/catalog/src/components/AboutCard/AboutField.tsx b/plugins/catalog/src/components/AboutCard/AboutField.tsx index c4dd107434..6ceaa4fd7a 100644 --- a/plugins/catalog/src/components/AboutCard/AboutField.tsx +++ b/plugins/catalog/src/components/AboutCard/AboutField.tsx @@ -36,14 +36,21 @@ const useStyles = makeStyles(theme => ({ }, })); -type Props = { +/** + * Props for {@link AboutField}. + * + * @public + */ +export interface AboutFieldProps { label: string; value?: string; gridSizes?: Record; children?: React.ReactNode; -}; +} -export const AboutField = ({ label, value, gridSizes, children }: Props) => { +/** @public */ +export function AboutField(props: AboutFieldProps) { + const { label, value, gridSizes, children } = props; const classes = useStyles(); const childElements = useElementFilter(children, c => c.getElements()); @@ -65,4 +72,4 @@ export const AboutField = ({ label, value, gridSizes, children }: Props) => { {content} ); -}; +} diff --git a/plugins/catalog/src/components/AboutCard/index.ts b/plugins/catalog/src/components/AboutCard/index.ts index 84f6a02380..9660a5e2e2 100644 --- a/plugins/catalog/src/components/AboutCard/index.ts +++ b/plugins/catalog/src/components/AboutCard/index.ts @@ -15,5 +15,8 @@ */ export { AboutCard } from './AboutCard'; +export type { AboutCardProps } from './AboutCard'; export { AboutContent } from './AboutContent'; +export type { AboutContentProps } from './AboutContent'; export { AboutField } from './AboutField'; +export type { AboutFieldProps } from './AboutField'; diff --git a/plugins/catalog/src/components/CatalogEntityPage/CatalogEntityPage.tsx b/plugins/catalog/src/components/CatalogEntityPage/CatalogEntityPage.tsx index 94b9f5eee4..da578a8892 100644 --- a/plugins/catalog/src/components/CatalogEntityPage/CatalogEntityPage.tsx +++ b/plugins/catalog/src/components/CatalogEntityPage/CatalogEntityPage.tsx @@ -21,8 +21,11 @@ import { AsyncEntityProvider, } from '@backstage/plugin-catalog-react'; -export const CatalogEntityPage = () => ( - - - -); +/** @public */ +export function CatalogEntityPage() { + return ( + + + + ); +} diff --git a/plugins/catalog/src/components/CatalogEntityPage/index.ts b/plugins/catalog/src/components/CatalogEntityPage/index.ts index bac02a1529..f57648ae00 100644 --- a/plugins/catalog/src/components/CatalogEntityPage/index.ts +++ b/plugins/catalog/src/components/CatalogEntityPage/index.ts @@ -13,4 +13,5 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + export { CatalogEntityPage } from './CatalogEntityPage'; diff --git a/plugins/catalog/src/components/CatalogKindHeader/CatalogKindHeader.tsx b/plugins/catalog/src/components/CatalogKindHeader/CatalogKindHeader.tsx index 41c5888d79..6689f3371d 100644 --- a/plugins/catalog/src/components/CatalogKindHeader/CatalogKindHeader.tsx +++ b/plugins/catalog/src/components/CatalogKindHeader/CatalogKindHeader.tsx @@ -38,13 +38,18 @@ const useStyles = makeStyles((theme: Theme) => }), ); -type CatalogKindHeaderProps = { +/** + * Props for {@link CatalogKindHeader}. + * + * @public + */ +export interface CatalogKindHeaderProps { initialFilter?: string; -}; +} -export const CatalogKindHeader = ({ - initialFilter = 'component', -}: CatalogKindHeaderProps) => { +/** @public */ +export function CatalogKindHeader(props: CatalogKindHeaderProps) { + const { initialFilter = 'component' } = props; const classes = useStyles(); const { kinds: allKinds = [] } = useEntityKinds(); const { updateFilters, queryParameters } = useEntityListProvider(); @@ -88,4 +93,4 @@ export const CatalogKindHeader = ({ ))} ); -}; +} diff --git a/plugins/catalog/src/components/CatalogKindHeader/index.ts b/plugins/catalog/src/components/CatalogKindHeader/index.ts index 0078207d58..5a5b20f1a0 100644 --- a/plugins/catalog/src/components/CatalogKindHeader/index.ts +++ b/plugins/catalog/src/components/CatalogKindHeader/index.ts @@ -13,4 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + export { CatalogKindHeader } from './CatalogKindHeader'; +export type { CatalogKindHeaderProps } from './CatalogKindHeader'; diff --git a/plugins/catalog/src/components/CatalogPage/CatalogPage.tsx b/plugins/catalog/src/components/CatalogPage/CatalogPage.tsx index cf49cff244..155bcc05df 100644 --- a/plugins/catalog/src/components/CatalogPage/CatalogPage.tsx +++ b/plugins/catalog/src/components/CatalogPage/CatalogPage.tsx @@ -21,8 +21,8 @@ import { DefaultCatalogPageProps, } from './DefaultCatalogPage'; -export const CatalogPage = (props: DefaultCatalogPageProps) => { +export function CatalogPage(props: DefaultCatalogPageProps) { const outlet = useOutlet(); return outlet || ; -}; +} diff --git a/plugins/catalog/src/components/CatalogPage/DefaultCatalogPage.test.tsx b/plugins/catalog/src/components/CatalogPage/DefaultCatalogPage.test.tsx index 20acff3c50..ce8c449bc4 100644 --- a/plugins/catalog/src/components/CatalogPage/DefaultCatalogPage.test.tsx +++ b/plugins/catalog/src/components/CatalogPage/DefaultCatalogPage.test.tsx @@ -44,7 +44,7 @@ import DashboardIcon from '@material-ui/icons/Dashboard'; import { fireEvent, screen } from '@testing-library/react'; import React from 'react'; import { createComponentRouteRef } from '../../routes'; -import { EntityRow } from '../CatalogTable'; +import { CatalogTableRow } from '../CatalogTable'; import { DefaultCatalogPage } from './DefaultCatalogPage'; describe('DefaultCatalogPage', () => { @@ -180,7 +180,7 @@ describe('DefaultCatalogPage', () => { }, 20_000); it('should render the custom column passed as prop', async () => { - const columns: TableColumn[] = [ + const columns: TableColumn[] = [ { title: 'Foo', field: 'entity.foo' }, { title: 'Bar', field: 'entity.bar' }, { title: 'Baz', field: 'entity.spec.lifecycle' }, @@ -208,7 +208,7 @@ describe('DefaultCatalogPage', () => { }, 20_000); it('should render the custom actions of an item passed as prop', async () => { - const actions: TableProps['actions'] = [ + const actions: TableProps['actions'] = [ () => { return { icon: () => , diff --git a/plugins/catalog/src/components/CatalogPage/DefaultCatalogPage.tsx b/plugins/catalog/src/components/CatalogPage/DefaultCatalogPage.tsx index 1453a39bbc..8bb9bae764 100644 --- a/plugins/catalog/src/components/CatalogPage/DefaultCatalogPage.tsx +++ b/plugins/catalog/src/components/CatalogPage/DefaultCatalogPage.tsx @@ -35,8 +35,7 @@ import { } from '@backstage/plugin-catalog-react'; import React from 'react'; import { createComponentRouteRef } from '../../routes'; -import { CatalogTable } from '../CatalogTable'; -import { EntityRow } from '../CatalogTable/types'; +import { CatalogTable, CatalogTableRow } from '../CatalogTable'; import { FilteredEntityLayout, EntityListContainer, @@ -45,20 +44,18 @@ import { import { CatalogKindHeader } from '../CatalogKindHeader'; /** - * DefaultCatalogPageProps + * Props for root catalog pages. + * * @public */ -export type DefaultCatalogPageProps = { +export interface DefaultCatalogPageProps { initiallySelectedFilter?: UserListFilterKind; - columns?: TableColumn[]; - actions?: TableProps['actions']; -}; + columns?: TableColumn[]; + actions?: TableProps['actions']; +} -export const DefaultCatalogPage = ({ - columns, - actions, - initiallySelectedFilter = 'owned', -}: DefaultCatalogPageProps) => { +export function DefaultCatalogPage(props: DefaultCatalogPageProps) { + const { columns, actions, initiallySelectedFilter = 'owned' } = props; const orgName = useApi(configApiRef).getOptionalString('organization.name') ?? 'Backstage'; const createComponentLink = useRouteRef(createComponentRouteRef); @@ -90,4 +87,4 @@ export const DefaultCatalogPage = ({ ); -}; +} diff --git a/plugins/catalog/src/components/CatalogPage/index.ts b/plugins/catalog/src/components/CatalogPage/index.ts index ca6a13c034..9a3d083f41 100644 --- a/plugins/catalog/src/components/CatalogPage/index.ts +++ b/plugins/catalog/src/components/CatalogPage/index.ts @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + export { CatalogPage } from './CatalogPage'; export { DefaultCatalogPage } from './DefaultCatalogPage'; export type { DefaultCatalogPageProps } from './DefaultCatalogPage'; diff --git a/plugins/catalog/src/components/CatalogResultListItem/CatalogResultListItem.tsx b/plugins/catalog/src/components/CatalogResultListItem/CatalogResultListItem.tsx index f0a32ec0e2..3800618539 100644 --- a/plugins/catalog/src/components/CatalogResultListItem/CatalogResultListItem.tsx +++ b/plugins/catalog/src/components/CatalogResultListItem/CatalogResultListItem.tsx @@ -24,6 +24,7 @@ import { makeStyles, } from '@material-ui/core'; import { Link } from '@backstage/core-components'; +import { IndexableDocument } from '@backstage/search-common'; const useStyles = makeStyles({ flexContainer: { @@ -36,7 +37,19 @@ const useStyles = makeStyles({ }, }); -export const CatalogResultListItem = ({ result }: any) => { +/** + * Props for {@link CatalogResultListItem}. + * + * @public + */ +export interface CatalogResultListItemProps { + result: IndexableDocument; +} + +/** @public */ +export function CatalogResultListItem(props: CatalogResultListItemProps) { + const result = props.result as any; + const classes = useStyles(); return ( @@ -57,4 +70,4 @@ export const CatalogResultListItem = ({ result }: any) => { ); -}; +} diff --git a/plugins/catalog/src/components/CatalogResultListItem/index.ts b/plugins/catalog/src/components/CatalogResultListItem/index.ts index e8a67d8f89..68f6c8cd0c 100644 --- a/plugins/catalog/src/components/CatalogResultListItem/index.ts +++ b/plugins/catalog/src/components/CatalogResultListItem/index.ts @@ -15,3 +15,4 @@ */ export { CatalogResultListItem } from './CatalogResultListItem'; +export type { CatalogResultListItemProps } from './CatalogResultListItem'; diff --git a/plugins/catalog/src/components/CatalogTable/CatalogTable.tsx b/plugins/catalog/src/components/CatalogTable/CatalogTable.tsx index f293710847..ec4868c20a 100644 --- a/plugins/catalog/src/components/CatalogTable/CatalogTable.tsx +++ b/plugins/catalog/src/components/CatalogTable/CatalogTable.tsx @@ -28,8 +28,8 @@ import Edit from '@material-ui/icons/Edit'; import OpenInNew from '@material-ui/icons/OpenInNew'; import { capitalize } from 'lodash'; import React, { useMemo } from 'react'; -import * as columnFactories from './columns'; -import { EntityRow } from './types'; +import { columnFactories } from './columns'; +import { CatalogTableRow } from './types'; import { CodeSnippet, Table, @@ -38,16 +38,23 @@ import { WarningPanel, } from '@backstage/core-components'; -type CatalogTableProps = { - columns?: TableColumn[]; - actions?: TableProps['actions']; -}; +/** + * Props for {@link CatalogTable}. + * + * @public + */ +export interface CatalogTableProps { + columns?: TableColumn[]; + actions?: TableProps['actions']; +} -export const CatalogTable = ({ columns, actions }: CatalogTableProps) => { +/** @public */ +export const CatalogTable = (props: CatalogTableProps) => { + const { columns, actions } = props; const { isStarredEntity, toggleStarredEntity } = useStarredEntities(); const { loading, error, entities, filters } = useEntityListProvider(); - const defaultColumns: TableColumn[] = useMemo( + const defaultColumns: TableColumn[] = useMemo( () => [ columnFactories.createNameColumn({ defaultKind: filters.kind?.value }), columnFactories.createSystemColumn(), @@ -77,7 +84,7 @@ export const CatalogTable = ({ columns, actions }: CatalogTableProps) => { ); } - const defaultActions: TableProps['actions'] = [ + const defaultActions: TableProps['actions'] = [ ({ entity }) => { const url = getEntityMetadataViewUrl(entity); return { @@ -148,7 +155,7 @@ export const CatalogTable = ({ columns, actions }: CatalogTableProps) => { const showPagination = rows.length > 20; return ( - + isLoading={loading} columns={columns || defaultColumns} options={{ diff --git a/plugins/catalog/src/components/CatalogTable/columns.tsx b/plugins/catalog/src/components/CatalogTable/columns.tsx index 683ac33132..d243be7c6f 100644 --- a/plugins/catalog/src/components/CatalogTable/columns.tsx +++ b/plugins/catalog/src/components/CatalogTable/columns.tsx @@ -20,120 +20,115 @@ import { EntityRefLinks, } from '@backstage/plugin-catalog-react'; import { Chip } from '@material-ui/core'; -import { EntityRow } from './types'; +import { CatalogTableRow } from './types'; import { OverflowTooltip, TableColumn } from '@backstage/core-components'; import { Entity } from '@backstage/catalog-model'; -type NameColumnProps = { - defaultKind?: string; -}; +// The columnFactories symbol is not directly exported, but through the +// CatalogTable.columns field. +/** @public */ +export const columnFactories = Object.freeze({ + createNameColumn(options?: { + defaultKind?: string; + }): TableColumn { + function formatContent(entity: Entity): string { + return ( + entity.metadata?.title || + formatEntityRefTitle(entity, { + defaultKind: options?.defaultKind, + }) + ); + } -export function createNameColumn( - props?: NameColumnProps, -): TableColumn { - function formatContent(entity: Entity): string { - return ( - entity.metadata?.title || - formatEntityRefTitle(entity, { - defaultKind: props?.defaultKind, - }) - ); - } - - return { - title: 'Name', - field: 'resolved.name', - highlight: true, - customSort({ entity: entity1 }, { entity: entity2 }) { - // TODO: We could implement this more efficiently by comparing field by field. - // This has similar issues as above. - return formatContent(entity1).localeCompare(formatContent(entity2)); - }, - render: ({ entity }) => ( - - ), - }; -} - -export function createSystemColumn(): TableColumn { - return { - title: 'System', - field: 'resolved.partOfSystemRelationTitle', - render: ({ resolved }) => ( - - ), - }; -} - -export function createOwnerColumn(): TableColumn { - return { - title: 'Owner', - field: 'resolved.ownedByRelationsTitle', - render: ({ resolved }) => ( - - ), - }; -} - -export function createSpecTypeColumn(): TableColumn { - return { - title: 'Type', - field: 'entity.spec.type', - hidden: true, - }; -} - -export function createSpecLifecycleColumn(): TableColumn { - return { - title: 'Lifecycle', - field: 'entity.spec.lifecycle', - }; -} - -export function createMetadataDescriptionColumn(): TableColumn { - return { - title: 'Description', - field: 'entity.metadata.description', - render: ({ entity }) => ( - - ), - width: 'auto', - }; -} - -export function createTagsColumn(): TableColumn { - return { - title: 'Tags', - field: 'entity.metadata.tags', - cellStyle: { - padding: '0px 16px 0px 20px', - }, - render: ({ entity }) => ( - <> - {entity.metadata.tags && - entity.metadata.tags.map(t => ( - - ))} - - ), - }; -} + return { + title: 'Name', + field: 'resolved.name', + highlight: true, + customSort({ entity: entity1 }, { entity: entity2 }) { + // TODO: We could implement this more efficiently by comparing field by field. + // This has similar issues as above. + return formatContent(entity1).localeCompare(formatContent(entity2)); + }, + render: ({ entity }) => ( + + ), + }; + }, + createSystemColumn(): TableColumn { + return { + title: 'System', + field: 'resolved.partOfSystemRelationTitle', + render: ({ resolved }) => ( + + ), + }; + }, + createOwnerColumn(): TableColumn { + return { + title: 'Owner', + field: 'resolved.ownedByRelationsTitle', + render: ({ resolved }) => ( + + ), + }; + }, + createSpecTypeColumn(): TableColumn { + return { + title: 'Type', + field: 'entity.spec.type', + hidden: true, + }; + }, + createSpecLifecycleColumn(): TableColumn { + return { + title: 'Lifecycle', + field: 'entity.spec.lifecycle', + }; + }, + createMetadataDescriptionColumn(): TableColumn { + return { + title: 'Description', + field: 'entity.metadata.description', + render: ({ entity }) => ( + + ), + width: 'auto', + }; + }, + createTagsColumn(): TableColumn { + return { + title: 'Tags', + field: 'entity.metadata.tags', + cellStyle: { + padding: '0px 16px 0px 20px', + }, + render: ({ entity }) => ( + <> + {entity.metadata.tags && + entity.metadata.tags.map(t => ( + + ))} + + ), + }; + }, +}); diff --git a/plugins/catalog/src/components/CatalogTable/index.ts b/plugins/catalog/src/components/CatalogTable/index.ts index e1660d6c5a..4e1b90f80a 100644 --- a/plugins/catalog/src/components/CatalogTable/index.ts +++ b/plugins/catalog/src/components/CatalogTable/index.ts @@ -15,4 +15,5 @@ */ export { CatalogTable } from './CatalogTable'; -export type { EntityRow } from './types'; +export type { CatalogTableProps } from './CatalogTable'; +export type { CatalogTableRow } from './types'; diff --git a/plugins/catalog/src/components/CatalogTable/types.ts b/plugins/catalog/src/components/CatalogTable/types.ts index 85926becc3..7eaff6faed 100644 --- a/plugins/catalog/src/components/CatalogTable/types.ts +++ b/plugins/catalog/src/components/CatalogTable/types.ts @@ -13,9 +13,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + import { Entity, EntityName } from '@backstage/catalog-model'; -export type EntityRow = { +/** @public */ +export interface CatalogTableRow { entity: Entity; resolved: { name: string; @@ -24,4 +26,4 @@ export type EntityRow = { ownedByRelationsTitle?: string; ownedByRelations: EntityName[]; }; -}; +} diff --git a/plugins/catalog/src/components/DependencyOfComponentsCard/DependencyOfComponentsCard.tsx b/plugins/catalog/src/components/DependencyOfComponentsCard/DependencyOfComponentsCard.tsx index 34057d7bed..b85a446b75 100644 --- a/plugins/catalog/src/components/DependencyOfComponentsCard/DependencyOfComponentsCard.tsx +++ b/plugins/catalog/src/components/DependencyOfComponentsCard/DependencyOfComponentsCard.tsx @@ -23,15 +23,16 @@ import { RelatedEntitiesCard, } from '../RelatedEntitiesCard'; -type Props = { +/** @public */ +export interface DependencyOfComponentsCardProps { variant?: 'gridItem'; title?: string; -}; +} -export const DependencyOfComponentsCard = ({ - variant = 'gridItem', - title = 'Dependency of components', -}: Props) => { +export function DependencyOfComponentsCard( + props: DependencyOfComponentsCardProps, +) { + const { variant = 'gridItem', title = 'Dependency of components' } = props; return ( ); -}; +} diff --git a/plugins/catalog/src/components/DependencyOfComponentsCard/index.ts b/plugins/catalog/src/components/DependencyOfComponentsCard/index.ts index bf953fe986..3d324e865d 100644 --- a/plugins/catalog/src/components/DependencyOfComponentsCard/index.ts +++ b/plugins/catalog/src/components/DependencyOfComponentsCard/index.ts @@ -15,3 +15,4 @@ */ export { DependencyOfComponentsCard } from './DependencyOfComponentsCard'; +export type { DependencyOfComponentsCardProps } from './DependencyOfComponentsCard'; diff --git a/plugins/catalog/src/components/DependsOnComponentsCard/DependsOnComponentsCard.tsx b/plugins/catalog/src/components/DependsOnComponentsCard/DependsOnComponentsCard.tsx index 7e176139ad..33e8caf870 100644 --- a/plugins/catalog/src/components/DependsOnComponentsCard/DependsOnComponentsCard.tsx +++ b/plugins/catalog/src/components/DependsOnComponentsCard/DependsOnComponentsCard.tsx @@ -23,15 +23,14 @@ import { RelatedEntitiesCard, } from '../RelatedEntitiesCard'; -type Props = { +/** @public */ +export interface DependsOnComponentsCardProps { variant?: 'gridItem'; title?: string; -}; +} -export const DependsOnComponentsCard = ({ - variant = 'gridItem', - title = 'Depends on components', -}: Props) => { +export function DependsOnComponentsCard(props: DependsOnComponentsCardProps) { + const { variant = 'gridItem', title = 'Depends on components' } = props; return ( ); -}; +} diff --git a/plugins/catalog/src/components/DependsOnComponentsCard/index.ts b/plugins/catalog/src/components/DependsOnComponentsCard/index.ts index 96525fe241..8292526270 100644 --- a/plugins/catalog/src/components/DependsOnComponentsCard/index.ts +++ b/plugins/catalog/src/components/DependsOnComponentsCard/index.ts @@ -15,3 +15,4 @@ */ export { DependsOnComponentsCard } from './DependsOnComponentsCard'; +export type { DependsOnComponentsCardProps } from './DependsOnComponentsCard'; diff --git a/plugins/catalog/src/components/DependsOnResourcesCard/DependsOnResourcesCard.tsx b/plugins/catalog/src/components/DependsOnResourcesCard/DependsOnResourcesCard.tsx index 34a8e5824d..3fe29093fe 100644 --- a/plugins/catalog/src/components/DependsOnResourcesCard/DependsOnResourcesCard.tsx +++ b/plugins/catalog/src/components/DependsOnResourcesCard/DependsOnResourcesCard.tsx @@ -23,11 +23,13 @@ import { resourceEntityColumns, } from '../RelatedEntitiesCard'; -type Props = { +/** @public */ +export interface DependsOnResourcesCardProps { variant?: 'gridItem'; -}; +} -export const DependsOnResourcesCard = ({ variant = 'gridItem' }: Props) => { +export function DependsOnResourcesCard(props: DependsOnResourcesCardProps) { + const { variant = 'gridItem' } = props; return ( { asRenderableEntities={asResourceEntities} /> ); -}; +} diff --git a/plugins/catalog/src/components/DependsOnResourcesCard/index.ts b/plugins/catalog/src/components/DependsOnResourcesCard/index.ts index 5ff94d3542..8d638e16a2 100644 --- a/plugins/catalog/src/components/DependsOnResourcesCard/index.ts +++ b/plugins/catalog/src/components/DependsOnResourcesCard/index.ts @@ -15,3 +15,4 @@ */ export { DependsOnResourcesCard } from './DependsOnResourcesCard'; +export type { DependsOnResourcesCardProps } from './DependsOnResourcesCard'; diff --git a/plugins/catalog/src/components/EntityContextMenu/EntityContextMenu.tsx b/plugins/catalog/src/components/EntityContextMenu/EntityContextMenu.tsx index 7bda1f4629..ee677c5238 100644 --- a/plugins/catalog/src/components/EntityContextMenu/EntityContextMenu.tsx +++ b/plugins/catalog/src/components/EntityContextMenu/EntityContextMenu.tsx @@ -41,30 +41,31 @@ const useStyles = makeStyles({ // NOTE(freben): Intentionally not exported at this point, since it's part of // the unstable extra context menu items concept below -type ExtraContextMenuItem = { +interface ExtraContextMenuItem { title: string; Icon: IconComponent; onClick: () => void; -}; +} // unstable context menu option, eg: disable the unregister entity menu -type contextMenuOptions = { +interface contextMenuOptions { disableUnregister: boolean; -}; +} -type Props = { +interface EntityContextMenuProps { UNSTABLE_extraContextMenuItems?: ExtraContextMenuItem[]; UNSTABLE_contextMenuOptions?: contextMenuOptions; onUnregisterEntity: () => void; onInspectEntity: () => void; -}; +} -export const EntityContextMenu = ({ - UNSTABLE_extraContextMenuItems, - UNSTABLE_contextMenuOptions, - onUnregisterEntity, - onInspectEntity, -}: Props) => { +export function EntityContextMenu(props: EntityContextMenuProps) { + const { + UNSTABLE_extraContextMenuItems, + UNSTABLE_contextMenuOptions, + onUnregisterEntity, + onInspectEntity, + } = props; const [anchorEl, setAnchorEl] = useState(); const classes = useStyles(); const unregisterPermission = useEntityPermission( @@ -150,4 +151,4 @@ export const EntityContextMenu = ({ ); -}; +} diff --git a/plugins/catalog/src/components/EntityLayout/EntityLayout.tsx b/plugins/catalog/src/components/EntityLayout/EntityLayout.tsx index 0e93e74f2d..42658109f9 100644 --- a/plugins/catalog/src/components/EntityLayout/EntityLayout.tsx +++ b/plugins/catalog/src/components/EntityLayout/EntityLayout.tsx @@ -49,7 +49,8 @@ import React, { useContext, useEffect, useState } from 'react'; import { useLocation, useNavigate } from 'react-router'; import { EntityContextMenu } from '../EntityContextMenu/EntityContextMenu'; -type SubRoute = { +/** @public */ +export type EntityLayoutRouteProps = { path: string; title: string; children: JSX.Element; @@ -59,19 +60,15 @@ type SubRoute = { const dataKey = 'plugin.catalog.entityLayoutRoute'; -const Route: (props: SubRoute) => null = () => null; +const Route: (props: EntityLayoutRouteProps) => null = () => null; attachComponentData(Route, dataKey, true); +attachComponentData(Route, 'core.gatherMountPoints', true); // This causes all mount points that are discovered within this route to use the path of the route itself -// This causes all mount points that are discovered within this route to use the path of the route itself -attachComponentData(Route, 'core.gatherMountPoints', true); - -const EntityLayoutTitle = ({ - entity, - title, -}: { +function EntityLayoutTitle(props: { title: string; entity: Entity | undefined; -}) => { +}) { + const { entity, title } = props; return ( } ); -}; +} -const headerProps = ( +function headerProps( paramKind: string | undefined, paramNamespace: string | undefined, paramName: string | undefined, entity: Entity | undefined, -): { headerTitle: string; headerType: string } => { +): { headerTitle: string; headerType: string } { const kind = paramKind ?? entity?.kind ?? ''; const namespace = paramNamespace ?? entity?.metadata.namespace ?? ''; const name = @@ -110,9 +107,10 @@ const headerProps = ( return t; })(), }; -}; +} -const EntityLabels = ({ entity }: { entity: Entity }) => { +function EntityLabels(props: { entity: Entity }) { + const { entity } = props; const ownedByRelations = getEntityRelations(entity, RELATION_OWNED_BY); return ( <> @@ -133,26 +131,27 @@ const EntityLabels = ({ entity }: { entity: Entity }) => { )} ); -}; +} // NOTE(freben): Intentionally not exported at this point, since it's part of // the unstable extra context menu items concept below -type ExtraContextMenuItem = { +interface ExtraContextMenuItem { title: string; Icon: IconComponent; onClick: () => void; -}; +} // unstable context menu option, eg: disable the unregister entity menu -type contextMenuOptions = { +interface contextMenuOptions { disableUnregister: boolean; -}; +} -type EntityLayoutProps = { +/** @public */ +export interface EntityLayoutProps { UNSTABLE_extraContextMenuItems?: ExtraContextMenuItem[]; UNSTABLE_contextMenuOptions?: contextMenuOptions; children?: React.ReactNode; -}; +} /** * EntityLayout is a compound component, which allows you to define a layout for @@ -168,12 +167,15 @@ type EntityLayoutProps = { * * * ``` + * + * @public */ -export const EntityLayout = ({ - UNSTABLE_extraContextMenuItems, - UNSTABLE_contextMenuOptions, - children, -}: EntityLayoutProps) => { +export const EntityLayout = (props: EntityLayoutProps) => { + const { + UNSTABLE_extraContextMenuItems, + UNSTABLE_contextMenuOptions, + children, + } = props; const { kind, namespace, name } = useEntityCompoundName(); const { entity, loading, error } = useContext(EntityContext); const location = useLocation(); @@ -186,18 +188,18 @@ export const EntityLayout = ({ withStrictError: 'Child of EntityLayout must be an EntityLayout.Route', }) - .getElements() // all nodes, element data, maintain structure or not? - .flatMap(({ props }) => { - if (props.if && entity && !props.if(entity)) { + .getElements() // all nodes, element data, maintain structure or not? + .flatMap(({ props: elementProps }) => { + if (elementProps.if && entity && !elementProps.if(entity)) { return []; } return [ { - path: props.path, - title: props.title, - children: props.children, - tabProps: props.tabProps, + path: elementProps.path, + title: elementProps.title, + children: elementProps.children, + tabProps: elementProps.tabProps, }, ]; }), diff --git a/plugins/catalog/src/components/EntityLayout/index.ts b/plugins/catalog/src/components/EntityLayout/index.ts index 3b0962ae36..251d213637 100644 --- a/plugins/catalog/src/components/EntityLayout/index.ts +++ b/plugins/catalog/src/components/EntityLayout/index.ts @@ -13,4 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + export { EntityLayout } from './EntityLayout'; +export type { EntityLayoutProps, EntityLayoutRouteProps } from './EntityLayout'; diff --git a/plugins/catalog/src/components/EntityLinksCard/EntityLinksCard.tsx b/plugins/catalog/src/components/EntityLinksCard/EntityLinksCard.tsx index 20229ceb14..7337e79c9b 100644 --- a/plugins/catalog/src/components/EntityLinksCard/EntityLinksCard.tsx +++ b/plugins/catalog/src/components/EntityLinksCard/EntityLinksCard.tsx @@ -21,18 +21,19 @@ import React from 'react'; import { EntityLinksEmptyState } from './EntityLinksEmptyState'; import { LinksGridList } from './LinksGridList'; import { ColumnBreakpoints } from './types'; - import { IconComponent, useApp } from '@backstage/core-plugin-api'; import { InfoCard } from '@backstage/core-components'; -type Props = { +/** @public */ +export interface EntityLinksCardProps { /** @deprecated The entity is now grabbed from context instead */ entity?: Entity; cols?: ColumnBreakpoints | number; variant?: 'gridItem'; -}; +} -export const EntityLinksCard = ({ cols = undefined, variant }: Props) => { +export function EntityLinksCard(props: EntityLinksCardProps) { + const { cols = undefined, variant } = props; const { entity } = useEntity(); const app = useApp(); @@ -57,4 +58,4 @@ export const EntityLinksCard = ({ cols = undefined, variant }: Props) => { )} ); -}; +} diff --git a/plugins/catalog/src/components/EntityLinksCard/EntityLinksEmptyState.tsx b/plugins/catalog/src/components/EntityLinksCard/EntityLinksEmptyState.tsx index 54325ffb5d..7f95a66700 100644 --- a/plugins/catalog/src/components/EntityLinksCard/EntityLinksEmptyState.tsx +++ b/plugins/catalog/src/components/EntityLinksCard/EntityLinksEmptyState.tsx @@ -40,7 +40,7 @@ const useStyles = makeStyles( { name: 'PluginCatalogEntityLinksEmptyState' }, ); -export const EntityLinksEmptyState = () => { +export function EntityLinksEmptyState() { const classes = useStyles(); return ( @@ -68,4 +68,4 @@ export const EntityLinksEmptyState = () => { ); -}; +} diff --git a/plugins/catalog/src/components/EntityLinksCard/IconLink.tsx b/plugins/catalog/src/components/EntityLinksCard/IconLink.tsx index 9a0302a64e..9afdd1f1da 100644 --- a/plugins/catalog/src/components/EntityLinksCard/IconLink.tsx +++ b/plugins/catalog/src/components/EntityLinksCard/IconLink.tsx @@ -17,7 +17,6 @@ import { makeStyles, Box, Typography } from '@material-ui/core'; import LanguageIcon from '@material-ui/icons/Language'; import React from 'react'; - import { Link } from '@backstage/core-components'; import { IconComponent } from '@backstage/core-plugin-api'; @@ -32,15 +31,12 @@ const useStyles = makeStyles({ }, }); -export const IconLink = ({ - href, - text, - Icon, -}: { +export function IconLink(props: { href: string; text?: string; Icon?: IconComponent; -}) => { +}) { + const { href, text, Icon } = props; const classes = useStyles(); return ( @@ -57,4 +53,4 @@ export const IconLink = ({ ); -}; +} diff --git a/plugins/catalog/src/components/EntityLinksCard/LinksGridList.tsx b/plugins/catalog/src/components/EntityLinksCard/LinksGridList.tsx index 3df38c4523..7861b177ce 100644 --- a/plugins/catalog/src/components/EntityLinksCard/LinksGridList.tsx +++ b/plugins/catalog/src/components/EntityLinksCard/LinksGridList.tsx @@ -21,18 +21,19 @@ import { ColumnBreakpoints } from './types'; import { useDynamicColumns } from './useDynamicColumns'; import { IconComponent } from '@backstage/core-plugin-api'; -export type LinksGridListItem = { +export interface LinksGridListItem { href: string; text?: string; Icon?: IconComponent; -}; +} -type Props = { +interface LinksGridListProps { items: LinksGridListItem[]; cols?: ColumnBreakpoints | number; -}; +} -export const LinksGridList = ({ items, cols = undefined }: Props) => { +export function LinksGridList(props: LinksGridListProps) { + const { items, cols = undefined } = props; const numOfCols = useDynamicColumns(cols); return ( @@ -44,4 +45,4 @@ export const LinksGridList = ({ items, cols = undefined }: Props) => { ))} ); -}; +} diff --git a/plugins/catalog/src/components/EntityLinksCard/index.ts b/plugins/catalog/src/components/EntityLinksCard/index.ts index fc53904a47..dcd4366066 100644 --- a/plugins/catalog/src/components/EntityLinksCard/index.ts +++ b/plugins/catalog/src/components/EntityLinksCard/index.ts @@ -15,4 +15,5 @@ */ export { EntityLinksCard } from './EntityLinksCard'; +export type { EntityLinksCardProps } from './EntityLinksCard'; export type { EntityLinksEmptyStateClassKey } from './EntityLinksEmptyState'; diff --git a/plugins/catalog/src/components/EntityNotFound/EntityNotFound.test.tsx b/plugins/catalog/src/components/EntityNotFound/EntityNotFound.test.tsx index faaba13d78..4f16078eb9 100644 --- a/plugins/catalog/src/components/EntityNotFound/EntityNotFound.test.tsx +++ b/plugins/catalog/src/components/EntityNotFound/EntityNotFound.test.tsx @@ -16,7 +16,6 @@ import React from 'react'; import { renderInTestApp } from '@backstage/test-utils'; - import { EntityNotFound } from './EntityNotFound'; describe('', () => { diff --git a/plugins/catalog/src/components/EntityNotFound/EntityNotFound.tsx b/plugins/catalog/src/components/EntityNotFound/EntityNotFound.tsx index e396e5b4aa..fca763c37b 100644 --- a/plugins/catalog/src/components/EntityNotFound/EntityNotFound.tsx +++ b/plugins/catalog/src/components/EntityNotFound/EntityNotFound.tsx @@ -18,7 +18,6 @@ import React from 'react'; import { Grid, Button, Typography } from '@material-ui/core'; import { makeStyles } from '@material-ui/core/styles'; import { BackstageTheme } from '@backstage/theme'; - import { Illo } from './Illo'; const useStyles = makeStyles(theme => ({ @@ -43,7 +42,7 @@ const useStyles = makeStyles(theme => ({ }, })); -export const EntityNotFound = () => { +export function EntityNotFound() { const classes = useStyles(); return ( @@ -67,4 +66,4 @@ export const EntityNotFound = () => { ); -}; +} diff --git a/plugins/catalog/src/components/EntityNotFound/Illo/Illo.tsx b/plugins/catalog/src/components/EntityNotFound/Illo/Illo.tsx index e0e76cd5d4..a375eca02a 100644 --- a/plugins/catalog/src/components/EntityNotFound/Illo/Illo.tsx +++ b/plugins/catalog/src/components/EntityNotFound/Illo/Illo.tsx @@ -34,7 +34,7 @@ const useStyles = makeStyles(theme => ({ }, })); -export const Illo = () => { +export function Illo() { const classes = useStyles(); return ( { alt="Illustration on entity not found page" /> ); -}; +} diff --git a/plugins/catalog/src/components/EntityNotFound/index.ts b/plugins/catalog/src/components/EntityNotFound/index.ts index 700a1097ca..aa2bd8e82b 100644 --- a/plugins/catalog/src/components/EntityNotFound/index.ts +++ b/plugins/catalog/src/components/EntityNotFound/index.ts @@ -13,4 +13,5 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + export { EntityNotFound } from './EntityNotFound'; diff --git a/plugins/catalog/src/components/EntityOrphanWarning/DeleteEntityDialog.test.tsx b/plugins/catalog/src/components/EntityOrphanWarning/DeleteEntityDialog.test.tsx index 75155aa075..c5442f3a3d 100644 --- a/plugins/catalog/src/components/EntityOrphanWarning/DeleteEntityDialog.test.tsx +++ b/plugins/catalog/src/components/EntityOrphanWarning/DeleteEntityDialog.test.tsx @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + import userEvent from '@testing-library/user-event'; import React from 'react'; import { DeleteEntityDialog } from './DeleteEntityDialog'; @@ -21,7 +22,6 @@ import { CatalogApi } from '@backstage/catalog-client'; import { catalogApiRef } from '@backstage/plugin-catalog-react'; import { screen, waitFor } from '@testing-library/react'; import { renderInTestApp, TestApiProvider } from '@backstage/test-utils'; - import { AlertApi, alertApiRef } from '@backstage/core-plugin-api'; describe('DeleteEntityDialog', () => { diff --git a/plugins/catalog/src/components/EntityOrphanWarning/DeleteEntityDialog.tsx b/plugins/catalog/src/components/EntityOrphanWarning/DeleteEntityDialog.tsx index 20aa673ea3..fc1391152a 100644 --- a/plugins/catalog/src/components/EntityOrphanWarning/DeleteEntityDialog.tsx +++ b/plugins/catalog/src/components/EntityOrphanWarning/DeleteEntityDialog.tsx @@ -21,19 +21,15 @@ import React, { useState } from 'react'; import { alertApiRef, useApi } from '@backstage/core-plugin-api'; import { assertError } from '@backstage/errors'; -type Props = { +interface DeleteEntityDialogProps { open: boolean; onClose: () => any; onConfirm: () => any; entity: Entity; -}; +} -export const DeleteEntityDialog = ({ - open, - onClose, - onConfirm, - entity, -}: Props) => { +export function DeleteEntityDialog(props: DeleteEntityDialogProps) { + const { open, onClose, onConfirm, entity } = props; const [busy, setBusy] = useState(false); const catalogApi = useApi(catalogApiRef); const alertApi = useApi(alertApiRef); @@ -72,4 +68,4 @@ export const DeleteEntityDialog = ({ ); -}; +} diff --git a/plugins/catalog/src/components/EntityOrphanWarning/EntityOrphanWarning.tsx b/plugins/catalog/src/components/EntityOrphanWarning/EntityOrphanWarning.tsx index c9d2d94609..aba28c558f 100644 --- a/plugins/catalog/src/components/EntityOrphanWarning/EntityOrphanWarning.tsx +++ b/plugins/catalog/src/components/EntityOrphanWarning/EntityOrphanWarning.tsx @@ -22,13 +22,23 @@ import { useNavigate } from 'react-router'; import { DeleteEntityDialog } from './DeleteEntityDialog'; import { useRouteRef } from '@backstage/core-plugin-api'; -export const isOrphan = (entity: Entity) => - entity?.metadata?.annotations?.['backstage.io/orphan'] === 'true'; +/** + * Returns true if the given entity has the orphan annotation given by the + * catalog. + * + * @public + */ +export function isOrphan(entity: Entity): boolean { + return entity?.metadata?.annotations?.['backstage.io/orphan'] === 'true'; +} /** - * Displays a warning alert if the entity is marked as orphan with the ability to delete said entity. + * Displays a warning alert if the entity is marked as orphan with the ability + * to delete said entity. + * + * @public */ -export const EntityOrphanWarning = () => { +export function EntityOrphanWarning() { const navigate = useNavigate(); const catalogLink = useRouteRef(catalogRouteRef); const [confirmationDialogOpen, setConfirmationDialogOpen] = useState(false); @@ -53,4 +63,4 @@ export const EntityOrphanWarning = () => { /> ); -}; +} diff --git a/plugins/catalog/src/components/EntityProcessingErrorsPanel/EntityProcessingErrorsPanel.tsx b/plugins/catalog/src/components/EntityProcessingErrorsPanel/EntityProcessingErrorsPanel.tsx index d73685655c..2eaf505ec0 100644 --- a/plugins/catalog/src/components/EntityProcessingErrorsPanel/EntityProcessingErrorsPanel.tsx +++ b/plugins/catalog/src/components/EntityProcessingErrorsPanel/EntityProcessingErrorsPanel.tsx @@ -41,12 +41,12 @@ const errorFilter = (i: EntityStatusItem) => i.level === 'error' && i.type === ENTITY_STATUS_CATALOG_PROCESSING_TYPE; -type GetOwnAndAncestorsErrorsResponse = { +interface GetOwnAndAncestorsErrorsResponse { items: { errors: SerializedError[]; entity: Entity; }[]; -}; +} async function getOwnAndAncestorsErrors( entityRef: string, @@ -66,10 +66,15 @@ async function getOwnAndAncestorsErrors( return { items }; } -export const hasCatalogProcessingErrors = async ( +/** + * Returns true if the given entity has any processing errors on it. + * + * @public + */ +export async function hasCatalogProcessingErrors( entity: Entity, context: { apis: ApiHolder }, -) => { +) { const catalogApi = context.apis.get(catalogApiRef); if (!catalogApi) { throw new Error(`No implementation available for ${catalogApiRef}`); @@ -80,12 +85,14 @@ export const hasCatalogProcessingErrors = async ( catalogApi, ); return errors.items.length > 0; -}; +} /** * Displays a list of errors from the ancestors of the current entity. + * + * @public */ -export const EntityProcessingErrorsPanel = () => { +export function EntityProcessingErrorsPanel() { const { entity } = useEntity(); const entityRef = stringifyEntityRef(entity); const catalogApi = useApi(catalogApiRef); @@ -123,4 +130,4 @@ export const EntityProcessingErrorsPanel = () => { ))} ); -}; +} diff --git a/plugins/catalog/src/components/EntitySwitch/EntitySwitch.tsx b/plugins/catalog/src/components/EntitySwitch/EntitySwitch.tsx index 87ee81c5f4..c919cdf805 100644 --- a/plugins/catalog/src/components/EntitySwitch/EntitySwitch.tsx +++ b/plugins/catalog/src/components/EntitySwitch/EntitySwitch.tsx @@ -16,7 +16,7 @@ import { Entity } from '@backstage/catalog-model'; import { useEntity } from '@backstage/plugin-catalog-react'; -import React, { PropsWithChildren, ReactNode } from 'react'; +import React from 'react'; import { attachComponentData, useApiHolder, @@ -27,34 +27,38 @@ import useAsync from 'react-use/lib/useAsync'; const ENTITY_SWITCH_KEY = 'core.backstage.entitySwitch'; -const EntitySwitchCase = (_: { +/** @public */ +export interface EntitySwitchCaseProps { if?: ( entity: Entity, context: { apis: ApiHolder }, ) => boolean | Promise; - children: ReactNode; -}) => null; + children: React.ReactNode; +} -attachComponentData(EntitySwitchCase, ENTITY_SWITCH_KEY, true); +const EntitySwitchCaseComponent = (_props: EntitySwitchCaseProps) => null; -type SwitchCase = { +attachComponentData(EntitySwitchCaseComponent, ENTITY_SWITCH_KEY, true); + +interface EntitySwitchCase { if?: ( entity: Entity, context: { apis: ApiHolder }, ) => boolean | Promise; children: JSX.Element; -}; +} type SwitchCaseResult = { if: boolean | Promise; children: JSX.Element; }; -export const EntitySwitch = ({ children }: PropsWithChildren<{}>) => { +/** @public */ +export const EntitySwitch = (props: { children: React.ReactNode }) => { const { entity } = useEntity(); const apis = useApiHolder(); const results = useElementFilter( - children, + props.children, collection => collection .selectByComponentData({ @@ -64,7 +68,7 @@ export const EntitySwitch = ({ children }: PropsWithChildren<{}>) => { .getElements() .flatMap((element: React.ReactElement) => { const { if: condition, children: elementsChildren } = - element.props as SwitchCase; + element.props as EntitySwitchCase; return [ { if: condition?.(entity, { apis }) ?? true, @@ -110,4 +114,4 @@ function AsyncEntitySwitch({ results }: { results: SwitchCaseResult[] }) { return value; } -EntitySwitch.Case = EntitySwitchCase; +EntitySwitch.Case = EntitySwitchCaseComponent; diff --git a/plugins/catalog/src/components/EntitySwitch/conditions.ts b/plugins/catalog/src/components/EntitySwitch/conditions.ts index dd95a256bc..a02170cc6f 100644 --- a/plugins/catalog/src/components/EntitySwitch/conditions.ts +++ b/plugins/catalog/src/components/EntitySwitch/conditions.ts @@ -22,10 +22,18 @@ function strCmp(a: string | undefined, b: string | undefined): boolean { ); } +/** + * For use in EntitySwitch.Case. Matches if the entity is of a given kind. + * @public + */ export function isKind(kind: string) { return (entity: Entity) => strCmp(entity?.kind, kind); } +/** + * For use in EntitySwitch.Case. Matches if the entity is a Component of a given spec.type. + * @public + */ export function isComponentType(type: string) { return (entity: Entity) => { if (!strCmp(entity?.kind, 'component')) { @@ -36,6 +44,10 @@ export function isComponentType(type: string) { }; } +/** + * For use in EntitySwitch.Case. Matches if the entity is in a given namespace. + * @public + */ export function isNamespace(namespace: string) { return (entity: Entity) => strCmp(entity?.metadata?.namespace, namespace); } diff --git a/plugins/catalog/src/components/EntitySwitch/index.ts b/plugins/catalog/src/components/EntitySwitch/index.ts index bf4caf0e66..0e2852b223 100644 --- a/plugins/catalog/src/components/EntitySwitch/index.ts +++ b/plugins/catalog/src/components/EntitySwitch/index.ts @@ -15,4 +15,5 @@ */ export { EntitySwitch } from './EntitySwitch'; +export type { EntitySwitchCaseProps } from './EntitySwitch'; export { isKind, isNamespace, isComponentType } from './conditions'; diff --git a/plugins/catalog/src/components/FilteredEntityLayout/EntityListContainer.tsx b/plugins/catalog/src/components/FilteredEntityLayout/EntityListContainer.tsx index a39ef76b87..d210d551fb 100644 --- a/plugins/catalog/src/components/FilteredEntityLayout/EntityListContainer.tsx +++ b/plugins/catalog/src/components/FilteredEntityLayout/EntityListContainer.tsx @@ -15,10 +15,13 @@ */ import { Grid } from '@material-ui/core'; -import React, { PropsWithChildren } from 'react'; +import React from 'react'; -export const EntityListContainer = ({ children }: PropsWithChildren<{}>) => ( - - {children} - -); +/** @public */ +export function EntityListContainer(props: { children: React.ReactNode }) { + return ( + + {props.children} + + ); +} diff --git a/plugins/catalog/src/components/FilteredEntityLayout/FilterContainer.tsx b/plugins/catalog/src/components/FilteredEntityLayout/FilterContainer.tsx index 683dbf8b40..4c0d17599d 100644 --- a/plugins/catalog/src/components/FilteredEntityLayout/FilterContainer.tsx +++ b/plugins/catalog/src/components/FilteredEntityLayout/FilterContainer.tsx @@ -25,9 +25,10 @@ import { useTheme, } from '@material-ui/core'; import FilterListIcon from '@material-ui/icons/FilterList'; -import React, { useState, PropsWithChildren } from 'react'; +import React, { useState } from 'react'; -export const FilterContainer = ({ children }: PropsWithChildren<{}>) => { +/** @public */ +export function FilterContainer(props: { children: React.ReactNode }) { const isMidSizeScreen = useMediaQuery(theme => theme.breakpoints.down('md'), ); @@ -59,13 +60,13 @@ export const FilterContainer = ({ children }: PropsWithChildren<{}>) => { > Filters - {children} + {props.children} ) : ( - {children} + {props.children} ); -}; +} diff --git a/plugins/catalog/src/components/FilteredEntityLayout/FilteredEntityLayout.tsx b/plugins/catalog/src/components/FilteredEntityLayout/FilteredEntityLayout.tsx index 628ad9fee6..8e595fe5cd 100644 --- a/plugins/catalog/src/components/FilteredEntityLayout/FilteredEntityLayout.tsx +++ b/plugins/catalog/src/components/FilteredEntityLayout/FilteredEntityLayout.tsx @@ -15,10 +15,13 @@ */ import { Grid } from '@material-ui/core'; -import React, { PropsWithChildren } from 'react'; +import React from 'react'; -export const FilteredEntityLayout = ({ children }: PropsWithChildren<{}>) => ( - - {children} - -); +/** @public */ +export function FilteredEntityLayout(props: { children: React.ReactNode }) { + return ( + + {props.children} + + ); +} diff --git a/plugins/catalog/src/components/HasComponentsCard/HasComponentsCard.tsx b/plugins/catalog/src/components/HasComponentsCard/HasComponentsCard.tsx index cefdb15a6e..5864028694 100644 --- a/plugins/catalog/src/components/HasComponentsCard/HasComponentsCard.tsx +++ b/plugins/catalog/src/components/HasComponentsCard/HasComponentsCard.tsx @@ -23,11 +23,13 @@ import { RelatedEntitiesCard, } from '../RelatedEntitiesCard'; -type Props = { +/** @public */ +export interface HasComponentsCardProps { variant?: 'gridItem'; -}; +} -export const HasComponentsCard = ({ variant = 'gridItem' }: Props) => { +export function HasComponentsCard(props: HasComponentsCardProps) { + const { variant = 'gridItem' } = props; return ( { asRenderableEntities={asComponentEntities} /> ); -}; +} diff --git a/plugins/catalog/src/components/HasComponentsCard/index.ts b/plugins/catalog/src/components/HasComponentsCard/index.ts index 73088bd575..86038b6030 100644 --- a/plugins/catalog/src/components/HasComponentsCard/index.ts +++ b/plugins/catalog/src/components/HasComponentsCard/index.ts @@ -15,3 +15,4 @@ */ export { HasComponentsCard } from './HasComponentsCard'; +export type { HasComponentsCardProps } from './HasComponentsCard'; diff --git a/plugins/catalog/src/components/HasResourcesCard/HasResourcesCard.tsx b/plugins/catalog/src/components/HasResourcesCard/HasResourcesCard.tsx index 3a57317a06..19a48aad25 100644 --- a/plugins/catalog/src/components/HasResourcesCard/HasResourcesCard.tsx +++ b/plugins/catalog/src/components/HasResourcesCard/HasResourcesCard.tsx @@ -23,11 +23,13 @@ import { resourceEntityHelpLink, } from '../RelatedEntitiesCard'; -type Props = { +/** @public */ +export interface HasResourcesCardProps { variant?: 'gridItem'; -}; +} -export const HasResourcesCard = ({ variant = 'gridItem' }: Props) => { +export function HasResourcesCard(props: HasResourcesCardProps) { + const { variant = 'gridItem' } = props; return ( { emptyHelpLink={resourceEntityHelpLink} /> ); -}; +} diff --git a/plugins/catalog/src/components/HasResourcesCard/index.ts b/plugins/catalog/src/components/HasResourcesCard/index.ts index 5357643a62..cdbbef680b 100644 --- a/plugins/catalog/src/components/HasResourcesCard/index.ts +++ b/plugins/catalog/src/components/HasResourcesCard/index.ts @@ -15,3 +15,4 @@ */ export { HasResourcesCard } from './HasResourcesCard'; +export type { HasResourcesCardProps } from './HasResourcesCard'; diff --git a/plugins/catalog/src/components/HasSubcomponentsCard/HasSubcomponentsCard.tsx b/plugins/catalog/src/components/HasSubcomponentsCard/HasSubcomponentsCard.tsx index ddeffe3fbd..0b31bbd2be 100644 --- a/plugins/catalog/src/components/HasSubcomponentsCard/HasSubcomponentsCard.tsx +++ b/plugins/catalog/src/components/HasSubcomponentsCard/HasSubcomponentsCard.tsx @@ -22,11 +22,13 @@ import { RelatedEntitiesCard, } from '../RelatedEntitiesCard'; -type Props = { +/** @public */ +export interface HasSubcomponentsCardProps { variant?: 'gridItem'; -}; +} -export const HasSubcomponentsCard = ({ variant = 'gridItem' }: Props) => { +export function HasSubcomponentsCard(props: HasSubcomponentsCardProps) { + const { variant = 'gridItem' } = props; return ( { emptyHelpLink="https://backstage.io/docs/features/software-catalog/descriptor-format#specsubcomponentof-optional" /> ); -}; +} diff --git a/plugins/catalog/src/components/HasSubcomponentsCard/index.ts b/plugins/catalog/src/components/HasSubcomponentsCard/index.ts index bfc74efe71..6f43967d50 100644 --- a/plugins/catalog/src/components/HasSubcomponentsCard/index.ts +++ b/plugins/catalog/src/components/HasSubcomponentsCard/index.ts @@ -15,3 +15,4 @@ */ export { HasSubcomponentsCard } from './HasSubcomponentsCard'; +export type { HasSubcomponentsCardProps } from './HasSubcomponentsCard'; diff --git a/plugins/catalog/src/components/HasSystemsCard/HasSystemsCard.tsx b/plugins/catalog/src/components/HasSystemsCard/HasSystemsCard.tsx index b3e756c8dc..7ab6831e42 100644 --- a/plugins/catalog/src/components/HasSystemsCard/HasSystemsCard.tsx +++ b/plugins/catalog/src/components/HasSystemsCard/HasSystemsCard.tsx @@ -23,11 +23,13 @@ import { systemEntityHelpLink, } from '../RelatedEntitiesCard'; -type Props = { +/** @public */ +export interface HasSystemsCardProps { variant?: 'gridItem'; -}; +} -export const HasSystemsCard = ({ variant = 'gridItem' }: Props) => { +export function HasSystemsCard(props: HasSystemsCardProps) { + const { variant = 'gridItem' } = props; return ( { emptyHelpLink={systemEntityHelpLink} /> ); -}; +} diff --git a/plugins/catalog/src/components/HasSystemsCard/index.ts b/plugins/catalog/src/components/HasSystemsCard/index.ts index e69c783bb4..71fb7539b1 100644 --- a/plugins/catalog/src/components/HasSystemsCard/index.ts +++ b/plugins/catalog/src/components/HasSystemsCard/index.ts @@ -15,3 +15,4 @@ */ export { HasSystemsCard } from './HasSystemsCard'; +export type { HasSystemsCardProps } from './HasSystemsCard'; diff --git a/plugins/catalog/src/components/RelatedEntitiesCard/RelatedEntitiesCard.tsx b/plugins/catalog/src/components/RelatedEntitiesCard/RelatedEntitiesCard.tsx index ec6ea696e2..70854c1b21 100644 --- a/plugins/catalog/src/components/RelatedEntitiesCard/RelatedEntitiesCard.tsx +++ b/plugins/catalog/src/components/RelatedEntitiesCard/RelatedEntitiesCard.tsx @@ -30,7 +30,8 @@ import { TableColumn, } from '@backstage/core-components'; -type Props = { +/** @public */ +export type RelatedEntitiesCardProps = { variant?: 'gridItem'; title: string; columns: TableColumn[]; @@ -53,7 +54,9 @@ type Props = { * * @public */ -export const RelatedEntitiesCard = (props: Props) => { +export function RelatedEntitiesCard( + props: RelatedEntitiesCardProps, +) { const { variant = 'gridItem', title, @@ -103,4 +106,4 @@ export const RelatedEntitiesCard = (props: Props) => { entities={asRenderableEntities(entities || [])} /> ); -}; +} diff --git a/plugins/catalog/src/components/RelatedEntitiesCard/index.ts b/plugins/catalog/src/components/RelatedEntitiesCard/index.ts index 8df5052de4..6012dd6553 100644 --- a/plugins/catalog/src/components/RelatedEntitiesCard/index.ts +++ b/plugins/catalog/src/components/RelatedEntitiesCard/index.ts @@ -15,4 +15,5 @@ */ export { RelatedEntitiesCard } from './RelatedEntitiesCard'; +export type { RelatedEntitiesCardProps } from './RelatedEntitiesCard'; export * from './presets'; diff --git a/plugins/catalog/src/index.ts b/plugins/catalog/src/index.ts index b7756024ac..10da3c9d6d 100644 --- a/plugins/catalog/src/index.ts +++ b/plugins/catalog/src/index.ts @@ -23,8 +23,7 @@ export * from './components/AboutCard'; export * from './components/CatalogKindHeader'; export * from './components/CatalogResultListItem'; -export { CatalogTable } from './components/CatalogTable'; -export type { EntityRow as CatalogTableRow } from './components/CatalogTable'; +export * from './components/CatalogTable'; export * from './components/CatalogTable/columns'; export * from './components/EntityLayout'; export * from './components/EntityOrphanWarning'; @@ -49,6 +48,17 @@ export { RelatedEntitiesCard, } from './plugin'; -export type { EntityLinksEmptyStateClassKey } from './components/EntityLinksCard'; +export type { DependencyOfComponentsCardProps } from './components/DependencyOfComponentsCard'; +export type { DependsOnComponentsCardProps } from './components/DependsOnComponentsCard'; +export type { DependsOnResourcesCardProps } from './components/DependsOnResourcesCard'; +export type { + EntityLinksEmptyStateClassKey, + EntityLinksCardProps, +} from './components/EntityLinksCard'; export type { SystemDiagramCardClassKey } from './components/SystemDiagramCard'; export type { DefaultCatalogPageProps } from './components/CatalogPage'; +export type { HasComponentsCardProps } from './components/HasComponentsCard'; +export type { HasResourcesCardProps } from './components/HasResourcesCard'; +export type { HasSubcomponentsCardProps } from './components/HasSubcomponentsCard'; +export type { HasSystemsCardProps } from './components/HasSystemsCard'; +export type { RelatedEntitiesCardProps } from './components/RelatedEntitiesCard'; diff --git a/plugins/catalog/src/plugin.ts b/plugins/catalog/src/plugin.ts index 2e4ebe9570..b4d1a61bc1 100644 --- a/plugins/catalog/src/plugin.ts +++ b/plugins/catalog/src/plugin.ts @@ -15,6 +15,7 @@ */ import { CatalogClient } from '@backstage/catalog-client'; +import { Entity } from '@backstage/catalog-model'; import { catalogApiRef, catalogRouteRef, @@ -32,7 +33,18 @@ import { fetchApiRef, storageApiRef, } from '@backstage/core-plugin-api'; +import { AboutCardProps } from './components/AboutCard'; +import { DefaultCatalogPageProps } from './components/CatalogPage'; +import { DependencyOfComponentsCardProps } from './components/DependencyOfComponentsCard'; +import { DependsOnComponentsCardProps } from './components/DependsOnComponentsCard'; +import { DependsOnResourcesCardProps } from './components/DependsOnResourcesCard'; +import { HasComponentsCardProps } from './components/HasComponentsCard'; +import { HasResourcesCardProps } from './components/HasResourcesCard'; +import { HasSubcomponentsCardProps } from './components/HasSubcomponentsCard'; +import { HasSystemsCardProps } from './components/HasSystemsCard'; +import { RelatedEntitiesCardProps } from './components/RelatedEntitiesCard'; +/** @public */ export const catalogPlugin = createPlugin({ id: 'catalog', apis: [ @@ -62,16 +74,19 @@ export const catalogPlugin = createPlugin({ }, }); -export const CatalogIndexPage = catalogPlugin.provide( - createRoutableExtension({ - name: 'CatalogIndexPage', - component: () => - import('./components/CatalogPage').then(m => m.CatalogPage), - mountPoint: catalogRouteRef, - }), -); +/** @public */ +export const CatalogIndexPage: (props: DefaultCatalogPageProps) => JSX.Element = + catalogPlugin.provide( + createRoutableExtension({ + name: 'CatalogIndexPage', + component: () => + import('./components/CatalogPage').then(m => m.CatalogPage), + mountPoint: catalogRouteRef, + }), + ); -export const CatalogEntityPage = catalogPlugin.provide( +/** @public */ +export const CatalogEntityPage: () => JSX.Element = catalogPlugin.provide( createRoutableExtension({ name: 'CatalogEntityPage', component: () => @@ -80,15 +95,18 @@ export const CatalogEntityPage = catalogPlugin.provide( }), ); -export const EntityAboutCard = catalogPlugin.provide( - createComponentExtension({ - name: 'EntityAboutCard', - component: { - lazy: () => import('./components/AboutCard').then(m => m.AboutCard), - }, - }), -); +/** @public */ +export const EntityAboutCard: (props: AboutCardProps) => JSX.Element = + catalogPlugin.provide( + createComponentExtension({ + name: 'EntityAboutCard', + component: { + lazy: () => import('./components/AboutCard').then(m => m.AboutCard), + }, + }), + ); +/** @public */ export const EntityLinksCard = catalogPlugin.provide( createComponentExtension({ name: 'EntityLinksCard', @@ -99,17 +117,22 @@ export const EntityLinksCard = catalogPlugin.provide( }), ); -export const EntityHasSystemsCard = catalogPlugin.provide( - createComponentExtension({ - name: 'EntityHasSystemsCard', - component: { - lazy: () => - import('./components/HasSystemsCard').then(m => m.HasSystemsCard), - }, - }), -); +/** @public */ +export const EntityHasSystemsCard: (props: HasSystemsCardProps) => JSX.Element = + catalogPlugin.provide( + createComponentExtension({ + name: 'EntityHasSystemsCard', + component: { + lazy: () => + import('./components/HasSystemsCard').then(m => m.HasSystemsCard), + }, + }), + ); -export const EntityHasComponentsCard = catalogPlugin.provide( +/** @public */ +export const EntityHasComponentsCard: ( + props: HasComponentsCardProps, +) => JSX.Element = catalogPlugin.provide( createComponentExtension({ name: 'EntityHasComponentsCard', component: { @@ -119,7 +142,10 @@ export const EntityHasComponentsCard = catalogPlugin.provide( }), ); -export const EntityHasSubcomponentsCard = catalogPlugin.provide( +/** @public */ +export const EntityHasSubcomponentsCard: ( + props: HasSubcomponentsCardProps, +) => JSX.Element = catalogPlugin.provide( createComponentExtension({ name: 'EntityHasSubcomponentsCard', component: { @@ -131,7 +157,10 @@ export const EntityHasSubcomponentsCard = catalogPlugin.provide( }), ); -export const EntityHasResourcesCard = catalogPlugin.provide( +/** @public */ +export const EntityHasResourcesCard: ( + props: HasResourcesCardProps, +) => JSX.Element = catalogPlugin.provide( createComponentExtension({ name: 'EntityHasResourcesCard', component: { @@ -141,7 +170,10 @@ export const EntityHasResourcesCard = catalogPlugin.provide( }), ); -export const EntityDependsOnComponentsCard = catalogPlugin.provide( +/** @public */ +export const EntityDependsOnComponentsCard: ( + props: DependsOnComponentsCardProps, +) => JSX.Element = catalogPlugin.provide( createComponentExtension({ name: 'EntityDependsOnComponentsCard', component: { @@ -153,7 +185,10 @@ export const EntityDependsOnComponentsCard = catalogPlugin.provide( }), ); -export const EntityDependencyOfComponentsCard = catalogPlugin.provide( +/** @public */ +export const EntityDependencyOfComponentsCard: ( + props: DependencyOfComponentsCardProps, +) => JSX.Element = catalogPlugin.provide( createComponentExtension({ name: 'EntityDependencyOfComponentsCard', component: { @@ -165,7 +200,10 @@ export const EntityDependencyOfComponentsCard = catalogPlugin.provide( }), ); -export const EntityDependsOnResourcesCard = catalogPlugin.provide( +/** @public */ +export const EntityDependsOnResourcesCard: ( + props: DependsOnResourcesCardProps, +) => JSX.Element = catalogPlugin.provide( createComponentExtension({ name: 'EntityDependsOnResourcesCard', component: { @@ -177,7 +215,10 @@ export const EntityDependsOnResourcesCard = catalogPlugin.provide( }), ); -export const RelatedEntitiesCard = catalogPlugin.provide( +/** @public */ +export const RelatedEntitiesCard: ( + props: RelatedEntitiesCardProps, +) => JSX.Element = catalogPlugin.provide( createComponentExtension({ name: 'RelatedEntitiesCard', component: { From a31cdf9c85738d11f437f9c6e4c5cb62a76e0ed0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Wed, 16 Feb 2022 15:51:51 +0100 Subject: [PATCH 124/383] put back the actual implementation, to not break old clients MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- packages/catalog-client/api-report.md | 10 +++++ packages/catalog-client/src/CatalogClient.ts | 45 ++++++++++++++++++++ 2 files changed, 55 insertions(+) diff --git a/packages/catalog-client/api-report.md b/packages/catalog-client/api-report.md index 7427bdd235..56ba4a834f 100644 --- a/packages/catalog-client/api-report.md +++ b/packages/catalog-client/api-report.md @@ -91,6 +91,11 @@ export class CatalogClient implements CatalogApi { compoundName: EntityName, options?: CatalogRequestOptions, ): Promise; + // @deprecated (undocumented) + getLocationByEntity( + entity: Entity, + options?: CatalogRequestOptions, + ): Promise; getLocationById( id: string, options?: CatalogRequestOptions, @@ -99,6 +104,11 @@ export class CatalogClient implements CatalogApi { locationRef: string, options?: CatalogRequestOptions, ): Promise; + // @deprecated (undocumented) + getOriginLocationByEntity( + entity: Entity, + options?: CatalogRequestOptions, + ): Promise; refreshEntity( entityRef: string, options?: CatalogRequestOptions, diff --git a/packages/catalog-client/src/CatalogClient.ts b/packages/catalog-client/src/CatalogClient.ts index 84d5d02232..583f5a85bd 100644 --- a/packages/catalog-client/src/CatalogClient.ts +++ b/packages/catalog-client/src/CatalogClient.ts @@ -15,6 +15,8 @@ */ import { + ANNOTATION_LOCATION, + ANNOTATION_ORIGIN_LOCATION, Entity, EntityName, parseEntityRef, @@ -243,6 +245,49 @@ export class CatalogClient implements CatalogApi { }; } + /** + * @deprecated please use getLocationByRef instead + */ + async getOriginLocationByEntity( + entity: Entity, + options?: CatalogRequestOptions, + ): Promise { + const locationCompound = + entity.metadata.annotations?.[ANNOTATION_ORIGIN_LOCATION]; + if (!locationCompound) { + return undefined; + } + const all: { data: Location }[] = await this.requestRequired( + 'GET', + '/locations', + options, + ); + return all + .map(r => r.data) + .find(l => locationCompound === stringifyLocationRef(l)); + } + + /** + * @deprecated please use getLocationByRef instead + */ + async getLocationByEntity( + entity: Entity, + options?: CatalogRequestOptions, + ): Promise { + const locationCompound = entity.metadata.annotations?.[ANNOTATION_LOCATION]; + if (!locationCompound) { + return undefined; + } + const all: { data: Location }[] = await this.requestRequired( + 'GET', + '/locations', + options, + ); + return all + .map(r => r.data) + .find(l => locationCompound === stringifyLocationRef(l)); + } + /** * {@inheritdoc CatalogApi.getLocationByRef} */ From ba5ea41f9effab11978f22e7075a2e948b6c1158 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Wed, 16 Feb 2022 13:05:28 +0100 Subject: [PATCH 125/383] cli: rename app role to frontend Signed-off-by: Patrik Oldsberg --- .changeset/polite-bulldogs-repeat.md | 2 +- packages/app/package.json | 2 +- .../commands/build/{buildApp.ts => buildFrontend.ts} | 2 +- packages/cli/src/commands/build/command.ts | 6 +++--- packages/cli/src/commands/repo/build.ts | 6 +++--- packages/cli/src/commands/start/command.ts | 2 +- packages/cli/src/lib/role/packageRoles.test.ts | 10 +++++----- packages/cli/src/lib/role/packageRoles.ts | 4 ++-- packages/cli/src/lib/role/types.ts | 2 +- packages/techdocs-cli-embedded-app/package.json | 2 +- 10 files changed, 19 insertions(+), 19 deletions(-) rename packages/cli/src/commands/build/{buildApp.ts => buildFrontend.ts} (95%) diff --git a/.changeset/polite-bulldogs-repeat.md b/.changeset/polite-bulldogs-repeat.md index b3847aea33..cf551d17f4 100644 --- a/.changeset/polite-bulldogs-repeat.md +++ b/.changeset/polite-bulldogs-repeat.md @@ -6,7 +6,7 @@ Several changes were made to the new experimental package roles system. Unless y Renamed the `backstage-cli migrate package-role` command to `backstage-cli migrate package-roles`. -Updated the package role definitions by renaming `plugin-frontend` to `frontend-plugin`, as well as the same reshuffle to `frontend-plugin-module`, `backend-plugin`, and `backend-plugin-module`. +Updated the package role definitions by renaming `app` to `frontend`, `plugin-frontend` to `frontend-plugin`, `plugin-frontend-module` to `frontend-plugin-module`, `plugin-backend` to `backend-plugin`, and `plugin-backend-module` to `backend-plugin-module` The `backstage-cli migrate package-scripts` received several tweaks to make it more accurate. It now tries to maintain existing script arguments, like `--config` parameters for `build` and `start` scripts. diff --git a/packages/app/package.json b/packages/app/package.json index 6c3af47bc1..1ee1d56e21 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -3,7 +3,7 @@ "version": "0.2.64", "private": true, "backstage": { - "role": "app" + "role": "frontend" }, "bundled": true, "dependencies": { diff --git a/packages/cli/src/commands/build/buildApp.ts b/packages/cli/src/commands/build/buildFrontend.ts similarity index 95% rename from packages/cli/src/commands/build/buildApp.ts rename to packages/cli/src/commands/build/buildFrontend.ts index b0959b2d6a..6d7ca2e6a9 100644 --- a/packages/cli/src/commands/build/buildApp.ts +++ b/packages/cli/src/commands/build/buildFrontend.ts @@ -26,7 +26,7 @@ interface BuildAppOptions { configPaths: string[]; } -export async function buildApp(options: BuildAppOptions) { +export async function buildFrontend(options: BuildAppOptions) { const { targetDir, writeStats, configPaths } = options; const { name } = await fs.readJson(resolvePath(targetDir, 'package.json')); await buildBundle({ diff --git a/packages/cli/src/commands/build/command.ts b/packages/cli/src/commands/build/command.ts index 04b9893c31..5c8065dbb4 100644 --- a/packages/cli/src/commands/build/command.ts +++ b/packages/cli/src/commands/build/command.ts @@ -18,14 +18,14 @@ import { Command } from 'commander'; import { buildPackage, Output } from '../../lib/builder'; import { findRoleFromCommand, getRoleInfo } from '../../lib/role'; import { paths } from '../../lib/paths'; -import { buildApp } from './buildApp'; +import { buildFrontend } from './buildFrontend'; import { buildBackend } from './buildBackend'; export async function command(cmd: Command): Promise { const role = await findRoleFromCommand(cmd); - if (role === 'app') { - return buildApp({ + if (role === 'frontend') { + return buildFrontend({ targetDir: paths.targetDir, configPaths: cmd.config as string[], writeStats: Boolean(cmd.stats), diff --git a/packages/cli/src/commands/repo/build.ts b/packages/cli/src/commands/repo/build.ts index b3f9add195..ceb468ebfa 100644 --- a/packages/cli/src/commands/repo/build.ts +++ b/packages/cli/src/commands/repo/build.ts @@ -23,7 +23,7 @@ import { ExtendedPackage } from '../../lib/monorepo/PackageGraph'; import { runParallelWorkers } from '../../lib/parallel'; import { paths } from '../../lib/paths'; import { detectRoleFromPackage } from '../../lib/role'; -import { buildApp } from '../build/buildApp'; +import { buildFrontend } from '../build/buildFrontend'; import { buildBackend } from '../build/buildBackend'; function createScriptOptionsParser(anyCmd: Command, commandPath: string[]) { @@ -92,7 +92,7 @@ export async function command(cmd: Command): Promise { return []; } - if (role === 'app') { + if (role === 'frontend') { apps.push(pkg); return []; } else if (role === 'backend') { @@ -139,7 +139,7 @@ export async function command(cmd: Command): Promise { ); return; } - await buildApp({ + await buildFrontend({ targetDir: pkg.dir, configPaths: (buildOptions.config as string[]) ?? [], writeStats: Boolean(buildOptions.stats), diff --git a/packages/cli/src/commands/start/command.ts b/packages/cli/src/commands/start/command.ts index 66aaa897ef..7a11028800 100644 --- a/packages/cli/src/commands/start/command.ts +++ b/packages/cli/src/commands/start/command.ts @@ -35,7 +35,7 @@ export async function command(cmd: Command): Promise { case 'backend-plugin-module': case 'node-library': return startBackend(options); - case 'app': + case 'frontend': return startFrontend({ ...options, entry: 'src/index', diff --git a/packages/cli/src/lib/role/packageRoles.test.ts b/packages/cli/src/lib/role/packageRoles.test.ts index db6b63f327..759be462d2 100644 --- a/packages/cli/src/lib/role/packageRoles.test.ts +++ b/packages/cli/src/lib/role/packageRoles.test.ts @@ -31,8 +31,8 @@ describe('getRoleInfo', () => { output: ['types', 'esm'], }); - expect(getRoleInfo('app')).toEqual({ - role: 'app', + expect(getRoleInfo('frontend')).toEqual({ + role: 'frontend', platform: 'web', output: ['bundle'], }); @@ -56,10 +56,10 @@ describe('getRoleFromPackage', () => { expect( getRoleFromPackage({ backstage: { - role: 'app', + role: 'frontend', }, }), - ).toEqual('app'); + ).toEqual('frontend'); expect(() => getRoleFromPackage({ @@ -135,7 +135,7 @@ describe('detectRoleFromPackage', () => { 'cy:run': 'cypress run', }, }), - ).toEqual('app'); + ).toEqual('frontend'); }); it('detects the role of example-backend', () => { diff --git a/packages/cli/src/lib/role/packageRoles.ts b/packages/cli/src/lib/role/packageRoles.ts index b5fbd75b56..a33a7d715a 100644 --- a/packages/cli/src/lib/role/packageRoles.ts +++ b/packages/cli/src/lib/role/packageRoles.ts @@ -22,7 +22,7 @@ import { PackageRole, PackageRoleInfo } from './types'; const packageRoleInfos: PackageRoleInfo[] = [ { - role: 'app', + role: 'frontend', platform: 'web', output: ['bundle'], }, @@ -147,7 +147,7 @@ export function detectRoleFromPackage( const pkg = detectionSchema.parse(pkgJson); if (pkg.scripts?.start?.includes('app:serve')) { - return 'app'; + return 'frontend'; } if (pkg.scripts?.build?.includes('backend:bundle')) { return 'backend'; diff --git a/packages/cli/src/lib/role/types.ts b/packages/cli/src/lib/role/types.ts index 1b18c71620..a3961544f4 100644 --- a/packages/cli/src/lib/role/types.ts +++ b/packages/cli/src/lib/role/types.ts @@ -15,7 +15,7 @@ */ export type PackageRole = - | 'app' + | 'frontend' | 'backend' | 'cli' | 'web-library' diff --git a/packages/techdocs-cli-embedded-app/package.json b/packages/techdocs-cli-embedded-app/package.json index a36653d5dc..10b329ac80 100644 --- a/packages/techdocs-cli-embedded-app/package.json +++ b/packages/techdocs-cli-embedded-app/package.json @@ -3,7 +3,7 @@ "version": "0.2.63", "private": true, "backstage": { - "role": "app" + "role": "frontend" }, "bundled": true, "dependencies": { From b42ccffafe2daeaae7c69849e6f67c497fcf5209 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Wed, 16 Feb 2022 16:51:19 +0100 Subject: [PATCH 126/383] cli: fix for backend bundle build ignoring building of the app Signed-off-by: Patrik Oldsberg --- .changeset/polite-bulldogs-repeat.md | 2 ++ .../cli/src/lib/packager/createDistWorkspace.ts | 15 +++++++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/.changeset/polite-bulldogs-repeat.md b/.changeset/polite-bulldogs-repeat.md index cf551d17f4..c4e3babe30 100644 --- a/.changeset/polite-bulldogs-repeat.md +++ b/.changeset/polite-bulldogs-repeat.md @@ -13,3 +13,5 @@ The `backstage-cli migrate package-scripts` received several tweaks to make it m The `script` command category has been renamed to `package`. The `backstage-cli package build` command set an incorrect target directory for `app` and `backend` packages, which has been fixed. + +The `backend:bundle` and `repo build` command for the `backend` role was previously ignoring building of bundled packages that had migrated to use package roles and the standard build script, this has now been fixed. diff --git a/packages/cli/src/lib/packager/createDistWorkspace.ts b/packages/cli/src/lib/packager/createDistWorkspace.ts index ef375387ef..bce6c5c14c 100644 --- a/packages/cli/src/lib/packager/createDistWorkspace.ts +++ b/packages/cli/src/lib/packager/createDistWorkspace.ts @@ -38,6 +38,7 @@ import { Output, } from '../builder'; import { copyPackageDist } from './copyPackageDist'; +import { getRoleInfo } from '../role'; // These packages aren't safe to pack in parallel since the CLI depends on them const UNSAFE_PACKAGES = [ @@ -131,7 +132,9 @@ export async function createDistWorkspace( } const role = pkg.packageJson.backstage?.role; if (!role) { - console.warn(`Ignored ${pkg.packageJson.name} because it has no role`); + console.warn( + `Building ${pkg.packageJson.name} separately because it has no role`, + ); customBuild.push(pkg.packageJson.name); continue; } @@ -144,7 +147,15 @@ export async function createDistWorkspace( if (!buildScript.startsWith('backstage-cli package build')) { console.warn( - `Ignored ${pkg.packageJson.name} because it has a custom build script, '${buildScript}'`, + `Building ${pkg.packageJson.name} separately because it has a custom build script, '${buildScript}'`, + ); + customBuild.push(pkg.packageJson.name); + continue; + } + + if (getRoleInfo(role).output.includes('bundle')) { + console.warn( + `Building ${pkg.packageJson.name} separately because it is a bundled package`, ); customBuild.push(pkg.packageJson.name); continue; From b6925bb66d582329c18f96487ecfc111b0e7e350 Mon Sep 17 00:00:00 2001 From: blam Date: Wed, 16 Feb 2022 17:02:01 +0100 Subject: [PATCH 127/383] chore: removing the entityClient and using a helper instead to fetch the matching Templates Signed-off-by: blam --- .../src/lib/catalog/index.ts | 16 ------ plugins/scaffolder-backend/src/lib/index.ts | 1 - .../scaffolder-backend/src/service/helpers.ts | 52 ++++++++++++++++++- .../scaffolder-backend/src/service/router.ts | 19 ++++--- 4 files changed, 64 insertions(+), 24 deletions(-) delete mode 100644 plugins/scaffolder-backend/src/lib/catalog/index.ts diff --git a/plugins/scaffolder-backend/src/lib/catalog/index.ts b/plugins/scaffolder-backend/src/lib/catalog/index.ts deleted file mode 100644 index ea693b00b3..0000000000 --- a/plugins/scaffolder-backend/src/lib/catalog/index.ts +++ /dev/null @@ -1,16 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -export { CatalogEntityClient } from './CatalogEntityClient'; diff --git a/plugins/scaffolder-backend/src/lib/index.ts b/plugins/scaffolder-backend/src/lib/index.ts index dbb4348a2c..20096f9c03 100644 --- a/plugins/scaffolder-backend/src/lib/index.ts +++ b/plugins/scaffolder-backend/src/lib/index.ts @@ -14,5 +14,4 @@ * limitations under the License. */ -export * from './catalog'; export * from './templating'; diff --git a/plugins/scaffolder-backend/src/service/helpers.ts b/plugins/scaffolder-backend/src/service/helpers.ts index f86b1663a7..314823d67f 100644 --- a/plugins/scaffolder-backend/src/service/helpers.ts +++ b/plugins/scaffolder-backend/src/service/helpers.ts @@ -14,14 +14,21 @@ * limitations under the License. */ +import { CatalogApi } from '@backstage/catalog-client'; import { Entity, ANNOTATION_LOCATION, parseLocationRef, ANNOTATION_SOURCE_LOCATION, + EntityRef, + parseEntityRef, } from '@backstage/catalog-model'; import { Config } from '@backstage/config'; -import { assertError } from '@backstage/errors'; +import { assertError, ConflictError, NotFoundError } from '@backstage/errors'; +import { + TemplateEntityV1beta2, + TemplateEntityV1beta3, +} from '@backstage/plugin-scaffolder-common'; import fs from 'fs-extra'; import os from 'os'; import { Logger } from 'winston'; @@ -78,3 +85,46 @@ export function getEntityBaseUrl(entity: Entity): string | undefined { // what the url is pointing to makes sense to use as a baseUrl return undefined; } + +/** + * Will use the provided CatalogApi to go find the template entity ref that is provided with and additional token + * Returns the first matching template + */ +export async function findTemplate({ + entityRef, + token, + catalogApi, +}: { + entityRef: EntityRef; + token?: string; + catalogApi: CatalogApi; +}): Promise { + const parsedEntityRef = parseEntityRef(entityRef); + const { items } = await catalogApi.getEntities( + { + filter: { + kind: 'template', + 'metadata.name': parsedEntityRef.name, + 'metadata.namespace': parsedEntityRef.namespace, + }, + }, + { + token, + }, + ); + + const templates = items.filter( + (entity): entity is TemplateEntityV1beta3 | TemplateEntityV1beta2 => + entity.kind === 'Template', + ); + + if (templates.length !== 1) { + if (templates.length > 1) { + throw new ConflictError('Templates lookup resulted in multiple matches'); + } else { + throw new NotFoundError('Template not found'); + } + } + + return templates[0]; +} diff --git a/plugins/scaffolder-backend/src/service/router.ts b/plugins/scaffolder-backend/src/service/router.ts index 440f74d6f6..894a2da000 100644 --- a/plugins/scaffolder-backend/src/service/router.ts +++ b/plugins/scaffolder-backend/src/service/router.ts @@ -33,7 +33,7 @@ import express from 'express'; import Router from 'express-promise-router'; import { validate } from 'jsonschema'; import { Logger } from 'winston'; -import { CatalogEntityClient, TemplateFilter } from '../lib'; +import { TemplateFilter } from '../lib'; import { createBuiltinActions, DatabaseTaskStore, @@ -44,7 +44,7 @@ import { TemplateActionRegistry, } from '../scaffolder'; import { StorageTaskBroker } from '../scaffolder/tasks/StorageTaskBroker'; -import { getEntityBaseUrl, getWorkingDirectory } from './helpers'; +import { getEntityBaseUrl, getWorkingDirectory, findTemplate } from './helpers'; /** * RouterOptions @@ -93,7 +93,6 @@ export async function createRouter( const logger = parentLogger.child({ plugin: 'scaffolder' }); const workingDirectory = await getWorkingDirectory(config, logger); - const entityClient = new CatalogEntityClient(catalogClient); const integrations = ScmIntegrations.fromConfig(config); let taskBroker: TaskBroker; @@ -152,7 +151,9 @@ export async function createRouter( ); } - const template = await entityClient.findTemplate(name, { + const template = await findTemplate({ + catalogApi: catalogClient, + entityRef: { kind, namespace, name }, token: getBearerToken(req.headers.authorization), }); if (isSupportedTemplate(template)) { @@ -187,8 +188,14 @@ export async function createRouter( const templateName: string = req.body.templateName; const values = req.body.values; const token = getBearerToken(req.headers.authorization); - const template = await entityClient.findTemplate(templateName, { - token, + const template = await findTemplate({ + catalogApi: catalogClient, + entityRef: { + kind: 'template', + namespace: 'default', + name: templateName, + }, + token: getBearerToken(req.headers.authorization), }); let taskSpec: TaskSpec; From d93ac29500f1b448fa5e12e3db68c182f9a37ddb Mon Sep 17 00:00:00 2001 From: blam Date: Wed, 16 Feb 2022 17:05:04 +0100 Subject: [PATCH 128/383] chore: updating some smaller code refactor, and updating api-report Signed-off-by: blam --- plugins/scaffolder-backend/api-report.md | 14 -------------- plugins/scaffolder-backend/src/service/helpers.ts | 7 +++++-- plugins/scaffolder-backend/src/service/router.ts | 2 -- 3 files changed, 5 insertions(+), 18 deletions(-) diff --git a/plugins/scaffolder-backend/api-report.md b/plugins/scaffolder-backend/api-report.md index d2967bf88a..9694cdffa7 100644 --- a/plugins/scaffolder-backend/api-report.md +++ b/plugins/scaffolder-backend/api-report.md @@ -29,7 +29,6 @@ import { SpawnOptionsWithoutStdio } from 'child_process'; import { TaskSpec } from '@backstage/plugin-scaffolder-common'; import { TaskSpecV1beta2 } from '@backstage/plugin-scaffolder-common'; import { TaskSpecV1beta3 } from '@backstage/plugin-scaffolder-common'; -import { TemplateEntityV1beta2 } from '@backstage/plugin-scaffolder-common'; import { TemplateMetadata } from '@backstage/plugin-scaffolder-common'; import { UrlReader } from '@backstage/backend-common'; import { Writable } from 'stream'; @@ -50,19 +49,6 @@ export type ActionContext = { metadata?: TemplateMetadata; }; -// Warning: (ae-missing-release-tag) "CatalogEntityClient" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export class CatalogEntityClient { - constructor(catalogClient: CatalogApi); - findTemplate( - templateName: string, - options?: { - token?: string; - }, - ): Promise; -} - // @public export type CompletedTaskState = 'failed' | 'completed'; diff --git a/plugins/scaffolder-backend/src/service/helpers.ts b/plugins/scaffolder-backend/src/service/helpers.ts index 314823d67f..5cfc58d586 100644 --- a/plugins/scaffolder-backend/src/service/helpers.ts +++ b/plugins/scaffolder-backend/src/service/helpers.ts @@ -88,7 +88,7 @@ export function getEntityBaseUrl(entity: Entity): string | undefined { /** * Will use the provided CatalogApi to go find the template entity ref that is provided with and additional token - * Returns the first matching template + * Returns the first matching template, throws a NotFoundError or ConflictError if 0 or multiple templates are found. */ export async function findTemplate({ entityRef, @@ -99,7 +99,10 @@ export async function findTemplate({ token?: string; catalogApi: CatalogApi; }): Promise { - const parsedEntityRef = parseEntityRef(entityRef); + const parsedEntityRef = parseEntityRef(entityRef, { + defaultKind: 'template', + defaultNamespace: 'default', + }); const { items } = await catalogApi.getEntities( { filter: { diff --git a/plugins/scaffolder-backend/src/service/router.ts b/plugins/scaffolder-backend/src/service/router.ts index 894a2da000..b2978441bd 100644 --- a/plugins/scaffolder-backend/src/service/router.ts +++ b/plugins/scaffolder-backend/src/service/router.ts @@ -191,8 +191,6 @@ export async function createRouter( const template = await findTemplate({ catalogApi: catalogClient, entityRef: { - kind: 'template', - namespace: 'default', name: templateName, }, token: getBearerToken(req.headers.authorization), From 5a1594330eada1cfb9b3ac9844e01ac544a6ce16 Mon Sep 17 00:00:00 2001 From: blam Date: Wed, 16 Feb 2022 17:07:14 +0100 Subject: [PATCH 129/383] chore: added changeset Signed-off-by: blam --- .changeset/swift-dolls-bow.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .changeset/swift-dolls-bow.md diff --git a/.changeset/swift-dolls-bow.md b/.changeset/swift-dolls-bow.md new file mode 100644 index 0000000000..0e7a261055 --- /dev/null +++ b/.changeset/swift-dolls-bow.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-scaffolder-backend': minor +--- + +**BREAKING** - Removed the `CatalogEntityClient` export. This is no longer provider by this package, +but you can implement one pretty simply yourself using the `CatalogApi` and applying filters to fetch templates. From 7efee0f94c194bd3937a1057f2a19760afb0dc55 Mon Sep 17 00:00:00 2001 From: KaemonIsland Date: Fri, 4 Feb 2022 13:36:00 -0700 Subject: [PATCH 130/383] Prevent error message when owner/repo has not been set The owner/repo variables are set to undefined during the first render of the WorkflowRunDetails component. These undefined values are then passed to the useWorkflowRunsDetails hook and are returned as an error. This causes a false error message to show for a split second. The next render succesfully triggers when the owner/repo values get set, updating the details variable and returning the correct react component. A new "loading" variable has been added that checks for loading values in addition to the details value existing. I've also added an extra check for the error.message value considering it's used within the error message. This prevents the false error message from displaying. Signed-off-by: KaemonIsland --- .changeset/tall-planes-grow.md | 5 +++++ .../components/WorkflowRunDetails/WorkflowRunDetails.tsx | 7 +++++-- 2 files changed, 10 insertions(+), 2 deletions(-) create mode 100644 .changeset/tall-planes-grow.md diff --git a/.changeset/tall-planes-grow.md b/.changeset/tall-planes-grow.md new file mode 100644 index 0000000000..d5e07256c9 --- /dev/null +++ b/.changeset/tall-planes-grow.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-github-actions': patch +--- + +Fixed an issue where an error message was being displayed on the initial component render. This was due to values owner/repo not yet being set. diff --git a/plugins/github-actions/src/components/WorkflowRunDetails/WorkflowRunDetails.tsx b/plugins/github-actions/src/components/WorkflowRunDetails/WorkflowRunDetails.tsx index aebf7dfa01..d1930bf5dd 100644 --- a/plugins/github-actions/src/components/WorkflowRunDetails/WorkflowRunDetails.tsx +++ b/plugins/github-actions/src/components/WorkflowRunDetails/WorkflowRunDetails.tsx @@ -175,14 +175,17 @@ export const WorkflowRunDetails = ({ entity }: { entity: Entity }) => { const jobs = useWorkflowRunJobs({ hostname, owner, repo }); const error = projectName.error || (projectName.value && details.error); + const loading = projectName.loading || details.loading || !details.value; + const classes = useStyles(); - if (error) { + + if (error && error.message) { return ( Failed to load build, {error.message} ); - } else if (projectName.loading || details.loading) { + } else if (loading) { return ; } return ( From 6cc710c84c44832a156fd481e2e2776c06a63db1 Mon Sep 17 00:00:00 2001 From: KaemonIsland Date: Wed, 16 Feb 2022 09:24:47 -0700 Subject: [PATCH 131/383] Change useProjectName to synchronous code Signed-off-by: KaemonIsland --- .../WorkflowRunDetails/WorkflowRunDetails.tsx | 11 ++++------- .../WorkflowRunDetails/useWorkflowRunJobs.ts | 2 +- .../WorkflowRunDetails/useWorkflowRunsDetails.ts | 2 +- .../components/WorkflowRunLogs/WorkflowRunLogs.tsx | 2 +- .../WorkflowRunsTable/WorkflowRunsTable.tsx | 6 +++--- .../github-actions/src/components/useProjectName.ts | 10 ++-------- 6 files changed, 12 insertions(+), 21 deletions(-) diff --git a/plugins/github-actions/src/components/WorkflowRunDetails/WorkflowRunDetails.tsx b/plugins/github-actions/src/components/WorkflowRunDetails/WorkflowRunDetails.tsx index d1930bf5dd..1e38d23d31 100644 --- a/plugins/github-actions/src/components/WorkflowRunDetails/WorkflowRunDetails.tsx +++ b/plugins/github-actions/src/components/WorkflowRunDetails/WorkflowRunDetails.tsx @@ -170,22 +170,19 @@ export const WorkflowRunDetails = ({ entity }: { entity: Entity }) => { const hostname = readGitHubIntegrationConfigs( config.getOptionalConfigArray('integrations.github') ?? [], )[0].host; - const [owner, repo] = projectName.value ? projectName.value.split('/') : []; + const [owner, repo] = (projectName && projectName.split('/')) || []; const details = useWorkflowRunsDetails({ hostname, owner, repo }); const jobs = useWorkflowRunJobs({ hostname, owner, repo }); - const error = projectName.error || (projectName.value && details.error); - const loading = projectName.loading || details.loading || !details.value; - const classes = useStyles(); - if (error && error.message) { + if (details.error && details.error.message) { return ( - Failed to load build, {error.message} + Failed to load build, {details.error.message} ); - } else if (loading) { + } else if (details.loading) { return ; } return ( diff --git a/plugins/github-actions/src/components/WorkflowRunDetails/useWorkflowRunJobs.ts b/plugins/github-actions/src/components/WorkflowRunDetails/useWorkflowRunJobs.ts index 002d379ed1..43fd7cdb5e 100644 --- a/plugins/github-actions/src/components/WorkflowRunDetails/useWorkflowRunJobs.ts +++ b/plugins/github-actions/src/components/WorkflowRunDetails/useWorkflowRunJobs.ts @@ -37,7 +37,7 @@ export const useWorkflowRunJobs = ({ repo, id: parseInt(id, 10), }) - : Promise.reject('No repo/owner provided'); + : Promise.reject(Error('No repo/owner provided')); }, [repo, owner, id]); return jobs; }; diff --git a/plugins/github-actions/src/components/WorkflowRunDetails/useWorkflowRunsDetails.ts b/plugins/github-actions/src/components/WorkflowRunDetails/useWorkflowRunsDetails.ts index ef9b4f7ccf..dd5b62c733 100644 --- a/plugins/github-actions/src/components/WorkflowRunDetails/useWorkflowRunsDetails.ts +++ b/plugins/github-actions/src/components/WorkflowRunDetails/useWorkflowRunsDetails.ts @@ -37,7 +37,7 @@ export const useWorkflowRunsDetails = ({ repo, id: parseInt(id, 10), }) - : Promise.reject('No repo/owner provided'); + : Promise.reject(Error('No repo/owner provided')); }, [repo, owner, id]); return details; }; diff --git a/plugins/github-actions/src/components/WorkflowRunLogs/WorkflowRunLogs.tsx b/plugins/github-actions/src/components/WorkflowRunLogs/WorkflowRunLogs.tsx index 0f1670bbbc..43c1233cfb 100644 --- a/plugins/github-actions/src/components/WorkflowRunLogs/WorkflowRunLogs.tsx +++ b/plugins/github-actions/src/components/WorkflowRunLogs/WorkflowRunLogs.tsx @@ -83,7 +83,7 @@ export const WorkflowRunLogs = ({ const hostname = readGitHubIntegrationConfigs( config.getOptionalConfigArray('integrations.github') ?? [], )[0].host; - const [owner, repo] = projectName.value ? projectName.value.split('/') : []; + const [owner, repo] = (projectName && projectName.split('/')) || []; const jobLogs = useDownloadWorkflowRunLogs({ hostname, owner, diff --git a/plugins/github-actions/src/components/WorkflowRunsTable/WorkflowRunsTable.tsx b/plugins/github-actions/src/components/WorkflowRunsTable/WorkflowRunsTable.tsx index 81fa036221..aa175caab6 100644 --- a/plugins/github-actions/src/components/WorkflowRunsTable/WorkflowRunsTable.tsx +++ b/plugins/github-actions/src/components/WorkflowRunsTable/WorkflowRunsTable.tsx @@ -157,7 +157,7 @@ export const WorkflowRunsTable = ({ branch?: string; }) => { const config = useApi(configApiRef); - const { value: projectName, loading } = useProjectName(entity); + const projectName = useProjectName(entity); // TODO: Get github hostname from metadata annotation const hostname = readGitHubIntegrationConfigs( config.getOptionalConfigArray('integrations.github') ?? [], @@ -172,7 +172,7 @@ export const WorkflowRunsTable = ({ }); const githubHost = hostname || 'github.com'; - const hasNoRuns = !loading && !tableProps.loading && !runs; + const hasNoRuns = !tableProps.loading && !runs; return hasNoRuns ? ( { - const { value, loading, error } = useAsync(async () => { - return entity?.metadata.annotations?.[GITHUB_ACTIONS_ANNOTATION] ?? ''; - }); - return { value, loading, error }; -}; +export const useProjectName = (entity: Entity) => + entity?.metadata.annotations?.[GITHUB_ACTIONS_ANNOTATION] ?? ''; From 59140f62a554f5fed6270a882261a93356404e2a Mon Sep 17 00:00:00 2001 From: Karan Shah Date: Wed, 16 Feb 2022 17:15:40 +0000 Subject: [PATCH 132/383] Updated the README and description on the real API page Signed-off-by: Karan Shah --- plugins/airbrake-backend/README.md | 17 +++++++++-------- plugins/airbrake/README.md | 2 +- plugins/airbrake/dev/index.tsx | 5 ++++- 3 files changed, 14 insertions(+), 10 deletions(-) diff --git a/plugins/airbrake-backend/README.md b/plugins/airbrake-backend/README.md index c7588fdb4e..7ded50c85a 100644 --- a/plugins/airbrake-backend/README.md +++ b/plugins/airbrake-backend/README.md @@ -8,13 +8,14 @@ See the [Airbrake plugin instructions](../airbrake/README.md#how-to-use). ## Local Development -1. Set the environment variable `AIRBRAKE_API_KEY` with your API key. -2. Run this plugin in standalone mode by running `yarn start`. The configuration is already setup in the root [`app-config.yaml`](../../app-config.yaml) to pick up your API key from the environment variable above. -3. Access it from [/airbrake-backend](http://localhost:7007/airbrake-backend). Or use the Airbrake plugin which will talk to it automatically when using the real API. - -Here is an example endpoint: http://localhost:7007/airbrake-backend/health - -You can also serve the plugin in isolation by running `yarn start` in the plugin directory. This method of serving the plugin provides quicker iteration speed and a faster startup and hot reloads. -It is only meant for local development. +1. Set the environment variable `AIRBRAKE_API_KEY` with your [API key](https://airbrake.io/docs/api/#authentication). +2. Run this plugin in standalone mode by running `yarn start`. The configuration is already setup in the root [`app-config.yaml`](../../app-config.yaml) to pick up your API key from the environment variable above. + +Access it from http://localhost:7007/api/airbrake. Or use the Airbrake plugin which will talk to it automatically. + +Here are some example endpoints: + +- http://localhost:7007/api/airbrake/health +- http://localhost:7007/api/airbrake/api/v4/projects diff --git a/plugins/airbrake/README.md b/plugins/airbrake/README.md index 3a77266890..2fb5dbd2fc 100644 --- a/plugins/airbrake/README.md +++ b/plugins/airbrake/README.md @@ -63,7 +63,7 @@ The Airbrake plugin provides connectivity between Backstage and Airbrake (https: apiKey: ${AIRBRAKE_API_KEY} ``` -6. Set an environment variable `AIRBRAKE_API_KEY` with your [API Key](https://airbrake.io/docs/api/#authentication) +6. Set an environment variable `AIRBRAKE_API_KEY` with your [API key](https://airbrake.io/docs/api/#authentication) before starting Backstage backend. ## Local Development diff --git a/plugins/airbrake/dev/index.tsx b/plugins/airbrake/dev/index.tsx index d2b2d33e40..a844dfdfdc 100644 --- a/plugins/airbrake/dev/index.tsx +++ b/plugins/airbrake/dev/index.tsx @@ -54,7 +54,10 @@ createDevApp() element: ( -
+
From 03af89706c5414892c381ffc0bb1c08f0089af48 Mon Sep 17 00:00:00 2001 From: KaemonIsland Date: Wed, 16 Feb 2022 11:25:24 -0700 Subject: [PATCH 133/383] use new Error and change useProjectName to getProjectName Signed-off-by: KaemonIsland --- plugins/github-actions/src/components/Router.tsx | 2 +- .../src/components/WorkflowRunDetails/WorkflowRunDetails.tsx | 4 ++-- .../src/components/WorkflowRunDetails/useWorkflowRunJobs.ts | 2 +- .../components/WorkflowRunDetails/useWorkflowRunsDetails.ts | 2 +- .../src/components/WorkflowRunLogs/WorkflowRunLogs.tsx | 4 ++-- .../src/components/WorkflowRunsTable/WorkflowRunsTable.tsx | 4 ++-- .../src/components/{useProjectName.ts => getProjectName.ts} | 2 +- 7 files changed, 10 insertions(+), 10 deletions(-) rename plugins/github-actions/src/components/{useProjectName.ts => getProjectName.ts} (94%) diff --git a/plugins/github-actions/src/components/Router.tsx b/plugins/github-actions/src/components/Router.tsx index ea07213c45..c05a48bf99 100644 --- a/plugins/github-actions/src/components/Router.tsx +++ b/plugins/github-actions/src/components/Router.tsx @@ -20,7 +20,7 @@ import { Routes, Route } from 'react-router'; import { buildRouteRef } from '../routes'; import { WorkflowRunDetails } from './WorkflowRunDetails'; import { WorkflowRunsTable } from './WorkflowRunsTable'; -import { GITHUB_ACTIONS_ANNOTATION } from './useProjectName'; +import { GITHUB_ACTIONS_ANNOTATION } from './getProjectName'; import { MissingAnnotationEmptyState } from '@backstage/core-components'; export const isGithubActionsAvailable = (entity: Entity) => diff --git a/plugins/github-actions/src/components/WorkflowRunDetails/WorkflowRunDetails.tsx b/plugins/github-actions/src/components/WorkflowRunDetails/WorkflowRunDetails.tsx index 1e38d23d31..8a1c648a29 100644 --- a/plugins/github-actions/src/components/WorkflowRunDetails/WorkflowRunDetails.tsx +++ b/plugins/github-actions/src/components/WorkflowRunDetails/WorkflowRunDetails.tsx @@ -39,7 +39,7 @@ import ExternalLinkIcon from '@material-ui/icons/Launch'; import { DateTime } from 'luxon'; import React from 'react'; import { Job, Jobs, Step } from '../../api'; -import { useProjectName } from '../useProjectName'; +import { getProjectName } from '../getProjectName'; import { WorkflowRunStatus } from '../WorkflowRunStatus'; import { useWorkflowRunJobs } from './useWorkflowRunJobs'; import { useWorkflowRunsDetails } from './useWorkflowRunsDetails'; @@ -164,7 +164,7 @@ const JobsList = ({ jobs, entity }: { jobs?: Jobs; entity: Entity }) => { export const WorkflowRunDetails = ({ entity }: { entity: Entity }) => { const config = useApi(configApiRef); - const projectName = useProjectName(entity); + const projectName = getProjectName(entity); // TODO: Get github hostname from metadata annotation const hostname = readGitHubIntegrationConfigs( diff --git a/plugins/github-actions/src/components/WorkflowRunDetails/useWorkflowRunJobs.ts b/plugins/github-actions/src/components/WorkflowRunDetails/useWorkflowRunJobs.ts index 43fd7cdb5e..ba0f3b6ba8 100644 --- a/plugins/github-actions/src/components/WorkflowRunDetails/useWorkflowRunJobs.ts +++ b/plugins/github-actions/src/components/WorkflowRunDetails/useWorkflowRunJobs.ts @@ -37,7 +37,7 @@ export const useWorkflowRunJobs = ({ repo, id: parseInt(id, 10), }) - : Promise.reject(Error('No repo/owner provided')); + : Promise.reject(new Error('No repo/owner provided')); }, [repo, owner, id]); return jobs; }; diff --git a/plugins/github-actions/src/components/WorkflowRunDetails/useWorkflowRunsDetails.ts b/plugins/github-actions/src/components/WorkflowRunDetails/useWorkflowRunsDetails.ts index dd5b62c733..10a043161e 100644 --- a/plugins/github-actions/src/components/WorkflowRunDetails/useWorkflowRunsDetails.ts +++ b/plugins/github-actions/src/components/WorkflowRunDetails/useWorkflowRunsDetails.ts @@ -37,7 +37,7 @@ export const useWorkflowRunsDetails = ({ repo, id: parseInt(id, 10), }) - : Promise.reject(Error('No repo/owner provided')); + : Promise.reject(new Error('No repo/owner provided')); }, [repo, owner, id]); return details; }; diff --git a/plugins/github-actions/src/components/WorkflowRunLogs/WorkflowRunLogs.tsx b/plugins/github-actions/src/components/WorkflowRunLogs/WorkflowRunLogs.tsx index 43c1233cfb..1ef3f63580 100644 --- a/plugins/github-actions/src/components/WorkflowRunLogs/WorkflowRunLogs.tsx +++ b/plugins/github-actions/src/components/WorkflowRunLogs/WorkflowRunLogs.tsx @@ -33,7 +33,7 @@ import { import DescriptionIcon from '@material-ui/icons/Description'; import ExpandMoreIcon from '@material-ui/icons/ExpandMore'; import React from 'react'; -import { useProjectName } from '../useProjectName'; +import { getProjectName } from '../getProjectName'; import { useDownloadWorkflowRunLogs } from './useDownloadWorkflowRunLogs'; const useStyles = makeStyles(theme => ({ @@ -77,7 +77,7 @@ export const WorkflowRunLogs = ({ }) => { const config = useApi(configApiRef); const classes = useStyles(); - const projectName = useProjectName(entity); + const projectName = getProjectName(entity); // TODO: Get github hostname from metadata annotation const hostname = readGitHubIntegrationConfigs( diff --git a/plugins/github-actions/src/components/WorkflowRunsTable/WorkflowRunsTable.tsx b/plugins/github-actions/src/components/WorkflowRunsTable/WorkflowRunsTable.tsx index aa175caab6..8a1ba0d8e7 100644 --- a/plugins/github-actions/src/components/WorkflowRunsTable/WorkflowRunsTable.tsx +++ b/plugins/github-actions/src/components/WorkflowRunsTable/WorkflowRunsTable.tsx @@ -29,7 +29,7 @@ import { useWorkflowRuns, WorkflowRun } from '../useWorkflowRuns'; import { WorkflowRunStatus } from '../WorkflowRunStatus'; import SyncIcon from '@material-ui/icons/Sync'; import { buildRouteRef } from '../../routes'; -import { useProjectName } from '../useProjectName'; +import { getProjectName } from '../getProjectName'; import { Entity } from '@backstage/catalog-model'; import { readGitHubIntegrationConfigs } from '@backstage/integration'; @@ -157,7 +157,7 @@ export const WorkflowRunsTable = ({ branch?: string; }) => { const config = useApi(configApiRef); - const projectName = useProjectName(entity); + const projectName = getProjectName(entity); // TODO: Get github hostname from metadata annotation const hostname = readGitHubIntegrationConfigs( config.getOptionalConfigArray('integrations.github') ?? [], diff --git a/plugins/github-actions/src/components/useProjectName.ts b/plugins/github-actions/src/components/getProjectName.ts similarity index 94% rename from plugins/github-actions/src/components/useProjectName.ts rename to plugins/github-actions/src/components/getProjectName.ts index 4a3cc8d41e..b74301fcec 100644 --- a/plugins/github-actions/src/components/useProjectName.ts +++ b/plugins/github-actions/src/components/getProjectName.ts @@ -17,5 +17,5 @@ import { Entity } from '@backstage/catalog-model'; export const GITHUB_ACTIONS_ANNOTATION = 'github.com/project-slug'; -export const useProjectName = (entity: Entity) => +export const getProjectName = (entity: Entity) => entity?.metadata.annotations?.[GITHUB_ACTIONS_ANNOTATION] ?? ''; From 0268d91b7804db8a0fac65378e47d925ab6f8d54 Mon Sep 17 00:00:00 2001 From: KaemonIsland Date: Wed, 16 Feb 2022 11:31:18 -0700 Subject: [PATCH 134/383] Change getProjectName to getProjectNameFromEntity Signed-off-by: KaemonIsland --- plugins/github-actions/src/components/Cards/Cards.tsx | 2 +- .../src/components/Cards/RecentWorkflowRunsCard.tsx | 2 +- plugins/github-actions/src/components/Router.tsx | 2 +- .../src/components/WorkflowRunDetails/WorkflowRunDetails.tsx | 4 ++-- .../src/components/WorkflowRunLogs/WorkflowRunLogs.tsx | 4 ++-- .../src/components/WorkflowRunsTable/WorkflowRunsTable.tsx | 4 ++-- .../{getProjectName.ts => getProjectNameFromEntity.ts} | 2 +- plugins/github-actions/src/index.ts | 2 +- 8 files changed, 11 insertions(+), 11 deletions(-) rename plugins/github-actions/src/components/{getProjectName.ts => getProjectNameFromEntity.ts} (92%) diff --git a/plugins/github-actions/src/components/Cards/Cards.tsx b/plugins/github-actions/src/components/Cards/Cards.tsx index cb4b2190fc..c3df91bca6 100644 --- a/plugins/github-actions/src/components/Cards/Cards.tsx +++ b/plugins/github-actions/src/components/Cards/Cards.tsx @@ -24,7 +24,7 @@ import { } from '@material-ui/core'; import ExternalLinkIcon from '@material-ui/icons/Launch'; import React, { useEffect } from 'react'; -import { GITHUB_ACTIONS_ANNOTATION } from '../useProjectName'; +import { GITHUB_ACTIONS_ANNOTATION } from '../getProjectNameFromEntity'; import { useWorkflowRuns, WorkflowRun } from '../useWorkflowRuns'; import { WorkflowRunsTable } from '../WorkflowRunsTable'; import { WorkflowRunStatus } from '../WorkflowRunStatus'; diff --git a/plugins/github-actions/src/components/Cards/RecentWorkflowRunsCard.tsx b/plugins/github-actions/src/components/Cards/RecentWorkflowRunsCard.tsx index 3423bea84d..12c3223d83 100644 --- a/plugins/github-actions/src/components/Cards/RecentWorkflowRunsCard.tsx +++ b/plugins/github-actions/src/components/Cards/RecentWorkflowRunsCard.tsx @@ -18,7 +18,7 @@ import { readGitHubIntegrationConfigs } from '@backstage/integration'; import { useEntity } from '@backstage/plugin-catalog-react'; import React, { useEffect } from 'react'; import { generatePath, Link as RouterLink } from 'react-router-dom'; -import { GITHUB_ACTIONS_ANNOTATION } from '../useProjectName'; +import { GITHUB_ACTIONS_ANNOTATION } from '../getProjectNameFromEntity'; import { useWorkflowRuns } from '../useWorkflowRuns'; import { WorkflowRunStatus } from '../WorkflowRunStatus'; import { Typography } from '@material-ui/core'; diff --git a/plugins/github-actions/src/components/Router.tsx b/plugins/github-actions/src/components/Router.tsx index c05a48bf99..251ecb169a 100644 --- a/plugins/github-actions/src/components/Router.tsx +++ b/plugins/github-actions/src/components/Router.tsx @@ -20,7 +20,7 @@ import { Routes, Route } from 'react-router'; import { buildRouteRef } from '../routes'; import { WorkflowRunDetails } from './WorkflowRunDetails'; import { WorkflowRunsTable } from './WorkflowRunsTable'; -import { GITHUB_ACTIONS_ANNOTATION } from './getProjectName'; +import { GITHUB_ACTIONS_ANNOTATION } from './getProjectNameFromEntity'; import { MissingAnnotationEmptyState } from '@backstage/core-components'; export const isGithubActionsAvailable = (entity: Entity) => diff --git a/plugins/github-actions/src/components/WorkflowRunDetails/WorkflowRunDetails.tsx b/plugins/github-actions/src/components/WorkflowRunDetails/WorkflowRunDetails.tsx index 8a1c648a29..989ab27800 100644 --- a/plugins/github-actions/src/components/WorkflowRunDetails/WorkflowRunDetails.tsx +++ b/plugins/github-actions/src/components/WorkflowRunDetails/WorkflowRunDetails.tsx @@ -39,7 +39,7 @@ import ExternalLinkIcon from '@material-ui/icons/Launch'; import { DateTime } from 'luxon'; import React from 'react'; import { Job, Jobs, Step } from '../../api'; -import { getProjectName } from '../getProjectName'; +import { getProjectNameFromEntity } from '../getProjectNameFromEntity'; import { WorkflowRunStatus } from '../WorkflowRunStatus'; import { useWorkflowRunJobs } from './useWorkflowRunJobs'; import { useWorkflowRunsDetails } from './useWorkflowRunsDetails'; @@ -164,7 +164,7 @@ const JobsList = ({ jobs, entity }: { jobs?: Jobs; entity: Entity }) => { export const WorkflowRunDetails = ({ entity }: { entity: Entity }) => { const config = useApi(configApiRef); - const projectName = getProjectName(entity); + const projectName = getProjectNameFromEntity(entity); // TODO: Get github hostname from metadata annotation const hostname = readGitHubIntegrationConfigs( diff --git a/plugins/github-actions/src/components/WorkflowRunLogs/WorkflowRunLogs.tsx b/plugins/github-actions/src/components/WorkflowRunLogs/WorkflowRunLogs.tsx index 1ef3f63580..bf66399288 100644 --- a/plugins/github-actions/src/components/WorkflowRunLogs/WorkflowRunLogs.tsx +++ b/plugins/github-actions/src/components/WorkflowRunLogs/WorkflowRunLogs.tsx @@ -33,7 +33,7 @@ import { import DescriptionIcon from '@material-ui/icons/Description'; import ExpandMoreIcon from '@material-ui/icons/ExpandMore'; import React from 'react'; -import { getProjectName } from '../getProjectName'; +import { getProjectNameFromEntity } from '../getProjectNameFromEntity'; import { useDownloadWorkflowRunLogs } from './useDownloadWorkflowRunLogs'; const useStyles = makeStyles(theme => ({ @@ -77,7 +77,7 @@ export const WorkflowRunLogs = ({ }) => { const config = useApi(configApiRef); const classes = useStyles(); - const projectName = getProjectName(entity); + const projectName = getProjectNameFromEntity(entity); // TODO: Get github hostname from metadata annotation const hostname = readGitHubIntegrationConfigs( diff --git a/plugins/github-actions/src/components/WorkflowRunsTable/WorkflowRunsTable.tsx b/plugins/github-actions/src/components/WorkflowRunsTable/WorkflowRunsTable.tsx index 8a1ba0d8e7..c8c42eb1bc 100644 --- a/plugins/github-actions/src/components/WorkflowRunsTable/WorkflowRunsTable.tsx +++ b/plugins/github-actions/src/components/WorkflowRunsTable/WorkflowRunsTable.tsx @@ -29,7 +29,7 @@ import { useWorkflowRuns, WorkflowRun } from '../useWorkflowRuns'; import { WorkflowRunStatus } from '../WorkflowRunStatus'; import SyncIcon from '@material-ui/icons/Sync'; import { buildRouteRef } from '../../routes'; -import { getProjectName } from '../getProjectName'; +import { getProjectNameFromEntity } from '../getProjectNameFromEntity'; import { Entity } from '@backstage/catalog-model'; import { readGitHubIntegrationConfigs } from '@backstage/integration'; @@ -157,7 +157,7 @@ export const WorkflowRunsTable = ({ branch?: string; }) => { const config = useApi(configApiRef); - const projectName = getProjectName(entity); + const projectName = getProjectNameFromEntity(entity); // TODO: Get github hostname from metadata annotation const hostname = readGitHubIntegrationConfigs( config.getOptionalConfigArray('integrations.github') ?? [], diff --git a/plugins/github-actions/src/components/getProjectName.ts b/plugins/github-actions/src/components/getProjectNameFromEntity.ts similarity index 92% rename from plugins/github-actions/src/components/getProjectName.ts rename to plugins/github-actions/src/components/getProjectNameFromEntity.ts index b74301fcec..13e0a2bdd5 100644 --- a/plugins/github-actions/src/components/getProjectName.ts +++ b/plugins/github-actions/src/components/getProjectNameFromEntity.ts @@ -17,5 +17,5 @@ import { Entity } from '@backstage/catalog-model'; export const GITHUB_ACTIONS_ANNOTATION = 'github.com/project-slug'; -export const getProjectName = (entity: Entity) => +export const getProjectNameFromEntity = (entity: Entity) => entity?.metadata.annotations?.[GITHUB_ACTIONS_ANNOTATION] ?? ''; diff --git a/plugins/github-actions/src/index.ts b/plugins/github-actions/src/index.ts index f520b9fbbc..ab041b4970 100644 --- a/plugins/github-actions/src/index.ts +++ b/plugins/github-actions/src/index.ts @@ -35,4 +35,4 @@ export { isGithubActionsAvailable as isPluginApplicableToEntity, } from './components/Router'; export * from './components/Cards'; -export { GITHUB_ACTIONS_ANNOTATION } from './components/useProjectName'; +export { GITHUB_ACTIONS_ANNOTATION } from './components/getProjectNameFromEntity'; From ad170e0ac52eccb3e10f83aaa3958e071b884151 Mon Sep 17 00:00:00 2001 From: blam Date: Wed, 16 Feb 2022 19:32:48 +0100 Subject: [PATCH 135/383] chore: remove the actual thing Signed-off-by: blam --- .../src/lib/catalog/CatalogEntityClient.ts | 58 ------------------- 1 file changed, 58 deletions(-) delete mode 100644 plugins/scaffolder-backend/src/lib/catalog/CatalogEntityClient.ts diff --git a/plugins/scaffolder-backend/src/lib/catalog/CatalogEntityClient.ts b/plugins/scaffolder-backend/src/lib/catalog/CatalogEntityClient.ts deleted file mode 100644 index e9af165b73..0000000000 --- a/plugins/scaffolder-backend/src/lib/catalog/CatalogEntityClient.ts +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { TemplateEntityV1beta2 } from '@backstage/plugin-scaffolder-common'; -import { CatalogApi } from '@backstage/catalog-client'; -import { ConflictError, NotFoundError } from '@backstage/errors'; - -/** - * A catalog client tailored for reading out entity data from the catalog. - */ -export class CatalogEntityClient { - constructor(private readonly catalogClient: CatalogApi) {} - - /** - * Looks up a single template using a template name. - * - * Throws a NotFoundError or ConflictError if 0 or multiple templates are found. - */ - async findTemplate( - templateName: string, - options?: { token?: string }, - ): Promise { - const { items: templates } = (await this.catalogClient.getEntities( - { - filter: { - kind: 'template', - 'metadata.name': templateName, - }, - }, - options, - )) as { items: TemplateEntityV1beta2[] }; - - if (templates.length !== 1) { - if (templates.length > 1) { - throw new ConflictError( - 'Templates lookup resulted in multiple matches', - ); - } else { - throw new NotFoundError('Template not found'); - } - } - - return templates[0]; - } -} From fb09a59a3f8aca12cd5da2c8d2fa7b5513381bd3 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Wed, 16 Feb 2022 19:32:58 +0100 Subject: [PATCH 136/383] kubernetes-backend: fixed potential AWS token generation issue Signed-off-by: Patrik Oldsberg --- .changeset/dirty-ears-wash.md | 5 ++++ .../AwsIamKubernetesAuthTranslator.ts | 29 +++++-------------- 2 files changed, 13 insertions(+), 21 deletions(-) create mode 100644 .changeset/dirty-ears-wash.md diff --git a/.changeset/dirty-ears-wash.md b/.changeset/dirty-ears-wash.md new file mode 100644 index 0000000000..060dc808f1 --- /dev/null +++ b/.changeset/dirty-ears-wash.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-kubernetes-backend': patch +--- + +Fixed a potential issue in AWS token encoding, where they might not always be properly converted to URL-safe base64. diff --git a/plugins/kubernetes-backend/src/kubernetes-auth-translator/AwsIamKubernetesAuthTranslator.ts b/plugins/kubernetes-backend/src/kubernetes-auth-translator/AwsIamKubernetesAuthTranslator.ts index 4af39d4f26..9f1353ca5c 100644 --- a/plugins/kubernetes-backend/src/kubernetes-auth-translator/AwsIamKubernetesAuthTranslator.ts +++ b/plugins/kubernetes-backend/src/kubernetes-auth-translator/AwsIamKubernetesAuthTranslator.ts @@ -18,19 +18,6 @@ import { sign } from 'aws4'; import { AWSClusterDetails } from '../types/types'; import { KubernetesAuthTranslator } from './types'; -const base64 = (str: string) => - Buffer.from(str.toString(), 'binary').toString('base64'); -const prepend = (prep: string) => (str: string) => prep + str; -const replace = - (search: string | RegExp, substitution: string) => (str: string) => - str.replace(search, substitution); -const pipe = - (fns: ReadonlyArray) => - (thing: string): string => - fns.reduce((val, fn) => fn(val), thing); -const removePadding = replace(/=+$/, ''); -const makeUrlSafe = pipe([replace('+', '-'), replace('/', '_')]); - type SigningCreds = { accessKeyId: string | undefined; secretAccessKey: string | undefined; @@ -117,15 +104,15 @@ export class AwsIamKubernetesAuthTranslator signQuery: true, }; - const signedRequest = sign(request, credentials); + const signed = sign(request, credentials); + const url = `https://${signed.host}${signed.path}`; + const base64Url = Buffer.from(url, 'binary').toString('base64'); + const urlSafeBase64Url = base64Url + .replace(/\+/g, '-') + .replace(/\//g, '_') + .replace(/=+$/, ''); - return pipe([ - (signed: any) => `https://${signed.host}${signed.path}`, - base64, - removePadding, - makeUrlSafe, - prepend('k8s-aws-v1.'), - ])(signedRequest); + return `k8s-aws-v1.${urlSafeBase64Url}`; } async decorateClusterDetailsWithAuth( From c7a3ae76928697b523b9374800c268a1d80e246d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Wamej?= Date: Wed, 16 Feb 2022 19:46:01 +0100 Subject: [PATCH 137/383] fix missing bullet point Co-authored-by: Patrik Oldsberg --- docs/getting-started/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/getting-started/index.md b/docs/getting-started/index.md index 69ad4f0160..8c2f6bc865 100644 --- a/docs/getting-started/index.md +++ b/docs/getting-started/index.md @@ -25,7 +25,7 @@ guide to do a repository-based installation. [Windows Subsystem for Linux](https://docs.microsoft.com/en-us/windows/wsl/) - An account with elevated rights to install the dependencies - `curl` or `wget` installed -Node.js [Active LTS Release](https://nodejs.org/en/about/releases/) installed using one of these +- Node.js [Active LTS Release](https://nodejs.org/en/about/releases/) installed using one of these methods: - Using `nvm` (recommended) - [Installing nvm](https://github.com/nvm-sh/nvm#install--update-script) From 2f1050ec1064601d9761fd281626b34119049363 Mon Sep 17 00:00:00 2001 From: Edgar Silva Date: Wed, 16 Feb 2022 18:50:21 +0000 Subject: [PATCH 138/383] Updated gitlab integration to include port Updated integration module to allow for the use of a custom port, which is often the case in self hosted gitlab instances Removed host.includes(':') check in config.ts to allow for users to include the port in the host Changed url.hostname to url.host in core.ts to include the port in the api call (otherwise it'll result in an error when trying to import a new component) Signed-off-by: Edgar Silva --- packages/integration/src/gitlab/config.ts | 6 +----- packages/integration/src/gitlab/core.ts | 2 +- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/packages/integration/src/gitlab/config.ts b/packages/integration/src/gitlab/config.ts index f74b849c74..71b4cd868f 100644 --- a/packages/integration/src/gitlab/config.ts +++ b/packages/integration/src/gitlab/config.ts @@ -82,11 +82,7 @@ export function readGitLabIntegrationConfig( baseUrl = `https://${host}`; } - if (host.includes(':')) { - throw new Error( - `Invalid GitLab integration config, host '${host}' should just be the host name (e.g. "github.com"), not a URL`, - ); - } else if (!isValidHost(host)) { + if (!isValidHost(host)) { throw new Error( `Invalid GitLab integration config, '${host}' is not a valid host`, ); diff --git a/packages/integration/src/gitlab/core.ts b/packages/integration/src/gitlab/core.ts index c5b0713340..f7dfd26d78 100644 --- a/packages/integration/src/gitlab/core.ts +++ b/packages/integration/src/gitlab/core.ts @@ -138,7 +138,7 @@ export async function getProjectId( // Convert // to: https://gitlab.com/api/v4/projects/groupA%2Fteams%2FsubgroupA%2FteamA%2Frepo const repoIDLookup = new URL( - `${url.protocol + url.hostname}/api/v4/projects/${encodeURIComponent( + `${url.protocol + url.host}/api/v4/projects/${encodeURIComponent( repo.replace(/^\//, ''), )}`, ); From 25889e1deacbe683abced804819e34ae59518bb2 Mon Sep 17 00:00:00 2001 From: Tim Hansen Date: Wed, 16 Feb 2022 13:38:52 -0700 Subject: [PATCH 139/383] Better GitHub scope/permission documentation Signed-off-by: Tim Hansen --- docs/integrations/github/locations.md | 16 ++++++++++++++++ docs/plugins/github-apps.md | 22 ++++++++++++++++------ 2 files changed, 32 insertions(+), 6 deletions(-) diff --git a/docs/integrations/github/locations.md b/docs/integrations/github/locations.md index 330b03eab9..3395c61117 100644 --- a/docs/integrations/github/locations.md +++ b/docs/integrations/github/locations.md @@ -57,6 +57,22 @@ public GitHub, for which we can infer them). The `apiBaseUrl` will always be preferred over the other if a `token` is given, otherwise `rawBaseUrl` will be preferred. +### Token scopes + +When creating a personal access token on GitHub, you must select scopes to +define the level of access for the token. The scopes required vary depending on +your use of the integration: + +- Reading software components: + - `repo` +- Reading organization data: + - `read:org` + - `read:user` + - `user:email` +- Publishing software templates: + - `repo` + - `workflow` (if templates include GitHub workflows) + ## Authentication with GitHub Apps Alternatively, Backstage can use GitHub Apps for backend authentication. This diff --git a/docs/plugins/github-apps.md b/docs/plugins/github-apps.md index 1be1502b6b..434c9a4882 100644 --- a/docs/plugins/github-apps.md +++ b/docs/plugins/github-apps.md @@ -109,11 +109,21 @@ privateKey: | This will result in backstage preventing the use of any installation that is not within the allow list. -### Permissions for pull requests +### App permissions -These are the minimum permissions required for creating a pull request with -Backstage software templates: +When creating a GitHub App, you must select permissions to define the level of +access for the app. The permissions required vary depending on your use of the +integration: -- Read and Write permissions for `Contents`. -- Read and write permissions for `Pull Requests` and `Issues`. -- Read permissions on `Metadata`. +- Reading software components: + - `Contents`: `Read-only` +- Reading organization data: + - `Members`: `Read-only` +- Publishing software templates: + + - `Administration`: `Read & write` (for creating repositories) + - `Contents`: `Read & write` + - `Metadata`: `Read-only` + - `Pull requests`: `Read & write` + - `Issues`: `Read & write` + - `Workflows`: `Read & write` (if templates include GitHub workflows) From 5ee1def55d8bea4144c191fee3a0403ed0391036 Mon Sep 17 00:00:00 2001 From: Tim Hansen Date: Wed, 16 Feb 2022 13:55:01 -0700 Subject: [PATCH 140/383] De-emphasize replaceProcessors in GitHub org doc Signed-off-by: Tim Hansen --- docs/integrations/github/org.md | 34 ++++++++++++++++++++------------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/docs/integrations/github/org.md b/docs/integrations/github/org.md index 7140ffa505..5843944e8a 100644 --- a/docs/integrations/github/org.md +++ b/docs/integrations/github/org.md @@ -22,19 +22,6 @@ entities that mirror your org setup. The processor that performs the import, `GithubOrgReaderProcessor`, comes installed with the default setup of Backstage. -If you have _replaced_ the set of processors in your installation using -`replaceProcessors`, you can import and add it as follows: - -```ts -// Typically in packages/backend/src/plugins/catalog.ts -import { GithubOrgReaderProcessor } from '@backstage/plugin-catalog-backend'; - -builder.replaceProcessors( - GithubOrgReaderProcessor.fromConfig(config, { logger }), - // ... -); -``` - ## Configuration The following configuration enables an import of the teams and users under the @@ -51,10 +38,12 @@ If Backstage is configured to use GitHub Apps authentication you must grant `Read-Only` access for `Members` under `Organization` in order to ingest users correctly. You can modify the app's permissions under the organization settings, `https://github.com/organizations/{ORG}/settings/apps/{APP_NAME}/permissions`. + ![permissions](../../assets/integrations/github/permissions.png) **Please note that when you change permissions, the app owner will get an email that must be approved first before the changes are applied.** + ![email](../../assets/integrations/github/email.png) Locations point out the specific org(s) you want to import. The `type` of these @@ -65,3 +54,22 @@ The authorization for loading org information comes from a configured [GitHub integration](locations.md#configuration). When using a personal access token, the token needs to have at least the scopes `read:org`, `read:user`, and `user:email` in the given `target`. + +## Addendum + +Some Backstage apps have _replaced_ the catalog processors to override the +default catalog processing behavior. These apps will already have a call to +`replaceProcessors` in the catalog initialization. + +In the unlikely scenario that this applies to your app, you can import and +add the `GithubOrgReaderProcessor` as follows: + +```ts +// Typically in packages/backend/src/plugins/catalog.ts +import { GithubOrgReaderProcessor } from '@backstage/plugin-catalog-backend'; + +builder.replaceProcessors( + // ... other processor replacements + GithubOrgReaderProcessor.fromConfig(config, { logger }), +); +``` From 69d312db3a6c475dc41d0eb002f47c9466322e2e Mon Sep 17 00:00:00 2001 From: Brian Fletcher Date: Wed, 16 Feb 2022 21:21:00 +0000 Subject: [PATCH 141/383] useDebouncedEffect in place of callback Signed-off-by: Brian Fletcher --- packages/core-components/src/hooks/useQueryParamState.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/core-components/src/hooks/useQueryParamState.ts b/packages/core-components/src/hooks/useQueryParamState.ts index a5a90bdd53..16cd9e18c8 100644 --- a/packages/core-components/src/hooks/useQueryParamState.ts +++ b/packages/core-components/src/hooks/useQueryParamState.ts @@ -18,7 +18,7 @@ import { isEqual } from 'lodash'; import qs from 'qs'; import { useEffect, useState } from 'react'; import { useSearchParams } from 'react-router-dom'; -import { useDebouncedCallback } from '@react-hookz/web'; +import { useDebouncedEffect } from '@react-hookz/web'; function stringify(queryParams: any): string { // Even though these setting don't look nice (e.g. escaped brackets), we should keep @@ -75,7 +75,7 @@ export function useQueryParamState( ); }, [searchParamsString, setQueryParamState, stateName]); - useDebouncedCallback( + useDebouncedEffect( () => { const queryString = joinQueryString( searchParamsString, From 0107c9aa0855a955b4d7b09e66e19272f96a71ec Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 3 Feb 2022 04:14:29 +0000 Subject: [PATCH 142/383] chore(deps): bump helmet from 4.4.1 to 5.0.2 Bumps [helmet](https://github.com/helmetjs/helmet) from 4.4.1 to 5.0.2. - [Release notes](https://github.com/helmetjs/helmet/releases) - [Changelog](https://github.com/helmetjs/helmet/blob/main/CHANGELOG.md) - [Commits](https://github.com/helmetjs/helmet/compare/v4.4.1...v5.0.2) --- updated-dependencies: - dependency-name: helmet dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .changeset/dependabot-adaba58.md | 11 +++++++++++ packages/backend-common/package.json | 2 +- plugins/app-backend/package.json | 2 +- plugins/auth-backend/package.json | 2 +- plugins/graphql-backend/package.json | 2 +- plugins/kubernetes-backend/package.json | 2 +- plugins/rollbar-backend/package.json | 2 +- plugins/scaffolder-backend/package.json | 2 +- yarn.lock | 8 ++++---- 9 files changed, 22 insertions(+), 11 deletions(-) create mode 100644 .changeset/dependabot-adaba58.md diff --git a/.changeset/dependabot-adaba58.md b/.changeset/dependabot-adaba58.md new file mode 100644 index 0000000000..2721b8f8e8 --- /dev/null +++ b/.changeset/dependabot-adaba58.md @@ -0,0 +1,11 @@ +--- +'@backstage/backend-common': patch +'@backstage/plugin-app-backend': patch +'@backstage/plugin-auth-backend': patch +'@backstage/plugin-graphql-backend': patch +'@backstage/plugin-kubernetes-backend': patch +'@backstage/plugin-rollbar-backend': patch +'@backstage/plugin-scaffolder-backend': patch +--- + +chore(deps): bump `helmet` from 4.4.1 to 5.0.2 diff --git a/packages/backend-common/package.json b/packages/backend-common/package.json index 2d33daa4d3..092a8b1ea7 100644 --- a/packages/backend-common/package.json +++ b/packages/backend-common/package.json @@ -57,7 +57,7 @@ "express-promise-router": "^4.1.0", "fs-extra": "9.1.0", "git-url-parse": "^11.6.0", - "helmet": "^4.0.0", + "helmet": "^5.0.2", "isomorphic-git": "^1.8.0", "jose": "^1.27.1", "keyv": "^4.0.3", diff --git a/plugins/app-backend/package.json b/plugins/app-backend/package.json index d04afa6874..8821171df4 100644 --- a/plugins/app-backend/package.json +++ b/plugins/app-backend/package.json @@ -42,7 +42,7 @@ "express": "^4.17.1", "express-promise-router": "^4.1.0", "fs-extra": "9.1.0", - "helmet": "^4.0.0", + "helmet": "^5.0.2", "knex": "^1.0.2", "lodash": "^4.17.21", "luxon": "^2.0.2", diff --git a/plugins/auth-backend/package.json b/plugins/auth-backend/package.json index 84ba85e8a9..246b7bc025 100644 --- a/plugins/auth-backend/package.json +++ b/plugins/auth-backend/package.json @@ -51,7 +51,7 @@ "express-session": "^1.17.1", "fs-extra": "9.1.0", "google-auth-library": "^7.6.1", - "helmet": "^4.0.0", + "helmet": "^5.0.2", "jose": "^1.27.1", "jwt-decode": "^3.1.0", "knex": "^1.0.2", diff --git a/plugins/graphql-backend/package.json b/plugins/graphql-backend/package.json index 029963cdf6..acc9749da6 100644 --- a/plugins/graphql-backend/package.json +++ b/plugins/graphql-backend/package.json @@ -45,7 +45,7 @@ "express": "^4.17.1", "express-promise-router": "^4.1.0", "graphql": "^16.0.0", - "helmet": "^4.0.0", + "helmet": "^5.0.2", "reflect-metadata": "^0.1.13", "winston": "^3.2.1", "yn": "^4.0.0" diff --git a/plugins/kubernetes-backend/package.json b/plugins/kubernetes-backend/package.json index 9ce1634f83..bf3915bd2a 100644 --- a/plugins/kubernetes-backend/package.json +++ b/plugins/kubernetes-backend/package.json @@ -50,7 +50,7 @@ "express": "^4.17.1", "express-promise-router": "^4.1.0", "fs-extra": "9.1.0", - "helmet": "^4.0.0", + "helmet": "^5.0.2", "lodash": "^4.17.21", "morgan": "^1.10.0", "stream-buffers": "^3.0.2", diff --git a/plugins/rollbar-backend/package.json b/plugins/rollbar-backend/package.json index bd2c548a3c..7ff4df1248 100644 --- a/plugins/rollbar-backend/package.json +++ b/plugins/rollbar-backend/package.json @@ -43,7 +43,7 @@ "express": "^4.17.1", "express-promise-router": "^4.1.0", "fs-extra": "9.1.0", - "helmet": "^4.0.0", + "helmet": "^5.0.2", "lodash": "^4.17.21", "morgan": "^1.10.0", "node-fetch": "^2.6.7", diff --git a/plugins/scaffolder-backend/package.json b/plugins/scaffolder-backend/package.json index ff2063bfca..b190516257 100644 --- a/plugins/scaffolder-backend/package.json +++ b/plugins/scaffolder-backend/package.json @@ -58,7 +58,7 @@ "git-url-parse": "^11.6.0", "globby": "^11.0.0", "handlebars": "^4.7.6", - "helmet": "^4.0.0", + "helmet": "^5.0.2", "isbinaryfile": "^4.0.8", "isomorphic-git": "^1.8.0", "jsonschema": "^1.2.6", diff --git a/yarn.lock b/yarn.lock index 6d91e6a177..5ee0c46df6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -13317,10 +13317,10 @@ headers-utils@^3.0.2: resolved "https://registry.npmjs.org/headers-utils/-/headers-utils-3.0.2.tgz#dfc65feae4b0e34357308aefbcafa99c895e59ef" integrity sha512-xAxZkM1dRyGV2Ou5bzMxBPNLoRCjcX+ya7KSWybQD2KwLphxsapUVK6x/02o7f4VU6GPSXch9vNY2+gkU8tYWQ== -helmet@^4.0.0: - version "4.4.1" - resolved "https://registry.npmjs.org/helmet/-/helmet-4.4.1.tgz#a17e1444d81d7a83ddc6e6f9bc6e2055b994efe7" - integrity sha512-G8tp0wUMI7i8wkMk2xLcEvESg5PiCitFMYgGRc/PwULB0RVhTP5GFdxOwvJwp9XVha8CuS8mnhmE8I/8dx/pbw== +helmet@^5.0.2: + version "5.0.2" + resolved "https://registry.npmjs.org/helmet/-/helmet-5.0.2.tgz#3264ec6bab96c82deaf65e3403c369424cb2366c" + integrity sha512-QWlwUZZ8BtlvwYVTSDTBChGf8EOcQ2LkGMnQJxSzD1mUu8CCjXJZq/BXP8eWw4kikRnzlhtYo3lCk0ucmYA3Vg== hexoid@1.0.0: version "1.0.0" From 6553985cd4e377090b23628b5ce108655b42c4de Mon Sep 17 00:00:00 2001 From: Otto Sichert Date: Wed, 16 Feb 2022 22:30:03 +0000 Subject: [PATCH 143/383] Match admonition text size to content text size Signed-off-by: Otto Sichert --- .changeset/eighty-rice-happen.md | 5 +++++ plugins/techdocs/src/reader/components/Reader.tsx | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 .changeset/eighty-rice-happen.md diff --git a/.changeset/eighty-rice-happen.md b/.changeset/eighty-rice-happen.md new file mode 100644 index 0000000000..8a1b450af7 --- /dev/null +++ b/.changeset/eighty-rice-happen.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-techdocs': patch +--- + +Match text size of admonitions to main content text size. diff --git a/plugins/techdocs/src/reader/components/Reader.tsx b/plugins/techdocs/src/reader/components/Reader.tsx index 61617ba9ec..c12b17b486 100644 --- a/plugins/techdocs/src/reader/components/Reader.tsx +++ b/plugins/techdocs/src/reader/components/Reader.tsx @@ -270,7 +270,7 @@ export const useTechDocsReaderDom = (entityRef: EntityName): Element | null => { } .md-typeset table:not([class]) th { font-weight: bold; } .md-typeset .admonition, .md-typeset details { - font-size: 1rem; + font-size: inherit; } /* style the checkmarks of the task list */ From 1433045c086acd9041d749904d05bd5a4514652c Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Wed, 16 Feb 2022 22:52:55 +0100 Subject: [PATCH 144/383] removed unused helmet dependencies Signed-off-by: Patrik Oldsberg --- .changeset/dependabot-adaba58.md | 3 --- .changeset/seven-birds-eat.md | 7 +++++++ plugins/auth-backend/package.json | 1 - plugins/rollbar-backend/package.json | 1 - plugins/scaffolder-backend/package.json | 1 - 5 files changed, 7 insertions(+), 6 deletions(-) create mode 100644 .changeset/seven-birds-eat.md diff --git a/.changeset/dependabot-adaba58.md b/.changeset/dependabot-adaba58.md index 2721b8f8e8..b10abe506a 100644 --- a/.changeset/dependabot-adaba58.md +++ b/.changeset/dependabot-adaba58.md @@ -1,11 +1,8 @@ --- '@backstage/backend-common': patch '@backstage/plugin-app-backend': patch -'@backstage/plugin-auth-backend': patch '@backstage/plugin-graphql-backend': patch '@backstage/plugin-kubernetes-backend': patch -'@backstage/plugin-rollbar-backend': patch -'@backstage/plugin-scaffolder-backend': patch --- chore(deps): bump `helmet` from 4.4.1 to 5.0.2 diff --git a/.changeset/seven-birds-eat.md b/.changeset/seven-birds-eat.md new file mode 100644 index 0000000000..1aa6cd4fff --- /dev/null +++ b/.changeset/seven-birds-eat.md @@ -0,0 +1,7 @@ +--- +'@backstage/plugin-auth-backend': patch +'@backstage/plugin-rollbar-backend': patch +'@backstage/plugin-scaffolder-backend': patch +--- + +Removed unused `helmet` dependency. diff --git a/plugins/auth-backend/package.json b/plugins/auth-backend/package.json index 246b7bc025..422683a09e 100644 --- a/plugins/auth-backend/package.json +++ b/plugins/auth-backend/package.json @@ -51,7 +51,6 @@ "express-session": "^1.17.1", "fs-extra": "9.1.0", "google-auth-library": "^7.6.1", - "helmet": "^5.0.2", "jose": "^1.27.1", "jwt-decode": "^3.1.0", "knex": "^1.0.2", diff --git a/plugins/rollbar-backend/package.json b/plugins/rollbar-backend/package.json index 7ff4df1248..91a4d38c31 100644 --- a/plugins/rollbar-backend/package.json +++ b/plugins/rollbar-backend/package.json @@ -43,7 +43,6 @@ "express": "^4.17.1", "express-promise-router": "^4.1.0", "fs-extra": "9.1.0", - "helmet": "^5.0.2", "lodash": "^4.17.21", "morgan": "^1.10.0", "node-fetch": "^2.6.7", diff --git a/plugins/scaffolder-backend/package.json b/plugins/scaffolder-backend/package.json index b190516257..69e3e16f5d 100644 --- a/plugins/scaffolder-backend/package.json +++ b/plugins/scaffolder-backend/package.json @@ -58,7 +58,6 @@ "git-url-parse": "^11.6.0", "globby": "^11.0.0", "handlebars": "^4.7.6", - "helmet": "^5.0.2", "isbinaryfile": "^4.0.8", "isomorphic-git": "^1.8.0", "jsonschema": "^1.2.6", From 7a7a6fa17f433758c57418548805df0cc2abcaa6 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Wed, 16 Feb 2022 23:31:32 +0100 Subject: [PATCH 145/383] backend-common: restore helmet setup to counteract new defaults in v5 Signed-off-by: Patrik Oldsberg --- .../src/service/lib/ServiceBuilderImpl.ts | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/packages/backend-common/src/service/lib/ServiceBuilderImpl.ts b/packages/backend-common/src/service/lib/ServiceBuilderImpl.ts index d155287b34..105704159b 100644 --- a/packages/backend-common/src/service/lib/ServiceBuilderImpl.ts +++ b/packages/backend-common/src/service/lib/ServiceBuilderImpl.ts @@ -19,7 +19,7 @@ import compression from 'compression'; import cors from 'cors'; import express, { Router, ErrorRequestHandler } from 'express'; import helmet from 'helmet'; -import { ContentSecurityPolicyOptions } from 'helmet/dist/middlewares/content-security-policy'; +import { ContentSecurityPolicyOptions } from 'helmet/dist/types/middlewares/content-security-policy'; import * as http from 'http'; import stoppable from 'stoppable'; import { Logger } from 'winston'; @@ -215,8 +215,17 @@ export class ServiceBuilderImpl implements ServiceBuilder { httpsSettings: this.httpsSettings, helmetOptions: { contentSecurityPolicy: { + useDefaults: false, directives: applyCspDirectives(this.cspOptions), }, + // These are all disabled in order to maintain backwards compatibility + // when bumping helmet v5. We can't enable these by default because + // there is no way for users to configure them. + // TODO(Rugvip): We should give control of this setup to consumers + crossOriginEmbedderPolicy: false, + crossOriginOpenerPolicy: false, + crossOriginResourcePolicy: false, + originAgentCluster: false, }, }; } @@ -232,6 +241,11 @@ export function applyCspDirectives( // It should be replaced by any other solution that doesn't require unsafe-eval. result['script-src'] = ["'self'", "'unsafe-eval'"]; + // TODO(Rugvip): This is removed so that we maintained backwards compatibility + // when bumping to helmet v5, we could remove this as well as + // skip setting `useDefaults: false` in the future. + delete result['form-action']; + if (directives) { for (const [key, value] of Object.entries(directives)) { if (value === false) { From 64acf65c03c0f108450e6e294c7769a431f67e97 Mon Sep 17 00:00:00 2001 From: Trevor Hartman Date: Mon, 14 Feb 2022 15:11:15 -0700 Subject: [PATCH 146/383] fix: allow missing k8s config in dev Signed-off-by: Trevor Hartman --- .changeset/grumpy-eels-swim.md | 5 +++++ .../src/service/KubernetesBuilder.ts | 12 ++++++++++++ 2 files changed, 17 insertions(+) create mode 100644 .changeset/grumpy-eels-swim.md diff --git a/.changeset/grumpy-eels-swim.md b/.changeset/grumpy-eels-swim.md new file mode 100644 index 0000000000..bbf5b1ca79 --- /dev/null +++ b/.changeset/grumpy-eels-swim.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-kubernetes-backend': patch +--- + +Allow missing kubernetes config in development env diff --git a/plugins/kubernetes-backend/src/service/KubernetesBuilder.ts b/plugins/kubernetes-backend/src/service/KubernetesBuilder.ts index 3333f7a0fc..da6c6c37c8 100644 --- a/plugins/kubernetes-backend/src/service/KubernetesBuilder.ts +++ b/plugins/kubernetes-backend/src/service/KubernetesBuilder.ts @@ -57,9 +57,21 @@ export class KubernetesBuilder { public async build() { const logger = this.env.logger; + const config = this.env.config; logger.info('Initializing Kubernetes backend'); + if (!config.has('kubernetes')) { + if (process.env.NODE_ENV !== 'development') { + throw new Error('Kubernetes configuration is missing'); + } + logger.warn( + 'Failed to initialize kubernetes backend: kubernetes config is missing', + ); + return { + router: Router(), + }; + } const customResources = this.buildCustomResources(); const fetcher = this.fetcher ?? this.buildFetcher(); From 1fc0cd38967ecb5ea7fec8f7ac6a589be3397e8d Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Thu, 17 Feb 2022 00:58:18 +0100 Subject: [PATCH 147/383] cli: bump webpack and rollup svgr plugins Signed-off-by: Patrik Oldsberg --- .changeset/old-dolls-visit.md | 5 + packages/cli/package.json | 5 +- packages/cli/src/lib/svgrTemplate.ts | 17 +- yarn.lock | 302 ++++++--------------------- 4 files changed, 76 insertions(+), 253 deletions(-) create mode 100644 .changeset/old-dolls-visit.md diff --git a/.changeset/old-dolls-visit.md b/.changeset/old-dolls-visit.md new file mode 100644 index 0000000000..c363ebd43f --- /dev/null +++ b/.changeset/old-dolls-visit.md @@ -0,0 +1,5 @@ +--- +'@backstage/cli': minor +--- + +Bumped Webpack and Rollup `svgr` dependencies and updated the AST template for `.icon.svg` modules. This means that SVG icon imports are now using SVGO v2. diff --git a/packages/cli/package.json b/packages/cli/package.json index c39cf261aa..b811fc8eda 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -51,8 +51,8 @@ "@sucrase/webpack-loader": "^2.0.0", "@svgr/plugin-jsx": "6.2.x", "@svgr/plugin-svgo": "6.2.x", - "@svgr/rollup": "5.5.x", - "@svgr/webpack": "5.5.x", + "@svgr/rollup": "6.2.x", + "@svgr/webpack": "6.2.x", "@types/webpack-env": "^1.15.2", "@typescript-eslint/eslint-plugin": "^5.9.0", "@typescript-eslint/parser": "^5.9.0", @@ -141,6 +141,7 @@ "@types/recursive-readdir": "^2.2.0", "@types/rollup-plugin-peer-deps-external": "^2.2.0", "@types/rollup-plugin-postcss": "^2.0.0", + "@types/svgo": "^2.6.2", "@types/tar": "^6.1.1", "@types/terser-webpack-plugin": "^5.0.4", "@types/yarnpkg__lockfile": "^1.1.4", diff --git a/packages/cli/src/lib/svgrTemplate.ts b/packages/cli/src/lib/svgrTemplate.ts index ca2a8c38fa..6af1b95e71 100644 --- a/packages/cli/src/lib/svgrTemplate.ts +++ b/packages/cli/src/lib/svgrTemplate.ts @@ -20,28 +20,23 @@ * them with .icon.svg */ export function svgrTemplate( - { template }: any, - _opts: any, - { imports, interfaces, componentName, jsx }: any, + { imports, interfaces, componentName, props, jsx }: any, + { tpl }: any, ) { - const iconName = { - ...componentName, - name: `${componentName.name.replace(/icon$/, '')}Icon`, - }; + const name = `${componentName.replace(/icon$/, '')}Icon`; const defaultExport = { type: 'ExportDefaultDeclaration', - declaration: iconName, + declaration: { type: 'Identifier', name }, }; - const typeScriptTemplate = template.smart({ plugins: ['typescript'] }); - return typeScriptTemplate.ast` + return tpl` ${imports} import SvgIcon from '@material-ui/core/SvgIcon'; ${interfaces} -const ${iconName} = props => React.createElement(SvgIcon, props, ${jsx.children}); +const ${name} = (${props}) => React.createElement(SvgIcon, ${props}, ${jsx.children}); ${defaultExport}`; } diff --git a/yarn.lock b/yarn.lock index 6d91e6a177..3456a761bb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -323,7 +323,7 @@ resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.8.tgz#31560f9f29fdf1868de8cb55049538a1b9732a60" integrity sha512-m7OkX0IdKLKPpBlJtF561YJal5y/jyI5fNfWbPxh2D/nbzzGI4qRyrD8xO2jB24u7l+5I2a43scCG2IrfjC50Q== -"@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.13.16", "@babel/core@^7.14.0", "@babel/core@^7.15.5", "@babel/core@^7.7.5": +"@babel/core@^7.1.0", "@babel/core@^7.13.16", "@babel/core@^7.14.0", "@babel/core@^7.15.5", "@babel/core@^7.7.5": version "7.16.12" resolved "https://registry.npmjs.org/@babel/core/-/core-7.16.12.tgz#5edc53c1b71e54881315923ae2aedea2522bb784" integrity sha512-dK5PtG1uiN2ikk++5OzSYsitZKny4wOCD0nrO4TqnW4BVBTQ2NGS3NgilvT/TEyxTST7LNyWV/T4tXDoD3fOgg== @@ -1049,7 +1049,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-react-constant-elements@^7.12.1": +"@babel/plugin-transform-react-constant-elements@^7.14.5": version "7.16.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.16.7.tgz#19e9e4c2df2f6c3e6b3aea11778297d81db8df62" integrity sha512-lF+cfsyTgwWkcw715J88JhMYJ5GpysYNLhLP1PkvkhTRN7B3e74R/1KsDxFxhRpSn0UUD3IWM4GvdBR2PEbbQQ== @@ -1163,7 +1163,7 @@ "@babel/helper-create-regexp-features-plugin" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" -"@babel/preset-env@^7.12.1": +"@babel/preset-env@^7.15.6": version "7.16.11" resolved "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.11.tgz#5dd88fd885fae36f88fd7c8342475c9f0abe2982" integrity sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g== @@ -1263,7 +1263,7 @@ "@babel/types" "^7.4.4" esutils "^2.0.2" -"@babel/preset-react@^7.12.5": +"@babel/preset-react@^7.14.5": version "7.16.7" resolved "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.16.7.tgz#4c18150491edc69c183ff818f9f2aecbe5d93852" integrity sha512-fWpyI8UM/HE6DfPBzD8LnhQ/OcH8AgTaqcqP2nGOXEUV+VKBR5JRN9hCk9ai+zQQ57vtm9oWeXguBCPNUjytgA== @@ -1275,7 +1275,7 @@ "@babel/plugin-transform-react-jsx-development" "^7.16.7" "@babel/plugin-transform-react-pure-annotations" "^7.16.7" -"@babel/preset-typescript@^7.13.0": +"@babel/preset-typescript@^7.13.0", "@babel/preset-typescript@^7.15.0", "@babel/preset-typescript@^7.16.0": version "7.16.7" resolved "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.16.7.tgz#ab114d68bb2020afc069cd51b37ff98a046a70b9" integrity sha512-WbVEmgXdIyvzB77AQjGBEyYPZx+8tTsO50XtfozQrkW8QB2rLJpH2lgx0TRw5EJrBxOZQ+wCcyPVQvS8tjEHpQ== @@ -1358,7 +1358,7 @@ "@babel/helper-validator-identifier" "^7.15.7" to-fast-properties "^2.0.0" -"@babel/types@^7.0.0", "@babel/types@^7.12.6", "@babel/types@^7.15.6", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": +"@babel/types@^7.0.0", "@babel/types@^7.15.6", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": version "7.16.8" resolved "https://registry.npmjs.org/@babel/types/-/types-7.16.8.tgz#0ba5da91dd71e0a4e7781a30f22770831062e3c1" integrity sha512-smN2DQc5s4M7fntyjGtyIPbRJv6wW4rU/94fmYJ7PKQuZkC0qGMHXJbg6sNGt12JmVr4k5YaptI/XtiLJBnmIg== @@ -4664,100 +4664,46 @@ dependencies: loader-utils "^1.1.0" -"@svgr/babel-plugin-add-jsx-attribute@^5.4.0": - version "5.4.0" - resolved "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz#81ef61947bb268eb9d50523446f9c638fb355906" - integrity sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg== - "@svgr/babel-plugin-add-jsx-attribute@^6.0.0": version "6.0.0" resolved "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.0.0.tgz#bd6d1ff32a31b82b601e73672a789cc41e84fe18" integrity sha512-MdPdhdWLtQsjd29Wa4pABdhWbaRMACdM1h31BY+c6FghTZqNGT7pEYdBoaGeKtdTOBC/XNFQaKVj+r/Ei2ryWA== -"@svgr/babel-plugin-remove-jsx-attribute@^5.4.0": - version "5.4.0" - resolved "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz#6b2c770c95c874654fd5e1d5ef475b78a0a962ef" - integrity sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg== - "@svgr/babel-plugin-remove-jsx-attribute@^6.0.0": version "6.0.0" resolved "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-6.0.0.tgz#58654908beebfa069681a83332544b17e5237e89" integrity sha512-aVdtfx9jlaaxc3unA6l+M9YRnKIZjOhQPthLKqmTXC8UVkBLDRGwPKo+r8n3VZN8B34+yVajzPTZ+ptTSuZZCw== -"@svgr/babel-plugin-remove-jsx-empty-expression@^5.0.1": - version "5.0.1" - resolved "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz#25621a8915ed7ad70da6cea3d0a6dbc2ea933efd" - integrity sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA== - "@svgr/babel-plugin-remove-jsx-empty-expression@^6.0.0": version "6.0.0" resolved "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-6.0.0.tgz#d06dd6e8a8f603f92f9979bb9990a1f85a4f57ba" integrity sha512-Ccj42ApsePD451AZJJf1QzTD1B/BOU392URJTeXFxSK709i0KUsGtbwyiqsKu7vsYxpTM0IA5clAKDyf9RCZyA== -"@svgr/babel-plugin-replace-jsx-attribute-value@^5.0.1": - version "5.0.1" - resolved "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz#0b221fc57f9fcd10e91fe219e2cd0dd03145a897" - integrity sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ== - "@svgr/babel-plugin-replace-jsx-attribute-value@^6.0.0": version "6.0.0" resolved "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-6.0.0.tgz#0b85837577b02c31c09c758a12932820f5245cee" integrity sha512-88V26WGyt1Sfd1emBYmBJRWMmgarrExpKNVmI9vVozha4kqs6FzQJ/Kp5+EYli1apgX44518/0+t9+NU36lThQ== -"@svgr/babel-plugin-svg-dynamic-title@^5.4.0": - version "5.4.0" - resolved "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz#139b546dd0c3186b6e5db4fefc26cb0baea729d7" - integrity sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg== - "@svgr/babel-plugin-svg-dynamic-title@^6.0.0": version "6.0.0" resolved "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-6.0.0.tgz#28236ec26f7ab9d486a487d36ae52d58ba15676f" integrity sha512-F7YXNLfGze+xv0KMQxrl2vkNbI9kzT9oDK55/kUuymh1ACyXkMV+VZWX1zEhSTfEKh7VkHVZGmVtHg8eTZ6PRg== -"@svgr/babel-plugin-svg-em-dimensions@^5.4.0": - version "5.4.0" - resolved "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz#6543f69526632a133ce5cabab965deeaea2234a0" - integrity sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw== - "@svgr/babel-plugin-svg-em-dimensions@^6.0.0": version "6.0.0" resolved "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-6.0.0.tgz#40267c5dea1b43c4f83a0eb6169e08b43d8bafce" integrity sha512-+rghFXxdIqJNLQK08kwPBD3Z22/0b2tEZ9lKiL/yTfuyj1wW8HUXu4bo/XkogATIYuXSghVQOOCwURXzHGKyZA== -"@svgr/babel-plugin-transform-react-native-svg@^5.4.0": - version "5.4.0" - resolved "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz#00bf9a7a73f1cad3948cdab1f8dfb774750f8c80" - integrity sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q== - "@svgr/babel-plugin-transform-react-native-svg@^6.0.0": version "6.0.0" resolved "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-6.0.0.tgz#eb688d0a5f539e34d268d8a516e81f5d7fede7c9" integrity sha512-VaphyHZ+xIKv5v0K0HCzyfAaLhPGJXSk2HkpYfXIOKb7DjLBv0soHDxNv6X0vr2titsxE7klb++u7iOf7TSrFQ== -"@svgr/babel-plugin-transform-svg-component@^5.5.0": - version "5.5.0" - resolved "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz#583a5e2a193e214da2f3afeb0b9e8d3250126b4a" - integrity sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ== - "@svgr/babel-plugin-transform-svg-component@^6.2.0": version "6.2.0" resolved "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-6.2.0.tgz#7ba61d9fc1fb42b0ba1a04e4630019fa7e993c4f" integrity sha512-bhYIpsORb++wpsp91fymbFkf09Z/YEKR0DnFjxvN+8JHeCUD2unnh18jIMKnDJTWtvpTaGYPXELVe4OOzFI0xg== -"@svgr/babel-preset@^5.5.0": - version "5.5.0" - resolved "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-5.5.0.tgz#8af54f3e0a8add7b1e2b0fcd5a882c55393df327" - integrity sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig== - dependencies: - "@svgr/babel-plugin-add-jsx-attribute" "^5.4.0" - "@svgr/babel-plugin-remove-jsx-attribute" "^5.4.0" - "@svgr/babel-plugin-remove-jsx-empty-expression" "^5.0.1" - "@svgr/babel-plugin-replace-jsx-attribute-value" "^5.0.1" - "@svgr/babel-plugin-svg-dynamic-title" "^5.4.0" - "@svgr/babel-plugin-svg-em-dimensions" "^5.4.0" - "@svgr/babel-plugin-transform-react-native-svg" "^5.4.0" - "@svgr/babel-plugin-transform-svg-component" "^5.5.0" - "@svgr/babel-preset@^6.2.0": version "6.2.0" resolved "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-6.2.0.tgz#1d3ad8c7664253a4be8e4a0f0e6872f30d8af627" @@ -4772,26 +4718,19 @@ "@svgr/babel-plugin-transform-react-native-svg" "^6.0.0" "@svgr/babel-plugin-transform-svg-component" "^6.2.0" -"@svgr/core@^5.5.0": - version "5.5.0" - resolved "https://registry.npmjs.org/@svgr/core/-/core-5.5.0.tgz#82e826b8715d71083120fe8f2492ec7d7874a579" - integrity sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ== +"@svgr/core@^6.2.1": + version "6.2.1" + resolved "https://registry.npmjs.org/@svgr/core/-/core-6.2.1.tgz#195de807a9f27f9e0e0d678e01084b05c54fdf61" + integrity sha512-NWufjGI2WUyrg46mKuySfviEJ6IxHUOm/8a3Ph38VCWSp+83HBraCQrpEM3F3dB6LBs5x8OElS8h3C0oOJaJAA== dependencies: - "@svgr/plugin-jsx" "^5.5.0" + "@svgr/plugin-jsx" "^6.2.1" camelcase "^6.2.0" - cosmiconfig "^7.0.0" + cosmiconfig "^7.0.1" -"@svgr/hast-util-to-babel-ast@^5.5.0": - version "5.5.0" - resolved "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz#5ee52a9c2533f73e63f8f22b779f93cd432a5461" - integrity sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ== - dependencies: - "@babel/types" "^7.12.6" - -"@svgr/hast-util-to-babel-ast@^6.0.0": - version "6.0.0" - resolved "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-6.0.0.tgz#423329ad866b6c169009cc82b5e28ffee80c857c" - integrity sha512-S+TxtCdDyRGafH1VG1t/uPZ87aOYOHzWL8kqz4FoSZcIbzWA6rnOmjNViNiDzqmEpzp2PW5o5mZfvC9DiVZhTQ== +"@svgr/hast-util-to-babel-ast@^6.0.0", "@svgr/hast-util-to-babel-ast@^6.2.1": + version "6.2.1" + resolved "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-6.2.1.tgz#ae065567b74cbe745afae617053adf9a764bea25" + integrity sha512-pt7MMkQFDlWJVy9ULJ1h+hZBDGFfSCwlBNW1HkLnVi7jUhyEXUaGYWi1x6bM2IXuAR9l265khBT4Av4lPmaNLQ== dependencies: "@babel/types" "^7.15.6" entities "^3.0.1" @@ -4806,17 +4745,17 @@ "@svgr/hast-util-to-babel-ast" "^6.0.0" svg-parser "^2.0.2" -"@svgr/plugin-jsx@^5.5.0": - version "5.5.0" - resolved "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz#1aa8cd798a1db7173ac043466d7b52236b369000" - integrity sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA== +"@svgr/plugin-jsx@^6.2.1": + version "6.2.1" + resolved "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-6.2.1.tgz#5668f1d2aa18c2f1bb7a1fc9f682d3f9aed263bd" + integrity sha512-u+MpjTsLaKo6r3pHeeSVsh9hmGRag2L7VzApWIaS8imNguqoUwDq/u6U/NDmYs/KAsrmtBjOEaAAPbwNGXXp1g== dependencies: - "@babel/core" "^7.12.3" - "@svgr/babel-preset" "^5.5.0" - "@svgr/hast-util-to-babel-ast" "^5.5.0" + "@babel/core" "^7.15.5" + "@svgr/babel-preset" "^6.2.0" + "@svgr/hast-util-to-babel-ast" "^6.2.1" svg-parser "^2.0.2" -"@svgr/plugin-svgo@6.2.x": +"@svgr/plugin-svgo@6.2.x", "@svgr/plugin-svgo@^6.2.0": version "6.2.0" resolved "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-6.2.0.tgz#4cbe6a33ccccdcae4e3b63ded64cc1cbe1faf48c" integrity sha512-oDdMQONKOJEbuKwuy4Np6VdV6qoaLLvoY86hjvQEgU82Vx1MSWRyYms6Sl0f+NtqxLI/rDVufATbP/ev996k3Q== @@ -4825,42 +4764,34 @@ deepmerge "^4.2.2" svgo "^2.5.0" -"@svgr/plugin-svgo@^5.5.0": - version "5.5.0" - resolved "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz#02da55d85320549324e201c7b2e53bf431fcc246" - integrity sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ== +"@svgr/rollup@6.2.x": + version "6.2.1" + resolved "https://registry.npmjs.org/@svgr/rollup/-/rollup-6.2.1.tgz#23ac3173d2bd85842ca8858d3435332af1f064ab" + integrity sha512-5X6aMiGL1F5g0TubLY41GJ/Qf0Kz2xtbF37UbRJEHe2Z9CMlGl9Z3fQ8e28vmHrTptmymNRoHssgQ2Ejb1DARQ== dependencies: - cosmiconfig "^7.0.0" - deepmerge "^4.2.2" - svgo "^1.2.2" - -"@svgr/rollup@5.5.x": - version "5.5.0" - resolved "https://registry.npmjs.org/@svgr/rollup/-/rollup-5.5.0.tgz#9ceaaa6d463916e69aff8a9e10b3bb8fbb94688a" - integrity sha512-EiZmH2VTr+Xzyb6Ga8XtGa9MEbiU3WQnB5vHmqhwAUqibU3uwuwr7MN+QwIh/gtBk1ucMim8BCfcRTlLVREM8A== - dependencies: - "@babel/core" "^7.12.3" - "@babel/plugin-transform-react-constant-elements" "^7.12.1" - "@babel/preset-env" "^7.12.1" - "@babel/preset-react" "^7.12.5" - "@svgr/core" "^5.5.0" - "@svgr/plugin-jsx" "^5.5.0" - "@svgr/plugin-svgo" "^5.5.0" + "@babel/core" "^7.15.5" + "@babel/plugin-transform-react-constant-elements" "^7.14.5" + "@babel/preset-env" "^7.15.6" + "@babel/preset-react" "^7.14.5" + "@babel/preset-typescript" "^7.16.0" + "@svgr/core" "^6.2.1" + "@svgr/plugin-jsx" "^6.2.1" + "@svgr/plugin-svgo" "^6.2.0" rollup-pluginutils "^2.8.2" -"@svgr/webpack@5.5.x": - version "5.5.0" - resolved "https://registry.npmjs.org/@svgr/webpack/-/webpack-5.5.0.tgz#aae858ee579f5fa8ce6c3166ef56c6a1b381b640" - integrity sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g== +"@svgr/webpack@6.2.x": + version "6.2.1" + resolved "https://registry.npmjs.org/@svgr/webpack/-/webpack-6.2.1.tgz#ef5d51c1b6be4e7537fb9f76b3f2b2e22b63c58d" + integrity sha512-h09ngMNd13hnePwgXa+Y5CgOjzlCvfWLHg+MBnydEedAnuLRzUHUJmGS3o2OsrhxTOOqEsPOFt5v/f6C5Qulcw== dependencies: - "@babel/core" "^7.12.3" - "@babel/plugin-transform-react-constant-elements" "^7.12.1" - "@babel/preset-env" "^7.12.1" - "@babel/preset-react" "^7.12.5" - "@svgr/core" "^5.5.0" - "@svgr/plugin-jsx" "^5.5.0" - "@svgr/plugin-svgo" "^5.5.0" - loader-utils "^2.0.0" + "@babel/core" "^7.15.5" + "@babel/plugin-transform-react-constant-elements" "^7.14.5" + "@babel/preset-env" "^7.15.6" + "@babel/preset-react" "^7.14.5" + "@babel/preset-typescript" "^7.15.0" + "@svgr/core" "^6.2.1" + "@svgr/plugin-jsx" "^6.2.1" + "@svgr/plugin-svgo" "^6.2.0" "@szmarczak/http-timer@^1.1.2": version "1.1.2" @@ -5922,11 +5853,6 @@ dependencies: "@types/node" "*" -"@types/q@^1.5.1": - version "1.5.2" - resolved "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz#690a1475b84f2a884fd07cd797c00f5f31356ea8" - integrity sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw== - "@types/qs@*": version "6.9.6" resolved "https://registry.npmjs.org/@types/qs/-/qs-6.9.6.tgz#df9c3c8b31a247ec315e6996566be3171df4b3b1" @@ -6215,6 +6141,13 @@ dependencies: "@types/superagent" "*" +"@types/svgo@^2.6.2": + version "2.6.2" + resolved "https://registry.npmjs.org/@types/svgo/-/svgo-2.6.2.tgz#97d8be0c50ff0562ed7522ba840149aee1c970e3" + integrity sha512-m1SqMc/EDAZ8v0BBX+NmlYytUXtvrMD2/J9LICwnMvAuJwb0GSmACU3XPvcORqE7ghEJA4Mk6NYzpwhQI/biPw== + dependencies: + "@types/node" "*" + "@types/swagger-ui-react@^4.1.1": version "4.1.1" resolved "https://registry.npmjs.org/@types/swagger-ui-react/-/swagger-ui-react-4.1.1.tgz#6ae70f5b966941eb6655d79d1114d9b9ef69a980" @@ -7858,7 +7791,7 @@ bonjour@^3.5.0: multicast-dns "^6.0.1" multicast-dns-service-types "^1.1.0" -boolbase@^1.0.0, boolbase@~1.0.0: +boolbase@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= @@ -8714,15 +8647,6 @@ co@^4.6.0: resolved "https://registry.npmjs.org/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= -coa@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" - integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== - dependencies: - "@types/q" "^1.5.1" - chalk "^2.4.1" - q "^1.1.2" - code-error-fragment@0.0.230: version "0.0.230" resolved "https://registry.npmjs.org/code-error-fragment/-/code-error-fragment-0.0.230.tgz#d736d75c832445342eca1d1fedbf17d9618b14d7" @@ -9542,21 +9466,6 @@ css-loader@^6.5.1: postcss-value-parser "^4.2.0" semver "^7.3.5" -css-select-base-adapter@^0.1.1: - version "0.1.1" - resolved "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" - integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== - -css-select@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" - integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== - dependencies: - boolbase "^1.0.0" - css-what "^3.2.1" - domutils "^1.7.0" - nth-check "^1.0.2" - css-select@^4.1.3: version "4.1.3" resolved "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz#a70440f70317f2669118ad74ff105e65849c7067" @@ -9568,14 +9477,6 @@ css-select@^4.1.3: domutils "^2.6.0" nth-check "^2.0.0" -css-tree@1.0.0-alpha.37: - version "1.0.0-alpha.37" - resolved "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22" - integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== - dependencies: - mdn-data "2.0.4" - source-map "^0.6.1" - css-tree@^1.1.2: version "1.1.2" resolved "https://registry.npmjs.org/css-tree/-/css-tree-1.1.2.tgz#9ae393b5dafd7dae8a622475caec78d3d8fbd7b5" @@ -9605,11 +9506,6 @@ css-vendor@^2.0.8: "@babel/runtime" "^7.8.3" is-in-browser "^1.0.2" -css-what@^3.2.1: - version "3.4.2" - resolved "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz#ea7026fcb01777edbde52124e21f327e7ae950e4" - integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ== - css-what@^5.0.0: version "5.1.0" resolved "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz#3f7b707aadf633baf62c2ceb8579b545bb40f7fe" @@ -9689,13 +9585,6 @@ cssnano@^5.0.1: lilconfig "^2.0.3" yaml "^1.10.2" -csso@^4.0.2: - version "4.0.2" - resolved "https://registry.npmjs.org/csso/-/csso-4.0.2.tgz#e5f81ab3a56b8eefb7f0092ce7279329f454de3d" - integrity sha512-kS7/oeNVXkHWxby5tHVxlhjizRCSv8QdU7hB2FpdAibDU8FjTAolhNjKNTiLzXtUrKT6HwClE81yXwEk1309wg== - dependencies: - css-tree "1.0.0-alpha.37" - csso@^4.2.0: version "4.2.0" resolved "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" @@ -10540,14 +10429,6 @@ dom-helpers@^5.0.1: "@babel/runtime" "^7.8.7" csstype "^2.6.7" -dom-serializer@0: - version "0.2.2" - resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" - integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== - dependencies: - domelementtype "^2.0.1" - entities "^2.0.0" - dom-serializer@^1.0.1: version "1.2.0" resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.2.0.tgz#3433d9136aeb3c627981daa385fc7f32d27c48f1" @@ -10567,11 +10448,6 @@ domain-browser@^1.1.1: resolved "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== -domelementtype@1: - version "1.3.1" - resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" - integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== - domelementtype@^2.0.1, domelementtype@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-2.1.0.tgz#a851c080a6d1c3d94344aed151d99f669edf585e" @@ -10613,14 +10489,6 @@ dompurify@^2.2.7, dompurify@^2.2.9: resolved "https://registry.npmjs.org/dompurify/-/dompurify-2.3.5.tgz#c83ed5a3ae5ce23e52efe654ea052ffb358dd7e3" integrity sha512-kD+f8qEaa42+mjdOpKeztu9Mfx5bv9gVLO6K9jRx4uGvh6Wv06Srn4jr1wPNY2OOUGGSKHNFN+A8MA3v0E0QAQ== -domutils@^1.7.0: - version "1.7.0" - resolved "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" - integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== - dependencies: - dom-serializer "0" - domelementtype "1" - domutils@^2.5.2, domutils@^2.6.0: version "2.8.0" resolved "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" @@ -10882,7 +10750,7 @@ error@^10.4.0: resolved "https://registry.npmjs.org/error/-/error-10.4.0.tgz#6fcf0fd64bceb1e750f8ed9a3dd880f00e46a487" integrity sha512-YxIFEJuhgcICugOUvRx5th0UM+ActZ9sjY0QJmeVwsQdvosZ7kYzc9QqS0Da3R5iUmgU5meGIxh0xBeZpMVeLw== -es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.18.0-next.1, es-abstract@^1.18.0-next.2: +es-abstract@^1.17.0-next.1, es-abstract@^1.18.0-next.1, es-abstract@^1.18.0-next.2: version "1.18.0" resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz#ab80b359eecb7ede4c298000390bc5ac3ec7b5a4" integrity sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw== @@ -16783,11 +16651,6 @@ mdn-data@2.0.14: resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== -mdn-data@2.0.4: - version "2.0.4" - resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" - integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== - mdurl@^1.0.0, mdurl@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" @@ -17475,7 +17338,7 @@ mkdirp-infer-owner@^2.0.0: infer-owner "^1.0.4" mkdirp "^1.0.3" -"mkdirp@>=0.5 0", mkdirp@^0.5.1, mkdirp@^0.5.4, mkdirp@^0.5.5, mkdirp@~0.5.1: +"mkdirp@>=0.5 0", mkdirp@^0.5.1, mkdirp@^0.5.4, mkdirp@^0.5.5: version "0.5.5" resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== @@ -18181,13 +18044,6 @@ npmlog@^6.0.0: gauge "^4.0.0" set-blocking "^2.0.0" -nth-check@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" - integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== - dependencies: - boolbase "~1.0.0" - nth-check@^2.0.0: version "2.0.1" resolved "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz#2efe162f5c3da06a28959fbd3db75dbeea9f0fc2" @@ -18298,7 +18154,7 @@ object.fromentries@^2.0.5: define-properties "^1.1.3" es-abstract "^1.19.1" -object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0: +object.getownpropertydescriptors@^2.0.3: version "2.1.0" resolved "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg== @@ -18321,7 +18177,7 @@ object.pick@^1.3.0: dependencies: isobject "^3.0.1" -object.values@^1.1.0, object.values@^1.1.5: +object.values@^1.1.5: version "1.1.5" resolved "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz#959f63e3ce9ef108720333082131e4a459b716ac" integrity sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg== @@ -20030,7 +19886,7 @@ puppeteer@^13.1.1: unbzip2-stream "1.4.3" ws "8.2.3" -q@^1.1.2, q@^1.5.1: +q@^1.5.1: version "1.5.1" resolved "https://registry.npmjs.org/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= @@ -21576,7 +21432,7 @@ sax@1.2.1: resolved "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz#7b8e656190b228e81a66aea748480d828cd2d37a" integrity sha1-e45lYZCyKOgaZq6nSEgNgozS03o= -sax@>=0.6.0, sax@~1.2.4: +sax@>=0.6.0: version "1.2.4" resolved "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== @@ -22874,25 +22730,6 @@ svg-parser@^2.0.2: resolved "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5" integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== -svgo@^1.2.2: - version "1.3.2" - resolved "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" - integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== - dependencies: - chalk "^2.4.1" - coa "^2.0.2" - css-select "^2.0.0" - css-select-base-adapter "^0.1.1" - css-tree "1.0.0-alpha.37" - csso "^4.0.2" - js-yaml "^3.13.1" - mkdirp "~0.5.1" - object.values "^1.1.0" - sax "~1.2.4" - stable "^0.1.8" - unquote "~1.1.1" - util.promisify "~1.0.0" - svgo@^2.5.0, svgo@^2.7.0: version "2.8.0" resolved "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24" @@ -24038,11 +23875,6 @@ unpipe@1.0.0, unpipe@~1.0.0: resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= -unquote@~1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" - integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= - unset-value@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" @@ -24193,16 +24025,6 @@ util-promisify@^2.1.0: dependencies: object.getownpropertydescriptors "^2.0.3" -util.promisify@~1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" - integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.2" - has-symbols "^1.0.1" - object.getownpropertydescriptors "^2.1.0" - util@0.10.3: version "0.10.3" resolved "https://registry.npmjs.org/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" From 3a4fc2b70b12e433793bf0715c3d968684790c97 Mon Sep 17 00:00:00 2001 From: Trevor Hartman Date: Wed, 16 Feb 2022 18:29:33 -0700 Subject: [PATCH 148/383] Add explicit return Signed-off-by: Trevor Hartman --- .../src/service/KubernetesBuilder.ts | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/plugins/kubernetes-backend/src/service/KubernetesBuilder.ts b/plugins/kubernetes-backend/src/service/KubernetesBuilder.ts index da6c6c37c8..5c439896d7 100644 --- a/plugins/kubernetes-backend/src/service/KubernetesBuilder.ts +++ b/plugins/kubernetes-backend/src/service/KubernetesBuilder.ts @@ -43,6 +43,16 @@ export interface KubernetesEnvironment { config: Config; } +export type KubernetesBuilderReturn = Promise<{ + router: express.Router; + clusterDetails?: ClusterDetails[]; + clusterSupplier?: KubernetesClustersSupplier; + customResources?: CustomResource[]; + fetcher?: KubernetesFetcher; + objectsProvider?: KubernetesObjectsProvider; + serviceLocator?: KubernetesServiceLocator; +}>; + export class KubernetesBuilder { private clusterSupplier?: KubernetesClustersSupplier; private objectsProvider?: KubernetesObjectsProvider; @@ -55,7 +65,7 @@ export class KubernetesBuilder { constructor(protected readonly env: KubernetesEnvironment) {} - public async build() { + public async build(): KubernetesBuilderReturn { const logger = this.env.logger; const config = this.env.config; From 881a0b6b9a99dbd69c8e8f7560bb4a109f0c4679 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 17 Feb 2022 04:09:59 +0000 Subject: [PATCH 149/383] chore(deps-dev): bump @types/dagre from 0.7.46 to 0.7.47 Bumps [@types/dagre](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/dagre) from 0.7.46 to 0.7.47. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/dagre) --- updated-dependencies: - dependency-name: "@types/dagre" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 0132513fc0..43a34182de 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5313,9 +5313,9 @@ "@types/d3-selection" "*" "@types/dagre@^0.7.44": - version "0.7.46" - resolved "https://registry.npmjs.org/@types/dagre/-/dagre-0.7.46.tgz#c51ffcc62ca8a9affa07f5e06842acd840d3d442" - integrity sha512-ku3y+F8sPqmiB5Ugl22NpukI2dLAViJiWwdtueXLeuF4fxZozl+bytPSFVlLu/gDgaKiwobu3LBXXRWktIMiIA== + version "0.7.47" + resolved "https://registry.npmjs.org/@types/dagre/-/dagre-0.7.47.tgz#1d1b89e1fac36aaf5ef5ed6274bb123073095ac5" + integrity sha512-oX+3aRf7L6Cqq1MvbWmmD7FpAU/T8URwFFuHBagAiyHILn3i+RNZ35/tvyq28de+lZGY3W19BxJ7FeITQDO7aA== "@types/debug@^4.0.0": version "4.1.7" From 5748c0306fe2e17452ba2f06423cef8d282fc387 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 17 Feb 2022 04:11:02 +0000 Subject: [PATCH 150/383] chore(deps): bump dompurify from 2.3.5 to 2.3.6 Bumps [dompurify](https://github.com/cure53/DOMPurify) from 2.3.5 to 2.3.6. - [Release notes](https://github.com/cure53/DOMPurify/releases) - [Commits](https://github.com/cure53/DOMPurify/compare/2.3.5...2.3.6) --- updated-dependencies: - dependency-name: dompurify dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 0132513fc0..adfbd76575 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10609,9 +10609,9 @@ dompurify@=2.3.3: integrity sha512-dqnqRkPMAjOZE0FogZ+ceJNM2dZ3V/yNOuFB7+39qpO93hHhfRpHw3heYQC7DPK9FqbQTfBKUJhiSfz4MvXYwg== dompurify@^2.2.7, dompurify@^2.2.9: - version "2.3.5" - resolved "https://registry.npmjs.org/dompurify/-/dompurify-2.3.5.tgz#c83ed5a3ae5ce23e52efe654ea052ffb358dd7e3" - integrity sha512-kD+f8qEaa42+mjdOpKeztu9Mfx5bv9gVLO6K9jRx4uGvh6Wv06Srn4jr1wPNY2OOUGGSKHNFN+A8MA3v0E0QAQ== + version "2.3.6" + resolved "https://registry.npmjs.org/dompurify/-/dompurify-2.3.6.tgz#2e019d7d7617aacac07cbbe3d88ae3ad354cf875" + integrity sha512-OFP2u/3T1R5CEgWCEONuJ1a5+MFKnOYpkywpUSxv/dj1LeBT1erK+JwM7zK0ROy2BRhqVCf0LRw/kHqKuMkVGg== domutils@^1.7.0: version "1.7.0" From 4977152ac9939ce2b0305c6848d8547d1c47591b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 17 Feb 2022 04:12:55 +0000 Subject: [PATCH 151/383] chore(deps): bump esbuild from 0.14.21 to 0.14.22 Bumps [esbuild](https://github.com/evanw/esbuild) from 0.14.21 to 0.14.22. - [Release notes](https://github.com/evanw/esbuild/releases) - [Changelog](https://github.com/evanw/esbuild/blob/master/CHANGELOG.md) - [Commits](https://github.com/evanw/esbuild/compare/v0.14.21...v0.14.22) --- updated-dependencies: - dependency-name: esbuild dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- yarn.lock | 196 +++++++++++++++++++++++++++--------------------------- 1 file changed, 98 insertions(+), 98 deletions(-) diff --git a/yarn.lock b/yarn.lock index 0132513fc0..65e373defd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10980,70 +10980,70 @@ es6-weak-map@^2.0.3: es6-iterator "^2.0.3" es6-symbol "^3.1.1" -esbuild-android-arm64@0.14.21: - version "0.14.21" - resolved "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.21.tgz#8842d0c3b7c81fbe2dc46ddb416ffd6eb822184b" - integrity sha512-Bqgld1TY0wZv8TqiQmVxQFgYzz8ZmyzT7clXBDZFkOOdRybzsnj8AZuK1pwcLVA7Ya6XncHgJqIao7NFd3s0RQ== +esbuild-android-arm64@0.14.22: + version "0.14.22" + resolved "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.22.tgz#fb051169a63307d958aec85ad596cfc7d7770303" + integrity sha512-k1Uu4uC4UOFgrnTj2zuj75EswFSEBK+H6lT70/DdS4mTAOfs2ECv2I9ZYvr3w0WL0T4YItzJdK7fPNxcPw6YmQ== -esbuild-darwin-64@0.14.21: - version "0.14.21" - resolved "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.21.tgz#ec7df02ad88ecf7f8fc23a3ed7917e07dea0c9c9" - integrity sha512-j+Eg+e13djzyYINVvAbOo2/zvZ2DivuJJTaBrJnJHSD7kUNuGHRkHoSfFjbI80KHkn091w350wdmXDNSgRjfYQ== +esbuild-darwin-64@0.14.22: + version "0.14.22" + resolved "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.22.tgz#615ea0a9de67b57a293a7128d7ac83ee307a856d" + integrity sha512-d8Ceuo6Vw6HM3fW218FB6jTY6O3r2WNcTAU0SGsBkXZ3k8SDoRLd3Nrc//EqzdgYnzDNMNtrWegK2Qsss4THhw== -esbuild-darwin-arm64@0.14.21: - version "0.14.21" - resolved "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.21.tgz#0c2a977edec1ef54097ee56a911518c820d4e5e4" - integrity sha512-nDNTKWDPI0RuoPj5BhcSB2z5EmZJJAyRtZLIjyXSqSpAyoB8eyAKXl4lB8U2P78Fnh4Lh1le/fmpewXE04JhBQ== +esbuild-darwin-arm64@0.14.22: + version "0.14.22" + resolved "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.22.tgz#82054dcfcecb15ccfd237093b8008e7745a99ad9" + integrity sha512-YAt9Tj3SkIUkswuzHxkaNlT9+sg0xvzDvE75LlBo4DI++ogSgSmKNR6B4eUhU5EUUepVXcXdRIdqMq9ppeRqfw== -esbuild-freebsd-64@0.14.21: - version "0.14.21" - resolved "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.21.tgz#f5b5fc1d031286c3a0949d1bda7db774b7d0404e" - integrity sha512-zIurkCHXhxELiDZtLGiexi8t8onQc2LtuE+S7457H/pP0g0MLRKMrsn/IN4LDkNe6lvBjuoZZi2OfelOHn831g== +esbuild-freebsd-64@0.14.22: + version "0.14.22" + resolved "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.22.tgz#778a818c5b078d5cdd6bb6c0e0797217d196999b" + integrity sha512-ek1HUv7fkXMy87Qm2G4IRohN+Qux4IcnrDBPZGXNN33KAL0pEJJzdTv0hB/42+DCYWylSrSKxk3KUXfqXOoH4A== -esbuild-freebsd-arm64@0.14.21: - version "0.14.21" - resolved "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.21.tgz#a05cab908013e4992b31a675850b8c44eb468c0c" - integrity sha512-wdxMmkJfbwcN+q85MpeUEamVZ40FNsBa9mPq8tAszDn8TRT2HoJvVRADPIIBa9SWWwlDChIMjkDKAnS3KS/sPA== +esbuild-freebsd-arm64@0.14.22: + version "0.14.22" + resolved "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.22.tgz#18da93b9f3db2e036f72383bfe73b28b73bb332c" + integrity sha512-zPh9SzjRvr9FwsouNYTqgqFlsMIW07O8mNXulGeQx6O5ApgGUBZBgtzSlBQXkHi18WjrosYfsvp5nzOKiWzkjQ== -esbuild-linux-32@0.14.21: - version "0.14.21" - resolved "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.21.tgz#638d244cc58b951f447addb4bade628d126ef84b" - integrity sha512-fmxvyzOPPh2xiEHojpCeIQP6pXcoKsWbz3ryDDIKLOsk4xp3GbpHIEAWP0xTeuhEbendmvBDVKbAVv3PnODXLg== +esbuild-linux-32@0.14.22: + version "0.14.22" + resolved "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.22.tgz#d0d5d9f5bb3536e17ac097e9512019c65b7c0234" + integrity sha512-SnpveoE4nzjb9t2hqCIzzTWBM0RzcCINDMBB67H6OXIuDa4KqFqaIgmTchNA9pJKOVLVIKd5FYxNiJStli21qg== -esbuild-linux-64@0.14.21: - version "0.14.21" - resolved "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.21.tgz#8eb634abee928be7e35b985fafbfef2f2e31397f" - integrity sha512-edZyNOv1ql+kpmlzdqzzDjRQYls+tSyi4QFi+PdBhATJFUqHsnNELWA9vMSzAaInPOEaVUTA5Ml28XFChcy4DA== +esbuild-linux-64@0.14.22: + version "0.14.22" + resolved "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.22.tgz#2773d540971999ea7f38107ef92fca753f6a8c30" + integrity sha512-Zcl9Wg7gKhOWWNqAjygyqzB+fJa19glgl2JG7GtuxHyL1uEnWlpSMytTLMqtfbmRykIHdab797IOZeKwk5g0zg== -esbuild-linux-arm64@0.14.21: - version "0.14.21" - resolved "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.21.tgz#e05599ea6253b58394157da162d856f3ead62f9e" - integrity sha512-t5qxRkq4zdQC0zXpzSB2bTtfLgOvR0C6BXYaRE/6/k8/4SrkZcTZBeNu+xGvwCU4b5dU9ST9pwIWkK6T1grS8g== +esbuild-linux-arm64@0.14.22: + version "0.14.22" + resolved "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.22.tgz#5d4480ce6d6bffab1dd76a23158f5a5ab33e7ba4" + integrity sha512-8q/FRBJtV5IHnQChO3LHh/Jf7KLrxJ/RCTGdBvlVZhBde+dk3/qS9fFsUy+rs3dEi49aAsyVitTwlKw1SUFm+A== -esbuild-linux-arm@0.14.21: - version "0.14.21" - resolved "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.21.tgz#1ae1078231cf689d3ba894a32d3723c0be9b91fd" - integrity sha512-aSU5pUueK6afqmLQsbU+QcFBT62L+4G9hHMJDHWfxgid6hzhSmfRH9U/f+ymvxsSTr/HFRU4y7ox8ZyhlVl98w== +esbuild-linux-arm@0.14.22: + version "0.14.22" + resolved "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.22.tgz#c6391b3f7c8fa6d3b99a7e893ce0f45f3a921eef" + integrity sha512-soPDdbpt/C0XvOOK45p4EFt8HbH5g+0uHs5nUKjHVExfgR7du734kEkXR/mE5zmjrlymk5AA79I0VIvj90WZ4g== -esbuild-linux-mips64le@0.14.21: - version "0.14.21" - resolved "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.21.tgz#f05be62d126764e99b37edcac5bb49b78c7a8890" - integrity sha512-jLZLQGCNlUsmIHtGqNvBs3zN+7a4D9ckf0JZ+jQTwHdZJ1SgV9mAjbB980OFo66LoY+WeM7t3WEnq3FjI1zw4A== +esbuild-linux-mips64le@0.14.22: + version "0.14.22" + resolved "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.22.tgz#2c8dabac355c502e86c38f9f292b3517d8e181f3" + integrity sha512-SiNDfuRXhGh1JQLLA9JPprBgPVFOsGuQ0yDfSPTNxztmVJd8W2mX++c4FfLpAwxuJe183mLuKf7qKCHQs5ZnBQ== -esbuild-linux-ppc64le@0.14.21: - version "0.14.21" - resolved "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.21.tgz#592c98d82dad7982268ef8deed858c4566f07ab1" - integrity sha512-4TWxpK391en2UBUw6GSrukToTDu6lL9vkm3Ll40HrI08WG3qcnJu7bl8e1+GzelDsiw1QmfAY/nNvJ6iaHRpCQ== +esbuild-linux-ppc64le@0.14.22: + version "0.14.22" + resolved "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.22.tgz#69d71b2820d5c94306072dac6094bae38e77d1c0" + integrity sha512-6t/GI9I+3o1EFm2AyN9+TsjdgWCpg2nwniEhjm2qJWtJyJ5VzTXGUU3alCO3evopu8G0hN2Bu1Jhz2YmZD0kng== -esbuild-linux-riscv64@0.14.21: - version "0.14.21" - resolved "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.21.tgz#0db7bd6f10d8f9afea973a7d6bf87b449b864b7b" - integrity sha512-fElngqOaOfTsF+u+oetDLHsPG74vB2ZaGZUqmGefAJn3a5z9Z2pNa4WpVbbKgHpaAAy5tWM1m1sbGohj6Ki6+Q== +esbuild-linux-riscv64@0.14.22: + version "0.14.22" + resolved "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.22.tgz#c0ec0fc3a23624deebf657781550d2329cec4213" + integrity sha512-AyJHipZKe88sc+tp5layovquw5cvz45QXw5SaDgAq2M911wLHiCvDtf/07oDx8eweCyzYzG5Y39Ih568amMTCQ== -esbuild-linux-s390x@0.14.21: - version "0.14.21" - resolved "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.21.tgz#254a9354d34c9d1b41a3e21d2ec9269cbbb2c5df" - integrity sha512-brleZ6R5fYv0qQ7ZBwenQmP6i9TdvJCB092c/3D3pTLQHBGHJb5zWgKxOeS7bdHzmLy6a6W7GbFk6QKpjyD6QA== +esbuild-linux-s390x@0.14.22: + version "0.14.22" + resolved "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.22.tgz#ec2af4572d63336cfb27f5a5c851fb1b6617dd91" + integrity sha512-Sz1NjZewTIXSblQDZWEFZYjOK6p8tV6hrshYdXZ0NHTjWE+lwxpOpWeElUGtEmiPcMT71FiuA9ODplqzzSxkzw== esbuild-loader@^2.18.0: version "2.18.0" @@ -11057,60 +11057,60 @@ esbuild-loader@^2.18.0: tapable "^2.2.0" webpack-sources "^2.2.0" -esbuild-netbsd-64@0.14.21: - version "0.14.21" - resolved "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.21.tgz#4cb783d060b02bf3b897a9a12cce2b3b547726f8" - integrity sha512-nCEgsLCQ8RoFWVV8pVI+kX66ICwbPP/M9vEa0NJGIEB/Vs5sVGMqkf67oln90XNSkbc0bPBDuo4G6FxlF7PN8g== +esbuild-netbsd-64@0.14.22: + version "0.14.22" + resolved "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.22.tgz#0e283278e9fdbaa7f0930f93ee113d7759cd865e" + integrity sha512-TBbCtx+k32xydImsHxvFgsOCuFqCTGIxhzRNbgSL1Z2CKhzxwT92kQMhxort9N/fZM2CkRCPPs5wzQSamtzEHA== -esbuild-openbsd-64@0.14.21: - version "0.14.21" - resolved "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.21.tgz#f886b93feefddbe573528fa4b421c9c6e2bc969b" - integrity sha512-h9zLMyVD0T73MDTVYIb/qUTokwI6EJH9O6wESuTNq6+XpMSr6C5aYZ4fvFKdNELW+Xsod+yDS2hV2JTUAbFrLA== +esbuild-openbsd-64@0.14.22: + version "0.14.22" + resolved "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.22.tgz#2a73bba04e16d8ef278fbe2be85248e12a2f2cc2" + integrity sha512-vK912As725haT313ANZZZN+0EysEEQXWC/+YE4rQvOQzLuxAQc2tjbzlAFREx3C8+uMuZj/q7E5gyVB7TzpcTA== -esbuild-sunos-64@0.14.21: - version "0.14.21" - resolved "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.21.tgz#3829e4d57d4cb6950837fe90b0b67cdfb37cf13a" - integrity sha512-Kl+7Cot32qd9oqpLdB1tEGXEkjBlijrIxMJ0+vlDFaqsODutif25on0IZlFxEBtL2Gosd4p5WCV1U7UskNQfXA== +esbuild-sunos-64@0.14.22: + version "0.14.22" + resolved "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.22.tgz#8fe03513b8b2e682a6d79d5e3ca5849651a3c1d8" + integrity sha512-/mbJdXTW7MTcsPhtfDsDyPEOju9EOABvCjeUU2OJ7fWpX/Em/H3WYDa86tzLUbcVg++BScQDzqV/7RYw5XNY0g== -esbuild-windows-32@0.14.21: - version "0.14.21" - resolved "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.21.tgz#b858a22d1a82e53cdc59310cd56294133f7a95e7" - integrity sha512-V7vnTq67xPBUCk/9UtlolmQ798Ecjdr1ZoI1vcSgw7M82aSSt0eZdP6bh5KAFZU8pxDcx3qoHyWQfHYr11f22A== +esbuild-windows-32@0.14.22: + version "0.14.22" + resolved "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.22.tgz#a75df61e3e49df292a1842be8e877a3153ee644f" + integrity sha512-1vRIkuvPTjeSVK3diVrnMLSbkuE36jxA+8zGLUOrT4bb7E/JZvDRhvtbWXWaveUc/7LbhaNFhHNvfPuSw2QOQg== -esbuild-windows-64@0.14.21: - version "0.14.21" - resolved "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.21.tgz#7bb5a027d5720cf9caf18a4bedd11327208f1f12" - integrity sha512-kDgHjKOHwjfJDCyRGELzVxiP/RBJBTA+wyspf78MTTJQkyPuxH2vChReNdWc+dU2S4gIZFHMdP1Qrl/k22ZmaA== +esbuild-windows-64@0.14.22: + version "0.14.22" + resolved "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.22.tgz#d06cf8bbe4945b8bf95a730d871e54a22f635941" + integrity sha512-AxjIDcOmx17vr31C5hp20HIwz1MymtMjKqX4qL6whPj0dT9lwxPexmLj6G1CpR3vFhui6m75EnBEe4QL82SYqw== -esbuild-windows-arm64@0.14.21: - version "0.14.21" - resolved "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.21.tgz#25df54521ad602c826b262ea2e7cc1fe80f5c2f5" - integrity sha512-8Sbo0zpzgwWrwjQYLmHF78f7E2xg5Ve63bjB2ng3V2aManilnnTGaliq2snYg+NOX60+hEvJHRdVnuIAHW0lVw== +esbuild-windows-arm64@0.14.22: + version "0.14.22" + resolved "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.22.tgz#f8b1b05c548073be8413a5ecb12d7c2f6e717227" + integrity sha512-5wvQ+39tHmRhNpu2Fx04l7QfeK3mQ9tKzDqqGR8n/4WUxsFxnVLfDRBGirIfk4AfWlxk60kqirlODPoT5LqMUg== esbuild@^0.14.1, esbuild@^0.14.10, esbuild@^0.14.6: - version "0.14.21" - resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.14.21.tgz#b3e05f900f1c4394f596d60d63d9816468f0f671" - integrity sha512-7WEoNMBJdLN993dr9h0CpFHPRc3yFZD+EAVY9lg6syJJ12gc5fHq8d75QRExuhnMkT2DaRiIKFThRvDWP+fO+A== + version "0.14.22" + resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.14.22.tgz#2b55fde89d7aa5aaaad791816d58ff9dfc5ed085" + integrity sha512-CjFCFGgYtbFOPrwZNJf7wsuzesx8kqwAffOlbYcFDLFuUtP8xloK1GH+Ai13Qr0RZQf9tE7LMTHJ2iVGJ1SKZA== optionalDependencies: - esbuild-android-arm64 "0.14.21" - esbuild-darwin-64 "0.14.21" - esbuild-darwin-arm64 "0.14.21" - esbuild-freebsd-64 "0.14.21" - esbuild-freebsd-arm64 "0.14.21" - esbuild-linux-32 "0.14.21" - esbuild-linux-64 "0.14.21" - esbuild-linux-arm "0.14.21" - esbuild-linux-arm64 "0.14.21" - esbuild-linux-mips64le "0.14.21" - esbuild-linux-ppc64le "0.14.21" - esbuild-linux-riscv64 "0.14.21" - esbuild-linux-s390x "0.14.21" - esbuild-netbsd-64 "0.14.21" - esbuild-openbsd-64 "0.14.21" - esbuild-sunos-64 "0.14.21" - esbuild-windows-32 "0.14.21" - esbuild-windows-64 "0.14.21" - esbuild-windows-arm64 "0.14.21" + esbuild-android-arm64 "0.14.22" + esbuild-darwin-64 "0.14.22" + esbuild-darwin-arm64 "0.14.22" + esbuild-freebsd-64 "0.14.22" + esbuild-freebsd-arm64 "0.14.22" + esbuild-linux-32 "0.14.22" + esbuild-linux-64 "0.14.22" + esbuild-linux-arm "0.14.22" + esbuild-linux-arm64 "0.14.22" + esbuild-linux-mips64le "0.14.22" + esbuild-linux-ppc64le "0.14.22" + esbuild-linux-riscv64 "0.14.22" + esbuild-linux-s390x "0.14.22" + esbuild-netbsd-64 "0.14.22" + esbuild-openbsd-64 "0.14.22" + esbuild-sunos-64 "0.14.22" + esbuild-windows-32 "0.14.22" + esbuild-windows-64 "0.14.22" + esbuild-windows-arm64 "0.14.22" escalade@^3.1.1: version "3.1.1" From 3a2a893df666189075a9ee369c6518842286fb5e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 17 Feb 2022 04:45:54 +0000 Subject: [PATCH 152/383] chore(deps): bump luxon from 2.0.2 to 2.3.0 Bumps [luxon](https://github.com/moment/luxon) from 2.0.2 to 2.3.0. - [Release notes](https://github.com/moment/luxon/releases) - [Changelog](https://github.com/moment/luxon/blob/master/CHANGELOG.md) - [Commits](https://github.com/moment/luxon/compare/2.0.2...2.3.0) --- updated-dependencies: - dependency-name: luxon dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .changeset/dependabot-41e6f4a.md | 6 ++++++ plugins/firehydrant/package.json | 2 +- plugins/pagerduty/package.json | 2 +- yarn.lock | 13 ++++--------- 4 files changed, 12 insertions(+), 11 deletions(-) create mode 100644 .changeset/dependabot-41e6f4a.md diff --git a/.changeset/dependabot-41e6f4a.md b/.changeset/dependabot-41e6f4a.md new file mode 100644 index 0000000000..64d49b3814 --- /dev/null +++ b/.changeset/dependabot-41e6f4a.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-firehydrant': patch +'@backstage/plugin-pagerduty': patch +--- + +chore(deps): bump `luxon` from 2.0.2 to 2.3.0 diff --git a/plugins/firehydrant/package.json b/plugins/firehydrant/package.json index 974e3cc9e7..edc52bf793 100644 --- a/plugins/firehydrant/package.json +++ b/plugins/firehydrant/package.json @@ -32,7 +32,7 @@ "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", - "luxon": "^1.27.0", + "luxon": "^2.3.0", "react-use": "^17.2.4" }, "peerDependencies": { diff --git a/plugins/pagerduty/package.json b/plugins/pagerduty/package.json index 2c9e0bc79d..d106a16080 100644 --- a/plugins/pagerduty/package.json +++ b/plugins/pagerduty/package.json @@ -43,7 +43,7 @@ "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", "classnames": "^2.2.6", - "luxon": "2.0.2", + "luxon": "2.3.0", "react-router-dom": "6.0.0-beta.0", "react-use": "^17.2.4" }, diff --git a/yarn.lock b/yarn.lock index 0132513fc0..fe63c8be46 100644 --- a/yarn.lock +++ b/yarn.lock @@ -16458,15 +16458,10 @@ lunr@^2.3.9: resolved "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz#18b123142832337dd6e964df1a5a7707b25d35e1" integrity sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow== -luxon@2.0.2, luxon@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/luxon/-/luxon-2.0.2.tgz#11f2cd4a11655fdf92e076b5782d7ede5bcdd133" - integrity sha512-ZRioYLCgRHrtTORaZX1mx+jtxKtKuI5ZDvHNAmqpUzGqSrR+tL4FVLn/CUGMA3h0+AKD1MAxGI5GnCqR5txNqg== - -luxon@^1.27.0: - version "1.28.0" - resolved "https://registry.npmjs.org/luxon/-/luxon-1.28.0.tgz#e7f96daad3938c06a62de0fb027115d251251fbf" - integrity sha512-TfTiyvZhwBYM/7QdAVDh+7dBTBA29v4ik0Ce9zda3Mnf8on1S5KJI8P2jKFZ8+5C0jhmr0KwJEO/Wdpm0VeWJQ== +luxon@2.3.0, luxon@^2.0.2, luxon@^2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/luxon/-/luxon-2.3.0.tgz#bf16a7e642513c2a20a6230a6a41b0ab446d0045" + integrity sha512-gv6jZCV+gGIrVKhO90yrsn8qXPKD8HYZJtrUDSfEbow8Tkw84T9OnCyJhWvnJIaIF/tBuiAjZuQHUt1LddX2mg== lz-string@^1.4.4: version "1.4.4" From 6214ff3dcd9208998584a20c1019069c9688be38 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 17 Feb 2022 04:47:10 +0000 Subject: [PATCH 153/383] chore(deps): bump @gitbeaker/node from 35.1.0 to 35.4.0 Bumps [@gitbeaker/node](https://github.com/jdalrymple/gitbeaker) from 35.1.0 to 35.4.0. - [Release notes](https://github.com/jdalrymple/gitbeaker/releases) - [Changelog](https://github.com/jdalrymple/gitbeaker/blob/master/CHANGELOG.md) - [Commits](https://github.com/jdalrymple/gitbeaker/compare/35.1.0...35.4.0) --- updated-dependencies: - dependency-name: "@gitbeaker/node" dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- yarn.lock | 50 +++++++++++++++++++++++++------------------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/yarn.lock b/yarn.lock index 0132513fc0..2aae66e096 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1793,12 +1793,12 @@ query-string "^7.0.0" xcase "^2.0.1" -"@gitbeaker/core@^35.1.0": - version "35.1.0" - resolved "https://registry.npmjs.org/@gitbeaker/core/-/core-35.1.0.tgz#57f294886451b5ab2bccf0fc5fd8f6507473cd3a" - integrity sha512-DM9w3wgrS8GoXMLJb0DL2VSxTvP3yoaGDfX2d8n3wMGSjZbCknh3YnbVG/OfnaPbh9PH71kGll3SY5rJgz7XJg== +"@gitbeaker/core@^35.4.0": + version "35.4.0" + resolved "https://registry.npmjs.org/@gitbeaker/core/-/core-35.4.0.tgz#ebc3e46f9d8e17f85f81ccfe163cffdcd429545a" + integrity sha512-VjRmC/j1umhn0+f+DbrbxXDAc0uvGd32tJ4MCFQYkxw9ndr/0Rlg8iYvYN/zWyqtgr3SeTxMyS3Z9MtbWWhjBA== dependencies: - "@gitbeaker/requester-utils" "^35.1.0" + "@gitbeaker/requester-utils" "^35.4.0" form-data "^4.0.0" li "^1.3.0" mime "^3.0.0" @@ -1806,14 +1806,14 @@ xcase "^2.0.1" "@gitbeaker/node@^35.1.0": - version "35.1.0" - resolved "https://registry.npmjs.org/@gitbeaker/node/-/node-35.1.0.tgz#a3b2d96534b54d8e3a3c8130da82ebc8802257d8" - integrity sha512-t0lXqSuY93jVffo6WMeo4tvZtkMQXPKuGb1qNh3HOuW4+KyEqmrdQnorGyyRYH7uRTmQeHEe33BL1Ttc5F5YrA== + version "35.4.0" + resolved "https://registry.npmjs.org/@gitbeaker/node/-/node-35.4.0.tgz#096a28fd936dad9220625a917502063adf566acf" + integrity sha512-5isY4/ePtjIs7uFwVW8U5oNNwntyCa3eTs3+tb6CywtLGdlnenk0eNJjZ2Srn8xJOKsOCCpQkT5hP1AOKSAlAQ== dependencies: - "@gitbeaker/core" "^35.1.0" - "@gitbeaker/requester-utils" "^35.1.0" + "@gitbeaker/core" "^35.4.0" + "@gitbeaker/requester-utils" "^35.4.0" delay "^5.0.0" - got "^11.8.2" + got "11.8.3" xcase "^2.0.1" "@gitbeaker/requester-utils@^34.6.0": @@ -1825,10 +1825,10 @@ qs "^6.10.1" xcase "^2.0.1" -"@gitbeaker/requester-utils@^35.1.0": - version "35.1.0" - resolved "https://registry.npmjs.org/@gitbeaker/requester-utils/-/requester-utils-35.1.0.tgz#98c049d6b4e3f5ce222d7376b605e15c59d7bc93" - integrity sha512-00aQYCxs3wBHrD5HGWh0l1FRsX1NYJ1GEq4Reyo1NpVgjwzO/T1jjMFy3jikjJ+UGeg0sfqV9h91mwtCQ4SmRA== +"@gitbeaker/requester-utils@^35.4.0": + version "35.4.0" + resolved "https://registry.npmjs.org/@gitbeaker/requester-utils/-/requester-utils-35.4.0.tgz#918be27441024c841d3f9e09c498e6b24de291e2" + integrity sha512-NkJ55oMM7TNMWUNnzeYLdLOIUFv1LBBN/PCM2u7J5+67gpck03YfWAkgrODIqBePFyrfm19pdka3SUlNBP0G2g== dependencies: form-data "^4.0.0" qs "^6.10.1" @@ -8174,17 +8174,17 @@ cacheable-request@^6.0.0: normalize-url "^4.1.0" responselike "^1.0.2" -cacheable-request@^7.0.1: - version "7.0.1" - resolved "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.1.tgz#062031c2856232782ed694a257fa35da93942a58" - integrity sha512-lt0mJ6YAnsrBErpTMWeu5kl/tg9xMAWjavYTN6VQXM1A/teBITuNcccXsCxF0tDQQJf9DfAaX5O4e0zp0KlfZw== +cacheable-request@^7.0.2: + version "7.0.2" + resolved "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz#ea0d0b889364a25854757301ca12b2da77f91d27" + integrity sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew== dependencies: clone-response "^1.0.2" get-stream "^5.1.0" http-cache-semantics "^4.0.0" keyv "^4.0.0" lowercase-keys "^2.0.0" - normalize-url "^4.1.0" + normalize-url "^6.0.1" responselike "^2.0.0" cachedir@^2.3.0: @@ -12897,17 +12897,17 @@ google-p12-pem@^3.0.3: dependencies: node-forge "^1.0.0" -got@^11.8.0, got@^11.8.2: - version "11.8.2" - resolved "https://registry.npmjs.org/got/-/got-11.8.2.tgz#7abb3959ea28c31f3576f1576c1effce23f33599" - integrity sha512-D0QywKgIe30ODs+fm8wMZiAcZjypcCodPNuMz5H9Mny7RJ+IjJ10BdmGW7OM7fHXP+O7r6ZwapQ/YQmMSvB0UQ== +got@11.8.3, got@^11.8.0: + version "11.8.3" + resolved "https://registry.npmjs.org/got/-/got-11.8.3.tgz#f496c8fdda5d729a90b4905d2b07dbd148170770" + integrity sha512-7gtQ5KiPh1RtGS9/Jbv1ofDpBFuq42gyfEib+ejaRBJuj/3tQFeR5+gw57e4ipaU8c/rCjvX6fkQz2lyDlGAOg== dependencies: "@sindresorhus/is" "^4.0.0" "@szmarczak/http-timer" "^4.0.5" "@types/cacheable-request" "^6.0.1" "@types/responselike" "^1.0.0" cacheable-lookup "^5.0.3" - cacheable-request "^7.0.1" + cacheable-request "^7.0.2" decompress-response "^6.0.0" http2-wrapper "^1.0.0-beta.5.2" lowercase-keys "^2.0.0" From be46fe095a6ca057d18b40159205985e8116d053 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 17 Feb 2022 04:47:59 +0000 Subject: [PATCH 154/383] chore(deps): bump @azure/identity from 2.0.1 to 2.0.3 Bumps [@azure/identity](https://github.com/Azure/azure-sdk-for-js) from 2.0.1 to 2.0.3. - [Release notes](https://github.com/Azure/azure-sdk-for-js/releases) - [Commits](https://github.com/Azure/azure-sdk-for-js/compare/@azure/identity_2.0.1...@azure/identity_2.0.3) --- updated-dependencies: - dependency-name: "@azure/identity" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- yarn.lock | 47 +++++++++++++++++------------------------------ 1 file changed, 17 insertions(+), 30 deletions(-) diff --git a/yarn.lock b/yarn.lock index 0132513fc0..1033b12a8f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -122,16 +122,17 @@ "@azure/abort-controller" "^1.0.0" tslib "^2.2.0" -"@azure/core-client@^1.0.0": - version "1.2.2" - resolved "https://registry.npmjs.org/@azure/core-client/-/core-client-1.2.2.tgz#29c781e5ccd4da968cea89d3b909ab573a3a7bec" - integrity sha512-VYFR2qiczjBrSfpQSbo5s8FJhXaJFz2tP01MOrpNJaOqnSNEKcY35I79b1Ty7s8qHGvc5/YMJ745l3B7abncFQ== +"@azure/core-client@^1.4.0": + version "1.5.0" + resolved "https://registry.npmjs.org/@azure/core-client/-/core-client-1.5.0.tgz#7aabb87d20e08db3683a117191c844bc19adb74e" + integrity sha512-YNk8i9LT6YcFdFO+RRU0E4Ef+A8Y5lhXo6lz61rwbG8Uo7kSqh0YqK04OexiilM43xd6n3Y9yBhLnb1NFNI9dA== dependencies: "@azure/abort-controller" "^1.0.0" "@azure/core-asynciterator-polyfill" "^1.0.0" "@azure/core-auth" "^1.3.0" - "@azure/core-rest-pipeline" "^1.1.0" - "@azure/core-tracing" "1.0.0-preview.12" + "@azure/core-rest-pipeline" "^1.5.0" + "@azure/core-tracing" "1.0.0-preview.13" + "@azure/logger" "^1.0.0" tslib "^2.2.0" "@azure/core-http@^1.2.0": @@ -172,16 +173,16 @@ dependencies: "@azure/core-asynciterator-polyfill" "^1.0.0" -"@azure/core-rest-pipeline@^1.1.0": - version "1.1.1" - resolved "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.1.1.tgz#53b4278f5c417c3da9f133511064375362b68a12" - integrity sha512-ObF8iTEDXIG7/NlL28ni9bR3XLJwgm2S3GWO4aNW6CsTCFVoY9HMdbBtN7xOB+pUQwifehifXNnootbzzuwJnw== +"@azure/core-rest-pipeline@^1.1.0", "@azure/core-rest-pipeline@^1.5.0": + version "1.5.0" + resolved "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.5.0.tgz#6f3989bd2cad581adb982885f836c00dacd78336" + integrity sha512-Lofjl3mu1TULhjxoPKY4IqXt6mC8Q+r3xMF1dOz0D/aElKfrbqtO2fts36PCClAq+DJzQM/kbnrNTf3X601I5w== dependencies: "@azure/abort-controller" "^1.0.0" "@azure/core-auth" "^1.3.0" - "@azure/core-tracing" "1.0.0-preview.12" + "@azure/core-tracing" "1.0.0-preview.13" "@azure/logger" "^1.0.0" - form-data "^3.0.0" + form-data "^4.0.0" http-proxy-agent "^4.0.1" https-proxy-agent "^5.0.0" tslib "^2.2.0" @@ -196,14 +197,6 @@ "@opentelemetry/api" "^0.10.2" tslib "^2.0.0" -"@azure/core-tracing@1.0.0-preview.12": - version "1.0.0-preview.12" - resolved "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.0.0-preview.12.tgz#f53ff452c0742ad981c244f97d93d37ca2b5e139" - integrity sha512-nvo2Wc4EKZGN6eFu9n3U7OXmASmL8VxoPIH7xaD6OlQqi44bouF0YIi9ID5rEsKLiAU59IYx6M297nqWVMWPDg== - dependencies: - "@opentelemetry/api" "^1.0.0" - tslib "^2.2.0" - "@azure/core-tracing@1.0.0-preview.13": version "1.0.0-preview.13" resolved "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.0.0-preview.13.tgz#55883d40ae2042f6f1e12b17dd0c0d34c536d644" @@ -229,13 +222,13 @@ tslib "^2.0.0" "@azure/identity@^2.0.1": - version "2.0.1" - resolved "https://registry.npmjs.org/@azure/identity/-/identity-2.0.1.tgz#31107506371e520bc874647a9e4384cfd2f85103" - integrity sha512-gdGGuLKlKIQaf2RefA84keoBfmWfiAntbW2SzcdKvwLSGzsio/qkyY3sYUpXRz/sqLDxguuimgZukp7TPgwIlg== + version "2.0.3" + resolved "https://registry.npmjs.org/@azure/identity/-/identity-2.0.3.tgz#286e7b145b29bee009ef10f3c2900122dcc1c947" + integrity sha512-MFW2QS5dWm2U8MDTSm0sHo7pcAQtQtJhKVVcN5wA2ownHzmHluXTGFK4WdFiXzUInhZtqYA5CH+OGHTGs6DTBA== dependencies: "@azure/abort-controller" "^1.0.0" "@azure/core-auth" "^1.3.0" - "@azure/core-client" "^1.0.0" + "@azure/core-client" "^1.4.0" "@azure/core-rest-pipeline" "^1.1.0" "@azure/core-tracing" "1.0.0-preview.13" "@azure/core-util" "^1.0.0-beta.1" @@ -243,7 +236,6 @@ "@azure/msal-browser" "^2.16.0" "@azure/msal-common" "^4.5.1" "@azure/msal-node" "^1.3.0" - "@types/stoppable" "^1.1.0" events "^3.0.0" jws "^4.0.0" open "^8.0.0" @@ -4273,11 +4265,6 @@ dependencies: "@opentelemetry/context-base" "^0.10.2" -"@opentelemetry/api@^1.0.0": - version "1.0.1" - resolved "https://registry.npmjs.org/@opentelemetry/api/-/api-1.0.1.tgz#03c72f548431da5820a0c8864d1401e348e7e79f" - integrity sha512-H5Djcc2txGAINgf3TNaq4yFofYSIK3722PM89S/3R8FuI/eqi1UscajlXk7EBkG9s2pxss/q6SHlpturaavXaw== - "@opentelemetry/api@^1.0.1": version "1.0.4" resolved "https://registry.npmjs.org/@opentelemetry/api/-/api-1.0.4.tgz#a167e46c10d05a07ab299fc518793b0cff8f6924" From 0f9442c887136a1701238a99fbb1ac9e279bd671 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 17 Feb 2022 04:48:37 +0000 Subject: [PATCH 155/383] chore(deps): bump ldapjs from 2.3.0 to 2.3.1 Bumps [ldapjs](https://github.com/ldapjs/node-ldapjs) from 2.3.0 to 2.3.1. - [Release notes](https://github.com/ldapjs/node-ldapjs/releases) - [Changelog](https://github.com/ldapjs/node-ldapjs/blob/master/CHANGES.md) - [Commits](https://github.com/ldapjs/node-ldapjs/compare/v2.3.0...v2.3.1) --- updated-dependencies: - dependency-name: ldapjs dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 0132513fc0..e2422647f9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -15816,9 +15816,9 @@ ldap-filter@^0.3.3: assert-plus "^1.0.0" ldapjs@^2.2.0: - version "2.3.0" - resolved "https://registry.npmjs.org/ldapjs/-/ldapjs-2.3.0.tgz#999c85f642216709009dc8728e58ac7793888def" - integrity sha512-3Rbm3CS7vzTccpP1QnzKCEPok60L/b3BFlWU8r93P5oadCAaqCWEH9Td08crPnw4Ti20W8y0+ZKtFFNzxVu4kA== + version "2.3.1" + resolved "https://registry.npmjs.org/ldapjs/-/ldapjs-2.3.1.tgz#04136815fb1f21d692ac87fab5961a04d86e8b04" + integrity sha512-kf0tHHLrpwKaBAQOhYHXgdeh2PkFuCCxWgLb1MRn67ZQVo787D2pij3mmHVZx193GIdM8xcfi8HF6AIYYnj0fQ== dependencies: abstract-logging "^2.0.0" asn1 "^0.2.4" From 107dc001c32d2ef3f1a4e46fce1ae40faea5a965 Mon Sep 17 00:00:00 2001 From: kim5566 <28945404+kim5566@users.noreply.github.com> Date: Thu, 17 Feb 2022 20:05:35 +1100 Subject: [PATCH 156/383] address reviews Signed-off-by: kim5566 <28945404+kim5566@users.noreply.github.com> --- .changeset/mean-pumpkins-search.md | 9 +------- plugins/todo-backend/api-report.md | 1 - .../src/lib/TodoReader/TodoScmReader.test.ts | 15 ++++++++++-- .../src/lib/TodoReader/TodoScmReader.ts | 23 +++++++------------ 4 files changed, 22 insertions(+), 26 deletions(-) diff --git a/.changeset/mean-pumpkins-search.md b/.changeset/mean-pumpkins-search.md index 36f06661b1..78a92ff5eb 100644 --- a/.changeset/mean-pumpkins-search.md +++ b/.changeset/mean-pumpkins-search.md @@ -2,11 +2,4 @@ '@backstage/plugin-todo-backend': patch --- -Add support to exclude certain folders in `todo` plugin. - -To add excluded folders, edit `app-config.yaml` as follow: - -``` -todo: - excludeFolders: ['vendor/'] -``` +Add support to exclude vendor folder in `todo` plugin. diff --git a/plugins/todo-backend/api-report.md b/plugins/todo-backend/api-report.md index 602a6b4a87..ac8b2ce957 100644 --- a/plugins/todo-backend/api-report.md +++ b/plugins/todo-backend/api-report.md @@ -131,7 +131,6 @@ export type TodoScmReaderOptions = { reader: UrlReader; integrations: ScmIntegrations; parser?: TodoParser; - excludeFolders?: string[]; }; // @public (undocumented) diff --git a/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.test.ts b/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.test.ts index 5693c37783..0036e748ff 100644 --- a/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.test.ts +++ b/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.test.ts @@ -192,12 +192,10 @@ describe('TodoScmReader', () => { it('should filter out exclude folders', async () => { const reader = mockReader(); - const excludeFolders = ['vendor/']; const todoReader = new TodoScmReader({ logger: getVoidLogger(), reader, integrations: ScmIntegrations.fromConfig(new ConfigReader({})), - excludeFolders: excludeFolders, }); reader.readTree.mockResolvedValueOnce({ files: async () => [ @@ -205,6 +203,10 @@ describe('TodoScmReader', () => { content: async () => Buffer.from('// TODO: my-todo', 'utf8'), path: 'vendor/another-file.go', }, + { + content: async () => Buffer.from('// TODO: my-todo', 'utf8'), + path: 'test/vendor/another-file.go', + }, { content: async () => Buffer.from('// TODO: my-todo', 'utf8'), path: 'my-folder/my-file.js', @@ -225,6 +227,14 @@ describe('TodoScmReader', () => { viewUrl: 'https://github.com/backstage/backstage/vendor/another-file.go#L1', }, + { + text: 'my-todo', + tag: 'TODO', + lineNumber: 1, + repoFilePath: 'test/vendor/another-file.go', + viewUrl: + 'https://github.com/backstage/backstage/test/vendor/another-file.go#L1', + }, { text: 'my-todo', tag: 'TODO', @@ -247,6 +257,7 @@ describe('TodoScmReader', () => { const filterFunc = reader.readTree.mock.calls[0][1]!.filter!; expect(filterFunc('another-file.go')).toBe(true); expect(filterFunc('vendor/another-file.go')).toBe(false); + expect(filterFunc('test/vendor/another-file.go')).toBe(false); expect(filterFunc('my-file.js')).toBe(true); expect(filterFunc('my-folder/my-file.js')).toBe(true); }); diff --git a/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.ts b/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.ts index f7cdba2d91..ade15343d5 100644 --- a/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.ts +++ b/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.ts @@ -41,13 +41,14 @@ const excludedExtensions = [ ]; const MAX_FILE_SIZE = 200000; +const excludeFolders = ['vendor']; + /** @public */ export type TodoScmReaderOptions = { logger: Logger; reader: UrlReader; integrations: ScmIntegrations; parser?: TodoParser; - excludeFolders?: string[]; }; type CacheItem = { @@ -61,7 +62,6 @@ export class TodoScmReader implements TodoReader { private readonly reader: UrlReader; private readonly parser: TodoParser; private readonly integrations: ScmIntegrations; - private readonly excludeFolders: string[]; private readonly cache = new Map(); private readonly inFlightReads = new Map>(); @@ -70,11 +70,8 @@ export class TodoScmReader implements TodoReader { config: Config, options: Omit, ) { - const excludeFolders: string[] = - config.getOptionalStringArray('todo.excludeFolders') ?? []; return new TodoScmReader({ ...options, - excludeFolders, integrations: ScmIntegrations.fromConfig(config), }); } @@ -84,7 +81,6 @@ export class TodoScmReader implements TodoReader { this.reader = options.reader; this.parser = options.parser ?? createTodoParser(); this.integrations = options.integrations; - this.excludeFolders = options.excludeFolders ?? []; } async readTodos(options: ReadTodosOptions): Promise { @@ -95,12 +91,7 @@ export class TodoScmReader implements TodoReader { } const cacheItem = this.cache.get(url); - const excludeFolders = this.excludeFolders; - const newRead = this.doReadTodos( - { url }, - excludeFolders, - cacheItem?.etag, - ).catch(error => { + const newRead = this.doReadTodos({ url }, cacheItem?.etag).catch(error => { if (cacheItem && error.name === 'NotModifiedError') { return cacheItem; } @@ -119,10 +110,13 @@ export class TodoScmReader implements TodoReader { private async doReadTodos( options: ReadTodosOptions, - excludeFolders?: string[], etag?: string, ): Promise { const { url } = options; + const filePathFilter = (filePath: string): boolean => { + const splitPath = filePath.split('/'); + return !excludeFolders.some(r => splitPath.includes(r)); + }; const tree = await this.reader.readTree(url, { etag, filter(filePath, info) { @@ -130,12 +124,11 @@ export class TodoScmReader implements TodoReader { if (info && info.size > MAX_FILE_SIZE) { return false; } - const excFolders = excludeFolders ?? []; return ( !filePath.startsWith('.') && !filePath.includes('/.') && !excludedExtensions.includes(extname) && - !excFolders.some(exclude => filePath.startsWith(exclude)) + filePathFilter(filePath) ); }, }); From 4e2e82e087ea6397413a6a0a07d083e232695c2a Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Thu, 17 Feb 2022 10:10:29 +0100 Subject: [PATCH 157/383] cli: fix posix path normalization in PackageGraph Signed-off-by: Patrik Oldsberg --- packages/cli/src/lib/monorepo/PackageGraph.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/packages/cli/src/lib/monorepo/PackageGraph.ts b/packages/cli/src/lib/monorepo/PackageGraph.ts index a1f77299df..4bbb9eac67 100644 --- a/packages/cli/src/lib/monorepo/PackageGraph.ts +++ b/packages/cli/src/lib/monorepo/PackageGraph.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import { relative as relativePath, posix as posixPath } from 'path'; +import path from 'path'; import { getPackages, Package } from '@manypkg/get-packages'; import { paths } from '../paths'; import { PackageRole } from '../role'; @@ -166,8 +166,11 @@ export class PackageGraph extends Map { const dirMap = new Map( Array.from(this.values()).map(pkg => [ - posixPath.normalize(relativePath(paths.targetRoot, pkg.dir)) + - posixPath.sep, + // relative from root, convert to posix, and add a / at the end + path + .relative(paths.targetRoot, pkg.dir) + .split(path.sep) + .join(path.posix.sep) + path.posix.sep, pkg, ]), ); From 6a9c56b700de730b77d7d038fe95cdf787bec63a Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Thu, 17 Feb 2022 10:24:12 +0100 Subject: [PATCH 158/383] backend: removed airbrake plugin dep Signed-off-by: Patrik Oldsberg --- packages/backend/package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/backend/package.json b/packages/backend/package.json index 787530550a..41972c15d2 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -33,7 +33,6 @@ "@backstage/catalog-model": "^0.9.10", "@backstage/config": "^0.1.13", "@backstage/integration": "^0.7.2", - "@backstage/plugin-airbrake-backend": "^0.0.0", "@backstage/plugin-app-backend": "^0.3.24", "@backstage/plugin-auth-backend": "^0.10.0", "@backstage/plugin-auth-node": "^0.1.0", From edeeac7e9d0055e51bab2131e4767a756cf53745 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Thu, 17 Feb 2022 10:39:53 +0100 Subject: [PATCH 159/383] pagerduty: fix luxon dependency range Signed-off-by: Patrik Oldsberg --- .changeset/dependabot-41e6f4a.md | 1 - .changeset/metal-wasps-appear.md | 5 +++++ plugins/firehydrant/package.json | 2 +- plugins/pagerduty/package.json | 2 +- yarn.lock | 2 +- 5 files changed, 8 insertions(+), 4 deletions(-) create mode 100644 .changeset/metal-wasps-appear.md diff --git a/.changeset/dependabot-41e6f4a.md b/.changeset/dependabot-41e6f4a.md index 64d49b3814..3de85547a2 100644 --- a/.changeset/dependabot-41e6f4a.md +++ b/.changeset/dependabot-41e6f4a.md @@ -1,6 +1,5 @@ --- '@backstage/plugin-firehydrant': patch -'@backstage/plugin-pagerduty': patch --- chore(deps): bump `luxon` from 2.0.2 to 2.3.0 diff --git a/.changeset/metal-wasps-appear.md b/.changeset/metal-wasps-appear.md new file mode 100644 index 0000000000..dcbe390b63 --- /dev/null +++ b/.changeset/metal-wasps-appear.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-pagerduty': patch +--- + +Switch `luxon` dependency range to be `^2.0.2` rather than `2.0.2`. diff --git a/plugins/firehydrant/package.json b/plugins/firehydrant/package.json index edc52bf793..ca9aa616e8 100644 --- a/plugins/firehydrant/package.json +++ b/plugins/firehydrant/package.json @@ -32,7 +32,7 @@ "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", - "luxon": "^2.3.0", + "luxon": "^2.0.2", "react-use": "^17.2.4" }, "peerDependencies": { diff --git a/plugins/pagerduty/package.json b/plugins/pagerduty/package.json index d106a16080..d808cdd95a 100644 --- a/plugins/pagerduty/package.json +++ b/plugins/pagerduty/package.json @@ -43,7 +43,7 @@ "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", "classnames": "^2.2.6", - "luxon": "2.3.0", + "luxon": "^2.0.2", "react-router-dom": "6.0.0-beta.0", "react-use": "^17.2.4" }, diff --git a/yarn.lock b/yarn.lock index fe63c8be46..000ff4d0df 100644 --- a/yarn.lock +++ b/yarn.lock @@ -16458,7 +16458,7 @@ lunr@^2.3.9: resolved "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz#18b123142832337dd6e964df1a5a7707b25d35e1" integrity sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow== -luxon@2.3.0, luxon@^2.0.2, luxon@^2.3.0: +luxon@^2.0.2: version "2.3.0" resolved "https://registry.npmjs.org/luxon/-/luxon-2.3.0.tgz#bf16a7e642513c2a20a6230a6a41b0ab446d0045" integrity sha512-gv6jZCV+gGIrVKhO90yrsn8qXPKD8HYZJtrUDSfEbow8Tkw84T9OnCyJhWvnJIaIF/tBuiAjZuQHUt1LddX2mg== From ac0d932b0b2456c7c01bfa63a9a08558ea5fcc7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Thu, 17 Feb 2022 10:52:53 +0100 Subject: [PATCH 160/383] review comments 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 | 2 +- plugins/catalog/src/components/AboutCard/AboutCard.tsx | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/plugins/catalog/api-report.md b/plugins/catalog/api-report.md index d5e4bab347..608f7a8515 100644 --- a/plugins/catalog/api-report.md +++ b/plugins/catalog/api-report.md @@ -22,7 +22,7 @@ import { TableProps } from '@backstage/core-components'; import { TabProps } from '@material-ui/core'; import { UserListFilterKind } from '@backstage/plugin-catalog-react'; -// @public (undocumented) +// @public @deprecated (undocumented) export function AboutCard(props: AboutCardProps): JSX.Element; // @public diff --git a/plugins/catalog/src/components/AboutCard/AboutCard.tsx b/plugins/catalog/src/components/AboutCard/AboutCard.tsx index fe9673dca7..52b3fe3962 100644 --- a/plugins/catalog/src/components/AboutCard/AboutCard.tsx +++ b/plugins/catalog/src/components/AboutCard/AboutCard.tsx @@ -83,7 +83,10 @@ export interface AboutCardProps { variant?: InfoCardVariants; } -/** @public */ +/** + * @public + * @deprecated Please use EntityAboutCard instead + */ export function AboutCard(props: AboutCardProps) { const { variant } = props; const classes = useStyles(); From 4034b980b51390962c22b7237eca1355da1a9d4d Mon Sep 17 00:00:00 2001 From: Karan Shah Date: Thu, 17 Feb 2022 10:10:58 +0000 Subject: [PATCH 161/383] Make Airbrake config optional in dev Signed-off-by: Karan Shah --- .../src/config/ExtractAirbrakeConfig.ts | 27 ++++++++++++++++--- .../src/service/standaloneServer.ts | 2 +- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/plugins/airbrake-backend/src/config/ExtractAirbrakeConfig.ts b/plugins/airbrake-backend/src/config/ExtractAirbrakeConfig.ts index ea39a27d11..20542ccbde 100644 --- a/plugins/airbrake-backend/src/config/ExtractAirbrakeConfig.ts +++ b/plugins/airbrake-backend/src/config/ExtractAirbrakeConfig.ts @@ -14,6 +14,7 @@ * limitations under the License. */ import { Config } from '@backstage/config'; +import * as winston from 'winston'; /** * The configuration needed for the airbrake-backend plugin @@ -33,9 +34,27 @@ export interface AirbrakeConfig { * @public * * @param config - The config object to extract from + * @param logger - THe logger object */ -export function extractAirbrakeConfig(config: Config): AirbrakeConfig { - return { - apiKey: config.getString('airbrake.apiKey'), - }; +export function extractAirbrakeConfig( + config: Config, + logger: winston.Logger, +): AirbrakeConfig { + try { + return { + apiKey: config.getString('airbrake.apiKey'), + }; + } catch (e) { + if (process.env.NODE_ENV !== 'development') { + throw e; + } else { + logger.warn( + 'Airbrake config missing, Airbrake plugin will probably not work', + e, + ); + return { + apiKey: '', + }; + } + } } diff --git a/plugins/airbrake-backend/src/service/standaloneServer.ts b/plugins/airbrake-backend/src/service/standaloneServer.ts index 6825e60a0a..2f2de71fa1 100644 --- a/plugins/airbrake-backend/src/service/standaloneServer.ts +++ b/plugins/airbrake-backend/src/service/standaloneServer.ts @@ -34,7 +34,7 @@ export async function startStandaloneServer( ): Promise { const logger = options.logger.child({ service: 'airbrake-backend' }); const config = await loadBackendConfig({ logger, argv: process.argv }); - const airbrakeConfig = extractAirbrakeConfig(config); + const airbrakeConfig = extractAirbrakeConfig(config, logger); logger.debug('Starting application server...'); const router = await createRouter({ logger, From 9e8668bac1557c4421607519b2743a383d9d8ca8 Mon Sep 17 00:00:00 2001 From: Karan Shah Date: Thu, 17 Feb 2022 10:15:33 +0000 Subject: [PATCH 162/383] Add logger in the router test Signed-off-by: Karan Shah --- plugins/airbrake-backend/src/service/router.test.ts | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/plugins/airbrake-backend/src/service/router.test.ts b/plugins/airbrake-backend/src/service/router.test.ts index 60c1f52126..05c9308d7f 100644 --- a/plugins/airbrake-backend/src/service/router.test.ts +++ b/plugins/airbrake-backend/src/service/router.test.ts @@ -24,23 +24,26 @@ import { RouterOptions, } from './router'; import { AirbrakeConfig, extractAirbrakeConfig } from '../config'; +import * as winston from 'winston'; describe('createRouter', () => { let app: express.Express; let airbrakeConfig: AirbrakeConfig; + let voidLogger: winston.Logger; beforeEach(async () => { jest.resetAllMocks(); + voidLogger = getVoidLogger(); const config = new ConfigReader({ airbrake: { apiKey: 'fakeApiKey', }, }); - airbrakeConfig = extractAirbrakeConfig(config); + airbrakeConfig = extractAirbrakeConfig(config, voidLogger); const router = await createRouter({ - logger: getVoidLogger(), + logger: voidLogger, airbrakeConfig, }); app = express().use(router); @@ -58,7 +61,7 @@ describe('createRouter', () => { describe('GET /api', () => { it('appends the API Key properly with no other url parameters', () => { const options: RouterOptions = { - logger: getVoidLogger(), + logger: voidLogger, airbrakeConfig, }; const pathRewrite = generateAirbrakePathRewrite(options) as ( @@ -72,7 +75,7 @@ describe('createRouter', () => { it('appends the API Key properly despite there being other URL parameters', () => { const options: RouterOptions = { - logger: getVoidLogger(), + logger: voidLogger, airbrakeConfig, }; const pathRewrite = generateAirbrakePathRewrite(options) as ( From da78e79a948b99a40802b6b3ec0194d7350f7e73 Mon Sep 17 00:00:00 2001 From: Karan Shah Date: Thu, 17 Feb 2022 10:29:56 +0000 Subject: [PATCH 163/383] Get the plugins ready for release Signed-off-by: Karan Shah --- .changeset/heavy-scissors-run.md | 6 ++++++ plugins/airbrake-backend/api-report.md | 6 +++++- plugins/airbrake/api-report.md | 10 ++-------- plugins/airbrake/src/extensions.tsx | 5 +++++ plugins/airbrake/src/index.ts | 7 +++++++ plugins/airbrake/src/plugin.ts | 5 +++++ 6 files changed, 30 insertions(+), 9 deletions(-) create mode 100644 .changeset/heavy-scissors-run.md diff --git a/.changeset/heavy-scissors-run.md b/.changeset/heavy-scissors-run.md new file mode 100644 index 0000000000..c2982a509c --- /dev/null +++ b/.changeset/heavy-scissors-run.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-airbrake': minor +'@backstage/plugin-airbrake-backend': minor +--- + +This marks the first release where the Airbrake plugin is useable. Airbrake frontend and Airbrake backend work with each other. Currently just a summary of the latest Airbrakes is shown on Backstage. diff --git a/plugins/airbrake-backend/api-report.md b/plugins/airbrake-backend/api-report.md index b9e9a50e0b..58f299fb4c 100644 --- a/plugins/airbrake-backend/api-report.md +++ b/plugins/airbrake-backend/api-report.md @@ -6,6 +6,7 @@ import { Config } from '@backstage/config'; import express from 'express'; import { Logger as Logger_2 } from 'winston'; +import * as winston from 'winston'; // @public export interface AirbrakeConfig { @@ -16,7 +17,10 @@ export interface AirbrakeConfig { export function createRouter(options: RouterOptions): Promise; // @public -export function extractAirbrakeConfig(config: Config): AirbrakeConfig; +export function extractAirbrakeConfig( + config: Config, + logger: winston.Logger, +): AirbrakeConfig; // @public export interface RouterOptions { diff --git a/plugins/airbrake/api-report.md b/plugins/airbrake/api-report.md index c01aa938ae..bd274e604d 100644 --- a/plugins/airbrake/api-report.md +++ b/plugins/airbrake/api-report.md @@ -8,9 +8,7 @@ import { BackstagePlugin } from '@backstage/core-plugin-api'; import { RouteRef } from '@backstage/core-plugin-api'; -// Warning: (ae-missing-release-tag) "airbrakePlugin" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) +// @public export const airbrakePlugin: BackstagePlugin< { root: RouteRef; @@ -18,10 +16,6 @@ export const airbrakePlugin: BackstagePlugin< {} >; -// Warning: (ae-missing-release-tag) "EntityAirbrakeContent" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) +// @public export const EntityAirbrakeContent: () => JSX.Element; - -// (No @packageDocumentation comment for this package) ``` diff --git a/plugins/airbrake/src/extensions.tsx b/plugins/airbrake/src/extensions.tsx index 6fbea68409..d4f890f44a 100644 --- a/plugins/airbrake/src/extensions.tsx +++ b/plugins/airbrake/src/extensions.tsx @@ -20,6 +20,11 @@ import { airbrakePlugin } from './plugin'; import { createRoutableExtension } from '@backstage/core-plugin-api'; import { rootRouteRef } from './routes'; +/** + * This is the widget that shows up on a component page + * + * @public + */ export const EntityAirbrakeContent = airbrakePlugin.provide( createRoutableExtension({ name: 'EntityAirbrakeContent', diff --git a/plugins/airbrake/src/index.ts b/plugins/airbrake/src/index.ts index d5aedd9ba6..2b2406776b 100644 --- a/plugins/airbrake/src/index.ts +++ b/plugins/airbrake/src/index.ts @@ -13,5 +13,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + +/** + * The Airbrake plugin provides connectivity between Backstage and Airbrake (https://airbrake.io/). + * + * @packageDocumentation + */ + export { airbrakePlugin } from './plugin'; export { EntityAirbrakeContent } from './extensions'; diff --git a/plugins/airbrake/src/plugin.ts b/plugins/airbrake/src/plugin.ts index e7e3dae1cb..56f65ba110 100644 --- a/plugins/airbrake/src/plugin.ts +++ b/plugins/airbrake/src/plugin.ts @@ -22,6 +22,11 @@ import { import { rootRouteRef } from './routes'; import { airbrakeApiRef, ProductionAirbrakeApi } from './api'; +/** + * The Airbrake plugin instance + * + * @public + */ export const airbrakePlugin = createPlugin({ id: 'airbrake', apis: [ From d4605d6327051a1d097881a9eb7e24e31757ea83 Mon Sep 17 00:00:00 2001 From: Karan Shah Date: Thu, 17 Feb 2022 10:31:43 +0000 Subject: [PATCH 164/383] It should be safe to add the plugin back in Signed-off-by: Karan Shah --- packages/backend/package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/backend/package.json b/packages/backend/package.json index 41972c15d2..787530550a 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -33,6 +33,7 @@ "@backstage/catalog-model": "^0.9.10", "@backstage/config": "^0.1.13", "@backstage/integration": "^0.7.2", + "@backstage/plugin-airbrake-backend": "^0.0.0", "@backstage/plugin-app-backend": "^0.3.24", "@backstage/plugin-auth-backend": "^0.10.0", "@backstage/plugin-auth-node": "^0.1.0", From b17958bc6076bb8297517e51886f16635d2f4b1c Mon Sep 17 00:00:00 2001 From: Johan Haals Date: Thu, 17 Feb 2022 11:35:23 +0100 Subject: [PATCH 165/383] catalog-react: cleanup api report Signed-off-by: Johan Haals --- plugins/catalog-react/api-report.md | 188 +++++++----------- plugins/catalog-react/src/api.ts | 4 + .../src/components/EntityRefLink/format.ts | 1 + .../EntitySearchBar/EntitySearchBar.tsx | 4 +- .../components/EntityTable/EntityTable.tsx | 2 +- .../FavoriteEntity/FavoriteEntity.tsx | 10 +- .../src/components/FavoriteEntity/index.ts | 1 + .../UnregisterEntityDialog.tsx | 54 ++--- .../UnregisterEntityDialog/index.ts | 1 + .../UserListPicker/UserListPicker.tsx | 10 +- .../src/components/UserListPicker/index.ts | 1 + plugins/catalog-react/src/filters.ts | 27 +++ plugins/catalog-react/src/hooks/index.ts | 7 +- plugins/catalog-react/src/hooks/useEntity.tsx | 4 +- .../src/hooks/useEntityCompoundName.ts | 1 + .../catalog-react/src/hooks/useEntityKinds.ts | 4 +- .../src/hooks/useEntityListProvider.tsx | 13 ++ .../src/hooks/useEntityTypeFilter.tsx | 4 +- plugins/catalog-react/src/hooks/useOwnUser.ts | 1 + .../src/hooks/useRelatedEntities.ts | 1 + .../src/hooks/useStarredEntities.ts | 1 + .../src/hooks/useStarredEntity.ts | 1 + plugins/catalog-react/src/routes.ts | 10 +- .../catalog-react/src/testUtils/providers.tsx | 1 + plugins/catalog-react/src/types.ts | 2 + plugins/catalog-react/src/utils/filters.ts | 2 + .../src/utils/getEntityMetadataUrl.ts | 2 + .../src/utils/getEntityRelations.ts | 1 + .../src/utils/getEntitySourceLocation.ts | 2 + plugins/catalog-react/src/utils/isOwnerOf.ts | 1 + 30 files changed, 202 insertions(+), 159 deletions(-) diff --git a/plugins/catalog-react/api-report.md b/plugins/catalog-react/api-report.md index 5ab3f20d76..4a1b9a9871 100644 --- a/plugins/catalog-react/api-report.md +++ b/plugins/catalog-react/api-report.md @@ -66,9 +66,7 @@ export { CATALOG_FILTER_EXISTS }; export { CatalogApi }; -// Warning: (ae-missing-release-tag) "catalogApiRef" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) +// @public export const catalogApiRef: ApiRef; // @public (undocumented) @@ -100,8 +98,6 @@ export type CatalogReactUserListPickerClassKey = | 'menuItem' | 'groupWrapper'; -// Warning: (ae-missing-release-tag) "catalogRouteRef" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public @deprecated (undocumented) export const catalogRouteRef: RouteRef; @@ -143,8 +139,6 @@ function createSpecTypeColumn(): TableColumn; // @public (undocumented) function createSystemColumn(): TableColumn; -// Warning: (ae-missing-release-tag) "DefaultEntityFilters" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type DefaultEntityFilters = { kind?: EntityKindFilter; @@ -167,13 +161,9 @@ export class DefaultStarredEntitiesApi implements StarredEntitiesApi { toggleStarred(entityRef: string): Promise; } -// Warning: (ae-forgotten-export) The symbol "EntityLoadingStatus" needs to be exported by the entry point index.d.ts -// // @public @deprecated (undocumented) export const EntityContext: Context; -// Warning: (ae-missing-release-tag) "EntityFilter" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type EntityFilter = { getCatalogFilters?: () => Record< @@ -184,9 +174,7 @@ export type EntityFilter = { toQueryValue?: () => string | string[]; }; -// Warning: (ae-missing-release-tag) "EntityKindFilter" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) +// @public export class EntityKindFilter implements EntityFilter { constructor(value: string); // (undocumented) @@ -210,9 +198,7 @@ export interface EntityKindPickerProps { initialFilter?: string; } -// Warning: (ae-missing-release-tag) "EntityLifecycleFilter" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) +// @public export class EntityLifecycleFilter implements EntityFilter { constructor(values: string[]); // (undocumented) @@ -226,24 +212,42 @@ export class EntityLifecycleFilter implements EntityFilter { // @public (undocumented) export const EntityLifecyclePicker: () => JSX.Element | null; -// Warning: (ae-forgotten-export) The symbol "EntityListContextProps" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "EntityListContext" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) +// @public export const EntityListContext: React_2.Context< EntityListContextProps | undefined >; -// Warning: (ae-missing-release-tag) "EntityListProvider" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) +export type EntityListContextProps< + EntityFilters extends DefaultEntityFilters = DefaultEntityFilters, +> = { + filters: EntityFilters; + entities: Entity[]; + backendEntities: Entity[]; + updateFilters: ( + filters: + | Partial + | ((prevFilters: EntityFilters) => Partial), + ) => void; + queryParameters: Partial>; + loading: boolean; + error?: Error; +}; + +// @public export const EntityListProvider: ({ children, }: PropsWithChildren<{}>) => JSX.Element; -// Warning: (ae-missing-release-tag) "EntityOwnerFilter" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) +export type EntityLoadingStatus = { + entity?: Entity; + loading: boolean; + error?: Error; + refresh?: VoidFunction; +}; + +// @public export class EntityOwnerFilter implements EntityFilter { constructor(values: string[]); // (undocumented) @@ -295,8 +299,6 @@ export type EntityRefLinksProps = { defaultKind?: string; } & Omit; -// Warning: (ae-missing-release-tag) "entityRoute" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public @deprecated (undocumented) export const entityRoute: RouteRef<{ name: string; @@ -304,17 +306,13 @@ export const entityRoute: RouteRef<{ namespace: string; }>; -// Warning: (ae-missing-release-tag) "entityRouteParams" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) +// @public export function entityRouteParams(entity: Entity): { readonly kind: string; readonly namespace: string; readonly name: string; }; -// Warning: (ae-missing-release-tag) "entityRouteRef" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public export const entityRouteRef: RouteRef<{ name: string; @@ -322,11 +320,9 @@ export const entityRouteRef: RouteRef<{ namespace: string; }>; -// @public (undocumented) +// @public export const EntitySearchBar: () => JSX.Element; -// Warning: (ae-missing-release-tag) "EntitySourceLocation" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type EntitySourceLocation = { locationTargetUrl: string; @@ -352,8 +348,6 @@ export namespace EntityTable { componentEntityColumns: TableColumn[]; } -// Warning: (ae-unresolved-link) The @link reference could not be resolved: The reference is ambiguous because "EntityTable" has more than one declaration; you need to add a TSDoc member reference selector -// // @public export interface EntityTableProps { // (undocumented) @@ -368,9 +362,7 @@ export interface EntityTableProps { variant?: 'gridItem'; } -// Warning: (ae-missing-release-tag) "EntityTagFilter" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) +// @public export class EntityTagFilter implements EntityFilter { constructor(values: string[]); // (undocumented) @@ -384,9 +376,7 @@ export class EntityTagFilter implements EntityFilter { // @public (undocumented) export const EntityTagPicker: () => JSX.Element | null; -// Warning: (ae-missing-release-tag) "EntityTextFilter" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) +// @public export class EntityTextFilter implements EntityFilter { constructor(value: string); // (undocumented) @@ -395,9 +385,7 @@ export class EntityTextFilter implements EntityFilter { readonly value: string; } -// Warning: (ae-missing-release-tag) "EntityTypeFilter" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) +// @public export class EntityTypeFilter implements EntityFilter { constructor(value: string | string[]); // (undocumented) @@ -423,26 +411,31 @@ export interface EntityTypePickerProps { initialFilter?: string; } -// Warning: (ae-forgotten-export) The symbol "Props" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "FavoriteEntity" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export const FavoriteEntity: (props: Props) => JSX.Element; +// @public (undocumented) +export type EntityTypeReturn = { + loading: boolean; + error?: Error; + availableTypes: string[]; + selectedTypes: string[]; + setSelectedTypes: (types: string[]) => void; +}; + +// @public +export const FavoriteEntity: (props: FavoriteEntityProps) => JSX.Element; -// Warning: (ae-missing-release-tag) "favoriteEntityIcon" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const favoriteEntityIcon: (isStarred: boolean) => JSX.Element; -// Warning: (ae-missing-release-tag) "favoriteEntityTooltip" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// +// @public (undocumented) +export type FavoriteEntityProps = ComponentProps & { + entity: Entity; +}; + // @public (undocumented) export const favoriteEntityTooltip: ( isStarred: boolean, ) => 'Remove from favorites' | 'Add to favorites'; -// Warning: (ae-missing-release-tag) "formatEntityRefTitle" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export function formatEntityRefTitle( entityRef: Entity | EntityName, @@ -451,18 +444,12 @@ export function formatEntityRefTitle( }, ): string; -// Warning: (ae-missing-release-tag) "getEntityMetadataEditUrl" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export function getEntityMetadataEditUrl(entity: Entity): string | undefined; -// Warning: (ae-missing-release-tag) "getEntityMetadataViewUrl" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export function getEntityMetadataViewUrl(entity: Entity): string | undefined; -// Warning: (ae-missing-release-tag) "getEntityRelations" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public export function getEntityRelations( entity: Entity | undefined, @@ -472,8 +459,6 @@ export function getEntityRelations( }, ): EntityName[]; -// Warning: (ae-missing-release-tag) "getEntitySourceLocation" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export function getEntitySourceLocation( entity: Entity, @@ -487,8 +472,6 @@ export function InspectEntityDialog(props: { onClose: () => void; }): JSX.Element | null; -// Warning: (ae-missing-release-tag) "isOwnerOf" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public export function isOwnerOf(owner: Entity, owned: Entity): boolean; @@ -503,8 +486,6 @@ export function loadIdentityOwnerRefs( identityApi: IdentityApi, ): Promise; -// Warning: (ae-missing-release-tag) "MockEntityListContextProvider" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const MockEntityListContextProvider: ({ children, @@ -513,22 +494,16 @@ export const MockEntityListContextProvider: ({ value?: Partial> | undefined; }>) => JSX.Element; -// Warning: (ae-missing-release-tag) "reduceCatalogFilters" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export function reduceCatalogFilters( filters: EntityFilter[], ): Record; -// Warning: (ae-missing-release-tag) "reduceEntityFilters" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export function reduceEntityFilters( filters: EntityFilter[], ): (entity: Entity) => boolean; -// Warning: (ae-missing-release-tag) "rootRoute" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public @deprecated (undocumented) export const rootRoute: RouteRef; @@ -541,16 +516,18 @@ export interface StarredEntitiesApi { // @public export const starredEntitiesApiRef: ApiRef; -// Warning: (ae-forgotten-export) The symbol "Props" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "UnregisterEntityDialog" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export const UnregisterEntityDialog: ({ - open, - onConfirm, - onClose, - entity, -}: Props_2) => JSX.Element; +export const UnregisterEntityDialog: ( + props: UnregisterEntityDialogProps, +) => JSX.Element; + +// @public (undocumented) +export type UnregisterEntityDialogProps = { + open: boolean; + onConfirm: () => any; + onClose: () => any; + entity: Entity; +}; // @public export function useEntity(): { @@ -560,8 +537,6 @@ export function useEntity(): { refresh: VoidFunction | undefined; }; -// Warning: (ae-missing-release-tag) "useEntityCompoundName" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public export const useEntityCompoundName: () => { kind: string; @@ -569,23 +544,17 @@ export const useEntityCompoundName: () => { name: string; }; -// Warning: (ae-missing-release-tag) "useEntityFromUrl" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const useEntityFromUrl: () => EntityLoadingStatus; -// Warning: (ae-missing-release-tag) "useEntityKinds" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) +// @public export function useEntityKinds(): { error: Error | undefined; loading: boolean; kinds: string[] | undefined; }; -// Warning: (ae-missing-release-tag) "useEntityListProvider" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) +// @public export function useEntityListProvider< EntityFilters extends DefaultEntityFilters = DefaultEntityFilters, >(): EntityListContextProps; @@ -603,9 +572,6 @@ export function useEntityPermission(permission: Permission): { error?: Error; }; -// Warning: (ae-forgotten-export) The symbol "EntityTypeReturn" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "useEntityTypeFilter" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public export function useEntityTypeFilter(): EntityTypeReturn; @@ -615,13 +581,9 @@ export function useOwnedEntities(allowedKinds?: string[]): { ownedEntities: GetEntitiesResponse | undefined; }; -// Warning: (ae-missing-release-tag) "useOwnUser" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public export function useOwnUser(): AsyncState; -// Warning: (ae-missing-release-tag) "useRelatedEntities" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export function useRelatedEntities( entity: Entity, @@ -638,9 +600,7 @@ export function useRelatedEntities( error: Error | undefined; }; -// Warning: (ae-missing-release-tag) "UserListFilter" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) +// @public export class UserListFilter implements EntityFilter { constructor( value: UserListFilterKind, @@ -659,22 +619,18 @@ export class UserListFilter implements EntityFilter { readonly value: UserListFilterKind; } -// Warning: (ae-missing-release-tag) "UserListFilterKind" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type UserListFilterKind = 'owned' | 'starred' | 'all'; -// Warning: (ae-forgotten-export) The symbol "UserListPickerProps" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "UserListPicker" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export const UserListPicker: ({ - initialFilter, - availableFilters, -}: UserListPickerProps) => JSX.Element; +export const UserListPicker: (props: UserListPickerProps) => JSX.Element; + +// @public (undocumented) +export type UserListPickerProps = { + initialFilter?: UserListFilterKind; + availableFilters?: UserListFilterKind[]; +}; -// Warning: (ae-missing-release-tag) "useStarredEntities" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export function useStarredEntities(): { starredEntities: Set; @@ -682,8 +638,6 @@ export function useStarredEntities(): { isStarredEntity: (entityOrRef: Entity | EntityName | string) => boolean; }; -// Warning: (ae-missing-release-tag) "useStarredEntity" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export function useStarredEntity(entityOrRef: Entity | EntityName | string): { toggleStarredEntity: () => void; diff --git a/plugins/catalog-react/src/api.ts b/plugins/catalog-react/src/api.ts index 51146b95bf..38e1f618cd 100644 --- a/plugins/catalog-react/src/api.ts +++ b/plugins/catalog-react/src/api.ts @@ -17,6 +17,10 @@ import { CatalogApi } from '@backstage/catalog-client'; import { createApiRef } from '@backstage/core-plugin-api'; +/** + * The API reference for the {@link @backstage/catalog-client#CatalogApi}. + * @public + */ export const catalogApiRef = createApiRef({ id: 'plugin.catalog.service', }); diff --git a/plugins/catalog-react/src/components/EntityRefLink/format.ts b/plugins/catalog-react/src/components/EntityRefLink/format.ts index 50e018c7ab..90100245a1 100644 --- a/plugins/catalog-react/src/components/EntityRefLink/format.ts +++ b/plugins/catalog-react/src/components/EntityRefLink/format.ts @@ -20,6 +20,7 @@ import { DEFAULT_NAMESPACE, } from '@backstage/catalog-model'; +/** @public */ export function formatEntityRefTitle( entityRef: Entity | EntityName, opts?: { defaultKind?: string }, diff --git a/plugins/catalog-react/src/components/EntitySearchBar/EntitySearchBar.tsx b/plugins/catalog-react/src/components/EntitySearchBar/EntitySearchBar.tsx index ec977fada4..fb7279671f 100644 --- a/plugins/catalog-react/src/components/EntitySearchBar/EntitySearchBar.tsx +++ b/plugins/catalog-react/src/components/EntitySearchBar/EntitySearchBar.tsx @@ -45,7 +45,9 @@ const useStyles = makeStyles( }, ); -/** @public */ +/** + * Renders search bar for filtering the entity list. + * @public */ export const EntitySearchBar = () => { const classes = useStyles(); diff --git a/plugins/catalog-react/src/components/EntityTable/EntityTable.tsx b/plugins/catalog-react/src/components/EntityTable/EntityTable.tsx index 62c33701b4..1248721246 100644 --- a/plugins/catalog-react/src/components/EntityTable/EntityTable.tsx +++ b/plugins/catalog-react/src/components/EntityTable/EntityTable.tsx @@ -22,7 +22,7 @@ import { componentEntityColumns, systemEntityColumns } from './presets'; import { Table, TableColumn } from '@backstage/core-components'; /** - * Props for {@link EntityTable}. + * Props for {@link (EntityTable:function)}. * * @public */ diff --git a/plugins/catalog-react/src/components/FavoriteEntity/FavoriteEntity.tsx b/plugins/catalog-react/src/components/FavoriteEntity/FavoriteEntity.tsx index 730c9a2378..3832a82877 100644 --- a/plugins/catalog-react/src/components/FavoriteEntity/FavoriteEntity.tsx +++ b/plugins/catalog-react/src/components/FavoriteEntity/FavoriteEntity.tsx @@ -21,7 +21,10 @@ import StarBorder from '@material-ui/icons/StarBorder'; import React, { ComponentProps } from 'react'; import { useStarredEntity } from '../../hooks/useStarredEntity'; -type Props = ComponentProps & { entity: Entity }; +/** @public */ +export type FavoriteEntityProps = ComponentProps & { + entity: Entity; +}; const YellowStar = withStyles({ root: { @@ -29,17 +32,20 @@ const YellowStar = withStyles({ }, })(Star); +/** @public */ export const favoriteEntityTooltip = (isStarred: boolean) => isStarred ? 'Remove from favorites' : 'Add to favorites'; +/** @public */ export const favoriteEntityIcon = (isStarred: boolean) => isStarred ? : ; /** * IconButton for showing if a current entity is starred and adding/removing it from the favorite entities * @param props - MaterialUI IconButton props extended by required `entity` prop + * @public */ -export const FavoriteEntity = (props: Props) => { +export const FavoriteEntity = (props: FavoriteEntityProps) => { const { toggleStarredEntity, isStarredEntity } = useStarredEntity( props.entity, ); diff --git a/plugins/catalog-react/src/components/FavoriteEntity/index.ts b/plugins/catalog-react/src/components/FavoriteEntity/index.ts index f731ca7483..a46d04b6c7 100644 --- a/plugins/catalog-react/src/components/FavoriteEntity/index.ts +++ b/plugins/catalog-react/src/components/FavoriteEntity/index.ts @@ -19,3 +19,4 @@ export { favoriteEntityIcon, FavoriteEntity, } from './FavoriteEntity'; +export type { FavoriteEntityProps } from './FavoriteEntity'; diff --git a/plugins/catalog-react/src/components/UnregisterEntityDialog/UnregisterEntityDialog.tsx b/plugins/catalog-react/src/components/UnregisterEntityDialog/UnregisterEntityDialog.tsx index 5c267916ea..48aa2f4012 100644 --- a/plugins/catalog-react/src/components/UnregisterEntityDialog/UnregisterEntityDialog.tsx +++ b/plugins/catalog-react/src/components/UnregisterEntityDialog/UnregisterEntityDialog.tsx @@ -41,13 +41,6 @@ const useStyles = makeStyles({ }, }); -type Props = { - open: boolean; - onConfirm: () => any; - onClose: () => any; - entity: Entity; -}; - const Contents = ({ entity, onConfirm, @@ -248,23 +241,30 @@ const Contents = ({ return Internal error: Unknown state; }; -export const UnregisterEntityDialog = ({ - open, - onConfirm, - onClose, - entity, -}: Props) => ( - - - Are you sure you want to unregister this entity? - - - - - - - - -); +/** @public */ +export type UnregisterEntityDialogProps = { + open: boolean; + onConfirm: () => any; + onClose: () => any; + entity: Entity; +}; + +/** @public */ +export const UnregisterEntityDialog = (props: UnregisterEntityDialogProps) => { + const { open, onConfirm, onClose, entity } = props; + return ( + + + Are you sure you want to unregister this entity? + + + + + + + + + ); +}; diff --git a/plugins/catalog-react/src/components/UnregisterEntityDialog/index.ts b/plugins/catalog-react/src/components/UnregisterEntityDialog/index.ts index 8fc750e706..66eb6961ae 100644 --- a/plugins/catalog-react/src/components/UnregisterEntityDialog/index.ts +++ b/plugins/catalog-react/src/components/UnregisterEntityDialog/index.ts @@ -15,3 +15,4 @@ */ export { UnregisterEntityDialog } from './UnregisterEntityDialog'; +export type { UnregisterEntityDialogProps } from './UnregisterEntityDialog'; diff --git a/plugins/catalog-react/src/components/UserListPicker/UserListPicker.tsx b/plugins/catalog-react/src/components/UserListPicker/UserListPicker.tsx index de23f75e47..3019ae32eb 100644 --- a/plugins/catalog-react/src/components/UserListPicker/UserListPicker.tsx +++ b/plugins/catalog-react/src/components/UserListPicker/UserListPicker.tsx @@ -118,15 +118,15 @@ function getFilterGroups(orgName: string | undefined): ButtonGroup[] { ]; } -type UserListPickerProps = { +/** @public */ +export type UserListPickerProps = { initialFilter?: UserListFilterKind; availableFilters?: UserListFilterKind[]; }; -export const UserListPicker = ({ - initialFilter, - availableFilters, -}: UserListPickerProps) => { +/** @public */ +export const UserListPicker = (props: UserListPickerProps) => { + const { initialFilter, availableFilters } = props; const classes = useStyles(); const configApi = useApi(configApiRef); const orgName = configApi.getOptionalString('organization.name') ?? 'Company'; diff --git a/plugins/catalog-react/src/components/UserListPicker/index.ts b/plugins/catalog-react/src/components/UserListPicker/index.ts index 45cb471197..269c4ca304 100644 --- a/plugins/catalog-react/src/components/UserListPicker/index.ts +++ b/plugins/catalog-react/src/components/UserListPicker/index.ts @@ -15,4 +15,5 @@ */ export { UserListPicker } from './UserListPicker'; +export type { UserListPickerProps } from './UserListPicker'; export type { CatalogReactUserListPickerClassKey } from './UserListPicker'; diff --git a/plugins/catalog-react/src/filters.ts b/plugins/catalog-react/src/filters.ts index 2804d5d6bd..ce8b63f62a 100644 --- a/plugins/catalog-react/src/filters.ts +++ b/plugins/catalog-react/src/filters.ts @@ -19,6 +19,10 @@ import { formatEntityRefTitle } from './components/EntityRefLink'; import { EntityFilter, UserListFilterKind } from './types'; import { getEntityRelations } from './utils'; +/** + * Filter entities based on Kind. + * @public + */ export class EntityKindFilter implements EntityFilter { constructor(readonly value: string) {} @@ -31,6 +35,9 @@ export class EntityKindFilter implements EntityFilter { } } +/** Filters entities based on type + * @public + */ export class EntityTypeFilter implements EntityFilter { constructor(readonly value: string | string[]) {} @@ -48,6 +55,10 @@ export class EntityTypeFilter implements EntityFilter { } } +/** + * Filters entities based on tag. + * @public + */ export class EntityTagFilter implements EntityFilter { constructor(readonly values: string[]) {} @@ -60,6 +71,10 @@ export class EntityTagFilter implements EntityFilter { } } +/** + * Filters entities where the text matches spec, title or tags. + * @public + */ export class EntityTextFilter implements EntityFilter { constructor(readonly value: string) {} @@ -81,6 +96,10 @@ export class EntityTextFilter implements EntityFilter { } } +/** + * Filter matching entities that are owned by group. + * @public + */ export class EntityOwnerFilter implements EntityFilter { constructor(readonly values: string[]) {} @@ -97,6 +116,10 @@ export class EntityOwnerFilter implements EntityFilter { } } +/** + * Filters entities on lifecycle. + * @public + */ export class EntityLifecycleFilter implements EntityFilter { constructor(readonly values: string[]) {} @@ -109,6 +132,10 @@ export class EntityLifecycleFilter implements EntityFilter { } } +/** + * Filters entities based on whatever the user has starred or owns them. + * @public + */ export class UserListFilter implements EntityFilter { constructor( readonly value: UserListFilterKind, diff --git a/plugins/catalog-react/src/hooks/index.ts b/plugins/catalog-react/src/hooks/index.ts index 06791f5706..ba6a1c7341 100644 --- a/plugins/catalog-react/src/hooks/index.ts +++ b/plugins/catalog-react/src/hooks/index.ts @@ -21,6 +21,7 @@ export { AsyncEntityProvider, } from './useEntity'; export type { + EntityLoadingStatus, EntityProviderProps, AsyncEntityProviderProps, } from './useEntity'; @@ -30,8 +31,12 @@ export { EntityListProvider, useEntityListProvider, } from './useEntityListProvider'; -export type { DefaultEntityFilters } from './useEntityListProvider'; +export type { + DefaultEntityFilters, + EntityListContextProps, +} from './useEntityListProvider'; export { useEntityTypeFilter } from './useEntityTypeFilter'; +export type { EntityTypeReturn } from './useEntityTypeFilter'; export { useEntityKinds } from './useEntityKinds'; export { useOwnUser } from './useOwnUser'; export { useRelatedEntities } from './useRelatedEntities'; diff --git a/plugins/catalog-react/src/hooks/useEntity.tsx b/plugins/catalog-react/src/hooks/useEntity.tsx index 6ad61a5d81..8637b820d4 100644 --- a/plugins/catalog-react/src/hooks/useEntity.tsx +++ b/plugins/catalog-react/src/hooks/useEntity.tsx @@ -32,7 +32,8 @@ import useAsyncRetry from 'react-use/lib/useAsyncRetry'; import { catalogApiRef } from '../api'; import { useEntityCompoundName } from './useEntityCompoundName'; -type EntityLoadingStatus = { +/** @public */ +export type EntityLoadingStatus = { entity?: Entity; loading: boolean; error?: Error; @@ -133,6 +134,7 @@ const CompatibilityProvider = ({ }; EntityContext.Provider = CompatibilityProvider as Provider; +/** @public */ export const useEntityFromUrl = (): EntityLoadingStatus => { const { kind, namespace, name } = useEntityCompoundName(); const navigate = useNavigate(); diff --git a/plugins/catalog-react/src/hooks/useEntityCompoundName.ts b/plugins/catalog-react/src/hooks/useEntityCompoundName.ts index 57e1c08a23..75affc98b2 100644 --- a/plugins/catalog-react/src/hooks/useEntityCompoundName.ts +++ b/plugins/catalog-react/src/hooks/useEntityCompoundName.ts @@ -18,6 +18,7 @@ import { useRouteRefParams } from '@backstage/core-plugin-api'; /** * Grabs entity kind, namespace, and name from the location + * @public */ export const useEntityCompoundName = () => { const { kind, namespace, name } = useRouteRefParams(entityRouteRef); diff --git a/plugins/catalog-react/src/hooks/useEntityKinds.ts b/plugins/catalog-react/src/hooks/useEntityKinds.ts index 1d5b2fec52..6bd39be3c8 100644 --- a/plugins/catalog-react/src/hooks/useEntityKinds.ts +++ b/plugins/catalog-react/src/hooks/useEntityKinds.ts @@ -18,7 +18,9 @@ import useAsync from 'react-use/lib/useAsync'; import { useApi } from '@backstage/core-plugin-api'; import { catalogApiRef } from '../api'; -// Retrieve a list of unique entity kinds present in the catalog +/** Retrieve a list of unique entity kinds present in the catalog + * @public + */ export function useEntityKinds() { const catalogApi = useApi(catalogApiRef); diff --git a/plugins/catalog-react/src/hooks/useEntityListProvider.tsx b/plugins/catalog-react/src/hooks/useEntityListProvider.tsx index 9b4d850208..0dda80be12 100644 --- a/plugins/catalog-react/src/hooks/useEntityListProvider.tsx +++ b/plugins/catalog-react/src/hooks/useEntityListProvider.tsx @@ -43,6 +43,7 @@ import { EntityFilter } from '../types'; import { reduceCatalogFilters, reduceEntityFilters } from '../utils'; import { useApi } from '@backstage/core-plugin-api'; +/** @public */ export type DefaultEntityFilters = { kind?: EntityKindFilter; type?: EntityTypeFilter; @@ -53,6 +54,7 @@ export type DefaultEntityFilters = { text?: EntityTextFilter; }; +/** @public */ export type EntityListContextProps< EntityFilters extends DefaultEntityFilters = DefaultEntityFilters, > = { @@ -91,6 +93,10 @@ export type EntityListContextProps< error?: Error; }; +/** + * Creates new context for entity listing and filtering. + * @public + */ export const EntityListContext = createContext< EntityListContextProps | undefined >(undefined); @@ -101,6 +107,9 @@ type OutputState = { backendEntities: Entity[]; }; +/** + * Provides entities and filters for a catalog listing. + * @public */ export const EntityListProvider = ({ children, }: PropsWithChildren<{}>) => { @@ -239,6 +248,10 @@ export const EntityListProvider = ({ ); }; +/** + * Hook for interacting with the entity list context provided by the {@link EntityListProvider}. + * @public + */ export function useEntityListProvider< EntityFilters extends DefaultEntityFilters = DefaultEntityFilters, >(): EntityListContextProps { diff --git a/plugins/catalog-react/src/hooks/useEntityTypeFilter.tsx b/plugins/catalog-react/src/hooks/useEntityTypeFilter.tsx index c4531d9117..8e5be53950 100644 --- a/plugins/catalog-react/src/hooks/useEntityTypeFilter.tsx +++ b/plugins/catalog-react/src/hooks/useEntityTypeFilter.tsx @@ -22,7 +22,8 @@ import { catalogApiRef } from '../api'; import { useEntityListProvider } from './useEntityListProvider'; import { EntityTypeFilter } from '../filters'; -type EntityTypeReturn = { +/** @public */ +export type EntityTypeReturn = { loading: boolean; error?: Error; availableTypes: string[]; @@ -33,6 +34,7 @@ type EntityTypeReturn = { /** * A hook built on top of `useEntityListProvider` for enabling selection of valid `spec.type` values * based on the selected EntityKindFilter. + * @public */ export function useEntityTypeFilter(): EntityTypeReturn { const catalogApi = useApi(catalogApiRef); diff --git a/plugins/catalog-react/src/hooks/useOwnUser.ts b/plugins/catalog-react/src/hooks/useOwnUser.ts index 497f065f04..1477de67aa 100644 --- a/plugins/catalog-react/src/hooks/useOwnUser.ts +++ b/plugins/catalog-react/src/hooks/useOwnUser.ts @@ -25,6 +25,7 @@ import { identityApiRef, useApi } from '@backstage/core-plugin-api'; /** * Get the catalog User entity (if any) that matches the logged-in user. + * @public */ export function useOwnUser(): AsyncState { const catalogApi = useApi(catalogApiRef); diff --git a/plugins/catalog-react/src/hooks/useRelatedEntities.ts b/plugins/catalog-react/src/hooks/useRelatedEntities.ts index 942941e3d5..56dfbe6403 100644 --- a/plugins/catalog-react/src/hooks/useRelatedEntities.ts +++ b/plugins/catalog-react/src/hooks/useRelatedEntities.ts @@ -21,6 +21,7 @@ import { catalogApiRef } from '../api'; const BATCH_SIZE = 20; +/** @public */ export function useRelatedEntities( entity: Entity, { type, kind }: { type?: string; kind?: string }, diff --git a/plugins/catalog-react/src/hooks/useStarredEntities.ts b/plugins/catalog-react/src/hooks/useStarredEntities.ts index 066040bf02..5ddabfdd2e 100644 --- a/plugins/catalog-react/src/hooks/useStarredEntities.ts +++ b/plugins/catalog-react/src/hooks/useStarredEntities.ts @@ -30,6 +30,7 @@ function getEntityRef(entityOrRef: Entity | EntityName | string): string { : stringifyEntityRef(entityOrRef); } +/** @public */ export function useStarredEntities(): { starredEntities: Set; toggleStarredEntity: (entityOrRef: Entity | EntityName | string) => void; diff --git a/plugins/catalog-react/src/hooks/useStarredEntity.ts b/plugins/catalog-react/src/hooks/useStarredEntity.ts index 0233432196..2c647163aa 100644 --- a/plugins/catalog-react/src/hooks/useStarredEntity.ts +++ b/plugins/catalog-react/src/hooks/useStarredEntity.ts @@ -29,6 +29,7 @@ function getEntityRef(entityOrRef: Entity | EntityName | string): string { : stringifyEntityRef(entityOrRef); } +/** @public */ export function useStarredEntity(entityOrRef: Entity | EntityName | string): { toggleStarredEntity: () => void; isStarredEntity: boolean; diff --git a/plugins/catalog-react/src/routes.ts b/plugins/catalog-react/src/routes.ts index 57801fab4a..b9aa0de531 100644 --- a/plugins/catalog-react/src/routes.ts +++ b/plugins/catalog-react/src/routes.ts @@ -21,6 +21,7 @@ import { getOrCreateGlobalSingleton } from '@backstage/version-bridge'; // TODO(Rugvip): Move these route refs back to the catalog plugin once we're all ported to using external routes /** * @deprecated Use an `ExternalRouteRef` instead, which can point to `catalogPlugin.routes.catalogIndex`. + * @public */ export const rootRoute = createRouteRef({ id: 'catalog', @@ -28,6 +29,7 @@ export const rootRoute = createRouteRef({ /** * @deprecated Use an `ExternalRouteRef` instead, which can point to `catalogPlugin.routes.catalogIndex`. + * @public */ export const catalogRouteRef = rootRoute; @@ -39,6 +41,7 @@ export const catalogRouteRef = rootRoute; * * If you want to replace the `EntityPage` from `@backstage/catalog-plugin` in your app, * you need to use the `entityRouteRef` as the mount point instead of your own. + * @public */ export const entityRouteRef = getOrCreateGlobalSingleton( 'catalog:entity-route-ref', @@ -51,11 +54,14 @@ export const entityRouteRef = getOrCreateGlobalSingleton( /** * @deprecated use `entityRouteRef` instead. + * @public */ export const entityRoute = entityRouteRef; -// Utility function to get suitable route params for entityRoute, given an -// entity instance +/** + * Utility function to get suitable route params for entityRoute, given an + * @public + */ export function entityRouteParams(entity: Entity) { return { kind: entity.kind.toLocaleLowerCase('en-US'), diff --git a/plugins/catalog-react/src/testUtils/providers.tsx b/plugins/catalog-react/src/testUtils/providers.tsx index 3fb295298c..5867026a8c 100644 --- a/plugins/catalog-react/src/testUtils/providers.tsx +++ b/plugins/catalog-react/src/testUtils/providers.tsx @@ -26,6 +26,7 @@ import { EntityListContextProps, } from '../hooks/useEntityListProvider'; +/** @public */ export const MockEntityListContextProvider = ({ children, value, diff --git a/plugins/catalog-react/src/types.ts b/plugins/catalog-react/src/types.ts index 964858cb10..440bab2b22 100644 --- a/plugins/catalog-react/src/types.ts +++ b/plugins/catalog-react/src/types.ts @@ -16,6 +16,7 @@ import { Entity } from '@backstage/catalog-model'; +/** @public */ export type EntityFilter = { /** * Get filters to add to the catalog-backend request. These are a dot-delimited field with @@ -43,4 +44,5 @@ export type EntityFilter = { toQueryValue?: () => string | string[]; }; +/** @public */ export type UserListFilterKind = 'owned' | 'starred' | 'all'; diff --git a/plugins/catalog-react/src/utils/filters.ts b/plugins/catalog-react/src/utils/filters.ts index 109e864c52..d64a821df7 100644 --- a/plugins/catalog-react/src/utils/filters.ts +++ b/plugins/catalog-react/src/utils/filters.ts @@ -17,6 +17,7 @@ import { Entity } from '@backstage/catalog-model'; import { EntityFilter } from '../types'; +/** @public */ export function reduceCatalogFilters( filters: EntityFilter[], ): Record { @@ -28,6 +29,7 @@ export function reduceCatalogFilters( }, {} as Record); } +/** @public */ export function reduceEntityFilters( filters: EntityFilter[], ): (entity: Entity) => boolean { diff --git a/plugins/catalog-react/src/utils/getEntityMetadataUrl.ts b/plugins/catalog-react/src/utils/getEntityMetadataUrl.ts index 3b44816ac1..a5cef7d71e 100644 --- a/plugins/catalog-react/src/utils/getEntityMetadataUrl.ts +++ b/plugins/catalog-react/src/utils/getEntityMetadataUrl.ts @@ -20,10 +20,12 @@ import { Entity, } from '@backstage/catalog-model'; +/** @public */ export function getEntityMetadataViewUrl(entity: Entity): string | undefined { return entity.metadata.annotations?.[ANNOTATION_VIEW_URL]; } +/** @public */ export function getEntityMetadataEditUrl(entity: Entity): string | undefined { return entity.metadata.annotations?.[ANNOTATION_EDIT_URL]; } diff --git a/plugins/catalog-react/src/utils/getEntityRelations.ts b/plugins/catalog-react/src/utils/getEntityRelations.ts index 0045fac4f5..25666a9960 100644 --- a/plugins/catalog-react/src/utils/getEntityRelations.ts +++ b/plugins/catalog-react/src/utils/getEntityRelations.ts @@ -18,6 +18,7 @@ import { Entity, EntityName } from '@backstage/catalog-model'; /** * Get the related entity references. + * @public */ export function getEntityRelations( entity: Entity | undefined, diff --git a/plugins/catalog-react/src/utils/getEntitySourceLocation.ts b/plugins/catalog-react/src/utils/getEntitySourceLocation.ts index dd4d5c07f6..d2141449a8 100644 --- a/plugins/catalog-react/src/utils/getEntitySourceLocation.ts +++ b/plugins/catalog-react/src/utils/getEntitySourceLocation.ts @@ -21,11 +21,13 @@ import { } from '@backstage/catalog-model'; import { ScmIntegrationRegistry } from '@backstage/integration'; +/** @public */ export type EntitySourceLocation = { locationTargetUrl: string; integrationType?: string; }; +/** @public */ export function getEntitySourceLocation( entity: Entity, scmIntegrationsApi: ScmIntegrationRegistry, diff --git a/plugins/catalog-react/src/utils/isOwnerOf.ts b/plugins/catalog-react/src/utils/isOwnerOf.ts index 38ad90e4a6..3ef6b4b2a0 100644 --- a/plugins/catalog-react/src/utils/isOwnerOf.ts +++ b/plugins/catalog-react/src/utils/isOwnerOf.ts @@ -25,6 +25,7 @@ import { getEntityRelations } from './getEntityRelations'; /** * Get the related entity references. + * @public */ export function isOwnerOf(owner: Entity, owned: Entity) { const possibleOwners = new Set( From 408b0300cbbcc9f77d1d74c31e1fd853536398d6 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 17 Feb 2022 10:38:59 +0000 Subject: [PATCH 166/383] Version Packages --- .changeset/angry-bottles-mix.md | 5 - .changeset/beige-cherries-knock.md | 8 -- .changeset/beige-feet-tap.md | 5 - .changeset/blue-jobs-know.md | 5 - .changeset/brave-singers-burn.md | 13 -- .changeset/bright-games-eat.md | 24 ---- .changeset/bright-nails-grin.md | 78 ---------- .changeset/brown-impalas-greet.md | 6 - .changeset/chatty-walls-judge.md | 123 ---------------- .changeset/clever-pears-turn.md | 11 -- .changeset/curvy-worms-exercise.md | 6 - .changeset/cyan-oranges-sit.md | 5 - .changeset/dependabot-41e6f4a.md | 5 - .changeset/dependabot-8ed326b.md | 5 - .changeset/dependabot-adaba58.md | 8 -- .changeset/dirty-ears-wash.md | 5 - .changeset/dry-lies-move.md | 6 - .changeset/eighty-rice-happen.md | 5 - .changeset/fair-bees-join.md | 5 - .changeset/fair-emus-check.md | 5 - .changeset/fair-eyes-collect.md | 5 - .changeset/fast-ducks-sell.md | 5 - .changeset/fast-lizards-fly.md | 5 - .changeset/fast-mangos-tell.md | 5 - .changeset/fast-stingrays-hope.md | 8 -- .changeset/flat-crabs-smash.md | 5 - .changeset/fresh-ears-knock.md | 5 - .changeset/funny-crabs-drop.md | 5 - .changeset/green-bobcats-burn.md | 22 --- .changeset/happy-lemons-drop.md | 5 - .changeset/hip-carrots-suffer.md | 5 - .changeset/honest-shrimps-clap.md | 9 -- .changeset/hungry-apples-sparkle.md | 5 - .changeset/lazy-jeans-obey.md | 5 - .changeset/little-ravens-kick.md | 5 - .changeset/long-dragons-kneel.md | 11 -- .changeset/mean-cups-invite.md | 15 -- .changeset/metal-wasps-appear.md | 5 - .changeset/mighty-beds-fix.md | 11 -- .changeset/modern-lizards-sniff.md | 5 - .changeset/modern-mayflies-join.md | 9 -- .changeset/moody-knives-jump.md | 5 - .changeset/nine-wombats-talk.md | 5 - .changeset/old-dolls-visit.md | 5 - .changeset/olive-flies-reflect.md | 6 - .changeset/perfect-papayas-crash.md | 5 - .changeset/pink-onions-ring.md | 5 - .changeset/plenty-boxes-wink.md | 5 - .changeset/polite-bulldogs-repeat.md | 17 --- .changeset/polite-dots-train.md | 5 - .changeset/pretty-gorillas-cheat.md | 5 - .changeset/proud-fishes-carry.md | 6 - .changeset/purple-files-hang.md | 5 - .changeset/rude-tables-grab.md | 5 - .changeset/seven-birds-eat.md | 7 - .changeset/seven-rocks-share.md | 5 - .changeset/sharp-rice-do.md | 5 - .changeset/shy-peaches-begin.md | 5 - .changeset/silly-ghosts-dance.md | 5 - .changeset/silly-seals-march.md | 8 -- .changeset/silver-beds-wonder.md | 5 - .changeset/smart-rivers-reflect.md | 8 -- .changeset/sour-hats-love.md | 5 - .changeset/spicy-items-itch.md | 5 - .changeset/strange-taxis-perform.md | 5 - .changeset/stupid-cows-design.md | 5 - .changeset/sweet-keys-dress.md | 5 - .changeset/swift-dolls-bow.md | 6 - .changeset/tall-planes-grow.md | 5 - .changeset/tasty-eagles-retire.md | 11 -- .changeset/tasty-taxis-dance.md | 14 -- .changeset/tender-meals-move.md | 5 - .changeset/three-roses-swim.md | 18 --- .changeset/tidy-boxes-sell.md | 18 --- .changeset/tough-stingrays-sit.md | 5 - .changeset/twenty-dodos-rule.md | 6 - .changeset/two-elephants-arrive.md | 5 - .changeset/unlucky-dodos-scream.md | 14 -- .changeset/warm-lizards-sin.md | 6 - .changeset/weak-timers-punch.md | 5 - .changeset/witty-mails-search.md | 7 - package.json | 2 +- packages/app-defaults/CHANGELOG.md | 12 ++ packages/app-defaults/package.json | 16 +-- packages/app/CHANGELOG.md | 54 +++++++ packages/app/package.json | 102 ++++++------- packages/backend-common/CHANGELOG.md | 16 +++ packages/backend-common/package.json | 18 +-- packages/backend-tasks/CHANGELOG.md | 11 ++ packages/backend-tasks/package.json | 14 +- packages/backend-test-utils/CHANGELOG.md | 10 ++ packages/backend-test-utils/package.json | 10 +- packages/backend/CHANGELOG.md | 40 ++++++ packages/backend/package.json | 70 ++++----- packages/catalog-client/CHANGELOG.md | 40 ++++++ packages/catalog-client/package.json | 8 +- packages/catalog-model/CHANGELOG.md | 30 ++++ packages/catalog-model/package.json | 10 +- packages/cli-common/CHANGELOG.md | 6 + packages/cli-common/package.json | 2 +- packages/cli/CHANGELOG.md | 38 +++++ packages/cli/package.json | 30 ++-- packages/codemods/CHANGELOG.md | 11 ++ packages/codemods/package.json | 4 +- packages/config-loader/CHANGELOG.md | 12 ++ packages/config-loader/package.json | 10 +- packages/config/CHANGELOG.md | 8 ++ packages/config/package.json | 6 +- packages/core-app-api/CHANGELOG.md | 12 ++ packages/core-app-api/package.json | 14 +- packages/core-components/CHANGELOG.md | 13 ++ packages/core-components/package.json | 16 +-- packages/core-plugin-api/CHANGELOG.md | 12 ++ packages/core-plugin-api/package.json | 14 +- packages/create-app/CHANGELOG.md | 29 ++++ packages/create-app/package.json | 4 +- packages/dev-utils/CHANGELOG.md | 16 +++ packages/dev-utils/package.json | 22 +-- packages/errors/CHANGELOG.md | 9 ++ packages/errors/package.json | 6 +- packages/integration-react/CHANGELOG.md | 14 ++ packages/integration-react/package.json | 18 +-- packages/integration/CHANGELOG.md | 9 ++ packages/integration/package.json | 10 +- packages/release-manifests/CHANGELOG.md | 7 + packages/release-manifests/package.json | 4 +- packages/search-common/CHANGELOG.md | 9 ++ packages/search-common/package.json | 8 +- .../techdocs-cli-embedded-app/CHANGELOG.md | 18 +++ .../techdocs-cli-embedded-app/package.json | 28 ++-- packages/techdocs-cli/CHANGELOG.md | 12 ++ packages/techdocs-cli/package.json | 14 +- packages/techdocs-common/CHANGELOG.md | 15 ++ packages/techdocs-common/package.json | 16 +-- packages/test-utils/CHANGELOG.md | 15 ++ packages/test-utils/package.json | 18 +-- packages/theme/CHANGELOG.md | 6 + packages/theme/package.json | 4 +- packages/types/CHANGELOG.md | 7 + packages/types/package.json | 4 +- packages/version-bridge/CHANGELOG.md | 6 + packages/version-bridge/package.json | 4 +- plugins/airbrake-backend/CHANGELOG.md | 13 ++ plugins/airbrake-backend/package.json | 8 +- plugins/airbrake/CHANGELOG.md | 19 +++ plugins/airbrake/package.json | 26 ++-- plugins/allure/CHANGELOG.md | 13 ++ plugins/allure/package.json | 20 +-- plugins/analytics-module-ga/CHANGELOG.md | 12 ++ plugins/analytics-module-ga/package.json | 18 +-- plugins/apache-airflow/CHANGELOG.md | 10 ++ plugins/apache-airflow/package.json | 14 +- plugins/api-docs/CHANGELOG.md | 15 ++ plugins/api-docs/package.json | 22 +-- plugins/app-backend/CHANGELOG.md | 12 ++ plugins/app-backend/package.json | 16 +-- plugins/auth-backend/CHANGELOG.md | 19 +++ plugins/auth-backend/package.json | 20 +-- plugins/auth-node/CHANGELOG.md | 12 ++ plugins/auth-node/package.json | 12 +- plugins/azure-devops-backend/CHANGELOG.md | 10 ++ plugins/azure-devops-backend/package.json | 10 +- plugins/azure-devops-common/CHANGELOG.md | 6 + plugins/azure-devops-common/package.json | 4 +- plugins/azure-devops/CHANGELOG.md | 15 ++ plugins/azure-devops/package.json | 24 ++-- plugins/badges-backend/CHANGELOG.md | 14 ++ plugins/badges-backend/package.json | 14 +- plugins/badges/CHANGELOG.md | 15 ++ plugins/badges/package.json | 22 +-- plugins/bazaar-backend/CHANGELOG.md | 10 ++ plugins/bazaar-backend/package.json | 10 +- plugins/bazaar/CHANGELOG.md | 15 ++ plugins/bazaar/package.json | 20 +-- plugins/bitrise/CHANGELOG.md | 13 ++ plugins/bitrise/package.json | 20 +-- .../catalog-backend-module-ldap/CHANGELOG.md | 14 ++ .../catalog-backend-module-ldap/package.json | 14 +- .../CHANGELOG.md | 12 ++ .../package.json | 14 +- plugins/catalog-backend/CHANGELOG.md | 40 ++++++ plugins/catalog-backend/package.json | 34 ++--- plugins/catalog-common/CHANGELOG.md | 8 ++ plugins/catalog-common/package.json | 6 +- plugins/catalog-graph/CHANGELOG.md | 16 +++ plugins/catalog-graph/package.json | 22 +-- plugins/catalog-graphql/CHANGELOG.md | 11 ++ plugins/catalog-graphql/package.json | 12 +- plugins/catalog-import/CHANGELOG.md | 18 +++ plugins/catalog-import/package.json | 28 ++-- plugins/catalog-react/CHANGELOG.md | 28 ++++ plugins/catalog-react/package.json | 32 ++--- plugins/catalog/CHANGELOG.md | 35 +++++ plugins/catalog/package.json | 32 ++--- plugins/cicd-statistics/CHANGELOG.md | 11 ++ plugins/cicd-statistics/package.json | 8 +- plugins/circleci/CHANGELOG.md | 13 ++ plugins/circleci/package.json | 20 +-- plugins/cloudbuild/CHANGELOG.md | 13 ++ plugins/cloudbuild/package.json | 20 +-- plugins/code-coverage-backend/CHANGELOG.md | 13 ++ plugins/code-coverage-backend/package.json | 16 +-- plugins/code-coverage/CHANGELOG.md | 15 ++ plugins/code-coverage/package.json | 24 ++-- plugins/config-schema/CHANGELOG.md | 14 ++ plugins/config-schema/package.json | 22 +-- plugins/cost-insights/CHANGELOG.md | 14 ++ plugins/cost-insights/package.json | 20 +-- plugins/explore-react/CHANGELOG.md | 9 ++ plugins/explore-react/package.json | 10 +- plugins/explore/CHANGELOG.md | 15 ++ plugins/explore/package.json | 22 +-- plugins/firehydrant/CHANGELOG.md | 13 ++ plugins/firehydrant/package.json | 18 +-- plugins/fossa/CHANGELOG.md | 15 ++ plugins/fossa/package.json | 22 +-- plugins/gcp-projects/CHANGELOG.md | 12 ++ plugins/gcp-projects/package.json | 16 +-- plugins/git-release-manager/CHANGELOG.md | 12 ++ plugins/git-release-manager/package.json | 18 +-- plugins/github-actions/CHANGELOG.md | 15 ++ plugins/github-actions/package.json | 22 +-- plugins/github-deployments/CHANGELOG.md | 18 +++ plugins/github-deployments/package.json | 26 ++-- plugins/gitops-profiles/CHANGELOG.md | 11 ++ plugins/gitops-profiles/package.json | 16 +-- plugins/gocd/CHANGELOG.md | 14 ++ plugins/gocd/package.json | 22 +-- plugins/graphiql/CHANGELOG.md | 11 ++ plugins/graphiql/package.json | 16 +-- plugins/graphql-backend/CHANGELOG.md | 11 ++ plugins/graphql-backend/package.json | 10 +- plugins/home/CHANGELOG.md | 22 +++ plugins/home/package.json | 22 +-- plugins/ilert/CHANGELOG.md | 15 ++ plugins/ilert/package.json | 22 +-- plugins/jenkins-backend/CHANGELOG.md | 12 ++ plugins/jenkins-backend/package.json | 12 +- plugins/jenkins/CHANGELOG.md | 14 ++ plugins/jenkins/package.json | 22 +-- plugins/kafka-backend/CHANGELOG.md | 11 ++ plugins/kafka-backend/package.json | 12 +- plugins/kafka/CHANGELOG.md | 13 ++ plugins/kafka/package.json | 20 +-- plugins/kubernetes-backend/CHANGELOG.md | 14 ++ plugins/kubernetes-backend/package.json | 14 +- plugins/kubernetes-common/CHANGELOG.md | 8 ++ plugins/kubernetes-common/package.json | 6 +- plugins/kubernetes/CHANGELOG.md | 15 ++ plugins/kubernetes/package.json | 24 ++-- plugins/lighthouse/CHANGELOG.md | 14 ++ plugins/lighthouse/package.json | 22 +-- plugins/newrelic-dashboard/CHANGELOG.md | 13 ++ plugins/newrelic-dashboard/package.json | 16 +-- plugins/newrelic/CHANGELOG.md | 11 ++ plugins/newrelic/package.json | 16 +-- plugins/org/CHANGELOG.md | 15 ++ plugins/org/package.json | 22 +-- plugins/pagerduty/CHANGELOG.md | 15 ++ plugins/pagerduty/package.json | 20 +-- plugins/permission-backend/CHANGELOG.md | 35 +++++ plugins/permission-backend/package.json | 16 +-- plugins/permission-common/CHANGELOG.md | 14 ++ plugins/permission-common/package.json | 8 +- plugins/permission-node/CHANGELOG.md | 16 +++ plugins/permission-node/package.json | 14 +- plugins/permission-react/CHANGELOG.md | 11 ++ plugins/permission-react/package.json | 12 +- plugins/proxy-backend/CHANGELOG.md | 9 ++ plugins/proxy-backend/package.json | 8 +- plugins/rollbar-backend/CHANGELOG.md | 11 ++ plugins/rollbar-backend/package.json | 10 +- plugins/rollbar/CHANGELOG.md | 13 ++ plugins/rollbar/package.json | 20 +-- .../CHANGELOG.md | 17 +++ .../package.json | 16 +-- .../CHANGELOG.md | 17 +++ .../package.json | 16 +-- .../CHANGELOG.md | 15 ++ .../package.json | 10 +- plugins/scaffolder-backend/CHANGELOG.md | 34 +++++ plugins/scaffolder-backend/package.json | 26 ++-- plugins/scaffolder-common/CHANGELOG.md | 17 +++ plugins/scaffolder-common/package.json | 8 +- plugins/scaffolder/CHANGELOG.md | 26 ++++ plugins/scaffolder/package.json | 40 +++--- .../CHANGELOG.md | 10 ++ .../package.json | 10 +- plugins/search-backend-module-pg/CHANGELOG.md | 10 ++ plugins/search-backend-module-pg/package.json | 12 +- plugins/search-backend-node/CHANGELOG.md | 8 ++ plugins/search-backend-node/package.json | 8 +- plugins/search-backend/CHANGELOG.md | 16 +++ plugins/search-backend/package.json | 22 +-- plugins/search/CHANGELOG.md | 35 +++++ plugins/search/package.json | 28 ++-- plugins/sentry/CHANGELOG.md | 13 ++ plugins/sentry/package.json | 20 +-- plugins/shortcuts/CHANGELOG.md | 16 +++ plugins/shortcuts/package.json | 18 +-- plugins/sonarqube/CHANGELOG.md | 13 ++ plugins/sonarqube/package.json | 20 +-- plugins/splunk-on-call/CHANGELOG.md | 13 ++ plugins/splunk-on-call/package.json | 20 +-- .../CHANGELOG.md | 12 ++ .../package.json | 14 +- plugins/tech-insights-backend/CHANGELOG.md | 15 ++ plugins/tech-insights-backend/package.json | 20 +-- plugins/tech-insights-common/CHANGELOG.md | 8 ++ plugins/tech-insights-common/package.json | 6 +- plugins/tech-insights-node/CHANGELOG.md | 10 ++ plugins/tech-insights-node/package.json | 10 +- plugins/tech-insights/CHANGELOG.md | 16 +++ plugins/tech-insights/package.json | 26 ++-- plugins/tech-radar/CHANGELOG.md | 11 ++ plugins/tech-radar/package.json | 16 +-- plugins/techdocs-backend/CHANGELOG.md | 20 +++ plugins/techdocs-backend/package.json | 24 ++-- plugins/techdocs/CHANGELOG.md | 21 +++ plugins/techdocs/package.json | 32 ++--- plugins/todo-backend/CHANGELOG.md | 17 +++ plugins/todo-backend/package.json | 16 +-- plugins/todo/CHANGELOG.md | 15 ++ plugins/todo/package.json | 22 +-- plugins/user-settings/CHANGELOG.md | 12 ++ plugins/user-settings/package.json | 16 +-- plugins/xcmetrics/CHANGELOG.md | 12 ++ plugins/xcmetrics/package.json | 18 +-- yarn.lock | 136 ++++++++++-------- 329 files changed, 3035 insertions(+), 1907 deletions(-) delete mode 100644 .changeset/angry-bottles-mix.md delete mode 100644 .changeset/beige-cherries-knock.md delete mode 100644 .changeset/beige-feet-tap.md delete mode 100644 .changeset/blue-jobs-know.md delete mode 100644 .changeset/brave-singers-burn.md delete mode 100644 .changeset/bright-games-eat.md delete mode 100644 .changeset/bright-nails-grin.md delete mode 100644 .changeset/brown-impalas-greet.md delete mode 100644 .changeset/chatty-walls-judge.md delete mode 100644 .changeset/clever-pears-turn.md delete mode 100644 .changeset/curvy-worms-exercise.md delete mode 100644 .changeset/cyan-oranges-sit.md delete mode 100644 .changeset/dependabot-41e6f4a.md delete mode 100644 .changeset/dependabot-8ed326b.md delete mode 100644 .changeset/dependabot-adaba58.md delete mode 100644 .changeset/dirty-ears-wash.md delete mode 100644 .changeset/dry-lies-move.md delete mode 100644 .changeset/eighty-rice-happen.md delete mode 100644 .changeset/fair-bees-join.md delete mode 100644 .changeset/fair-emus-check.md delete mode 100644 .changeset/fair-eyes-collect.md delete mode 100644 .changeset/fast-ducks-sell.md delete mode 100644 .changeset/fast-lizards-fly.md delete mode 100644 .changeset/fast-mangos-tell.md delete mode 100644 .changeset/fast-stingrays-hope.md delete mode 100644 .changeset/flat-crabs-smash.md delete mode 100644 .changeset/fresh-ears-knock.md delete mode 100644 .changeset/funny-crabs-drop.md delete mode 100644 .changeset/green-bobcats-burn.md delete mode 100644 .changeset/happy-lemons-drop.md delete mode 100644 .changeset/hip-carrots-suffer.md delete mode 100644 .changeset/honest-shrimps-clap.md delete mode 100644 .changeset/hungry-apples-sparkle.md delete mode 100644 .changeset/lazy-jeans-obey.md delete mode 100644 .changeset/little-ravens-kick.md delete mode 100644 .changeset/long-dragons-kneel.md delete mode 100644 .changeset/mean-cups-invite.md delete mode 100644 .changeset/metal-wasps-appear.md delete mode 100644 .changeset/mighty-beds-fix.md delete mode 100644 .changeset/modern-lizards-sniff.md delete mode 100644 .changeset/modern-mayflies-join.md delete mode 100644 .changeset/moody-knives-jump.md delete mode 100644 .changeset/nine-wombats-talk.md delete mode 100644 .changeset/old-dolls-visit.md delete mode 100644 .changeset/olive-flies-reflect.md delete mode 100644 .changeset/perfect-papayas-crash.md delete mode 100644 .changeset/pink-onions-ring.md delete mode 100644 .changeset/plenty-boxes-wink.md delete mode 100644 .changeset/polite-bulldogs-repeat.md delete mode 100644 .changeset/polite-dots-train.md delete mode 100644 .changeset/pretty-gorillas-cheat.md delete mode 100644 .changeset/proud-fishes-carry.md delete mode 100644 .changeset/purple-files-hang.md delete mode 100644 .changeset/rude-tables-grab.md delete mode 100644 .changeset/seven-birds-eat.md delete mode 100644 .changeset/seven-rocks-share.md delete mode 100644 .changeset/sharp-rice-do.md delete mode 100644 .changeset/shy-peaches-begin.md delete mode 100644 .changeset/silly-ghosts-dance.md delete mode 100644 .changeset/silly-seals-march.md delete mode 100644 .changeset/silver-beds-wonder.md delete mode 100644 .changeset/smart-rivers-reflect.md delete mode 100644 .changeset/sour-hats-love.md delete mode 100644 .changeset/spicy-items-itch.md delete mode 100644 .changeset/strange-taxis-perform.md delete mode 100644 .changeset/stupid-cows-design.md delete mode 100644 .changeset/sweet-keys-dress.md delete mode 100644 .changeset/swift-dolls-bow.md delete mode 100644 .changeset/tall-planes-grow.md delete mode 100644 .changeset/tasty-eagles-retire.md delete mode 100644 .changeset/tasty-taxis-dance.md delete mode 100644 .changeset/tender-meals-move.md delete mode 100644 .changeset/three-roses-swim.md delete mode 100644 .changeset/tidy-boxes-sell.md delete mode 100644 .changeset/tough-stingrays-sit.md delete mode 100644 .changeset/twenty-dodos-rule.md delete mode 100644 .changeset/two-elephants-arrive.md delete mode 100644 .changeset/unlucky-dodos-scream.md delete mode 100644 .changeset/warm-lizards-sin.md delete mode 100644 .changeset/weak-timers-punch.md delete mode 100644 .changeset/witty-mails-search.md create mode 100644 packages/types/CHANGELOG.md create mode 100644 plugins/airbrake-backend/CHANGELOG.md diff --git a/.changeset/angry-bottles-mix.md b/.changeset/angry-bottles-mix.md deleted file mode 100644 index cd05ef6514..0000000000 --- a/.changeset/angry-bottles-mix.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/cli': patch ---- - -Added a new experimental and hidden `backstage-cli repo lint` command that can be used to lint all packages in the project, similar to `lerna run lint`. diff --git a/.changeset/beige-cherries-knock.md b/.changeset/beige-cherries-knock.md deleted file mode 100644 index ac738e9942..0000000000 --- a/.changeset/beige-cherries-knock.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -'@backstage/plugin-scaffolder-common': patch ---- - -Added `TemplateEntityV1beta2` which was moved here from -`@backstage/plugin-scaffolder-common`. It has also been marked as deprecated in -the process - please consider [migrating to `v1beta3` -templates](https://backstage.io/docs/features/software-templates/migrating-from-v1beta2-to-v1beta3). diff --git a/.changeset/beige-feet-tap.md b/.changeset/beige-feet-tap.md deleted file mode 100644 index b37d249700..0000000000 --- a/.changeset/beige-feet-tap.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-techdocs-backend': patch ---- - -Do not use cross-fetch in the backend diff --git a/.changeset/blue-jobs-know.md b/.changeset/blue-jobs-know.md deleted file mode 100644 index 35feed552b..0000000000 --- a/.changeset/blue-jobs-know.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/cli': patch ---- - -The `versions:bump --release next` command is updated to compare the `main` and `next` release manifests and prefer the latest. diff --git a/.changeset/brave-singers-burn.md b/.changeset/brave-singers-burn.md deleted file mode 100644 index e8ccfb42e7..0000000000 --- a/.changeset/brave-singers-burn.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -'@backstage/plugin-catalog-backend': patch ---- - -The following processors now properly accept an `ScmIntegrationRegistry` (an -interface) instead of an `ScmIntegrations` (which is a concrete class). - -- `AzureDevOpsDiscoveryProcessor` -- `CodeOwnersProcessor` -- `GitLabDiscoveryProcessor` -- `GithubDiscoveryProcessor` -- `GithubMultiOrgReaderProcessor` -- `GithubOrgReaderProcessor` diff --git a/.changeset/bright-games-eat.md b/.changeset/bright-games-eat.md deleted file mode 100644 index 3bae70283f..0000000000 --- a/.changeset/bright-games-eat.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -'@backstage/create-app': patch ---- - -Remove SearchContextProvider from `` - -The `SidebarSearchModal` exported from `plugin-search` internally renders `SearchContextProvider`, so it can be removed from `Root.tsx`: - -```diff --import { -- SidebarSearchModal, -- SearchContextProvider, --} from '@backstage/plugin-search'; -+import { SidebarSearchModal } from '@backstage/plugin-search'; - -... omitted ... - - } to="/search"> -- -- -- -+ - -``` diff --git a/.changeset/bright-nails-grin.md b/.changeset/bright-nails-grin.md deleted file mode 100644 index 434a17efbb..0000000000 --- a/.changeset/bright-nails-grin.md +++ /dev/null @@ -1,78 +0,0 @@ ---- -'@backstage/backend-common': 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/errors': patch -'@backstage/integration': patch -'@backstage/integration-react': patch -'@backstage/release-manifests': patch -'@backstage/test-utils': 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-auth-backend': patch -'@backstage/plugin-auth-node': patch -'@backstage/plugin-azure-devops': patch -'@backstage/plugin-badges': patch -'@backstage/plugin-bazaar': patch -'@backstage/plugin-bitrise': patch -'@backstage/plugin-catalog': patch -'@backstage/plugin-catalog-backend': patch -'@backstage/plugin-catalog-backend-module-msgraph': patch -'@backstage/plugin-catalog-graphql': patch -'@backstage/plugin-catalog-import': patch -'@backstage/plugin-catalog-react': patch -'@backstage/plugin-circleci': patch -'@backstage/plugin-cloudbuild': patch -'@backstage/plugin-code-coverage': patch -'@backstage/plugin-config-schema': patch -'@backstage/plugin-cost-insights': patch -'@backstage/plugin-explore': patch -'@backstage/plugin-explore-react': patch -'@backstage/plugin-firehydrant': patch -'@backstage/plugin-fossa': patch -'@backstage/plugin-gcp-projects': patch -'@backstage/plugin-git-release-manager': patch -'@backstage/plugin-github-actions': patch -'@backstage/plugin-github-deployments': patch -'@backstage/plugin-gitops-profiles': patch -'@backstage/plugin-gocd': patch -'@backstage/plugin-graphiql': patch -'@backstage/plugin-home': patch -'@backstage/plugin-ilert': patch -'@backstage/plugin-jenkins': patch -'@backstage/plugin-kafka': patch -'@backstage/plugin-kubernetes': patch -'@backstage/plugin-lighthouse': patch -'@backstage/plugin-newrelic': patch -'@backstage/plugin-newrelic-dashboard': patch -'@backstage/plugin-org': patch -'@backstage/plugin-pagerduty': patch -'@backstage/plugin-permission-backend': patch -'@backstage/plugin-permission-common': patch -'@backstage/plugin-permission-react': patch -'@backstage/plugin-rollbar': patch -'@backstage/plugin-rollbar-backend': patch -'@backstage/plugin-scaffolder': patch -'@backstage/plugin-scaffolder-backend': patch -'@backstage/plugin-search': patch -'@backstage/plugin-sentry': patch -'@backstage/plugin-shortcuts': patch -'@backstage/plugin-sonarqube': patch -'@backstage/plugin-splunk-on-call': patch -'@backstage/plugin-tech-insights': patch -'@backstage/plugin-tech-radar': patch -'@backstage/plugin-techdocs': patch -'@backstage/plugin-techdocs-backend': patch -'@backstage/plugin-todo': patch -'@backstage/plugin-user-settings': patch -'@backstage/plugin-xcmetrics': patch ---- - -Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5 diff --git a/.changeset/brown-impalas-greet.md b/.changeset/brown-impalas-greet.md deleted file mode 100644 index 1717c33451..0000000000 --- a/.changeset/brown-impalas-greet.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@backstage/plugin-scaffolder-backend': patch ---- - -Fix error handling of the `runCommand` helper to return `Error` -instance. diff --git a/.changeset/chatty-walls-judge.md b/.changeset/chatty-walls-judge.md deleted file mode 100644 index 72e636e026..0000000000 --- a/.changeset/chatty-walls-judge.md +++ /dev/null @@ -1,123 +0,0 @@ ---- -'@backstage/app-defaults': patch -'@backstage/backend-common': patch -'@backstage/backend-tasks': patch -'@backstage/backend-test-utils': patch -'@backstage/catalog-client': patch -'@backstage/catalog-model': patch -'@backstage/cli': patch -'@backstage/cli-common': patch -'@backstage/codemods': patch -'@backstage/config': patch -'@backstage/config-loader': patch -'@backstage/core-app-api': patch -'@backstage/core-components': patch -'@backstage/core-plugin-api': patch -'@backstage/create-app': patch -'@backstage/dev-utils': patch -'@backstage/errors': patch -'@backstage/integration': patch -'@backstage/integration-react': patch -'@backstage/release-manifests': patch -'@backstage/search-common': patch -'@techdocs/cli': patch -'@backstage/techdocs-common': patch -'@backstage/test-utils': patch -'@backstage/theme': patch -'@backstage/types': patch -'@backstage/version-bridge': 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-app-backend': patch -'@backstage/plugin-auth-backend': patch -'@backstage/plugin-auth-node': patch -'@backstage/plugin-azure-devops': patch -'@backstage/plugin-azure-devops-backend': patch -'@backstage/plugin-azure-devops-common': patch -'@backstage/plugin-badges': patch -'@backstage/plugin-badges-backend': patch -'@backstage/plugin-bazaar': patch -'@backstage/plugin-bazaar-backend': patch -'@backstage/plugin-bitrise': patch -'@backstage/plugin-catalog': patch -'@backstage/plugin-catalog-backend': patch -'@backstage/plugin-catalog-backend-module-ldap': patch -'@backstage/plugin-catalog-backend-module-msgraph': patch -'@backstage/plugin-catalog-common': patch -'@backstage/plugin-catalog-graph': patch -'@backstage/plugin-catalog-graphql': patch -'@backstage/plugin-catalog-import': patch -'@backstage/plugin-catalog-react': patch -'@backstage/plugin-cicd-statistics': patch -'@backstage/plugin-circleci': patch -'@backstage/plugin-cloudbuild': patch -'@backstage/plugin-code-coverage': patch -'@backstage/plugin-code-coverage-backend': patch -'@backstage/plugin-config-schema': patch -'@backstage/plugin-cost-insights': patch -'@backstage/plugin-explore': patch -'@backstage/plugin-explore-react': patch -'@backstage/plugin-firehydrant': patch -'@backstage/plugin-fossa': patch -'@backstage/plugin-gcp-projects': patch -'@backstage/plugin-git-release-manager': patch -'@backstage/plugin-github-actions': patch -'@backstage/plugin-github-deployments': 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': patch -'@backstage/plugin-jenkins-backend': patch -'@backstage/plugin-kafka': patch -'@backstage/plugin-kafka-backend': patch -'@backstage/plugin-kubernetes': patch -'@backstage/plugin-kubernetes-backend': patch -'@backstage/plugin-kubernetes-common': patch -'@backstage/plugin-lighthouse': patch -'@backstage/plugin-newrelic': patch -'@backstage/plugin-newrelic-dashboard': patch -'@backstage/plugin-org': patch -'@backstage/plugin-pagerduty': patch -'@backstage/plugin-permission-backend': patch -'@backstage/plugin-permission-common': patch -'@backstage/plugin-permission-node': patch -'@backstage/plugin-permission-react': patch -'@backstage/plugin-proxy-backend': patch -'@backstage/plugin-rollbar': patch -'@backstage/plugin-rollbar-backend': patch -'@backstage/plugin-scaffolder': patch -'@backstage/plugin-scaffolder-backend': patch -'@backstage/plugin-scaffolder-backend-module-cookiecutter': patch -'@backstage/plugin-scaffolder-backend-module-rails': patch -'@backstage/plugin-scaffolder-backend-module-yeoman': patch -'@backstage/plugin-scaffolder-common': patch -'@backstage/plugin-search': patch -'@backstage/plugin-search-backend': patch -'@backstage/plugin-search-backend-module-elasticsearch': patch -'@backstage/plugin-search-backend-module-pg': patch -'@backstage/plugin-search-backend-node': patch -'@backstage/plugin-sentry': patch -'@backstage/plugin-shortcuts': patch -'@backstage/plugin-sonarqube': patch -'@backstage/plugin-splunk-on-call': patch -'@backstage/plugin-tech-insights': patch -'@backstage/plugin-tech-insights-backend': patch -'@backstage/plugin-tech-insights-backend-module-jsonfc': patch -'@backstage/plugin-tech-insights-common': patch -'@backstage/plugin-tech-insights-node': patch -'@backstage/plugin-tech-radar': patch -'@backstage/plugin-techdocs': patch -'@backstage/plugin-techdocs-backend': patch -'@backstage/plugin-todo': patch -'@backstage/plugin-todo-backend': patch -'@backstage/plugin-user-settings': patch -'@backstage/plugin-xcmetrics': patch ---- - -Added `backstage.role` to `package.json` diff --git a/.changeset/clever-pears-turn.md b/.changeset/clever-pears-turn.md deleted file mode 100644 index 33e08c231b..0000000000 --- a/.changeset/clever-pears-turn.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -'@backstage/plugin-catalog': patch -'@backstage/plugin-catalog-backend': patch -'@backstage/plugin-catalog-graph': patch -'@backstage/plugin-catalog-react': patch -'@backstage/plugin-org': patch -'@backstage/plugin-scaffolder': patch -'@backstage/plugin-tech-insights-backend': patch ---- - -Use updated type names from `@backstage/catalog-client` diff --git a/.changeset/curvy-worms-exercise.md b/.changeset/curvy-worms-exercise.md deleted file mode 100644 index b88e9b5891..0000000000 --- a/.changeset/curvy-worms-exercise.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@backstage/catalog-model': patch ---- - -Deprecated `parseLocationReference` and `stringifyLocationReference`, -introducing `parseLocationRef` and `stringifyLocationRef` in their place. diff --git a/.changeset/cyan-oranges-sit.md b/.changeset/cyan-oranges-sit.md deleted file mode 100644 index 8a3244745f..0000000000 --- a/.changeset/cyan-oranges-sit.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/catalog-model': patch ---- - -Deprecates the `Location` type export from this package. Imports of the `Location` type should now be done from the `@backstage/catalog-client` package instead. diff --git a/.changeset/dependabot-41e6f4a.md b/.changeset/dependabot-41e6f4a.md deleted file mode 100644 index 3de85547a2..0000000000 --- a/.changeset/dependabot-41e6f4a.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-firehydrant': patch ---- - -chore(deps): bump `luxon` from 2.0.2 to 2.3.0 diff --git a/.changeset/dependabot-8ed326b.md b/.changeset/dependabot-8ed326b.md deleted file mode 100644 index 88a91baeac..0000000000 --- a/.changeset/dependabot-8ed326b.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-search-backend-module-elasticsearch': patch ---- - -chore(deps-dev): bump `@elastic/elasticsearch-mock` from 0.3.0 to 1.0.0 diff --git a/.changeset/dependabot-adaba58.md b/.changeset/dependabot-adaba58.md deleted file mode 100644 index b10abe506a..0000000000 --- a/.changeset/dependabot-adaba58.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -'@backstage/backend-common': patch -'@backstage/plugin-app-backend': patch -'@backstage/plugin-graphql-backend': patch -'@backstage/plugin-kubernetes-backend': patch ---- - -chore(deps): bump `helmet` from 4.4.1 to 5.0.2 diff --git a/.changeset/dirty-ears-wash.md b/.changeset/dirty-ears-wash.md deleted file mode 100644 index 060dc808f1..0000000000 --- a/.changeset/dirty-ears-wash.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-kubernetes-backend': patch ---- - -Fixed a potential issue in AWS token encoding, where they might not always be properly converted to URL-safe base64. diff --git a/.changeset/dry-lies-move.md b/.changeset/dry-lies-move.md deleted file mode 100644 index b0eb1be6f7..0000000000 --- a/.changeset/dry-lies-move.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@backstage/plugin-catalog-react': patch -'@backstage/plugin-todo-backend': patch ---- - -Replace usage of `serializeEntityRef` with `stringifyEntityRef` diff --git a/.changeset/eighty-rice-happen.md b/.changeset/eighty-rice-happen.md deleted file mode 100644 index 8a1b450af7..0000000000 --- a/.changeset/eighty-rice-happen.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-techdocs': patch ---- - -Match text size of admonitions to main content text size. diff --git a/.changeset/fair-bees-join.md b/.changeset/fair-bees-join.md deleted file mode 100644 index 455547cec2..0000000000 --- a/.changeset/fair-bees-join.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/catalog-model': patch ---- - -Deprecated `ENTITY_DEFAULT_NAMESPACE` constant in favour of `DEFAULT_NAMESPACE`. diff --git a/.changeset/fair-emus-check.md b/.changeset/fair-emus-check.md deleted file mode 100644 index 328d5498b9..0000000000 --- a/.changeset/fair-emus-check.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog': patch ---- - -Replaced use of deprecated `compareEntityToRef` utility. diff --git a/.changeset/fair-eyes-collect.md b/.changeset/fair-eyes-collect.md deleted file mode 100644 index 5a0cfafaab..0000000000 --- a/.changeset/fair-eyes-collect.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/catalog-model': patch ---- - -Deprecated `compareEntityToRef` due to low usage and provided value. diff --git a/.changeset/fast-ducks-sell.md b/.changeset/fast-ducks-sell.md deleted file mode 100644 index 2ad654124d..0000000000 --- a/.changeset/fast-ducks-sell.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog-backend': patch ---- - -Support "dependencyOf" relation in Resource entities diff --git a/.changeset/fast-lizards-fly.md b/.changeset/fast-lizards-fly.md deleted file mode 100644 index e6772b056f..0000000000 --- a/.changeset/fast-lizards-fly.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-auth-backend': patch ---- - -Bump `passport-oauth2` to version 1.6.1 diff --git a/.changeset/fast-mangos-tell.md b/.changeset/fast-mangos-tell.md deleted file mode 100644 index bfcf429485..0000000000 --- a/.changeset/fast-mangos-tell.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-scaffolder-backend': minor ---- - -**BREAKING**: Updated `TemplateAction` and related types to have its type parameter extend `JsonObject` instead of `InputBase`. The `createTemplateAction` has also been updated to pass through the `TInput` type parameter to the return type, meaning the `TemplateAction` retains its type. This can lead to breakages during type checking especially within tests. diff --git a/.changeset/fast-stingrays-hope.md b/.changeset/fast-stingrays-hope.md deleted file mode 100644 index 688f14c548..0000000000 --- a/.changeset/fast-stingrays-hope.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -'@backstage/plugin-catalog': patch -'@backstage/plugin-catalog-backend': patch -'@backstage/plugin-catalog-react': patch -'@backstage/plugin-catalog-backend-module-ldap': patch ---- - -Import `Location` from the `@backstage/catalog-client` package. diff --git a/.changeset/flat-crabs-smash.md b/.changeset/flat-crabs-smash.md deleted file mode 100644 index b56b340605..0000000000 --- a/.changeset/flat-crabs-smash.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/cli': patch ---- - -The `versions:bump` command now filters out `npm_` environment configuration when running `yarn install`. This has the effect of allowing it to consider local configuration files within the repository, which is the behavior that one would expect. diff --git a/.changeset/fresh-ears-knock.md b/.changeset/fresh-ears-knock.md deleted file mode 100644 index 1e8b33fd03..0000000000 --- a/.changeset/fresh-ears-knock.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-shortcuts': minor ---- - -Use Avatar instead of custom icon for ShortcutIcon diff --git a/.changeset/funny-crabs-drop.md b/.changeset/funny-crabs-drop.md deleted file mode 100644 index 764f7c042a..0000000000 --- a/.changeset/funny-crabs-drop.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog': minor ---- - -Removed `CatalogClientWrapper` as usage have been replaced by the `fetchApiRef`. diff --git a/.changeset/green-bobcats-burn.md b/.changeset/green-bobcats-burn.md deleted file mode 100644 index c28f4da678..0000000000 --- a/.changeset/green-bobcats-burn.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -'@backstage/plugin-permission-backend': minor ---- - -Add a warning if the permission backend is used without setting `permission.enabled=true`. - -**BREAKING** Permission backend's `createRouter` now requires a `config` option. - -```diff -// packages/backend/src/plugins/permission.ts - -... -export default async function createPlugin({ - ... -+ config, -}: PluginEnvironment) { - return createRouter({ - ... -+ config, - }); -} -``` diff --git a/.changeset/happy-lemons-drop.md b/.changeset/happy-lemons-drop.md deleted file mode 100644 index e4c6f52409..0000000000 --- a/.changeset/happy-lemons-drop.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-permission-common': minor ---- - -**BREAKING** `PermissionCriteria` now requires at least one condition in `anyOf` and `allOf` arrays. This addresses some ambiguous behavior outlined in #9280. diff --git a/.changeset/hip-carrots-suffer.md b/.changeset/hip-carrots-suffer.md deleted file mode 100644 index 3823cf982f..0000000000 --- a/.changeset/hip-carrots-suffer.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-techdocs-backend': patch ---- - -Fix bug where tech docs collator stores search indices with wrong entity ref casing. Make the collator to conform legacyPathCasing configuration option. diff --git a/.changeset/honest-shrimps-clap.md b/.changeset/honest-shrimps-clap.md deleted file mode 100644 index 12ae623704..0000000000 --- a/.changeset/honest-shrimps-clap.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -'@backstage/catalog-client': minor ---- - -**BREAKING**: Removed the explicit `DiscoveryApi` and `FetchApi` export symbols, -which were unnecessary duplicates from the well known core ones. - -The `CATALOG_FILTER_EXISTS` symbol's value has changed. However, this should not -affect any code in practice. diff --git a/.changeset/hungry-apples-sparkle.md b/.changeset/hungry-apples-sparkle.md deleted file mode 100644 index 6cfad2d2da..0000000000 --- a/.changeset/hungry-apples-sparkle.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/catalog-model': patch ---- - -Deprecated the `EntityRefContext` type which had limited use. diff --git a/.changeset/lazy-jeans-obey.md b/.changeset/lazy-jeans-obey.md deleted file mode 100644 index 9124b983dc..0000000000 --- a/.changeset/lazy-jeans-obey.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog-backend': patch ---- - -Update internal `Location` validation. diff --git a/.changeset/little-ravens-kick.md b/.changeset/little-ravens-kick.md deleted file mode 100644 index 1e14f2f37e..0000000000 --- a/.changeset/little-ravens-kick.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/cli': patch ---- - -The `versions:bump` command now also considers the root `package.json` when searching for updates. It has also received updates to its output, including a link the [Backstage upgrade helper](https://backstage.github.io/upgrade-helper) and silenced `yarn install` output. diff --git a/.changeset/long-dragons-kneel.md b/.changeset/long-dragons-kneel.md deleted file mode 100644 index 9380d95b55..0000000000 --- a/.changeset/long-dragons-kneel.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -'@backstage/plugin-home': patch ---- - -Add Renderer support for the HomePageToolkit component. - -Previously `` would -result in the error `can't access property "map", props.tools is undefined`. -This change adds a context that can pass props down to the HomePageToolkit. -Also introduced is an `expanded` prop on the `ComponentAccordion` to setting -the default expanded state. See `In Accordian` story for details. diff --git a/.changeset/mean-cups-invite.md b/.changeset/mean-cups-invite.md deleted file mode 100644 index ba82c66043..0000000000 --- a/.changeset/mean-cups-invite.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -'@backstage/plugin-api-docs': patch -'@backstage/plugin-auth-backend': patch -'@backstage/plugin-badges-backend': patch -'@backstage/plugin-catalog': patch -'@backstage/plugin-catalog-graph': patch -'@backstage/plugin-catalog-import': patch -'@backstage/plugin-catalog-react': patch -'@backstage/plugin-explore': patch -'@backstage/plugin-fossa': patch -'@backstage/plugin-scaffolder': patch -'@backstage/plugin-todo-backend': patch ---- - -Adapt to the new `CatalogApi.getLocationByRef` diff --git a/.changeset/metal-wasps-appear.md b/.changeset/metal-wasps-appear.md deleted file mode 100644 index dcbe390b63..0000000000 --- a/.changeset/metal-wasps-appear.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-pagerduty': patch ---- - -Switch `luxon` dependency range to be `^2.0.2` rather than `2.0.2`. diff --git a/.changeset/mighty-beds-fix.md b/.changeset/mighty-beds-fix.md deleted file mode 100644 index 3e5ab735dd..0000000000 --- a/.changeset/mighty-beds-fix.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -'@backstage/catalog-client': patch -'@backstage/techdocs-common': patch -'@backstage/plugin-catalog-backend': patch -'@backstage/plugin-catalog-react': patch -'@backstage/plugin-github-deployments': patch -'@backstage/plugin-scaffolder-backend': patch -'@backstage/plugin-todo-backend': patch ---- - -Updated to use new names for `parseLocationRef` and `stringifyLocationRef` diff --git a/.changeset/modern-lizards-sniff.md b/.changeset/modern-lizards-sniff.md deleted file mode 100644 index cf1994ee7f..0000000000 --- a/.changeset/modern-lizards-sniff.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-airbrake-backend': minor ---- - -Created the Airbrake backend plugin that proxies requests to the Airbrake API diff --git a/.changeset/modern-mayflies-join.md b/.changeset/modern-mayflies-join.md deleted file mode 100644 index 58d8de95fc..0000000000 --- a/.changeset/modern-mayflies-join.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -'@backstage/plugin-catalog-backend': patch -'@backstage/plugin-catalog-react': patch -'@backstage/plugin-scaffolder': patch -'@backstage/plugin-scaffolder-backend': patch ---- - -Use `TemplateEntityV1beta2` from `@backstage/plugin-scaffolder-common` instead -of `@backstage/catalog-model`. diff --git a/.changeset/moody-knives-jump.md b/.changeset/moody-knives-jump.md deleted file mode 100644 index 84e80d9f84..0000000000 --- a/.changeset/moody-knives-jump.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-cicd-statistics': patch ---- - -Updated `@backstage/core-plugin-api` dependency. diff --git a/.changeset/nine-wombats-talk.md b/.changeset/nine-wombats-talk.md deleted file mode 100644 index 769bd9b085..0000000000 --- a/.changeset/nine-wombats-talk.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-user-settings': patch ---- - -Updated example code for registering feature flags in the `EmptyFlags` component diff --git a/.changeset/old-dolls-visit.md b/.changeset/old-dolls-visit.md deleted file mode 100644 index c363ebd43f..0000000000 --- a/.changeset/old-dolls-visit.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/cli': minor ---- - -Bumped Webpack and Rollup `svgr` dependencies and updated the AST template for `.icon.svg` modules. This means that SVG icon imports are now using SVGO v2. diff --git a/.changeset/olive-flies-reflect.md b/.changeset/olive-flies-reflect.md deleted file mode 100644 index 80075d8fb0..0000000000 --- a/.changeset/olive-flies-reflect.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@backstage/catalog-model': minor ---- - -**BREAKING**: Remove deprecated validation methods `analyzeLocationSchema`, `locationSchema` and `locationSpecSchema`. -This functionality was primarily used internally by the `catalog-backend`. diff --git a/.changeset/perfect-papayas-crash.md b/.changeset/perfect-papayas-crash.md deleted file mode 100644 index 99c93d1b8d..0000000000 --- a/.changeset/perfect-papayas-crash.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-permission-node': minor ---- - -**BREAKING** `PermissionCriteria` now requires at least one condition in `anyOf` and `allOf` arrays. This addresses some ambiguous behavior outlined in #9280. diff --git a/.changeset/pink-onions-ring.md b/.changeset/pink-onions-ring.md deleted file mode 100644 index 2b81ad4b43..0000000000 --- a/.changeset/pink-onions-ring.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog': minor ---- - -**BREAKING** Completely removed the `EntitySystemDiagramCard` component which was deprecated in a previous release. Any remaining references to this component are now broken and should be replaced with `EntityCatalogGraphCard`, which can be imported from package `@backstage/plugin-catalog-graph`. diff --git a/.changeset/plenty-boxes-wink.md b/.changeset/plenty-boxes-wink.md deleted file mode 100644 index 0011641938..0000000000 --- a/.changeset/plenty-boxes-wink.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/catalog-model': minor ---- - -**BREAKING**: Remove deprecated `serializeEntityRef` which is replaced by `stringifyEntityRef`. diff --git a/.changeset/polite-bulldogs-repeat.md b/.changeset/polite-bulldogs-repeat.md deleted file mode 100644 index c4e3babe30..0000000000 --- a/.changeset/polite-bulldogs-repeat.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -'@backstage/cli': patch ---- - -Several changes were made to the new experimental package roles system. Unless you have been experimenting with using this new system, these changes have no affect on your project. - -Renamed the `backstage-cli migrate package-role` command to `backstage-cli migrate package-roles`. - -Updated the package role definitions by renaming `app` to `frontend`, `plugin-frontend` to `frontend-plugin`, `plugin-frontend-module` to `frontend-plugin-module`, `plugin-backend` to `backend-plugin`, and `plugin-backend-module` to `backend-plugin-module` - -The `backstage-cli migrate package-scripts` received several tweaks to make it more accurate. It now tries to maintain existing script arguments, like `--config` parameters for `build` and `start` scripts. - -The `script` command category has been renamed to `package`. - -The `backstage-cli package build` command set an incorrect target directory for `app` and `backend` packages, which has been fixed. - -The `backend:bundle` and `repo build` command for the `backend` role was previously ignoring building of bundled packages that had migrated to use package roles and the standard build script, this has now been fixed. diff --git a/.changeset/polite-dots-train.md b/.changeset/polite-dots-train.md deleted file mode 100644 index dbd11d3e60..0000000000 --- a/.changeset/polite-dots-train.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-scaffolder-backend-module-yeoman': patch ---- - -Bump `yeoman-environment` dependency from `^3.6.0` to `^3.9.1`. diff --git a/.changeset/pretty-gorillas-cheat.md b/.changeset/pretty-gorillas-cheat.md deleted file mode 100644 index d1500c6575..0000000000 --- a/.changeset/pretty-gorillas-cheat.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-scaffolder-backend': minor ---- - -**BREAKING**: `ctx.token` is now `ctx.secrets.backstageToken` in Actions. Please update any of your Actions that might call out to Backstage API's with this token. diff --git a/.changeset/proud-fishes-carry.md b/.changeset/proud-fishes-carry.md deleted file mode 100644 index 3dd8a445e6..0000000000 --- a/.changeset/proud-fishes-carry.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@backstage/plugin-catalog': minor ---- - -Removed deprecated `Router` and `EntityPageLayout` exports. -`Router` is replaced by plugin extensions and `EntityPageLayout` is replaced by `CatalogEntityPage`. diff --git a/.changeset/purple-files-hang.md b/.changeset/purple-files-hang.md deleted file mode 100644 index 680de46a80..0000000000 --- a/.changeset/purple-files-hang.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/catalog-client': patch ---- - -Export the `Location` type that was previously exported by the `@backstage/catalog-model` package. diff --git a/.changeset/rude-tables-grab.md b/.changeset/rude-tables-grab.md deleted file mode 100644 index 5eaae102a5..0000000000 --- a/.changeset/rude-tables-grab.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-scaffolder-common': minor ---- - -**BREAKING**: Removed the `templateEntityV1beta3Schema` export diff --git a/.changeset/seven-birds-eat.md b/.changeset/seven-birds-eat.md deleted file mode 100644 index 1aa6cd4fff..0000000000 --- a/.changeset/seven-birds-eat.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'@backstage/plugin-auth-backend': patch -'@backstage/plugin-rollbar-backend': patch -'@backstage/plugin-scaffolder-backend': patch ---- - -Removed unused `helmet` dependency. diff --git a/.changeset/seven-rocks-share.md b/.changeset/seven-rocks-share.md deleted file mode 100644 index db131a85dc..0000000000 --- a/.changeset/seven-rocks-share.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/integration-react': patch ---- - -Updated the `ScmAuth` error message for missing provider configurations to link to `ScmAuthApi` setup documentation. diff --git a/.changeset/sharp-rice-do.md b/.changeset/sharp-rice-do.md deleted file mode 100644 index 0441ac338a..0000000000 --- a/.changeset/sharp-rice-do.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/catalog-model': patch ---- - -Deprecated `JSONSchema` export type. diff --git a/.changeset/shy-peaches-begin.md b/.changeset/shy-peaches-begin.md deleted file mode 100644 index 4787fe8dea..0000000000 --- a/.changeset/shy-peaches-begin.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog-react': patch ---- - -Fix CatalogPage showing all components when owned filter was pre-selected diff --git a/.changeset/silly-ghosts-dance.md b/.changeset/silly-ghosts-dance.md deleted file mode 100644 index e83fc87521..0000000000 --- a/.changeset/silly-ghosts-dance.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-techdocs': patch ---- - -Improve overall appearance of highlighted code in docs. diff --git a/.changeset/silly-seals-march.md b/.changeset/silly-seals-march.md deleted file mode 100644 index 560f82493e..0000000000 --- a/.changeset/silly-seals-march.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -'@backstage/plugin-catalog': minor ---- - -**BREAKING**: - -- The `CatalogResultListItem` `result` prop is now of the more narrow and correct type `IndexableDocument`, rather than `any`. -- The individual table column factories (e.g. `createNameColumn`) are now no longer available directly, but only through `CatalogTable.columns`. diff --git a/.changeset/silver-beds-wonder.md b/.changeset/silver-beds-wonder.md deleted file mode 100644 index 73ce3f9567..0000000000 --- a/.changeset/silver-beds-wonder.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/core-components': patch ---- - -Port supported react-use functions to react-hookz. diff --git a/.changeset/smart-rivers-reflect.md b/.changeset/smart-rivers-reflect.md deleted file mode 100644 index da3f9c5806..0000000000 --- a/.changeset/smart-rivers-reflect.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -'@backstage/catalog-model': minor ---- - -**BREAKING**: Removed `TemplateEntityV1beta2` from the model and moved it to -`@backstage/plugin-scaffolder-common` where `TemplateEntityV1beta3` already -lived. It has also been marked as deprecated in the process - please consider -[migrating to `v1beta3` templates](https://backstage.io/docs/features/software-templates/migrating-from-v1beta2-to-v1beta3). diff --git a/.changeset/sour-hats-love.md b/.changeset/sour-hats-love.md deleted file mode 100644 index f2cc88e66a..0000000000 --- a/.changeset/sour-hats-love.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/backend-common': patch ---- - -Updated `isDatabaseConflictError` to handle modern sqlite conflict errors diff --git a/.changeset/spicy-items-itch.md b/.changeset/spicy-items-itch.md deleted file mode 100644 index e6617a42a3..0000000000 --- a/.changeset/spicy-items-itch.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-jenkins-backend': patch ---- - -The `DefaultJenkinsInfoProvider.fromConfig` now requires an implementation of the `CatalogApi` rather than a `CatalogClient` instance. diff --git a/.changeset/strange-taxis-perform.md b/.changeset/strange-taxis-perform.md deleted file mode 100644 index 4d1ad18821..0000000000 --- a/.changeset/strange-taxis-perform.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/core-plugin-api': patch ---- - -Removes unused react-use dependency. diff --git a/.changeset/stupid-cows-design.md b/.changeset/stupid-cows-design.md deleted file mode 100644 index 2df99664fb..0000000000 --- a/.changeset/stupid-cows-design.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/catalog-model': patch ---- - -Deprecates the following exports which all have very limited and internal use. `ENTITY_META_GENERATED_FIELDS`, `entityHasChanges`, `generateEntityEtag`, `generateEntityUid`, `generateUpdatedEntity`, `ENTITY_META_GENERATED_FIELDS`. diff --git a/.changeset/sweet-keys-dress.md b/.changeset/sweet-keys-dress.md deleted file mode 100644 index 4217f2fcf4..0000000000 --- a/.changeset/sweet-keys-dress.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/cli': patch ---- - -Updated the default [sucrase](https://github.com/alangpierce/sucrase)-based Jest transform to include source maps if the environment variable `ENABLE_SOURCE_MAPS` is non-empty. This can be used to better support editor test debugging integrations. diff --git a/.changeset/swift-dolls-bow.md b/.changeset/swift-dolls-bow.md deleted file mode 100644 index 0e7a261055..0000000000 --- a/.changeset/swift-dolls-bow.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@backstage/plugin-scaffolder-backend': minor ---- - -**BREAKING** - Removed the `CatalogEntityClient` export. This is no longer provider by this package, -but you can implement one pretty simply yourself using the `CatalogApi` and applying filters to fetch templates. diff --git a/.changeset/tall-planes-grow.md b/.changeset/tall-planes-grow.md deleted file mode 100644 index d5e07256c9..0000000000 --- a/.changeset/tall-planes-grow.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-github-actions': patch ---- - -Fixed an issue where an error message was being displayed on the initial component render. This was due to values owner/repo not yet being set. diff --git a/.changeset/tasty-eagles-retire.md b/.changeset/tasty-eagles-retire.md deleted file mode 100644 index c39f30d57f..0000000000 --- a/.changeset/tasty-eagles-retire.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -'@backstage/catalog-client': patch ---- - -Deprecated the following types used by the catalog client, and created new -corresponding types to make them more consistent: - -- `CatalogEntitiesRequest` -> `GetEntitiesRequest` -- `CatalogListResponse` was removed and generally replaced with `GetEntitiesResponse` (which does not use a type parameter argument) -- `CatalogEntityAncestorsRequest`-> `GetEntityAncestorsRequest` -- `CatalogEntityAncestorsResponse` -> `GetEntityAncestorsResponse` diff --git a/.changeset/tasty-taxis-dance.md b/.changeset/tasty-taxis-dance.md deleted file mode 100644 index 34ed30f686..0000000000 --- a/.changeset/tasty-taxis-dance.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -'@backstage/catalog-client': patch -'@backstage/plugin-catalog': patch -'@backstage/plugin-catalog-backend': patch -'@backstage/plugin-catalog-backend-module-ldap': patch -'@backstage/plugin-catalog-backend-module-msgraph': patch -'@backstage/plugin-catalog-react': patch -'@backstage/plugin-github-deployments': patch -'@backstage/plugin-scaffolder-backend': patch -'@backstage/plugin-todo': patch -'@backstage/plugin-todo-backend': patch ---- - -Replaces use of deprecated catalog-model constants. diff --git a/.changeset/tender-meals-move.md b/.changeset/tender-meals-move.md deleted file mode 100644 index 03721b37b1..0000000000 --- a/.changeset/tender-meals-move.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/cli': patch ---- - -The `test` command now automatically adds `--passWithNoTests` to the Jest invocation. To revert this behavior, pass `--passWithNoTests=false` or `--no-passWithNoTests`. diff --git a/.changeset/three-roses-swim.md b/.changeset/three-roses-swim.md deleted file mode 100644 index ae6ad44845..0000000000 --- a/.changeset/three-roses-swim.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -'@backstage/techdocs-common': patch -'@backstage/plugin-auth-backend': patch -'@backstage/plugin-badges': patch -'@backstage/plugin-badges-backend': patch -'@backstage/plugin-catalog': patch -'@backstage/plugin-catalog-backend': patch -'@backstage/plugin-catalog-graph': patch -'@backstage/plugin-catalog-react': patch -'@backstage/plugin-cost-insights': patch -'@backstage/plugin-ilert': patch -'@backstage/plugin-org': patch -'@backstage/plugin-pagerduty': patch -'@backstage/plugin-search': patch -'@backstage/plugin-techdocs-backend': patch ---- - -Replace use of deprecated `ENTITY_DEFAULT_NAMESPACE` constant with `DEFAULT_NAMESPACE`. diff --git a/.changeset/tidy-boxes-sell.md b/.changeset/tidy-boxes-sell.md deleted file mode 100644 index 82ee16af57..0000000000 --- a/.changeset/tidy-boxes-sell.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -'@backstage/plugin-search': minor ---- - -**BREAKING**: `useSearch` doesn't return anymore `open` and `toggleModal`. -The two properties have been moved to the `useSearchModal` hook. - -``` -import { SearchModal, useSearchModal } from '@backstage/plugin-search'; - -const Foo = () => { - const { state, setOpen, toggleModal } = useSearchModal(); - - return ( - - ); -}; -``` diff --git a/.changeset/tough-stingrays-sit.md b/.changeset/tough-stingrays-sit.md deleted file mode 100644 index 5cef08c8e3..0000000000 --- a/.changeset/tough-stingrays-sit.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog-backend': patch ---- - -Optimized entity provider mutations with large numbers of new additions, such as big initial startup commits diff --git a/.changeset/twenty-dodos-rule.md b/.changeset/twenty-dodos-rule.md deleted file mode 100644 index 5167811a3d..0000000000 --- a/.changeset/twenty-dodos-rule.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@backstage/catalog-model': patch ---- - -Deprecates `EDIT_URL_ANNOTATION`, `LOCATION_ANNOTATION`, `ORIGIN_LOCATION_ANNOTATION`, `SOURCE_LOCATION_ANNOTATION`, `VIEW_URL_ANNOTATION` -and replaces these constants all prefixed with ANNOTATION\_ `ANNOTATION_EDIT_URL`, `ANNOTATION_LOCATION`, `ANNOTATION_ORIGIN_LOCATION`, `ANNOTATION_SOURCE_LOCATION`, `ANNOTATION_VIEW_URL` diff --git a/.changeset/two-elephants-arrive.md b/.changeset/two-elephants-arrive.md deleted file mode 100644 index 6a1e713602..0000000000 --- a/.changeset/two-elephants-arrive.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-airbrake': minor ---- - -API connectivity has added, but currently will only work by running it standalone on a browser with CORS disabled. diff --git a/.changeset/unlucky-dodos-scream.md b/.changeset/unlucky-dodos-scream.md deleted file mode 100644 index c44c3c7032..0000000000 --- a/.changeset/unlucky-dodos-scream.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -'@backstage/catalog-client': minor ---- - -Removed `CatalogApi.geLocationByEntity` and `CatalogApi.getOriginLocationByEntity`, and replaced them with `CatalogApi.getLocationByRef`. - -If you were using one of the two old methods, you can update your code as follows: - -```diff --const originLocation = catalogApi.getOriginLocationByEntity(entity); -+const originLocation = catalogApi.getLocationByRef(entity.metadata.annotations[ANNOTATION_ORIGIN_LOCATION]!); --const location = catalogApi.getLocationByEntity(entity); -+const location = catalogApi.getLocationByRef(entity.metadata.annotations[ANNOTATION_LOCATION]!); -``` diff --git a/.changeset/warm-lizards-sin.md b/.changeset/warm-lizards-sin.md deleted file mode 100644 index 1e2aa1f857..0000000000 --- a/.changeset/warm-lizards-sin.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@backstage/plugin-scaffolder-backend': minor ---- - -Remove the previously deprecated `scaffolder.provider` config for all providers. -This config is no longer used anywhere, and adopters should use [`integrations` config](https://backstage.io/docs/integrations) instead. diff --git a/.changeset/weak-timers-punch.md b/.changeset/weak-timers-punch.md deleted file mode 100644 index a25724cb8f..0000000000 --- a/.changeset/weak-timers-punch.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-gcp-projects': patch ---- - -Switches to use react-hookz in place of react-use. diff --git a/.changeset/witty-mails-search.md b/.changeset/witty-mails-search.md deleted file mode 100644 index a98fc52884..0000000000 --- a/.changeset/witty-mails-search.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'@backstage/plugin-scaffolder-backend-module-cookiecutter': minor -'@backstage/plugin-scaffolder-backend-module-rails': minor -'@backstage/plugin-scaffolder-backend-module-yeoman': minor ---- - -Updated to the latest version of `@backstage/plugin-scaffolder-backend`, meaning the `TemplateAction` now exposes the precise input type rather than `any`. diff --git a/package.json b/package.json index 242c64c8bb..9745b6d867 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ "**/@roadiehq/**/@backstage/plugin-catalog": "*", "**/@roadiehq/**/@backstage/catalog-model": "*" }, - "version": "0.67.0", + "version": "0.68.0", "dependencies": { "@manypkg/get-packages": "^1.1.3", "@microsoft/api-documenter": "^7.15.0", diff --git a/packages/app-defaults/CHANGELOG.md b/packages/app-defaults/CHANGELOG.md index 74313008cd..9b9f57f4a5 100644 --- a/packages/app-defaults/CHANGELOG.md +++ b/packages/app-defaults/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/app-defaults +## 0.1.8 + +### Patch Changes + +- c77c5c7eb6: Added `backstage.role` to `package.json` +- Updated dependencies + - @backstage/core-app-api@0.5.3 + - @backstage/core-components@0.8.9 + - @backstage/core-plugin-api@0.6.1 + - @backstage/plugin-permission-react@0.3.1 + - @backstage/theme@0.2.15 + ## 0.1.7 ### Patch Changes diff --git a/packages/app-defaults/package.json b/packages/app-defaults/package.json index 09c5af2b1c..364baa6e83 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": "0.1.7", + "version": "0.1.8", "private": false, "publishConfig": { "access": "public", @@ -33,11 +33,11 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/core-components": "^0.8.8", - "@backstage/core-app-api": "^0.5.2", - "@backstage/core-plugin-api": "^0.6.0", - "@backstage/plugin-permission-react": "^0.3.0", - "@backstage/theme": "^0.2.14", + "@backstage/core-components": "^0.8.9", + "@backstage/core-app-api": "^0.5.3", + "@backstage/core-plugin-api": "^0.6.1", + "@backstage/plugin-permission-react": "^0.3.1", + "@backstage/theme": "^0.2.15", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "react-router-dom": "6.0.0-beta.0" @@ -46,8 +46,8 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.13.2", - "@backstage/test-utils": "^0.2.4", + "@backstage/cli": "^0.14.0", + "@backstage/test-utils": "^0.2.5", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^11.2.5", "@types/jest": "^26.0.7", diff --git a/packages/app/CHANGELOG.md b/packages/app/CHANGELOG.md index 1139bf2cbb..03f570005f 100644 --- a/packages/app/CHANGELOG.md +++ b/packages/app/CHANGELOG.md @@ -1,5 +1,59 @@ # example-app +## 0.2.65 + +### Patch Changes + +- Updated dependencies + - @backstage/cli@0.14.0 + - @backstage/core-app-api@0.5.3 + - @backstage/core-components@0.8.9 + - @backstage/core-plugin-api@0.6.1 + - @backstage/integration-react@0.1.22 + - @backstage/plugin-airbrake@0.2.0 + - @backstage/plugin-apache-airflow@0.1.7 + - @backstage/plugin-api-docs@0.7.3 + - @backstage/plugin-azure-devops@0.1.15 + - @backstage/plugin-badges@0.2.23 + - @backstage/plugin-catalog@0.8.0 + - @backstage/plugin-catalog-import@0.8.2 + - @backstage/plugin-catalog-react@0.6.15 + - @backstage/plugin-circleci@0.2.38 + - @backstage/plugin-cloudbuild@0.2.36 + - @backstage/plugin-code-coverage@0.1.26 + - @backstage/plugin-cost-insights@0.11.21 + - @backstage/plugin-explore@0.3.30 + - @backstage/plugin-gcp-projects@0.3.18 + - @backstage/plugin-github-actions@0.4.36 + - @backstage/plugin-gocd@0.1.5 + - @backstage/plugin-graphiql@0.2.31 + - @backstage/plugin-home@0.4.15 + - @backstage/plugin-jenkins@0.5.21 + - @backstage/plugin-kafka@0.2.29 + - @backstage/plugin-kubernetes@0.5.8 + - @backstage/plugin-lighthouse@0.2.38 + - @backstage/plugin-newrelic@0.3.17 + - @backstage/plugin-newrelic-dashboard@0.1.7 + - @backstage/plugin-org@0.4.3 + - @backstage/plugin-pagerduty@0.3.26 + - @backstage/plugin-permission-react@0.3.1 + - @backstage/plugin-rollbar@0.3.27 + - @backstage/plugin-scaffolder@0.12.3 + - @backstage/plugin-search@0.7.0 + - @backstage/plugin-sentry@0.3.37 + - @backstage/plugin-shortcuts@0.2.0 + - @backstage/plugin-tech-insights@0.1.9 + - @backstage/plugin-tech-radar@0.5.6 + - @backstage/plugin-techdocs@0.13.4 + - @backstage/plugin-todo@0.2.1 + - @backstage/plugin-user-settings@0.3.20 + - @backstage/app-defaults@0.1.8 + - @backstage/catalog-model@0.10.0 + - @backstage/search-common@0.2.3 + - @backstage/theme@0.2.15 + - @backstage/plugin-catalog-common@0.1.3 + - @backstage/plugin-catalog-graph@0.2.11 + ## 0.2.64 ### Patch Changes diff --git a/packages/app/package.json b/packages/app/package.json index e853597e9e..d1f63b1fd2 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -1,60 +1,60 @@ { "name": "example-app", - "version": "0.2.64", + "version": "0.2.65", "private": true, "backstage": { "role": "frontend" }, "bundled": true, "dependencies": { - "@backstage/app-defaults": "^0.1.7", - "@backstage/catalog-model": "^0.9.10", - "@backstage/cli": "^0.13.2", - "@backstage/core-app-api": "^0.5.2", - "@backstage/core-components": "^0.8.8", - "@backstage/core-plugin-api": "^0.6.0", - "@backstage/integration-react": "^0.1.21", - "@backstage/plugin-airbrake": "^0.1.3", - "@backstage/plugin-api-docs": "^0.7.2", - "@backstage/plugin-azure-devops": "^0.1.14", - "@backstage/plugin-apache-airflow": "^0.1.6", - "@backstage/plugin-badges": "^0.2.22", - "@backstage/plugin-catalog": "^0.7.12", - "@backstage/plugin-catalog-common": "^0.1.2", - "@backstage/plugin-catalog-graph": "^0.2.10", - "@backstage/plugin-catalog-import": "^0.8.1", - "@backstage/plugin-catalog-react": "^0.6.14", - "@backstage/plugin-circleci": "^0.2.37", - "@backstage/plugin-cloudbuild": "^0.2.35", - "@backstage/plugin-code-coverage": "^0.1.25", - "@backstage/plugin-cost-insights": "^0.11.20", - "@backstage/plugin-explore": "^0.3.29", - "@backstage/plugin-gcp-projects": "^0.3.17", - "@backstage/plugin-github-actions": "^0.4.35", - "@backstage/plugin-gocd": "^0.1.4", - "@backstage/plugin-graphiql": "^0.2.30", - "@backstage/plugin-home": "^0.4.14", - "@backstage/plugin-jenkins": "^0.5.20", - "@backstage/plugin-kafka": "^0.2.28", - "@backstage/plugin-kubernetes": "^0.5.7", - "@backstage/plugin-lighthouse": "^0.2.37", - "@backstage/plugin-newrelic": "^0.3.16", - "@backstage/plugin-newrelic-dashboard": "^0.1.6", - "@backstage/plugin-org": "^0.4.2-next.0", - "@backstage/plugin-pagerduty": "0.3.25", - "@backstage/plugin-permission-react": "^0.3.0", - "@backstage/plugin-rollbar": "^0.3.26", - "@backstage/plugin-scaffolder": "^0.12.2", - "@backstage/plugin-search": "^0.6.2", - "@backstage/plugin-sentry": "^0.3.36", - "@backstage/plugin-shortcuts": "^0.1.22", - "@backstage/plugin-tech-radar": "^0.5.5", - "@backstage/plugin-techdocs": "^0.13.3", - "@backstage/plugin-todo": "^0.2.0", - "@backstage/plugin-user-settings": "^0.3.19", - "@backstage/search-common": "^0.2.2", - "@backstage/plugin-tech-insights": "^0.1.8", - "@backstage/theme": "^0.2.14", + "@backstage/app-defaults": "^0.1.8", + "@backstage/catalog-model": "^0.10.0", + "@backstage/cli": "^0.14.0", + "@backstage/core-app-api": "^0.5.3", + "@backstage/core-components": "^0.8.9", + "@backstage/core-plugin-api": "^0.6.1", + "@backstage/integration-react": "^0.1.22", + "@backstage/plugin-airbrake": "^0.2.0", + "@backstage/plugin-api-docs": "^0.7.3", + "@backstage/plugin-azure-devops": "^0.1.15", + "@backstage/plugin-apache-airflow": "^0.1.7", + "@backstage/plugin-badges": "^0.2.23", + "@backstage/plugin-catalog": "^0.8.0", + "@backstage/plugin-catalog-common": "^0.1.3", + "@backstage/plugin-catalog-graph": "^0.2.11", + "@backstage/plugin-catalog-import": "^0.8.2", + "@backstage/plugin-catalog-react": "^0.6.15", + "@backstage/plugin-circleci": "^0.2.38", + "@backstage/plugin-cloudbuild": "^0.2.36", + "@backstage/plugin-code-coverage": "^0.1.26", + "@backstage/plugin-cost-insights": "^0.11.21", + "@backstage/plugin-explore": "^0.3.30", + "@backstage/plugin-gcp-projects": "^0.3.18", + "@backstage/plugin-github-actions": "^0.4.36", + "@backstage/plugin-gocd": "^0.1.5", + "@backstage/plugin-graphiql": "^0.2.31", + "@backstage/plugin-home": "^0.4.15", + "@backstage/plugin-jenkins": "^0.5.21", + "@backstage/plugin-kafka": "^0.2.29", + "@backstage/plugin-kubernetes": "^0.5.8", + "@backstage/plugin-lighthouse": "^0.2.38", + "@backstage/plugin-newrelic": "^0.3.17", + "@backstage/plugin-newrelic-dashboard": "^0.1.7", + "@backstage/plugin-org": "^0.4.3", + "@backstage/plugin-pagerduty": "0.3.26", + "@backstage/plugin-permission-react": "^0.3.1", + "@backstage/plugin-rollbar": "^0.3.27", + "@backstage/plugin-scaffolder": "^0.12.3", + "@backstage/plugin-search": "^0.7.0", + "@backstage/plugin-sentry": "^0.3.37", + "@backstage/plugin-shortcuts": "^0.2.0", + "@backstage/plugin-tech-radar": "^0.5.6", + "@backstage/plugin-techdocs": "^0.13.4", + "@backstage/plugin-todo": "^0.2.1", + "@backstage/plugin-user-settings": "^0.3.20", + "@backstage/search-common": "^0.2.3", + "@backstage/plugin-tech-insights": "^0.1.9", + "@backstage/theme": "^0.2.15", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -74,8 +74,8 @@ "zen-observable": "^0.8.15" }, "devDependencies": { - "@backstage/plugin-permission-react": "^0.3.0", - "@backstage/test-utils": "^0.2.4", + "@backstage/plugin-permission-react": "^0.3.1", + "@backstage/test-utils": "^0.2.5", "@rjsf/core": "^3.2.1", "@testing-library/cypress": "^8.0.2", "@testing-library/jest-dom": "^5.10.1", diff --git a/packages/backend-common/CHANGELOG.md b/packages/backend-common/CHANGELOG.md index 2e80c62c92..37dd4db6df 100644 --- a/packages/backend-common/CHANGELOG.md +++ b/packages/backend-common/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/backend-common +## 0.10.8 + +### Patch Changes + +- 1ed305728b: Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5 +- c77c5c7eb6: Added `backstage.role` to `package.json` +- 0107c9aa08: chore(deps): bump `helmet` from 4.4.1 to 5.0.2 +- b590e9b58d: Updated `isDatabaseConflictError` to handle modern sqlite conflict errors +- Updated dependencies + - @backstage/config-loader@0.9.4 + - @backstage/errors@0.2.1 + - @backstage/integration@0.7.3 + - @backstage/cli-common@0.1.7 + - @backstage/config@0.1.14 + - @backstage/types@0.1.2 + ## 0.10.7 ### Patch Changes diff --git a/packages/backend-common/package.json b/packages/backend-common/package.json index 092a8b1ea7..229134dffd 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.10.7", + "version": "0.10.8", "main": "src/index.ts", "types": "src/index.ts", "private": false, @@ -34,12 +34,12 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/cli-common": "^0.1.6", - "@backstage/config": "^0.1.13", - "@backstage/config-loader": "^0.9.3", - "@backstage/errors": "^0.2.0", - "@backstage/integration": "^0.7.2", - "@backstage/types": "^0.1.1", + "@backstage/cli-common": "^0.1.7", + "@backstage/config": "^0.1.14", + "@backstage/config-loader": "^0.9.4", + "@backstage/errors": "^0.2.1", + "@backstage/integration": "^0.7.3", + "@backstage/types": "^0.1.2", "@google-cloud/storage": "^5.8.0", "@manypkg/get-packages": "^1.1.3", "@octokit/rest": "^18.5.3", @@ -88,8 +88,8 @@ } }, "devDependencies": { - "@backstage/cli": "^0.13.2", - "@backstage/test-utils": "^0.2.4", + "@backstage/cli": "^0.14.0", + "@backstage/test-utils": "^0.2.5", "@types/archiver": "^5.1.0", "@types/compression": "^1.7.0", "@types/concat-stream": "^2.0.0", diff --git a/packages/backend-tasks/CHANGELOG.md b/packages/backend-tasks/CHANGELOG.md index d611ee8ac1..0302bc1825 100644 --- a/packages/backend-tasks/CHANGELOG.md +++ b/packages/backend-tasks/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/backend-tasks +## 0.1.7 + +### Patch Changes + +- c77c5c7eb6: Added `backstage.role` to `package.json` +- Updated dependencies + - @backstage/backend-common@0.10.8 + - @backstage/errors@0.2.1 + - @backstage/config@0.1.14 + - @backstage/types@0.1.2 + ## 0.1.6 ### Patch Changes diff --git a/packages/backend-tasks/package.json b/packages/backend-tasks/package.json index eca6f64f81..b84809ba69 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.1.6", + "version": "0.1.7", "main": "src/index.ts", "types": "src/index.ts", "private": false, @@ -33,10 +33,10 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/backend-common": "^0.10.7", - "@backstage/config": "^0.1.13", - "@backstage/errors": "^0.2.0", - "@backstage/types": "^0.1.1", + "@backstage/backend-common": "^0.10.8", + "@backstage/config": "^0.1.14", + "@backstage/errors": "^0.2.1", + "@backstage/types": "^0.1.2", "@types/luxon": "^2.0.4", "knex": "^1.0.2", "lodash": "^4.17.21", @@ -47,8 +47,8 @@ "zod": "^3.9.5" }, "devDependencies": { - "@backstage/backend-test-utils": "^0.1.17", - "@backstage/cli": "^0.13.2", + "@backstage/backend-test-utils": "^0.1.18", + "@backstage/cli": "^0.14.0", "jest": "^26.0.1", "wait-for-expect": "^3.0.2" }, diff --git a/packages/backend-test-utils/CHANGELOG.md b/packages/backend-test-utils/CHANGELOG.md index 55fb3c94cd..2ed22240bf 100644 --- a/packages/backend-test-utils/CHANGELOG.md +++ b/packages/backend-test-utils/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/backend-test-utils +## 0.1.18 + +### Patch Changes + +- c77c5c7eb6: Added `backstage.role` to `package.json` +- Updated dependencies + - @backstage/cli@0.14.0 + - @backstage/backend-common@0.10.8 + - @backstage/config@0.1.14 + ## 0.1.17 ### Patch Changes diff --git a/packages/backend-test-utils/package.json b/packages/backend-test-utils/package.json index 21ff0afc4b..a1471fbcf0 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.17", + "version": "0.1.18", "main": "src/index.ts", "types": "src/index.ts", "private": false, @@ -34,9 +34,9 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/backend-common": "^0.10.7", - "@backstage/cli": "^0.13.2", - "@backstage/config": "^0.1.13", + "@backstage/backend-common": "^0.10.8", + "@backstage/cli": "^0.14.0", + "@backstage/config": "^0.1.14", "@vscode/sqlite3": "^5.0.7", "knex": "^1.0.2", "mysql2": "^2.2.5", @@ -45,7 +45,7 @@ "uuid": "^8.0.0" }, "devDependencies": { - "@backstage/cli": "^0.13.2", + "@backstage/cli": "^0.14.0", "jest": "^26.0.1" }, "files": [ diff --git a/packages/backend/CHANGELOG.md b/packages/backend/CHANGELOG.md index d68ec80469..63ec60ba88 100644 --- a/packages/backend/CHANGELOG.md +++ b/packages/backend/CHANGELOG.md @@ -1,5 +1,45 @@ # example-backend +## 0.2.65 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-techdocs-backend@0.13.4 + - @backstage/plugin-catalog-backend@0.21.4 + - @backstage/backend-common@0.10.8 + - @backstage/catalog-client@0.7.0 + - @backstage/integration@0.7.3 + - @backstage/plugin-auth-backend@0.10.1 + - @backstage/plugin-auth-node@0.1.1 + - @backstage/plugin-permission-backend@0.5.0 + - @backstage/plugin-permission-common@0.5.0 + - @backstage/plugin-rollbar-backend@0.1.22 + - @backstage/plugin-scaffolder-backend@0.16.0 + - @backstage/backend-tasks@0.1.7 + - @backstage/catalog-model@0.10.0 + - @backstage/config@0.1.14 + - @backstage/plugin-app-backend@0.3.25 + - @backstage/plugin-azure-devops-backend@0.3.4 + - @backstage/plugin-badges-backend@0.1.19 + - @backstage/plugin-code-coverage-backend@0.1.23 + - @backstage/plugin-graphql-backend@0.1.15 + - @backstage/plugin-jenkins-backend@0.1.14 + - @backstage/plugin-kafka-backend@0.2.18 + - @backstage/plugin-kubernetes-backend@0.4.8 + - @backstage/plugin-permission-node@0.5.0 + - @backstage/plugin-proxy-backend@0.2.19 + - @backstage/plugin-scaffolder-backend-module-rails@0.3.0 + - @backstage/plugin-search-backend@0.4.3 + - @backstage/plugin-search-backend-module-elasticsearch@0.0.9 + - @backstage/plugin-search-backend-module-pg@0.2.7 + - @backstage/plugin-search-backend-node@0.4.6 + - @backstage/plugin-tech-insights-backend@0.2.5 + - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.9 + - @backstage/plugin-tech-insights-node@0.2.3 + - @backstage/plugin-todo-backend@0.1.22 + - example-app@0.2.65 + ## 0.2.64 ### Patch Changes diff --git a/packages/backend/package.json b/packages/backend/package.json index 41972c15d2..fe1908abc5 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -1,6 +1,6 @@ { "name": "example-backend", - "version": "0.2.64", + "version": "0.2.65", "main": "dist/index.cjs.js", "types": "src/index.ts", "license": "Apache-2.0", @@ -27,39 +27,39 @@ "migrate:create": "knex migrate:make -x ts" }, "dependencies": { - "@backstage/backend-common": "^0.10.7", - "@backstage/backend-tasks": "^0.1.6", - "@backstage/catalog-client": "^0.6.0", - "@backstage/catalog-model": "^0.9.10", - "@backstage/config": "^0.1.13", - "@backstage/integration": "^0.7.2", - "@backstage/plugin-app-backend": "^0.3.24", - "@backstage/plugin-auth-backend": "^0.10.0", - "@backstage/plugin-auth-node": "^0.1.0", - "@backstage/plugin-azure-devops-backend": "^0.3.3", - "@backstage/plugin-badges-backend": "^0.1.18", - "@backstage/plugin-catalog-backend": "^0.21.3", - "@backstage/plugin-code-coverage-backend": "^0.1.22", - "@backstage/plugin-graphql-backend": "^0.1.14", - "@backstage/plugin-jenkins-backend": "^0.1.13", - "@backstage/plugin-kubernetes-backend": "^0.4.7", - "@backstage/plugin-kafka-backend": "^0.2.17", - "@backstage/plugin-permission-backend": "^0.4.3", - "@backstage/plugin-permission-common": "^0.4.0", - "@backstage/plugin-permission-node": "^0.4.3", - "@backstage/plugin-proxy-backend": "^0.2.18", - "@backstage/plugin-rollbar-backend": "^0.1.21", - "@backstage/plugin-scaffolder-backend": "^0.15.24", - "@backstage/plugin-scaffolder-backend-module-rails": "^0.2.6", - "@backstage/plugin-search-backend": "^0.4.2", - "@backstage/plugin-search-backend-node": "^0.4.5", - "@backstage/plugin-search-backend-module-elasticsearch": "^0.0.8", - "@backstage/plugin-search-backend-module-pg": "^0.2.6", - "@backstage/plugin-techdocs-backend": "^0.13.3", - "@backstage/plugin-tech-insights-backend": "^0.2.4", - "@backstage/plugin-tech-insights-node": "^0.2.2", - "@backstage/plugin-tech-insights-backend-module-jsonfc": "^0.1.8", - "@backstage/plugin-todo-backend": "^0.1.21", + "@backstage/backend-common": "^0.10.8", + "@backstage/backend-tasks": "^0.1.7", + "@backstage/catalog-client": "^0.7.0", + "@backstage/catalog-model": "^0.10.0", + "@backstage/config": "^0.1.14", + "@backstage/integration": "^0.7.3", + "@backstage/plugin-app-backend": "^0.3.25", + "@backstage/plugin-auth-backend": "^0.10.1", + "@backstage/plugin-auth-node": "^0.1.1", + "@backstage/plugin-azure-devops-backend": "^0.3.4", + "@backstage/plugin-badges-backend": "^0.1.19", + "@backstage/plugin-catalog-backend": "^0.21.4", + "@backstage/plugin-code-coverage-backend": "^0.1.23", + "@backstage/plugin-graphql-backend": "^0.1.15", + "@backstage/plugin-jenkins-backend": "^0.1.14", + "@backstage/plugin-kubernetes-backend": "^0.4.8", + "@backstage/plugin-kafka-backend": "^0.2.18", + "@backstage/plugin-permission-backend": "^0.5.0", + "@backstage/plugin-permission-common": "^0.5.0", + "@backstage/plugin-permission-node": "^0.5.0", + "@backstage/plugin-proxy-backend": "^0.2.19", + "@backstage/plugin-rollbar-backend": "^0.1.22", + "@backstage/plugin-scaffolder-backend": "^0.16.0", + "@backstage/plugin-scaffolder-backend-module-rails": "^0.3.0", + "@backstage/plugin-search-backend": "^0.4.3", + "@backstage/plugin-search-backend-node": "^0.4.6", + "@backstage/plugin-search-backend-module-elasticsearch": "^0.0.9", + "@backstage/plugin-search-backend-module-pg": "^0.2.7", + "@backstage/plugin-techdocs-backend": "^0.13.4", + "@backstage/plugin-tech-insights-backend": "^0.2.5", + "@backstage/plugin-tech-insights-node": "^0.2.3", + "@backstage/plugin-tech-insights-backend-module-jsonfc": "^0.1.9", + "@backstage/plugin-todo-backend": "^0.1.22", "@gitbeaker/node": "^35.1.0", "@octokit/rest": "^18.5.3", "@vscode/sqlite3": "^5.0.7", @@ -76,7 +76,7 @@ "winston": "^3.2.1" }, "devDependencies": { - "@backstage/cli": "^0.13.2", + "@backstage/cli": "^0.14.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 664e7a49ed..772ef74980 100644 --- a/packages/catalog-client/CHANGELOG.md +++ b/packages/catalog-client/CHANGELOG.md @@ -1,5 +1,45 @@ # @backstage/catalog-client +## 0.7.0 + +### Minor Changes + +- 8eda0e7a9c: **BREAKING**: Removed the explicit `DiscoveryApi` and `FetchApi` export symbols, + which were unnecessary duplicates from the well known core ones. + + The `CATALOG_FILTER_EXISTS` symbol's value has changed. However, this should not + affect any code in practice. + +- deaf6065db: Removed `CatalogApi.geLocationByEntity` and `CatalogApi.getOriginLocationByEntity`, and replaced them with `CatalogApi.getLocationByRef`. + + If you were using one of the two old methods, you can update your code as follows: + + ```diff + -const originLocation = catalogApi.getOriginLocationByEntity(entity); + +const originLocation = catalogApi.getLocationByRef(entity.metadata.annotations[ANNOTATION_ORIGIN_LOCATION]!); + -const location = catalogApi.getLocationByEntity(entity); + +const location = catalogApi.getLocationByRef(entity.metadata.annotations[ANNOTATION_LOCATION]!); + ``` + +### Patch Changes + +- 1ed305728b: Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5 +- c77c5c7eb6: Added `backstage.role` to `package.json` +- 216725b434: Updated to use new names for `parseLocationRef` and `stringifyLocationRef` +- 244d24ebc4: Export the `Location` type that was previously exported by the `@backstage/catalog-model` package. +- 538ca90790: Deprecated the following types used by the catalog client, and created new + corresponding types to make them more consistent: + + - `CatalogEntitiesRequest` -> `GetEntitiesRequest` + - `CatalogListResponse` was removed and generally replaced with `GetEntitiesResponse` (which does not use a type parameter argument) + - `CatalogEntityAncestorsRequest`-> `GetEntityAncestorsRequest` + - `CatalogEntityAncestorsResponse` -> `GetEntityAncestorsResponse` + +- 27eccab216: Replaces use of deprecated catalog-model constants. +- Updated dependencies + - @backstage/errors@0.2.1 + - @backstage/catalog-model@0.10.0 + ## 0.6.0 ### Minor Changes diff --git a/packages/catalog-client/package.json b/packages/catalog-client/package.json index eb24c3100c..40b6f238a8 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": "0.6.0", + "version": "0.7.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -33,12 +33,12 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^0.9.10", - "@backstage/errors": "^0.2.0", + "@backstage/catalog-model": "^0.10.0", + "@backstage/errors": "^0.2.1", "cross-fetch": "^3.1.5" }, "devDependencies": { - "@backstage/cli": "^0.13.2", + "@backstage/cli": "^0.14.0", "@types/jest": "^26.0.7", "msw": "^0.35.0" }, diff --git a/packages/catalog-model/CHANGELOG.md b/packages/catalog-model/CHANGELOG.md index 9dbf2f116b..b89c7baf28 100644 --- a/packages/catalog-model/CHANGELOG.md +++ b/packages/catalog-model/CHANGELOG.md @@ -1,5 +1,35 @@ # @backstage/catalog-model +## 0.10.0 + +### Minor Changes + +- e483dd6c72: **BREAKING**: Remove deprecated validation methods `analyzeLocationSchema`, `locationSchema` and `locationSpecSchema`. + This functionality was primarily used internally by the `catalog-backend`. +- edbc03814a: **BREAKING**: Remove deprecated `serializeEntityRef` which is replaced by `stringifyEntityRef`. +- e72d371296: **BREAKING**: Removed `TemplateEntityV1beta2` from the model and moved it to + `@backstage/plugin-scaffolder-common` where `TemplateEntityV1beta3` already + lived. It has also been marked as deprecated in the process - please consider + [migrating to `v1beta3` templates](https://backstage.io/docs/features/software-templates/migrating-from-v1beta2-to-v1beta3). + +### Patch Changes + +- c77c5c7eb6: Added `backstage.role` to `package.json` +- 216725b434: Deprecated `parseLocationReference` and `stringifyLocationReference`, + introducing `parseLocationRef` and `stringifyLocationRef` in their place. +- 244d24ebc4: Deprecates the `Location` type export from this package. Imports of the `Location` type should now be done from the `@backstage/catalog-client` package instead. +- 7aeb491394: Deprecated `ENTITY_DEFAULT_NAMESPACE` constant in favour of `DEFAULT_NAMESPACE`. +- 0d03e42a89: Deprecated `compareEntityToRef` due to low usage and provided value. +- e8c6f9d282: Deprecated the `EntityRefContext` type which had limited use. +- 7f21538c9e: Deprecated `JSONSchema` export type. +- 20f3244102: Deprecates the following exports which all have very limited and internal use. `ENTITY_META_GENERATED_FIELDS`, `entityHasChanges`, `generateEntityEtag`, `generateEntityUid`, `generateUpdatedEntity`, `ENTITY_META_GENERATED_FIELDS`. +- 27eccab216: Deprecates `EDIT_URL_ANNOTATION`, `LOCATION_ANNOTATION`, `ORIGIN_LOCATION_ANNOTATION`, `SOURCE_LOCATION_ANNOTATION`, `VIEW_URL_ANNOTATION` + and replaces these constants all prefixed with ANNOTATION\_ `ANNOTATION_EDIT_URL`, `ANNOTATION_LOCATION`, `ANNOTATION_ORIGIN_LOCATION`, `ANNOTATION_SOURCE_LOCATION`, `ANNOTATION_VIEW_URL` +- Updated dependencies + - @backstage/errors@0.2.1 + - @backstage/config@0.1.14 + - @backstage/types@0.1.2 + ## 0.9.10 ### Patch Changes diff --git a/packages/catalog-model/package.json b/packages/catalog-model/package.json index 9cc8807a29..a34449f38d 100644 --- a/packages/catalog-model/package.json +++ b/packages/catalog-model/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/catalog-model", "description": "Types and validators that help describe the model of a Backstage Catalog", - "version": "0.9.10", + "version": "0.10.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,9 +34,9 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/config": "^0.1.13", - "@backstage/errors": "^0.2.0", - "@backstage/types": "^0.1.1", + "@backstage/config": "^0.1.14", + "@backstage/errors": "^0.2.1", + "@backstage/types": "^0.1.2", "@types/json-schema": "^7.0.5", "ajv": "^7.0.3", "json-schema": "^0.4.0", @@ -44,7 +44,7 @@ "uuid": "^8.0.0" }, "devDependencies": { - "@backstage/cli": "^0.13.2-next.0", + "@backstage/cli": "^0.14.0", "@types/jest": "^26.0.7", "@types/lodash": "^4.14.151", "yaml": "^1.9.2" diff --git a/packages/cli-common/CHANGELOG.md b/packages/cli-common/CHANGELOG.md index e588c02edf..74e21994e5 100644 --- a/packages/cli-common/CHANGELOG.md +++ b/packages/cli-common/CHANGELOG.md @@ -1,5 +1,11 @@ # @backstage/cli-common +## 0.1.7 + +### Patch Changes + +- c77c5c7eb6: Added `backstage.role` to `package.json` + ## 0.1.6 ### Patch Changes diff --git a/packages/cli-common/package.json b/packages/cli-common/package.json index 5d259ce2f3..409c2e678e 100644 --- a/packages/cli-common/package.json +++ b/packages/cli-common/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/cli-common", "description": "Common functionality used by cli, backend, and create-app", - "version": "0.1.6", + "version": "0.1.7", "private": false, "main": "src/index.ts", "types": "src/index.ts", diff --git a/packages/cli/CHANGELOG.md b/packages/cli/CHANGELOG.md index 37bea1e016..c9eee943ad 100644 --- a/packages/cli/CHANGELOG.md +++ b/packages/cli/CHANGELOG.md @@ -1,5 +1,43 @@ # @backstage/cli +## 0.14.0 + +### Minor Changes + +- 1fc0cd3896: Bumped Webpack and Rollup `svgr` dependencies and updated the AST template for `.icon.svg` modules. This means that SVG icon imports are now using SVGO v2. + +### Patch Changes + +- 0b74c72987: Added a new experimental and hidden `backstage-cli repo lint` command that can be used to lint all packages in the project, similar to `lerna run lint`. +- 532dae9c4c: The `versions:bump --release next` command is updated to compare the `main` and `next` release manifests and prefer the latest. +- 1ed305728b: Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5 +- c77c5c7eb6: Added `backstage.role` to `package.json` +- 22862486de: The `versions:bump` command now filters out `npm_` environment configuration when running `yarn install`. This has the effect of allowing it to consider local configuration files within the repository, which is the behavior that one would expect. +- 22862486de: The `versions:bump` command now also considers the root `package.json` when searching for updates. It has also received updates to its output, including a link the [Backstage upgrade helper](https://backstage.github.io/upgrade-helper) and silenced `yarn install` output. +- 7410e12268: Several changes were made to the new experimental package roles system. Unless you have been experimenting with using this new system, these changes have no affect on your project. + + Renamed the `backstage-cli migrate package-role` command to `backstage-cli migrate package-roles`. + + Updated the package role definitions by renaming `app` to `frontend`, `plugin-frontend` to `frontend-plugin`, `plugin-frontend-module` to `frontend-plugin-module`, `plugin-backend` to `backend-plugin`, and `plugin-backend-module` to `backend-plugin-module` + + The `backstage-cli migrate package-scripts` received several tweaks to make it more accurate. It now tries to maintain existing script arguments, like `--config` parameters for `build` and `start` scripts. + + The `script` command category has been renamed to `package`. + + The `backstage-cli package build` command set an incorrect target directory for `app` and `backend` packages, which has been fixed. + + The `backend:bundle` and `repo build` command for the `backend` role was previously ignoring building of bundled packages that had migrated to use package roles and the standard build script, this has now been fixed. + +- c6bbafb516: Updated the default [sucrase](https://github.com/alangpierce/sucrase)-based Jest transform to include source maps if the environment variable `ENABLE_SOURCE_MAPS` is non-empty. This can be used to better support editor test debugging integrations. +- 7410e12268: The `test` command now automatically adds `--passWithNoTests` to the Jest invocation. To revert this behavior, pass `--passWithNoTests=false` or `--no-passWithNoTests`. +- Updated dependencies + - @backstage/config-loader@0.9.4 + - @backstage/errors@0.2.1 + - @backstage/release-manifests@0.0.2 + - @backstage/cli-common@0.1.7 + - @backstage/config@0.1.14 + - @backstage/types@0.1.2 + ## 0.13.2 ### Patch Changes diff --git a/packages/cli/package.json b/packages/cli/package.json index b811fc8eda..0f80d710d5 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.13.2", + "version": "0.14.0", "private": false, "publishConfig": { "access": "public" @@ -31,12 +31,12 @@ "backstage-cli": "bin/backstage-cli" }, "dependencies": { - "@backstage/cli-common": "^0.1.6", - "@backstage/config": "^0.1.13", - "@backstage/config-loader": "^0.9.3", - "@backstage/errors": "^0.2.0", - "@backstage/release-manifests": "^0.0.1", - "@backstage/types": "^0.1.1", + "@backstage/cli-common": "^0.1.7", + "@backstage/config": "^0.1.14", + "@backstage/config-loader": "^0.9.4", + "@backstage/errors": "^0.2.1", + "@backstage/release-manifests": "^0.0.2", + "@backstage/types": "^0.1.2", "@hot-loader/react-dom": "^16.13.0", "@manypkg/get-packages": "^1.1.3", "@octokit/request": "^5.4.12", @@ -121,14 +121,14 @@ "zod": "^3.11.6" }, "devDependencies": { - "@backstage/backend-common": "^0.10.7", - "@backstage/config": "^0.1.13", - "@backstage/core-components": "^0.8.8", - "@backstage/core-plugin-api": "^0.6.0", - "@backstage/core-app-api": "^0.5.2", - "@backstage/dev-utils": "^0.2.21", - "@backstage/test-utils": "^0.2.4", - "@backstage/theme": "^0.2.14", + "@backstage/backend-common": "^0.10.8", + "@backstage/config": "^0.1.14", + "@backstage/core-components": "^0.8.9", + "@backstage/core-plugin-api": "^0.6.1", + "@backstage/core-app-api": "^0.5.3", + "@backstage/dev-utils": "^0.2.22", + "@backstage/test-utils": "^0.2.5", + "@backstage/theme": "^0.2.15", "@types/diff": "^5.0.0", "@types/express": "^4.17.6", "@types/fs-extra": "^9.0.1", diff --git a/packages/codemods/CHANGELOG.md b/packages/codemods/CHANGELOG.md index c7283f5d8c..cdc3e7b545 100644 --- a/packages/codemods/CHANGELOG.md +++ b/packages/codemods/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/codemods +## 0.1.34 + +### Patch Changes + +- c77c5c7eb6: Added `backstage.role` to `package.json` +- Updated dependencies + - @backstage/core-app-api@0.5.3 + - @backstage/core-components@0.8.9 + - @backstage/core-plugin-api@0.6.1 + - @backstage/cli-common@0.1.7 + ## 0.1.33 ### Patch Changes diff --git a/packages/codemods/package.json b/packages/codemods/package.json index eef854868c..9571687d74 100644 --- a/packages/codemods/package.json +++ b/packages/codemods/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/codemods", "description": "A collection of codemods for Backstage projects", - "version": "0.1.33", + "version": "0.1.34", "private": false, "publishConfig": { "access": "public", @@ -34,7 +34,7 @@ "backstage-codemods": "bin/backstage-codemods" }, "dependencies": { - "@backstage/cli-common": "0.1.6", + "@backstage/cli-common": "0.1.7", "@backstage/core-app-api": "*", "@backstage/core-components": "*", "@backstage/core-plugin-api": "*", diff --git a/packages/config-loader/CHANGELOG.md b/packages/config-loader/CHANGELOG.md index cf953948da..876065d731 100644 --- a/packages/config-loader/CHANGELOG.md +++ b/packages/config-loader/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/config-loader +## 0.9.4 + +### Patch Changes + +- 1ed305728b: Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5 +- c77c5c7eb6: Added `backstage.role` to `package.json` +- Updated dependencies + - @backstage/errors@0.2.1 + - @backstage/cli-common@0.1.7 + - @backstage/config@0.1.14 + - @backstage/types@0.1.2 + ## 0.9.3 ### Patch Changes diff --git a/packages/config-loader/package.json b/packages/config-loader/package.json index 22323643b0..6d588d1105 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": "0.9.3", + "version": "0.9.4", "private": false, "publishConfig": { "access": "public", @@ -34,10 +34,10 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/cli-common": "^0.1.6", - "@backstage/config": "^0.1.13", - "@backstage/errors": "^0.2.0", - "@backstage/types": "^0.1.1", + "@backstage/cli-common": "^0.1.7", + "@backstage/config": "^0.1.14", + "@backstage/errors": "^0.2.1", + "@backstage/types": "^0.1.2", "@types/json-schema": "^7.0.6", "ajv": "^7.0.3", "chokidar": "^3.5.2", diff --git a/packages/config/CHANGELOG.md b/packages/config/CHANGELOG.md index 2d3e90d1b7..4e03a4dfe7 100644 --- a/packages/config/CHANGELOG.md +++ b/packages/config/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/config +## 0.1.14 + +### Patch Changes + +- c77c5c7eb6: Added `backstage.role` to `package.json` +- Updated dependencies + - @backstage/types@0.1.2 + ## 0.1.13 ### Patch Changes diff --git a/packages/config/package.json b/packages/config/package.json index b3cbc14988..5b15cc7594 100644 --- a/packages/config/package.json +++ b/packages/config/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/config", "description": "Config API used by Backstage core, backend, and CLI", - "version": "0.1.13", + "version": "0.1.14", "private": false, "publishConfig": { "access": "public", @@ -33,11 +33,11 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/types": "^0.1.1", + "@backstage/types": "^0.1.2", "lodash": "^4.17.21" }, "devDependencies": { - "@backstage/test-utils": "^0.2.4-next.0", + "@backstage/test-utils": "^0.2.5", "@types/jest": "^26.0.7", "@types/node": "^14.14.32" }, diff --git a/packages/core-app-api/CHANGELOG.md b/packages/core-app-api/CHANGELOG.md index cc115a7da2..9d7093221f 100644 --- a/packages/core-app-api/CHANGELOG.md +++ b/packages/core-app-api/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/core-app-api +## 0.5.3 + +### Patch Changes + +- 1ed305728b: Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5 +- c77c5c7eb6: Added `backstage.role` to `package.json` +- Updated dependencies + - @backstage/core-plugin-api@0.6.1 + - @backstage/config@0.1.14 + - @backstage/types@0.1.2 + - @backstage/version-bridge@0.1.2 + ## 0.5.2 ### Patch Changes diff --git a/packages/core-app-api/package.json b/packages/core-app-api/package.json index b23eedd7c9..894d3fcb36 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": "0.5.2", + "version": "0.5.3", "private": false, "publishConfig": { "access": "public", @@ -33,10 +33,10 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/config": "^0.1.13", - "@backstage/core-plugin-api": "^0.6.0", - "@backstage/types": "^0.1.1", - "@backstage/version-bridge": "^0.1.1", + "@backstage/config": "^0.1.14", + "@backstage/core-plugin-api": "^0.6.1", + "@backstage/types": "^0.1.2", + "@backstage/version-bridge": "^0.1.2", "@types/prop-types": "^15.7.3", "prop-types": "^15.7.2", "react-router-dom": "6.0.0-beta.0", @@ -49,8 +49,8 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.13.2-next.0", - "@backstage/test-utils": "^0.2.4", + "@backstage/cli": "^0.14.0", + "@backstage/test-utils": "^0.2.5", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^11.2.5", "@testing-library/react-hooks": "^7.0.2", diff --git a/packages/core-components/CHANGELOG.md b/packages/core-components/CHANGELOG.md index fe51935ab0..b6a2468e36 100644 --- a/packages/core-components/CHANGELOG.md +++ b/packages/core-components/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/core-components +## 0.8.9 + +### Patch Changes + +- 1ed305728b: Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5 +- c77c5c7eb6: Added `backstage.role` to `package.json` +- 126074a04b: Port supported react-use functions to react-hookz. +- Updated dependencies + - @backstage/core-plugin-api@0.6.1 + - @backstage/errors@0.2.1 + - @backstage/config@0.1.14 + - @backstage/theme@0.2.15 + ## 0.8.8 ### Patch Changes diff --git a/packages/core-components/package.json b/packages/core-components/package.json index 497f0b6ed6..7362ec9e96 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.8.8", + "version": "0.8.9", "private": false, "publishConfig": { "access": "public", @@ -33,10 +33,10 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/config": "^0.1.13", - "@backstage/core-plugin-api": "^0.6.0", - "@backstage/errors": "^0.2.0", - "@backstage/theme": "^0.2.14", + "@backstage/config": "^0.1.14", + "@backstage/core-plugin-api": "^0.6.1", + "@backstage/errors": "^0.2.1", + "@backstage/theme": "^0.2.15", "@material-table/core": "^3.1.0", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", @@ -78,9 +78,9 @@ "react-dom": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/core-app-api": "^0.5.2", - "@backstage/cli": "^0.13.2", - "@backstage/test-utils": "^0.2.4", + "@backstage/core-app-api": "^0.5.3", + "@backstage/cli": "^0.14.0", + "@backstage/test-utils": "^0.2.5", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^11.2.5", "@testing-library/react-hooks": "^7.0.2", diff --git a/packages/core-plugin-api/CHANGELOG.md b/packages/core-plugin-api/CHANGELOG.md index 21668577a1..e28b828937 100644 --- a/packages/core-plugin-api/CHANGELOG.md +++ b/packages/core-plugin-api/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/core-plugin-api +## 0.6.1 + +### Patch Changes + +- 1ed305728b: Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5 +- c77c5c7eb6: Added `backstage.role` to `package.json` +- 2714145cf5: Removes unused react-use dependency. +- Updated dependencies + - @backstage/config@0.1.14 + - @backstage/types@0.1.2 + - @backstage/version-bridge@0.1.2 + ## 0.6.0 ### Minor Changes diff --git a/packages/core-plugin-api/package.json b/packages/core-plugin-api/package.json index b4b94fbe7e..dc4c884684 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": "0.6.0", + "version": "0.6.1", "private": false, "publishConfig": { "access": "public", @@ -33,9 +33,9 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/config": "^0.1.13", - "@backstage/types": "^0.1.1", - "@backstage/version-bridge": "^0.1.1", + "@backstage/config": "^0.1.14", + "@backstage/types": "^0.1.2", + "@backstage/version-bridge": "^0.1.2", "history": "^5.0.0", "prop-types": "^15.7.2", "react-router-dom": "6.0.0-beta.0", @@ -46,9 +46,9 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.13.2-next.0", - "@backstage/core-app-api": "^0.5.2-next.0", - "@backstage/test-utils": "^0.2.4-next.0", + "@backstage/cli": "^0.14.0", + "@backstage/core-app-api": "^0.5.3", + "@backstage/test-utils": "^0.2.5", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^11.2.5", "@testing-library/react-hooks": "^7.0.2", diff --git a/packages/create-app/CHANGELOG.md b/packages/create-app/CHANGELOG.md index 886d873740..b57d02daae 100644 --- a/packages/create-app/CHANGELOG.md +++ b/packages/create-app/CHANGELOG.md @@ -1,5 +1,34 @@ # @backstage/create-app +## 0.4.20 + +### Patch Changes + +- e725bb812f: Remove SearchContextProvider from `` + + The `SidebarSearchModal` exported from `plugin-search` internally renders `SearchContextProvider`, so it can be removed from `Root.tsx`: + + ```diff + -import { + - SidebarSearchModal, + - SearchContextProvider, + -} from '@backstage/plugin-search'; + +import { SidebarSearchModal } from '@backstage/plugin-search'; + + ... omitted ... + + } to="/search"> + - + - + - + + + + ``` + +- c77c5c7eb6: Added `backstage.role` to `package.json` +- Updated dependencies + - @backstage/cli-common@0.1.7 + ## 0.4.19 ### Patch Changes diff --git a/packages/create-app/package.json b/packages/create-app/package.json index fc1ccc1803..158060f2e8 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.19", + "version": "0.4.20", "private": false, "publishConfig": { "access": "public" @@ -33,7 +33,7 @@ "start": "nodemon --" }, "dependencies": { - "@backstage/cli-common": "^0.1.6", + "@backstage/cli-common": "^0.1.7", "chalk": "^4.0.0", "commander": "^6.1.0", "fs-extra": "9.1.0", diff --git a/packages/dev-utils/CHANGELOG.md b/packages/dev-utils/CHANGELOG.md index 8061f5fb98..e573a150d0 100644 --- a/packages/dev-utils/CHANGELOG.md +++ b/packages/dev-utils/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/dev-utils +## 0.2.22 + +### Patch Changes + +- c77c5c7eb6: Added `backstage.role` to `package.json` +- Updated dependencies + - @backstage/core-app-api@0.5.3 + - @backstage/core-components@0.8.9 + - @backstage/core-plugin-api@0.6.1 + - @backstage/integration-react@0.1.22 + - @backstage/test-utils@0.2.5 + - @backstage/plugin-catalog-react@0.6.15 + - @backstage/app-defaults@0.1.8 + - @backstage/catalog-model@0.10.0 + - @backstage/theme@0.2.15 + ## 0.2.21 ### Patch Changes diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 40f6eef595..d9546b7f47 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": "0.2.21", + "version": "0.2.22", "private": false, "publishConfig": { "access": "public", @@ -33,15 +33,15 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/app-defaults": "^0.1.7", - "@backstage/core-app-api": "^0.5.2", - "@backstage/core-components": "^0.8.8", - "@backstage/core-plugin-api": "^0.6.0", - "@backstage/catalog-model": "^0.9.10", - "@backstage/integration-react": "^0.1.21", - "@backstage/plugin-catalog-react": "^0.6.14", - "@backstage/test-utils": "^0.2.4", - "@backstage/theme": "^0.2.14", + "@backstage/app-defaults": "^0.1.8", + "@backstage/core-app-api": "^0.5.3", + "@backstage/core-components": "^0.8.9", + "@backstage/core-plugin-api": "^0.6.1", + "@backstage/catalog-model": "^0.10.0", + "@backstage/integration-react": "^0.1.22", + "@backstage/plugin-catalog-react": "^0.6.15", + "@backstage/test-utils": "^0.2.5", + "@backstage/theme": "^0.2.15", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@testing-library/jest-dom": "^5.10.1", @@ -59,7 +59,7 @@ "react-dom": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.13.2", + "@backstage/cli": "^0.14.0", "@types/jest": "^26.0.7", "@types/node": "^14.14.32" }, diff --git a/packages/errors/CHANGELOG.md b/packages/errors/CHANGELOG.md index 110863d347..ee66c6ae79 100644 --- a/packages/errors/CHANGELOG.md +++ b/packages/errors/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/errors +## 0.2.1 + +### Patch Changes + +- 1ed305728b: Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5 +- c77c5c7eb6: Added `backstage.role` to `package.json` +- Updated dependencies + - @backstage/types@0.1.2 + ## 0.2.0 ### Minor Changes diff --git a/packages/errors/package.json b/packages/errors/package.json index 17d32d7cd9..7c284f04cc 100644 --- a/packages/errors/package.json +++ b/packages/errors/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/errors", "description": "Common utilities for error handling within Backstage", - "version": "0.2.0", + "version": "0.2.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -33,12 +33,12 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/types": "^0.1.1", + "@backstage/types": "^0.1.2", "cross-fetch": "^3.1.5", "serialize-error": "^8.0.1" }, "devDependencies": { - "@backstage/cli": "^0.13.2-next.0", + "@backstage/cli": "^0.14.0", "@types/jest": "^26.0.7" }, "files": [ diff --git a/packages/integration-react/CHANGELOG.md b/packages/integration-react/CHANGELOG.md index ec0457dc1e..ed1b964816 100644 --- a/packages/integration-react/CHANGELOG.md +++ b/packages/integration-react/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/integration-react +## 0.1.22 + +### Patch Changes + +- 1ed305728b: Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5 +- c77c5c7eb6: Added `backstage.role` to `package.json` +- f0e2f7a56a: Updated the `ScmAuth` error message for missing provider configurations to link to `ScmAuthApi` setup documentation. +- Updated dependencies + - @backstage/core-components@0.8.9 + - @backstage/core-plugin-api@0.6.1 + - @backstage/integration@0.7.3 + - @backstage/config@0.1.14 + - @backstage/theme@0.2.15 + ## 0.1.21 ### Patch Changes diff --git a/packages/integration-react/package.json b/packages/integration-react/package.json index ce7c402c77..a21d72f334 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": "0.1.21", + "version": "0.1.22", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -24,11 +24,11 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/config": "^0.1.13", - "@backstage/core-components": "^0.8.8", - "@backstage/core-plugin-api": "^0.6.0", - "@backstage/integration": "^0.7.2", - "@backstage/theme": "^0.2.14", + "@backstage/config": "^0.1.14", + "@backstage/core-components": "^0.8.9", + "@backstage/core-plugin-api": "^0.6.1", + "@backstage/integration": "^0.7.3", + "@backstage/theme": "^0.2.15", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -38,9 +38,9 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.13.2", - "@backstage/dev-utils": "^0.2.21", - "@backstage/test-utils": "^0.2.4", + "@backstage/cli": "^0.14.0", + "@backstage/dev-utils": "^0.2.22", + "@backstage/test-utils": "^0.2.5", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^11.2.5", "@testing-library/user-event": "^13.1.8", diff --git a/packages/integration/CHANGELOG.md b/packages/integration/CHANGELOG.md index f8f53e959b..05147977aa 100644 --- a/packages/integration/CHANGELOG.md +++ b/packages/integration/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/integration +## 0.7.3 + +### Patch Changes + +- 1ed305728b: Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5 +- c77c5c7eb6: Added `backstage.role` to `package.json` +- Updated dependencies + - @backstage/config@0.1.14 + ## 0.7.2 ### Patch Changes diff --git a/packages/integration/package.json b/packages/integration/package.json index be6a5e6a87..81087bf4b4 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": "0.7.2", + "version": "0.7.3", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -33,7 +33,7 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/config": "^0.1.13", + "@backstage/config": "^0.1.14", "cross-fetch": "^3.1.5", "git-url-parse": "^11.6.0", "@octokit/rest": "^18.5.3", @@ -42,9 +42,9 @@ "lodash": "^4.17.21" }, "devDependencies": { - "@backstage/cli": "^0.13.2-next.0", - "@backstage/config-loader": "^0.9.3", - "@backstage/test-utils": "^0.2.4-next.0", + "@backstage/cli": "^0.14.0", + "@backstage/config-loader": "^0.9.4", + "@backstage/test-utils": "^0.2.5", "@types/jest": "^26.0.7", "@types/luxon": "^2.0.4", "msw": "^0.35.0" diff --git a/packages/release-manifests/CHANGELOG.md b/packages/release-manifests/CHANGELOG.md index 61e6c45992..61113e1c76 100644 --- a/packages/release-manifests/CHANGELOG.md +++ b/packages/release-manifests/CHANGELOG.md @@ -1,5 +1,12 @@ # @backstage/release-manifests +## 0.0.2 + +### Patch Changes + +- 1ed305728b: Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5 +- c77c5c7eb6: Added `backstage.role` to `package.json` + ## 0.0.1 ### Patch Changes diff --git a/packages/release-manifests/package.json b/packages/release-manifests/package.json index a8990be2f0..7ec69a35e9 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.1", + "version": "0.0.2", "private": false, "main": "src/index.ts", "types": "src/index.ts", @@ -36,7 +36,7 @@ "cross-fetch": "^3.1.5" }, "devDependencies": { - "@backstage/test-utils": "^0.2.3", + "@backstage/test-utils": "^0.2.5", "msw": "^0.35.0", "@types/jest": "^26.0.7", "@types/node": "^14.14.32" diff --git a/packages/search-common/CHANGELOG.md b/packages/search-common/CHANGELOG.md index 4460374646..b7387cc57c 100644 --- a/packages/search-common/CHANGELOG.md +++ b/packages/search-common/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/search-common +## 0.2.3 + +### Patch Changes + +- c77c5c7eb6: Added `backstage.role` to `package.json` +- Updated dependencies + - @backstage/plugin-permission-common@0.5.0 + - @backstage/types@0.1.2 + ## 0.2.2 ### Patch Changes diff --git a/packages/search-common/package.json b/packages/search-common/package.json index d4df8921f7..cb5c55c8e2 100644 --- a/packages/search-common/package.json +++ b/packages/search-common/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/search-common", "description": "Common functionalities for Search, to be shared between various search-enabled plugins", - "version": "0.2.2", + "version": "0.2.3", "main": "src/index.ts", "types": "src/index.ts", "private": false, @@ -39,11 +39,11 @@ "url": "https://github.com/backstage/backstage/issues" }, "dependencies": { - "@backstage/types": "^0.1.1", - "@backstage/plugin-permission-common": "^0.4.0-next.0" + "@backstage/types": "^0.1.2", + "@backstage/plugin-permission-common": "^0.5.0" }, "devDependencies": { - "@backstage/cli": "^0.13.2-next.0" + "@backstage/cli": "^0.14.0" }, "jest": { "roots": [ diff --git a/packages/techdocs-cli-embedded-app/CHANGELOG.md b/packages/techdocs-cli-embedded-app/CHANGELOG.md index 38726ce10e..ddfc161ffe 100644 --- a/packages/techdocs-cli-embedded-app/CHANGELOG.md +++ b/packages/techdocs-cli-embedded-app/CHANGELOG.md @@ -1,5 +1,23 @@ # techdocs-cli-embedded-app +## 0.2.64 + +### Patch Changes + +- Updated dependencies + - @backstage/cli@0.14.0 + - @backstage/core-app-api@0.5.3 + - @backstage/core-components@0.8.9 + - @backstage/core-plugin-api@0.6.1 + - @backstage/integration-react@0.1.22 + - @backstage/test-utils@0.2.5 + - @backstage/plugin-catalog@0.8.0 + - @backstage/plugin-techdocs@0.13.4 + - @backstage/app-defaults@0.1.8 + - @backstage/catalog-model@0.10.0 + - @backstage/config@0.1.14 + - @backstage/theme@0.2.15 + ## 0.2.63 ### Patch Changes diff --git a/packages/techdocs-cli-embedded-app/package.json b/packages/techdocs-cli-embedded-app/package.json index 10b329ac80..06e8ae6f2c 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.63", + "version": "0.2.64", "private": true, "backstage": { "role": "frontend" }, "bundled": true, "dependencies": { - "@backstage/app-defaults": "^0.1.7", - "@backstage/catalog-model": "^0.9.10", - "@backstage/cli": "^0.13.2", - "@backstage/config": "^0.1.13", - "@backstage/core-app-api": "^0.5.2", - "@backstage/core-components": "^0.8.8", - "@backstage/core-plugin-api": "^0.6.0", - "@backstage/integration-react": "^0.1.21", - "@backstage/plugin-catalog": "^0.7.12", - "@backstage/plugin-techdocs": "^0.13.3", - "@backstage/test-utils": "^0.2.4", - "@backstage/theme": "^0.2.14", + "@backstage/app-defaults": "^0.1.8", + "@backstage/catalog-model": "^0.10.0", + "@backstage/cli": "^0.14.0", + "@backstage/config": "^0.1.14", + "@backstage/core-app-api": "^0.5.3", + "@backstage/core-components": "^0.8.9", + "@backstage/core-plugin-api": "^0.6.1", + "@backstage/integration-react": "^0.1.22", + "@backstage/plugin-catalog": "^0.8.0", + "@backstage/plugin-techdocs": "^0.13.4", + "@backstage/test-utils": "^0.2.5", + "@backstage/theme": "^0.2.15", "@material-ui/core": "^4.11.0", "@material-ui/icons": "^4.9.1", "history": "^5.0.0", @@ -29,7 +29,7 @@ "react-use": "^17.2.4" }, "devDependencies": { - "@backstage/cli": "^0.13.2", + "@backstage/cli": "^0.14.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^11.2.5", "@testing-library/user-event": "^13.1.8", diff --git a/packages/techdocs-cli/CHANGELOG.md b/packages/techdocs-cli/CHANGELOG.md index 98015f766a..1b877774fe 100644 --- a/packages/techdocs-cli/CHANGELOG.md +++ b/packages/techdocs-cli/CHANGELOG.md @@ -1,5 +1,17 @@ # @techdocs/cli +## 0.8.14 + +### Patch Changes + +- c77c5c7eb6: Added `backstage.role` to `package.json` +- Updated dependencies + - @backstage/backend-common@0.10.8 + - @backstage/catalog-model@0.10.0 + - @backstage/cli-common@0.1.7 + - @backstage/config@0.1.14 + - @backstage/techdocs-common@0.11.8 + ## 0.8.13 ### Patch Changes diff --git a/packages/techdocs-cli/package.json b/packages/techdocs-cli/package.json index 647ce6bdea..6ea2082388 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": "0.8.13", + "version": "0.8.14", "private": false, "publishConfig": { "access": "public" @@ -36,7 +36,7 @@ "techdocs-cli": "bin/techdocs-cli" }, "devDependencies": { - "@backstage/cli": "^0.13.2", + "@backstage/cli": "^0.14.0", "@types/commander": "^2.12.2", "@types/fs-extra": "^9.0.6", "@types/http-proxy": "^1.17.4", @@ -59,11 +59,11 @@ "ext": "ts" }, "dependencies": { - "@backstage/backend-common": "^0.10.7", - "@backstage/catalog-model": "^0.9.10", - "@backstage/cli-common": "^0.1.6", - "@backstage/config": "^0.1.13", - "@backstage/techdocs-common": "^0.11.7", + "@backstage/backend-common": "^0.10.8", + "@backstage/catalog-model": "^0.10.0", + "@backstage/cli-common": "^0.1.7", + "@backstage/config": "^0.1.14", + "@backstage/techdocs-common": "^0.11.8", "@types/dockerode": "^3.3.0", "commander": "^6.1.0", "dockerode": "^3.3.1", diff --git a/packages/techdocs-common/CHANGELOG.md b/packages/techdocs-common/CHANGELOG.md index 44fbec4171..60d992da15 100644 --- a/packages/techdocs-common/CHANGELOG.md +++ b/packages/techdocs-common/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/techdocs-common +## 0.11.8 + +### Patch Changes + +- c77c5c7eb6: Added `backstage.role` to `package.json` +- 216725b434: Updated to use new names for `parseLocationRef` and `stringifyLocationRef` +- 7aeb491394: Replace use of deprecated `ENTITY_DEFAULT_NAMESPACE` constant with `DEFAULT_NAMESPACE`. +- Updated dependencies + - @backstage/backend-common@0.10.8 + - @backstage/errors@0.2.1 + - @backstage/integration@0.7.3 + - @backstage/catalog-model@0.10.0 + - @backstage/config@0.1.14 + - @backstage/search-common@0.2.3 + ## 0.11.7 ### Patch Changes diff --git a/packages/techdocs-common/package.json b/packages/techdocs-common/package.json index fd2e34b413..f0c839b753 100644 --- a/packages/techdocs-common/package.json +++ b/packages/techdocs-common/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/techdocs-common", "description": "Common functionalities for TechDocs, to be shared between techdocs-backend plugin and techdocs-cli", - "version": "0.11.7", + "version": "0.11.8", "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.10.7", - "@backstage/catalog-model": "^0.9.10", - "@backstage/config": "^0.1.13", - "@backstage/errors": "^0.2.0", - "@backstage/search-common": "^0.2.2", - "@backstage/integration": "^0.7.2", + "@backstage/backend-common": "^0.10.8", + "@backstage/catalog-model": "^0.10.0", + "@backstage/config": "^0.1.14", + "@backstage/errors": "^0.2.1", + "@backstage/search-common": "^0.2.3", + "@backstage/integration": "^0.7.3", "@google-cloud/storage": "^5.6.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.13.2", + "@backstage/cli": "^0.14.0", "@types/fs-extra": "^9.0.5", "@types/js-yaml": "^4.0.0", "@types/mime-types": "^2.1.0", diff --git a/packages/test-utils/CHANGELOG.md b/packages/test-utils/CHANGELOG.md index 35c9ebfb35..ff170b03b6 100644 --- a/packages/test-utils/CHANGELOG.md +++ b/packages/test-utils/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/test-utils +## 0.2.5 + +### Patch Changes + +- 1ed305728b: Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5 +- c77c5c7eb6: Added `backstage.role` to `package.json` +- Updated dependencies + - @backstage/core-app-api@0.5.3 + - @backstage/core-plugin-api@0.6.1 + - @backstage/plugin-permission-common@0.5.0 + - @backstage/plugin-permission-react@0.3.1 + - @backstage/config@0.1.14 + - @backstage/theme@0.2.15 + - @backstage/types@0.1.2 + ## 0.2.4 ### Patch Changes diff --git a/packages/test-utils/package.json b/packages/test-utils/package.json index efde532268..736abb87f3 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": "0.2.4", + "version": "0.2.5", "private": false, "publishConfig": { "access": "public", @@ -33,13 +33,13 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/config": "^0.1.13", - "@backstage/core-app-api": "^0.5.2", - "@backstage/core-plugin-api": "^0.6.0", - "@backstage/plugin-permission-common": "^0.4.0", - "@backstage/plugin-permission-react": "^0.3.0", - "@backstage/theme": "^0.2.14", - "@backstage/types": "^0.1.1", + "@backstage/config": "^0.1.14", + "@backstage/core-app-api": "^0.5.3", + "@backstage/core-plugin-api": "^0.6.1", + "@backstage/plugin-permission-common": "^0.5.0", + "@backstage/plugin-permission-react": "^0.3.1", + "@backstage/theme": "^0.2.15", + "@backstage/types": "^0.1.2", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.11.2", "@testing-library/jest-dom": "^5.10.1", @@ -55,7 +55,7 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.13.2-next.0", + "@backstage/cli": "^0.14.0", "@types/jest": "^26.0.7", "@types/node": "^14.14.32", "msw": "^0.35.0" diff --git a/packages/theme/CHANGELOG.md b/packages/theme/CHANGELOG.md index cfa6ee3633..5c3e8cf5d6 100644 --- a/packages/theme/CHANGELOG.md +++ b/packages/theme/CHANGELOG.md @@ -1,5 +1,11 @@ # @backstage/theme +## 0.2.15 + +### Patch Changes + +- c77c5c7eb6: Added `backstage.role` to `package.json` + ## 0.2.14 ### Patch Changes diff --git a/packages/theme/package.json b/packages/theme/package.json index 24529d8c0d..17404e8db0 100644 --- a/packages/theme/package.json +++ b/packages/theme/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/theme", "description": "material-ui theme for use with Backstage.", - "version": "0.2.14", + "version": "0.2.15", "private": false, "publishConfig": { "access": "public", @@ -36,7 +36,7 @@ "@material-ui/core": "^4.12.2" }, "devDependencies": { - "@backstage/cli": "^0.13.2-next.0" + "@backstage/cli": "^0.14.0" }, "files": [ "dist" diff --git a/packages/types/CHANGELOG.md b/packages/types/CHANGELOG.md new file mode 100644 index 0000000000..69fd8be6ca --- /dev/null +++ b/packages/types/CHANGELOG.md @@ -0,0 +1,7 @@ +# @backstage/types + +## 0.1.2 + +### Patch Changes + +- c77c5c7eb6: Added `backstage.role` to `package.json` diff --git a/packages/types/package.json b/packages/types/package.json index 84237250b4..bc2de535a2 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/types", "description": "Common TypeScript types used within Backstage", - "version": "0.1.1", + "version": "0.1.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,7 +34,7 @@ }, "dependencies": {}, "devDependencies": { - "@backstage/cli": "^0.13.2-next.0", + "@backstage/cli": "^0.14.0", "@types/zen-observable": "^0.8.0", "zen-observable": "^0.8.15" }, diff --git a/packages/version-bridge/CHANGELOG.md b/packages/version-bridge/CHANGELOG.md index e079cd6c61..fe131f7987 100644 --- a/packages/version-bridge/CHANGELOG.md +++ b/packages/version-bridge/CHANGELOG.md @@ -1,5 +1,11 @@ # @backstage/version-bridge +## 0.1.2 + +### Patch Changes + +- c77c5c7eb6: Added `backstage.role` to `package.json` + ## 0.1.1 ### Patch Changes diff --git a/packages/version-bridge/package.json b/packages/version-bridge/package.json index cdf0858d38..485b0417cf 100644 --- a/packages/version-bridge/package.json +++ b/packages/version-bridge/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/version-bridge", "description": "Utilities used by @backstage packages to support multiple concurrent versions", - "version": "0.1.1", + "version": "0.1.2", "private": false, "publishConfig": { "access": "public", @@ -37,7 +37,7 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.13.2-next.0", + "@backstage/cli": "^0.14.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^11.2.5", "@testing-library/react-hooks": "^7.0.2" diff --git a/plugins/airbrake-backend/CHANGELOG.md b/plugins/airbrake-backend/CHANGELOG.md new file mode 100644 index 0000000000..14b22aacde --- /dev/null +++ b/plugins/airbrake-backend/CHANGELOG.md @@ -0,0 +1,13 @@ +# @backstage/plugin-airbrake-backend + +## 0.1.0 + +### Minor Changes + +- a5aebe3e30: Created the Airbrake backend plugin that proxies requests to the Airbrake API + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.10.8 + - @backstage/config@0.1.14 diff --git a/plugins/airbrake-backend/package.json b/plugins/airbrake-backend/package.json index 0e94e6d998..f24ae2931d 100644 --- a/plugins/airbrake-backend/package.json +++ b/plugins/airbrake-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-airbrake-backend", - "version": "0.0.0", + "version": "0.1.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -19,8 +19,8 @@ "clean": "backstage-cli clean" }, "dependencies": { - "@backstage/backend-common": "^0.10.7", - "@backstage/config": "^0.1.13", + "@backstage/backend-common": "^0.10.8", + "@backstage/config": "^0.1.14", "@types/express": "*", "express": "^4.17.1", "express-promise-router": "^4.1.0", @@ -30,7 +30,7 @@ "yn": "^4.0.0" }, "devDependencies": { - "@backstage/cli": "^0.13.2", + "@backstage/cli": "^0.14.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 df784d0030..b5f6c14d81 100644 --- a/plugins/airbrake/CHANGELOG.md +++ b/plugins/airbrake/CHANGELOG.md @@ -1,5 +1,24 @@ # @backstage/plugin-airbrake +## 0.2.0 + +### Minor Changes + +- 9e505d20a3: API connectivity has added, but currently will only work by running it standalone on a browser with CORS disabled. + +### Patch Changes + +- 1ed305728b: Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5 +- c77c5c7eb6: Added `backstage.role` to `package.json` +- Updated dependencies + - @backstage/core-components@0.8.9 + - @backstage/core-plugin-api@0.6.1 + - @backstage/test-utils@0.2.5 + - @backstage/plugin-catalog-react@0.6.15 + - @backstage/catalog-model@0.10.0 + - @backstage/dev-utils@0.2.22 + - @backstage/theme@0.2.15 + ## 0.1.3 ### Patch Changes diff --git a/plugins/airbrake/package.json b/plugins/airbrake/package.json index 40735c91ca..1912e59f66 100644 --- a/plugins/airbrake/package.json +++ b/plugins/airbrake/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-airbrake", - "version": "0.1.3", + "version": "0.2.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -23,13 +23,13 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^0.9.10", - "@backstage/core-components": "^0.8.8", - "@backstage/core-plugin-api": "^0.6.0", - "@backstage/dev-utils": "^0.2.21", - "@backstage/plugin-catalog-react": "^0.6.14", - "@backstage/test-utils": "^0.2.4", - "@backstage/theme": "^0.2.14", + "@backstage/catalog-model": "^0.10.0", + "@backstage/core-components": "^0.8.9", + "@backstage/core-plugin-api": "^0.6.1", + "@backstage/dev-utils": "^0.2.22", + "@backstage/plugin-catalog-react": "^0.6.15", + "@backstage/test-utils": "^0.2.5", + "@backstage/theme": "^0.2.15", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -40,11 +40,11 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/app-defaults": "^0.1.7", - "@backstage/cli": "^0.13.2", - "@backstage/core-app-api": "^0.5.2", - "@backstage/dev-utils": "^0.2.21", - "@backstage/test-utils": "^0.2.4", + "@backstage/app-defaults": "^0.1.8", + "@backstage/cli": "^0.14.0", + "@backstage/core-app-api": "^0.5.3", + "@backstage/dev-utils": "^0.2.22", + "@backstage/test-utils": "^0.2.5", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^11.2.5", "@testing-library/user-event": "^13.1.8", diff --git a/plugins/allure/CHANGELOG.md b/plugins/allure/CHANGELOG.md index 9f5d2cc730..981e120a7a 100644 --- a/plugins/allure/CHANGELOG.md +++ b/plugins/allure/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-allure +## 0.1.15 + +### Patch Changes + +- 1ed305728b: Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5 +- c77c5c7eb6: Added `backstage.role` to `package.json` +- Updated dependencies + - @backstage/core-components@0.8.9 + - @backstage/core-plugin-api@0.6.1 + - @backstage/plugin-catalog-react@0.6.15 + - @backstage/catalog-model@0.10.0 + - @backstage/theme@0.2.15 + ## 0.1.14 ### Patch Changes diff --git a/plugins/allure/package.json b/plugins/allure/package.json index 767d4c5cf1..089b58e820 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.14", + "version": "0.1.15", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -25,11 +25,11 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^0.9.10", - "@backstage/core-components": "^0.8.8", - "@backstage/core-plugin-api": "^0.6.0", - "@backstage/plugin-catalog-react": "^0.6.14", - "@backstage/theme": "^0.2.14", + "@backstage/catalog-model": "^0.10.0", + "@backstage/core-components": "^0.8.9", + "@backstage/core-plugin-api": "^0.6.1", + "@backstage/plugin-catalog-react": "^0.6.15", + "@backstage/theme": "^0.2.15", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -40,10 +40,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.13.2", - "@backstage/core-app-api": "^0.5.2", - "@backstage/dev-utils": "^0.2.21", - "@backstage/test-utils": "^0.2.4", + "@backstage/cli": "^0.14.0", + "@backstage/core-app-api": "^0.5.3", + "@backstage/dev-utils": "^0.2.22", + "@backstage/test-utils": "^0.2.5", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^11.2.5", "@testing-library/user-event": "^13.1.8", diff --git a/plugins/analytics-module-ga/CHANGELOG.md b/plugins/analytics-module-ga/CHANGELOG.md index e24ea89a0a..a365bf98a0 100644 --- a/plugins/analytics-module-ga/CHANGELOG.md +++ b/plugins/analytics-module-ga/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-analytics-module-ga +## 0.1.10 + +### Patch Changes + +- 1ed305728b: Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5 +- c77c5c7eb6: Added `backstage.role` to `package.json` +- Updated dependencies + - @backstage/core-components@0.8.9 + - @backstage/core-plugin-api@0.6.1 + - @backstage/config@0.1.14 + - @backstage/theme@0.2.15 + ## 0.1.9 ### Patch Changes diff --git a/plugins/analytics-module-ga/package.json b/plugins/analytics-module-ga/package.json index c82ad9eefc..56f2d26615 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.9", + "version": "0.1.10", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -24,10 +24,10 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/config": "^0.1.13", - "@backstage/core-components": "^0.8.8", - "@backstage/core-plugin-api": "^0.6.0", - "@backstage/theme": "^0.2.14", + "@backstage/config": "^0.1.14", + "@backstage/core-components": "^0.8.9", + "@backstage/core-plugin-api": "^0.6.1", + "@backstage/theme": "^0.2.15", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -38,10 +38,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.13.2", - "@backstage/core-app-api": "^0.5.2", - "@backstage/dev-utils": "^0.2.21", - "@backstage/test-utils": "^0.2.4", + "@backstage/cli": "^0.14.0", + "@backstage/core-app-api": "^0.5.3", + "@backstage/dev-utils": "^0.2.22", + "@backstage/test-utils": "^0.2.5", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^11.2.5", "@testing-library/user-event": "^13.1.8", diff --git a/plugins/apache-airflow/CHANGELOG.md b/plugins/apache-airflow/CHANGELOG.md index 03bef4543a..ae4ebeff84 100644 --- a/plugins/apache-airflow/CHANGELOG.md +++ b/plugins/apache-airflow/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-apache-airflow +## 0.1.7 + +### Patch Changes + +- 1ed305728b: Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5 +- c77c5c7eb6: Added `backstage.role` to `package.json` +- Updated dependencies + - @backstage/core-components@0.8.9 + - @backstage/core-plugin-api@0.6.1 + ## 0.1.6 ### Patch Changes diff --git a/plugins/apache-airflow/package.json b/plugins/apache-airflow/package.json index 7f740efcf5..061f375540 100644 --- a/plugins/apache-airflow/package.json +++ b/plugins/apache-airflow/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-apache-airflow", - "version": "0.1.6", + "version": "0.1.7", "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.8.8", - "@backstage/core-plugin-api": "^0.6.0", + "@backstage/core-components": "^0.8.9", + "@backstage/core-plugin-api": "^0.6.1", "@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.13.2", - "@backstage/core-app-api": "^0.5.2", - "@backstage/dev-utils": "^0.2.21", - "@backstage/test-utils": "^0.2.4", + "@backstage/cli": "^0.14.0", + "@backstage/core-app-api": "^0.5.3", + "@backstage/dev-utils": "^0.2.22", + "@backstage/test-utils": "^0.2.5", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^11.2.5", "@testing-library/user-event": "^13.1.8", diff --git a/plugins/api-docs/CHANGELOG.md b/plugins/api-docs/CHANGELOG.md index 73de279056..1de39bc9b8 100644 --- a/plugins/api-docs/CHANGELOG.md +++ b/plugins/api-docs/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/plugin-api-docs +## 0.7.3 + +### Patch Changes + +- 1ed305728b: Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5 +- c77c5c7eb6: Added `backstage.role` to `package.json` +- deaf6065db: Adapt to the new `CatalogApi.getLocationByRef` +- Updated dependencies + - @backstage/core-components@0.8.9 + - @backstage/core-plugin-api@0.6.1 + - @backstage/plugin-catalog@0.8.0 + - @backstage/plugin-catalog-react@0.6.15 + - @backstage/catalog-model@0.10.0 + - @backstage/theme@0.2.15 + ## 0.7.2 ### Patch Changes diff --git a/plugins/api-docs/package.json b/plugins/api-docs/package.json index 7a0d04e85c..7c61c65423 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.7.2", + "version": "0.7.3", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,12 +34,12 @@ }, "dependencies": { "@asyncapi/react-component": "1.0.0-next.32", - "@backstage/catalog-model": "^0.9.10", - "@backstage/core-components": "^0.8.8", - "@backstage/core-plugin-api": "^0.6.0", - "@backstage/plugin-catalog": "^0.7.12", - "@backstage/plugin-catalog-react": "^0.6.14", - "@backstage/theme": "^0.2.14", + "@backstage/catalog-model": "^0.10.0", + "@backstage/core-components": "^0.8.9", + "@backstage/core-plugin-api": "^0.6.1", + "@backstage/plugin-catalog": "^0.8.0", + "@backstage/plugin-catalog-react": "^0.6.15", + "@backstage/theme": "^0.2.15", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -56,10 +56,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.13.2", - "@backstage/core-app-api": "^0.5.2", - "@backstage/dev-utils": "^0.2.21", - "@backstage/test-utils": "^0.2.4", + "@backstage/cli": "^0.14.0", + "@backstage/core-app-api": "^0.5.3", + "@backstage/dev-utils": "^0.2.22", + "@backstage/test-utils": "^0.2.5", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^11.2.5", "@testing-library/user-event": "^13.1.8", diff --git a/plugins/app-backend/CHANGELOG.md b/plugins/app-backend/CHANGELOG.md index 882979326e..23569e92e6 100644 --- a/plugins/app-backend/CHANGELOG.md +++ b/plugins/app-backend/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-app-backend +## 0.3.25 + +### Patch Changes + +- c77c5c7eb6: Added `backstage.role` to `package.json` +- 0107c9aa08: chore(deps): bump `helmet` from 4.4.1 to 5.0.2 +- Updated dependencies + - @backstage/backend-common@0.10.8 + - @backstage/config-loader@0.9.4 + - @backstage/config@0.1.14 + - @backstage/types@0.1.2 + ## 0.3.24 ### Patch Changes diff --git a/plugins/app-backend/package.json b/plugins/app-backend/package.json index 8821171df4..908d2cff13 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.24", + "version": "0.3.25", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -33,10 +33,10 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.10.7", - "@backstage/config-loader": "^0.9.3", - "@backstage/config": "^0.1.13", - "@backstage/types": "^0.1.1", + "@backstage/backend-common": "^0.10.8", + "@backstage/config-loader": "^0.9.4", + "@backstage/config": "^0.1.14", + "@backstage/types": "^0.1.2", "@types/express": "^4.17.6", "globby": "^11.0.0", "express": "^4.17.1", @@ -50,9 +50,9 @@ "yn": "^4.0.0" }, "devDependencies": { - "@backstage/backend-test-utils": "^0.1.17", - "@backstage/cli": "^0.13.2", - "@backstage/types": "^0.1.1", + "@backstage/backend-test-utils": "^0.1.18", + "@backstage/cli": "^0.14.0", + "@backstage/types": "^0.1.2", "@types/supertest": "^2.0.8", "mock-fs": "^5.1.0", "msw": "^0.35.0", diff --git a/plugins/auth-backend/CHANGELOG.md b/plugins/auth-backend/CHANGELOG.md index a19153c4e9..7cffd17a16 100644 --- a/plugins/auth-backend/CHANGELOG.md +++ b/plugins/auth-backend/CHANGELOG.md @@ -1,5 +1,24 @@ # @backstage/plugin-auth-backend +## 0.10.1 + +### Patch Changes + +- 1ed305728b: Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5 +- c77c5c7eb6: Added `backstage.role` to `package.json` +- a31559d1f5: Bump `passport-oauth2` to version 1.6.1 +- deaf6065db: Adapt to the new `CatalogApi.getLocationByRef` +- 1433045c08: Removed unused `helmet` dependency. +- 7aeb491394: Replace use of deprecated `ENTITY_DEFAULT_NAMESPACE` constant with `DEFAULT_NAMESPACE`. +- Updated dependencies + - @backstage/backend-common@0.10.8 + - @backstage/catalog-client@0.7.0 + - @backstage/errors@0.2.1 + - @backstage/plugin-auth-node@0.1.1 + - @backstage/catalog-model@0.10.0 + - @backstage/config@0.1.14 + - @backstage/types@0.1.2 + ## 0.10.0 ### Minor Changes diff --git a/plugins/auth-backend/package.json b/plugins/auth-backend/package.json index 422683a09e..3b2946d89a 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.10.0", + "version": "0.10.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -33,13 +33,13 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/plugin-auth-node": "^0.1.0", - "@backstage/backend-common": "^0.10.7", - "@backstage/catalog-client": "^0.6.0", - "@backstage/catalog-model": "^0.9.10", - "@backstage/config": "^0.1.13", - "@backstage/errors": "^0.2.0", - "@backstage/types": "^0.1.1", + "@backstage/plugin-auth-node": "^0.1.1", + "@backstage/backend-common": "^0.10.8", + "@backstage/catalog-client": "^0.7.0", + "@backstage/catalog-model": "^0.10.0", + "@backstage/config": "^0.1.14", + "@backstage/errors": "^0.2.1", + "@backstage/types": "^0.1.2", "@google-cloud/firestore": "^5.0.2", "@types/express": "^4.17.6", "@types/passport": "^1.0.3", @@ -76,8 +76,8 @@ "yn": "^4.0.0" }, "devDependencies": { - "@backstage/cli": "^0.13.2", - "@backstage/test-utils": "^0.2.4", + "@backstage/cli": "^0.14.0", + "@backstage/test-utils": "^0.2.5", "@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 a5103ea034..cda05852f2 100644 --- a/plugins/auth-node/CHANGELOG.md +++ b/plugins/auth-node/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-auth-node +## 0.1.1 + +### Patch Changes + +- 1ed305728b: Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5 +- c77c5c7eb6: Added `backstage.role` to `package.json` +- Updated dependencies + - @backstage/backend-common@0.10.8 + - @backstage/errors@0.2.1 + - @backstage/catalog-model@0.10.0 + - @backstage/config@0.1.14 + ## 0.1.0 ### Minor Changes diff --git a/plugins/auth-node/package.json b/plugins/auth-node/package.json index 83b4a45d71..435ff21fed 100644 --- a/plugins/auth-node/package.json +++ b/plugins/auth-node/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-auth-node", - "version": "0.1.0", + "version": "0.1.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -23,16 +23,16 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/backend-common": "^0.10.7", - "@backstage/catalog-model": "^0.9.10", - "@backstage/config": "^0.1.13", - "@backstage/errors": "^0.2.0", + "@backstage/backend-common": "^0.10.8", + "@backstage/catalog-model": "^0.10.0", + "@backstage/config": "^0.1.14", + "@backstage/errors": "^0.2.1", "jose": "^1.27.1", "node-fetch": "^2.6.7", "winston": "^3.2.1" }, "devDependencies": { - "@backstage/cli": "^0.13.2", + "@backstage/cli": "^0.14.0", "msw": "^0.35.0", "uuid": "^8.0.0" }, diff --git a/plugins/azure-devops-backend/CHANGELOG.md b/plugins/azure-devops-backend/CHANGELOG.md index 0b44be4e13..ce08ae347f 100644 --- a/plugins/azure-devops-backend/CHANGELOG.md +++ b/plugins/azure-devops-backend/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-azure-devops-backend +## 0.3.4 + +### Patch Changes + +- c77c5c7eb6: Added `backstage.role` to `package.json` +- Updated dependencies + - @backstage/backend-common@0.10.8 + - @backstage/config@0.1.14 + - @backstage/plugin-azure-devops-common@0.2.1 + ## 0.3.3 ### Patch Changes diff --git a/plugins/azure-devops-backend/package.json b/plugins/azure-devops-backend/package.json index 1264cbe069..a716613c01 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.3", + "version": "0.3.4", "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.10.7", - "@backstage/config": "^0.1.13", - "@backstage/plugin-azure-devops-common": "^0.2.0", + "@backstage/backend-common": "^0.10.8", + "@backstage/config": "^0.1.14", + "@backstage/plugin-azure-devops-common": "^0.2.1", "@types/express": "^4.17.6", "azure-devops-node-api": "^11.0.1", "express": "^4.17.1", @@ -35,7 +35,7 @@ "yn": "^4.0.0" }, "devDependencies": { - "@backstage/cli": "^0.13.2", + "@backstage/cli": "^0.14.0", "@types/supertest": "^2.0.8", "supertest": "^6.1.6", "msw": "^0.35.0" diff --git a/plugins/azure-devops-common/CHANGELOG.md b/plugins/azure-devops-common/CHANGELOG.md index 74129ea19e..b1fb38c44b 100644 --- a/plugins/azure-devops-common/CHANGELOG.md +++ b/plugins/azure-devops-common/CHANGELOG.md @@ -1,5 +1,11 @@ # @backstage/plugin-azure-devops-common +## 0.2.1 + +### Patch Changes + +- c77c5c7eb6: Added `backstage.role` to `package.json` + ## 0.2.0 ### Minor Changes diff --git a/plugins/azure-devops-common/package.json b/plugins/azure-devops-common/package.json index fa1bb87d16..1e7b0eaa18 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.0", + "version": "0.2.1", "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.13.2-next.0" + "@backstage/cli": "^0.14.0" }, "files": [ "dist" diff --git a/plugins/azure-devops/CHANGELOG.md b/plugins/azure-devops/CHANGELOG.md index 8b0331e75d..321c418b42 100644 --- a/plugins/azure-devops/CHANGELOG.md +++ b/plugins/azure-devops/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/plugin-azure-devops +## 0.1.15 + +### Patch Changes + +- 1ed305728b: Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5 +- c77c5c7eb6: Added `backstage.role` to `package.json` +- Updated dependencies + - @backstage/core-components@0.8.9 + - @backstage/core-plugin-api@0.6.1 + - @backstage/errors@0.2.1 + - @backstage/plugin-catalog-react@0.6.15 + - @backstage/catalog-model@0.10.0 + - @backstage/theme@0.2.15 + - @backstage/plugin-azure-devops-common@0.2.1 + ## 0.1.14 ### Patch Changes diff --git a/plugins/azure-devops/package.json b/plugins/azure-devops/package.json index 8aa97a85ab..d72eb4dd23 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.14", + "version": "0.1.15", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -30,13 +30,13 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^0.9.10", - "@backstage/core-components": "^0.8.8", - "@backstage/core-plugin-api": "^0.6.0", - "@backstage/errors": "^0.2.0", - "@backstage/plugin-azure-devops-common": "^0.2.0", - "@backstage/plugin-catalog-react": "^0.6.14", - "@backstage/theme": "^0.2.14", + "@backstage/catalog-model": "^0.10.0", + "@backstage/core-components": "^0.8.9", + "@backstage/core-plugin-api": "^0.6.1", + "@backstage/errors": "^0.2.1", + "@backstage/plugin-azure-devops-common": "^0.2.1", + "@backstage/plugin-catalog-react": "^0.6.15", + "@backstage/theme": "^0.2.15", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -49,10 +49,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.13.2", - "@backstage/core-app-api": "^0.5.2", - "@backstage/dev-utils": "^0.2.21", - "@backstage/test-utils": "^0.2.4", + "@backstage/cli": "^0.14.0", + "@backstage/core-app-api": "^0.5.3", + "@backstage/dev-utils": "^0.2.22", + "@backstage/test-utils": "^0.2.5", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^11.2.5", "@testing-library/user-event": "^13.1.8", diff --git a/plugins/badges-backend/CHANGELOG.md b/plugins/badges-backend/CHANGELOG.md index f025515703..d81ecdc3d5 100644 --- a/plugins/badges-backend/CHANGELOG.md +++ b/plugins/badges-backend/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-badges-backend +## 0.1.19 + +### Patch Changes + +- c77c5c7eb6: Added `backstage.role` to `package.json` +- deaf6065db: Adapt to the new `CatalogApi.getLocationByRef` +- 7aeb491394: Replace use of deprecated `ENTITY_DEFAULT_NAMESPACE` constant with `DEFAULT_NAMESPACE`. +- Updated dependencies + - @backstage/backend-common@0.10.8 + - @backstage/catalog-client@0.7.0 + - @backstage/errors@0.2.1 + - @backstage/catalog-model@0.10.0 + - @backstage/config@0.1.14 + ## 0.1.18 ### Patch Changes diff --git a/plugins/badges-backend/package.json b/plugins/badges-backend/package.json index f8b2a75a3a..635d282039 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.18", + "version": "0.1.19", "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.10.7", - "@backstage/catalog-client": "^0.6.0", - "@backstage/catalog-model": "^0.9.10", - "@backstage/config": "^0.1.13", - "@backstage/errors": "^0.2.0", + "@backstage/backend-common": "^0.10.8", + "@backstage/catalog-client": "^0.7.0", + "@backstage/catalog-model": "^0.10.0", + "@backstage/config": "^0.1.14", + "@backstage/errors": "^0.2.1", "@types/express": "^4.17.6", "badge-maker": "^3.3.0", "cors": "^2.8.5", @@ -48,7 +48,7 @@ "yn": "^4.0.0" }, "devDependencies": { - "@backstage/cli": "^0.13.2", + "@backstage/cli": "^0.14.0", "@types/supertest": "^2.0.8", "supertest": "^6.1.3" }, diff --git a/plugins/badges/CHANGELOG.md b/plugins/badges/CHANGELOG.md index 8f2a3b2e84..3666b24b9d 100644 --- a/plugins/badges/CHANGELOG.md +++ b/plugins/badges/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/plugin-badges +## 0.2.23 + +### Patch Changes + +- 1ed305728b: Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5 +- c77c5c7eb6: Added `backstage.role` to `package.json` +- 7aeb491394: Replace use of deprecated `ENTITY_DEFAULT_NAMESPACE` constant with `DEFAULT_NAMESPACE`. +- Updated dependencies + - @backstage/core-components@0.8.9 + - @backstage/core-plugin-api@0.6.1 + - @backstage/errors@0.2.1 + - @backstage/plugin-catalog-react@0.6.15 + - @backstage/catalog-model@0.10.0 + - @backstage/theme@0.2.15 + ## 0.2.22 ### Patch Changes diff --git a/plugins/badges/package.json b/plugins/badges/package.json index 5fe0eb14b8..f1b515892a 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.22", + "version": "0.2.23", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -30,12 +30,12 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^0.9.10", - "@backstage/core-components": "^0.8.8", - "@backstage/core-plugin-api": "^0.6.0", - "@backstage/errors": "^0.2.0", - "@backstage/plugin-catalog-react": "^0.6.14", - "@backstage/theme": "^0.2.14", + "@backstage/catalog-model": "^0.10.0", + "@backstage/core-components": "^0.8.9", + "@backstage/core-plugin-api": "^0.6.1", + "@backstage/errors": "^0.2.1", + "@backstage/plugin-catalog-react": "^0.6.15", + "@backstage/theme": "^0.2.15", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -46,10 +46,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.13.2", - "@backstage/core-app-api": "^0.5.2", - "@backstage/dev-utils": "^0.2.21", - "@backstage/test-utils": "^0.2.4", + "@backstage/cli": "^0.14.0", + "@backstage/core-app-api": "^0.5.3", + "@backstage/dev-utils": "^0.2.22", + "@backstage/test-utils": "^0.2.5", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^11.2.5", "@testing-library/user-event": "^13.1.8", diff --git a/plugins/bazaar-backend/CHANGELOG.md b/plugins/bazaar-backend/CHANGELOG.md index fdd63ff59b..57e40cb4de 100644 --- a/plugins/bazaar-backend/CHANGELOG.md +++ b/plugins/bazaar-backend/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-bazaar-backend +## 0.1.10 + +### Patch Changes + +- c77c5c7eb6: Added `backstage.role` to `package.json` +- Updated dependencies + - @backstage/backend-common@0.10.8 + - @backstage/backend-test-utils@0.1.18 + - @backstage/config@0.1.14 + ## 0.1.9 ### Patch Changes diff --git a/plugins/bazaar-backend/package.json b/plugins/bazaar-backend/package.json index 728a1a3ac6..22d99c651a 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.9", + "version": "0.1.10", "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.10.7", - "@backstage/backend-test-utils": "^0.1.17", - "@backstage/config": "^0.1.13", + "@backstage/backend-common": "^0.10.8", + "@backstage/backend-test-utils": "^0.1.18", + "@backstage/config": "^0.1.14", "@types/express": "^4.17.6", "express": "^4.17.1", "express-promise-router": "^4.1.0", @@ -34,7 +34,7 @@ "yn": "^4.0.0" }, "devDependencies": { - "@backstage/cli": "^0.13.2" + "@backstage/cli": "^0.14.0" }, "files": [ "dist", diff --git a/plugins/bazaar/CHANGELOG.md b/plugins/bazaar/CHANGELOG.md index 00f7605888..2ac6eb442d 100644 --- a/plugins/bazaar/CHANGELOG.md +++ b/plugins/bazaar/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/plugin-bazaar +## 0.1.14 + +### Patch Changes + +- 1ed305728b: Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5 +- c77c5c7eb6: Added `backstage.role` to `package.json` +- Updated dependencies + - @backstage/cli@0.14.0 + - @backstage/catalog-client@0.7.0 + - @backstage/core-components@0.8.9 + - @backstage/core-plugin-api@0.6.1 + - @backstage/plugin-catalog@0.8.0 + - @backstage/plugin-catalog-react@0.6.15 + - @backstage/catalog-model@0.10.0 + ## 0.1.13 ### Patch Changes diff --git a/plugins/bazaar/package.json b/plugins/bazaar/package.json index 4cc3d72db7..1c2d28fb6b 100644 --- a/plugins/bazaar/package.json +++ b/plugins/bazaar/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-bazaar", - "version": "0.1.13", + "version": "0.1.14", "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": "^0.6.0", - "@backstage/catalog-model": "^0.9.10", - "@backstage/cli": "^0.13.2", - "@backstage/core-components": "^0.8.8", - "@backstage/core-plugin-api": "^0.6.0", - "@backstage/plugin-catalog": "^0.7.12", - "@backstage/plugin-catalog-react": "^0.6.14", + "@backstage/catalog-client": "^0.7.0", + "@backstage/catalog-model": "^0.10.0", + "@backstage/cli": "^0.14.0", + "@backstage/core-components": "^0.8.9", + "@backstage/core-plugin-api": "^0.6.1", + "@backstage/plugin-catalog": "^0.8.0", + "@backstage/plugin-catalog-react": "^0.6.15", "@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.13.2", - "@backstage/dev-utils": "^0.2.21", + "@backstage/cli": "^0.14.0", + "@backstage/dev-utils": "^0.2.22", "@testing-library/jest-dom": "^5.10.1", "cross-fetch": "^3.1.5" }, diff --git a/plugins/bitrise/CHANGELOG.md b/plugins/bitrise/CHANGELOG.md index 3fc26f7da7..ab21adf45f 100644 --- a/plugins/bitrise/CHANGELOG.md +++ b/plugins/bitrise/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-bitrise +## 0.1.26 + +### Patch Changes + +- 1ed305728b: Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5 +- c77c5c7eb6: Added `backstage.role` to `package.json` +- Updated dependencies + - @backstage/core-components@0.8.9 + - @backstage/core-plugin-api@0.6.1 + - @backstage/plugin-catalog-react@0.6.15 + - @backstage/catalog-model@0.10.0 + - @backstage/theme@0.2.15 + ## 0.1.25 ### Patch Changes diff --git a/plugins/bitrise/package.json b/plugins/bitrise/package.json index 2ddada7f6b..e59ea09130 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.25", + "version": "0.1.26", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -24,11 +24,11 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^0.9.10", - "@backstage/core-components": "^0.8.8", - "@backstage/core-plugin-api": "^0.6.0", - "@backstage/plugin-catalog-react": "^0.6.14", - "@backstage/theme": "^0.2.14", + "@backstage/catalog-model": "^0.10.0", + "@backstage/core-components": "^0.8.9", + "@backstage/core-plugin-api": "^0.6.1", + "@backstage/plugin-catalog-react": "^0.6.15", + "@backstage/theme": "^0.2.15", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -43,10 +43,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.13.2", - "@backstage/core-app-api": "^0.5.2", - "@backstage/dev-utils": "^0.2.21", - "@backstage/test-utils": "^0.2.4", + "@backstage/cli": "^0.14.0", + "@backstage/core-app-api": "^0.5.3", + "@backstage/dev-utils": "^0.2.22", + "@backstage/test-utils": "^0.2.5", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^11.2.5", "@testing-library/user-event": "^13.1.8", diff --git a/plugins/catalog-backend-module-ldap/CHANGELOG.md b/plugins/catalog-backend-module-ldap/CHANGELOG.md index 55162c6003..594fb5593b 100644 --- a/plugins/catalog-backend-module-ldap/CHANGELOG.md +++ b/plugins/catalog-backend-module-ldap/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-catalog-backend-module-ldap +## 0.3.13 + +### Patch Changes + +- c77c5c7eb6: Added `backstage.role` to `package.json` +- 244d24ebc4: Import `Location` from the `@backstage/catalog-client` package. +- 27eccab216: Replaces use of deprecated catalog-model constants. +- Updated dependencies + - @backstage/plugin-catalog-backend@0.21.4 + - @backstage/errors@0.2.1 + - @backstage/catalog-model@0.10.0 + - @backstage/config@0.1.14 + - @backstage/types@0.1.2 + ## 0.3.12 ### Patch Changes diff --git a/plugins/catalog-backend-module-ldap/package.json b/plugins/catalog-backend-module-ldap/package.json index 315d04252a..ce4b9fe434 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 modules that helps integrate towards LDAP", - "version": "0.3.12", + "version": "0.3.13", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -33,18 +33,18 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/catalog-model": "^0.9.10", - "@backstage/config": "^0.1.13", - "@backstage/errors": "^0.2.0", - "@backstage/plugin-catalog-backend": "^0.21.3", - "@backstage/types": "^0.1.1", + "@backstage/catalog-model": "^0.10.0", + "@backstage/config": "^0.1.14", + "@backstage/errors": "^0.2.1", + "@backstage/plugin-catalog-backend": "^0.21.4", + "@backstage/types": "^0.1.2", "@types/ldapjs": "^2.2.0", "ldapjs": "^2.2.0", "lodash": "^4.17.21", "winston": "^3.2.1" }, "devDependencies": { - "@backstage/cli": "^0.13.2", + "@backstage/cli": "^0.14.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 847fbae9d4..cd6b717254 100644 --- a/plugins/catalog-backend-module-msgraph/CHANGELOG.md +++ b/plugins/catalog-backend-module-msgraph/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-catalog-backend-module-msgraph +## 0.2.16 + +### Patch Changes + +- 1ed305728b: Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5 +- c77c5c7eb6: Added `backstage.role` to `package.json` +- 27eccab216: Replaces use of deprecated catalog-model constants. +- Updated dependencies + - @backstage/plugin-catalog-backend@0.21.4 + - @backstage/catalog-model@0.10.0 + - @backstage/config@0.1.14 + ## 0.2.15 ### Patch Changes diff --git a/plugins/catalog-backend-module-msgraph/package.json b/plugins/catalog-backend-module-msgraph/package.json index 84bdb9599a..552547d67f 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 modules that helps integrate towards Microsoft Graph", - "version": "0.2.15", + "version": "0.2.16", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,9 +34,9 @@ }, "dependencies": { "@azure/msal-node": "^1.1.0", - "@backstage/catalog-model": "^0.9.10", - "@backstage/config": "^0.1.13", - "@backstage/plugin-catalog-backend": "^0.21.3", + "@backstage/catalog-model": "^0.10.0", + "@backstage/config": "^0.1.14", + "@backstage/plugin-catalog-backend": "^0.21.4", "@microsoft/microsoft-graph-types": "^2.6.0", "@types/node-fetch": "^2.5.12", "lodash": "^4.17.21", @@ -46,9 +46,9 @@ "qs": "^6.9.4" }, "devDependencies": { - "@backstage/backend-common": "^0.10.7", - "@backstage/cli": "^0.13.2", - "@backstage/test-utils": "^0.2.4", + "@backstage/backend-common": "^0.10.8", + "@backstage/cli": "^0.14.0", + "@backstage/test-utils": "^0.2.5", "@types/lodash": "^4.14.151", "msw": "^0.35.0" }, diff --git a/plugins/catalog-backend/CHANGELOG.md b/plugins/catalog-backend/CHANGELOG.md index a371712c80..524856d4c2 100644 --- a/plugins/catalog-backend/CHANGELOG.md +++ b/plugins/catalog-backend/CHANGELOG.md @@ -1,5 +1,45 @@ # @backstage/plugin-catalog-backend +## 0.21.4 + +### Patch Changes + +- 379da9fb1d: The following processors now properly accept an `ScmIntegrationRegistry` (an + interface) instead of an `ScmIntegrations` (which is a concrete class). + + - `AzureDevOpsDiscoveryProcessor` + - `CodeOwnersProcessor` + - `GitLabDiscoveryProcessor` + - `GithubDiscoveryProcessor` + - `GithubMultiOrgReaderProcessor` + - `GithubOrgReaderProcessor` + +- 1ed305728b: Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5 +- c77c5c7eb6: Added `backstage.role` to `package.json` +- 538ca90790: Use updated type names from `@backstage/catalog-client` +- ca1d6c1788: Support "dependencyOf" relation in Resource entities +- 244d24ebc4: Import `Location` from the `@backstage/catalog-client` package. +- e483dd6c72: Update internal `Location` validation. +- 216725b434: Updated to use new names for `parseLocationRef` and `stringifyLocationRef` +- e72d371296: Use `TemplateEntityV1beta2` from `@backstage/plugin-scaffolder-common` instead + of `@backstage/catalog-model`. +- 27eccab216: Replaces use of deprecated catalog-model constants. +- 7aeb491394: Replace use of deprecated `ENTITY_DEFAULT_NAMESPACE` constant with `DEFAULT_NAMESPACE`. +- b590e9b58d: Optimized entity provider mutations with large numbers of new additions, such as big initial startup commits +- Updated dependencies + - @backstage/plugin-scaffolder-common@0.2.0 + - @backstage/backend-common@0.10.8 + - @backstage/catalog-client@0.7.0 + - @backstage/errors@0.2.1 + - @backstage/integration@0.7.3 + - @backstage/plugin-permission-common@0.5.0 + - @backstage/catalog-model@0.10.0 + - @backstage/config@0.1.14 + - @backstage/search-common@0.2.3 + - @backstage/types@0.1.2 + - @backstage/plugin-catalog-common@0.1.3 + - @backstage/plugin-permission-node@0.5.0 + ## 0.21.3 ### Patch Changes diff --git a/plugins/catalog-backend/package.json b/plugins/catalog-backend/package.json index e4718afcd0..eb6b185861 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": "0.21.3", + "version": "0.21.4", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -33,18 +33,18 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.10.7", - "@backstage/catalog-client": "^0.6.0", - "@backstage/catalog-model": "^0.9.10", - "@backstage/config": "^0.1.13", - "@backstage/errors": "^0.2.0", - "@backstage/integration": "^0.7.2", - "@backstage/plugin-catalog-common": "^0.1.2", - "@backstage/plugin-permission-common": "^0.4.0", - "@backstage/plugin-permission-node": "^0.4.3", - "@backstage/plugin-scaffolder-common": "^0.1.3", - "@backstage/search-common": "^0.2.2", - "@backstage/types": "^0.1.1", + "@backstage/backend-common": "^0.10.8", + "@backstage/catalog-client": "^0.7.0", + "@backstage/catalog-model": "^0.10.0", + "@backstage/config": "^0.1.14", + "@backstage/errors": "^0.2.1", + "@backstage/integration": "^0.7.3", + "@backstage/plugin-catalog-common": "^0.1.3", + "@backstage/plugin-permission-common": "^0.5.0", + "@backstage/plugin-permission-node": "^0.5.0", + "@backstage/plugin-scaffolder-common": "^0.2.0", + "@backstage/search-common": "^0.2.3", + "@backstage/types": "^0.1.2", "@octokit/graphql": "^4.5.8", "@types/express": "^4.17.6", "aws-sdk": "^2.840.0", @@ -69,10 +69,10 @@ "zod": "^3.11.6" }, "devDependencies": { - "@backstage/backend-test-utils": "^0.1.17", - "@backstage/cli": "^0.13.2", - "@backstage/plugin-permission-common": "^0.4.0", - "@backstage/test-utils": "^0.2.4", + "@backstage/backend-test-utils": "^0.1.18", + "@backstage/cli": "^0.14.0", + "@backstage/plugin-permission-common": "^0.5.0", + "@backstage/test-utils": "^0.2.5", "@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 a236e55857..2f37023def 100644 --- a/plugins/catalog-common/CHANGELOG.md +++ b/plugins/catalog-common/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-catalog-common +## 0.1.3 + +### Patch Changes + +- c77c5c7eb6: Added `backstage.role` to `package.json` +- Updated dependencies + - @backstage/plugin-permission-common@0.5.0 + ## 0.1.2 ### Patch Changes diff --git a/plugins/catalog-common/package.json b/plugins/catalog-common/package.json index 5f77133215..4b95fd3524 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": "0.1.2", + "version": "0.1.3", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -33,10 +33,10 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/plugin-permission-common": "^0.4.0" + "@backstage/plugin-permission-common": "^0.5.0" }, "devDependencies": { - "@backstage/cli": "^0.13.2-next.0" + "@backstage/cli": "^0.14.0" }, "files": [ "dist" diff --git a/plugins/catalog-graph/CHANGELOG.md b/plugins/catalog-graph/CHANGELOG.md index 0bb6e7224a..19a284d2fd 100644 --- a/plugins/catalog-graph/CHANGELOG.md +++ b/plugins/catalog-graph/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/plugin-catalog-graph +## 0.2.11 + +### Patch Changes + +- c77c5c7eb6: Added `backstage.role` to `package.json` +- 538ca90790: Use updated type names from `@backstage/catalog-client` +- deaf6065db: Adapt to the new `CatalogApi.getLocationByRef` +- 7aeb491394: Replace use of deprecated `ENTITY_DEFAULT_NAMESPACE` constant with `DEFAULT_NAMESPACE`. +- Updated dependencies + - @backstage/catalog-client@0.7.0 + - @backstage/core-components@0.8.9 + - @backstage/core-plugin-api@0.6.1 + - @backstage/plugin-catalog-react@0.6.15 + - @backstage/catalog-model@0.10.0 + - @backstage/theme@0.2.15 + ## 0.2.10 ### Patch Changes diff --git a/plugins/catalog-graph/package.json b/plugins/catalog-graph/package.json index ad7161eb93..1d7d5d41fb 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.10", + "version": "0.2.11", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -24,12 +24,12 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-client": "^0.6.0", - "@backstage/catalog-model": "^0.9.10", - "@backstage/core-components": "^0.8.8", - "@backstage/core-plugin-api": "^0.6.0", - "@backstage/plugin-catalog-react": "^0.6.14", - "@backstage/theme": "^0.2.14", + "@backstage/catalog-client": "^0.7.0", + "@backstage/catalog-model": "^0.10.0", + "@backstage/core-components": "^0.8.9", + "@backstage/core-plugin-api": "^0.6.1", + "@backstage/plugin-catalog-react": "^0.6.15", + "@backstage/theme": "^0.2.15", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -45,10 +45,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.13.2", - "@backstage/core-app-api": "^0.5.2", - "@backstage/dev-utils": "^0.2.21", - "@backstage/test-utils": "^0.2.4", + "@backstage/cli": "^0.14.0", + "@backstage/core-app-api": "^0.5.3", + "@backstage/dev-utils": "^0.2.22", + "@backstage/test-utils": "^0.2.5", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^11.2.5", "@testing-library/react-hooks": "^7.0.2", diff --git a/plugins/catalog-graphql/CHANGELOG.md b/plugins/catalog-graphql/CHANGELOG.md index f2ad5d14b4..b7fbbbe207 100644 --- a/plugins/catalog-graphql/CHANGELOG.md +++ b/plugins/catalog-graphql/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-catalog-graphql +## 0.3.2 + +### Patch Changes + +- 1ed305728b: Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5 +- c77c5c7eb6: Added `backstage.role` to `package.json` +- Updated dependencies + - @backstage/catalog-model@0.10.0 + - @backstage/config@0.1.14 + - @backstage/types@0.1.2 + ## 0.3.1 ### Patch Changes diff --git a/plugins/catalog-graphql/package.json b/plugins/catalog-graphql/package.json index a1920b76a3..2d2dc5d1e5 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.1", + "version": "0.3.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,9 +34,9 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^0.9.10", - "@backstage/config": "^0.1.13", - "@backstage/types": "^0.1.1", + "@backstage/catalog-model": "^0.10.0", + "@backstage/config": "^0.1.14", + "@backstage/types": "^0.1.2", "graphql-modules": "^1.0.0", "apollo-server": "^3.0.0", "graphql": "^16.0.0", @@ -46,8 +46,8 @@ "winston": "^3.2.1" }, "devDependencies": { - "@backstage/cli": "^0.13.2-next.0", - "@backstage/test-utils": "^0.2.4-next.0", + "@backstage/cli": "^0.14.0", + "@backstage/test-utils": "^0.2.5", "@graphql-codegen/cli": "^2.3.1", "@graphql-codegen/typescript": "^2.4.2", "@graphql-codegen/typescript-resolvers": "^2.4.3", diff --git a/plugins/catalog-import/CHANGELOG.md b/plugins/catalog-import/CHANGELOG.md index 8c86fd4ca2..25d6cc143f 100644 --- a/plugins/catalog-import/CHANGELOG.md +++ b/plugins/catalog-import/CHANGELOG.md @@ -1,5 +1,23 @@ # @backstage/plugin-catalog-import +## 0.8.2 + +### Patch Changes + +- 1ed305728b: Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5 +- c77c5c7eb6: Added `backstage.role` to `package.json` +- deaf6065db: Adapt to the new `CatalogApi.getLocationByRef` +- Updated dependencies + - @backstage/catalog-client@0.7.0 + - @backstage/core-components@0.8.9 + - @backstage/core-plugin-api@0.6.1 + - @backstage/errors@0.2.1 + - @backstage/integration@0.7.3 + - @backstage/integration-react@0.1.22 + - @backstage/plugin-catalog-react@0.6.15 + - @backstage/catalog-model@0.10.0 + - @backstage/config@0.1.14 + ## 0.8.1 ### Patch Changes diff --git a/plugins/catalog-import/package.json b/plugins/catalog-import/package.json index 1e62395e64..79bf9868db 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.1", + "version": "0.8.2", "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": "^0.6.0", - "@backstage/catalog-model": "^0.9.10", - "@backstage/core-components": "^0.8.8", - "@backstage/config": "^0.1.13", - "@backstage/core-plugin-api": "^0.6.0", - "@backstage/errors": "^0.2.0", - "@backstage/integration": "^0.7.2", - "@backstage/integration-react": "^0.1.21", - "@backstage/plugin-catalog-react": "^0.6.14", + "@backstage/catalog-client": "^0.7.0", + "@backstage/catalog-model": "^0.10.0", + "@backstage/core-components": "^0.8.9", + "@backstage/config": "^0.1.14", + "@backstage/core-plugin-api": "^0.6.1", + "@backstage/errors": "^0.2.1", + "@backstage/integration": "^0.7.3", + "@backstage/integration-react": "^0.1.22", + "@backstage/plugin-catalog-react": "^0.6.15", "@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.13.2", - "@backstage/core-app-api": "^0.5.2", - "@backstage/dev-utils": "^0.2.21", - "@backstage/test-utils": "^0.2.4", + "@backstage/cli": "^0.14.0", + "@backstage/core-app-api": "^0.5.3", + "@backstage/dev-utils": "^0.2.22", + "@backstage/test-utils": "^0.2.5", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^11.2.5", "@testing-library/react-hooks": "^7.0.2", diff --git a/plugins/catalog-react/CHANGELOG.md b/plugins/catalog-react/CHANGELOG.md index 65fd275389..fa59393bd9 100644 --- a/plugins/catalog-react/CHANGELOG.md +++ b/plugins/catalog-react/CHANGELOG.md @@ -1,5 +1,33 @@ # @backstage/plugin-catalog-react +## 0.6.15 + +### Patch Changes + +- 1ed305728b: Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5 +- c77c5c7eb6: Added `backstage.role` to `package.json` +- 538ca90790: Use updated type names from `@backstage/catalog-client` +- edbc03814a: Replace usage of `serializeEntityRef` with `stringifyEntityRef` +- 244d24ebc4: Import `Location` from the `@backstage/catalog-client` package. +- deaf6065db: Adapt to the new `CatalogApi.getLocationByRef` +- 216725b434: Updated to use new names for `parseLocationRef` and `stringifyLocationRef` +- e72d371296: Use `TemplateEntityV1beta2` from `@backstage/plugin-scaffolder-common` instead + of `@backstage/catalog-model`. +- 98d1aa1ea1: Fix CatalogPage showing all components when owned filter was pre-selected +- 27eccab216: Replaces use of deprecated catalog-model constants. +- 7aeb491394: Replace use of deprecated `ENTITY_DEFAULT_NAMESPACE` constant with `DEFAULT_NAMESPACE`. +- Updated dependencies + - @backstage/catalog-client@0.7.0 + - @backstage/core-components@0.8.9 + - @backstage/core-plugin-api@0.6.1 + - @backstage/errors@0.2.1 + - @backstage/integration@0.7.3 + - @backstage/plugin-permission-common@0.5.0 + - @backstage/plugin-permission-react@0.3.1 + - @backstage/catalog-model@0.10.0 + - @backstage/types@0.1.2 + - @backstage/version-bridge@0.1.2 + ## 0.6.14 ### Patch Changes diff --git a/plugins/catalog-react/package.json b/plugins/catalog-react/package.json index 967ad8ba0b..db9e01e593 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": "0.6.14", + "version": "0.6.15", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -33,16 +33,16 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/catalog-client": "^0.6.0", - "@backstage/catalog-model": "^0.9.10", - "@backstage/core-components": "^0.8.8", - "@backstage/core-plugin-api": "^0.6.0", - "@backstage/errors": "^0.2.0", - "@backstage/integration": "^0.7.2", - "@backstage/plugin-permission-common": "^0.4.0", - "@backstage/plugin-permission-react": "^0.3.0", - "@backstage/types": "^0.1.1", - "@backstage/version-bridge": "^0.1.1", + "@backstage/catalog-client": "^0.7.0", + "@backstage/catalog-model": "^0.10.0", + "@backstage/core-components": "^0.8.9", + "@backstage/core-plugin-api": "^0.6.1", + "@backstage/errors": "^0.2.1", + "@backstage/integration": "^0.7.3", + "@backstage/plugin-permission-common": "^0.5.0", + "@backstage/plugin-permission-react": "^0.3.1", + "@backstage/types": "^0.1.2", + "@backstage/version-bridge": "^0.1.2", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -60,11 +60,11 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.13.2", - "@backstage/core-app-api": "^0.5.2", - "@backstage/plugin-catalog-common": "^0.1.2", - "@backstage/plugin-scaffolder-common": "^0.1.3", - "@backstage/test-utils": "^0.2.4", + "@backstage/cli": "^0.14.0", + "@backstage/core-app-api": "^0.5.3", + "@backstage/plugin-catalog-common": "^0.1.3", + "@backstage/plugin-scaffolder-common": "^0.2.0", + "@backstage/test-utils": "^0.2.5", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^11.2.5", "@testing-library/react-hooks": "^7.0.2", diff --git a/plugins/catalog/CHANGELOG.md b/plugins/catalog/CHANGELOG.md index cb13e27bd0..aa0e102ab9 100644 --- a/plugins/catalog/CHANGELOG.md +++ b/plugins/catalog/CHANGELOG.md @@ -1,5 +1,40 @@ # @backstage/plugin-catalog +## 0.8.0 + +### Minor Changes + +- ae7edbea45: Removed `CatalogClientWrapper` as usage have been replaced by the `fetchApiRef`. +- 37092662cb: **BREAKING** Completely removed the `EntitySystemDiagramCard` component which was deprecated in a previous release. Any remaining references to this component are now broken and should be replaced with `EntityCatalogGraphCard`, which can be imported from package `@backstage/plugin-catalog-graph`. +- 7657eeae22: Removed deprecated `Router` and `EntityPageLayout` exports. + `Router` is replaced by plugin extensions and `EntityPageLayout` is replaced by `CatalogEntityPage`. +- 0a033351be: **BREAKING**: + + - The `CatalogResultListItem` `result` prop is now of the more narrow and correct type `IndexableDocument`, rather than `any`. + - The individual table column factories (e.g. `createNameColumn`) are now no longer available directly, but only through `CatalogTable.columns`. + +### Patch Changes + +- 1ed305728b: Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5 +- c77c5c7eb6: Added `backstage.role` to `package.json` +- 538ca90790: Use updated type names from `@backstage/catalog-client` +- 0d03e42a89: Replaced use of deprecated `compareEntityToRef` utility. +- 244d24ebc4: Import `Location` from the `@backstage/catalog-client` package. +- deaf6065db: Adapt to the new `CatalogApi.getLocationByRef` +- 27eccab216: Replaces use of deprecated catalog-model constants. +- 7aeb491394: Replace use of deprecated `ENTITY_DEFAULT_NAMESPACE` constant with `DEFAULT_NAMESPACE`. +- Updated dependencies + - @backstage/catalog-client@0.7.0 + - @backstage/core-components@0.8.9 + - @backstage/core-plugin-api@0.6.1 + - @backstage/errors@0.2.1 + - @backstage/integration-react@0.1.22 + - @backstage/plugin-catalog-react@0.6.15 + - @backstage/catalog-model@0.10.0 + - @backstage/search-common@0.2.3 + - @backstage/theme@0.2.15 + - @backstage/plugin-catalog-common@0.1.3 + ## 0.7.12 ### Patch Changes diff --git a/plugins/catalog/package.json b/plugins/catalog/package.json index f70586d4a1..e0cad23f3e 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": "0.7.12", + "version": "0.8.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": "^0.6.0", - "@backstage/catalog-model": "^0.9.10", - "@backstage/core-components": "^0.8.8", - "@backstage/core-plugin-api": "^0.6.0", - "@backstage/errors": "^0.2.0", - "@backstage/integration-react": "^0.1.21", - "@backstage/plugin-catalog-common": "^0.1.2", - "@backstage/plugin-catalog-react": "^0.6.14", - "@backstage/search-common": "^0.2.2", - "@backstage/theme": "^0.2.14", + "@backstage/catalog-client": "^0.7.0", + "@backstage/catalog-model": "^0.10.0", + "@backstage/core-components": "^0.8.9", + "@backstage/core-plugin-api": "^0.6.1", + "@backstage/errors": "^0.2.1", + "@backstage/integration-react": "^0.1.22", + "@backstage/plugin-catalog-common": "^0.1.3", + "@backstage/plugin-catalog-react": "^0.6.15", + "@backstage/search-common": "^0.2.3", + "@backstage/theme": "^0.2.15", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -58,11 +58,11 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.13.2", - "@backstage/core-app-api": "^0.5.2", - "@backstage/dev-utils": "^0.2.21", - "@backstage/plugin-permission-react": "^0.3.0", - "@backstage/test-utils": "^0.2.4", + "@backstage/cli": "^0.14.0", + "@backstage/core-app-api": "^0.5.3", + "@backstage/dev-utils": "^0.2.22", + "@backstage/plugin-permission-react": "^0.3.1", + "@backstage/test-utils": "^0.2.5", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^11.2.5", "@testing-library/user-event": "^13.1.8", diff --git a/plugins/cicd-statistics/CHANGELOG.md b/plugins/cicd-statistics/CHANGELOG.md index 7258ea0570..bf1066ff5d 100644 --- a/plugins/cicd-statistics/CHANGELOG.md +++ b/plugins/cicd-statistics/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-cicd-statistics +## 0.1.1 + +### Patch Changes + +- c77c5c7eb6: Added `backstage.role` to `package.json` +- 0b9bce831b: Updated `@backstage/core-plugin-api` dependency. +- Updated dependencies + - @backstage/core-plugin-api@0.6.1 + - @backstage/plugin-catalog-react@0.6.15 + - @backstage/catalog-model@0.10.0 + ## 0.1.0 ### Minor Changes diff --git a/plugins/cicd-statistics/package.json b/plugins/cicd-statistics/package.json index 6b9d21753d..3738db43db 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.0", + "version": "0.1.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -37,9 +37,9 @@ "@types/luxon": "^2.0.5" }, "dependencies": { - "@backstage/catalog-model": "^0.9.8", - "@backstage/core-plugin-api": "^0.6.0", - "@backstage/plugin-catalog-react": "^0.6.14", + "@backstage/catalog-model": "^0.10.0", + "@backstage/core-plugin-api": "^0.6.1", + "@backstage/plugin-catalog-react": "^0.6.15", "@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 fcd6237d70..e3bbd6c78d 100644 --- a/plugins/circleci/CHANGELOG.md +++ b/plugins/circleci/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-circleci +## 0.2.38 + +### Patch Changes + +- 1ed305728b: Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5 +- c77c5c7eb6: Added `backstage.role` to `package.json` +- Updated dependencies + - @backstage/core-components@0.8.9 + - @backstage/core-plugin-api@0.6.1 + - @backstage/plugin-catalog-react@0.6.15 + - @backstage/catalog-model@0.10.0 + - @backstage/theme@0.2.15 + ## 0.2.37 ### Patch Changes diff --git a/plugins/circleci/package.json b/plugins/circleci/package.json index 12a313219b..92db23a09f 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.2.37", + "version": "0.2.38", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -35,11 +35,11 @@ "postpack": "backstage-cli package postpack" }, "dependencies": { - "@backstage/catalog-model": "^0.9.10", - "@backstage/core-components": "^0.8.8", - "@backstage/core-plugin-api": "^0.6.0", - "@backstage/plugin-catalog-react": "^0.6.14", - "@backstage/theme": "^0.2.14", + "@backstage/catalog-model": "^0.10.0", + "@backstage/core-components": "^0.8.9", + "@backstage/core-plugin-api": "^0.6.1", + "@backstage/plugin-catalog-react": "^0.6.15", + "@backstage/theme": "^0.2.15", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -55,10 +55,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.13.2", - "@backstage/core-app-api": "^0.5.2", - "@backstage/dev-utils": "^0.2.21", - "@backstage/test-utils": "^0.2.4", + "@backstage/cli": "^0.14.0", + "@backstage/core-app-api": "^0.5.3", + "@backstage/dev-utils": "^0.2.22", + "@backstage/test-utils": "^0.2.5", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^11.2.5", "@testing-library/user-event": "^13.1.8", diff --git a/plugins/cloudbuild/CHANGELOG.md b/plugins/cloudbuild/CHANGELOG.md index 8a434df33d..cd5ec88d36 100644 --- a/plugins/cloudbuild/CHANGELOG.md +++ b/plugins/cloudbuild/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-cloudbuild +## 0.2.36 + +### Patch Changes + +- 1ed305728b: Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5 +- c77c5c7eb6: Added `backstage.role` to `package.json` +- Updated dependencies + - @backstage/core-components@0.8.9 + - @backstage/core-plugin-api@0.6.1 + - @backstage/plugin-catalog-react@0.6.15 + - @backstage/catalog-model@0.10.0 + - @backstage/theme@0.2.15 + ## 0.2.35 ### Patch Changes diff --git a/plugins/cloudbuild/package.json b/plugins/cloudbuild/package.json index 6f57c0a0a7..ed8641db50 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.2.35", + "version": "0.2.36", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,11 +34,11 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^0.9.10", - "@backstage/core-components": "^0.8.8", - "@backstage/core-plugin-api": "^0.6.0", - "@backstage/plugin-catalog-react": "^0.6.14", - "@backstage/theme": "^0.2.14", + "@backstage/catalog-model": "^0.10.0", + "@backstage/core-components": "^0.8.9", + "@backstage/core-plugin-api": "^0.6.1", + "@backstage/plugin-catalog-react": "^0.6.15", + "@backstage/theme": "^0.2.15", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -52,10 +52,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.13.2", - "@backstage/core-app-api": "^0.5.2", - "@backstage/dev-utils": "^0.2.21", - "@backstage/test-utils": "^0.2.4", + "@backstage/cli": "^0.14.0", + "@backstage/core-app-api": "^0.5.3", + "@backstage/dev-utils": "^0.2.22", + "@backstage/test-utils": "^0.2.5", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^11.2.5", "@testing-library/user-event": "^13.1.8", diff --git a/plugins/code-coverage-backend/CHANGELOG.md b/plugins/code-coverage-backend/CHANGELOG.md index 5e0bbb0c0f..8a89517eb9 100644 --- a/plugins/code-coverage-backend/CHANGELOG.md +++ b/plugins/code-coverage-backend/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-code-coverage-backend +## 0.1.23 + +### Patch Changes + +- c77c5c7eb6: Added `backstage.role` to `package.json` +- Updated dependencies + - @backstage/backend-common@0.10.8 + - @backstage/catalog-client@0.7.0 + - @backstage/errors@0.2.1 + - @backstage/integration@0.7.3 + - @backstage/catalog-model@0.10.0 + - @backstage/config@0.1.14 + ## 0.1.22 ### Patch Changes diff --git a/plugins/code-coverage-backend/package.json b/plugins/code-coverage-backend/package.json index 2148c3cddb..29e11ff2b6 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.1.22", + "version": "0.1.23", "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.10.7", - "@backstage/catalog-client": "^0.6.0", - "@backstage/catalog-model": "^0.9.10", - "@backstage/config": "^0.1.13", - "@backstage/errors": "^0.2.0", - "@backstage/integration": "^0.7.2", + "@backstage/backend-common": "^0.10.8", + "@backstage/catalog-client": "^0.7.0", + "@backstage/catalog-model": "^0.10.0", + "@backstage/config": "^0.1.14", + "@backstage/errors": "^0.2.1", + "@backstage/integration": "^0.7.3", "@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.13.2", + "@backstage/cli": "^0.14.0", "@types/express-xml-bodyparser": "^0.3.2", "@types/supertest": "^2.0.8", "msw": "^0.35.0", diff --git a/plugins/code-coverage/CHANGELOG.md b/plugins/code-coverage/CHANGELOG.md index 2fc3acda84..0d3f1ba79e 100644 --- a/plugins/code-coverage/CHANGELOG.md +++ b/plugins/code-coverage/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/plugin-code-coverage +## 0.1.26 + +### Patch Changes + +- 1ed305728b: Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5 +- c77c5c7eb6: Added `backstage.role` to `package.json` +- Updated dependencies + - @backstage/core-components@0.8.9 + - @backstage/core-plugin-api@0.6.1 + - @backstage/errors@0.2.1 + - @backstage/plugin-catalog-react@0.6.15 + - @backstage/catalog-model@0.10.0 + - @backstage/config@0.1.14 + - @backstage/theme@0.2.15 + ## 0.1.25 ### Patch Changes diff --git a/plugins/code-coverage/package.json b/plugins/code-coverage/package.json index 213e64cb3b..3e7740805e 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.1.25", + "version": "0.1.26", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -24,13 +24,13 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^0.9.10", - "@backstage/config": "^0.1.13", - "@backstage/core-components": "^0.8.8", - "@backstage/core-plugin-api": "^0.6.0", - "@backstage/errors": "^0.2.0", - "@backstage/plugin-catalog-react": "^0.6.14", - "@backstage/theme": "^0.2.14", + "@backstage/catalog-model": "^0.10.0", + "@backstage/config": "^0.1.14", + "@backstage/core-components": "^0.8.9", + "@backstage/core-plugin-api": "^0.6.1", + "@backstage/errors": "^0.2.1", + "@backstage/plugin-catalog-react": "^0.6.15", + "@backstage/theme": "^0.2.15", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -46,10 +46,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.13.2", - "@backstage/core-app-api": "^0.5.2", - "@backstage/dev-utils": "^0.2.21", - "@backstage/test-utils": "^0.2.4", + "@backstage/cli": "^0.14.0", + "@backstage/core-app-api": "^0.5.3", + "@backstage/dev-utils": "^0.2.22", + "@backstage/test-utils": "^0.2.5", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^11.2.5", "@testing-library/user-event": "^13.1.8", diff --git a/plugins/config-schema/CHANGELOG.md b/plugins/config-schema/CHANGELOG.md index a8b6f14292..237991ef8e 100644 --- a/plugins/config-schema/CHANGELOG.md +++ b/plugins/config-schema/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-config-schema +## 0.1.22 + +### Patch Changes + +- 1ed305728b: Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5 +- c77c5c7eb6: Added `backstage.role` to `package.json` +- Updated dependencies + - @backstage/core-components@0.8.9 + - @backstage/core-plugin-api@0.6.1 + - @backstage/errors@0.2.1 + - @backstage/config@0.1.14 + - @backstage/theme@0.2.15 + - @backstage/types@0.1.2 + ## 0.1.21 ### Patch Changes diff --git a/plugins/config-schema/package.json b/plugins/config-schema/package.json index 8cfe6b2a6f..88440e73d7 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.21", + "version": "0.1.22", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -24,12 +24,12 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/config": "^0.1.13", - "@backstage/core-components": "^0.8.8", - "@backstage/core-plugin-api": "^0.6.0", - "@backstage/errors": "^0.2.0", - "@backstage/theme": "^0.2.14", - "@backstage/types": "^0.1.1", + "@backstage/config": "^0.1.14", + "@backstage/core-components": "^0.8.9", + "@backstage/core-plugin-api": "^0.6.1", + "@backstage/errors": "^0.2.1", + "@backstage/theme": "^0.2.15", + "@backstage/types": "^0.1.2", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -41,10 +41,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.13.2", - "@backstage/core-app-api": "^0.5.2", - "@backstage/dev-utils": "^0.2.21", - "@backstage/test-utils": "^0.2.4", + "@backstage/cli": "^0.14.0", + "@backstage/core-app-api": "^0.5.3", + "@backstage/dev-utils": "^0.2.22", + "@backstage/test-utils": "^0.2.5", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^11.2.5", "@testing-library/user-event": "^13.1.8", diff --git a/plugins/cost-insights/CHANGELOG.md b/plugins/cost-insights/CHANGELOG.md index e1f3caf8ec..966c3a13e2 100644 --- a/plugins/cost-insights/CHANGELOG.md +++ b/plugins/cost-insights/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-cost-insights +## 0.11.21 + +### Patch Changes + +- 1ed305728b: Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5 +- c77c5c7eb6: Added `backstage.role` to `package.json` +- 7aeb491394: Replace use of deprecated `ENTITY_DEFAULT_NAMESPACE` constant with `DEFAULT_NAMESPACE`. +- Updated dependencies + - @backstage/core-components@0.8.9 + - @backstage/core-plugin-api@0.6.1 + - @backstage/catalog-model@0.10.0 + - @backstage/config@0.1.14 + - @backstage/theme@0.2.15 + ## 0.11.20 ### Patch Changes diff --git a/plugins/cost-insights/package.json b/plugins/cost-insights/package.json index 4b3c93d2a8..344fcd58ce 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.20", + "version": "0.11.21", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,11 +34,11 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^0.9.10", - "@backstage/config": "^0.1.13", - "@backstage/core-components": "^0.8.8", - "@backstage/core-plugin-api": "^0.6.0", - "@backstage/theme": "^0.2.14", + "@backstage/catalog-model": "^0.10.0", + "@backstage/config": "^0.1.14", + "@backstage/core-components": "^0.8.9", + "@backstage/core-plugin-api": "^0.6.1", + "@backstage/theme": "^0.2.15", "@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.13.2", - "@backstage/core-app-api": "^0.5.2", - "@backstage/dev-utils": "^0.2.21", - "@backstage/test-utils": "^0.2.4", + "@backstage/cli": "^0.14.0", + "@backstage/core-app-api": "^0.5.3", + "@backstage/dev-utils": "^0.2.22", + "@backstage/test-utils": "^0.2.5", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^11.2.5", "@testing-library/user-event": "^13.1.8", diff --git a/plugins/explore-react/CHANGELOG.md b/plugins/explore-react/CHANGELOG.md index b546ab7408..ae74a864e1 100644 --- a/plugins/explore-react/CHANGELOG.md +++ b/plugins/explore-react/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-explore-react +## 0.0.12 + +### Patch Changes + +- 1ed305728b: Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5 +- c77c5c7eb6: Added `backstage.role` to `package.json` +- Updated dependencies + - @backstage/core-plugin-api@0.6.1 + ## 0.0.11 ### Patch Changes diff --git a/plugins/explore-react/package.json b/plugins/explore-react/package.json index 714474ce06..c47622540d 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.11", + "version": "0.0.12", "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": "^0.6.0" + "@backstage/core-plugin-api": "^0.6.1" }, "devDependencies": { - "@backstage/cli": "^0.13.2-next.0", - "@backstage/dev-utils": "^0.2.21-next.0", - "@backstage/test-utils": "^0.2.4-next.0", + "@backstage/cli": "^0.14.0", + "@backstage/dev-utils": "^0.2.22", + "@backstage/test-utils": "^0.2.5", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^11.2.5", "@testing-library/user-event": "^13.1.8", diff --git a/plugins/explore/CHANGELOG.md b/plugins/explore/CHANGELOG.md index d417976d1c..6c484d1c8f 100644 --- a/plugins/explore/CHANGELOG.md +++ b/plugins/explore/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/plugin-explore +## 0.3.30 + +### Patch Changes + +- 1ed305728b: Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5 +- c77c5c7eb6: Added `backstage.role` to `package.json` +- deaf6065db: Adapt to the new `CatalogApi.getLocationByRef` +- Updated dependencies + - @backstage/core-components@0.8.9 + - @backstage/core-plugin-api@0.6.1 + - @backstage/plugin-catalog-react@0.6.15 + - @backstage/plugin-explore-react@0.0.12 + - @backstage/catalog-model@0.10.0 + - @backstage/theme@0.2.15 + ## 0.3.29 ### Patch Changes diff --git a/plugins/explore/package.json b/plugins/explore/package.json index 7c76e88a59..3b83e42bca 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.29", + "version": "0.3.30", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,12 +34,12 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/catalog-model": "^0.9.10", - "@backstage/core-components": "^0.8.8", - "@backstage/core-plugin-api": "^0.6.0", - "@backstage/plugin-catalog-react": "^0.6.14", - "@backstage/plugin-explore-react": "^0.0.11", - "@backstage/theme": "^0.2.14", + "@backstage/catalog-model": "^0.10.0", + "@backstage/core-components": "^0.8.9", + "@backstage/core-plugin-api": "^0.6.1", + "@backstage/plugin-catalog-react": "^0.6.15", + "@backstage/plugin-explore-react": "^0.0.12", + "@backstage/theme": "^0.2.15", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -53,10 +53,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.13.2", - "@backstage/core-app-api": "^0.5.2", - "@backstage/dev-utils": "^0.2.21", - "@backstage/test-utils": "^0.2.4", + "@backstage/cli": "^0.14.0", + "@backstage/core-app-api": "^0.5.3", + "@backstage/dev-utils": "^0.2.22", + "@backstage/test-utils": "^0.2.5", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^11.2.5", "@testing-library/user-event": "^13.1.8", diff --git a/plugins/firehydrant/CHANGELOG.md b/plugins/firehydrant/CHANGELOG.md index e446663842..f2a5147e2a 100644 --- a/plugins/firehydrant/CHANGELOG.md +++ b/plugins/firehydrant/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-firehydrant +## 0.1.16 + +### Patch Changes + +- 1ed305728b: Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5 +- c77c5c7eb6: Added `backstage.role` to `package.json` +- 3a2a893df6: chore(deps): bump `luxon` from 2.0.2 to 2.3.0 +- Updated dependencies + - @backstage/core-components@0.8.9 + - @backstage/core-plugin-api@0.6.1 + - @backstage/plugin-catalog-react@0.6.15 + - @backstage/theme@0.2.15 + ## 0.1.15 ### Patch Changes diff --git a/plugins/firehydrant/package.json b/plugins/firehydrant/package.json index ca9aa616e8..e5acb5bf75 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.15", + "version": "0.1.16", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -25,10 +25,10 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/core-components": "^0.8.8", - "@backstage/core-plugin-api": "^0.6.0", - "@backstage/plugin-catalog-react": "^0.6.14", - "@backstage/theme": "^0.2.14", + "@backstage/core-components": "^0.8.9", + "@backstage/core-plugin-api": "^0.6.1", + "@backstage/plugin-catalog-react": "^0.6.15", + "@backstage/theme": "^0.2.15", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -39,10 +39,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.13.2", - "@backstage/core-app-api": "^0.5.2", - "@backstage/dev-utils": "^0.2.21", - "@backstage/test-utils": "^0.2.4", + "@backstage/cli": "^0.14.0", + "@backstage/core-app-api": "^0.5.3", + "@backstage/dev-utils": "^0.2.22", + "@backstage/test-utils": "^0.2.5", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^11.2.5", "@testing-library/user-event": "^13.1.8", diff --git a/plugins/fossa/CHANGELOG.md b/plugins/fossa/CHANGELOG.md index 6e42e95021..53cebb5eb0 100644 --- a/plugins/fossa/CHANGELOG.md +++ b/plugins/fossa/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/plugin-fossa +## 0.2.31 + +### Patch Changes + +- 1ed305728b: Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5 +- c77c5c7eb6: Added `backstage.role` to `package.json` +- deaf6065db: Adapt to the new `CatalogApi.getLocationByRef` +- Updated dependencies + - @backstage/core-components@0.8.9 + - @backstage/core-plugin-api@0.6.1 + - @backstage/errors@0.2.1 + - @backstage/plugin-catalog-react@0.6.15 + - @backstage/catalog-model@0.10.0 + - @backstage/theme@0.2.15 + ## 0.2.30 ### Patch Changes diff --git a/plugins/fossa/package.json b/plugins/fossa/package.json index 2d9674f0f7..5cfbf63128 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.30", + "version": "0.2.31", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -35,12 +35,12 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^0.9.10", - "@backstage/core-components": "^0.8.8", - "@backstage/core-plugin-api": "^0.6.0", - "@backstage/errors": "^0.2.0", - "@backstage/plugin-catalog-react": "^0.6.14", - "@backstage/theme": "^0.2.14", + "@backstage/catalog-model": "^0.10.0", + "@backstage/core-components": "^0.8.9", + "@backstage/core-plugin-api": "^0.6.1", + "@backstage/errors": "^0.2.1", + "@backstage/plugin-catalog-react": "^0.6.15", + "@backstage/theme": "^0.2.15", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -53,10 +53,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.13.2", - "@backstage/core-app-api": "^0.5.2", - "@backstage/dev-utils": "^0.2.21", - "@backstage/test-utils": "^0.2.4", + "@backstage/cli": "^0.14.0", + "@backstage/core-app-api": "^0.5.3", + "@backstage/dev-utils": "^0.2.22", + "@backstage/test-utils": "^0.2.5", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^11.2.5", "@testing-library/user-event": "^13.1.8", diff --git a/plugins/gcp-projects/CHANGELOG.md b/plugins/gcp-projects/CHANGELOG.md index 80761a4736..8ddb89dca7 100644 --- a/plugins/gcp-projects/CHANGELOG.md +++ b/plugins/gcp-projects/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-gcp-projects +## 0.3.18 + +### Patch Changes + +- 1ed305728b: Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5 +- c77c5c7eb6: Added `backstage.role` to `package.json` +- e242726f78: Switches to use react-hookz in place of react-use. +- Updated dependencies + - @backstage/core-components@0.8.9 + - @backstage/core-plugin-api@0.6.1 + - @backstage/theme@0.2.15 + ## 0.3.17 ### Patch Changes diff --git a/plugins/gcp-projects/package.json b/plugins/gcp-projects/package.json index d8b23960fe..869f6016ea 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.17", + "version": "0.3.18", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,9 +34,9 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/core-components": "^0.8.8", - "@backstage/core-plugin-api": "^0.6.0", - "@backstage/theme": "^0.2.14", + "@backstage/core-components": "^0.8.9", + "@backstage/core-plugin-api": "^0.6.1", + "@backstage/theme": "^0.2.15", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -47,10 +47,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.13.2", - "@backstage/core-app-api": "^0.5.2", - "@backstage/dev-utils": "^0.2.21", - "@backstage/test-utils": "^0.2.4", + "@backstage/cli": "^0.14.0", + "@backstage/core-app-api": "^0.5.3", + "@backstage/dev-utils": "^0.2.22", + "@backstage/test-utils": "^0.2.5", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^11.2.5", "@testing-library/user-event": "^13.1.8", diff --git a/plugins/git-release-manager/CHANGELOG.md b/plugins/git-release-manager/CHANGELOG.md index db988dbc9b..c6056e2007 100644 --- a/plugins/git-release-manager/CHANGELOG.md +++ b/plugins/git-release-manager/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-git-release-manager +## 0.3.12 + +### Patch Changes + +- 1ed305728b: Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5 +- c77c5c7eb6: Added `backstage.role` to `package.json` +- Updated dependencies + - @backstage/core-components@0.8.9 + - @backstage/core-plugin-api@0.6.1 + - @backstage/integration@0.7.3 + - @backstage/theme@0.2.15 + ## 0.3.11 ### Patch Changes diff --git a/plugins/git-release-manager/package.json b/plugins/git-release-manager/package.json index 19e71b3bb8..1df9e8005a 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.11", + "version": "0.3.12", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -24,10 +24,10 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/core-components": "^0.8.8", - "@backstage/core-plugin-api": "^0.6.0", - "@backstage/integration": "^0.7.2", - "@backstage/theme": "^0.2.14", + "@backstage/core-components": "^0.8.9", + "@backstage/core-plugin-api": "^0.6.1", + "@backstage/integration": "^0.7.3", + "@backstage/theme": "^0.2.15", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -43,10 +43,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.13.2", - "@backstage/core-app-api": "^0.5.2", - "@backstage/dev-utils": "^0.2.21", - "@backstage/test-utils": "^0.2.4", + "@backstage/cli": "^0.14.0", + "@backstage/core-app-api": "^0.5.3", + "@backstage/dev-utils": "^0.2.22", + "@backstage/test-utils": "^0.2.5", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^11.2.5", "@testing-library/react-hooks": "^7.0.2", diff --git a/plugins/github-actions/CHANGELOG.md b/plugins/github-actions/CHANGELOG.md index 2399292e8d..fc41232974 100644 --- a/plugins/github-actions/CHANGELOG.md +++ b/plugins/github-actions/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/plugin-github-actions +## 0.4.36 + +### Patch Changes + +- 1ed305728b: Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5 +- c77c5c7eb6: Added `backstage.role` to `package.json` +- 7efee0f94c: Fixed an issue where an error message was being displayed on the initial component render. This was due to values owner/repo not yet being set. +- Updated dependencies + - @backstage/core-components@0.8.9 + - @backstage/core-plugin-api@0.6.1 + - @backstage/integration@0.7.3 + - @backstage/plugin-catalog-react@0.6.15 + - @backstage/catalog-model@0.10.0 + - @backstage/theme@0.2.15 + ## 0.4.35 ### Patch Changes diff --git a/plugins/github-actions/package.json b/plugins/github-actions/package.json index a383771924..182202dfb3 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.4.35", + "version": "0.4.36", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -36,12 +36,12 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^0.9.10", - "@backstage/core-components": "^0.8.8", - "@backstage/core-plugin-api": "^0.6.0", - "@backstage/integration": "^0.7.2", - "@backstage/plugin-catalog-react": "^0.6.14", - "@backstage/theme": "^0.2.14", + "@backstage/catalog-model": "^0.10.0", + "@backstage/core-components": "^0.8.9", + "@backstage/core-plugin-api": "^0.6.1", + "@backstage/integration": "^0.7.3", + "@backstage/plugin-catalog-react": "^0.6.15", + "@backstage/theme": "^0.2.15", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -55,10 +55,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.13.2", - "@backstage/core-app-api": "^0.5.2", - "@backstage/dev-utils": "^0.2.21", - "@backstage/test-utils": "^0.2.4", + "@backstage/cli": "^0.14.0", + "@backstage/core-app-api": "^0.5.3", + "@backstage/dev-utils": "^0.2.22", + "@backstage/test-utils": "^0.2.5", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^11.2.5", "@testing-library/user-event": "^13.1.8", diff --git a/plugins/github-deployments/CHANGELOG.md b/plugins/github-deployments/CHANGELOG.md index 8bcaa8287f..90662a2e55 100644 --- a/plugins/github-deployments/CHANGELOG.md +++ b/plugins/github-deployments/CHANGELOG.md @@ -1,5 +1,23 @@ # @backstage/plugin-github-deployments +## 0.1.30 + +### Patch Changes + +- 1ed305728b: Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5 +- c77c5c7eb6: Added `backstage.role` to `package.json` +- 216725b434: Updated to use new names for `parseLocationRef` and `stringifyLocationRef` +- 27eccab216: Replaces use of deprecated catalog-model constants. +- Updated dependencies + - @backstage/core-components@0.8.9 + - @backstage/core-plugin-api@0.6.1 + - @backstage/errors@0.2.1 + - @backstage/integration@0.7.3 + - @backstage/integration-react@0.1.22 + - @backstage/plugin-catalog-react@0.6.15 + - @backstage/catalog-model@0.10.0 + - @backstage/theme@0.2.15 + ## 0.1.29 ### Patch Changes diff --git a/plugins/github-deployments/package.json b/plugins/github-deployments/package.json index c8f37f5121..612e9dc00b 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.29", + "version": "0.1.30", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -24,14 +24,14 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^0.9.10", - "@backstage/core-components": "^0.8.8", - "@backstage/core-plugin-api": "^0.6.0", - "@backstage/errors": "^0.2.0", - "@backstage/integration": "^0.7.2", - "@backstage/integration-react": "^0.1.21", - "@backstage/plugin-catalog-react": "^0.6.14", - "@backstage/theme": "^0.2.14", + "@backstage/catalog-model": "^0.10.0", + "@backstage/core-components": "^0.8.9", + "@backstage/core-plugin-api": "^0.6.1", + "@backstage/errors": "^0.2.1", + "@backstage/integration": "^0.7.3", + "@backstage/integration-react": "^0.1.22", + "@backstage/plugin-catalog-react": "^0.6.15", + "@backstage/theme": "^0.2.15", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -43,10 +43,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.13.2", - "@backstage/core-app-api": "^0.5.2", - "@backstage/dev-utils": "^0.2.21", - "@backstage/test-utils": "^0.2.4", + "@backstage/cli": "^0.14.0", + "@backstage/core-app-api": "^0.5.3", + "@backstage/dev-utils": "^0.2.22", + "@backstage/test-utils": "^0.2.5", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^11.2.5", "@testing-library/user-event": "^13.1.8", diff --git a/plugins/gitops-profiles/CHANGELOG.md b/plugins/gitops-profiles/CHANGELOG.md index edf8bec0ae..9e193137e6 100644 --- a/plugins/gitops-profiles/CHANGELOG.md +++ b/plugins/gitops-profiles/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-gitops-profiles +## 0.3.17 + +### Patch Changes + +- 1ed305728b: Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5 +- c77c5c7eb6: Added `backstage.role` to `package.json` +- Updated dependencies + - @backstage/core-components@0.8.9 + - @backstage/core-plugin-api@0.6.1 + - @backstage/theme@0.2.15 + ## 0.3.16 ### Patch Changes diff --git a/plugins/gitops-profiles/package.json b/plugins/gitops-profiles/package.json index 851bc2501e..4720f1bd2e 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.16", + "version": "0.3.17", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -35,9 +35,9 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/core-components": "^0.8.8", - "@backstage/core-plugin-api": "^0.6.0", - "@backstage/theme": "^0.2.14", + "@backstage/core-components": "^0.8.9", + "@backstage/core-plugin-api": "^0.6.1", + "@backstage/theme": "^0.2.15", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -48,10 +48,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.13.2", - "@backstage/core-app-api": "^0.5.2", - "@backstage/dev-utils": "^0.2.21", - "@backstage/test-utils": "^0.2.4", + "@backstage/cli": "^0.14.0", + "@backstage/core-app-api": "^0.5.3", + "@backstage/dev-utils": "^0.2.22", + "@backstage/test-utils": "^0.2.5", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^11.2.5", "@testing-library/user-event": "^13.1.8", diff --git a/plugins/gocd/CHANGELOG.md b/plugins/gocd/CHANGELOG.md index b2e5024fea..2061eb66f1 100644 --- a/plugins/gocd/CHANGELOG.md +++ b/plugins/gocd/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-gocd +## 0.1.5 + +### Patch Changes + +- 1ed305728b: Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5 +- c77c5c7eb6: Added `backstage.role` to `package.json` +- Updated dependencies + - @backstage/core-components@0.8.9 + - @backstage/core-plugin-api@0.6.1 + - @backstage/errors@0.2.1 + - @backstage/plugin-catalog-react@0.6.15 + - @backstage/catalog-model@0.10.0 + - @backstage/theme@0.2.15 + ## 0.1.4 ### Patch Changes diff --git a/plugins/gocd/package.json b/plugins/gocd/package.json index 3cefcd9a82..f4879509a0 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.4", + "version": "0.1.5", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -31,12 +31,12 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^0.9.10", - "@backstage/core-components": "^0.8.8", - "@backstage/core-plugin-api": "^0.6.0", - "@backstage/errors": "^0.2.0", - "@backstage/plugin-catalog-react": "^0.6.14", - "@backstage/theme": "^0.2.14", + "@backstage/catalog-model": "^0.10.0", + "@backstage/core-components": "^0.8.9", + "@backstage/core-plugin-api": "^0.6.1", + "@backstage/errors": "^0.2.1", + "@backstage/plugin-catalog-react": "^0.6.15", + "@backstage/theme": "^0.2.15", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -49,10 +49,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.13.2", - "@backstage/core-app-api": "^0.5.2", - "@backstage/dev-utils": "^0.2.21", - "@backstage/test-utils": "^0.2.4", + "@backstage/cli": "^0.14.0", + "@backstage/core-app-api": "^0.5.3", + "@backstage/dev-utils": "^0.2.22", + "@backstage/test-utils": "^0.2.5", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^11.2.5", "@testing-library/user-event": "^13.1.8", diff --git a/plugins/graphiql/CHANGELOG.md b/plugins/graphiql/CHANGELOG.md index da7919fb5e..fb4d0e7274 100644 --- a/plugins/graphiql/CHANGELOG.md +++ b/plugins/graphiql/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-graphiql +## 0.2.31 + +### Patch Changes + +- 1ed305728b: Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5 +- c77c5c7eb6: Added `backstage.role` to `package.json` +- Updated dependencies + - @backstage/core-components@0.8.9 + - @backstage/core-plugin-api@0.6.1 + - @backstage/theme@0.2.15 + ## 0.2.30 ### Patch Changes diff --git a/plugins/graphiql/package.json b/plugins/graphiql/package.json index 269302f1bb..23cd34bccc 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.30", + "version": "0.2.31", "private": false, "publishConfig": { "access": "public", @@ -34,9 +34,9 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/core-components": "^0.8.8", - "@backstage/core-plugin-api": "^0.6.0", - "@backstage/theme": "^0.2.14", + "@backstage/core-components": "^0.8.9", + "@backstage/core-plugin-api": "^0.6.1", + "@backstage/theme": "^0.2.15", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -48,10 +48,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.13.2", - "@backstage/core-app-api": "^0.5.2", - "@backstage/dev-utils": "^0.2.21", - "@backstage/test-utils": "^0.2.4", + "@backstage/cli": "^0.14.0", + "@backstage/core-app-api": "^0.5.3", + "@backstage/dev-utils": "^0.2.22", + "@backstage/test-utils": "^0.2.5", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^11.2.5", "@testing-library/user-event": "^13.1.8", diff --git a/plugins/graphql-backend/CHANGELOG.md b/plugins/graphql-backend/CHANGELOG.md index 749ced2527..7429358754 100644 --- a/plugins/graphql-backend/CHANGELOG.md +++ b/plugins/graphql-backend/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-graphql-backend +## 0.1.15 + +### Patch Changes + +- c77c5c7eb6: Added `backstage.role` to `package.json` +- 0107c9aa08: chore(deps): bump `helmet` from 4.4.1 to 5.0.2 +- Updated dependencies + - @backstage/backend-common@0.10.8 + - @backstage/plugin-catalog-graphql@0.3.2 + - @backstage/config@0.1.14 + ## 0.1.14 ### Patch Changes diff --git a/plugins/graphql-backend/package.json b/plugins/graphql-backend/package.json index acc9749da6..061ba58544 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.14", + "version": "0.1.15", "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.10.7", - "@backstage/config": "^0.1.13", - "@backstage/plugin-catalog-graphql": "^0.3.1", + "@backstage/backend-common": "^0.10.8", + "@backstage/config": "^0.1.14", + "@backstage/plugin-catalog-graphql": "^0.3.2", "@graphql-tools/schema": "^8.3.1", "graphql-modules": "^1.0.0", "@types/express": "^4.17.6", @@ -51,7 +51,7 @@ "yn": "^4.0.0" }, "devDependencies": { - "@backstage/cli": "^0.13.2", + "@backstage/cli": "^0.14.0", "@types/supertest": "^2.0.8", "eslint-plugin-graphql": "^4.0.0", "msw": "^0.35.0", diff --git a/plugins/home/CHANGELOG.md b/plugins/home/CHANGELOG.md index d0c0a5bb44..f1d42bd790 100644 --- a/plugins/home/CHANGELOG.md +++ b/plugins/home/CHANGELOG.md @@ -1,5 +1,27 @@ # @backstage/plugin-home +## 0.4.15 + +### Patch Changes + +- 1ed305728b: Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5 +- c77c5c7eb6: Added `backstage.role` to `package.json` +- 651b919dbb: Add Renderer support for the HomePageToolkit component. + + Previously `` would + result in the error `can't access property "map", props.tools is undefined`. + This change adds a context that can pass props down to the HomePageToolkit. + Also introduced is an `expanded` prop on the `ComponentAccordion` to setting + the default expanded state. See `In Accordian` story for details. + +- Updated dependencies + - @backstage/core-components@0.8.9 + - @backstage/core-plugin-api@0.6.1 + - @backstage/plugin-catalog-react@0.6.15 + - @backstage/plugin-search@0.7.0 + - @backstage/catalog-model@0.10.0 + - @backstage/theme@0.2.15 + ## 0.4.14 ### Patch Changes diff --git a/plugins/home/package.json b/plugins/home/package.json index 204faa57bd..7c63b4c645 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.14", + "version": "0.4.15", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,12 +34,12 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^0.9.10", - "@backstage/core-components": "^0.8.8", - "@backstage/core-plugin-api": "^0.6.0", - "@backstage/plugin-catalog-react": "^0.6.14", - "@backstage/plugin-search": "^0.6.2", - "@backstage/theme": "^0.2.14", + "@backstage/catalog-model": "^0.10.0", + "@backstage/core-components": "^0.8.9", + "@backstage/core-plugin-api": "^0.6.1", + "@backstage/plugin-catalog-react": "^0.6.15", + "@backstage/plugin-search": "^0.7.0", + "@backstage/theme": "^0.2.15", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -52,10 +52,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.13.2", - "@backstage/core-app-api": "^0.5.2", - "@backstage/dev-utils": "^0.2.21", - "@backstage/test-utils": "^0.2.4", + "@backstage/cli": "^0.14.0", + "@backstage/core-app-api": "^0.5.3", + "@backstage/dev-utils": "^0.2.22", + "@backstage/test-utils": "^0.2.5", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^11.2.5", "@testing-library/user-event": "^13.1.8", diff --git a/plugins/ilert/CHANGELOG.md b/plugins/ilert/CHANGELOG.md index 099110e39f..acd3f6dab0 100644 --- a/plugins/ilert/CHANGELOG.md +++ b/plugins/ilert/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/plugin-ilert +## 0.1.25 + +### Patch Changes + +- 1ed305728b: Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5 +- c77c5c7eb6: Added `backstage.role` to `package.json` +- 7aeb491394: Replace use of deprecated `ENTITY_DEFAULT_NAMESPACE` constant with `DEFAULT_NAMESPACE`. +- Updated dependencies + - @backstage/core-components@0.8.9 + - @backstage/core-plugin-api@0.6.1 + - @backstage/errors@0.2.1 + - @backstage/plugin-catalog-react@0.6.15 + - @backstage/catalog-model@0.10.0 + - @backstage/theme@0.2.15 + ## 0.1.24 ### Patch Changes diff --git a/plugins/ilert/package.json b/plugins/ilert/package.json index 5f741b5a49..b015836ac1 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.24", + "version": "0.1.25", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -24,12 +24,12 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^0.9.10", - "@backstage/core-components": "^0.8.8", - "@backstage/core-plugin-api": "^0.6.0", - "@backstage/errors": "^0.2.0", - "@backstage/plugin-catalog-react": "^0.6.14", - "@backstage/theme": "^0.2.14", + "@backstage/catalog-model": "^0.10.0", + "@backstage/core-components": "^0.8.9", + "@backstage/core-plugin-api": "^0.6.1", + "@backstage/errors": "^0.2.1", + "@backstage/plugin-catalog-react": "^0.6.15", + "@backstage/theme": "^0.2.15", "@date-io/luxon": "1.x", "@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.13.2", - "@backstage/core-app-api": "^0.5.2", - "@backstage/dev-utils": "^0.2.21", - "@backstage/test-utils": "^0.2.4", + "@backstage/cli": "^0.14.0", + "@backstage/core-app-api": "^0.5.3", + "@backstage/dev-utils": "^0.2.22", + "@backstage/test-utils": "^0.2.5", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^11.2.5", "@testing-library/user-event": "^13.1.8", diff --git a/plugins/jenkins-backend/CHANGELOG.md b/plugins/jenkins-backend/CHANGELOG.md index 17fd3da85a..07d1f9ece0 100644 --- a/plugins/jenkins-backend/CHANGELOG.md +++ b/plugins/jenkins-backend/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-jenkins-backend +## 0.1.14 + +### Patch Changes + +- c77c5c7eb6: Added `backstage.role` to `package.json` +- 377fce4677: The `DefaultJenkinsInfoProvider.fromConfig` now requires an implementation of the `CatalogApi` rather than a `CatalogClient` instance. +- Updated dependencies + - @backstage/backend-common@0.10.8 + - @backstage/catalog-client@0.7.0 + - @backstage/catalog-model@0.10.0 + - @backstage/config@0.1.14 + ## 0.1.13 ### Patch Changes diff --git a/plugins/jenkins-backend/package.json b/plugins/jenkins-backend/package.json index b21fdc794f..86ff665900 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.13", + "version": "0.1.14", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -25,10 +25,10 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.10.7", - "@backstage/catalog-client": "^0.6.0", - "@backstage/catalog-model": "^0.9.10", - "@backstage/config": "^0.1.13", + "@backstage/backend-common": "^0.10.8", + "@backstage/catalog-client": "^0.7.0", + "@backstage/catalog-model": "^0.10.0", + "@backstage/config": "^0.1.14", "@types/express": "^4.17.6", "express": "^4.17.1", "express-promise-router": "^4.1.0", @@ -37,7 +37,7 @@ "yn": "^4.0.0" }, "devDependencies": { - "@backstage/cli": "^0.13.2", + "@backstage/cli": "^0.14.0", "@types/jenkins": "^0.23.1", "@types/supertest": "^2.0.8", "msw": "^0.35.0", diff --git a/plugins/jenkins/CHANGELOG.md b/plugins/jenkins/CHANGELOG.md index 8611c9d2b7..e5f5ebea46 100644 --- a/plugins/jenkins/CHANGELOG.md +++ b/plugins/jenkins/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-jenkins +## 0.5.21 + +### Patch Changes + +- 1ed305728b: Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5 +- c77c5c7eb6: Added `backstage.role` to `package.json` +- Updated dependencies + - @backstage/core-components@0.8.9 + - @backstage/core-plugin-api@0.6.1 + - @backstage/errors@0.2.1 + - @backstage/plugin-catalog-react@0.6.15 + - @backstage/catalog-model@0.10.0 + - @backstage/theme@0.2.15 + ## 0.5.20 ### Patch Changes diff --git a/plugins/jenkins/package.json b/plugins/jenkins/package.json index 719ed70615..c4cf6a33de 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.5.20", + "version": "0.5.21", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -35,12 +35,12 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^0.9.10", - "@backstage/core-components": "^0.8.8", - "@backstage/core-plugin-api": "^0.6.0", - "@backstage/errors": "^0.2.0", - "@backstage/plugin-catalog-react": "^0.6.14", - "@backstage/theme": "^0.2.14", + "@backstage/catalog-model": "^0.10.0", + "@backstage/core-components": "^0.8.9", + "@backstage/core-plugin-api": "^0.6.1", + "@backstage/errors": "^0.2.1", + "@backstage/plugin-catalog-react": "^0.6.15", + "@backstage/theme": "^0.2.15", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -53,10 +53,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.13.2", - "@backstage/core-app-api": "^0.5.2", - "@backstage/dev-utils": "^0.2.21", - "@backstage/test-utils": "^0.2.4", + "@backstage/cli": "^0.14.0", + "@backstage/core-app-api": "^0.5.3", + "@backstage/dev-utils": "^0.2.22", + "@backstage/test-utils": "^0.2.5", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^11.2.5", "@testing-library/user-event": "^13.1.8", diff --git a/plugins/kafka-backend/CHANGELOG.md b/plugins/kafka-backend/CHANGELOG.md index cd80463672..2680aad412 100644 --- a/plugins/kafka-backend/CHANGELOG.md +++ b/plugins/kafka-backend/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-kafka-backend +## 0.2.18 + +### Patch Changes + +- c77c5c7eb6: Added `backstage.role` to `package.json` +- Updated dependencies + - @backstage/backend-common@0.10.8 + - @backstage/errors@0.2.1 + - @backstage/catalog-model@0.10.0 + - @backstage/config@0.1.14 + ## 0.2.17 ### Patch Changes diff --git a/plugins/kafka-backend/package.json b/plugins/kafka-backend/package.json index 8a35006feb..e65540bb5d 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.17", + "version": "0.2.18", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -35,10 +35,10 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.10.7", - "@backstage/catalog-model": "^0.9.10", - "@backstage/config": "^0.1.13", - "@backstage/errors": "^0.2.0", + "@backstage/backend-common": "^0.10.8", + "@backstage/catalog-model": "^0.10.0", + "@backstage/config": "^0.1.14", + "@backstage/errors": "^0.2.1", "@types/express": "^4.17.6", "express": "^4.17.1", "express-promise-router": "^4.1.0", @@ -47,7 +47,7 @@ "winston": "^3.2.1" }, "devDependencies": { - "@backstage/cli": "^0.13.2", + "@backstage/cli": "^0.14.0", "@types/jest-when": "^2.7.2", "@types/lodash": "^4.14.151", "jest-when": "^3.1.0", diff --git a/plugins/kafka/CHANGELOG.md b/plugins/kafka/CHANGELOG.md index e73c3a6efb..b34c87c416 100644 --- a/plugins/kafka/CHANGELOG.md +++ b/plugins/kafka/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-kafka +## 0.2.29 + +### Patch Changes + +- 1ed305728b: Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5 +- c77c5c7eb6: Added `backstage.role` to `package.json` +- Updated dependencies + - @backstage/core-components@0.8.9 + - @backstage/core-plugin-api@0.6.1 + - @backstage/plugin-catalog-react@0.6.15 + - @backstage/catalog-model@0.10.0 + - @backstage/theme@0.2.15 + ## 0.2.28 ### Patch Changes diff --git a/plugins/kafka/package.json b/plugins/kafka/package.json index eb0ab12232..a6d57838b5 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.2.28", + "version": "0.2.29", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -24,11 +24,11 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^0.9.10", - "@backstage/core-components": "^0.8.8", - "@backstage/core-plugin-api": "^0.6.0", - "@backstage/plugin-catalog-react": "^0.6.14", - "@backstage/theme": "^0.2.14", + "@backstage/catalog-model": "^0.10.0", + "@backstage/core-components": "^0.8.9", + "@backstage/core-plugin-api": "^0.6.1", + "@backstage/plugin-catalog-react": "^0.6.15", + "@backstage/theme": "^0.2.15", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -39,10 +39,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.13.2", - "@backstage/core-app-api": "^0.5.2", - "@backstage/dev-utils": "^0.2.21", - "@backstage/test-utils": "^0.2.4", + "@backstage/cli": "^0.14.0", + "@backstage/core-app-api": "^0.5.3", + "@backstage/dev-utils": "^0.2.22", + "@backstage/test-utils": "^0.2.5", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^11.2.5", "@testing-library/react-hooks": "^7.0.2", diff --git a/plugins/kubernetes-backend/CHANGELOG.md b/plugins/kubernetes-backend/CHANGELOG.md index 457e17e989..f7502f2c7f 100644 --- a/plugins/kubernetes-backend/CHANGELOG.md +++ b/plugins/kubernetes-backend/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-kubernetes-backend +## 0.4.8 + +### Patch Changes + +- c77c5c7eb6: Added `backstage.role` to `package.json` +- 0107c9aa08: chore(deps): bump `helmet` from 4.4.1 to 5.0.2 +- fb09a59a3f: Fixed a potential issue in AWS token encoding, where they might not always be properly converted to URL-safe base64. +- Updated dependencies + - @backstage/backend-common@0.10.8 + - @backstage/errors@0.2.1 + - @backstage/catalog-model@0.10.0 + - @backstage/config@0.1.14 + - @backstage/plugin-kubernetes-common@0.2.3 + ## 0.4.7 ### Patch Changes diff --git a/plugins/kubernetes-backend/package.json b/plugins/kubernetes-backend/package.json index bf3915bd2a..fe8a52c866 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.4.7", + "version": "0.4.8", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -35,11 +35,11 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.10.7", - "@backstage/catalog-model": "^0.9.10", - "@backstage/config": "^0.1.13", - "@backstage/errors": "^0.2.0", - "@backstage/plugin-kubernetes-common": "^0.2.2", + "@backstage/backend-common": "^0.10.8", + "@backstage/catalog-model": "^0.10.0", + "@backstage/config": "^0.1.14", + "@backstage/errors": "^0.2.1", + "@backstage/plugin-kubernetes-common": "^0.2.3", "@google-cloud/container": "^2.2.0", "@kubernetes/client-node": "^0.16.0", "@types/express": "^4.17.6", @@ -58,7 +58,7 @@ "yn": "^4.0.0" }, "devDependencies": { - "@backstage/cli": "^0.13.2", + "@backstage/cli": "^0.14.0", "@types/aws4": "^1.5.1", "supertest": "^6.1.3", "aws-sdk-mock": "^5.2.1", diff --git a/plugins/kubernetes-common/CHANGELOG.md b/plugins/kubernetes-common/CHANGELOG.md index 785a5c619d..1c106f865d 100644 --- a/plugins/kubernetes-common/CHANGELOG.md +++ b/plugins/kubernetes-common/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-kubernetes-common +## 0.2.3 + +### Patch Changes + +- c77c5c7eb6: Added `backstage.role` to `package.json` +- Updated dependencies + - @backstage/catalog-model@0.10.0 + ## 0.2.2 ### Patch Changes diff --git a/plugins/kubernetes-common/package.json b/plugins/kubernetes-common/package.json index 041032f0e1..108a9205e2 100644 --- a/plugins/kubernetes-common/package.json +++ b/plugins/kubernetes-common/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-kubernetes-common", "description": "Common functionalities for kubernetes, to be shared between kubernetes and kubernetes-backend plugin", - "version": "0.2.2", + "version": "0.2.3", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -38,11 +38,11 @@ "url": "https://github.com/backstage/backstage/issues" }, "dependencies": { - "@backstage/catalog-model": "^0.9.10", + "@backstage/catalog-model": "^0.10.0", "@kubernetes/client-node": "^0.16.0" }, "devDependencies": { - "@backstage/cli": "^0.13.2-next.0" + "@backstage/cli": "^0.14.0" }, "jest": { "roots": [ diff --git a/plugins/kubernetes/CHANGELOG.md b/plugins/kubernetes/CHANGELOG.md index 33abbb9255..75b66c0ca9 100644 --- a/plugins/kubernetes/CHANGELOG.md +++ b/plugins/kubernetes/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/plugin-kubernetes +## 0.5.8 + +### Patch Changes + +- 1ed305728b: Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5 +- c77c5c7eb6: Added `backstage.role` to `package.json` +- Updated dependencies + - @backstage/core-components@0.8.9 + - @backstage/core-plugin-api@0.6.1 + - @backstage/plugin-catalog-react@0.6.15 + - @backstage/catalog-model@0.10.0 + - @backstage/config@0.1.14 + - @backstage/theme@0.2.15 + - @backstage/plugin-kubernetes-common@0.2.3 + ## 0.5.7 ### Patch Changes diff --git a/plugins/kubernetes/package.json b/plugins/kubernetes/package.json index 1d9f9c1821..7c5ced9480 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.5.7", + "version": "0.5.8", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,14 +34,14 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^0.9.10", - "@backstage/config": "^0.1.13", - "@backstage/core-components": "^0.8.8", - "@backstage/core-plugin-api": "^0.6.0", - "@backstage/plugin-catalog-react": "^0.6.14", - "@backstage/plugin-kubernetes-common": "^0.2.2", + "@backstage/catalog-model": "^0.10.0", + "@backstage/config": "^0.1.14", + "@backstage/core-components": "^0.8.9", + "@backstage/core-plugin-api": "^0.6.1", + "@backstage/plugin-catalog-react": "^0.6.15", + "@backstage/plugin-kubernetes-common": "^0.2.3", "@kubernetes/client-node": "^0.16.0", - "@backstage/theme": "^0.2.14", + "@backstage/theme": "^0.2.15", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -56,10 +56,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.13.2", - "@backstage/core-app-api": "^0.5.2", - "@backstage/dev-utils": "^0.2.21", - "@backstage/test-utils": "^0.2.4", + "@backstage/cli": "^0.14.0", + "@backstage/core-app-api": "^0.5.3", + "@backstage/dev-utils": "^0.2.22", + "@backstage/test-utils": "^0.2.5", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^11.2.5", "@testing-library/react-hooks": "^7.0.2", diff --git a/plugins/lighthouse/CHANGELOG.md b/plugins/lighthouse/CHANGELOG.md index 541861b519..a21459ac31 100644 --- a/plugins/lighthouse/CHANGELOG.md +++ b/plugins/lighthouse/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-lighthouse +## 0.2.38 + +### Patch Changes + +- 1ed305728b: Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5 +- c77c5c7eb6: Added `backstage.role` to `package.json` +- Updated dependencies + - @backstage/core-components@0.8.9 + - @backstage/core-plugin-api@0.6.1 + - @backstage/plugin-catalog-react@0.6.15 + - @backstage/catalog-model@0.10.0 + - @backstage/config@0.1.14 + - @backstage/theme@0.2.15 + ## 0.2.37 ### Patch Changes diff --git a/plugins/lighthouse/package.json b/plugins/lighthouse/package.json index 3bb06ac0cf..ff58fb7ed2 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.2.37", + "version": "0.2.38", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -35,12 +35,12 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/catalog-model": "^0.9.10", - "@backstage/config": "^0.1.13", - "@backstage/core-components": "^0.8.8", - "@backstage/core-plugin-api": "^0.6.0", - "@backstage/plugin-catalog-react": "^0.6.14", - "@backstage/theme": "^0.2.14", + "@backstage/catalog-model": "^0.10.0", + "@backstage/config": "^0.1.14", + "@backstage/core-components": "^0.8.9", + "@backstage/core-plugin-api": "^0.6.1", + "@backstage/plugin-catalog-react": "^0.6.15", + "@backstage/theme": "^0.2.15", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -51,10 +51,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.13.2", - "@backstage/core-app-api": "^0.5.2", - "@backstage/dev-utils": "^0.2.21", - "@backstage/test-utils": "^0.2.4", + "@backstage/cli": "^0.14.0", + "@backstage/core-app-api": "^0.5.3", + "@backstage/dev-utils": "^0.2.22", + "@backstage/test-utils": "^0.2.5", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^11.2.5", "@testing-library/react-hooks": "^7.0.2", diff --git a/plugins/newrelic-dashboard/CHANGELOG.md b/plugins/newrelic-dashboard/CHANGELOG.md index e1101d2369..f47372401c 100644 --- a/plugins/newrelic-dashboard/CHANGELOG.md +++ b/plugins/newrelic-dashboard/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-newrelic-dashboard +## 0.1.7 + +### Patch Changes + +- 1ed305728b: Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5 +- c77c5c7eb6: Added `backstage.role` to `package.json` +- Updated dependencies + - @backstage/core-components@0.8.9 + - @backstage/core-plugin-api@0.6.1 + - @backstage/errors@0.2.1 + - @backstage/plugin-catalog-react@0.6.15 + - @backstage/catalog-model@0.10.0 + ## 0.1.6 ### Patch Changes diff --git a/plugins/newrelic-dashboard/package.json b/plugins/newrelic-dashboard/package.json index f0b3d29680..04714bc389 100644 --- a/plugins/newrelic-dashboard/package.json +++ b/plugins/newrelic-dashboard/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-newrelic-dashboard", - "version": "0.1.6", + "version": "0.1.7", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -23,19 +23,19 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^0.9.10", - "@backstage/core-components": "^0.8.8", - "@backstage/core-plugin-api": "^0.6.0", - "@backstage/errors": "^0.2.0", - "@backstage/plugin-catalog-react": "^0.6.14", + "@backstage/catalog-model": "^0.10.0", + "@backstage/core-components": "^0.8.9", + "@backstage/core-plugin-api": "^0.6.1", + "@backstage/errors": "^0.2.1", + "@backstage/plugin-catalog-react": "^0.6.15", "@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.13.2", - "@backstage/dev-utils": "^0.2.21", + "@backstage/cli": "^0.14.0", + "@backstage/dev-utils": "^0.2.22", "@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 821de4582a..ce38f0bd86 100644 --- a/plugins/newrelic/CHANGELOG.md +++ b/plugins/newrelic/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-newrelic +## 0.3.17 + +### Patch Changes + +- 1ed305728b: Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5 +- c77c5c7eb6: Added `backstage.role` to `package.json` +- Updated dependencies + - @backstage/core-components@0.8.9 + - @backstage/core-plugin-api@0.6.1 + - @backstage/theme@0.2.15 + ## 0.3.16 ### Patch Changes diff --git a/plugins/newrelic/package.json b/plugins/newrelic/package.json index 7f0b2e6c26..6e5e5c8291 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.16", + "version": "0.3.17", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -35,9 +35,9 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/core-components": "^0.8.8", - "@backstage/core-plugin-api": "^0.6.0", - "@backstage/theme": "^0.2.14", + "@backstage/core-components": "^0.8.9", + "@backstage/core-plugin-api": "^0.6.1", + "@backstage/theme": "^0.2.15", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -47,10 +47,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.13.2", - "@backstage/core-app-api": "^0.5.2", - "@backstage/dev-utils": "^0.2.21", - "@backstage/test-utils": "^0.2.4", + "@backstage/cli": "^0.14.0", + "@backstage/core-app-api": "^0.5.3", + "@backstage/dev-utils": "^0.2.22", + "@backstage/test-utils": "^0.2.5", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^11.2.5", "@testing-library/user-event": "^13.1.8", diff --git a/plugins/org/CHANGELOG.md b/plugins/org/CHANGELOG.md index e9dfbce07d..d80405bf2e 100644 --- a/plugins/org/CHANGELOG.md +++ b/plugins/org/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/plugin-org +## 0.4.3 + +### Patch Changes + +- 1ed305728b: Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5 +- c77c5c7eb6: Added `backstage.role` to `package.json` +- 538ca90790: Use updated type names from `@backstage/catalog-client` +- 7aeb491394: Replace use of deprecated `ENTITY_DEFAULT_NAMESPACE` constant with `DEFAULT_NAMESPACE`. +- Updated dependencies + - @backstage/core-components@0.8.9 + - @backstage/core-plugin-api@0.6.1 + - @backstage/plugin-catalog-react@0.6.15 + - @backstage/catalog-model@0.10.0 + - @backstage/theme@0.2.15 + ## 0.4.2 ### Patch Changes diff --git a/plugins/org/package.json b/plugins/org/package.json index c5a52e14e5..b95d283c20 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.4.2", + "version": "0.4.3", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -24,11 +24,11 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^0.9.10", - "@backstage/core-components": "^0.8.8", - "@backstage/core-plugin-api": "^0.6.0", - "@backstage/plugin-catalog-react": "^0.6.14", - "@backstage/theme": "^0.2.14", + "@backstage/catalog-model": "^0.10.0", + "@backstage/core-components": "^0.8.9", + "@backstage/core-plugin-api": "^0.6.1", + "@backstage/plugin-catalog-react": "^0.6.15", + "@backstage/theme": "^0.2.15", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -42,11 +42,11 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/catalog-client": "^0.6.0", - "@backstage/cli": "^0.13.2", - "@backstage/core-app-api": "^0.5.2", - "@backstage/dev-utils": "^0.2.21", - "@backstage/test-utils": "^0.2.4", + "@backstage/catalog-client": "^0.7.0", + "@backstage/cli": "^0.14.0", + "@backstage/core-app-api": "^0.5.3", + "@backstage/dev-utils": "^0.2.22", + "@backstage/test-utils": "^0.2.5", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^11.2.5", "@testing-library/user-event": "^13.1.8", diff --git a/plugins/pagerduty/CHANGELOG.md b/plugins/pagerduty/CHANGELOG.md index 6fbcfc54b1..5d19df1299 100644 --- a/plugins/pagerduty/CHANGELOG.md +++ b/plugins/pagerduty/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/plugin-pagerduty +## 0.3.26 + +### Patch Changes + +- 1ed305728b: Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5 +- c77c5c7eb6: Added `backstage.role` to `package.json` +- edeeac7e9d: Switch `luxon` dependency range to be `^2.0.2` rather than `2.0.2`. +- 7aeb491394: Replace use of deprecated `ENTITY_DEFAULT_NAMESPACE` constant with `DEFAULT_NAMESPACE`. +- Updated dependencies + - @backstage/core-components@0.8.9 + - @backstage/core-plugin-api@0.6.1 + - @backstage/plugin-catalog-react@0.6.15 + - @backstage/catalog-model@0.10.0 + - @backstage/theme@0.2.15 + ## 0.3.25 ### Patch Changes diff --git a/plugins/pagerduty/package.json b/plugins/pagerduty/package.json index d808cdd95a..11a007907a 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.3.25", + "version": "0.3.26", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,11 +34,11 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^0.9.10", - "@backstage/core-components": "^0.8.8", - "@backstage/core-plugin-api": "^0.6.0", - "@backstage/plugin-catalog-react": "^0.6.14", - "@backstage/theme": "^0.2.14", + "@backstage/catalog-model": "^0.10.0", + "@backstage/core-components": "^0.8.9", + "@backstage/core-plugin-api": "^0.6.1", + "@backstage/plugin-catalog-react": "^0.6.15", + "@backstage/theme": "^0.2.15", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -52,10 +52,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.13.2", - "@backstage/core-app-api": "^0.5.2", - "@backstage/dev-utils": "^0.2.21", - "@backstage/test-utils": "^0.2.4", + "@backstage/cli": "^0.14.0", + "@backstage/core-app-api": "^0.5.3", + "@backstage/dev-utils": "^0.2.22", + "@backstage/test-utils": "^0.2.5", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^11.2.5", "@testing-library/user-event": "^13.1.8", diff --git a/plugins/permission-backend/CHANGELOG.md b/plugins/permission-backend/CHANGELOG.md index 58ace0ff17..069fabd688 100644 --- a/plugins/permission-backend/CHANGELOG.md +++ b/plugins/permission-backend/CHANGELOG.md @@ -1,5 +1,40 @@ # @backstage/plugin-permission-backend +## 0.5.0 + +### Minor Changes + +- e2cf0662eb: Add a warning if the permission backend is used without setting `permission.enabled=true`. + + **BREAKING** Permission backend's `createRouter` now requires a `config` option. + + ```diff + // packages/backend/src/plugins/permission.ts + + ... + export default async function createPlugin({ + ... + + config, + }: PluginEnvironment) { + return createRouter({ + ... + + config, + }); + } + ``` + +### Patch Changes + +- 1ed305728b: Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5 +- c77c5c7eb6: Added `backstage.role` to `package.json` +- Updated dependencies + - @backstage/backend-common@0.10.8 + - @backstage/errors@0.2.1 + - @backstage/plugin-auth-node@0.1.1 + - @backstage/plugin-permission-common@0.5.0 + - @backstage/config@0.1.14 + - @backstage/plugin-permission-node@0.5.0 + ## 0.4.3 ### Patch Changes diff --git a/plugins/permission-backend/package.json b/plugins/permission-backend/package.json index 6b7817f10b..d66637f76c 100644 --- a/plugins/permission-backend/package.json +++ b/plugins/permission-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-permission-backend", - "version": "0.4.3", + "version": "0.5.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.10.7", - "@backstage/config": "^0.1.13", - "@backstage/errors": "^0.2.0", - "@backstage/plugin-auth-node": "^0.1.0", - "@backstage/plugin-permission-common": "^0.4.0", - "@backstage/plugin-permission-node": "^0.4.3", + "@backstage/backend-common": "^0.10.8", + "@backstage/config": "^0.1.14", + "@backstage/errors": "^0.2.1", + "@backstage/plugin-auth-node": "^0.1.1", + "@backstage/plugin-permission-common": "^0.5.0", + "@backstage/plugin-permission-node": "^0.5.0", "@types/express": "*", "dataloader": "^2.0.0", "express": "^4.17.1", @@ -39,7 +39,7 @@ "zod": "^3.11.6" }, "devDependencies": { - "@backstage/cli": "^0.13.2", + "@backstage/cli": "^0.14.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 c0c21288be..70cca743b3 100644 --- a/plugins/permission-common/CHANGELOG.md +++ b/plugins/permission-common/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-permission-common +## 0.5.0 + +### Minor Changes + +- 8c646beb24: **BREAKING** `PermissionCriteria` now requires at least one condition in `anyOf` and `allOf` arrays. This addresses some ambiguous behavior outlined in #9280. + +### Patch Changes + +- 1ed305728b: Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5 +- c77c5c7eb6: Added `backstage.role` to `package.json` +- Updated dependencies + - @backstage/errors@0.2.1 + - @backstage/config@0.1.14 + ## 0.4.0 ### Minor Changes diff --git a/plugins/permission-common/package.json b/plugins/permission-common/package.json index a3d099d1a8..4961b583a2 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.4.0", + "version": "0.5.0", "main": "src/index.ts", "types": "src/index.ts", "publishConfig": { @@ -41,14 +41,14 @@ "url": "https://github.com/backstage/backstage/issues" }, "dependencies": { - "@backstage/config": "^0.1.13", - "@backstage/errors": "^0.2.0", + "@backstage/config": "^0.1.14", + "@backstage/errors": "^0.2.1", "cross-fetch": "^3.1.5", "uuid": "^8.0.0", "zod": "^3.11.6" }, "devDependencies": { - "@backstage/cli": "^0.13.2-next.0", + "@backstage/cli": "^0.14.0", "@types/jest": "^26.0.7", "msw": "^0.35.0" } diff --git a/plugins/permission-node/CHANGELOG.md b/plugins/permission-node/CHANGELOG.md index d79c79159f..2b31f47059 100644 --- a/plugins/permission-node/CHANGELOG.md +++ b/plugins/permission-node/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/plugin-permission-node +## 0.5.0 + +### Minor Changes + +- 8c646beb24: **BREAKING** `PermissionCriteria` now requires at least one condition in `anyOf` and `allOf` arrays. This addresses some ambiguous behavior outlined in #9280. + +### Patch Changes + +- c77c5c7eb6: Added `backstage.role` to `package.json` +- Updated dependencies + - @backstage/backend-common@0.10.8 + - @backstage/errors@0.2.1 + - @backstage/plugin-auth-node@0.1.1 + - @backstage/plugin-permission-common@0.5.0 + - @backstage/config@0.1.14 + ## 0.4.3 ### Patch Changes diff --git a/plugins/permission-node/package.json b/plugins/permission-node/package.json index 1c3e711dfc..2157c9e0dd 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.4.3", + "version": "0.5.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.10.7", - "@backstage/config": "^0.1.13", - "@backstage/errors": "^0.2.0", - "@backstage/plugin-auth-node": "^0.1.0", - "@backstage/plugin-permission-common": "^0.4.0", + "@backstage/backend-common": "^0.10.8", + "@backstage/config": "^0.1.14", + "@backstage/errors": "^0.2.1", + "@backstage/plugin-auth-node": "^0.1.1", + "@backstage/plugin-permission-common": "^0.5.0", "@types/express": "^4.17.6", "express": "^4.17.1", "express-promise-router": "^4.1.0", "zod": "^3.11.6" }, "devDependencies": { - "@backstage/cli": "^0.13.2", + "@backstage/cli": "^0.14.0", "@types/supertest": "^2.0.8", "msw": "^0.35.0", "supertest": "^6.1.3" diff --git a/plugins/permission-react/CHANGELOG.md b/plugins/permission-react/CHANGELOG.md index 41c55b5a45..db0b1a3a1f 100644 --- a/plugins/permission-react/CHANGELOG.md +++ b/plugins/permission-react/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-permission-react +## 0.3.1 + +### Patch Changes + +- 1ed305728b: Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5 +- c77c5c7eb6: Added `backstage.role` to `package.json` +- Updated dependencies + - @backstage/core-plugin-api@0.6.1 + - @backstage/plugin-permission-common@0.5.0 + - @backstage/config@0.1.14 + ## 0.3.0 ### Minor Changes diff --git a/plugins/permission-react/package.json b/plugins/permission-react/package.json index b62a681c06..2fc639f432 100644 --- a/plugins/permission-react/package.json +++ b/plugins/permission-react/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-permission-react", - "version": "0.3.0", + "version": "0.3.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -31,9 +31,9 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/config": "^0.1.13", - "@backstage/core-plugin-api": "^0.6.0", - "@backstage/plugin-permission-common": "^0.4.0", + "@backstage/config": "^0.1.14", + "@backstage/core-plugin-api": "^0.6.1", + "@backstage/plugin-permission-common": "^0.5.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.13.2-next.0", - "@backstage/test-utils": "^0.2.4-next.0", + "@backstage/cli": "^0.14.0", + "@backstage/test-utils": "^0.2.5", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^11.2.5", "@types/jest": "^26.0.7" diff --git a/plugins/proxy-backend/CHANGELOG.md b/plugins/proxy-backend/CHANGELOG.md index 7460eddd5a..2ed0edff50 100644 --- a/plugins/proxy-backend/CHANGELOG.md +++ b/plugins/proxy-backend/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-proxy-backend +## 0.2.19 + +### Patch Changes + +- c77c5c7eb6: Added `backstage.role` to `package.json` +- Updated dependencies + - @backstage/backend-common@0.10.8 + - @backstage/config@0.1.14 + ## 0.2.18 ### Patch Changes diff --git a/plugins/proxy-backend/package.json b/plugins/proxy-backend/package.json index 5b2e9a5713..b0635be7f9 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.18", + "version": "0.2.19", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -32,8 +32,8 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.10.7", - "@backstage/config": "^0.1.13", + "@backstage/backend-common": "^0.10.8", + "@backstage/config": "^0.1.14", "@types/express": "^4.17.6", "express": "^4.17.1", "express-promise-router": "^4.1.0", @@ -46,7 +46,7 @@ "yup": "^0.32.9" }, "devDependencies": { - "@backstage/cli": "^0.13.2", + "@backstage/cli": "^0.14.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 14e566219a..6893f23ce8 100644 --- a/plugins/rollbar-backend/CHANGELOG.md +++ b/plugins/rollbar-backend/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-rollbar-backend +## 0.1.22 + +### Patch Changes + +- 1ed305728b: Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5 +- c77c5c7eb6: Added `backstage.role` to `package.json` +- 1433045c08: Removed unused `helmet` dependency. +- Updated dependencies + - @backstage/backend-common@0.10.8 + - @backstage/config@0.1.14 + ## 0.1.21 ### Patch Changes diff --git a/plugins/rollbar-backend/package.json b/plugins/rollbar-backend/package.json index 91a4d38c31..141b35d373 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.21", + "version": "0.1.22", "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.10.7", - "@backstage/config": "^0.1.13", + "@backstage/backend-common": "^0.10.8", + "@backstage/config": "^0.1.14", "@types/express": "^4.17.6", "camelcase-keys": "^7.0.1", "compression": "^1.7.4", @@ -50,8 +50,8 @@ "yn": "^4.0.0" }, "devDependencies": { - "@backstage/cli": "^0.13.2", - "@backstage/test-utils": "^0.2.4", + "@backstage/cli": "^0.14.0", + "@backstage/test-utils": "^0.2.5", "@types/supertest": "^2.0.8", "msw": "^0.36.3", "supertest": "^6.1.3" diff --git a/plugins/rollbar/CHANGELOG.md b/plugins/rollbar/CHANGELOG.md index df1cb19f83..5e1b3fc9ed 100644 --- a/plugins/rollbar/CHANGELOG.md +++ b/plugins/rollbar/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-rollbar +## 0.3.27 + +### Patch Changes + +- 1ed305728b: Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5 +- c77c5c7eb6: Added `backstage.role` to `package.json` +- Updated dependencies + - @backstage/core-components@0.8.9 + - @backstage/core-plugin-api@0.6.1 + - @backstage/plugin-catalog-react@0.6.15 + - @backstage/catalog-model@0.10.0 + - @backstage/theme@0.2.15 + ## 0.3.26 ### Patch Changes diff --git a/plugins/rollbar/package.json b/plugins/rollbar/package.json index 764a4dc036..06277a3d5f 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.3.26", + "version": "0.3.27", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -35,11 +35,11 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^0.9.10", - "@backstage/core-components": "^0.8.8", - "@backstage/core-plugin-api": "^0.6.0", - "@backstage/plugin-catalog-react": "^0.6.14", - "@backstage/theme": "^0.2.14", + "@backstage/catalog-model": "^0.10.0", + "@backstage/core-components": "^0.8.9", + "@backstage/core-plugin-api": "^0.6.1", + "@backstage/plugin-catalog-react": "^0.6.15", + "@backstage/theme": "^0.2.15", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -53,10 +53,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.13.2", - "@backstage/core-app-api": "^0.5.2", - "@backstage/dev-utils": "^0.2.21", - "@backstage/test-utils": "^0.2.4", + "@backstage/cli": "^0.14.0", + "@backstage/core-app-api": "^0.5.3", + "@backstage/dev-utils": "^0.2.22", + "@backstage/test-utils": "^0.2.5", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^11.2.5", "@testing-library/react-hooks": "^7.0.2", diff --git a/plugins/scaffolder-backend-module-cookiecutter/CHANGELOG.md b/plugins/scaffolder-backend-module-cookiecutter/CHANGELOG.md index 29ff4e9edb..467c989495 100644 --- a/plugins/scaffolder-backend-module-cookiecutter/CHANGELOG.md +++ b/plugins/scaffolder-backend-module-cookiecutter/CHANGELOG.md @@ -1,5 +1,22 @@ # @backstage/plugin-scaffolder-backend-module-cookiecutter +## 0.2.0 + +### Minor Changes + +- 661594bf43: Updated to the latest version of `@backstage/plugin-scaffolder-backend`, meaning the `TemplateAction` now exposes the precise input type rather than `any`. + +### Patch Changes + +- c77c5c7eb6: Added `backstage.role` to `package.json` +- Updated dependencies + - @backstage/backend-common@0.10.8 + - @backstage/errors@0.2.1 + - @backstage/integration@0.7.3 + - @backstage/plugin-scaffolder-backend@0.16.0 + - @backstage/config@0.1.14 + - @backstage/types@0.1.2 + ## 0.1.11 ### Patch Changes diff --git a/plugins/scaffolder-backend-module-cookiecutter/package.json b/plugins/scaffolder-backend-module-cookiecutter/package.json index e3386ee7a4..e56f67d43a 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.1.11", + "version": "0.2.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -23,19 +23,19 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.10.7", - "@backstage/errors": "^0.2.0", - "@backstage/integration": "^0.7.2", - "@backstage/plugin-scaffolder-backend": "^0.15.24", - "@backstage/config": "^0.1.13", - "@backstage/types": "^0.1.1", + "@backstage/backend-common": "^0.10.8", + "@backstage/errors": "^0.2.1", + "@backstage/integration": "^0.7.3", + "@backstage/plugin-scaffolder-backend": "^0.16.0", + "@backstage/config": "^0.1.14", + "@backstage/types": "^0.1.2", "command-exists": "^1.2.9", "fs-extra": "10.0.0", "winston": "^3.2.1", "yn": "^4.0.0" }, "devDependencies": { - "@backstage/cli": "^0.13.2", + "@backstage/cli": "^0.14.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 2b369835f8..07185f6377 100644 --- a/plugins/scaffolder-backend-module-rails/CHANGELOG.md +++ b/plugins/scaffolder-backend-module-rails/CHANGELOG.md @@ -1,5 +1,22 @@ # @backstage/plugin-scaffolder-backend-module-rails +## 0.3.0 + +### Minor Changes + +- 661594bf43: Updated to the latest version of `@backstage/plugin-scaffolder-backend`, meaning the `TemplateAction` now exposes the precise input type rather than `any`. + +### Patch Changes + +- c77c5c7eb6: Added `backstage.role` to `package.json` +- Updated dependencies + - @backstage/backend-common@0.10.8 + - @backstage/errors@0.2.1 + - @backstage/integration@0.7.3 + - @backstage/plugin-scaffolder-backend@0.16.0 + - @backstage/config@0.1.14 + - @backstage/types@0.1.2 + ## 0.2.6 ### Patch Changes diff --git a/plugins/scaffolder-backend-module-rails/package.json b/plugins/scaffolder-backend-module-rails/package.json index edf8c1cc84..b4c093792d 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.2.6", + "version": "0.3.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.10.7", - "@backstage/plugin-scaffolder-backend": "^0.15.24", - "@backstage/config": "^0.1.13", - "@backstage/errors": "^0.2.0", - "@backstage/integration": "^0.7.2", - "@backstage/types": "^0.1.1", + "@backstage/backend-common": "^0.10.8", + "@backstage/plugin-scaffolder-backend": "^0.16.0", + "@backstage/config": "^0.1.14", + "@backstage/errors": "^0.2.1", + "@backstage/integration": "^0.7.3", + "@backstage/types": "^0.1.2", "command-exists": "^1.2.9", "fs-extra": "^9.0.0" }, "devDependencies": { - "@backstage/cli": "^0.13.2", + "@backstage/cli": "^0.14.0", "@types/jest": "^26.0.7", "@types/node": "^14.14.32", "@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 8c5a6ade44..815bffc400 100644 --- a/plugins/scaffolder-backend-module-yeoman/CHANGELOG.md +++ b/plugins/scaffolder-backend-module-yeoman/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/plugin-scaffolder-backend-module-yeoman +## 0.2.0 + +### Minor Changes + +- 661594bf43: Updated to the latest version of `@backstage/plugin-scaffolder-backend`, meaning the `TemplateAction` now exposes the precise input type rather than `any`. + +### Patch Changes + +- c77c5c7eb6: Added `backstage.role` to `package.json` +- c82cd1b137: Bump `yeoman-environment` dependency from `^3.6.0` to `^3.9.1`. +- Updated dependencies + - @backstage/plugin-scaffolder-backend@0.16.0 + - @backstage/config@0.1.14 + - @backstage/types@0.1.2 + ## 0.1.5 ### Patch Changes diff --git a/plugins/scaffolder-backend-module-yeoman/package.json b/plugins/scaffolder-backend-module-yeoman/package.json index 5a82f2df32..df42d18ac7 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.1.5", + "version": "0.2.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -23,14 +23,14 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/config": "^0.1.13", - "@backstage/plugin-scaffolder-backend": "^0.15.24", - "@backstage/types": "^0.1.1", + "@backstage/config": "^0.1.14", + "@backstage/plugin-scaffolder-backend": "^0.16.0", + "@backstage/types": "^0.1.2", "winston": "^3.2.1", "yeoman-environment": "^3.9.1" }, "devDependencies": { - "@backstage/backend-common": "^0.10.7", + "@backstage/backend-common": "^0.10.8", "@types/jest": "^26.0.7" }, "files": [ diff --git a/plugins/scaffolder-backend/CHANGELOG.md b/plugins/scaffolder-backend/CHANGELOG.md index 7c80464d71..20b5cba7fb 100644 --- a/plugins/scaffolder-backend/CHANGELOG.md +++ b/plugins/scaffolder-backend/CHANGELOG.md @@ -1,5 +1,39 @@ # @backstage/plugin-scaffolder-backend +## 0.16.0 + +### Minor Changes + +- 661594bf43: **BREAKING**: Updated `TemplateAction` and related types to have its type parameter extend `JsonObject` instead of `InputBase`. The `createTemplateAction` has also been updated to pass through the `TInput` type parameter to the return type, meaning the `TemplateAction` retains its type. This can lead to breakages during type checking especially within tests. +- 8db2b671c6: **BREAKING**: `ctx.token` is now `ctx.secrets.backstageToken` in Actions. Please update any of your Actions that might call out to Backstage API's with this token. +- 5a1594330e: **BREAKING** - Removed the `CatalogEntityClient` export. This is no longer provider by this package, + but you can implement one pretty simply yourself using the `CatalogApi` and applying filters to fetch templates. +- 7d3471db94: Remove the previously deprecated `scaffolder.provider` config for all providers. + This config is no longer used anywhere, and adopters should use [`integrations` config](https://backstage.io/docs/integrations) instead. + +### Patch Changes + +- 1ed305728b: Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5 +- 3e59f90b51: Fix error handling of the `runCommand` helper to return `Error` + instance. +- c77c5c7eb6: Added `backstage.role` to `package.json` +- 216725b434: Updated to use new names for `parseLocationRef` and `stringifyLocationRef` +- e72d371296: Use `TemplateEntityV1beta2` from `@backstage/plugin-scaffolder-common` instead + of `@backstage/catalog-model`. +- 1433045c08: Removed unused `helmet` dependency. +- 27eccab216: Replaces use of deprecated catalog-model constants. +- Updated dependencies + - @backstage/plugin-scaffolder-common@0.2.0 + - @backstage/plugin-catalog-backend@0.21.4 + - @backstage/backend-common@0.10.8 + - @backstage/catalog-client@0.7.0 + - @backstage/errors@0.2.1 + - @backstage/integration@0.7.3 + - @backstage/catalog-model@0.10.0 + - @backstage/config@0.1.14 + - @backstage/types@0.1.2 + - @backstage/plugin-scaffolder-backend-module-cookiecutter@0.2.0 + ## 0.15.24 ### Patch Changes diff --git a/plugins/scaffolder-backend/package.json b/plugins/scaffolder-backend/package.json index 69e3e16f5d..8c61ee65c4 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": "0.15.24", + "version": "0.16.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,16 +34,16 @@ "build:assets": "node scripts/build-nunjucks.js" }, "dependencies": { - "@backstage/backend-common": "^0.10.7", - "@backstage/catalog-client": "^0.6.0", - "@backstage/catalog-model": "^0.9.10", - "@backstage/config": "^0.1.13", - "@backstage/errors": "^0.2.0", - "@backstage/integration": "^0.7.2", - "@backstage/plugin-catalog-backend": "^0.21.3", - "@backstage/plugin-scaffolder-common": "^0.1.3", - "@backstage/plugin-scaffolder-backend-module-cookiecutter": "^0.1.11", - "@backstage/types": "^0.1.1", + "@backstage/backend-common": "^0.10.8", + "@backstage/catalog-client": "^0.7.0", + "@backstage/catalog-model": "^0.10.0", + "@backstage/config": "^0.1.14", + "@backstage/errors": "^0.2.1", + "@backstage/integration": "^0.7.3", + "@backstage/plugin-catalog-backend": "^0.21.4", + "@backstage/plugin-scaffolder-common": "^0.2.0", + "@backstage/plugin-scaffolder-backend-module-cookiecutter": "^0.2.0", + "@backstage/types": "^0.1.2", "@gitbeaker/core": "^34.6.0", "@gitbeaker/node": "^35.1.0", "@octokit/webhooks": "^9.14.1", @@ -75,8 +75,8 @@ "vm2": "^3.9.6" }, "devDependencies": { - "@backstage/cli": "^0.13.2", - "@backstage/test-utils": "^0.2.4", + "@backstage/cli": "^0.14.0", + "@backstage/test-utils": "^0.2.5", "@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 fb161f6a4a..8320c62369 100644 --- a/plugins/scaffolder-common/CHANGELOG.md +++ b/plugins/scaffolder-common/CHANGELOG.md @@ -1,5 +1,22 @@ # @backstage/plugin-scaffolder-common +## 0.2.0 + +### Minor Changes + +- 5e585bbc7f: **BREAKING**: Removed the `templateEntityV1beta3Schema` export + +### Patch Changes + +- e72d371296: Added `TemplateEntityV1beta2` which was moved here from + `@backstage/plugin-scaffolder-common`. It has also been marked as deprecated in + the process - please consider [migrating to `v1beta3` + templates](https://backstage.io/docs/features/software-templates/migrating-from-v1beta2-to-v1beta3). +- c77c5c7eb6: Added `backstage.role` to `package.json` +- Updated dependencies + - @backstage/catalog-model@0.10.0 + - @backstage/types@0.1.2 + ## 0.1.3 ### Patch Changes diff --git a/plugins/scaffolder-common/package.json b/plugins/scaffolder-common/package.json index 92e54d87f5..024241b60b 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": "0.1.3", + "version": "0.2.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -39,10 +39,10 @@ "url": "https://github.com/backstage/backstage/issues" }, "dependencies": { - "@backstage/catalog-model": "^0.9.10", - "@backstage/types": "^0.1.1" + "@backstage/catalog-model": "^0.10.0", + "@backstage/types": "^0.1.2" }, "devDependencies": { - "@backstage/cli": "^0.13.2-next.0" + "@backstage/cli": "^0.14.0" } } diff --git a/plugins/scaffolder/CHANGELOG.md b/plugins/scaffolder/CHANGELOG.md index dd7674a21b..ba618272b5 100644 --- a/plugins/scaffolder/CHANGELOG.md +++ b/plugins/scaffolder/CHANGELOG.md @@ -1,5 +1,31 @@ # @backstage/plugin-scaffolder +## 0.12.3 + +### Patch Changes + +- 1ed305728b: Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5 +- c77c5c7eb6: Added `backstage.role` to `package.json` +- 538ca90790: Use updated type names from `@backstage/catalog-client` +- deaf6065db: Adapt to the new `CatalogApi.getLocationByRef` +- e72d371296: Use `TemplateEntityV1beta2` from `@backstage/plugin-scaffolder-common` instead + of `@backstage/catalog-model`. +- Updated dependencies + - @backstage/plugin-scaffolder-common@0.2.0 + - @backstage/catalog-client@0.7.0 + - @backstage/core-components@0.8.9 + - @backstage/core-plugin-api@0.6.1 + - @backstage/errors@0.2.1 + - @backstage/integration@0.7.3 + - @backstage/integration-react@0.1.22 + - @backstage/plugin-catalog-react@0.6.15 + - @backstage/plugin-permission-react@0.3.1 + - @backstage/catalog-model@0.10.0 + - @backstage/config@0.1.14 + - @backstage/theme@0.2.15 + - @backstage/types@0.1.2 + - @backstage/plugin-catalog-common@0.1.3 + ## 0.12.2 ### Patch Changes diff --git a/plugins/scaffolder/package.json b/plugins/scaffolder/package.json index 1c9baafd48..827e8126f7 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": "0.12.2", + "version": "0.12.3", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,20 +34,20 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-client": "^0.6.0", - "@backstage/catalog-model": "^0.9.10", - "@backstage/config": "^0.1.13", - "@backstage/core-components": "^0.8.8", - "@backstage/core-plugin-api": "^0.6.0", - "@backstage/errors": "^0.2.0", - "@backstage/integration": "^0.7.2", - "@backstage/integration-react": "^0.1.21", - "@backstage/plugin-catalog-common": "^0.1.2", - "@backstage/plugin-catalog-react": "^0.6.14", - "@backstage/plugin-permission-react": "^0.3.0", - "@backstage/plugin-scaffolder-common": "^0.1.3", - "@backstage/theme": "^0.2.14", - "@backstage/types": "^0.1.1", + "@backstage/catalog-client": "^0.7.0", + "@backstage/catalog-model": "^0.10.0", + "@backstage/config": "^0.1.14", + "@backstage/core-components": "^0.8.9", + "@backstage/core-plugin-api": "^0.6.1", + "@backstage/errors": "^0.2.1", + "@backstage/integration": "^0.7.3", + "@backstage/integration-react": "^0.1.22", + "@backstage/plugin-catalog-common": "^0.1.3", + "@backstage/plugin-catalog-react": "^0.6.15", + "@backstage/plugin-permission-react": "^0.3.1", + "@backstage/plugin-scaffolder-common": "^0.2.0", + "@backstage/theme": "^0.2.15", + "@backstage/types": "^0.1.2", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -72,11 +72,11 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.13.2", - "@backstage/core-app-api": "^0.5.2", - "@backstage/dev-utils": "^0.2.21", - "@backstage/plugin-catalog": "^0.7.12", - "@backstage/test-utils": "^0.2.4", + "@backstage/cli": "^0.14.0", + "@backstage/core-app-api": "^0.5.3", + "@backstage/dev-utils": "^0.2.22", + "@backstage/plugin-catalog": "^0.8.0", + "@backstage/test-utils": "^0.2.5", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^11.2.5", "@testing-library/react-hooks": "^7.0.2", diff --git a/plugins/search-backend-module-elasticsearch/CHANGELOG.md b/plugins/search-backend-module-elasticsearch/CHANGELOG.md index 5dc394be6c..8a2927cf8e 100644 --- a/plugins/search-backend-module-elasticsearch/CHANGELOG.md +++ b/plugins/search-backend-module-elasticsearch/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-search-backend-module-elasticsearch +## 0.0.9 + +### Patch Changes + +- c77c5c7eb6: Added `backstage.role` to `package.json` +- 4c0332e55c: chore(deps-dev): bump `@elastic/elasticsearch-mock` from 0.3.0 to 1.0.0 +- Updated dependencies + - @backstage/config@0.1.14 + - @backstage/search-common@0.2.3 + ## 0.0.8 ### Patch Changes diff --git a/plugins/search-backend-module-elasticsearch/package.json b/plugins/search-backend-module-elasticsearch/package.json index 51df462b8a..80ad13f010 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": "0.0.8", + "version": "0.0.9", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -23,8 +23,8 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/config": "^0.1.13", - "@backstage/search-common": "^0.2.2", + "@backstage/config": "^0.1.14", + "@backstage/search-common": "^0.2.3", "@elastic/elasticsearch": "7.13.0", "@acuris/aws-es-connection": "^2.2.0", "aws-sdk": "^2.948.0", @@ -33,8 +33,8 @@ "winston": "^3.2.1" }, "devDependencies": { - "@backstage/backend-common": "^0.10.7-next.0", - "@backstage/cli": "^0.13.2-next.0", + "@backstage/backend-common": "^0.10.8", + "@backstage/cli": "^0.14.0", "@elastic/elasticsearch-mock": "^1.0.0" }, "files": [ diff --git a/plugins/search-backend-module-pg/CHANGELOG.md b/plugins/search-backend-module-pg/CHANGELOG.md index c0b1f6778d..eab68379e4 100644 --- a/plugins/search-backend-module-pg/CHANGELOG.md +++ b/plugins/search-backend-module-pg/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-search-backend-module-pg +## 0.2.7 + +### Patch Changes + +- c77c5c7eb6: Added `backstage.role` to `package.json` +- Updated dependencies + - @backstage/backend-common@0.10.8 + - @backstage/search-common@0.2.3 + - @backstage/plugin-search-backend-node@0.4.6 + ## 0.2.6 ### Patch Changes diff --git a/plugins/search-backend-module-pg/package.json b/plugins/search-backend-module-pg/package.json index 979d60a9bc..69b586129d 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.2.6", + "version": "0.2.7", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -23,15 +23,15 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.10.7", - "@backstage/search-common": "^0.2.2", - "@backstage/plugin-search-backend-node": "^0.4.5", + "@backstage/backend-common": "^0.10.8", + "@backstage/search-common": "^0.2.3", + "@backstage/plugin-search-backend-node": "^0.4.6", "lodash": "^4.17.21", "knex": "^1.0.2" }, "devDependencies": { - "@backstage/backend-test-utils": "^0.1.17", - "@backstage/cli": "^0.13.2" + "@backstage/backend-test-utils": "^0.1.18", + "@backstage/cli": "^0.14.0" }, "files": [ "dist", diff --git a/plugins/search-backend-node/CHANGELOG.md b/plugins/search-backend-node/CHANGELOG.md index 6f664c086c..1387c7381d 100644 --- a/plugins/search-backend-node/CHANGELOG.md +++ b/plugins/search-backend-node/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-search-backend-node +## 0.4.6 + +### Patch Changes + +- c77c5c7eb6: Added `backstage.role` to `package.json` +- Updated dependencies + - @backstage/search-common@0.2.3 + ## 0.4.5 ### Patch Changes diff --git a/plugins/search-backend-node/package.json b/plugins/search-backend-node/package.json index eaa1e171cf..32403656c1 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": "0.4.5", + "version": "0.4.6", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -23,14 +23,14 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/search-common": "^0.2.2", + "@backstage/search-common": "^0.2.3", "winston": "^3.2.1", "lunr": "^2.3.9", "@types/lunr": "^2.3.3" }, "devDependencies": { - "@backstage/backend-common": "^0.10.7-next.0", - "@backstage/cli": "^0.13.2-next.0" + "@backstage/backend-common": "^0.10.8", + "@backstage/cli": "^0.14.0" }, "files": [ "dist" diff --git a/plugins/search-backend/CHANGELOG.md b/plugins/search-backend/CHANGELOG.md index 218615c66b..7f87e7ff5e 100644 --- a/plugins/search-backend/CHANGELOG.md +++ b/plugins/search-backend/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/plugin-search-backend +## 0.4.3 + +### Patch Changes + +- c77c5c7eb6: Added `backstage.role` to `package.json` +- Updated dependencies + - @backstage/backend-common@0.10.8 + - @backstage/errors@0.2.1 + - @backstage/plugin-auth-node@0.1.1 + - @backstage/plugin-permission-common@0.5.0 + - @backstage/config@0.1.14 + - @backstage/search-common@0.2.3 + - @backstage/types@0.1.2 + - @backstage/plugin-permission-node@0.5.0 + - @backstage/plugin-search-backend-node@0.4.6 + ## 0.4.2 ### Patch Changes diff --git a/plugins/search-backend/package.json b/plugins/search-backend/package.json index db91541ccd..47651d6bc2 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": "0.4.2", + "version": "0.4.3", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -23,15 +23,15 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.10.7", - "@backstage/config": "^0.1.13", - "@backstage/errors": "^0.2.0", - "@backstage/search-common": "^0.2.2", - "@backstage/plugin-auth-node": "^0.1.0", - "@backstage/plugin-permission-common": "^0.4.0-next.0", - "@backstage/plugin-permission-node": "^0.4.3", - "@backstage/plugin-search-backend-node": "^0.4.5", - "@backstage/types": "^0.1.1", + "@backstage/backend-common": "^0.10.8", + "@backstage/config": "^0.1.14", + "@backstage/errors": "^0.2.1", + "@backstage/search-common": "^0.2.3", + "@backstage/plugin-auth-node": "^0.1.1", + "@backstage/plugin-permission-common": "^0.5.0", + "@backstage/plugin-permission-node": "^0.5.0", + "@backstage/plugin-search-backend-node": "^0.4.6", + "@backstage/types": "^0.1.2", "@types/express": "^4.17.6", "dataloader": "^2.0.0", "express": "^4.17.1", @@ -43,7 +43,7 @@ "zod": "^3.11.6" }, "devDependencies": { - "@backstage/cli": "^0.13.2", + "@backstage/cli": "^0.14.0", "@types/supertest": "^2.0.8", "supertest": "^6.1.3" }, diff --git a/plugins/search/CHANGELOG.md b/plugins/search/CHANGELOG.md index bb4877b6da..f9ec6f8687 100644 --- a/plugins/search/CHANGELOG.md +++ b/plugins/search/CHANGELOG.md @@ -1,5 +1,40 @@ # @backstage/plugin-search +## 0.7.0 + +### Minor Changes + +- f986369b2a: **BREAKING**: `useSearch` doesn't return anymore `open` and `toggleModal`. + The two properties have been moved to the `useSearchModal` hook. + + ``` + import { SearchModal, useSearchModal } from '@backstage/plugin-search'; + + const Foo = () => { + const { state, setOpen, toggleModal } = useSearchModal(); + + return ( + + ); + }; + ``` + +### Patch Changes + +- 1ed305728b: Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5 +- c77c5c7eb6: Added `backstage.role` to `package.json` +- 7aeb491394: Replace use of deprecated `ENTITY_DEFAULT_NAMESPACE` constant with `DEFAULT_NAMESPACE`. +- Updated dependencies + - @backstage/core-components@0.8.9 + - @backstage/core-plugin-api@0.6.1 + - @backstage/errors@0.2.1 + - @backstage/plugin-catalog-react@0.6.15 + - @backstage/catalog-model@0.10.0 + - @backstage/config@0.1.14 + - @backstage/search-common@0.2.3 + - @backstage/theme@0.2.15 + - @backstage/types@0.1.2 + ## 0.6.2 ### Patch Changes diff --git a/plugins/search/package.json b/plugins/search/package.json index 8832d41332..95104127bd 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": "0.6.2", + "version": "0.7.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -33,15 +33,15 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^0.9.10", - "@backstage/config": "^0.1.13", - "@backstage/core-components": "^0.8.8", - "@backstage/core-plugin-api": "^0.6.0", - "@backstage/errors": "^0.2.0", - "@backstage/plugin-catalog-react": "^0.6.14", - "@backstage/search-common": "^0.2.2", - "@backstage/theme": "^0.2.14", - "@backstage/types": "^0.1.1", + "@backstage/catalog-model": "^0.10.0", + "@backstage/config": "^0.1.14", + "@backstage/core-components": "^0.8.9", + "@backstage/core-plugin-api": "^0.6.1", + "@backstage/errors": "^0.2.1", + "@backstage/plugin-catalog-react": "^0.6.15", + "@backstage/search-common": "^0.2.3", + "@backstage/theme": "^0.2.15", + "@backstage/types": "^0.1.2", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -56,10 +56,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.13.2", - "@backstage/core-app-api": "^0.5.2", - "@backstage/dev-utils": "^0.2.21", - "@backstage/test-utils": "^0.2.4", + "@backstage/cli": "^0.14.0", + "@backstage/core-app-api": "^0.5.3", + "@backstage/dev-utils": "^0.2.22", + "@backstage/test-utils": "^0.2.5", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^11.2.5", "@testing-library/react-hooks": "^7.0.2", diff --git a/plugins/sentry/CHANGELOG.md b/plugins/sentry/CHANGELOG.md index 5f87df9a3a..5b907793c7 100644 --- a/plugins/sentry/CHANGELOG.md +++ b/plugins/sentry/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-sentry +## 0.3.37 + +### Patch Changes + +- 1ed305728b: Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5 +- c77c5c7eb6: Added `backstage.role` to `package.json` +- Updated dependencies + - @backstage/core-components@0.8.9 + - @backstage/core-plugin-api@0.6.1 + - @backstage/plugin-catalog-react@0.6.15 + - @backstage/catalog-model@0.10.0 + - @backstage/theme@0.2.15 + ## 0.3.36 ### Patch Changes diff --git a/plugins/sentry/package.json b/plugins/sentry/package.json index f87f140cb4..056dab64b0 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.3.36", + "version": "0.3.37", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -35,11 +35,11 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^0.9.10", - "@backstage/core-components": "^0.8.8", - "@backstage/core-plugin-api": "^0.6.0", - "@backstage/plugin-catalog-react": "^0.6.14", - "@backstage/theme": "^0.2.14", + "@backstage/catalog-model": "^0.10.0", + "@backstage/core-components": "^0.8.9", + "@backstage/core-plugin-api": "^0.6.1", + "@backstage/plugin-catalog-react": "^0.6.15", + "@backstage/theme": "^0.2.15", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -52,10 +52,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.13.2", - "@backstage/core-app-api": "^0.5.2", - "@backstage/dev-utils": "^0.2.21", - "@backstage/test-utils": "^0.2.4", + "@backstage/cli": "^0.14.0", + "@backstage/core-app-api": "^0.5.3", + "@backstage/dev-utils": "^0.2.22", + "@backstage/test-utils": "^0.2.5", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^11.2.5", "@testing-library/user-event": "^13.1.8", diff --git a/plugins/shortcuts/CHANGELOG.md b/plugins/shortcuts/CHANGELOG.md index 11bc03104a..e34ba20bf8 100644 --- a/plugins/shortcuts/CHANGELOG.md +++ b/plugins/shortcuts/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/plugin-shortcuts +## 0.2.0 + +### Minor Changes + +- dc9fd0acf9: Use Avatar instead of custom icon for ShortcutIcon + +### Patch Changes + +- 1ed305728b: Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5 +- c77c5c7eb6: Added `backstage.role` to `package.json` +- Updated dependencies + - @backstage/core-components@0.8.9 + - @backstage/core-plugin-api@0.6.1 + - @backstage/theme@0.2.15 + - @backstage/types@0.1.2 + ## 0.1.22 ### Patch Changes diff --git a/plugins/shortcuts/package.json b/plugins/shortcuts/package.json index 43a5da6efb..2627c26825 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.1.22", + "version": "0.2.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -24,10 +24,10 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/core-components": "^0.8.8", - "@backstage/core-plugin-api": "^0.6.0", - "@backstage/theme": "^0.2.14", - "@backstage/types": "^0.1.1", + "@backstage/core-components": "^0.8.9", + "@backstage/core-plugin-api": "^0.6.1", + "@backstage/theme": "^0.2.15", + "@backstage/types": "^0.1.2", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -42,10 +42,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.13.2", - "@backstage/core-app-api": "^0.5.2", - "@backstage/dev-utils": "^0.2.21", - "@backstage/test-utils": "^0.2.4", + "@backstage/cli": "^0.14.0", + "@backstage/core-app-api": "^0.5.3", + "@backstage/dev-utils": "^0.2.22", + "@backstage/test-utils": "^0.2.5", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^11.2.5", "@testing-library/user-event": "^13.1.8", diff --git a/plugins/sonarqube/CHANGELOG.md b/plugins/sonarqube/CHANGELOG.md index c0de393aab..57ee474d67 100644 --- a/plugins/sonarqube/CHANGELOG.md +++ b/plugins/sonarqube/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-sonarqube +## 0.2.17 + +### Patch Changes + +- 1ed305728b: Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5 +- c77c5c7eb6: Added `backstage.role` to `package.json` +- Updated dependencies + - @backstage/core-components@0.8.9 + - @backstage/core-plugin-api@0.6.1 + - @backstage/plugin-catalog-react@0.6.15 + - @backstage/catalog-model@0.10.0 + - @backstage/theme@0.2.15 + ## 0.2.16 ### Patch Changes diff --git a/plugins/sonarqube/package.json b/plugins/sonarqube/package.json index 40863c7cbd..f32f2c252c 100644 --- a/plugins/sonarqube/package.json +++ b/plugins/sonarqube/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-sonarqube", "description": "", - "version": "0.2.16", + "version": "0.2.17", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -36,11 +36,11 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^0.9.10", - "@backstage/core-components": "^0.8.8", - "@backstage/core-plugin-api": "^0.6.0", - "@backstage/plugin-catalog-react": "^0.6.14", - "@backstage/theme": "^0.2.14", + "@backstage/catalog-model": "^0.10.0", + "@backstage/core-components": "^0.8.9", + "@backstage/core-plugin-api": "^0.6.1", + "@backstage/plugin-catalog-react": "^0.6.15", + "@backstage/theme": "^0.2.15", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -53,10 +53,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.13.2", - "@backstage/core-app-api": "^0.5.2", - "@backstage/dev-utils": "^0.2.21", - "@backstage/test-utils": "^0.2.4", + "@backstage/cli": "^0.14.0", + "@backstage/core-app-api": "^0.5.3", + "@backstage/dev-utils": "^0.2.22", + "@backstage/test-utils": "^0.2.5", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^11.2.5", "@testing-library/user-event": "^13.1.8", diff --git a/plugins/splunk-on-call/CHANGELOG.md b/plugins/splunk-on-call/CHANGELOG.md index badc0f06fc..75bd177266 100644 --- a/plugins/splunk-on-call/CHANGELOG.md +++ b/plugins/splunk-on-call/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-splunk-on-call +## 0.3.23 + +### Patch Changes + +- 1ed305728b: Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5 +- c77c5c7eb6: Added `backstage.role` to `package.json` +- Updated dependencies + - @backstage/core-components@0.8.9 + - @backstage/core-plugin-api@0.6.1 + - @backstage/plugin-catalog-react@0.6.15 + - @backstage/catalog-model@0.10.0 + - @backstage/theme@0.2.15 + ## 0.3.22 ### Patch Changes diff --git a/plugins/splunk-on-call/package.json b/plugins/splunk-on-call/package.json index fe0e050209..81dee187b7 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.22", + "version": "0.3.23", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,11 +34,11 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^0.9.10", - "@backstage/core-components": "^0.8.8", - "@backstage/core-plugin-api": "^0.6.0", - "@backstage/plugin-catalog-react": "^0.6.14", - "@backstage/theme": "^0.2.14", + "@backstage/catalog-model": "^0.10.0", + "@backstage/core-components": "^0.8.9", + "@backstage/core-plugin-api": "^0.6.1", + "@backstage/plugin-catalog-react": "^0.6.15", + "@backstage/theme": "^0.2.15", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -51,10 +51,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.13.2", - "@backstage/core-app-api": "^0.5.2", - "@backstage/dev-utils": "^0.2.21", - "@backstage/test-utils": "^0.2.4", + "@backstage/cli": "^0.14.0", + "@backstage/core-app-api": "^0.5.3", + "@backstage/dev-utils": "^0.2.22", + "@backstage/test-utils": "^0.2.5", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^11.2.5", "@testing-library/user-event": "^13.1.8", diff --git a/plugins/tech-insights-backend-module-jsonfc/CHANGELOG.md b/plugins/tech-insights-backend-module-jsonfc/CHANGELOG.md index 3128854594..c79e8e17b6 100644 --- a/plugins/tech-insights-backend-module-jsonfc/CHANGELOG.md +++ b/plugins/tech-insights-backend-module-jsonfc/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-tech-insights-backend-module-jsonfc +## 0.1.9 + +### Patch Changes + +- c77c5c7eb6: Added `backstage.role` to `package.json` +- Updated dependencies + - @backstage/backend-common@0.10.8 + - @backstage/errors@0.2.1 + - @backstage/config@0.1.14 + - @backstage/plugin-tech-insights-common@0.2.2 + - @backstage/plugin-tech-insights-node@0.2.3 + ## 0.1.8 ### Patch Changes diff --git a/plugins/tech-insights-backend-module-jsonfc/package.json b/plugins/tech-insights-backend-module-jsonfc/package.json index 9dfa01769a..ef9a15c261 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.8", + "version": "0.1.9", "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.10.7", - "@backstage/config": "^0.1.13", - "@backstage/errors": "^0.2.0", - "@backstage/plugin-tech-insights-common": "^0.2.1", - "@backstage/plugin-tech-insights-node": "^0.2.2", + "@backstage/backend-common": "^0.10.8", + "@backstage/config": "^0.1.14", + "@backstage/errors": "^0.2.1", + "@backstage/plugin-tech-insights-common": "^0.2.2", + "@backstage/plugin-tech-insights-node": "^0.2.3", "ajv": "^7.0.3", "json-rules-engine": "^6.1.2", "lodash": "^4.17.21", @@ -46,7 +46,7 @@ "winston": "^3.2.1" }, "devDependencies": { - "@backstage/cli": "^0.13.2", + "@backstage/cli": "^0.14.0", "@types/node-cron": "^3.0.1" }, "files": [ diff --git a/plugins/tech-insights-backend/CHANGELOG.md b/plugins/tech-insights-backend/CHANGELOG.md index 36e7aa97a1..36fb06c577 100644 --- a/plugins/tech-insights-backend/CHANGELOG.md +++ b/plugins/tech-insights-backend/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/plugin-tech-insights-backend +## 0.2.5 + +### Patch Changes + +- c77c5c7eb6: Added `backstage.role` to `package.json` +- 538ca90790: Use updated type names from `@backstage/catalog-client` +- Updated dependencies + - @backstage/backend-common@0.10.8 + - @backstage/catalog-client@0.7.0 + - @backstage/errors@0.2.1 + - @backstage/catalog-model@0.10.0 + - @backstage/config@0.1.14 + - @backstage/plugin-tech-insights-common@0.2.2 + - @backstage/plugin-tech-insights-node@0.2.3 + ## 0.2.4 ### Patch Changes diff --git a/plugins/tech-insights-backend/package.json b/plugins/tech-insights-backend/package.json index 96f253519e..eec4379f9d 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.2.4", + "version": "0.2.5", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,13 +34,13 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.10.7", - "@backstage/catalog-client": "^0.6.0", - "@backstage/catalog-model": "^0.9.10", - "@backstage/config": "^0.1.13", - "@backstage/errors": "^0.2.0", - "@backstage/plugin-tech-insights-common": "^0.2.1", - "@backstage/plugin-tech-insights-node": "^0.2.2", + "@backstage/backend-common": "^0.10.8", + "@backstage/catalog-client": "^0.7.0", + "@backstage/catalog-model": "^0.10.0", + "@backstage/config": "^0.1.14", + "@backstage/errors": "^0.2.1", + "@backstage/plugin-tech-insights-common": "^0.2.2", + "@backstage/plugin-tech-insights-node": "^0.2.3", "@types/express": "^4.17.6", "express": "^4.17.1", "express-promise-router": "^4.1.0", @@ -54,8 +54,8 @@ "yn": "^4.0.0" }, "devDependencies": { - "@backstage/backend-test-utils": "^0.1.17", - "@backstage/cli": "^0.13.2", + "@backstage/backend-test-utils": "^0.1.18", + "@backstage/cli": "^0.14.0", "@types/supertest": "^2.0.8", "@types/node-cron": "^3.0.0", "@types/semver": "^7.3.8", diff --git a/plugins/tech-insights-common/CHANGELOG.md b/plugins/tech-insights-common/CHANGELOG.md index 947c22756f..ffe03200f3 100644 --- a/plugins/tech-insights-common/CHANGELOG.md +++ b/plugins/tech-insights-common/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-tech-insights-common +## 0.2.2 + +### Patch Changes + +- c77c5c7eb6: Added `backstage.role` to `package.json` +- Updated dependencies + - @backstage/types@0.1.2 + ## 0.2.1 ### Patch Changes diff --git a/plugins/tech-insights-common/package.json b/plugins/tech-insights-common/package.json index 35e0c956e3..648306ae33 100644 --- a/plugins/tech-insights-common/package.json +++ b/plugins/tech-insights-common/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-tech-insights-common", - "version": "0.2.1", + "version": "0.2.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -35,10 +35,10 @@ "dependencies": { "@types/luxon": "^2.0.5", "luxon": "^2.0.2", - "@backstage/types": "^0.1.1" + "@backstage/types": "^0.1.2" }, "devDependencies": { - "@backstage/cli": "^0.13.2-next.0" + "@backstage/cli": "^0.14.0" }, "files": [ "dist" diff --git a/plugins/tech-insights-node/CHANGELOG.md b/plugins/tech-insights-node/CHANGELOG.md index c38c36ecd9..987459785f 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.2.3 + +### Patch Changes + +- c77c5c7eb6: Added `backstage.role` to `package.json` +- Updated dependencies + - @backstage/backend-common@0.10.8 + - @backstage/config@0.1.14 + - @backstage/plugin-tech-insights-common@0.2.2 + ## 0.2.2 ### Patch Changes diff --git a/plugins/tech-insights-node/package.json b/plugins/tech-insights-node/package.json index 4290d2fc1b..1170d0fc79 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.2.2", + "version": "0.2.3", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -33,15 +33,15 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.10.7", - "@backstage/config": "^0.1.13", - "@backstage/plugin-tech-insights-common": "^0.2.1", + "@backstage/backend-common": "^0.10.8", + "@backstage/config": "^0.1.14", + "@backstage/plugin-tech-insights-common": "^0.2.2", "@types/luxon": "^2.0.5", "luxon": "^2.0.2", "winston": "^3.2.1" }, "devDependencies": { - "@backstage/cli": "^0.13.2" + "@backstage/cli": "^0.14.0" }, "files": [ "dist" diff --git a/plugins/tech-insights/CHANGELOG.md b/plugins/tech-insights/CHANGELOG.md index af16d5f347..e442fb5192 100644 --- a/plugins/tech-insights/CHANGELOG.md +++ b/plugins/tech-insights/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/plugin-tech-insights +## 0.1.9 + +### Patch Changes + +- 1ed305728b: Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5 +- c77c5c7eb6: Added `backstage.role` to `package.json` +- Updated dependencies + - @backstage/core-components@0.8.9 + - @backstage/core-plugin-api@0.6.1 + - @backstage/errors@0.2.1 + - @backstage/plugin-catalog-react@0.6.15 + - @backstage/catalog-model@0.10.0 + - @backstage/theme@0.2.15 + - @backstage/types@0.1.2 + - @backstage/plugin-tech-insights-common@0.2.2 + ## 0.1.8 ### Patch Changes diff --git a/plugins/tech-insights/package.json b/plugins/tech-insights/package.json index d364fa3b40..23281edf9c 100644 --- a/plugins/tech-insights/package.json +++ b/plugins/tech-insights/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-tech-insights", - "version": "0.1.8", + "version": "0.1.9", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -23,14 +23,14 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^0.9.10", - "@backstage/core-components": "^0.8.8", - "@backstage/core-plugin-api": "^0.6.0", - "@backstage/errors": "^0.2.0", - "@backstage/plugin-catalog-react": "^0.6.14", - "@backstage/plugin-tech-insights-common": "^0.2.1", - "@backstage/theme": "^0.2.14", - "@backstage/types": "^0.1.1", + "@backstage/catalog-model": "^0.10.0", + "@backstage/core-components": "^0.8.9", + "@backstage/core-plugin-api": "^0.6.1", + "@backstage/errors": "^0.2.1", + "@backstage/plugin-catalog-react": "^0.6.15", + "@backstage/plugin-tech-insights-common": "^0.2.2", + "@backstage/theme": "^0.2.15", + "@backstage/types": "^0.1.2", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -42,10 +42,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.13.2", - "@backstage/core-app-api": "^0.5.2", - "@backstage/dev-utils": "^0.2.21", - "@backstage/test-utils": "^0.2.4", + "@backstage/cli": "^0.14.0", + "@backstage/core-app-api": "^0.5.3", + "@backstage/dev-utils": "^0.2.22", + "@backstage/test-utils": "^0.2.5", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^11.2.5", "@testing-library/user-event": "^13.1.8", diff --git a/plugins/tech-radar/CHANGELOG.md b/plugins/tech-radar/CHANGELOG.md index bafe2212cf..c74f524f9a 100644 --- a/plugins/tech-radar/CHANGELOG.md +++ b/plugins/tech-radar/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-tech-radar +## 0.5.6 + +### Patch Changes + +- 1ed305728b: Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5 +- c77c5c7eb6: Added `backstage.role` to `package.json` +- Updated dependencies + - @backstage/core-components@0.8.9 + - @backstage/core-plugin-api@0.6.1 + - @backstage/theme@0.2.15 + ## 0.5.5 ### Patch Changes diff --git a/plugins/tech-radar/package.json b/plugins/tech-radar/package.json index 590c5cbd78..c61f0007a8 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.5", + "version": "0.5.6", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,9 +34,9 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/core-components": "^0.8.8", - "@backstage/core-plugin-api": "^0.6.0", - "@backstage/theme": "^0.2.14", + "@backstage/core-components": "^0.8.9", + "@backstage/core-plugin-api": "^0.6.1", + "@backstage/theme": "^0.2.15", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -49,10 +49,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.13.2", - "@backstage/core-app-api": "^0.5.2", - "@backstage/dev-utils": "^0.2.21", - "@backstage/test-utils": "^0.2.4", + "@backstage/cli": "^0.14.0", + "@backstage/core-app-api": "^0.5.3", + "@backstage/dev-utils": "^0.2.22", + "@backstage/test-utils": "^0.2.5", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^11.2.5", "@testing-library/user-event": "^13.1.8", diff --git a/plugins/techdocs-backend/CHANGELOG.md b/plugins/techdocs-backend/CHANGELOG.md index b05e8a6dad..4f814418e6 100644 --- a/plugins/techdocs-backend/CHANGELOG.md +++ b/plugins/techdocs-backend/CHANGELOG.md @@ -1,5 +1,25 @@ # @backstage/plugin-techdocs-backend +## 0.13.4 + +### Patch Changes + +- 453145abba: Do not use cross-fetch in the backend +- 1ed305728b: Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5 +- c77c5c7eb6: Added `backstage.role` to `package.json` +- 811c710a21: Fix bug where tech docs collator stores search indices with wrong entity ref casing. Make the collator to conform legacyPathCasing configuration option. +- 7aeb491394: Replace use of deprecated `ENTITY_DEFAULT_NAMESPACE` constant with `DEFAULT_NAMESPACE`. +- Updated dependencies + - @backstage/backend-common@0.10.8 + - @backstage/catalog-client@0.7.0 + - @backstage/errors@0.2.1 + - @backstage/integration@0.7.3 + - @backstage/catalog-model@0.10.0 + - @backstage/config@0.1.14 + - @backstage/search-common@0.2.3 + - @backstage/techdocs-common@0.11.8 + - @backstage/plugin-catalog-common@0.1.3 + ## 0.13.3 ### Patch Changes diff --git a/plugins/techdocs-backend/package.json b/plugins/techdocs-backend/package.json index 27d2a952d9..0087512e8e 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": "0.13.3", + "version": "0.13.4", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,15 +34,15 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.10.7", - "@backstage/catalog-client": "^0.6.0", - "@backstage/catalog-model": "^0.9.10", - "@backstage/config": "^0.1.13", - "@backstage/errors": "^0.2.0", - "@backstage/integration": "^0.7.2", - "@backstage/plugin-catalog-common": "^0.1.2", - "@backstage/search-common": "^0.2.2", - "@backstage/techdocs-common": "^0.11.7", + "@backstage/backend-common": "^0.10.8", + "@backstage/catalog-client": "^0.7.0", + "@backstage/catalog-model": "^0.10.0", + "@backstage/config": "^0.1.14", + "@backstage/errors": "^0.2.1", + "@backstage/integration": "^0.7.3", + "@backstage/plugin-catalog-common": "^0.1.3", + "@backstage/search-common": "^0.2.3", + "@backstage/techdocs-common": "^0.11.8", "@types/express": "^4.17.6", "dockerode": "^3.3.1", "express": "^4.17.1", @@ -55,8 +55,8 @@ "winston": "^3.2.1" }, "devDependencies": { - "@backstage/cli": "^0.13.2", - "@backstage/test-utils": "^0.2.4", + "@backstage/cli": "^0.14.0", + "@backstage/test-utils": "^0.2.5", "@types/dockerode": "^3.3.0", "msw": "^0.35.0", "supertest": "^6.1.3" diff --git a/plugins/techdocs/CHANGELOG.md b/plugins/techdocs/CHANGELOG.md index 3ff8c0e175..ae4f121cc8 100644 --- a/plugins/techdocs/CHANGELOG.md +++ b/plugins/techdocs/CHANGELOG.md @@ -1,5 +1,26 @@ # @backstage/plugin-techdocs +## 0.13.4 + +### Patch Changes + +- 1ed305728b: Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5 +- c77c5c7eb6: Added `backstage.role` to `package.json` +- 6553985cd4: Match text size of admonitions to main content text size. +- 9df7b43e1a: Improve overall appearance of highlighted code in docs. +- Updated dependencies + - @backstage/core-components@0.8.9 + - @backstage/core-plugin-api@0.6.1 + - @backstage/errors@0.2.1 + - @backstage/integration@0.7.3 + - @backstage/integration-react@0.1.22 + - @backstage/plugin-catalog@0.8.0 + - @backstage/plugin-catalog-react@0.6.15 + - @backstage/plugin-search@0.7.0 + - @backstage/catalog-model@0.10.0 + - @backstage/config@0.1.14 + - @backstage/theme@0.2.15 + ## 0.13.3 ### Patch Changes diff --git a/plugins/techdocs/package.json b/plugins/techdocs/package.json index 6e8594a33b..cfe9f04b6a 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": "0.13.3", + "version": "0.13.4", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -35,17 +35,17 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^0.9.10", - "@backstage/config": "^0.1.13", - "@backstage/core-components": "^0.8.8", - "@backstage/core-plugin-api": "^0.6.0", - "@backstage/errors": "^0.2.0", - "@backstage/integration": "^0.7.2", - "@backstage/integration-react": "^0.1.21", - "@backstage/plugin-catalog": "^0.7.12", - "@backstage/plugin-catalog-react": "^0.6.14", - "@backstage/plugin-search": "^0.6.2", - "@backstage/theme": "^0.2.14", + "@backstage/catalog-model": "^0.10.0", + "@backstage/config": "^0.1.14", + "@backstage/core-components": "^0.8.9", + "@backstage/core-plugin-api": "^0.6.1", + "@backstage/errors": "^0.2.1", + "@backstage/integration": "^0.7.3", + "@backstage/integration-react": "^0.1.22", + "@backstage/plugin-catalog": "^0.8.0", + "@backstage/plugin-catalog-react": "^0.6.15", + "@backstage/plugin-search": "^0.7.0", + "@backstage/theme": "^0.2.15", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -65,10 +65,10 @@ "react-dom": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.13.2", - "@backstage/core-app-api": "^0.5.2", - "@backstage/dev-utils": "^0.2.21", - "@backstage/test-utils": "^0.2.4", + "@backstage/cli": "^0.14.0", + "@backstage/core-app-api": "^0.5.3", + "@backstage/dev-utils": "^0.2.22", + "@backstage/test-utils": "^0.2.5", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^11.2.5", "@testing-library/react-hooks": "^7.0.2", diff --git a/plugins/todo-backend/CHANGELOG.md b/plugins/todo-backend/CHANGELOG.md index a5cb799a70..1da90a1626 100644 --- a/plugins/todo-backend/CHANGELOG.md +++ b/plugins/todo-backend/CHANGELOG.md @@ -1,5 +1,22 @@ # @backstage/plugin-todo-backend +## 0.1.22 + +### Patch Changes + +- c77c5c7eb6: Added `backstage.role` to `package.json` +- edbc03814a: Replace usage of `serializeEntityRef` with `stringifyEntityRef` +- deaf6065db: Adapt to the new `CatalogApi.getLocationByRef` +- 216725b434: Updated to use new names for `parseLocationRef` and `stringifyLocationRef` +- 27eccab216: Replaces use of deprecated catalog-model constants. +- Updated dependencies + - @backstage/backend-common@0.10.8 + - @backstage/catalog-client@0.7.0 + - @backstage/errors@0.2.1 + - @backstage/integration@0.7.3 + - @backstage/catalog-model@0.10.0 + - @backstage/config@0.1.14 + ## 0.1.21 ### Patch Changes diff --git a/plugins/todo-backend/package.json b/plugins/todo-backend/package.json index 90fcee6e55..0cfc768e96 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.21", + "version": "0.1.22", "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.10.7", - "@backstage/catalog-client": "^0.6.0", - "@backstage/catalog-model": "^0.9.10", - "@backstage/config": "^0.1.13", - "@backstage/errors": "^0.2.0", - "@backstage/integration": "^0.7.2", + "@backstage/backend-common": "^0.10.8", + "@backstage/catalog-client": "^0.7.0", + "@backstage/catalog-model": "^0.10.0", + "@backstage/config": "^0.1.14", + "@backstage/errors": "^0.2.1", + "@backstage/integration": "^0.7.3", "@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.13.2", + "@backstage/cli": "^0.14.0", "@types/supertest": "^2.0.8", "msw": "^0.35.0", "supertest": "^6.1.3" diff --git a/plugins/todo/CHANGELOG.md b/plugins/todo/CHANGELOG.md index bec930df20..4dc29b7559 100644 --- a/plugins/todo/CHANGELOG.md +++ b/plugins/todo/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/plugin-todo +## 0.2.1 + +### Patch Changes + +- 1ed305728b: Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5 +- c77c5c7eb6: Added `backstage.role` to `package.json` +- 27eccab216: Replaces use of deprecated catalog-model constants. +- Updated dependencies + - @backstage/core-components@0.8.9 + - @backstage/core-plugin-api@0.6.1 + - @backstage/errors@0.2.1 + - @backstage/plugin-catalog-react@0.6.15 + - @backstage/catalog-model@0.10.0 + - @backstage/theme@0.2.15 + ## 0.2.0 ### Minor Changes diff --git a/plugins/todo/package.json b/plugins/todo/package.json index 274ada538f..cd593bbd40 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.0", + "version": "0.2.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -30,12 +30,12 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^0.9.10", - "@backstage/core-components": "^0.8.8", - "@backstage/core-plugin-api": "^0.6.0", - "@backstage/errors": "^0.2.0", - "@backstage/plugin-catalog-react": "^0.6.14", - "@backstage/theme": "^0.2.14", + "@backstage/catalog-model": "^0.10.0", + "@backstage/core-components": "^0.8.9", + "@backstage/core-plugin-api": "^0.6.1", + "@backstage/errors": "^0.2.1", + "@backstage/plugin-catalog-react": "^0.6.15", + "@backstage/theme": "^0.2.15", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -45,10 +45,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.13.2", - "@backstage/core-app-api": "^0.5.2", - "@backstage/dev-utils": "^0.2.21", - "@backstage/test-utils": "^0.2.4", + "@backstage/cli": "^0.14.0", + "@backstage/core-app-api": "^0.5.3", + "@backstage/dev-utils": "^0.2.22", + "@backstage/test-utils": "^0.2.5", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^11.2.5", "@testing-library/user-event": "^13.1.8", diff --git a/plugins/user-settings/CHANGELOG.md b/plugins/user-settings/CHANGELOG.md index 423e978352..fa42d325e7 100644 --- a/plugins/user-settings/CHANGELOG.md +++ b/plugins/user-settings/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-user-settings +## 0.3.20 + +### Patch Changes + +- 1ed305728b: Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5 +- c77c5c7eb6: Added `backstage.role` to `package.json` +- 12dd25c2a1: Updated example code for registering feature flags in the `EmptyFlags` component +- Updated dependencies + - @backstage/core-components@0.8.9 + - @backstage/core-plugin-api@0.6.1 + - @backstage/theme@0.2.15 + ## 0.3.19 ### Patch Changes diff --git a/plugins/user-settings/package.json b/plugins/user-settings/package.json index ad8fa2142d..d934b17487 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.3.19", + "version": "0.3.20", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,9 +34,9 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/core-components": "^0.8.8", - "@backstage/core-plugin-api": "^0.6.0", - "@backstage/theme": "^0.2.14", + "@backstage/core-components": "^0.8.9", + "@backstage/core-plugin-api": "^0.6.1", + "@backstage/theme": "^0.2.15", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -47,10 +47,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.13.2", - "@backstage/core-app-api": "^0.5.2", - "@backstage/dev-utils": "^0.2.21", - "@backstage/test-utils": "^0.2.4", + "@backstage/cli": "^0.14.0", + "@backstage/core-app-api": "^0.5.3", + "@backstage/dev-utils": "^0.2.22", + "@backstage/test-utils": "^0.2.5", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^11.2.5", "@testing-library/user-event": "^13.1.8", diff --git a/plugins/xcmetrics/CHANGELOG.md b/plugins/xcmetrics/CHANGELOG.md index bcfbf2b88b..1c2188ccf7 100644 --- a/plugins/xcmetrics/CHANGELOG.md +++ b/plugins/xcmetrics/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-xcmetrics +## 0.2.19 + +### Patch Changes + +- 1ed305728b: Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5 +- c77c5c7eb6: Added `backstage.role` to `package.json` +- Updated dependencies + - @backstage/core-components@0.8.9 + - @backstage/core-plugin-api@0.6.1 + - @backstage/errors@0.2.1 + - @backstage/theme@0.2.15 + ## 0.2.18 ### Patch Changes diff --git a/plugins/xcmetrics/package.json b/plugins/xcmetrics/package.json index e9cf5d80ea..8fec920ccb 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.18", + "version": "0.2.19", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -24,10 +24,10 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/core-components": "^0.8.8", - "@backstage/core-plugin-api": "^0.6.0", - "@backstage/errors": "^0.2.0", - "@backstage/theme": "^0.2.14", + "@backstage/core-components": "^0.8.9", + "@backstage/core-plugin-api": "^0.6.1", + "@backstage/errors": "^0.2.1", + "@backstage/theme": "^0.2.15", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -40,10 +40,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.13.2", - "@backstage/core-app-api": "^0.5.2", - "@backstage/dev-utils": "^0.2.21", - "@backstage/test-utils": "^0.2.4", + "@backstage/cli": "^0.14.0", + "@backstage/core-app-api": "^0.5.3", + "@backstage/dev-utils": "^0.2.22", + "@backstage/test-utils": "^0.2.5", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^11.2.5", "@testing-library/user-event": "^13.1.8", diff --git a/yarn.lock b/yarn.lock index d6e8e4e33c..3fe8543023 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1358,6 +1358,18 @@ "@babel/helper-validator-identifier" "^7.16.7" to-fast-properties "^2.0.0" +"@backstage/catalog-model@^0.9.7": + version "0.10.0" + dependencies: + "@backstage/config" "^0.1.14" + "@backstage/errors" "^0.2.1" + "@backstage/types" "^0.1.2" + "@types/json-schema" "^7.0.5" + ajv "^7.0.3" + json-schema "^0.4.0" + lodash "^4.17.21" + uuid "^8.0.0" + "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" @@ -11399,56 +11411,56 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: safe-buffer "^5.1.1" "example-app@link:packages/app": - version "0.2.64" + version "0.2.65" dependencies: - "@backstage/app-defaults" "^0.1.7" - "@backstage/catalog-model" "^0.9.10" - "@backstage/cli" "^0.13.2" - "@backstage/core-app-api" "^0.5.2" - "@backstage/core-components" "^0.8.8" - "@backstage/core-plugin-api" "^0.6.0" - "@backstage/integration-react" "^0.1.21" - "@backstage/plugin-airbrake" "^0.1.3" - "@backstage/plugin-apache-airflow" "^0.1.6" - "@backstage/plugin-api-docs" "^0.7.2" - "@backstage/plugin-azure-devops" "^0.1.14" - "@backstage/plugin-badges" "^0.2.22" - "@backstage/plugin-catalog" "^0.7.12" - "@backstage/plugin-catalog-common" "^0.1.2" - "@backstage/plugin-catalog-graph" "^0.2.10" - "@backstage/plugin-catalog-import" "^0.8.1" - "@backstage/plugin-catalog-react" "^0.6.14" - "@backstage/plugin-circleci" "^0.2.37" - "@backstage/plugin-cloudbuild" "^0.2.35" - "@backstage/plugin-code-coverage" "^0.1.25" - "@backstage/plugin-cost-insights" "^0.11.20" - "@backstage/plugin-explore" "^0.3.29" - "@backstage/plugin-gcp-projects" "^0.3.17" - "@backstage/plugin-github-actions" "^0.4.35" - "@backstage/plugin-gocd" "^0.1.4" - "@backstage/plugin-graphiql" "^0.2.30" - "@backstage/plugin-home" "^0.4.14" - "@backstage/plugin-jenkins" "^0.5.20" - "@backstage/plugin-kafka" "^0.2.28" - "@backstage/plugin-kubernetes" "^0.5.7" - "@backstage/plugin-lighthouse" "^0.2.37" - "@backstage/plugin-newrelic" "^0.3.16" - "@backstage/plugin-newrelic-dashboard" "^0.1.6" - "@backstage/plugin-org" "^0.4.2-next.0" - "@backstage/plugin-pagerduty" "0.3.25" - "@backstage/plugin-permission-react" "^0.3.0" - "@backstage/plugin-rollbar" "^0.3.26" - "@backstage/plugin-scaffolder" "^0.12.2" - "@backstage/plugin-search" "^0.6.2" - "@backstage/plugin-sentry" "^0.3.36" - "@backstage/plugin-shortcuts" "^0.1.22" - "@backstage/plugin-tech-insights" "^0.1.8" - "@backstage/plugin-tech-radar" "^0.5.5" - "@backstage/plugin-techdocs" "^0.13.3" - "@backstage/plugin-todo" "^0.2.0" - "@backstage/plugin-user-settings" "^0.3.19" - "@backstage/search-common" "^0.2.2" - "@backstage/theme" "^0.2.14" + "@backstage/app-defaults" "^0.1.8" + "@backstage/catalog-model" "^0.10.0" + "@backstage/cli" "^0.14.0" + "@backstage/core-app-api" "^0.5.3" + "@backstage/core-components" "^0.8.9" + "@backstage/core-plugin-api" "^0.6.1" + "@backstage/integration-react" "^0.1.22" + "@backstage/plugin-airbrake" "^0.2.0" + "@backstage/plugin-apache-airflow" "^0.1.7" + "@backstage/plugin-api-docs" "^0.7.3" + "@backstage/plugin-azure-devops" "^0.1.15" + "@backstage/plugin-badges" "^0.2.23" + "@backstage/plugin-catalog" "^0.8.0" + "@backstage/plugin-catalog-common" "^0.1.3" + "@backstage/plugin-catalog-graph" "^0.2.11" + "@backstage/plugin-catalog-import" "^0.8.2" + "@backstage/plugin-catalog-react" "^0.6.15" + "@backstage/plugin-circleci" "^0.2.38" + "@backstage/plugin-cloudbuild" "^0.2.36" + "@backstage/plugin-code-coverage" "^0.1.26" + "@backstage/plugin-cost-insights" "^0.11.21" + "@backstage/plugin-explore" "^0.3.30" + "@backstage/plugin-gcp-projects" "^0.3.18" + "@backstage/plugin-github-actions" "^0.4.36" + "@backstage/plugin-gocd" "^0.1.5" + "@backstage/plugin-graphiql" "^0.2.31" + "@backstage/plugin-home" "^0.4.15" + "@backstage/plugin-jenkins" "^0.5.21" + "@backstage/plugin-kafka" "^0.2.29" + "@backstage/plugin-kubernetes" "^0.5.8" + "@backstage/plugin-lighthouse" "^0.2.38" + "@backstage/plugin-newrelic" "^0.3.17" + "@backstage/plugin-newrelic-dashboard" "^0.1.7" + "@backstage/plugin-org" "^0.4.3" + "@backstage/plugin-pagerduty" "0.3.26" + "@backstage/plugin-permission-react" "^0.3.1" + "@backstage/plugin-rollbar" "^0.3.27" + "@backstage/plugin-scaffolder" "^0.12.3" + "@backstage/plugin-search" "^0.7.0" + "@backstage/plugin-sentry" "^0.3.37" + "@backstage/plugin-shortcuts" "^0.2.0" + "@backstage/plugin-tech-insights" "^0.1.9" + "@backstage/plugin-tech-radar" "^0.5.6" + "@backstage/plugin-techdocs" "^0.13.4" + "@backstage/plugin-todo" "^0.2.1" + "@backstage/plugin-user-settings" "^0.3.20" + "@backstage/search-common" "^0.2.3" + "@backstage/theme" "^0.2.15" "@material-ui/core" "^4.12.2" "@material-ui/icons" "^4.9.1" "@material-ui/lab" "4.0.0-alpha.57" @@ -22901,20 +22913,20 @@ tdigest@^0.1.1: bintrees "1.0.1" "techdocs-cli-embedded-app@link:packages/techdocs-cli-embedded-app": - version "0.2.63" + version "0.2.64" dependencies: - "@backstage/app-defaults" "^0.1.7" - "@backstage/catalog-model" "^0.9.10" - "@backstage/cli" "^0.13.2" - "@backstage/config" "^0.1.13" - "@backstage/core-app-api" "^0.5.2" - "@backstage/core-components" "^0.8.8" - "@backstage/core-plugin-api" "^0.6.0" - "@backstage/integration-react" "^0.1.21" - "@backstage/plugin-catalog" "^0.7.12" - "@backstage/plugin-techdocs" "^0.13.3" - "@backstage/test-utils" "^0.2.4" - "@backstage/theme" "^0.2.14" + "@backstage/app-defaults" "^0.1.8" + "@backstage/catalog-model" "^0.10.0" + "@backstage/cli" "^0.14.0" + "@backstage/config" "^0.1.14" + "@backstage/core-app-api" "^0.5.3" + "@backstage/core-components" "^0.8.9" + "@backstage/core-plugin-api" "^0.6.1" + "@backstage/integration-react" "^0.1.22" + "@backstage/plugin-catalog" "^0.8.0" + "@backstage/plugin-techdocs" "^0.13.4" + "@backstage/test-utils" "^0.2.5" + "@backstage/theme" "^0.2.15" "@material-ui/core" "^4.11.0" "@material-ui/icons" "^4.9.1" history "^5.0.0" From 7f425651150632c0a37d6b4c84b0f63371c4661c Mon Sep 17 00:00:00 2001 From: Karan Shah Date: Thu, 17 Feb 2022 10:43:43 +0000 Subject: [PATCH 167/383] Add Airbrake stuff to vocab.txt Signed-off-by: Karan Shah --- .github/styles/vocab.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/styles/vocab.txt b/.github/styles/vocab.txt index 8303510e77..f81916cfba 100644 --- a/.github/styles/vocab.txt +++ b/.github/styles/vocab.txt @@ -3,6 +3,8 @@ accessors addon addons Airbrake +Airbrakes +airbrake Anddddd Apdex api From 63351cb855655f860e9e0bb052f2e1689bf1cb32 Mon Sep 17 00:00:00 2001 From: Johan Haals Date: Thu, 17 Feb 2022 12:01:35 +0100 Subject: [PATCH 168/383] wrap columnFactories in object Signed-off-by: Johan Haals --- plugins/catalog-react/api-report.md | 110 +++---- .../components/EntityTable/EntityTable.tsx | 8 +- .../src/components/EntityTable/columns.tsx | 270 +++++++++--------- .../src/components/EntityTable/index.ts | 1 + .../src/components/EntityTable/presets.tsx | 31 +- 5 files changed, 202 insertions(+), 218 deletions(-) diff --git a/plugins/catalog-react/api-report.md b/plugins/catalog-react/api-report.md index 4a1b9a9871..104472cbfe 100644 --- a/plugins/catalog-react/api-report.md +++ b/plugins/catalog-react/api-report.md @@ -102,42 +102,32 @@ export type CatalogReactUserListPickerClassKey = export const catalogRouteRef: RouteRef; // @public (undocumented) -function createDomainColumn(): TableColumn; - -// @public (undocumented) -function createEntityRefColumn(options: { - defaultKind?: string; -}): TableColumn; - -// @public (undocumented) -function createEntityRelationColumn({ - title, - relation, - defaultKind, - filter: entityFilter, -}: { - title: string; - relation: string; - defaultKind?: string; - filter?: { - kind: string; - }; -}): TableColumn; - -// @public (undocumented) -function createMetadataDescriptionColumn(): TableColumn; - -// @public (undocumented) -function createOwnerColumn(): TableColumn; - -// @public (undocumented) -function createSpecLifecycleColumn(): TableColumn; - -// @public (undocumented) -function createSpecTypeColumn(): TableColumn; - -// @public (undocumented) -function createSystemColumn(): TableColumn; +export const columnFactories: Readonly<{ + createEntityRefColumn(options: { + defaultKind?: string; + }): TableColumn; + createEntityRelationColumn({ + title, + relation, + defaultKind, + filter: entityFilter, + }: { + title: string; + relation: string; + defaultKind?: string | undefined; + filter?: + | { + kind: string; + } + | undefined; + }): TableColumn; + createOwnerColumn(): TableColumn; + createDomainColumn(): TableColumn; + createSystemColumn(): TableColumn; + createMetadataDescriptionColumn(): TableColumn; + createSpecLifecycleColumn(): TableColumn; + createSpecTypeColumn(): TableColumn; +}>; // @public (undocumented) export type DefaultEntityFilters = { @@ -329,24 +319,38 @@ export type EntitySourceLocation = { integrationType?: string; }; -// Warning: (ae-missing-release-tag) "EntityTable" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public -export function EntityTable( - props: EntityTableProps, -): JSX.Element; - -// @public (undocumented) -export namespace EntityTable { - 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) - systemEntityColumns: TableColumn[]; - var // (undocumented) - componentEntityColumns: TableColumn[]; -} +export const EntityTable: { + (props: EntityTableProps): JSX.Element; + columns: Readonly<{ + createEntityRefColumn(options: { + defaultKind?: string | undefined; + }): TableColumn; + createEntityRelationColumn({ + title, + relation, + defaultKind, + filter: entityFilter, + }: { + title: string; + relation: string; + defaultKind?: string | undefined; + filter?: + | { + kind: string; + } + | undefined; + }): TableColumn; + createOwnerColumn(): TableColumn; + createDomainColumn(): TableColumn; + createSystemColumn(): TableColumn; + createMetadataDescriptionColumn(): TableColumn; + createSpecLifecycleColumn(): TableColumn; + createSpecTypeColumn(): TableColumn; + }>; + systemEntityColumns: TableColumn[]; + componentEntityColumns: TableColumn[]; +}; // @public export interface EntityTableProps { diff --git a/plugins/catalog-react/src/components/EntityTable/EntityTable.tsx b/plugins/catalog-react/src/components/EntityTable/EntityTable.tsx index 1248721246..879a35ffd0 100644 --- a/plugins/catalog-react/src/components/EntityTable/EntityTable.tsx +++ b/plugins/catalog-react/src/components/EntityTable/EntityTable.tsx @@ -17,12 +17,12 @@ import { Entity } from '@backstage/catalog-model'; import { makeStyles } from '@material-ui/core'; import React, { ReactNode } from 'react'; -import * as columnFactories from './columns'; +import { columnFactories } from './columns'; import { componentEntityColumns, systemEntityColumns } from './presets'; import { Table, TableColumn } from '@backstage/core-components'; /** - * Props for {@link (EntityTable:function)}. + * Props for {@link EntityTable}. * * @public */ @@ -48,7 +48,7 @@ const useStyles = makeStyles(theme => ({ * * @public */ -export function EntityTable(props: EntityTableProps) { +export const EntityTable = (props: EntityTableProps) => { const { entities, title, @@ -85,7 +85,7 @@ export function EntityTable(props: EntityTableProps) { data={entities} /> ); -} +}; EntityTable.columns = columnFactories; diff --git a/plugins/catalog-react/src/components/EntityTable/columns.tsx b/plugins/catalog-react/src/components/EntityTable/columns.tsx index f6198fa1dc..d6c3582af6 100644 --- a/plugins/catalog-react/src/components/EntityTable/columns.tsx +++ b/plugins/catalog-react/src/components/EntityTable/columns.tsx @@ -30,150 +30,136 @@ import { } from '../EntityRefLink'; /** @public */ -export function createEntityRefColumn(options: { - defaultKind?: string; -}): TableColumn { - const { defaultKind } = options; - function formatContent(entity: T): string { - return ( - entity.metadata?.title || - formatEntityRefTitle(entity, { - defaultKind, - }) - ); - } - - return { - title: 'Name', - highlight: true, - customFilterAndSearch(filter, entity) { - // TODO: We could implement this more efficiently, like searching over - // each field that is displayed individually (kind, namespace, name). - // but that might confuse the user as it will behave different than a - // simple text search. - // Another alternative would be to cache the values. But writing them - // into the entity feels bad too. - return formatContent(entity).includes(filter); - }, - customSort(entity1, entity2) { - // TODO: We could implement this more efficiently by comparing field by field. - // This has similar issues as above. - return formatContent(entity1).localeCompare(formatContent(entity2)); - }, - render: entity => ( - - ), - }; -} - -/** @public */ -export function createEntityRelationColumn({ - title, - relation, - defaultKind, - filter: entityFilter, -}: { - title: string; - relation: string; - defaultKind?: string; - filter?: { kind: string }; -}): TableColumn { - function getRelations(entity: T): EntityName[] { - return getEntityRelations(entity, relation, entityFilter); - } - - function formatContent(entity: T): string { - return getRelations(entity) - .map(r => formatEntityRefTitle(r, { defaultKind })) - .join(', '); - } - - return { - title, - customFilterAndSearch(filter, entity) { - return formatContent(entity).includes(filter); - }, - customSort(entity1, entity2) { - return formatContent(entity1).localeCompare(formatContent(entity2)); - }, - render: entity => { +export const columnFactories = Object.freeze({ + createEntityRefColumn(options: { + defaultKind?: string; + }): TableColumn { + const { defaultKind } = options; + function formatContent(entity: T): string { return ( - + entity.metadata?.title || + formatEntityRefTitle(entity, { + defaultKind, + }) ); - }, - }; -} + } -/** @public */ -export function createOwnerColumn(): TableColumn { - return createEntityRelationColumn({ - title: 'Owner', - relation: RELATION_OWNED_BY, - defaultKind: 'group', - }); -} + return { + title: 'Name', + highlight: true, + customFilterAndSearch(filter, entity) { + // TODO: We could implement this more efficiently, like searching over + // each field that is displayed individually (kind, namespace, name). + // but that might confuse the user as it will behave different than a + // simple text search. + // Another alternative would be to cache the values. But writing them + // into the entity feels bad too. + return formatContent(entity).includes(filter); + }, + customSort(entity1, entity2) { + // TODO: We could implement this more efficiently by comparing field by field. + // This has similar issues as above. + return formatContent(entity1).localeCompare(formatContent(entity2)); + }, + render: entity => ( + + ), + }; + }, + createEntityRelationColumn({ + title, + relation, + defaultKind, + filter: entityFilter, + }: { + title: string; + relation: string; + defaultKind?: string; + filter?: { kind: string }; + }): TableColumn { + function getRelations(entity: T): EntityName[] { + return getEntityRelations(entity, relation, entityFilter); + } -/** @public */ -export function createDomainColumn(): TableColumn { - return createEntityRelationColumn({ - title: 'Domain', - relation: RELATION_PART_OF, - defaultKind: 'domain', - filter: { - kind: 'domain', - }, - }); -} + function formatContent(entity: T): string { + return getRelations(entity) + .map(r => formatEntityRefTitle(r, { defaultKind })) + .join(', '); + } -/** @public */ -export function createSystemColumn(): TableColumn { - return createEntityRelationColumn({ - title: 'System', - relation: RELATION_PART_OF, - defaultKind: 'system', - filter: { - kind: 'system', - }, - }); -} - -/** @public */ -export function createMetadataDescriptionColumn< - T extends Entity, ->(): TableColumn { - return { - title: 'Description', - field: 'metadata.description', - render: entity => ( - - ), - width: 'auto', - }; -} - -/** @public */ -export function createSpecLifecycleColumn(): TableColumn { - return { - title: 'Lifecycle', - field: 'spec.lifecycle', - }; -} - -/** @public */ -export function createSpecTypeColumn(): TableColumn { - return { - title: 'Type', - field: 'spec.type', - }; -} + return { + title, + customFilterAndSearch(filter, entity) { + return formatContent(entity).includes(filter); + }, + customSort(entity1, entity2) { + return formatContent(entity1).localeCompare(formatContent(entity2)); + }, + render: entity => { + return ( + + ); + }, + }; + }, + createOwnerColumn(): TableColumn { + return this.createEntityRelationColumn({ + title: 'Owner', + relation: RELATION_OWNED_BY, + defaultKind: 'group', + }); + }, + createDomainColumn(): TableColumn { + return this.createEntityRelationColumn({ + title: 'Domain', + relation: RELATION_PART_OF, + defaultKind: 'domain', + filter: { + kind: 'domain', + }, + }); + }, + createSystemColumn(): TableColumn { + return this.createEntityRelationColumn({ + title: 'System', + relation: RELATION_PART_OF, + defaultKind: 'system', + filter: { + kind: 'system', + }, + }); + }, + createMetadataDescriptionColumn(): TableColumn { + return { + title: 'Description', + field: 'metadata.description', + render: entity => ( + + ), + width: 'auto', + }; + }, + createSpecLifecycleColumn(): TableColumn { + return { + title: 'Lifecycle', + field: 'spec.lifecycle', + }; + }, + createSpecTypeColumn(): TableColumn { + return { + title: 'Type', + field: 'spec.type', + }; + }, +}); diff --git a/plugins/catalog-react/src/components/EntityTable/index.ts b/plugins/catalog-react/src/components/EntityTable/index.ts index 2ed07f9823..5fb651fe72 100644 --- a/plugins/catalog-react/src/components/EntityTable/index.ts +++ b/plugins/catalog-react/src/components/EntityTable/index.ts @@ -15,4 +15,5 @@ */ export { EntityTable } from './EntityTable'; +export { columnFactories } from './columns'; export type { EntityTableProps } from './EntityTable'; diff --git a/plugins/catalog-react/src/components/EntityTable/presets.tsx b/plugins/catalog-react/src/components/EntityTable/presets.tsx index 2ddffb0b7a..971ecfed20 100644 --- a/plugins/catalog-react/src/components/EntityTable/presets.tsx +++ b/plugins/catalog-react/src/components/EntityTable/presets.tsx @@ -15,29 +15,22 @@ */ import { ComponentEntity, SystemEntity } from '@backstage/catalog-model'; -import { - createDomainColumn, - createEntityRefColumn, - createMetadataDescriptionColumn, - createOwnerColumn, - createSpecLifecycleColumn, - createSpecTypeColumn, - createSystemColumn, -} from './columns'; +import { columnFactories } from './columns'; + import { TableColumn } from '@backstage/core-components'; export const systemEntityColumns: TableColumn[] = [ - createEntityRefColumn({ defaultKind: 'system' }), - createDomainColumn(), - createOwnerColumn(), - createMetadataDescriptionColumn(), + columnFactories.createEntityRefColumn({ defaultKind: 'system' }), + columnFactories.createDomainColumn(), + columnFactories.createOwnerColumn(), + columnFactories.createMetadataDescriptionColumn(), ]; export const componentEntityColumns: TableColumn[] = [ - createEntityRefColumn({ defaultKind: 'component' }), - createSystemColumn(), - createOwnerColumn(), - createSpecTypeColumn(), - createSpecLifecycleColumn(), - createMetadataDescriptionColumn(), + columnFactories.createEntityRefColumn({ defaultKind: 'component' }), + columnFactories.createSystemColumn(), + columnFactories.createOwnerColumn(), + columnFactories.createSpecTypeColumn(), + columnFactories.createSpecLifecycleColumn(), + columnFactories.createMetadataDescriptionColumn(), ]; From b04f99e0a3f3b47d5a1aa1f880a574a79fb78e3b Mon Sep 17 00:00:00 2001 From: Johan Haals Date: Thu, 17 Feb 2022 12:02:00 +0100 Subject: [PATCH 169/383] do not allow errors in plugins/catalog-react Signed-off-by: Johan Haals --- scripts/api-extractor.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/api-extractor.ts b/scripts/api-extractor.ts index 2958b5b719..cd1a03b6be 100644 --- a/scripts/api-extractor.ts +++ b/scripts/api-extractor.ts @@ -223,6 +223,7 @@ const NO_WARNING_PACKAGES = [ 'plugins/catalog-backend-module-msgraph', 'plugins/catalog-common', 'plugins/catalog-graph', + 'plugins/catalog-react', 'plugins/permission-backend', 'plugins/permission-common', 'plugins/permission-node', From e2e0b6625c8a431d5454610fd915b59b5227f93e Mon Sep 17 00:00:00 2001 From: Johan Haals Date: Thu, 17 Feb 2022 12:03:16 +0100 Subject: [PATCH 170/383] add changeset Signed-off-by: Johan Haals --- .changeset/large-baboons-wash.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/large-baboons-wash.md diff --git a/.changeset/large-baboons-wash.md b/.changeset/large-baboons-wash.md new file mode 100644 index 0000000000..ce17e4554d --- /dev/null +++ b/.changeset/large-baboons-wash.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-react': patch +--- + +Improved API documentation From 3884bf0348cf15d1815ec4723a3dc8769f2c5af3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Thu, 17 Feb 2022 12:07:48 +0100 Subject: [PATCH 171/383] fix casing of sub and ent claims in default sign-in resolvers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .changeset/honest-apples-notice.md | 18 +++++++++++++ .../src/providers/github/provider.ts | 14 ++++++++-- .../src/providers/gitlab/provider.ts | 16 ++++++++++-- .../src/providers/google/provider.ts | 15 ++++++++++- .../src/providers/microsoft/provider.ts | 14 ++++++++-- .../src/providers/oauth2/index.ts | 1 - .../src/providers/oauth2/provider.ts | 15 ++++++++++- .../auth-backend/src/providers/oidc/index.ts | 1 + .../src/providers/oidc/provider.ts | 26 ++++++++++++++----- .../src/providers/okta/provider.ts | 16 +++++++++++- .../src/providers/saml/provider.ts | 15 ++++++++++- 11 files changed, 134 insertions(+), 17 deletions(-) create mode 100644 .changeset/honest-apples-notice.md diff --git a/.changeset/honest-apples-notice.md b/.changeset/honest-apples-notice.md new file mode 100644 index 0000000000..da517b95a7 --- /dev/null +++ b/.changeset/honest-apples-notice.md @@ -0,0 +1,18 @@ +--- +'@backstage/plugin-auth-backend': minor +--- + +**BREAKING**: The default sign-in resolvers for all providers, if you choose to +use them, now emit the token `sub` and `ent` claims on the standard, +all-lowercase form, instead of the mixed-case form. The mixed-case form causes +problems for implementations that naively do string comparisons on refs. The end +result is that you may for example see your Backstage token `sub` claim now +become `'user:default/my-id'` instead of `'user:default/My-ID'`. + +On a related note, specifically the SAML provider now correctly issues both +`sub` and `ent` claims, and on the full entity ref form instead of the short +form with only the ID. + +**NOTE**: For a long time, it has been strongly recommended that you provide +your own sign-in resolver instead of using the builtin ones, and that will +become mandatory in the future. diff --git a/plugins/auth-backend/src/providers/github/provider.ts b/plugins/auth-backend/src/providers/github/provider.ts index ec7f8cafa6..29e8679fe0 100644 --- a/plugins/auth-backend/src/providers/github/provider.ts +++ b/plugins/auth-backend/src/providers/github/provider.ts @@ -14,6 +14,10 @@ * limitations under the License. */ +import { + DEFAULT_NAMESPACE, + stringifyEntityRef, +} from '@backstage/catalog-model'; import express from 'express'; import { Logger } from 'winston'; import { Profile as PassportProfile } from 'passport'; @@ -247,10 +251,16 @@ export const githubDefaultSignInResolver: SignInResolver< const userId = fullProfile.username || fullProfile.id; + const entityRef = stringifyEntityRef({ + kind: 'User', + namespace: DEFAULT_NAMESPACE, + name: userId, + }); + const token = await ctx.tokenIssuer.issueToken({ claims: { - sub: `user:default/${userId}`, - ent: [`user:default/${userId}`], + sub: entityRef, + ent: [entityRef], }, }); diff --git a/plugins/auth-backend/src/providers/gitlab/provider.ts b/plugins/auth-backend/src/providers/gitlab/provider.ts index 6689aba884..59f9a5a4cb 100644 --- a/plugins/auth-backend/src/providers/gitlab/provider.ts +++ b/plugins/auth-backend/src/providers/gitlab/provider.ts @@ -14,10 +14,13 @@ * limitations under the License. */ +import { + DEFAULT_NAMESPACE, + stringifyEntityRef, +} from '@backstage/catalog-model'; import express from 'express'; import { Strategy as GitlabStrategy } from 'passport-gitlab2'; import { Logger } from 'winston'; - import { executeRedirectStrategy, executeFrameHandlerStrategy, @@ -71,8 +74,17 @@ export const gitlabDefaultSignInResolver: SignInResolver = async ( id = profile.email.split('@')[0]; } + const entityRef = stringifyEntityRef({ + kind: 'User', + namespace: DEFAULT_NAMESPACE, + name: id, + }); + const token = await ctx.tokenIssuer.issueToken({ - claims: { sub: `user:default/${id}`, ent: [`user:default/${id}`] }, + claims: { + sub: entityRef, + ent: [entityRef], + }, }); return { id, token }; diff --git a/plugins/auth-backend/src/providers/google/provider.ts b/plugins/auth-backend/src/providers/google/provider.ts index fbaf8c7462..e5e5698ec4 100644 --- a/plugins/auth-backend/src/providers/google/provider.ts +++ b/plugins/auth-backend/src/providers/google/provider.ts @@ -14,6 +14,10 @@ * limitations under the License. */ +import { + DEFAULT_NAMESPACE, + stringifyEntityRef, +} from '@backstage/catalog-model'; import express from 'express'; import passport from 'passport'; import { Strategy as GoogleStrategy } from 'passport-google-oauth20'; @@ -226,8 +230,17 @@ const googleDefaultSignInResolver: SignInResolver = async ( userId = profile.email.split('@')[0]; } + const entityRef = stringifyEntityRef({ + kind: 'User', + namespace: DEFAULT_NAMESPACE, + name: userId, + }); + const token = await ctx.tokenIssuer.issueToken({ - claims: { sub: `user:default/${userId}`, ent: [`user:default/${userId}`] }, + claims: { + sub: entityRef, + ent: [entityRef], + }, }); return { id: userId, token }; diff --git a/plugins/auth-backend/src/providers/microsoft/provider.ts b/plugins/auth-backend/src/providers/microsoft/provider.ts index 25c940547b..98f94811bd 100644 --- a/plugins/auth-backend/src/providers/microsoft/provider.ts +++ b/plugins/auth-backend/src/providers/microsoft/provider.ts @@ -14,6 +14,10 @@ * limitations under the License. */ +import { + DEFAULT_NAMESPACE, + stringifyEntityRef, +} from '@backstage/catalog-model'; import express from 'express'; import passport from 'passport'; import { Strategy as MicrosoftStrategy } from 'passport-microsoft'; @@ -231,10 +235,16 @@ export const microsoftDefaultSignInResolver: SignInResolver< const userId = profile.email.split('@')[0]; + const entityRef = stringifyEntityRef({ + kind: 'User', + namespace: DEFAULT_NAMESPACE, + name: userId, + }); + const token = await ctx.tokenIssuer.issueToken({ claims: { - sub: `user:default/${userId}`, - ent: [`user:default/${userId}`], + sub: entityRef, + ent: [entityRef], }, }); diff --git a/plugins/auth-backend/src/providers/oauth2/index.ts b/plugins/auth-backend/src/providers/oauth2/index.ts index 767466f8f6..d68208a148 100644 --- a/plugins/auth-backend/src/providers/oauth2/index.ts +++ b/plugins/auth-backend/src/providers/oauth2/index.ts @@ -15,5 +15,4 @@ */ export { createOAuth2Provider } from './provider'; - export type { OAuth2ProviderOptions } from './provider'; diff --git a/plugins/auth-backend/src/providers/oauth2/provider.ts b/plugins/auth-backend/src/providers/oauth2/provider.ts index 0906005791..d09337f5ad 100644 --- a/plugins/auth-backend/src/providers/oauth2/provider.ts +++ b/plugins/auth-backend/src/providers/oauth2/provider.ts @@ -14,6 +14,10 @@ * limitations under the License. */ +import { + DEFAULT_NAMESPACE, + stringifyEntityRef, +} from '@backstage/catalog-model'; import express from 'express'; import passport from 'passport'; import { Strategy as OAuth2Strategy } from 'passport-oauth2'; @@ -210,8 +214,17 @@ export const oAuth2DefaultSignInResolver: SignInResolver = async ( const userId = profile.email.split('@')[0]; + const entityRef = stringifyEntityRef({ + kind: 'User', + namespace: DEFAULT_NAMESPACE, + name: userId, + }); + const token = await ctx.tokenIssuer.issueToken({ - claims: { sub: `user:default/${userId}`, ent: [`user:default/${userId}`] }, + claims: { + sub: entityRef, + ent: [entityRef], + }, }); return { id: userId, token }; diff --git a/plugins/auth-backend/src/providers/oidc/index.ts b/plugins/auth-backend/src/providers/oidc/index.ts index 39bd02928d..e63c9920df 100644 --- a/plugins/auth-backend/src/providers/oidc/index.ts +++ b/plugins/auth-backend/src/providers/oidc/index.ts @@ -13,5 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + export type { OidcAuthResult, OidcProviderOptions } from './provider'; export { createOidcProvider } from './provider'; diff --git a/plugins/auth-backend/src/providers/oidc/provider.ts b/plugins/auth-backend/src/providers/oidc/provider.ts index 9ccdf25f74..b4f34cd127 100644 --- a/plugins/auth-backend/src/providers/oidc/provider.ts +++ b/plugins/auth-backend/src/providers/oidc/provider.ts @@ -14,6 +14,10 @@ * limitations under the License. */ +import { + DEFAULT_NAMESPACE, + stringifyEntityRef, +} from '@backstage/catalog-model'; import express from 'express'; import { Client, @@ -211,21 +215,31 @@ export class OidcAuthProvider implements OAuthHandlers { } } -export const oAuth2DefaultSignInResolver: SignInResolver< - OidcAuthResult -> = async (info, ctx) => { +export const oidcDefaultSignInResolver: SignInResolver = async ( + info, + ctx, +) => { const { profile } = info; if (!profile.email) { throw new Error('Profile contained no email'); } + const userId = profile.email.split('@')[0]; + + const entityRef = stringifyEntityRef({ + kind: 'User', + namespace: DEFAULT_NAMESPACE, + name: userId, + }); + const token = await ctx.tokenIssuer.issueToken({ claims: { - sub: `user:default/${userId}`, - ent: [`user:default/${userId}`], + sub: entityRef, + ent: [entityRef], }, }); + return { id: userId, token }; }; @@ -289,7 +303,7 @@ export const createOidcProvider = ( }, }); const signInResolverFn = - options?.signIn?.resolver ?? oAuth2DefaultSignInResolver; + options?.signIn?.resolver ?? oidcDefaultSignInResolver; const signInResolver: SignInResolver = info => signInResolverFn(info, { catalogIdentityClient, diff --git a/plugins/auth-backend/src/providers/okta/provider.ts b/plugins/auth-backend/src/providers/okta/provider.ts index 0ba7d241d3..26f586c578 100644 --- a/plugins/auth-backend/src/providers/okta/provider.ts +++ b/plugins/auth-backend/src/providers/okta/provider.ts @@ -13,6 +13,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + +import { + DEFAULT_NAMESPACE, + stringifyEntityRef, +} from '@backstage/catalog-model'; import express from 'express'; import { OAuthAdapter, @@ -235,8 +240,17 @@ export const oktaDefaultSignInResolver: SignInResolver = async ( // TODO(Rugvip): Hardcoded to the local part of the email for now const userId = profile.email.split('@')[0]; + const entityRef = stringifyEntityRef({ + kind: 'User', + namespace: DEFAULT_NAMESPACE, + name: userId, + }); + const token = await ctx.tokenIssuer.issueToken({ - claims: { sub: `user:default/${userId}`, ent: [`user:default/${userId}`] }, + claims: { + sub: entityRef, + ent: [entityRef], + }, }); return { id: userId, token }; diff --git a/plugins/auth-backend/src/providers/saml/provider.ts b/plugins/auth-backend/src/providers/saml/provider.ts index 1ca8cf0d5d..4458d423ef 100644 --- a/plugins/auth-backend/src/providers/saml/provider.ts +++ b/plugins/auth-backend/src/providers/saml/provider.ts @@ -14,6 +14,10 @@ * limitations under the License. */ +import { + DEFAULT_NAMESPACE, + stringifyEntityRef, +} from '@backstage/catalog-model'; import express from 'express'; import { SamlConfig } from 'passport-saml/lib/passport-saml/types'; import { @@ -150,8 +154,17 @@ const samlDefaultSignInResolver: SignInResolver = async ( ) => { const id = info.result.fullProfile.nameID; + const entityRef = stringifyEntityRef({ + kind: 'User', + namespace: DEFAULT_NAMESPACE, + name: id, + }); + const token = await ctx.tokenIssuer.issueToken({ - claims: { sub: id }, + claims: { + sub: entityRef, + ent: [entityRef], + }, }); return { id, token }; From 8e64530892639c4a0677eb61273e3b0332d50730 Mon Sep 17 00:00:00 2001 From: Karan Shah Date: Thu, 17 Feb 2022 11:14:03 +0000 Subject: [PATCH 172/383] Test ExtractAirbrakeConfig.ts Signed-off-by: Karan Shah --- .../src/config/ExtractAirbrakeConfig.test.ts | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 plugins/airbrake-backend/src/config/ExtractAirbrakeConfig.test.ts diff --git a/plugins/airbrake-backend/src/config/ExtractAirbrakeConfig.test.ts b/plugins/airbrake-backend/src/config/ExtractAirbrakeConfig.test.ts new file mode 100644 index 0000000000..d823d8134e --- /dev/null +++ b/plugins/airbrake-backend/src/config/ExtractAirbrakeConfig.test.ts @@ -0,0 +1,56 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { getVoidLogger } from '@backstage/backend-common'; +import { ConfigReader } from '@backstage/config'; +import { extractAirbrakeConfig } from './ExtractAirbrakeConfig'; +import * as winston from 'winston'; + +describe('ExtractAirbrakeConfig', () => { + let oldProcessEnv: NodeJS.ProcessEnv; + let voidLogger: winston.Logger; + + beforeEach(() => { + oldProcessEnv = process.env; + voidLogger = getVoidLogger(); + }); + + it('does not fail in development', () => { + process.env = { + ...oldProcessEnv, + NODE_ENV: 'development', + }; + + const config = new ConfigReader({}); + + expect(() => extractAirbrakeConfig(config, voidLogger)).not.toThrow(); + const airbrakeConfig = extractAirbrakeConfig(config, voidLogger); + expect(airbrakeConfig.apiKey).toStrictEqual(''); + }); + + it('fails in production', () => { + process.env = { + ...oldProcessEnv, + NODE_ENV: 'production', + }; + + const config = new ConfigReader({}); + expect(() => extractAirbrakeConfig(config, voidLogger)).toThrow(); + }); + + afterEach(() => { + process.env = { ...oldProcessEnv }; + }); +}); From f39c1e6036356840481e1a16dd79a9138e4b5078 Mon Sep 17 00:00:00 2001 From: Lorenzo Orsatti <49567430+lorsatti@users.noreply.github.com> Date: Wed, 16 Feb 2022 13:11:32 +0100 Subject: [PATCH 173/383] update Dockerfile to node:16-bullseye-slim, add sqlite3 dependencies Signed-off-by: Lorenzo Orsatti <49567430+lorsatti@users.noreply.github.com> --- .changeset/young-guests-confess.md | 28 +++++++++++++++++++ docs/deployment/docker.md | 25 ++++++++++++++--- docs/local-dev/cli-build-system.md | 10 +++++-- packages/backend/Dockerfile | 8 +++++- .../default-app/packages/backend/Dockerfile | 8 +++++- 5 files changed, 71 insertions(+), 8 deletions(-) create mode 100644 .changeset/young-guests-confess.md diff --git a/.changeset/young-guests-confess.md b/.changeset/young-guests-confess.md new file mode 100644 index 0000000000..c27c99c147 --- /dev/null +++ b/.changeset/young-guests-confess.md @@ -0,0 +1,28 @@ +--- +'@backstage/create-app': patch +--- + +To reflect the updated `knex` and `@vscode/sqlite3` dependencies introduced with [v0.4.19](https://github.com/backstage/backstage/blob/master/packages/create-app/CHANGELOG.md#0419), we update our example `Dockerfile`, adding `@vscode/sqlite3` build dependencies to the image. Further on, we updated it to the `node:16-bullseye-slim` base image. + +To apply this update to an existing app, make the following change to `packages/backend/Dockerfile`: + +```diff +-FROM node:14-buster-slim ++FROM node:16-bullseye-slim +``` + +and, _only if you are using sqlite3 in your app_: + +```diff +RUN tar xzf skeleton.tar.gz && rm skeleton.tar.gz ++ ++# install sqlite3 dependencies ++RUN apt-get update && \ ++ apt-get install -y libsqlite3-dev python3 cmake g++ && \ ++ rm -rf /var/lib/apt/lists/* && \ ++ yarn config set python /usr/bin/python3 + +RUN yarn install --frozen-lockfile --production --network-timeout 300000 && rm -rf "$(yarn cache dir)" +``` + +If you are using a multi-stage Docker build for your app, please refer to the [updated examples](https://github.com/backstage/backstage/blob/master/docs/deployment/docker.md#multi-stage-build) in the documentation. diff --git a/docs/deployment/docker.md b/docs/deployment/docker.md index 6f58abe769..36967f352a 100644 --- a/docs/deployment/docker.md +++ b/docs/deployment/docker.md @@ -56,7 +56,7 @@ Once the host build is complete, we are ready to build our image. The following `Dockerfile` is included when creating a new app with `@backstage/create-app`: ```Dockerfile -FROM node:14-buster-slim +FROM node:16-bullseye-slim WORKDIR /app # Copy repo skeleton first, to avoid unnecessary docker cache invalidation. @@ -65,6 +65,12 @@ WORKDIR /app COPY yarn.lock package.json packages/backend/dist/skeleton.tar.gz ./ RUN tar xzf skeleton.tar.gz && rm skeleton.tar.gz +# install sqlite3 dependencies +RUN apt-get update && \ + apt-get install -y libsqlite3-dev python3 cmake g++ && \ + rm -rf /var/lib/apt/lists/* && \ + yarn config set python /usr/bin/python3 + 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. @@ -134,23 +140,28 @@ the repo root: ```Dockerfile # Stage 1 - Create yarn install skeleton layer -FROM node:14-buster-slim AS packages +FROM node:16-bullseye-slim AS packages WORKDIR /app COPY package.json yarn.lock ./ COPY packages packages + # Comment this out if you don't have any internal plugins COPY plugins plugins RUN find packages \! -name "package.json" -mindepth 2 -maxdepth 2 -exec rm -rf {} \+ # Stage 2 - Install dependencies and build packages -FROM node:14-buster-slim AS build +FROM node:16-bullseye-slim AS build WORKDIR /app COPY --from=packages /app . +# install sqlite3 dependencies +RUN apt-get update && apt-get install -y libsqlite3-dev python3 cmake g++ && \ + yarn config set python /usr/bin/python3 + RUN yarn install --frozen-lockfile --network-timeout 600000 && rm -rf "$(yarn cache dir)" COPY . . @@ -159,7 +170,7 @@ RUN yarn tsc RUN yarn --cwd packages/backend backstage-cli backend:bundle --build-dependencies # Stage 3 - Build the actual backend image and install production dependencies -FROM node:14-buster-slim +FROM node:16-bullseye-slim WORKDIR /app @@ -167,6 +178,12 @@ WORKDIR /app COPY --from=build /app/yarn.lock /app/package.json /app/packages/backend/dist/skeleton.tar.gz ./ RUN tar xzf skeleton.tar.gz && rm skeleton.tar.gz +# install sqlite3 dependencies +RUN apt-get update && \ + apt-get install -y libsqlite3-dev python3 cmake g++ && \ + rm -rf /var/lib/apt/lists/* && \ + yarn config set python /usr/bin/python3 + RUN yarn install --frozen-lockfile --production --network-timeout 600000 && rm -rf "$(yarn cache dir)" # Copy the built packages from the build stage diff --git a/docs/local-dev/cli-build-system.md b/docs/local-dev/cli-build-system.md index c4a08afc56..75f0606752 100644 --- a/docs/local-dev/cli-build-system.md +++ b/docs/local-dev/cli-build-system.md @@ -334,13 +334,19 @@ The following is an example of a `Dockerfile` that can be used to package the output of `backstage-cli backend:bundle` into an image: ```Dockerfile -FROM node:14-buster-slim +FROM node:16-bullseye-slim WORKDIR /app COPY yarn.lock package.json packages/backend/dist/skeleton.tar.gz ./ RUN tar xzf skeleton.tar.gz && rm skeleton.tar.gz -RUN yarn install --production --frozen-lockfile --network-timeout 300000 && rm -rf "$(yarn cache dir)" +# install sqlite3 dependencies +RUN apt-get update && \ + apt-get install -y libsqlite3-dev python3 cmake g++ && \ + rm -rf /var/lib/apt/lists/* && \ + yarn config set python /usr/bin/python3 + +RUN yarn install --frozen-lockfile --production --network-timeout 300000 && rm -rf "$(yarn cache dir)" COPY packages/backend/dist/bundle.tar.gz app-config.yaml ./ RUN tar xzf bundle.tar.gz && rm bundle.tar.gz diff --git a/packages/backend/Dockerfile b/packages/backend/Dockerfile index 31231a3a4a..dd35d4ddbc 100644 --- a/packages/backend/Dockerfile +++ b/packages/backend/Dockerfile @@ -9,7 +9,7 @@ # # Once the commands have been run, you can build the image using `yarn build-image` -FROM node:14-buster-slim +FROM node:16-bullseye-slim WORKDIR /app @@ -19,6 +19,12 @@ WORKDIR /app COPY yarn.lock package.json packages/backend/dist/skeleton.tar.gz ./ RUN tar xzf skeleton.tar.gz && rm skeleton.tar.gz +# install sqlite3 dependencies +RUN apt-get update && \ + apt-get install -y libsqlite3-dev python3 cmake g++ && \ + rm -rf /var/lib/apt/lists/* && \ + yarn config set python /usr/bin/python3 + 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. diff --git a/packages/create-app/templates/default-app/packages/backend/Dockerfile b/packages/create-app/templates/default-app/packages/backend/Dockerfile index 31231a3a4a..dd35d4ddbc 100644 --- a/packages/create-app/templates/default-app/packages/backend/Dockerfile +++ b/packages/create-app/templates/default-app/packages/backend/Dockerfile @@ -9,7 +9,7 @@ # # Once the commands have been run, you can build the image using `yarn build-image` -FROM node:14-buster-slim +FROM node:16-bullseye-slim WORKDIR /app @@ -19,6 +19,12 @@ WORKDIR /app COPY yarn.lock package.json packages/backend/dist/skeleton.tar.gz ./ RUN tar xzf skeleton.tar.gz && rm skeleton.tar.gz +# install sqlite3 dependencies +RUN apt-get update && \ + apt-get install -y libsqlite3-dev python3 cmake g++ && \ + rm -rf /var/lib/apt/lists/* && \ + yarn config set python /usr/bin/python3 + 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. From b84c644fb99378fecb621617f8f4d41218fd92bb Mon Sep 17 00:00:00 2001 From: Karan Shah Date: Thu, 17 Feb 2022 12:15:10 +0000 Subject: [PATCH 174/383] Add a test to ensure that the value is read correctly Signed-off-by: Karan Shah --- .../src/config/ExtractAirbrakeConfig.test.ts | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/plugins/airbrake-backend/src/config/ExtractAirbrakeConfig.test.ts b/plugins/airbrake-backend/src/config/ExtractAirbrakeConfig.test.ts index d823d8134e..d94746c8ef 100644 --- a/plugins/airbrake-backend/src/config/ExtractAirbrakeConfig.test.ts +++ b/plugins/airbrake-backend/src/config/ExtractAirbrakeConfig.test.ts @@ -27,6 +27,17 @@ describe('ExtractAirbrakeConfig', () => { voidLogger = getVoidLogger(); }); + it('gets the API key', () => { + const config = new ConfigReader({ + airbrake: { + apiKey: 'fakeApiKey', + }, + }); + + const airbrakeConfig = extractAirbrakeConfig(config, voidLogger); + expect(airbrakeConfig.apiKey).toStrictEqual('fakeApiKey'); + }); + it('does not fail in development', () => { process.env = { ...oldProcessEnv, From c3a1300f7996400354abf642b32cb5de274350de Mon Sep 17 00:00:00 2001 From: MT Lewis Date: Thu, 17 Feb 2022 12:26:53 +0000 Subject: [PATCH 175/383] config-loader: watch any extra files loaded when loading local config Signed-off-by: MT Lewis --- .changeset/pink-fans-tie.md | 5 ++ packages/config-loader/src/loader.test.ts | 60 +++++++++++++++++++++++ packages/config-loader/src/loader.ts | 35 ++++++++++--- 3 files changed, 92 insertions(+), 8 deletions(-) create mode 100644 .changeset/pink-fans-tie.md diff --git a/.changeset/pink-fans-tie.md b/.changeset/pink-fans-tie.md new file mode 100644 index 0000000000..713a7f9b50 --- /dev/null +++ b/.changeset/pink-fans-tie.md @@ -0,0 +1,5 @@ +--- +'@backstage/config-loader': patch +--- + +Include any files included in configuration via $include or $file directives when watching for configuration changes. diff --git a/packages/config-loader/src/loader.test.ts b/packages/config-loader/src/loader.test.ts index 9faeda64ea..058f59aef1 100644 --- a/packages/config-loader/src/loader.test.ts +++ b/packages/config-loader/src/loader.test.ts @@ -333,6 +333,66 @@ describe('loadConfig', () => { stopSignal.resolve(); }); + it('watches included files', async () => { + const onChange = defer(); + const stopSignal = defer(); + + await expect( + loadConfig({ + configRoot: '/root', + configTargets: [{ path: '/root/app-config.development.yaml' }], + watch: { + onChange: onChange.resolve, + stopSignal: stopSignal.promise, + }, + }), + ).resolves.toEqual({ + appConfigs: [ + { + context: 'app-config.development.yaml', + data: { + app: { + sessionKey: 'development-key', + }, + backend: { + foo: { + bar: 'token is-secret', + }, + }, + other: { + secret: 'abc123', + }, + }, + }, + ], + }); + + // session-key is indirectly included in app-config.development.yaml + // via included.yaml + await fs.writeFile('/root/secrets/session-key.txt', 'abc234'); + + await expect(onChange.promise).resolves.toEqual([ + { + context: 'app-config.development.yaml', + data: { + app: { + sessionKey: 'development-key', + }, + backend: { + foo: { + bar: 'token is-secret', + }, + }, + other: { + secret: 'abc234', + }, + }, + }, + ]); + + stopSignal.resolve(); + }); + it('watches remote config urls', async () => { server.use(initialLoaderHandler); diff --git a/packages/config-loader/src/loader.ts b/packages/config-loader/src/loader.ts index 03a6805da0..9a3287e285 100644 --- a/packages/config-loader/src/loader.ts +++ b/packages/config-loader/src/loader.ts @@ -140,7 +140,8 @@ export async function loadConfig( const env = envFunc ?? (async (name: string) => process.env[name]); const loadConfigFiles = async () => { - const configs = []; + const fileConfigs = []; + const loadedPaths = new Set(); for (const configPath of configPaths) { if (!isAbsolute(configPath)) { @@ -148,8 +149,15 @@ export async function loadConfig( } const dir = dirname(configPath); - const readFile = (path: string) => - fs.readFile(resolvePath(dir, path), 'utf8'); + const readFile = (path: string) => { + const fullPath = resolvePath(dir, path); + // if we read a file when building configuration, + // we should include that file when watching for + // changes, too. + loadedPaths.add(fullPath); + + return fs.readFile(fullPath, 'utf8'); + }; const input = yaml.parse(await readFile(configPath)); const substitutionTransform = createSubstitutionTransform(env); @@ -158,10 +166,10 @@ export async function loadConfig( substitutionTransform, ]); - configs.push({ data, context: basename(configPath) }); + fileConfigs.push({ data, context: basename(configPath) }); } - return configs; + return { fileConfigs, loadedPaths }; }; const loadRemoteConfigFiles = async () => { @@ -199,8 +207,9 @@ export async function loadConfig( }; let fileConfigs: AppConfig[]; + let loadedPaths: Set; try { - fileConfigs = await loadConfigFiles(); + ({ fileConfigs, loadedPaths } = await loadConfigFiles()); } catch (error) { throw new ForwardedError('Failed to read static configuration file', error); } @@ -220,14 +229,24 @@ export async function loadConfig( const envConfigs = await readEnvConfig(process.env); const watchConfigFile = (watchProp: LoadConfigOptionsWatch) => { - const watcher = chokidar.watch(configPaths, { + let watchedFiles = Array.from(loadedPaths); + + const watcher = chokidar.watch(watchedFiles, { usePolling: process.env.NODE_ENV === 'test', }); let currentSerializedConfig = JSON.stringify(fileConfigs); watcher.on('change', async () => { try { - const newConfigs = await loadConfigFiles(); + const { fileConfigs: newConfigs, loadedPaths: newLoadedPaths } = + await loadConfigFiles(); + + // Replace watches to handle any added or removed + // $include or $file expressions. + watcher.unwatch(watchedFiles); + watchedFiles = Array.from(newLoadedPaths); + watcher.add(watchedFiles); + const newSerializedConfig = JSON.stringify(newConfigs); if (currentSerializedConfig === newSerializedConfig) { From 819bb5ba24391e6d7ed82f76d5110fc7be3fac80 Mon Sep 17 00:00:00 2001 From: Johan Haals Date: Thu, 17 Feb 2022 13:37:27 +0100 Subject: [PATCH 176/383] update changeset Signed-off-by: Johan Haals --- .changeset/large-baboons-wash.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.changeset/large-baboons-wash.md b/.changeset/large-baboons-wash.md index ce17e4554d..9c1ff24e2f 100644 --- a/.changeset/large-baboons-wash.md +++ b/.changeset/large-baboons-wash.md @@ -1,5 +1,7 @@ --- -'@backstage/plugin-catalog-react': patch +'@backstage/plugin-catalog-react': minor --- -Improved API documentation +Improved API documentation. + +**Breaking change**: The individual table column factories (e.g. `createEntityRefColumn`) are now no longer available directly, but only through `EntityTable.columns`. From 3c7d087fbca1c4da210d8c364cf7f53c53ecacdc Mon Sep 17 00:00:00 2001 From: blam Date: Wed, 16 Feb 2022 10:30:51 +0100 Subject: [PATCH 177/383] chore: adding deprecations for the spec.metadata and spec.baseUrl to the new templateInfo Signed-off-by: blam --- plugins/scaffolder-common/src/TaskSpec.ts | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/plugins/scaffolder-common/src/TaskSpec.ts b/plugins/scaffolder-common/src/TaskSpec.ts index 1cbe41b28c..0b829ef824 100644 --- a/plugins/scaffolder-common/src/TaskSpec.ts +++ b/plugins/scaffolder-common/src/TaskSpec.ts @@ -21,11 +21,22 @@ import { JsonValue, JsonObject } from '@backstage/types'; * stored in the database. * * @public + * @deprecated */ export type TemplateMetadata = { name: string; }; +/** + * Information about a template that is stored on the scaffolder spec + * + * @public + */ +export type TemplateInfo = { + name: string; + baseUrl?: string; +}; + /** * An individual step of a scaffolder task, as stored in the database. * @@ -64,11 +75,14 @@ export interface TaskSpecV1beta2 { */ export interface TaskSpecV1beta3 { apiVersion: 'scaffolder.backstage.io/v1beta3'; + /** @deprecated use templateInfo.baseUrl instead */ baseUrl?: string; parameters: JsonObject; steps: TaskStep[]; output: { [name: string]: JsonValue }; + /** @deprecated use templateInfo instead */ metadata?: TemplateMetadata; + templateInfo?: TemplateInfo; } /** From a4d53fe18eb8d2b136502a31ea2eb350ab2efc9f Mon Sep 17 00:00:00 2001 From: blam Date: Wed, 16 Feb 2022 10:34:04 +0100 Subject: [PATCH 178/383] chore: added changeset for deprecations Signed-off-by: blam --- .changeset/cool-ways-battle.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 .changeset/cool-ways-battle.md diff --git a/.changeset/cool-ways-battle.md b/.changeset/cool-ways-battle.md new file mode 100644 index 0000000000..db3da6c658 --- /dev/null +++ b/.changeset/cool-ways-battle.md @@ -0,0 +1,7 @@ +--- +'@backstage/plugin-scaffolder-common': patch +--- + +- Deprecate `TaskSpecV1Beta2` in favour of the new `TaskSpecV1Beta3` +- Deprecate `TaskSpecV1Beta3.metadata` in favour of the new `TaskSpecV1Beta3.templateInfo` +- Deprecate `TaskSpecV1Beta3.baseUrl` in favour of the new `TaskSpecV1Beta3.templateInfo.baseUrl` From f1cfb215ce10e6fd6e300c030b5bcc1261004447 Mon Sep 17 00:00:00 2001 From: blam Date: Wed, 16 Feb 2022 10:43:02 +0100 Subject: [PATCH 179/383] chore: updating api-report and fixing the warnings Signed-off-by: blam --- plugins/scaffolder-common/api-report.md | 12 ++++++++++-- plugins/scaffolder-common/src/TaskSpec.ts | 2 +- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/plugins/scaffolder-common/api-report.md b/plugins/scaffolder-common/api-report.md index 8d2324a2dd..ba90a238f9 100644 --- a/plugins/scaffolder-common/api-report.md +++ b/plugins/scaffolder-common/api-report.md @@ -33,9 +33,9 @@ export interface TaskSpecV1beta2 { export interface TaskSpecV1beta3 { // (undocumented) apiVersion: 'scaffolder.backstage.io/v1beta3'; - // (undocumented) + // @deprecated (undocumented) baseUrl?: string; - // (undocumented) + // @deprecated (undocumented) metadata?: TemplateMetadata; // (undocumented) output: { @@ -45,6 +45,8 @@ export interface TaskSpecV1beta3 { parameters: JsonObject; // (undocumented) steps: TaskStep[]; + // (undocumented) + templateInfo?: TemplateInfo; } // @public @@ -116,6 +118,12 @@ export interface TemplateEntityV1beta3 extends Entity { export const templateEntityV1beta3Validator: KindValidator; // @public +export type TemplateInfo = { + name: string; + baseUrl?: string; +}; + +// @public @deprecated export type TemplateMetadata = { name: string; }; diff --git a/plugins/scaffolder-common/src/TaskSpec.ts b/plugins/scaffolder-common/src/TaskSpec.ts index 0b829ef824..c92c432e53 100644 --- a/plugins/scaffolder-common/src/TaskSpec.ts +++ b/plugins/scaffolder-common/src/TaskSpec.ts @@ -21,7 +21,7 @@ import { JsonValue, JsonObject } from '@backstage/types'; * stored in the database. * * @public - * @deprecated + * @deprecated use templateInfo on the spec instead */ export type TemplateMetadata = { name: string; From 7f88d699d4aa8a4ef4117715b6a95416ec62336a Mon Sep 17 00:00:00 2001 From: blam Date: Wed, 16 Feb 2022 11:07:25 +0100 Subject: [PATCH 180/383] chore: updating public docs Signed-off-by: blam --- 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 c92c432e53..c8bff3a713 100644 --- a/plugins/scaffolder-common/src/TaskSpec.ts +++ b/plugins/scaffolder-common/src/TaskSpec.ts @@ -28,7 +28,7 @@ export type TemplateMetadata = { }; /** - * Information about a template that is stored on the scaffolder spec + * Information about a template that is stored on the scaffolder Spec * * @public */ From 6d808887f90e02b25e45b70dccfbf3044eef55a6 Mon Sep 17 00:00:00 2001 From: Ben Lambert Date: Wed, 16 Feb 2022 11:16:57 +0100 Subject: [PATCH 181/383] chore: it's already done in another PR SIgned-off-by: Ben Lambert --- .changeset/cool-ways-battle.md | 1 - 1 file changed, 1 deletion(-) diff --git a/.changeset/cool-ways-battle.md b/.changeset/cool-ways-battle.md index db3da6c658..f3f2f4f7c0 100644 --- a/.changeset/cool-ways-battle.md +++ b/.changeset/cool-ways-battle.md @@ -2,6 +2,5 @@ '@backstage/plugin-scaffolder-common': patch --- -- Deprecate `TaskSpecV1Beta2` in favour of the new `TaskSpecV1Beta3` - Deprecate `TaskSpecV1Beta3.metadata` in favour of the new `TaskSpecV1Beta3.templateInfo` - Deprecate `TaskSpecV1Beta3.baseUrl` in favour of the new `TaskSpecV1Beta3.templateInfo.baseUrl` From 32f1cc6d46e26684534928811ad1c9e47564c4c5 Mon Sep 17 00:00:00 2001 From: Ben Lambert Date: Wed, 16 Feb 2022 13:20:29 +0100 Subject: [PATCH 182/383] Update plugins/scaffolder-common/src/TaskSpec.ts MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Ben Lambert Co-authored-by: Fredrik Adelöw --- 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 c8bff3a713..0751b0467a 100644 --- a/plugins/scaffolder-common/src/TaskSpec.ts +++ b/plugins/scaffolder-common/src/TaskSpec.ts @@ -28,7 +28,7 @@ export type TemplateMetadata = { }; /** - * Information about a template that is stored on the scaffolder Spec + * Information about a template that is stored on a task specification * * @public */ From b344cd674a3f15ebe2229c6385b705717449d1ef Mon Sep 17 00:00:00 2001 From: blam Date: Wed, 16 Feb 2022 14:50:16 +0100 Subject: [PATCH 183/383] chore: move to templateInfo in the scaffolder-backend Signed-off-by: blam --- .../src/scaffolder/actions/builtin/fetch/plain.ts | 2 +- .../scaffolder/actions/builtin/fetch/template.test.ts | 2 +- .../src/scaffolder/actions/builtin/fetch/template.ts | 2 +- .../src/scaffolder/actions/types.ts | 6 ++++++ .../scaffolder/tasks/HandlebarsWorkflowRunner.test.ts | 2 +- .../src/scaffolder/tasks/HandlebarsWorkflowRunner.ts | 11 ++++------- .../scaffolder/tasks/NunjucksWorkflowRunner.test.ts | 2 +- .../src/scaffolder/tasks/NunjucksWorkflowRunner.ts | 3 +++ 8 files changed, 18 insertions(+), 12 deletions(-) diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/plain.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/plain.ts index 9cac6d5ab8..17f49a5bd4 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/plain.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/plain.ts @@ -59,7 +59,7 @@ export function createFetchPlainAction(options: { await fetchContents({ reader, integrations, - baseUrl: ctx.baseUrl, + baseUrl: ctx.templateInfo?.baseUrl, fetchUrl: ctx.input.url, outputPath, }); 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 2f9bfd3796..284b400833 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 @@ -75,7 +75,7 @@ describe('fetch:template', () => { const logger = getVoidLogger(); const mockContext = (inputPatch: Partial = {}) => ({ - baseUrl: 'base-url', + templateInfo: { baseUrl: 'base-url', name: 'test' }, input: { url: './skeleton', targetPath: './target', diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/template.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/template.ts index 08dfc46caf..a8ba9ac19f 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/template.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/template.ts @@ -135,7 +135,7 @@ export function createFetchTemplateAction(options: { await fetchContents({ reader, integrations, - baseUrl: ctx.baseUrl, + baseUrl: ctx.templateInfo?.baseUrl, fetchUrl: ctx.input.url, outputPath: templateDir, }); diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/types.ts b/plugins/scaffolder-backend/src/scaffolder/actions/types.ts index 6008e8183f..b2227426b8 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/types.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/types.ts @@ -19,10 +19,12 @@ import { Writable } from 'stream'; import { JsonValue, JsonObject } from '@backstage/types'; import { Schema } from 'jsonschema'; import { TaskSecrets, TemplateMetadata } from '../tasks/types'; +import { TemplateInfo } from '@backstage/plugin-scaffolder-common'; export type ActionContext = { /** * Base URL for the location of the task spec, typically the url of the source entity file. + * @deprecated please use templateInfo.baseUrl instead */ baseUrl?: string; @@ -38,7 +40,11 @@ export type ActionContext = { */ createTemporaryDirectory(): Promise; + /** + * @deprecated please use templateInfo instead + */ metadata?: TemplateMetadata; + templateInfo?: TemplateInfo; }; export type TemplateAction = { diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/HandlebarsWorkflowRunner.test.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/HandlebarsWorkflowRunner.test.ts index 9b05c43831..aff0615733 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/HandlebarsWorkflowRunner.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/HandlebarsWorkflowRunner.test.ts @@ -107,7 +107,7 @@ describe('LegacyWorkflowRunner', () => { ], output: {}, values: {}, - metadata: { name: templateName }, + templateInfo: { name: templateName }, }); await runner.execute(task); diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/HandlebarsWorkflowRunner.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/HandlebarsWorkflowRunner.ts index 86e719c828..135c40d95f 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/HandlebarsWorkflowRunner.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/HandlebarsWorkflowRunner.ts @@ -225,13 +225,8 @@ export class HandlebarsWorkflowRunner implements WorkflowRunner { input: JSON.stringify(input, null, 2), }); - if (!task.spec.metadata) { - console.warn( - 'DEPRECATION NOTICE: metadata is undefined. metadata will be required in the future.', - ); - } - await action.handler({ + // deprecated in favor of templateInfo.baseUrl baseUrl: task.spec.baseUrl, logger: taskLogger, logStream: stream, @@ -248,7 +243,9 @@ export class HandlebarsWorkflowRunner implements WorkflowRunner { output(name: string, value: JsonValue) { stepOutputs[name] = value; }, - metadata: task.spec.metadata, + // deprecated in favor of templateInfo + metadata: task.spec.templateInfo, + templateInfo: task.spec.templateInfo, }); // Remove all temporary directories that were created when executing the action diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts index f46d969eb8..03a185ea5a 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts @@ -176,7 +176,7 @@ describe('DefaultWorkflowRunner', () => { input: { foo: 1 }, }, ], - metadata: { name: templateName }, + templateInfo: { name: templateName }, }); await runner.execute(task); diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.ts index 5d39d0bc00..b1177ca49c 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.ts @@ -259,6 +259,7 @@ export class NunjucksWorkflowRunner implements WorkflowRunner { const stepOutput: { [outputName: string]: JsonValue } = {}; await action.handler({ + // deprecated in favourof templateInfo.baseUrl baseUrl: task.spec.baseUrl, input, secrets: task.secrets ?? {}, @@ -275,7 +276,9 @@ export class NunjucksWorkflowRunner implements WorkflowRunner { output(name: string, value: JsonValue) { stepOutput[name] = value; }, + // deprecated in favour of templateInfo metadata: task.spec.metadata, + templateInfo: task.spec.templateInfo, }); // Remove all temporary directories that were created when executing the action From 93215cb382a6a2f2faf56052f3593da0a02f5086 Mon Sep 17 00:00:00 2001 From: blam Date: Wed, 16 Feb 2022 14:51:04 +0100 Subject: [PATCH 184/383] chore: move to templateInfo in other modules Signed-off-by: blam --- .../src/actions/fetch/cookiecutter.test.ts | 7 ++- .../src/actions/fetch/cookiecutter.ts | 2 +- .../src/actions/fetch/rails/index.ts | 2 +- .../scaffolder-backend/src/service/router.ts | 48 ++++++++++--------- plugins/scaffolder-common/src/TaskSpec.ts | 4 ++ .../src/components/TaskPage/TaskPage.tsx | 4 +- 6 files changed, 39 insertions(+), 28 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 bba51e3f01..edc5c3ff77 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 @@ -89,7 +89,10 @@ describe('fetch:cookiecutter', () => { help: 'me', }, }, - baseUrl: 'somebase', + templateInfo: { + name: 'lols', + baseUrl: 'somebase', + }, workspacePath: mockTmpDir, logger: getVoidLogger(), logStream: new PassThrough(), @@ -149,7 +152,7 @@ describe('fetch:cookiecutter', () => { expect.objectContaining({ reader: mockReader, integrations, - baseUrl: mockContext.baseUrl, + baseUrl: mockContext.templateInfo?.baseUrl, fetchUrl: mockContext.input.url, outputPath: join( mockTmpDir, diff --git a/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.ts b/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.ts index c4d7f1e3e8..0455f01989 100644 --- a/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.ts +++ b/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.ts @@ -222,7 +222,7 @@ export function createFetchCookiecutterAction(options: { await fetchContents({ reader, integrations, - baseUrl: ctx.baseUrl, + baseUrl: ctx.templateInfo?.baseUrl, fetchUrl: ctx.input.url, outputPath: templateContentsDir, }); diff --git a/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/index.ts b/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/index.ts index 2865361a8b..132929ee1c 100644 --- a/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/index.ts +++ b/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/index.ts @@ -170,7 +170,7 @@ export function createFetchRailsAction(options: { await fetchContents({ reader, integrations, - baseUrl: ctx.baseUrl, + baseUrl: ctx.templateInfo?.baseUrl, fetchUrl: ctx.input.url, outputPath: workDir, }); diff --git a/plugins/scaffolder-backend/src/service/router.ts b/plugins/scaffolder-backend/src/service/router.ts index b2978441bd..a5f5b5fa40 100644 --- a/plugins/scaffolder-backend/src/service/router.ts +++ b/plugins/scaffolder-backend/src/service/router.ts @@ -28,6 +28,8 @@ import { ScmIntegrations } from '@backstage/integration'; import { TemplateEntityV1beta2, TemplateEntityV1beta3, + TaskSpecV1beta3, + TaskSpecV1beta2, } from '@backstage/plugin-scaffolder-common'; import express from 'express'; import Router from 'express-promise-router'; @@ -219,32 +221,36 @@ export async function createRouter( const baseUrl = getEntityBaseUrl(template); + const baseTaskSpec = { + baseUrl, + steps: template.spec.steps.map((step, index) => ({ + ...step, + id: step.id ?? `step-${index + 1}`, + name: step.name ?? step.action, + })), + output: template.spec.output ?? {}, + + // deprecated in favour of templateInfo + metadata: { name: template.metadata?.name }, + + templateInfo: { + name: template.metadata?.name, + baseUrl, + }, + }; + taskSpec = template.apiVersion === 'backstage.io/v1beta2' - ? { + ? ({ + ...baseTaskSpec, apiVersion: template.apiVersion, - baseUrl, values, - steps: template.spec.steps.map((step, index) => ({ - ...step, - id: step.id ?? `step-${index + 1}`, - name: step.name ?? step.action, - })), - output: template.spec.output ?? {}, - metadata: { name: template.metadata?.name }, - } - : { + } as TaskSpecV1beta2) + : ({ + ...baseTaskSpec, apiVersion: template.apiVersion, - baseUrl, parameters: values, - steps: template.spec.steps.map((step, index) => ({ - ...step, - id: step.id ?? `step-${index + 1}`, - name: step.name ?? step.action, - })), - output: template.spec.output ?? {}, - metadata: { name: template.metadata?.name }, - }; + } as TaskSpecV1beta3); } else { throw new InputError( `Unsupported apiVersion field in schema entity, ${ @@ -256,8 +262,6 @@ export async function createRouter( const result = await taskBroker.dispatch(taskSpec, { ...req.body.secrets, backstageToken: token, - // This is deprecated, but we need to support it for now if people are running their own task broker. - token: token, }); res.status(201).json({ id: result.taskId }); diff --git a/plugins/scaffolder-common/src/TaskSpec.ts b/plugins/scaffolder-common/src/TaskSpec.ts index 0751b0467a..09d46b7fbb 100644 --- a/plugins/scaffolder-common/src/TaskSpec.ts +++ b/plugins/scaffolder-common/src/TaskSpec.ts @@ -60,11 +60,15 @@ export interface TaskStep { */ export interface TaskSpecV1beta2 { apiVersion: 'backstage.io/v1beta2'; + /** @deprecated use templateInfo.baseUrl instead */ baseUrl?: string; values: JsonObject; steps: TaskStep[]; output: { [name: string]: string }; + /** @deprecated use templateInfo instead */ metadata?: TemplateMetadata; + + templateInfo?: TemplateInfo; } /** diff --git a/plugins/scaffolder/src/components/TaskPage/TaskPage.tsx b/plugins/scaffolder/src/components/TaskPage/TaskPage.tsx index 2f49f40643..346a842838 100644 --- a/plugins/scaffolder/src/components/TaskPage/TaskPage.tsx +++ b/plugins/scaffolder/src/components/TaskPage/TaskPage.tsx @@ -291,7 +291,7 @@ export const TaskPage = ({ loadingText }: TaskPageProps) => { const { output } = taskStream; const handleStartOver = () => { - if (!taskStream.task || !taskStream.task?.spec.metadata?.name) { + if (!taskStream.task || !taskStream.task?.spec.templateInfo?.name) { navigate(generatePath(rootLink())); } @@ -306,7 +306,7 @@ export const TaskPage = ({ loadingText }: TaskPageProps) => { formData: JSON.stringify(formData), })}`, { - templateName: taskStream.task!.spec.metadata!.name, + templateName: taskStream.task!.spec.templateInfo!.name, }, ), ); From 09000c16636cb03e63996a07db9b50e1049ec2c0 Mon Sep 17 00:00:00 2001 From: blam Date: Wed, 16 Feb 2022 15:01:26 +0100 Subject: [PATCH 185/383] chore: updating api-reports for all packages Signed-off-by: blam --- .changeset/cool-ways-battle.md | 4 ++-- plugins/scaffolder-backend/api-report.md | 2 ++ plugins/scaffolder-common/api-report.md | 6 ++++-- plugins/scaffolder-common/src/TaskSpec.ts | 1 - 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/.changeset/cool-ways-battle.md b/.changeset/cool-ways-battle.md index f3f2f4f7c0..264b8ca420 100644 --- a/.changeset/cool-ways-battle.md +++ b/.changeset/cool-ways-battle.md @@ -2,5 +2,5 @@ '@backstage/plugin-scaffolder-common': patch --- -- Deprecate `TaskSpecV1Beta3.metadata` in favour of the new `TaskSpecV1Beta3.templateInfo` -- Deprecate `TaskSpecV1Beta3.baseUrl` in favour of the new `TaskSpecV1Beta3.templateInfo.baseUrl` +**DEPRECATION** - Deprecate `TaskSpecV1Beta3.metadata` in favour of the new `TaskSpecV1Beta3.templateInfo` +**DEPRECATION** - Deprecate `TaskSpecV1Beta3.baseUrl` in favour of the new `TaskSpecV1Beta3.templateInfo.baseUrl` diff --git a/plugins/scaffolder-backend/api-report.md b/plugins/scaffolder-backend/api-report.md index ba16b5d4f0..b0e6a43be2 100644 --- a/plugins/scaffolder-backend/api-report.md +++ b/plugins/scaffolder-backend/api-report.md @@ -29,6 +29,7 @@ import { SpawnOptionsWithoutStdio } from 'child_process'; import { TaskSpec } from '@backstage/plugin-scaffolder-common'; import { TaskSpecV1beta2 } from '@backstage/plugin-scaffolder-common'; import { TaskSpecV1beta3 } from '@backstage/plugin-scaffolder-common'; +import { TemplateInfo } from '@backstage/plugin-scaffolder-common'; import { TemplateMetadata } from '@backstage/plugin-scaffolder-common'; import { UrlReader } from '@backstage/backend-common'; import { Writable } from 'stream'; @@ -46,6 +47,7 @@ export type ActionContext = { output(name: string, value: JsonValue): void; createTemporaryDirectory(): Promise; metadata?: TemplateMetadata; + templateInfo?: TemplateInfo; }; // @public diff --git a/plugins/scaffolder-common/api-report.md b/plugins/scaffolder-common/api-report.md index ba90a238f9..92935bd5bb 100644 --- a/plugins/scaffolder-common/api-report.md +++ b/plugins/scaffolder-common/api-report.md @@ -15,9 +15,9 @@ export type TaskSpec = TaskSpecV1beta2 | TaskSpecV1beta3; export interface TaskSpecV1beta2 { // (undocumented) apiVersion: 'backstage.io/v1beta2'; - // (undocumented) + // @deprecated (undocumented) baseUrl?: string; - // (undocumented) + // @deprecated (undocumented) metadata?: TemplateMetadata; // (undocumented) output: { @@ -26,6 +26,8 @@ export interface TaskSpecV1beta2 { // (undocumented) steps: TaskStep[]; // (undocumented) + templateInfo?: TemplateInfo; + // (undocumented) values: JsonObject; } diff --git a/plugins/scaffolder-common/src/TaskSpec.ts b/plugins/scaffolder-common/src/TaskSpec.ts index 09d46b7fbb..f0002ac0a5 100644 --- a/plugins/scaffolder-common/src/TaskSpec.ts +++ b/plugins/scaffolder-common/src/TaskSpec.ts @@ -67,7 +67,6 @@ export interface TaskSpecV1beta2 { output: { [name: string]: string }; /** @deprecated use templateInfo instead */ metadata?: TemplateMetadata; - templateInfo?: TemplateInfo; } From 0f37cdef191d0c4606ec396f1b810cb600633a65 Mon Sep 17 00:00:00 2001 From: blam Date: Wed, 16 Feb 2022 15:03:02 +0100 Subject: [PATCH 186/383] chore: added a seperate changelog entry for the other packages Signed-off-by: blam --- .changeset/cool-ways-battle.md | 6 ++++-- .changeset/purple-camels-accept.md | 8 ++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) create mode 100644 .changeset/purple-camels-accept.md diff --git a/.changeset/cool-ways-battle.md b/.changeset/cool-ways-battle.md index 264b8ca420..1ef108d9d2 100644 --- a/.changeset/cool-ways-battle.md +++ b/.changeset/cool-ways-battle.md @@ -2,5 +2,7 @@ '@backstage/plugin-scaffolder-common': patch --- -**DEPRECATION** - Deprecate `TaskSpecV1Beta3.metadata` in favour of the new `TaskSpecV1Beta3.templateInfo` -**DEPRECATION** - Deprecate `TaskSpecV1Beta3.baseUrl` in favour of the new `TaskSpecV1Beta3.templateInfo.baseUrl` +- **DEPRECATED** `TaskSpecV1Beta3.metadata` in favour of the new `TaskSpecV1Beta3.templateInfo` +- **DEPRECATED** `TaskSpecV1Beta3.baseUrl` in favour of the new `TaskSpecV1Beta3.templateInfo.baseUrl` +- **DEPRECATED** `TaskSpecV1Beta2.metadata` in favour of the new `TaskSpecV1Beta2.templateInfo` +- **DEPRECATED** `TaskSpecV1Beta2.baseUrl` in favour of the new `TaskSpecV1Beta2.templateInfo.baseUrl` diff --git a/.changeset/purple-camels-accept.md b/.changeset/purple-camels-accept.md new file mode 100644 index 0000000000..0ee64567f9 --- /dev/null +++ b/.changeset/purple-camels-accept.md @@ -0,0 +1,8 @@ +--- +'@backstage/plugin-scaffolder': patch +'@backstage/plugin-scaffolder-backend': patch +'@backstage/plugin-scaffolder-backend-module-cookiecutter': patch +'@backstage/plugin-scaffolder-backend-module-rails': patch +--- + +Migrated over from the deprecated `spec.metadata` to `spec.templateInfo` for the name and the `baseUrl` of the template. From f25fd16490f72f4827d6a3439dfce04dc5485a63 Mon Sep 17 00:00:00 2001 From: blam Date: Wed, 16 Feb 2022 19:19:47 +0100 Subject: [PATCH 187/383] chore: fixing tests Signed-off-by: blam --- .../src/scaffolder/tasks/HandlebarsWorkflowRunner.test.ts | 2 +- .../src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/HandlebarsWorkflowRunner.test.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/HandlebarsWorkflowRunner.test.ts index aff0615733..c3f80f0b54 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/HandlebarsWorkflowRunner.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/HandlebarsWorkflowRunner.test.ts @@ -112,7 +112,7 @@ describe('LegacyWorkflowRunner', () => { await runner.execute(task); - expect(fakeActionHandler.mock.calls[0][0].metadata).toEqual({ + expect(fakeActionHandler.mock.calls[0][0].templateInfo).toEqual({ name: templateName, }); }); diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts index 03a185ea5a..0c808e620b 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts @@ -181,7 +181,7 @@ describe('DefaultWorkflowRunner', () => { await runner.execute(task); - expect(fakeActionHandler.mock.calls[0][0].metadata).toEqual({ + expect(fakeActionHandler.mock.calls[0][0].templateInfo).toEqual({ name: templateName, }); }); From a8c29cc99a8f6b01e45685892a4670c0d3d82aa4 Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 17 Feb 2022 09:59:41 +0100 Subject: [PATCH 188/383] chore: move to entityRef Signed-off-by: blam --- .../src/actions/fetch/cookiecutter.test.ts | 2 +- plugins/scaffolder-common/src/TaskSpec.ts | 5 +++-- 2 files changed, 4 insertions(+), 3 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 edc5c3ff77..2c1ecd06f9 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 @@ -90,7 +90,7 @@ describe('fetch:cookiecutter', () => { }, }, templateInfo: { - name: 'lols', + entityRef: 'template:default/cookiecutter', baseUrl: 'somebase', }, workspacePath: mockTmpDir, diff --git a/plugins/scaffolder-common/src/TaskSpec.ts b/plugins/scaffolder-common/src/TaskSpec.ts index f0002ac0a5..2c7eb26d5b 100644 --- a/plugins/scaffolder-common/src/TaskSpec.ts +++ b/plugins/scaffolder-common/src/TaskSpec.ts @@ -28,12 +28,13 @@ export type TemplateMetadata = { }; /** - * Information about a template that is stored on a task specification + * Information about a template that is stored on a task specification. + * Includes a stringified entityRef, and the baseUrl which is usually the relative path of the template definition * * @public */ export type TemplateInfo = { - name: string; + entityRef: string; baseUrl?: string; }; From 1bc8c55822f0e5af9be69ac2d8b85958f6ad5f5f Mon Sep 17 00:00:00 2001 From: Edgar Silva Date: Thu, 17 Feb 2022 12:36:09 +0000 Subject: [PATCH 189/383] Changed repoIDLookup to url.origin Changed the repoIDLookup concatenation from 'url.protocol + url.host' to 'url.origin', which does essentially the same but is simpler. Signed-off-by: Edgar Silva --- packages/integration/src/gitlab/core.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/integration/src/gitlab/core.ts b/packages/integration/src/gitlab/core.ts index f7dfd26d78..b379d3d129 100644 --- a/packages/integration/src/gitlab/core.ts +++ b/packages/integration/src/gitlab/core.ts @@ -138,7 +138,7 @@ export async function getProjectId( // Convert // to: https://gitlab.com/api/v4/projects/groupA%2Fteams%2FsubgroupA%2FteamA%2Frepo const repoIDLookup = new URL( - `${url.protocol + url.host}/api/v4/projects/${encodeURIComponent( + `${url.origin}/api/v4/projects/${encodeURIComponent( repo.replace(/^\//, ''), )}`, ); From 957cb4cb209e2cb3cc1e8da243628990695e234d Mon Sep 17 00:00:00 2001 From: Johan Haals Date: Thu, 17 Feb 2022 13:55:56 +0100 Subject: [PATCH 190/383] catalog-backend: Deprecate runPeriodically function Signed-off-by: Johan Haals --- .changeset/chilled-glasses-tan.md | 5 +++++ plugins/catalog-backend/api-report.md | 2 +- plugins/catalog-backend/src/util/runPeriodically.ts | 1 + 3 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 .changeset/chilled-glasses-tan.md diff --git a/.changeset/chilled-glasses-tan.md b/.changeset/chilled-glasses-tan.md new file mode 100644 index 0000000000..e365d12ed8 --- /dev/null +++ b/.changeset/chilled-glasses-tan.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend': patch +--- + +Deprecated the `runPeriodically` function which is no longer in use. diff --git a/plugins/catalog-backend/api-report.md b/plugins/catalog-backend/api-report.md index d97df9967c..09b09d07d1 100644 --- a/plugins/catalog-backend/api-report.md +++ b/plugins/catalog-backend/api-report.md @@ -1133,7 +1133,7 @@ export interface RouterOptions { // Warning: (ae-missing-release-tag) "runPeriodically" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // -// @public +// @public @deprecated export function runPeriodically(fn: () => any, delayMs: number): () => void; // Warning: (ae-missing-release-tag) "StaticLocationProcessor" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) diff --git a/plugins/catalog-backend/src/util/runPeriodically.ts b/plugins/catalog-backend/src/util/runPeriodically.ts index 2f3104e221..d3bf5d21d5 100644 --- a/plugins/catalog-backend/src/util/runPeriodically.ts +++ b/plugins/catalog-backend/src/util/runPeriodically.ts @@ -23,6 +23,7 @@ * @param delayMs - The delay between a completed function invocation and the * next. * @returns A function that, when called, stops the invocation loop. + * @deprecated use \@backstage/backend-tasks package instead. */ export function runPeriodically(fn: () => any, delayMs: number): () => void { let cancel: () => void; From 4e1384884f7006fdc99a2a35e4faea3937e0d095 Mon Sep 17 00:00:00 2001 From: Edgar Silva Date: Thu, 17 Feb 2022 12:58:53 +0000 Subject: [PATCH 191/383] Added changeset Signed-off-by: Edgar Silva --- .changeset/thirty-peas-exist.md | 5 + e HEAD~2 | 190908 +++++++++++++++++++++++++++++ 2 files changed, 190913 insertions(+) create mode 100644 .changeset/thirty-peas-exist.md create mode 100644 e HEAD~2 diff --git a/.changeset/thirty-peas-exist.md b/.changeset/thirty-peas-exist.md new file mode 100644 index 0000000000..782643bd1c --- /dev/null +++ b/.changeset/thirty-peas-exist.md @@ -0,0 +1,5 @@ +--- +'@backstage/integration': patch +--- + +Fixed bug in integration package where selfhosted gitlab instances with custom ports weren't supported (because of the lack of an option to add the port in the integration configs. Now users can add the port directly in the host) diff --git a/e HEAD~2 b/e HEAD~2 new file mode 100644 index 0000000000..c719216723 --- /dev/null +++ b/e HEAD~2 @@ -0,0 +1,190908 @@ +commit 1bc8c55822f0e5af9be69ac2d8b85958f6ad5f5f (HEAD -> gitlab-selfhosted-fix) +Author: Edgar Silva +Date: Thu Feb 17 12:36:09 2022 +0000 + + Changed repoIDLookup to url.origin + + Changed the repoIDLookup concatenation from 'url.protocol + url.host' to + 'url.origin', which does essentially the same but is simpler. + + Signed-off-by: Edgar Silva + +commit 2f1050ec1064601d9761fd281626b34119049363 +Author: Edgar Silva +Date: Wed Feb 16 18:50:21 2022 +0000 + + Updated gitlab integration to include port + + Updated integration module to allow for the use of a custom port, which + is often the case in self hosted gitlab instances + + Removed host.includes(':') check in config.ts to allow for users to + include the port in the host + Changed url.hostname to url.host in core.ts to include the port in the + api call (otherwise it'll result in an error when trying to import a new + component) + + Signed-off-by: Edgar Silva + +commit ecbb373f599280b5506294f03f6dc33a39110481 (origin/master, origin/HEAD, master) +Merge: 69ad9e1e7b 8fa3bba4a4 +Author: Patrik Oldsberg +Date: Wed Feb 16 19:18:58 2022 +0100 + + Merge pull request #9464 from backstage/dependabot/npm_and_yarn/rollup-2.67.2 + + chore(deps): bump rollup from 2.60.2 to 2.67.2 + +commit 69ad9e1e7b7c499df00ac24d429709df9a2e7e8f +Merge: d99c3c2177 a31cdf9c85 +Author: Fredrik Adelöw +Date: Wed Feb 16 18:58:14 2022 +0100 + + Merge pull request #9560 from backstage/freben/location-by-ref + + Removed `CatalogApi.geLocationByEntity` and `CatalogApi.getOriginLocationByEntity`, and replaced them with `CatalogApi.getLocationByRef`. + +commit d99c3c2177328aed1e96a4e6e68722f8dd9f2930 +Merge: 529814d02d b42ccffafe +Author: Patrik Oldsberg +Date: Wed Feb 16 18:40:37 2022 +0100 + + Merge pull request #9254 from backstage/rugvip/add-roles + + packages: add roles to all packages + +commit 529814d02d6bbec38a4e47b7269dd86091efab48 +Merge: 40af72b95d 91f6be833e +Author: Ben Lambert +Date: Wed Feb 16 18:32:09 2022 +0100 + + Merge pull request #9576 from backstage/blam/deprecations/scaffolder-backend + + deprecations: remove deprecated `ctx.token` + +commit 40af72b95de4a684e4d78767910731746e771add +Merge: af32e5b10e 2c5caf4e05 +Author: Patrik Oldsberg +Date: Wed Feb 16 17:42:18 2022 +0100 + + Merge pull request #9568 from RoadieHQ/remove-react-use + + remove react-use from core-plugin-api + +commit af32e5b10ecb0b8d229f1f72f9773f1ef7e6555b +Merge: 847ba7f606 2dc67b70e5 +Author: Patrik Oldsberg +Date: Wed Feb 16 17:25:31 2022 +0100 + + Merge pull request #9545 from emalihin/patch-1 + + remove duplicate ingress.class annotation + +commit 847ba7f606a1955dbd3671b29d274aae9f38820a +Merge: 08140a4eac eca7c3a92d +Author: Patrik Oldsberg +Date: Wed Feb 16 17:23:29 2022 +0100 + + Merge pull request #9543 from RoadieHQ/gcp-projects-use-react-hookz + + Gcp projects use react hookz + +commit 08140a4eacb4e5dc7fc046d71d96fa90228c58b5 +Merge: 0cfbec9b79 12dd25c2a1 +Author: Patrik Oldsberg +Date: Wed Feb 16 17:17:47 2022 +0100 + + Merge pull request #9542 from awanlin/topic/update-empty-flag + + Updated EmptyFlags code example + +commit b42ccffafe2daeaae7c69849e6f67c497fcf5209 +Author: Patrik Oldsberg +Date: Wed Feb 16 16:51:19 2022 +0100 + + cli: fix for backend bundle build ignoring building of the app + + Signed-off-by: Patrik Oldsberg + +commit ba5ea41f9effab11978f22e7075a2e948b6c1158 +Author: Patrik Oldsberg +Date: Wed Feb 16 13:05:28 2022 +0100 + + cli: rename app role to frontend + + Signed-off-by: Patrik Oldsberg + +commit a31cdf9c85738d11f437f9c6e4c5cb62a76e0ed0 +Author: Fredrik Adelöw +Date: Wed Feb 16 15:51:51 2022 +0100 + + put back the actual implementation, to not break old clients + + Signed-off-by: Fredrik Adelöw + +commit 91f6be833e7b6b8c21239867e55576eae5fc9f70 +Author: blam +Date: Wed Feb 16 14:55:30 2022 +0100 + + chore: fixing test + + Signed-off-by: blam + +commit 0cfbec9b793df91e1364563b17377e6776da2b46 +Merge: eae833a780 eca5c79447 +Author: Himanshu Mishra +Date: Wed Feb 16 14:11:03 2022 +0100 + + Merge pull request #9577 from backstage/emmaindal-patch-1 + + [Docs] fix broken storybook link + +commit eae833a780b31ab1ab7bdc8ba0ce7923c06555fa +Merge: 08b9b4db86 651b919dbb +Author: Patrik Oldsberg +Date: Wed Feb 16 13:58:55 2022 +0100 + + Merge pull request #9487 from andrewthauer/home-toolkit-accordian + + feat: add accordian home page toolkit support + +commit 08b9b4db86ccd2512ca82af21fdb09b0af691752 +Merge: e4709d570e 64da85d7aa +Author: Patrik Oldsberg +Date: Wed Feb 16 13:49:57 2022 +0100 + + Merge pull request #9363 from richardluong/rluong-dominant-baseline + + Change to Avatar in ShortcutIcon + +commit eca5c7944796aeb5887a53b3da87479531099174 +Author: Emma Indal +Date: Wed Feb 16 13:28:37 2022 +0100 + + fix broken storybook link + + Signed-off-by: Emma Indal + +commit 79c500e10e0670534b9cc9e7a581b95c8f76326c +Author: blam +Date: Wed Feb 16 13:18:24 2022 +0100 + + chore: updating changeset + + Signed-off-by: blam + +commit 0df5389f2f03bdbfb7c052673afd2c8fd19d09aa +Author: blam +Date: Wed Feb 16 13:16:00 2022 +0100 + + chore: remove from ActionsContext too + + Signed-off-by: blam + +commit 8db2b671c60f246fb184a9be6bae80eae994ec0c +Author: blam +Date: Wed Feb 16 13:08:28 2022 +0100 + + chore: added changeset + + Signed-off-by: blam + +commit 7bed999eb67770339b7daceb7ca53fbe004a105e +Author: blam +Date: Wed Feb 16 13:06:04 2022 +0100 + + chore: updating api-report with removed token + + Signed-off-by: blam + +commit 3d0dc89b76841cc2ad9d6322285a08ac4a14a405 +Author: blam +Date: Wed Feb 16 13:01:46 2022 +0100 + + chore: removed the token from actions, it's now backstageToken + + Signed-off-by: blam + +commit 64da85d7aa41a6769e8b990f6cd026d10b423566 +Author: Patrik Oldsberg +Date: Wed Feb 16 13:09:05 2022 +0100 + + shortcuts: remove unused import + + Signed-off-by: Patrik Oldsberg + +commit e4709d570e9cdca126d1711b06081cb48dab91a9 +Merge: 1aa2828a81 1208397ea6 +Author: Himanshu Mishra +Date: Wed Feb 16 12:43:41 2022 +0100 + + Merge pull request #9394 from backstage/orkohunter/homepage-getting-started + + Docs: Tutorial on adding a Backstage home page + +commit c8d1f915e780231c94f9fa1487bb241beeeeb63e +Author: Patrik Oldsberg +Date: Wed Feb 16 12:39:27 2022 +0100 + + shortcuts: remove unnecessary test + + Signed-off-by: Patrik Oldsberg + +commit 1208397ea62a18b2546311e1f20835d61498d93b +Author: Himanshu Mishra +Date: Wed Feb 16 12:33:35 2022 +0100 + + Home page -> homepage for consistency + + Signed-off-by: Himanshu Mishra + +commit 1aa2828a81d4516cb6a8bb8044903de6e9709d88 +Merge: a1c6fa32f3 d9a4750d26 +Author: Patrik Oldsberg +Date: Wed Feb 16 12:15:05 2022 +0100 + + Merge pull request #9289 from moltenice-forks/airbrake-api + + Airbrake Plugin API connectivity + +commit a1c6fa32f3d0408621d5854a47aa764a649b2738 +Merge: 6be27046e3 5e585bbc7f +Author: Fredrik Adelöw +Date: Wed Feb 16 10:58:20 2022 +0100 + + Merge pull request #9488 from backstage/freben/move-template + + move `TemplateEntityV1beta2` to `@backstage/plugin-scaffolder-common` + +commit 6be27046e3ea31ca5ade090788ebf754102e61d4 +Merge: 6bc4a0a7a4 7d3471db94 +Author: Ben Lambert +Date: Wed Feb 16 10:56:30 2022 +0100 + + Merge pull request #9572 from backstage/blam/deprecations/remove-provider-config + + deprecation: Remove `scaffolder.provider` config + +commit 7d3471db944f74030c883505dbfd04244ccc6215 +Author: blam +Date: Wed Feb 16 10:24:46 2022 +0100 + + chore: added changeset + + Signed-off-by: blam + +commit 65e0322e0dafef501d7028188c6d4fe9615b12bf +Author: blam +Date: Wed Feb 16 10:19:17 2022 +0100 + + chore: remove the deprecated provider config + + Signed-off-by: blam + +commit 2c5caf4e056a1a07e003bf737ca551ff8577884a +Author: Brian Fletcher +Date: Wed Feb 16 09:11:06 2022 +0000 + + fixes typo in changeset + + Signed-off-by: Brian Fletcher + +commit 6bc4a0a7a40c9e0e6abfc556de3ffa88844b03c2 +Merge: 373dfd4054 89846c22c7 +Author: Patrik Oldsberg +Date: Wed Feb 16 10:07:31 2022 +0100 + + Merge pull request #9553 from danilosoarescardoso/master + + adding adopter + +commit 373dfd4054c55399b9d619a68aedfca53d4fcd6f +Merge: 752e6217ab b2e8daabed +Author: Patrik Oldsberg +Date: Wed Feb 16 10:05:13 2022 +0100 + + Merge pull request #9566 from backstage/dependabot/npm_and_yarn/css-loader-6.6.0 + + chore(deps): bump css-loader from 6.5.1 to 6.6.0 + +commit 752e6217ab1789c789dafb5d22e6404e4834239f +Merge: d7868b4b0a 9035dbe289 +Author: Patrik Oldsberg +Date: Wed Feb 16 10:04:40 2022 +0100 + + Merge pull request #9562 from backstage/rugvip/secpol + + cli,codemods: update security policies + +commit 2714145cf5a8999f98b46471be19d5bbff263871 +Author: Brian Fletcher +Date: Wed Feb 16 09:02:45 2022 +0000 + + Adds a changeset + + Signed-off-by: Brian Fletcher + +commit 5e585bbc7f5a7d2a0247bf6539874c19be845ecc +Author: Fredrik Adelöw +Date: Tue Feb 15 14:52:49 2022 +0100 + + review comments + + Signed-off-by: Fredrik Adelöw + +commit 6fe01cec0487fe7269e9376e8fc3fa0d28c46708 +Author: Fredrik Adelöw +Date: Mon Feb 14 15:58:00 2022 +0100 + + add back the deprecation triangle on cards too + + Signed-off-by: Fredrik Adelöw + +commit e53afe448b1d84ffa69f5b1e2c9dab8e20f93541 +Author: Fredrik Adelöw +Date: Mon Feb 14 15:19:39 2022 +0100 + + warn in backend when scaffolding old templates + + Signed-off-by: Fredrik Adelöw + +commit e72d371296b7609e3bc4dd1b3bbd52abdde8170b +Author: Fredrik Adelöw +Date: Sat Feb 12 11:19:05 2022 +0100 + + move `TemplateEntityV1beta2` from `@backstage/catalog-model` to `@backstage/plugin-scaffolder-common` + + Signed-off-by: Fredrik Adelöw + +commit 8fa3bba4a4244c0121c26d9e579caf8fe839f718 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Wed Feb 16 08:40:07 2022 +0000 + + chore(deps): bump rollup from 2.60.2 to 2.67.2 + + Bumps [rollup](https://github.com/rollup/rollup) from 2.60.2 to 2.67.2. + - [Release notes](https://github.com/rollup/rollup/releases) + - [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md) + - [Commits](https://github.com/rollup/rollup/compare/v2.60.2...v2.67.2) + + --- + updated-dependencies: + - dependency-name: rollup + dependency-type: direct:production + update-type: version-update:semver-minor + ... + + Signed-off-by: dependabot[bot] + +commit d7868b4b0ae93160e8ffd388d81bf30762ca6640 +Merge: c412ddbeac 04f8837fb3 +Author: Johan Haals +Date: Wed Feb 16 09:35:36 2022 +0100 + + Merge pull request #9563 from RoadieHQ/update-roadie-plugins-v2 + + Update roadie plugins version + +commit 2dc67b70e50b76606ea91a3a6bb0a50469f249cc +Author: Eugene Malihins +Date: Tue Feb 15 15:19:59 2022 +0200 + + remove duplicate ingress.class annotation + + `kubernetes.io/ingress.class` annotation is already rendered on line 23 from `.Values.ingress.annotations`. + + This removes the duplicate, allowing Flux to deploy the chart (https://github.com/fluxcd/flux2/issues/1522) + + Signed-off-by: Eugene Malihins + +commit 548550685ebd02e29f4c30bbc59a857d370d58c6 +Author: Brian Fletcher +Date: Wed Feb 16 06:59:52 2022 +0000 + + remove react-use from core-plugin-api + + It does not appear to be used here. + + Signed-off-by: Brian Fletcher + +commit b2e8daabed938765066d7e5e21b825b5041126d1 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Wed Feb 16 04:08:04 2022 +0000 + + chore(deps): bump css-loader from 6.5.1 to 6.6.0 + + Bumps [css-loader](https://github.com/webpack-contrib/css-loader) from 6.5.1 to 6.6.0. + - [Release notes](https://github.com/webpack-contrib/css-loader/releases) + - [Changelog](https://github.com/webpack-contrib/css-loader/blob/master/CHANGELOG.md) + - [Commits](https://github.com/webpack-contrib/css-loader/compare/v6.5.1...v6.6.0) + + --- + updated-dependencies: + - dependency-name: css-loader + dependency-type: direct:production + update-type: version-update:semver-minor + ... + + Signed-off-by: dependabot[bot] + +commit c412ddbeacf83c71c65f406e8bf0352de2c866ca +Merge: a12503a305 661594bf43 +Author: Patrik Oldsberg +Date: Wed Feb 16 01:26:02 2022 +0100 + + Merge pull request #9559 from backstage/rugvip/intype + + scaffolder-backend: update TemplateAction to use more precise types + +commit 04f8837fb383b1ecc47d8ebdb891aa7fc7334c4c +Author: irma12 +Date: Tue Feb 15 23:10:16 2022 +0100 + + update roadie plugins version + + Signed-off-by: irma12 + +commit 9035dbe289905227ab625ddffff1e56eb58d039c +Author: Patrik Oldsberg +Date: Tue Feb 15 23:04:50 2022 +0100 + + cli,codemods: update security policies + + Signed-off-by: Patrik Oldsberg + +commit a12503a3053f1bd8f715828b2fe4e51984c2c80e +Merge: c63dff303c 1c95de39e3 +Author: Patrik Oldsberg +Date: Tue Feb 15 22:53:22 2022 +0100 + + Merge pull request #9511 from bassco/docker-build-deps-vscode-sqlite3 + + fix(docker): add deps for @vscode/sqlite3 + +commit 9892d74326c069162ba0bbb7348c944b166b3104 +Author: Patrik Oldsberg +Date: Tue Feb 15 21:27:12 2022 +0100 + + cli: renamed `script` commands to `package` + + Signed-off-by: Patrik Oldsberg + +commit 51ce07f0fe5d9f457188e010a3e04a615ae4436b +Author: Patrik Oldsberg +Date: Mon Feb 14 22:51:47 2022 +0100 + + cli: fix incorrect target package for app and backend build + + Signed-off-by: Patrik Oldsberg + +commit d9aa726fe1fdb734ed6303ea637492f22c760834 +Author: Patrik Oldsberg +Date: Tue Feb 15 11:32:00 2022 +0100 + + cli: skip diff of new package scripts + + Signed-off-by: Patrik Oldsberg + +commit 661594bf438e8ac039216af21d09c10114d00b9e +Author: Patrik Oldsberg +Date: Tue Feb 15 17:54:45 2022 +0100 + + scaffolder-backend: update TemplateAction to use more precise types + + Signed-off-by: Patrik Oldsberg + +commit c63dff303ca4c8636616b1ccfd63e9a5c7013634 +Merge: 816a08fa30 377fce4677 +Author: Patrik Oldsberg +Date: Tue Feb 15 20:14:08 2022 +0100 + + Merge pull request #9540 from backstage/rugvip/if + + jenkins-backend: depend on interface rather than implementation + +commit deaf6065dbb6cb2734e85ee2feb718d08f97415f +Author: Fredrik Adelöw +Date: Tue Feb 15 19:15:38 2022 +0100 + + Removed `CatalogApi.geLocationByEntity` and `CatalogApi.getOriginLocationByEntity`, and replaced them with `CatalogApi.getLocationByRef`. + + Signed-off-by: Fredrik Adelöw + +commit 816a08fa30f5545d1afd6b46fb54a7b4cedd2a52 +Merge: 15756907dc af6062aa20 +Author: Fredrik Adelöw +Date: Tue Feb 15 18:56:51 2022 +0100 + + Merge pull request #9557 from backstage/jhaals/remove-CatalogClientWrapper + + catalog: Remove CatalogClientWrapper + +commit 15756907dc5bbafb6fd28e47e62f94205a5cfa7f +Merge: c29e26319a 2badbd0054 +Author: Patrik Oldsberg +Date: Tue Feb 15 18:33:43 2022 +0100 + + Merge pull request #9500 from backstage/rugvip/parallint + + cli: introduce new `repo lint` command + +commit 377fce46776d66670409658bb8e83ea86d04fef0 +Author: Patrik Oldsberg +Date: Tue Feb 15 12:25:41 2022 +0100 + + jenkins-backend: depend on interface rather than implementation + + Signed-off-by: Patrik Oldsberg + +commit af6062aa200cc2bfdbc377b86aaf26eae75e2863 +Author: Johan Haals +Date: Tue Feb 15 16:50:47 2022 +0100 + + Update api report + + Signed-off-by: Johan Haals + +commit c29e26319ac5fc012f14ad222be1d57c154a327f +Merge: a52c98522a 7657eeae22 +Author: Johan Haals +Date: Tue Feb 15 16:49:41 2022 +0100 + + Merge pull request #9554 from backstage/jhaals/remove-router + + catalog: remove Router and EntityPageLayout + +commit ae7edbea45d95174d3c2d913495a890b48e9f486 +Author: Johan Haals +Date: Tue Feb 15 16:33:18 2022 +0100 + + catalog: Remove CatalogClientWrapper + + Signed-off-by: Johan Haals + +commit 7657eeae22c9c8a0ef7aef4ff8bf55be901732d8 +Author: Johan Haals +Date: Tue Feb 15 16:10:55 2022 +0100 + + catalog: remove Router and EntityPageLayout + + Signed-off-by: Johan Haals + +commit 89846c22c77cebd476e73e4f55f23690eb349796 +Author: Danilo Cardoso +Date: Tue Feb 15 12:07:09 2022 -0300 + + adding adopter + + Signed-off-by: Danilo Cardoso + +commit a52c98522aa71d5a1251b9a17d401b34da3c6324 +Merge: 798f10ba25 0d03e42a89 +Author: Johan Haals +Date: Tue Feb 15 15:38:20 2022 +0100 + + Merge pull request #9548 from backstage/jhaals/compareEntityToRef + + catalog-model: deprecate compareEntityToRef + +commit 798f10ba254aaf52bd0bd08fe99ddffcea940c49 +Merge: 0572246ea0 4673e00196 +Author: Johan Haals +Date: Tue Feb 15 15:37:48 2022 +0100 + + Merge pull request #9537 from backstage/jhaals/entityRefContext + + catalog-model: Deprecate EntityRefContext + +commit 0572246ea08a53307d97e448739df657bf0cd3f3 +Merge: a679454b98 50b621e7d0 +Author: Johan Haals +Date: Tue Feb 15 15:37:12 2022 +0100 + + Merge pull request #9534 from backstage/jhaals/default-namespace + + catalog-model: ENTITY_DEFAULT_NAMESPACE -> DEFAULT_NAMESPACE + +commit a679454b98e041c26afc53db54647e8692e32490 +Merge: 1c9891e3fb 98d1aa1ea1 +Author: Fredrik Adelöw +Date: Tue Feb 15 15:36:17 2022 +0100 + + Merge pull request #9538 from backstage/vinzscam/fix-catalog-owned-filter + + Fix Catalog page showing all components when owned filter was pre-selected + +commit eca7c3a92db406018128a6f176dfdbdfa1f4fdda +Author: Brian Fletcher +Date: Tue Feb 15 14:08:46 2022 +0000 + + fixes imports + + Signed-off-by: Brian Fletcher + +commit 0d03e42a89efdf5b318c13dba522a9a9294ced6c +Author: Johan Haals +Date: Tue Feb 15 14:50:37 2022 +0100 + + catalog-model: deprecate compareEntityToRef + + Signed-off-by: Johan Haals + +commit 4673e001969ba1f0a437cc8bc0084f3dae73ab6a +Author: Johan Haals +Date: Tue Feb 15 14:23:52 2022 +0100 + + fix wording + + Signed-off-by: Johan Haals + +commit 50b621e7d0e4364edab7506843e132f0c066ca55 +Author: Johan Haals +Date: Tue Feb 15 14:22:07 2022 +0100 + + fix wording + + Signed-off-by: Johan Haals + +commit ac578f2f4467cd438723692debfa2b8c19b6cba3 +Author: Brian Fletcher +Date: Tue Feb 15 12:56:20 2022 +0000 + + fixes react typo + + Signed-off-by: Brian Fletcher + +commit e242726f78cfe7e77102a28b369baddf8fc53c91 +Author: Brian Fletcher +Date: Tue Feb 15 12:54:13 2022 +0000 + + adds changeset + + Signed-off-by: Brian Fletcher + +commit 24cda4c9b1d27b847a29b7cb258e43311eca260b +Author: Brian Fletcher +Date: Tue Feb 15 12:52:59 2022 +0000 + + switches gcp-projects to use react-hookz + + Signed-off-by: Brian Fletcher + +commit 12dd25c2a1d4a4cbcba04d9ebe33c01a6e89d9ef +Author: Andre Wanlin +Date: Tue Feb 15 06:19:26 2022 -0600 + + Updated EmptyFlags code example + + Signed-off-by: Andre Wanlin + +commit 651b919dbbe04c52b74fa0ad49e2a9bcc400622b +Author: Andrew Thauer +Date: Tue Feb 15 06:57:03 2022 -0500 + + feat: add accordian home page toolkit support + + Signed-off-by: Andrew Thauer + Co-authored-by: Emma Indal + +commit e8c6f9d282d1f5e46eac553b7c6f2d0d3c99c184 +Author: Johan Haals +Date: Tue Feb 15 10:42:22 2022 +0100 + + catalog-model: Deprecate EntityRefContext + + and instead inline type where needed as the type isn't used much. + + Signed-off-by: Johan Haals + +commit 98d1aa1ea1871ccc04bce6a4093a01ce4a19ecb1 +Author: Vincenzo Scamporlino +Date: Tue Feb 15 10:33:54 2022 +0100 + + Add changeset + + Signed-off-by: Vincenzo Scamporlino + +commit f8aa2cafea5cb29b3b811bec57db992c3bd1df00 +Author: Vincenzo Scamporlino +Date: Tue Feb 15 10:28:02 2022 +0100 + + Wait until owned entities are loaded before resetting the filters + + Signed-off-by: Vincenzo Scamporlino + +commit 7aeb491394726e5e225188e0e39fd23201b41ce7 +Author: Johan Haals +Date: Tue Feb 15 10:05:57 2022 +0100 + + catalog-model: deprecate ENTITY_DEFAULT_NAMESPACE, replace with DEFAULT_NAMESPACE + + Signed-off-by: Johan Haals + +commit 1c9891e3fbbacf46403a865852034c44989bd42e +Merge: 42de8b42d2 c0507ca4f0 +Author: Johan Haals +Date: Tue Feb 15 10:24:50 2022 +0100 + + Merge pull request #9533 from backstage/jhaals/annotations + + catalog-model: Prefix annotations with ANNOTATION_ + +commit 42de8b42d24d20f86c4cd30d2e4903b670ab3a64 +Merge: 4faf1f99e0 da4c2180c0 +Author: Johan Haals +Date: Tue Feb 15 10:23:40 2022 +0100 + + Merge pull request #9535 from backstage/freben/remove-techdocs-board + + remove the techdocs board automation workflow + +commit da4c2180c028eeff9a875e5e82d5432fd23a98d5 +Author: Fredrik Adelöw +Date: Tue Feb 15 10:18:46 2022 +0100 + + remove the techdocs board automation workflow + + Signed-off-by: Fredrik Adelöw + +commit c0507ca4f0b7d94ae01ccdd628ba8710e3813dc5 +Author: Johan Haals +Date: Tue Feb 15 09:44:45 2022 +0100 + + chore: format + + Signed-off-by: Johan Haals + +commit 4faf1f99e014ed4e446879d91372b7dd008595f2 +Merge: 185e12f959 0b3eb2119d +Author: Patrik Oldsberg +Date: Tue Feb 15 09:37:46 2022 +0100 + + Merge pull request #9532 from gauthier-roebroeck-mox/patch-1 + + Update ADOPTERS.md + +commit 185e12f959e328e4e419900b9c323965895aa96c +Merge: 80c627d098 6b69700981 +Author: Patrik Oldsberg +Date: Tue Feb 15 09:32:30 2022 +0100 + + Merge pull request #9531 from backstage/dependabot/npm_and_yarn/pg-8.7.3 + + chore(deps): bump pg from 8.7.1 to 8.7.3 + +commit 27eccab2160a18e24d37abad021e584acf1a1114 +Author: Johan Haals +Date: Tue Feb 15 09:30:41 2022 +0100 + + catalog-model: Prefix annotations with ANNOTATION_ + + Signed-off-by: Johan Haals + +commit 0b3eb2119df532b8b4be14d780a7713018dd3d23 +Author: gauthier-roebroeck-mox <70737734+gauthier-roebroeck-mox@users.noreply.github.com> +Date: Tue Feb 15 15:22:15 2022 +0800 + + Update ADOPTERS.md + + I am not working on the project anymore + + Signed-off-by: Gauthier Roebroeck + +commit 6b69700981bc8ad633e41897605080a2049c0685 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Tue Feb 15 04:47:11 2022 +0000 + + chore(deps): bump pg from 8.7.1 to 8.7.3 + + Bumps [pg](https://github.com/brianc/node-postgres/tree/HEAD/packages/pg) from 8.7.1 to 8.7.3. + - [Release notes](https://github.com/brianc/node-postgres/releases) + - [Changelog](https://github.com/brianc/node-postgres/blob/master/CHANGELOG.md) + - [Commits](https://github.com/brianc/node-postgres/commits/pg@8.7.3/packages/pg) + + --- + updated-dependencies: + - dependency-name: pg + dependency-type: direct:production + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit 7410e122682602514221509c0844e665dfb4d101 +Author: Patrik Oldsberg +Date: Mon Feb 14 21:48:13 2022 +0100 + + changesets: added changeset for CLI package role tweaks and test command change + + Signed-off-by: Patrik Oldsberg + +commit 6a52a93417a2df9d066d4bc1c901c037ec6e6176 +Author: Patrik Oldsberg +Date: Mon Feb 14 21:47:57 2022 +0100 + + cli: rename package-role migration command to package-roles + + Signed-off-by: Patrik Oldsberg + +commit 8f82d80adf7c8bf324da1fc198391c5f01cf2c29 +Author: Patrik Oldsberg +Date: Mon Feb 14 21:40:19 2022 +0100 + + migrate all package scripts + + Signed-off-by: Patrik Oldsberg + +commit 71973cd4d36c1ed9cb822ed6df8143cdd9618a80 +Author: Patrik Oldsberg +Date: Mon Feb 14 21:36:15 2022 +0100 + + cli: improve package script migration to keep more args and not replace custom scripts + + Signed-off-by: Patrik Oldsberg + +commit 11e1621e53ebb26291f3482cb6164106a732bb5d +Author: Patrik Oldsberg +Date: Mon Feb 14 21:16:50 2022 +0100 + + cli: fix test script setup and make it pass with no tests by default + + Signed-off-by: Patrik Oldsberg + +commit 03fb4d9c9b9cfa2c5f749397288164be8722da6f +Author: Patrik Oldsberg +Date: Sun Feb 13 23:22:04 2022 +0100 + + cli: avoid adding pack scripts when migrating scripts in cli packages + + Signed-off-by: Patrik Oldsberg + +commit 0266c65a37cdc4065eda60486cada8dc6abbb8b6 +Author: Patrik Oldsberg +Date: Sun Feb 13 23:19:05 2022 +0100 + + cli: upgrade package script migration to keep some flags + + Signed-off-by: Patrik Oldsberg + +commit 510740be65af25476689767b2583b85837e4b36c +Author: Patrik Oldsberg +Date: Sun Feb 13 23:07:03 2022 +0100 + + cli: add missing role option for build script command + mark experimental + + Signed-off-by: Patrik Oldsberg + +commit bb5fcc3209757630041d414386a6efd2cff94c09 +Author: Patrik Oldsberg +Date: Sun Feb 13 22:55:21 2022 +0100 + + update all plugin package roles + + Signed-off-by: Patrik Oldsberg + +commit d3381edcb17afecd2ea293adede3e021c2a7b9ae +Author: Patrik Oldsberg +Date: Sun Feb 13 22:59:30 2022 +0100 + + cli: rename plugin-x roles to x-plugin + + Signed-off-by: Patrik Oldsberg + +commit c77c5c7eb6bc9a47c77b0575c70a7a101d979213 +Author: Patrik Oldsberg +Date: Sun Jan 30 19:17:45 2022 +0100 + + changesets: added changeset for package role additions + + Signed-off-by: Patrik Oldsberg + +commit a5fc44d8809ab7c60a33457da1f5509a70578105 +Author: Patrik Oldsberg +Date: Sat Jan 22 18:21:56 2022 +0100 + + tweak incorrectly detected package roles + + Signed-off-by: Patrik Oldsberg + +commit b521c1b83be483dfafb32a8b73c474fb6d638d10 +Author: Patrik Oldsberg +Date: Sat Jan 22 18:19:55 2022 +0100 + + detect all package roles + + Signed-off-by: Patrik Oldsberg + +commit 80c627d098d8ae9aa1b6e73911e442d2fe6aab27 +Merge: e2cf0662eb 70f9655034 +Author: Patrik Oldsberg +Date: Mon Feb 14 21:48:50 2022 +0100 + + Merge pull request #9490 from backstage/rugvip/maps + + cli: add test source maps and update docs + +commit e2cf0662eb9924d89cfb40f28d98b306ad06e092 +Author: Joe Porpeglia +Date: Mon Feb 14 12:45:44 2022 -0500 + + Warn if permission backend is used without permissions enabled + + Signed-off-by: Joe Porpeglia + +commit 70f9655034bab4a8fb3fdba6e8678fb4eab7dfdb +Author: Patrik Oldsberg +Date: Mon Feb 14 20:53:52 2022 +0100 + + docs: add suggestion to disable full test runs in Jest editor integration + + Signed-off-by: Patrik Oldsberg + +commit 1c95de39e33db81f0c7e7885093ed653152006b8 +Author: Andrew Basson +Date: Mon Feb 14 16:24:01 2022 +0100 + + chore(contrib/docker/devops): fix docs typos + + Signed-off-by: Andrew Basson + + Co-authored-by: Johan Haals + +commit a929ef20d344cabfe639a43d75acaf0d26ed2831 +Merge: 2e5bfeae67 baf9097e2c +Author: Patrik Oldsberg +Date: Mon Feb 14 16:05:34 2022 +0100 + + Merge pull request #9513 from backstage/rugvip/authdocs + + docs: tweak auth docs and add new ScmAuthApi section + link from error + +commit baf9097e2c1666debcb12e0a436235e457627fd7 +Author: Patrik Oldsberg +Date: Mon Feb 14 15:37:58 2022 +0100 + + docs: fix auth doc spleling + + Signed-off-by: Patrik Oldsberg + +commit 2e5bfeae674a23257bdb8bd9847a562e4e907a4f +Merge: f896d8ebf1 244d24ebc4 +Author: Johan Haals +Date: Mon Feb 14 14:29:00 2022 +0100 + + Merge pull request #9510 from backstage/jhaals/dep-location + + catalog: Move Location type from catalog-model to catalog-client + +commit f896d8ebf120368f46bb854b86239a444e6bd7a4 +Merge: 33e271f414 7baf9515f2 +Author: Patrik Oldsberg +Date: Mon Feb 14 14:11:13 2022 +0100 + + Merge pull request #9514 from backstage/rugvip/storybump + + storybook: bump storybook deps + +commit 7baf9515f27b8432e4668713c8b9325391676dcf +Author: Patrik Oldsberg +Date: Mon Feb 14 13:42:54 2022 +0100 + + storybook: bump storybook deps + + Signed-off-by: Patrik Oldsberg + +commit f0e2f7a56a5ff9a70d67169276e47c042bd1d8fe +Author: Patrik Oldsberg +Date: Mon Feb 14 13:32:42 2022 +0100 + + integration-react: link to scm auth setup docs if provider config is missing + + Signed-off-by: Patrik Oldsberg + +commit c939e23269dd0b41a1d438ea3021f845596dddcc +Author: Patrik Oldsberg +Date: Mon Feb 14 13:29:50 2022 +0100 + + docs: add scm auth setup docs + + Signed-off-by: Patrik Oldsberg + +commit caa0979c4ae41a3b4892c2f5b193ed892b0499fb +Author: Patrik Oldsberg +Date: Mon Feb 14 13:13:28 2022 +0100 + + docs: update auth sign-in setup docs + + Signed-off-by: Patrik Oldsberg + +commit 2badbd0054581d5c776392da1f06f81041cb891f +Author: Patrik Oldsberg +Date: Mon Feb 14 12:09:41 2022 +0100 + + cli: avoid requiring any particular ref to be present in git test + + Signed-off-by: Patrik Oldsberg + +commit 3ec45a86e43f23626894389e3a924c52ec2e2a9f +Author: Andrew Basson +Date: Mon Feb 14 11:53:13 2022 +0100 + + fix(docker): add deps for @vscode/sqlite3 + + The change to using @vscode/sqlite3 broke our deployment builds. + Adding the required build tool `g++` and linking `python` to the python3 executable. + + ```shell + make: Entering directory '/builds/.../node_modules/@vscode/sqlite3/build' + ACTION deps_sqlite3_gyp_action_before_build_target_unpack_sqlite_dep Release/obj/gen/sqlite-autoconf-3360000/sqlite3.c + /bin/sh: python: not found + ``` + + Technically, the python path can be added to `.nmprc`, but added it to the docker file instead. + + Signed-off-by: Andrew Basson + +commit 244d24ebc440c2b5ada8f6c21b8e0924c1a53917 +Author: Johan Haals +Date: Mon Feb 14 11:44:11 2022 +0100 + + catalog: Move Location type from catalog-model to catalog-client + + Signed-off-by: Johan Haals + +commit 33e271f414ad6ad5b7151159e304114aac628fb0 +Merge: 6da13cfa52 379da9fb1d +Author: Fredrik Adelöw +Date: Mon Feb 14 10:56:56 2022 +0100 + + Merge pull request #9489 from backstage/freben/processor-integrations + + catalog-backend: use `ScmIntegrationRegistry` interface properly + +commit 6da13cfa524034676fa9df2a0281254a9fa67acf +Merge: 0fcb7076ea af5052c622 +Author: Patrik Oldsberg +Date: Mon Feb 14 10:27:32 2022 +0100 + + Merge pull request #9495 from backstage/rugvip/cad + + create-app: update peer dependencies + +commit 0fcb7076ea9840cb6460f04e29c26b2cbe475ddd +Merge: a0d01b167f 4c0332e55c +Author: Raghunandan Balachandran +Date: Mon Feb 14 09:40:47 2022 +0100 + + Merge pull request #9469 from backstage/dependabot/npm_and_yarn/elastic/elasticsearch-mock-1.0.0 + + chore(deps-dev): bump @elastic/elasticsearch-mock from 0.3.0 to 1.0.0 + +commit a0d01b167fa1f0e080767896bed7b67f0e03f3bc +Merge: 71e8539c91 9221b96017 +Author: Johan Haals +Date: Mon Feb 14 09:40:21 2022 +0100 + + Merge pull request #9505 from backstage/dependabot/npm_and_yarn/storybook/storybook/addon-links-6.4.19 + + chore(deps-dev): bump @storybook/addon-links from 6.4.18 to 6.4.19 in /storybook + +commit 9221b96017945fb135898417eb099af5d2817952 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Mon Feb 14 08:10:59 2022 +0000 + + chore(deps-dev): bump @storybook/addon-links in /storybook + + Bumps [@storybook/addon-links](https://github.com/storybookjs/storybook/tree/HEAD/addons/links) from 6.4.18 to 6.4.19. + - [Release notes](https://github.com/storybookjs/storybook/releases) + - [Changelog](https://github.com/storybookjs/storybook/blob/v6.4.19/CHANGELOG.md) + - [Commits](https://github.com/storybookjs/storybook/commits/v6.4.19/addons/links) + + --- + updated-dependencies: + - dependency-name: "@storybook/addon-links" + dependency-type: direct:development + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit 71e8539c91c1ebc558dafcd80fa3a9de20db597f +Merge: 3fba2f11a8 db29cd0a9e +Author: Johan Haals +Date: Mon Feb 14 09:08:24 2022 +0100 + + Merge pull request #9496 from backstage/rugvip/release-org + + org: trigger release + +commit 3fba2f11a8ede6e6e61e4caca2d8a6fc2970cde5 +Merge: 9bac6b7856 83aa1b0f59 +Author: Johan Haals +Date: Mon Feb 14 09:04:20 2022 +0100 + + Merge pull request #9501 from backstage/dependabot/npm_and_yarn/mini-css-extract-plugin-2.5.3 + + chore(deps): bump mini-css-extract-plugin from 2.5.2 to 2.5.3 + +commit 9bac6b7856555a9cae1fdbd3b2f2c03ede6380b3 +Merge: 831b8b851a e10a082907 +Author: Johan Haals +Date: Mon Feb 14 09:04:04 2022 +0100 + + Merge pull request #9502 from backstage/dependabot/npm_and_yarn/types/rollup-plugin-peer-deps-external-2.2.1 + + chore(deps-dev): bump @types/rollup-plugin-peer-deps-external from 2.2.0 to 2.2.1 + +commit 831b8b851a6e435fcc2be874bbf06e5d72ef6ac5 +Merge: 7f2d9a3aff 5079fc8c9b +Author: Johan Haals +Date: Mon Feb 14 09:02:52 2022 +0100 + + Merge pull request #9503 from backstage/dependabot/npm_and_yarn/vm2-3.9.7 + + chore(deps): bump vm2 from 3.9.6 to 3.9.7 + +commit 7f2d9a3aff65143bfac48937f04b1bc120fa6238 +Merge: d8d2571fce 0b9bce831b +Author: Johan Haals +Date: Mon Feb 14 09:02:24 2022 +0100 + + Merge pull request #9497 from backstage/rugvip/range + + cicd-statistics: fix core-plugin-api dependency range + +commit d8d2571fce5995255905c8593e522709ab2b95ad +Merge: a2e5b91b1c 8fbced21a3 +Author: Johan Haals +Date: Mon Feb 14 09:02:07 2022 +0100 + + Merge pull request #9508 from backstage/dependabot/npm_and_yarn/storybook/storybook/addon-storysource-6.4.19 + + chore(deps-dev): bump @storybook/addon-storysource from 6.4.18 to 6.4.19 in /storybook + +commit a2e5b91b1cff6af3e6ba56d04aab8fb0e1dfafbd +Merge: 09ac499ddd d1eff62105 +Author: Camila Belo +Date: Mon Feb 14 08:17:31 2022 +0100 + + Merge pull request #9333 from RoadieHQ/fix-inline-docs-search + + Fix tech docs inline search on Postgres + +commit 09ac499dddcf4d899acaac646d37b3f2cdcab97f +Merge: 93318c97c1 70b390c8e2 +Author: Camila Belo +Date: Mon Feb 14 07:46:00 2022 +0100 + + Merge pull request #9472 from hbomark/main + + [chore] Adds npm package info for plugin-home. + +commit 93318c97c14bce1406d54b392c3a14e7d2e0eb93 +Merge: 828a3e339c 99d8205a8d +Author: Camila Belo +Date: Mon Feb 14 07:38:11 2022 +0100 + + Merge pull request #9364 from backstage/vinzscam/search-modal-fetch-on-open + + SearchModal invoke search only when visible + +commit 8fbced21a3afbe40ccaa6f78bf606868fa8d0cec +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Mon Feb 14 04:36:15 2022 +0000 + + chore(deps-dev): bump @storybook/addon-storysource in /storybook + + Bumps [@storybook/addon-storysource](https://github.com/storybookjs/storybook/tree/HEAD/addons/storysource) from 6.4.18 to 6.4.19. + - [Release notes](https://github.com/storybookjs/storybook/releases) + - [Changelog](https://github.com/storybookjs/storybook/blob/v6.4.19/CHANGELOG.md) + - [Commits](https://github.com/storybookjs/storybook/commits/v6.4.19/addons/storysource) + + --- + updated-dependencies: + - dependency-name: "@storybook/addon-storysource" + dependency-type: direct:development + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit 5079fc8c9b994c0ca9d50774f6ce3c19da49db32 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Mon Feb 14 04:13:19 2022 +0000 + + chore(deps): bump vm2 from 3.9.6 to 3.9.7 + + Bumps [vm2](https://github.com/patriksimek/vm2) from 3.9.6 to 3.9.7. + - [Release notes](https://github.com/patriksimek/vm2/releases) + - [Changelog](https://github.com/patriksimek/vm2/blob/master/CHANGELOG.md) + - [Commits](https://github.com/patriksimek/vm2/compare/3.9.6...3.9.7) + + --- + updated-dependencies: + - dependency-name: vm2 + dependency-type: direct:production + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit e10a082907e0770017d4a09211c4e69124224c2c +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Mon Feb 14 04:08:54 2022 +0000 + + chore(deps-dev): bump @types/rollup-plugin-peer-deps-external + + Bumps [@types/rollup-plugin-peer-deps-external](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/rollup-plugin-peer-deps-external) from 2.2.0 to 2.2.1. + - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) + - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/rollup-plugin-peer-deps-external) + + --- + updated-dependencies: + - dependency-name: "@types/rollup-plugin-peer-deps-external" + dependency-type: direct:development + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit 83aa1b0f59d10bebadbe68e5dd6569ddece4b4e1 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Mon Feb 14 04:08:25 2022 +0000 + + chore(deps): bump mini-css-extract-plugin from 2.5.2 to 2.5.3 + + Bumps [mini-css-extract-plugin](https://github.com/webpack-contrib/mini-css-extract-plugin) from 2.5.2 to 2.5.3. + - [Release notes](https://github.com/webpack-contrib/mini-css-extract-plugin/releases) + - [Changelog](https://github.com/webpack-contrib/mini-css-extract-plugin/blob/master/CHANGELOG.md) + - [Commits](https://github.com/webpack-contrib/mini-css-extract-plugin/compare/v2.5.2...v2.5.3) + + --- + updated-dependencies: + - dependency-name: mini-css-extract-plugin + dependency-type: direct:production + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit 00208b83f4cd6321902365560f0dbe4bcfcc8f1f +Author: Patrik Oldsberg +Date: Sun Feb 13 22:13:44 2022 +0100 + + cli: add duration in repo lint output + + Signed-off-by: Patrik Oldsberg + +commit 0b74c72987dcfc09322006d825d9aa48f43edd56 +Author: Patrik Oldsberg +Date: Sun Feb 13 22:07:19 2022 +0100 + + changesets: added changeset for repo lint addition + + Signed-off-by: Patrik Oldsberg + +commit 99d975cd3eafeae6336ee8a008b5d226bd5f54c1 +Author: Patrik Oldsberg +Date: Sun Feb 13 22:05:18 2022 +0100 + + cli: tiny bit of logic to optimize repo lint order + + Signed-off-by: Patrik Oldsberg + +commit 92f90d552a49e48d737bb5b2635d0e0e05007d77 +Author: Patrik Oldsberg +Date: Sun Feb 13 21:35:53 2022 +0100 + + cli: set default parallelism to cpus/2 + + Signed-off-by: Patrik Oldsberg + +commit 20b135e24e9de9ed47f2f885a13e308ce1b996b1 +Author: Patrik Oldsberg +Date: Sun Feb 13 21:32:22 2022 +0100 + + cli: tweak worker queue to not spawn too many threads and use env + + Signed-off-by: Patrik Oldsberg + +commit 103278ecb9b08e65658a83faa3e82998b7750ba3 +Author: Patrik Oldsberg +Date: Sun Feb 13 21:27:28 2022 +0100 + + cli: add --since flag for repo lint command + + Signed-off-by: Patrik Oldsberg + +commit aa892fccc5ff61158ffa0e3898c008017afc50a4 +Author: Patrik Oldsberg +Date: Sun Feb 13 21:27:01 2022 +0100 + + cli: added package graph utility to list changed packages + + Signed-off-by: Patrik Oldsberg + +commit fb39eb9fc421e669d0a9a362ab36612086592cd2 +Author: Patrik Oldsberg +Date: Sun Feb 13 21:26:10 2022 +0100 + + cli: added lib utilities for working with git + + Signed-off-by: Patrik Oldsberg + +commit 432bc564f49ad2f261dc4796f75a75c8b69ca182 +Author: Patrik Oldsberg +Date: Sun Feb 13 16:32:16 2022 +0100 + + cli: add new hidden repo lint command + + Signed-off-by: Patrik Oldsberg + +commit 0fb1b0dbe39448f62230359300de9a56d6487980 +Author: Patrik Oldsberg +Date: Sun Feb 13 16:30:54 2022 +0100 + + cli: update worker queue to allow async factory function + + Signed-off-by: Patrik Oldsberg + +commit 632d9b3622040a4b25d5f97d72d2222496987f16 +Author: Patrik Oldsberg +Date: Sun Feb 13 16:29:46 2022 +0100 + + cli: set default worker queue thread count to cpus/2 + + Signed-off-by: Patrik Oldsberg + +commit 0b9bce831be57d954a1a999faedd04a6a7629b0b +Author: Patrik Oldsberg +Date: Sun Feb 13 14:28:54 2022 +0100 + + cicd-statistics: fix core-plugin-api dependency range + + Signed-off-by: Patrik Oldsberg + +commit db29cd0a9e27a74d678edaab61f995def9c08a80 +Author: Patrik Oldsberg +Date: Sun Feb 13 14:20:42 2022 +0100 + + org: trigger release + + Signed-off-by: Patrik Oldsberg + +commit af5052c6225e4be400f85c72460fb5559a21bfdd +Author: Patrik Oldsberg +Date: Sun Feb 13 14:11:23 2022 +0100 + + create-app: update peer dependencies + + Signed-off-by: Patrik Oldsberg + +commit 86ab640b20fa8078d33aedbaf7a50e28db8b1569 +Author: Patrik Oldsberg +Date: Sat Feb 12 16:47:41 2022 +0100 + + cli,docs: update jest transform to only include source maps when requested + + Signed-off-by: Patrik Oldsberg + +commit f1a93494463907848fe3254eeb12d90c79a7a8dd +Author: Patrik Oldsberg +Date: Sat Feb 12 14:37:46 2022 +0100 + + docs: update test and jest docs + + Signed-off-by: Patrik Oldsberg + +commit c6bbafb5163f05220b557324edddbd93f62293aa +Author: Patrik Oldsberg +Date: Sat Feb 12 13:52:24 2022 +0100 + + cli: updated jest transform to include source maps + + Signed-off-by: Patrik Oldsberg + +commit 379da9fb1df56bed3cf282a51477b48f8771ac6e +Author: Fredrik Adelöw +Date: Sat Feb 12 12:38:59 2022 +0100 + + catalog-backend: use ScmIntegrationRegistry interface properly + + Signed-off-by: Fredrik Adelöw + +commit 828a3e339cda479ab3ff675ae9ae6eb063f1c1c5 +Merge: a57621b496 215debc7e0 +Author: Fredrik Adelöw +Date: Sat Feb 12 11:20:45 2022 +0100 + + Merge pull request #9479 from backstage/jhaals/remove-serializeEntityRef + + catalog-model: Remove serializeEntityRef + +commit 215debc7e0a2a51313b725e029a5c1cdd56b0cf9 +Author: Fredrik Adelöw +Date: Sat Feb 12 10:20:50 2022 +0100 + + fix tests + + Signed-off-by: Fredrik Adelöw + +commit a57621b496d04b202f4d963bcb3ad14e7ee39df8 +Merge: fedb8307f0 3e59f90b51 +Author: Patrik Oldsberg +Date: Sat Feb 12 00:16:05 2022 +0100 + + Merge pull request #9482 from daviddyball/master + + scaffolder-backend: fix error behaviour in runCommand helper + +commit fedb8307f03941aeaceae38b9fcc05135a5098bd +Merge: f8e3fe38c0 82a6d8746e +Author: Patrik Oldsberg +Date: Fri Feb 11 20:12:26 2022 +0100 + + Merge pull request #9484 from backstage/rugvip/abc + + cli: fix flaky parallel test + +commit 854ef5ddfff9ebcf357ba8b6c39da719ca0054c3 +Author: Johan Haals +Date: Fri Feb 11 15:03:04 2022 +0100 + + reuse format logic from serializeEntityRef + + Signed-off-by: Johan Haals + +commit d08b6d035d59a2c8aadec4127706768cbc5c5824 +Author: Johan Haals +Date: Fri Feb 11 14:16:53 2022 +0100 + + add breaking notice + + Signed-off-by: Johan Haals + +commit edbc03814a4c4a5be626968e8b02dde27824f215 +Author: Johan Haals +Date: Fri Feb 11 14:10:58 2022 +0100 + + catalog-model: Remove serializeEntityRef + + Signed-off-by: Johan Haals + +commit f8e3fe38c0de72baa7c6d40069d4d57a9118f0dd +Merge: 640fcf0021 20f3244102 +Author: Fredrik Adelöw +Date: Fri Feb 11 18:18:48 2022 +0100 + + Merge pull request #9480 from backstage/jhaals/catalog-model-deprecations + + catalog-model: deprecate unused exports + +commit 640fcf00211cd0b4472f5cf95a323c2fe186942a +Merge: 5a0a32c22c 216725b434 +Author: Fredrik Adelöw +Date: Fri Feb 11 18:17:57 2022 +0100 + + Merge pull request #9486 from backstage/freben/locayshunz + + catalog-model: rename parse/stringifyLocationRef + +commit 5a0a32c22c557c15138f8e0d9f5dc5ef4782809d +Merge: 17c9f846bb fd311bfce5 +Author: Fredrik Adelöw +Date: Fri Feb 11 17:18:10 2022 +0100 + + Merge pull request #9483 from backstage/freben/catalog-client-2 + + catalog-client: clean up api exports + +commit 216725b434f583b5a01b6a8273935736db7cb10d +Author: Fredrik Adelöw +Date: Fri Feb 11 17:11:10 2022 +0100 + + catalog-model: rename parse/stringifyLocationRef + + Signed-off-by: Fredrik Adelöw + +commit 17c9f846bb884de33d4e82957556db489b4ad122 +Author: Joe Porpeglia +Date: Fri Feb 11 09:56:17 2022 -0500 + + Make NonEmptyArray type private/ignored + + Signed-off-by: Joe Porpeglia + +commit 6a079788e87362a287fe6969cd51679dcb9a8bee +Author: Joe Porpeglia +Date: Wed Feb 9 21:42:28 2022 -0500 + + Cast type instead of throwing + + Signed-off-by: Joe Porpeglia + +commit 8c646beb247d22c388ebf70705899b6475cb49fe +Author: Joe Porpeglia +Date: Tue Feb 8 13:58:41 2022 -0500 + + Add changesets + + Signed-off-by: Joe Porpeglia + +commit 9d91a6965caa366b35c5fea70cb610d37b0301b4 +Author: Joe Porpeglia +Date: Fri Feb 4 16:43:40 2022 -0500 + + Fix api reports + + Signed-off-by: Joe Porpeglia + +commit 08ce0c83dd0ff4b0f3a5932f94e22306510ca866 +Author: Joe Porpeglia +Date: Fri Feb 4 15:27:51 2022 -0500 + + Use strict() validation for permission criteria zod schemas + + Signed-off-by: Joe Porpeglia + +commit e66bb847985ec6a3f356dc8e28320c18cc1b7a0b +Author: Joe Porpeglia +Date: Thu Feb 3 18:58:24 2022 -0500 + + Require at least one item in allOf/anyOf criteria + + Signed-off-by: Joe Porpeglia + +commit de103e5fc1f6d74b6d70af0ba4dce62a0aabb8c1 +Merge: d3292ab1ba df05781ddd +Author: Camila Belo +Date: Fri Feb 11 16:48:53 2022 +0100 + + Merge pull request #9476 from RoadieHQ/update-tech-docs + + Change colors for highlighted code + +commit fd311bfce50d7206f6c94a21bab8975cdb82992a +Author: Fredrik Adelöw +Date: Fri Feb 11 16:40:36 2022 +0100 + + patchy + + Signed-off-by: Fredrik Adelöw + +commit 82a6d8746e7fb44d17b909273cb2b8aba5402f6d +Author: Patrik Oldsberg +Date: Fri Feb 11 16:34:38 2022 +0100 + + cli: fix flaky parallel test + + Signed-off-by: Patrik Oldsberg + +commit 3e59f90b51b348bbd5ddd39249ff2e7f489fe174 +Author: David Dyball +Date: Fri Feb 11 14:48:37 2022 +0000 + + scaffolder-backend: fix error behaviour in runCommand helper + + Signed-off-by: David Dyball + +commit 538ca90790c75f62b713dfb03b73da72b673f564 +Author: Fredrik Adelöw +Date: Fri Feb 11 15:51:18 2022 +0100 + + catalog-client: clean up api exports + + Signed-off-by: Fredrik Adelöw + +commit d3292ab1ba163f538a311658c02806d6755e41c7 +Merge: 0222773beb 453145abba +Author: Fredrik Adelöw +Date: Fri Feb 11 15:08:56 2022 +0100 + + Merge pull request #9453 from backstage/freben/no-cross-in-backend + + techdocs: do not use cross-fetch in backend + +commit 0222773beb558a1aa90778b61bc27b5f412aa2f9 +Merge: ef4f8623e2 bd4b4f0ca6 +Author: Johan Haals +Date: Fri Feb 11 15:06:44 2022 +0100 + + Merge pull request #9473 from backstage/jhaals/catalog-model + + catalog-model/catalog-backend: Remove usage of deprecated validation … + +commit ef4f8623e235197f588e7b376ebedb37cc6dc2a8 +Merge: da6e8838f3 c82cd1b137 +Author: Patrik Oldsberg +Date: Fri Feb 11 14:52:49 2022 +0100 + + Merge pull request #9478 from backstage/rugvip/yeo + + scaffolder-backend-module-yeoman: bump yeoman-environment + +commit 20f324410258eefaee82b35c48bd682094426837 +Author: Johan Haals +Date: Fri Feb 11 14:44:16 2022 +0100 + + catalog-model: deprecate unused exports + + Signed-off-by: Johan Haals + +commit da6e8838f3fefd3c88f6f4d826484b69e5da0bf4 +Merge: 63b1bf73ff 8eda0e7a9c +Author: Fredrik Adelöw +Date: Fri Feb 11 14:42:26 2022 +0100 + + Merge pull request #9477 from backstage/freben/catalog-client-1 + + catalog-client: api cleanup + +commit 63b1bf73ffc10b763689f1b031a2462f0cc771ab +Merge: 2babab5a38 a9461c1e65 +Author: Patrik Oldsberg +Date: Fri Feb 11 14:37:31 2022 +0100 + + Merge pull request #9410 from backstage/rugvip/threads + + cli: refactoring and more utilities for working with worker threads + +commit 2babab5a38c9ab9a85d0aa0101e19cdb0bc67ec0 +Merge: f67fc7264c 9417be6fdd +Author: Patrik Oldsberg +Date: Fri Feb 11 14:27:34 2022 +0100 + + Merge pull request #9458 from backstage/rugvip/bumpmessage + + cli: a couple of improvements to versions:bump + +commit f67fc7264c5c369f975419f880f535c45526fb91 +Merge: e90014359d a31559d1f5 +Author: Fredrik Adelöw +Date: Fri Feb 11 14:26:50 2022 +0100 + + Merge pull request #9452 from backstage/freben/passport-oauth2 + + Bump passport-oauth2 to version 1.6.1 + +commit bd4b4f0ca6e51ef283e325d0ca83dfcde11ac2bc +Author: Johan Haals +Date: Fri Feb 11 14:19:47 2022 +0100 + + add breaking text + + Signed-off-by: Johan Haals + +commit e90014359d6404a496264a49fed85b3451e9d49e +Merge: 66494da41a 9732299062 +Author: Patrik Oldsberg +Date: Fri Feb 11 14:17:27 2022 +0100 + + Merge pull request #9145 from RoadieHQ/eventually-remove-deprecated-EntitySystemDiagramCard + + catalog: Remove deprecated EntitySystemDiagramCard - defer merge + +commit c82cd1b13721574737fdcbb148aafa1a64ba0317 +Author: Patrik Oldsberg +Date: Fri Feb 11 14:10:28 2022 +0100 + + scaffolder-backend-module-yeoman: bump yeoman-environment + + Signed-off-by: Patrik Oldsberg + +commit 8eda0e7a9c1033ddeb703479a1153d5d5ef950b7 +Author: Fredrik Adelöw +Date: Fri Feb 11 14:08:44 2022 +0100 + + catalog-client: api cleanup + + Signed-off-by: Fredrik Adelöw + +commit 66494da41a24f63f8798a89d5bda1f0ad9b46c62 +Merge: 6471765816 b590e9b58d +Author: Fredrik Adelöw +Date: Fri Feb 11 13:52:06 2022 +0100 + + Merge pull request #9475 from backstage/freben/hax-catalog-provider-perf + + Add batching to speed up initial entity provider mutations with large numbers of new additions + +commit eccfe4c76b539550d628e9a620939e5112914f26 +Author: Johan Haals +Date: Fri Feb 11 13:34:17 2022 +0100 + + remove unused @types/yup dependency + + Signed-off-by: Johan Haals + +commit df05781dddfc89375320c672fd0129ed510d3423 +Author: irma12 +Date: Fri Feb 11 13:23:43 2022 +0100 + + Fix typo in changeset + + Signed-off-by: irma12 + +commit 9df7b43e1ac2d7a9b2ab62956b58f747cbf20bdf +Author: irma12 +Date: Fri Feb 11 13:16:29 2022 +0100 + + Change colors for highlighted code + + Signed-off-by: irma12 + +commit 9417be6fdd5503022365b59586f9a8f4f055e113 +Author: Patrik Oldsberg +Date: Fri Feb 11 12:59:51 2022 +0100 + + cli: update new bump test to match new output + + Signed-off-by: Patrik Oldsberg + +commit 4c69686cb91d455414ea95306543ae582b361c2d +Author: Patrik Oldsberg +Date: Fri Feb 11 11:32:35 2022 +0100 + + cli: encode versions in upgrade helper URL + + Signed-off-by: Patrik Oldsberg + +commit 22862486def499fb51efc778ee0676a179ffc87e +Author: Patrik Oldsberg +Date: Thu Feb 10 18:02:15 2022 +0100 + + changesets: added changesets for CLI versions:bump improvements + + Signed-off-by: Patrik Oldsberg + +commit 46cedf1d7d42acb8cdd296af7669e70100bd7363 +Author: Patrik Oldsberg +Date: Thu Feb 10 17:57:02 2022 +0100 + + cli: capture logs in backstage.json bump tests + + Signed-off-by: Patrik Oldsberg + +commit d2927cb5dcc449f780c4023e204ac7a1ba038f54 +Author: Patrik Oldsberg +Date: Thu Feb 10 17:51:59 2022 +0100 + + cli: document yarn install workaround and tweak upgrade helper messaging + + Signed-off-by: Patrik Oldsberg + +commit e9ee1f91e113d65cbe8a04d5b5cd0ccf64e080f0 +Author: Patrik Oldsberg +Date: Thu Feb 10 17:48:00 2022 +0100 + + cli: include the root package in set of packages to upgrade + + Signed-off-by: Patrik Oldsberg + +commit 2c83545ddaeb4c743b2bb67997e14fa3c132dea2 +Author: Patrik Oldsberg +Date: Thu Feb 10 17:37:48 2022 +0100 + + cli: clean up yarn install output in versions bump + + Signed-off-by: Patrik Oldsberg + +commit 409e99684e9b2cc6a2e3ef9938182be9b5775d52 +Author: Patrik Oldsberg +Date: Thu Feb 10 17:00:08 2022 +0100 + + cli: filter out npm_ env vars when running yarn install inside bump + + Signed-off-by: Patrik Oldsberg + +commit d32504cccaf803ec8a3ec9cb6a38b37584f31fa5 +Author: Patrik Oldsberg +Date: Thu Feb 10 15:49:14 2022 +0100 + + cli: include version info and upgrade helper link in bump output + + Signed-off-by: Patrik Oldsberg + +commit b590e9b58d77309c4a18beddd50481d37ce7ed72 +Author: Fredrik Adelöw +Date: Thu Feb 10 10:16:01 2022 +0100 + + Add batching to speed up initial entity provider mutations with large numbers of new additions + + Signed-off-by: Fredrik Adelöw + +commit 029a5650fd7e026e848a7f6f2bd766e736627ec2 +Author: Himanshu Mishra +Date: Fri Feb 11 12:32:14 2022 +0100 + + use homepage consistently + + Signed-off-by: Himanshu Mishra + +commit e483dd6c7241aed9642706d307f9ac2e1141bc87 +Author: Johan Haals +Date: Fri Feb 11 10:28:04 2022 +0100 + + catalog-model/catalog-backend: Remove usage of deprecated validation methods + + Signed-off-by: Johan Haals + +commit d9a4750d2657af1c218eba1830bccd2df00e5088 +Merge: 498a6cf215 6471765816 +Author: Karan Shah +Date: Fri Feb 11 09:23:00 2022 +0000 + + Merge remote-tracking branch 'upstream/master' into airbrake-api + +commit 6471765816c7c13d718cb636bada2662bde7a88d +Merge: 1984da7155 95013112e6 +Author: Fredrik Adelöw +Date: Fri Feb 11 10:03:34 2022 +0100 + + Merge pull request #9460 from KimboTodd/kimbotodd-procore-adopters + + Add Procore to adopters + +commit 95013112e6261250f913901bae3942d757e6afa7 +Author: Kim Todd +Date: Thu Feb 10 15:02:56 2022 -0600 + + Add Procore to adopters, ran prettier + + Signed-off-by: Kim Todd + +commit 1984da7155332558f82f7946c64dee7564b573e0 +Merge: 74cad89f95 532dae9c4c +Author: Johan Haals +Date: Fri Feb 11 09:38:50 2022 +0100 + + Merge pull request #9450 from backstage/jhaals/pick-latest-manifest + + cli: versions:bump prefer latest manifest when next release is specified + +commit 74cad89f9558143e34448f68ecbe3c3dee7363a0 +Merge: e8ecdadb11 8353e9a2c9 +Author: Fredrik Adelöw +Date: Fri Feb 11 09:34:57 2022 +0100 + + Merge pull request #9467 from backstage/dependabot/npm_and_yarn/types/dockerode-3.3.3 + + chore(deps): bump @types/dockerode from 3.3.1 to 3.3.3 + +commit e8ecdadb11b7f951523dc62f5795c0d895d0e846 +Merge: b8c4b02635 30b2685647 +Author: Patrik Oldsberg +Date: Fri Feb 11 09:34:08 2022 +0100 + + Merge pull request #9466 from backstage/dependabot/npm_and_yarn/esbuild-0.14.21 + + chore(deps): bump esbuild from 0.14.20 to 0.14.21 + +commit b8c4b02635ae7473b7f64b92e6bcdf8376ec0558 +Merge: 5216b41214 61aae1def2 +Author: Johan Haals +Date: Fri Feb 11 09:12:11 2022 +0100 + + Merge pull request #9468 from backstage/dependabot/npm_and_yarn/nodemon-2.0.15 + + chore(deps-dev): bump nodemon from 2.0.12 to 2.0.15 + +commit 70b390c8e2abc126c19684a3a3091494ec10497d +Author: Mark Veronda +Date: Thu Feb 10 22:58:06 2022 -0800 + + [chore] Adds npm package info. + + Signed-off-by: Mark Veronda + +commit 5216b412142371375775d916127b25631d969037 +Merge: 9c17a6cdb9 34684bdc60 +Author: Fredrik Adelöw +Date: Fri Feb 11 07:27:49 2022 +0100 + + Merge pull request #9462 from backstage/blam/format-adopters + + prettier: format adopters file + +commit 4c0332e55c2e116da2ddf5148e9951f38e19d43d +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Fri Feb 11 04:14:15 2022 +0000 + + chore(deps-dev): bump @elastic/elasticsearch-mock from 0.3.0 to 1.0.0 + + Bumps [@elastic/elasticsearch-mock](https://github.com/elastic/elasticsearch-js-mock) from 0.3.0 to 1.0.0. + - [Release notes](https://github.com/elastic/elasticsearch-js-mock/releases) + - [Commits](https://github.com/elastic/elasticsearch-js-mock/compare/v0.3.0...v1.0.0) + + --- + updated-dependencies: + - dependency-name: "@elastic/elasticsearch-mock" + dependency-type: direct:development + update-type: version-update:semver-major + ... + + Signed-off-by: dependabot[bot] + +commit 61aae1def28e5abbfb332a265189a64d05b3c428 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Fri Feb 11 04:13:26 2022 +0000 + + chore(deps-dev): bump nodemon from 2.0.12 to 2.0.15 + + Bumps [nodemon](https://github.com/remy/nodemon) from 2.0.12 to 2.0.15. + - [Release notes](https://github.com/remy/nodemon/releases) + - [Commits](https://github.com/remy/nodemon/compare/v2.0.12...v2.0.15) + + --- + updated-dependencies: + - dependency-name: nodemon + dependency-type: direct:development + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit 8353e9a2c99e32ef18bd505a5b1a8f1a8ac82b8d +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Fri Feb 11 04:12:50 2022 +0000 + + chore(deps): bump @types/dockerode from 3.3.1 to 3.3.3 + + Bumps [@types/dockerode](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/dockerode) from 3.3.1 to 3.3.3. + - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) + - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/dockerode) + + --- + updated-dependencies: + - dependency-name: "@types/dockerode" + dependency-type: direct:production + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit 30b2685647e7f17ca6d36bf8e91f195e37109ece +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Fri Feb 11 04:11:27 2022 +0000 + + chore(deps): bump esbuild from 0.14.20 to 0.14.21 + + Bumps [esbuild](https://github.com/evanw/esbuild) from 0.14.20 to 0.14.21. + - [Release notes](https://github.com/evanw/esbuild/releases) + - [Changelog](https://github.com/evanw/esbuild/blob/master/CHANGELOG.md) + - [Commits](https://github.com/evanw/esbuild/compare/v0.14.20...v0.14.21) + + --- + updated-dependencies: + - dependency-name: esbuild + dependency-type: direct:production + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit 34684bdc601511423f0c4ba2dce321d87af06500 +Author: blam +Date: Fri Feb 11 00:21:06 2022 +0100 + + prettier: format adopters file + + Signed-off-by: blam + +commit 9c17a6cdb9be6ba85ef9bfab76b94e672902b9fe +Merge: d2a24dcb29 54c382c92c +Author: Patrik Oldsberg +Date: Thu Feb 10 18:38:56 2022 +0100 + + Merge pull request #9445 from backstage/rugvip/api-doc-tweaks + + api-extractor: add doc transforms for arrow components and func decls + +commit 54c382c92ca0adda2cdf6febf6c7ef3d6919e218 +Author: Patrik Oldsberg +Date: Thu Feb 10 10:02:03 2022 +0100 + + api-extractor: add doc transforms for arrow components and func decls + + Signed-off-by: Patrik Oldsberg + +commit 2b37b3057e7679fbb85eb963f278c0787c796fb2 +Author: Patrik Oldsberg +Date: Thu Feb 10 09:50:20 2022 +0100 + + scripts/api-extractor: allow docs build to be run for individual packages + + Signed-off-by: Patrik Oldsberg + +commit d2a24dcb29c28892d5e5352fba575b7b7aad9106 +Merge: e3a45b68c2 4610dab453 +Author: Ben Lambert +Date: Thu Feb 10 17:26:17 2022 +0100 + + Merge pull request #9456 from RoadieHQ/add-missing-step-to-migration-docs + + add missing step to docs + +commit 498a6cf215cdaea7d9067a4de8dfa35ac2f49054 +Merge: aab863538b e3a45b68c2 +Author: Karan Shah +Date: Thu Feb 10 16:25:10 2022 +0000 + + Merge remote-tracking branch 'upstream/master' into airbrake-api + + # Conflicts: + # plugins/airbrake/package.json + +commit 4610dab4532a318a66f1f355138395b0da6e2e5b +Author: Kiss Miklos +Date: Thu Feb 10 17:08:15 2022 +0100 + + Make header more readable + + Signed-off-by: Kiss Miklos + +commit 453145abbab0dfb6a89eb1daab0753b948f44205 +Author: Fredrik Adelöw +Date: Thu Feb 10 14:30:02 2022 +0100 + + techdocs: do not use cross-fetch in backend + + Signed-off-by: Fredrik Adelöw + +commit e3a45b68c2fba4b17f5912a94634e87fc8d7ecee +Merge: dc66b0ab3f 1ed305728b +Author: Fredrik Adelöw +Date: Thu Feb 10 16:54:21 2022 +0100 + + Merge pull request #9451 from backstage/freben/node-fetch + + bump node-fetch and cross-fetch + +commit 17240b1c1773ebe3b8334cf83bce729156ab7c3e +Author: Kiss Miklos +Date: Thu Feb 10 16:52:50 2022 +0100 + + run prettier on changed file + + Signed-off-by: Kiss Miklos + +commit aab863538baf61520669b48dc31e7d1634826fe1 +Author: Karan Shah +Date: Thu Feb 10 15:38:40 2022 +0000 + + Update package.json dependencies to the latest versions of Backstage dependencies + + Signed-off-by: Karan Shah + +commit 4a3386a35cd4c5c4dcaa018ff326c32b58ba5d60 +Author: Kiss Miklos +Date: Thu Feb 10 16:17:38 2022 +0100 + + remove accidental change + + Signed-off-by: Kiss Miklos + +commit 1c6825d88aa6262d1bddc6a1ce0c9839da9b3cf1 +Author: Kiss Miklos +Date: Thu Feb 10 16:12:13 2022 +0100 + + add missing step to docs + + Signed-off-by: Kiss Miklos + +commit dc66b0ab3fe766b2ba8d694371fc95030fa647c9 +Merge: 918dc38a2f 6c978548ed +Author: Fredrik Adelöw +Date: Thu Feb 10 15:54:53 2022 +0100 + + Merge pull request #9376 from K-Phoen/resource-dependency-of + + Resource dependency of + +commit 1ed305728b0160c42ea17721fd25ddd43f66bcdc +Author: Fredrik Adelöw +Date: Thu Feb 10 13:30:07 2022 +0100 + + bump node-fetch and cross-fetch + + Signed-off-by: Fredrik Adelöw + +commit c3c9733207ca989f3c883dee72eb767f0895a31d +Merge: c13bb6fc29 4f4bc77a41 +Author: Karan Shah +Date: Thu Feb 10 14:49:33 2022 +0000 + + Merge remote-tracking branch 'upstream/master' into airbrake-api + + # Conflicts: + # plugins/airbrake/package.json + # yarn.lock + +commit 918dc38a2f0c0394a998313a8da3cddc6c2b1eff +Merge: 4f4bc77a41 d3dd5b05ce +Author: Fredrik Adelöw +Date: Thu Feb 10 15:49:11 2022 +0100 + + Merge pull request #9454 from backstage/freben/trim-newlines + + bump trim-newlines + +commit d3dd5b05ce5faafccd256d7bb67d953d66571056 +Author: Fredrik Adelöw +Date: Thu Feb 10 14:56:23 2022 +0100 + + bump trim-newlines + + Signed-off-by: Fredrik Adelöw + +commit 99d8205a8d13a91ae2bdd8d36ded150bbaabe2a0 +Author: Vincenzo Scamporlino +Date: Thu Feb 10 14:40:55 2022 +0100 + + useSearchModal: clarify tests + + Signed-off-by: Vincenzo Scamporlino + +commit a31559d1f5ff89fa975f815cfb0672cb7fe6f659 +Author: Fredrik Adelöw +Date: Thu Feb 10 14:14:31 2022 +0100 + + Bump passport-oauth2 to version 1.6.1 + + Signed-off-by: Fredrik Adelöw + +commit 532dae9c4c11d5246607046bf536ee24e22dc8e8 +Author: Johan Haals +Date: Thu Feb 10 13:30:10 2022 +0100 + + cli: versions:bump prefer latest manifest when next release is specified + + Signed-off-by: Johan Haals + +commit 4f4bc77a4152d372b10a4e8d97d92f00e23f3b56 (tag: v0.67.0) +Merge: f2da97f58a e4791789d1 +Author: Patrik Oldsberg +Date: Thu Feb 10 12:58:17 2022 +0100 + + Merge pull request #9427 from backstage/changeset-release/master + + Version Packages + +commit e4791789d1cb8485c1698c8d699c95445f7795ff +Author: github-actions[bot] +Date: Thu Feb 10 11:06:33 2022 +0000 + + Version Packages + +commit f2da97f58a539d6d6125900d339d3d743be8abb7 +Merge: 8dab78a79e 04398e946e +Author: Fredrik Adelöw +Date: Thu Feb 10 11:59:43 2022 +0100 + + Merge pull request #9448 from backstage/freben/selfsigned + + bump selfsigned + +commit 8dab78a79ebf001879ee115bcb555cde8c8de11b +Merge: 8819f97d1c 1043789dc6 +Author: Fredrik Adelöw +Date: Thu Feb 10 11:53:02 2022 +0100 + + Merge pull request #9447 from backstage/freben/follow-redirects + + bump follow-redirects and istanbul-reports + +commit 8819f97d1c33bc2fc9a10a1d7047058a31f59b08 +Merge: 09ecd921af 898a56578c +Author: Fredrik Adelöw +Date: Thu Feb 10 11:27:20 2022 +0100 + + Merge pull request #9444 from backstage/freben/vm2 + + scaffolder: bump vm2 + +commit 04398e946e78198cd0c97d2e21ae4be2209c7425 +Author: Fredrik Adelöw +Date: Thu Feb 10 11:06:25 2022 +0100 + + bump selfsigned, google-p12-pem, xml-encryption + + Signed-off-by: Fredrik Adelöw + +commit 09ecd921afd850e959369314f17a6bff37497ce2 +Merge: c64f48741e 3c9aed1b16 +Author: Fredrik Adelöw +Date: Thu Feb 10 11:08:32 2022 +0100 + + Merge pull request #9408 from backstage/freben/node-common-again + + Add the `@backstage/plugin-auth-node` package + +commit c13bb6fc29ca8c332af98543600a30691ab6a63e +Author: Karan Shah +Date: Thu Feb 10 09:57:55 2022 +0000 + + Updated yarn.lock after fixing conflict with master + + Signed-off-by: Karan Shah + +commit 1043789dc69ced1bb21cfea684d3a4d28577fef6 +Author: Fredrik Adelöw +Date: Thu Feb 10 10:53:25 2022 +0100 + + bump follow-redirects and istanbul-reports + + See #9441, #8702 + + Signed-off-by: Fredrik Adelöw + +commit 9a382ff4e511521771385015b62337def1a6aceb +Merge: 71a6648e74 c64f48741e +Author: Karan Shah +Date: Thu Feb 10 09:53:29 2022 +0000 + + Merge remote-tracking branch 'upstream/master' into airbrake-api + + # Conflicts: + # yarn.lock + +commit c64f48741ea607cc57ef70a44cd875feee898a30 +Merge: cd317ec582 9033775d39 +Author: Ben Lambert +Date: Thu Feb 10 10:49:41 2022 +0100 + + Merge pull request #9375 from backstage/freben/inspect + + catalog: add an entity inspection dialog + +commit 898a56578cc65ba2e00b9a4ddc038ffd93aad1a6 +Author: Fredrik Adelöw +Date: Thu Feb 10 09:45:19 2022 +0100 + + scaffolder: bump vm2 + + Signed-off-by: Fredrik Adelöw + +commit 71a6648e74adfb0886ee80e733e9ad3e840c3ca4 +Author: Karan Shah +Date: Thu Feb 10 09:39:11 2022 +0000 + + Move tests to MSW from Nock + + Signed-off-by: Karan Shah + +commit 3c9aed1b16c5e89a05087999625eb4d9ccee0136 +Author: Fredrik Adelöw +Date: Thu Feb 10 10:36:45 2022 +0100 + + review comments + + Signed-off-by: Fredrik Adelöw + +commit e725bb812fab5eab4c15758df11314fac8ca98fc +Author: Vincenzo Scamporlino +Date: Wed Feb 9 17:55:06 2022 +0100 + + Remove SearchContextProvider from Root component + + Signed-off-by: Vincenzo Scamporlino + +commit 52d2d36b4bae607f60d9dbfb94a91452dd9b0f3b +Author: Vincenzo Scamporlino +Date: Wed Feb 9 17:48:00 2022 +0100 + + Move SearchModal state to useSearchModal + + Signed-off-by: Vincenzo Scamporlino + +commit cd317ec58260fae9a33bf0ec4675990636111bdb +Merge: c367ddb301 ad136d1c87 +Author: Ben Lambert +Date: Wed Feb 9 21:11:01 2022 +0100 + + Merge pull request #8912 from backstage/grantila/cicd-statistics + + Added CI/CD statistics plugin + +commit ad136d1c8732afbada469a134b17b0c0b77cd261 +Author: Gustaf Räntilä +Date: Wed Feb 9 17:48:43 2022 +0100 + + chore: go back to @date-io/luxon 1 for mui pickers... + + Signed-off-by: Gustaf Räntilä + +commit 29302d39db8d1a27e8df1970a1976e95e22b76ac +Author: Gustaf Räntilä +Date: Wed Feb 9 16:54:32 2022 +0100 + + fix(cicd-statistics): @types/react -> devDependencies + + Signed-off-by: Gustaf Räntilä + +commit 476c4c52fc9a3d9f71f3e747f496ffed70368f63 +Author: blam +Date: Wed Feb 9 13:50:20 2022 +0100 + + chore: api-reports 😅 + + Signed-off-by: blam + +commit c2cbcaf234566c33ad440b784589c89cf4922630 +Author: blam +Date: Wed Feb 9 11:50:56 2022 +0100 + + chore: de-dedupe dependencies and make the build green 🤞 + + Signed-off-by: blam + +commit b947238d1dd0b4fde53e85ad452fb26a2d1e847e +Author: Gustaf Räntilä +Date: Tue Feb 8 11:47:11 2022 +0100 + + fix(yarn.lock): Fixed urls + + Signed-off-by: Gustaf Räntilä + +commit 07faca1f278b3eaf424d4b96d6768836d7cd95c8 +Author: Gustaf Räntilä +Date: Mon Feb 7 17:21:17 2022 +0100 + + fix(cicd-statistics): Fixed test issue after refactoring + + Signed-off-by: Gustaf Räntilä + +commit 365e3f87ad0d593205d56bcdeb839f396f8bfc2f +Author: Gustaf Räntilä +Date: Mon Feb 7 12:56:21 2022 +0100 + + feat(cicd-statistics): Allow multi-step progress when loading statistics + + Loading can take a pretty long time, and often in several steps, such as "loading builds" followed by "loading pipelines per build". + + Signed-off-by: Gustaf Räntilä + +commit d5acd9f03554d19c5d15a84e233c976fabe481b0 +Author: Gustaf Räntilä +Date: Wed Feb 2 16:27:02 2022 +0100 + + feat(cicd-statistics): Added zoom capability to the charts + + Since loading of build information can take a long time, being able to zoom "client-side", using the fetched data, is very useful. + + This is built using a provider (ZoomProvider) which keeps zoom state, simplifies rendering a gray area while zooming and has a filter-function which can filter only values within the zoomed time range. + + Signed-off-by: Gustaf Räntilä + +commit b8454275c17e024abaa99e85ff8a85fbef3c1135 +Author: Gustaf Räntilä +Date: Wed Feb 2 16:23:34 2022 +0100 + + fix(cicd-statistics): Fixed progress bar animation, should be throttle, not debounce + + Signed-off-by: Gustaf Räntilä + +commit fdabd241d2b42916014ab9cc2d155a67c7fb3458 +Author: Gustaf Räntilä +Date: Wed Feb 2 13:18:19 2022 +0100 + + feat(cicd-statistics): Added trigger reason + + Some refactoring and tweaks. The trigger reason is an overlay to the build counts, and is a percentage of manually triggered builds vs all builds. When this is high, it indicates likelyhood of flaky tests. + + Signed-off-by: Gustaf Räntilä + +commit ec1ddbd8121dc1aa1559a330d65167a72f189680 +Author: Gustaf Räntilä +Date: Mon Jan 24 10:16:43 2022 +0100 + + docs(cicd-statistics): Made it a bit more clear this plugin requires a custom API implementation + + Signed-off-by: Gustaf Räntilä + +commit 52756327cfc9b02f57db1f40c6db74bd78fd8c73 +Author: Gustaf Räntilä +Date: Fri Jan 21 18:00:30 2022 +0100 + + feat(cicd-statistics): Allow custom hiding/collapsing under certain thresholds + + Signed-off-by: Gustaf Räntilä + +commit 2d7f173e0721f759012cbc4667628f13587cb811 +Author: Gustaf Räntilä +Date: Fri Jan 21 16:31:00 2022 +0100 + + feat(cicd-statistics): Added median analysis (alongside average) + + Signed-off-by: Gustaf Räntilä + +commit cbbab88d9f58ee76d4381088086c2354955bbd11 +Author: Gustaf Räntilä +Date: Fri Jan 21 16:07:37 2022 +0100 + + feat(cicd-statistics): Allow stages to individual status, and added bar charts counts, and some refactoring + + Signed-off-by: Gustaf Räntilä + +commit ecaa8e7a151bb142c122ced25d2a445566dd2cea +Author: Gustaf Räntilä +Date: Thu Jan 20 15:25:52 2022 +0100 + + fix(cicd-statistics): date-fns -> luxon + + Signed-off-by: Gustaf Räntilä + +commit 0a7179538a73e71a0e497ec2c8578a50c3abfdf0 +Author: Gustaf Räntilä +Date: Fri Jan 14 16:35:33 2022 +0100 + + fix(cicd-statistics): Don't export branchTypes, it's not very useful + + Signed-off-by: Gustaf Räntilä + +commit b8492f3b14829051f0913e7c490ed5cd1f075d1d +Author: Gustaf Räntilä +Date: Fri Jan 14 16:32:49 2022 +0100 + + fix(cicd-statistics): buildType -> branchType + + Signed-off-by: Gustaf Räntilä + +commit d3d16a2442d536443eb8185b6f82078e05ba3369 +Author: Gustaf Räntilä +Date: Fri Jan 14 16:28:28 2022 +0100 + + fix(cicd-statistics): Don't instanceof, do fuzzy matching for better compat + + Signed-off-by: Gustaf Räntilä + +commit 6c4744725623fb2007ad8d3a5bb859950b8aaf8c +Author: Gustaf Räntilä +Date: Fri Jan 14 14:43:19 2022 +0100 + + fix(cicd-statistics): Export missing component type + + Signed-off-by: Gustaf Räntilä + +commit 721dca4a1446ec7bbd1c947bd8ffc0c0490af485 +Author: Gustaf Räntilä +Date: Fri Jan 14 14:25:32 2022 +0100 + + fix(cicd-statistics): Don't export the routeRef + + Signed-off-by: Gustaf Räntilä + +commit 37218e495ea8a30caf8df161ceb4bb5ebe11ed56 +Author: Gustaf Räntilä +Date: Fri Jan 14 14:21:19 2022 +0100 + + fix(cicd-statistics): Renamed the exported component + + Signed-off-by: Gustaf Räntilä + +commit 706817149ba88e0742f03e668d0ed7d9cc4f837c +Author: Gustaf Räntilä +Date: Fri Jan 14 14:18:15 2022 +0100 + + fix(cicd-statistics): Made FilterBranchType and FilterStatusType not be parameterized + + Signed-off-by: Gustaf Räntilä + +commit cf0e970bc2788bd567682faa94caa366ac4fa2e7 +Author: Gustaf Räntilä +Date: Fri Jan 14 14:14:37 2022 +0100 + + fix(cicd-statistics): Added entity option to getConfiguration + + Signed-off-by: Gustaf Räntilä + +commit d82fe02ecfb16273ee322d4fd045283d54390265 +Author: Gustaf Räntilä +Date: Thu Jan 13 14:22:16 2022 +0100 + + docs(cicd-statistics): Fixed spellings in README + + Signed-off-by: Gustaf Räntilä + +commit 770c195f34ebdc79c0bee0b6f8c6b8a52bb6b58d +Author: Gustaf Räntilä +Date: Thu Jan 13 11:15:32 2022 +0100 + + feat(cicd-statistics): Added CI/CD statistics plugin + + Signed-off-by: Gustaf Räntilä + +commit c367ddb30110d6248f0785fa2a7f5faf2bdd153e +Merge: a94709068b d674971d3a +Author: Ben Lambert +Date: Wed Feb 9 19:51:28 2022 +0100 + + Merge pull request #9440 from backstage/blam/roll-back-bad-dep + + Rolling back the `@date-io/luxon` bump + +commit bf5222bfa1e7a41aa8b1afbc535ca917f442cbb1 +Author: Fredrik Adelöw +Date: Wed Feb 9 19:32:59 2022 +0100 + + moved over IdentityClient as well + + Signed-off-by: Fredrik Adelöw + +commit a94709068b2aec9ef293d2b08cd0225a28a64bef +Merge: 4b044e2978 71162bdcb3 +Author: Ben Lambert +Date: Wed Feb 9 19:21:21 2022 +0100 + + Merge pull request #9439 from backstage/blam/updating-create-app-changeset + + Updating `create-app` changeset + +commit 4b044e29785720d1ebeb4e144c1c007af7d45993 +Merge: 4963afa2f6 19155e0939 +Author: Patrik Oldsberg +Date: Wed Feb 9 19:12:11 2022 +0100 + + Merge pull request #9437 from backstage/rugvip/report-fixes + + core-components,catalog-react: clean up API reports + +commit d674971d3ae2133119a3f4683a7836e9e5788e00 +Author: blam +Date: Wed Feb 9 19:08:20 2022 +0100 + + chore: added changeset + Signed-off-by: blam + +commit 945ea0d27829ca5fbc4b5af5acb5b5054f3b5051 +Author: blam +Date: Wed Feb 9 19:06:30 2022 +0100 + + chore: roll back the date-io/luxon bump + + Signed-off-by: blam + +commit 4963afa2f66a651b27fb64aa3522e40ef331057a +Merge: d600f56f0f c904cefa0e +Author: Patrik Oldsberg +Date: Wed Feb 9 19:06:08 2022 +0100 + + Merge pull request #9438 from backstage/blam/exit-pre + + changesets: exit pre-release + +commit 71162bdcb34237f61407b9eff9d458ba10af22fa +Author: blam +Date: Wed Feb 9 18:42:54 2022 +0100 + + chore: updating collator reference too they should be using tokenManagers + Signed-off-by: blam + +commit b719d2873a68c3fc747346f437d862d5922cb531 +Author: blam +Date: Wed Feb 9 18:40:19 2022 +0100 + + chore: uodating package name to be correct + Signed-off-by: blam + +commit c904cefa0ebf47d454325b4f2ac81328a51e3f70 +Author: blam +Date: Wed Feb 9 18:33:29 2022 +0100 + + changesets: exit pre-release + + Signed-off-by: blam + +commit d600f56f0ff2936df160aa47849e4a7dfe63c8de +Merge: e34d4ce277 89c84b9108 +Author: Ben Lambert +Date: Wed Feb 9 18:29:02 2022 +0100 + + Merge pull request #9339 from backstage/dependabot/npm_and_yarn/types/react-17.0.39 + + chore(deps-dev): bump @types/react from 16.14.18 to 17.0.39 + +commit f9037431423d6eec52174341651f11f607281760 +Author: Vincenzo Scamporlino +Date: Fri Feb 4 20:53:01 2022 +0100 + + Improve SearchContext api report + + Signed-off-by: Vincenzo Scamporlino + +commit eb1386e284ee534562e19c65ba716e2c3dc0fc46 +Author: Vincenzo Scamporlino +Date: Fri Feb 4 20:07:01 2022 +0100 + + Split storybook SearchContextProvider + + Signed-off-by: Vincenzo Scamporlino + +commit f986369b2a204892481001538f37a4c23c5cda1e +Author: Vincenzo Scamporlino +Date: Fri Feb 4 14:31:41 2022 +0100 + + SearchModal changeset + + Signed-off-by: Vincenzo Scamporlino + +commit 28e9487f488f379e41e98c728cec07f13da48d7c +Author: Vincenzo Scamporlino +Date: Fri Feb 4 14:23:47 2022 +0100 + + Remove open state from SearchContext + + Signed-off-by: Vincenzo Scamporlino + +commit 19155e0939b5dc509dd4d7322f453da14bf37042 +Author: Patrik Oldsberg +Date: Wed Feb 9 17:52:20 2022 +0100 + + changesets: add changeset for cleaning up components in api reports + + Signed-off-by: Patrik Oldsberg + +commit 1cabe4264aa7a3fab8a4c634037887799baa2900 +Author: Patrik Oldsberg +Date: Wed Feb 9 17:39:48 2022 +0100 + + core-components,catalog-react: update API reports + + Signed-off-by: Patrik Oldsberg + +commit b9e83843e276f3313c627737b7d4fcd2f47257ef +Author: Karan Shah +Date: Wed Feb 9 16:19:58 2022 +0000 + + Stop using snake case + + Signed-off-by: Karan Shah + +commit 56f20465b7b5dd68f5508a45449335614543288e +Author: Patrik Oldsberg +Date: Wed Feb 9 17:09:50 2022 +0100 + + core-components,catalog-react: override type for forwardRef components + + Signed-off-by: Patrik Oldsberg + +commit 86b40d464fc71c0fdb3becca964f78cf5c421f71 +Author: Fredrik Adelöw +Date: Wed Feb 9 17:10:18 2022 +0100 + + move over BackstageSignInResult, BackstageIdentityResponse, BackstageUserIdentity + + Signed-off-by: Fredrik Adelöw + +commit 7a8ac1db0bc78ca3ef4d7e89ec483c4f7f816780 +Author: Karan Shah +Date: Wed Feb 9 16:07:15 2022 +0000 + + Revert ADOPTERS.md + + Signed-off-by: Karan Shah + +commit 6cb193343af1a84bf2b0022ec12c04bbd0611ff7 +Author: Karan Shah +Date: Wed Feb 9 16:04:08 2022 +0000 + + Update yarn.lock + + Signed-off-by: Karan Shah + +commit 9f97bf082e702709675d59fdb7877766f10e70fe +Merge: 81e19c612a e34d4ce277 +Author: Karan Shah +Date: Wed Feb 9 16:00:36 2022 +0000 + + Merge remote-tracking branch 'upstream/master' into airbrake-api + + # Conflicts: + # ADOPTERS.md + # plugins/airbrake/package.json + +commit e58af60d262c7b670f6b5f3f2db86094be68c85c +Author: Patrik Oldsberg +Date: Wed Feb 9 16:57:45 2022 +0100 + + core-components: explicit types for styled components + + Signed-off-by: Patrik Oldsberg + +commit 8928dea8f663ae3a024782995cf9f6a10fe39dc9 +Author: Patrik Oldsberg +Date: Wed Feb 9 15:36:05 2022 +0100 + + core-components: update Button and Link doc workarounds + + Signed-off-by: Patrik Oldsberg + +commit 89c84b9108e0e46ee8426271f800ad9e26d050d2 +Author: blam +Date: Wed Feb 9 14:31:24 2022 +0100 + + chore: added changeset for r17 issues + + Signed-off-by: blam + +commit 9643f75a1197e02efaa24d755dc058c46f6bd007 +Author: blam +Date: Wed Feb 9 14:29:47 2022 +0100 + + chore: added guards as these could be string types which don't have props... + + Signed-off-by: blam + +commit e34d4ce277927c846f79fa67d7bf9dbb5759a539 +Merge: ee456406b2 5255292a2a +Author: Ben Lambert +Date: Wed Feb 9 14:00:03 2022 +0100 + + Merge pull request #9362 from mdb/mdb/new-splunk-on-call-annotation + + [Plugin] Splunk On-Call plugin support for 'splunk.com/on-call-routing-key' annotation + +commit ee456406b280444e694314c6e3bf5c0ca0dfe4ae +Merge: afb451e6b4 083666d4e6 +Author: Ben Lambert +Date: Wed Feb 9 13:40:01 2022 +0100 + + Merge pull request #9434 from lorsatti/master + + LogMeIn is now GoTo + +commit afb451e6b4664314141858d9f22eaa3ac98113e2 +Merge: 0a58786880 4f743087e4 +Author: Ben Lambert +Date: Wed Feb 9 13:21:52 2022 +0100 + + Merge pull request #9383 from backstage/dependabot/npm_and_yarn/roadiehq/backstage-plugin-github-pull-requests-1.3.7 + + chore(deps): bump @roadiehq/backstage-plugin-github-pull-requests from 1.3.4 to 1.3.7 + +commit 083666d4e629733d06a9f9b55ad9294b1391e234 +Author: Lorenzo Orsatti <49567430+lorsatti@users.noreply.github.com> +Date: Wed Feb 9 12:48:42 2022 +0100 + + LogMeIn is now GoTo + Signed-off-by: Lorenzo Orsatti <49567430+lorsatti@users.noreply.github.com> + +commit 0a587868805ee4d1539f5035b7cdf267cebb04dd +Merge: 9fecedee09 4457994dae +Author: Patrik Oldsberg +Date: Wed Feb 9 13:02:31 2022 +0100 + + Merge pull request #9433 from backstage/rugvip/pathfix + + workflows: fix package paths in manifest sync + +commit 4457994dae9e0fbbdae9c5b6259220eea3b871ca +Author: Patrik Oldsberg +Date: Wed Feb 9 12:46:41 2022 +0100 + + workflows: fix package paths in manifest sync + + Signed-off-by: Patrik Oldsberg + +commit cc274eb7baa41ff736189c9bc82eae6f32389d43 +Author: Himanshu Mishra +Date: Wed Feb 9 11:49:28 2022 +0100 + + add pre-reqs and expectations of the tutorial + + Signed-off-by: Himanshu Mishra + +commit 9fecedee09596542b7f73f71f83716e63262a795 +Merge: 5181da715c e40e4fce19 +Author: Ben Lambert +Date: Wed Feb 9 11:35:54 2022 +0100 + + Merge pull request #9431 from backstage/benjdlambert-patch-1 + + Update CHANGELOG.md + +commit 4f743087e419983e9241ed3b1e327c0c439d88d7 +Author: blam +Date: Wed Feb 9 11:15:51 2022 +0100 + + chore: updating yarn.lock + Signed-off-by: blam + +commit 9ed980cc2819275e4a1b30437c1d1445c3eed3b3 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Mon Feb 7 04:26:49 2022 +0000 + + chore(deps): bump @roadiehq/backstage-plugin-github-pull-requests + + Bumps [@roadiehq/backstage-plugin-github-pull-requests](https://github.com/RoadieHQ/roadie-backstage-plugins/tree/HEAD/plugins/frontend/backstage-plugin-github-pull-requests) from 1.3.4 to 1.3.7. + - [Release notes](https://github.com/RoadieHQ/roadie-backstage-plugins/releases) + - [Changelog](https://github.com/RoadieHQ/roadie-backstage-plugins/blob/main/plugins/frontend/backstage-plugin-github-pull-requests/CHANGELOG.md) + - [Commits](https://github.com/RoadieHQ/roadie-backstage-plugins/commits/HEAD/plugins/frontend/backstage-plugin-github-pull-requests) + + --- + updated-dependencies: + - dependency-name: "@roadiehq/backstage-plugin-github-pull-requests" + dependency-type: direct:production + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit 5181da715c86b0e68e5f182369402ca769745161 +Merge: 3e8edde23e c42cab6887 +Author: Patrik Oldsberg +Date: Wed Feb 9 11:08:43 2022 +0100 + + Merge pull request #9432 from backstage/rugvip/rest + + workflows: fix breaking v5 change in github-script + +commit d3fcf47a962a19a7e6de47731814efcf5587f00d +Author: Himanshu Mishra +Date: Wed Feb 9 11:02:54 2022 +0100 + + docs: use Backstage application directory + + Signed-off-by: Himanshu Mishra + +commit 805f8acfd0cf45f808377384b69623818e1005ad +Author: Himanshu Mishra +Date: Wed Feb 9 10:59:54 2022 +0100 + + `packages/app` directory + + Signed-off-by: Himanshu Mishra + +commit f87a740a6a97562e9fff66412686dd7ab5ecbd6a +Author: Himanshu Mishra +Date: Wed Feb 9 10:54:51 2022 +0100 + + keep the custom homepage section in app custom theme page + + Signed-off-by: Himanshu Mishra + +commit e0ca377789da85a0e25bcc6ecec80581bc81416b +Author: Himanshu Mishra +Date: Mon Feb 7 16:28:53 2022 +0100 + + add section about the homepage template + + Signed-off-by: Himanshu Mishra + +commit 821bebdff781fcccb5380d5577a565f90d3fa9cd +Author: Himanshu Mishra +Date: Mon Feb 7 16:21:09 2022 +0100 + + complete instructions on setting up custom homepage + + Signed-off-by: Himanshu Mishra + +commit c42cab6887aff0330a99e1aa5a8261bc7f55b5d8 +Author: Patrik Oldsberg +Date: Wed Feb 9 10:53:05 2022 +0100 + + workflows: fix breaking v5 change in github-script + + Signed-off-by: Patrik Oldsberg + +commit 3e8edde23e9257c4065d717e859e3ac7da11b30c +Merge: 364ca848ce c01113b6a6 +Author: Patrik Oldsberg +Date: Wed Feb 9 10:46:34 2022 +0100 + + Merge pull request #9430 from backstage/rugvip/github + + workflows: fix release sync dispatch + +commit e40e4fce1921c1d2e618d9e528c07036ee8d7985 +Author: Ben Lambert +Date: Wed Feb 9 10:46:19 2022 +0100 + + Update CHANGELOG.md + + Signed-off-by: Ben Lambert + +commit 364ca848ced5a377b30911da8cbe77da9a7b248d +Merge: b1d236fb29 3d7ce34132 +Author: Ben Lambert +Date: Wed Feb 9 10:44:52 2022 +0100 + + Merge pull request #9413 from backstage/rugvip/issues + + github: add additional links and update issue template + +commit b1d236fb29300c1a1012194b0f4d71699294dc72 +Merge: 143ada0056 bd4c3a2130 +Author: Ben Lambert +Date: Wed Feb 9 10:44:11 2022 +0100 + + Merge pull request #9429 from fortum/adopters-fortum + + add fortum to adopters list + +commit b3f3e420363c6e795af5846ae91bf2236f43eaf0 +Author: Fredrik Adelöw +Date: Tue Feb 8 12:25:27 2022 +0100 + + move `IdentityClient.getBearerToken` + + Signed-off-by: Fredrik Adelöw + +commit 9058bb1b5e4683f25098482c27e531f038ee40eb +Author: Fredrik Adelöw +Date: Tue Feb 8 11:26:33 2022 +0100 + + add empty @backstage/plugin-auth-node + + Signed-off-by: Fredrik Adelöw + +commit 6bc86fcf2dabc9b2f329e1bd3dc22dc1366a5b24 +Author: Fredrik Adelöw +Date: Tue Feb 8 11:25:13 2022 +0100 + + make IdentityClient.listPublicKeys private + + Signed-off-by: Fredrik Adelöw + +commit c01113b6a613f6d0ad21d3a64f608559ef3a8bad +Author: Patrik Oldsberg +Date: Wed Feb 9 10:21:26 2022 +0100 + + workflows: fix release sync dispatch + + Signed-off-by: Patrik Oldsberg + +commit bd4c3a213028dcd19daec8519ba53305acb42a26 +Author: Sunil Kumar Mohanty +Date: Wed Feb 9 11:08:00 2022 +0200 + + add fortum to adopters list + + Signed-off-by: Sunil Kumar Mohanty + +commit 143ada0056bc48e75f863cb95427a4427db2fcfd +Merge: 6c5b5326e0 89a2d00de7 +Author: Johan Haals +Date: Wed Feb 9 09:35:01 2022 +0100 + + Merge pull request #9092 from backstage/mob/versions-bump2 + + cli: Add versions:bump params for bumping to specific releases + +commit 6c5b5326e09dad57a1a4a06fdb2fd1dfba23e9f9 +Merge: 6a6ef4327b bb1615fbd6 +Author: Johan Haals +Date: Wed Feb 9 09:24:41 2022 +0100 + + Merge pull request #9417 from ryan-hanchett/invitae-adopters + + docs: add invitae to adopters list + +commit 6a6ef4327be81f9abb70659f47ce87b8a9fa5ab0 +Merge: ee8395ee38 6a9cc7fb1f +Author: Johan Haals +Date: Wed Feb 9 09:22:45 2022 +0100 + + Merge pull request #9422 from backstage/dependabot/npm_and_yarn/ts-node-10.5.0 + + chore(deps-dev): bump ts-node from 10.4.0 to 10.5.0 + +commit ee8395ee38fa0e8039d0c7b0669dc56d862747e5 +Merge: e6f167225d 7fa5dc7807 +Author: Johan Haals +Date: Wed Feb 9 09:21:12 2022 +0100 + + Merge pull request #9423 from backstage/dependabot/npm_and_yarn/types/express-serve-static-core-4.17.28 + + chore(deps-dev): bump @types/express-serve-static-core from 4.17.24 to 4.17.28 + +commit 7fa5dc7807a7fa1bcc410a63490d1e4e36787867 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Wed Feb 9 04:30:56 2022 +0000 + + chore(deps-dev): bump @types/express-serve-static-core + + Bumps [@types/express-serve-static-core](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/express-serve-static-core) from 4.17.24 to 4.17.28. + - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) + - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/express-serve-static-core) + + --- + updated-dependencies: + - dependency-name: "@types/express-serve-static-core" + dependency-type: direct:development + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit 6a9cc7fb1f040f530b4d308e7ede140a7b09ecc5 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Wed Feb 9 04:29:33 2022 +0000 + + chore(deps-dev): bump ts-node from 10.4.0 to 10.5.0 + + Bumps [ts-node](https://github.com/TypeStrong/ts-node) from 10.4.0 to 10.5.0. + - [Release notes](https://github.com/TypeStrong/ts-node/releases) + - [Commits](https://github.com/TypeStrong/ts-node/compare/v10.4.0...v10.5.0) + + --- + updated-dependencies: + - dependency-name: ts-node + dependency-type: direct:development + update-type: version-update:semver-minor + ... + + Signed-off-by: dependabot[bot] + +commit 0d181683e841d817a18475a056c0707bd12d9318 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Wed Feb 9 00:53:49 2022 +0000 + + chore(deps-dev): bump @types/react from 16.14.18 to 17.0.39 + + Bumps [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) from 16.14.18 to 17.0.39. + - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) + - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react) + + --- + updated-dependencies: + - dependency-name: "@types/react" + dependency-type: direct:development + update-type: version-update:semver-major + ... + + Signed-off-by: dependabot[bot] + +commit e6f167225d843beeb974c287c3364d951b587626 (tag: v0.67.0-next.0) +Merge: f82f83c5ec e74f416a00 +Author: Patrik Oldsberg +Date: Wed Feb 9 01:20:18 2022 +0100 + + Merge pull request #9337 from backstage/changeset-release/master + + Version Packages (next) + +commit bb1615fbd62681075935ec20d95fba6d665c77f5 +Author: Ryan Hanchett +Date: Tue Feb 8 12:50:50 2022 -0800 + + docs: add invitae to adopters list + + Signed-off-by: Ryan Hanchett + +commit e74f416a00f16de0dbc6e347782cb20f7aa681c7 +Author: github-actions[bot] +Date: Tue Feb 8 19:38:17 2022 +0000 + + Version Packages (next) + +commit f82f83c5ec4875c8540cc203e3f036f208017445 +Merge: cdc4282e3f c311ae2736 +Author: Patrik Oldsberg +Date: Tue Feb 8 20:32:18 2022 +0100 + + Merge pull request #9414 from rv-ddeloff/fix/atlassian-refresh + + atlassian: remove option for disabling refresh + +commit c311ae27364ab8f99a7de24632c4c319d8334956 +Author: Patrik Oldsberg +Date: Tue Feb 8 20:12:51 2022 +0100 + + Update early-beds-smoke.md + + Signed-off-by: Patrik Oldsberg + +commit 3396bc597392574d0a1b2e9565597cb697c7a618 +Author: Daniel Deloff <44780793+rv-ddeloff@users.noreply.github.com> +Date: Tue Feb 8 14:04:50 2022 -0500 + + remove option for disabling refresh + + Signed-off-by: Daniel Deloff <44780793+rv-ddeloff@users.noreply.github.com> + +commit 3d7ce341328ca026d74d46ead96de5b162ef5fa9 +Author: Patrik Oldsberg +Date: Tue Feb 8 18:20:53 2022 +0100 + + github: add additional links and update issue template + + Signed-off-by: Patrik Oldsberg + +commit dc9fd0acf9b9333212ac3152e5aba2734863302e +Author: Richard Luong +Date: Tue Feb 8 17:04:20 2022 +0100 + + Use Avatar instead of custom svg icon + + Signed-off-by: Richard Luong + +commit cdc4282e3f3e527350d4dd6028262c48f70d012d +Merge: 3dd6b00793 1dd5a02e91 +Author: Fredrik Adelöw +Date: Tue Feb 8 17:05:17 2022 +0100 + + Merge pull request #9351 from backstage/dependabot/npm_and_yarn/knex-1.0.2 + + chore(deps): bump knex from 0.95.6 to 1.0.2 + +commit a9461c1e65124b94e26c46d33fb89d1e5b2766ec +Author: Patrik Oldsberg +Date: Tue Feb 8 16:14:54 2022 +0100 + + cli: switch to using thread helpers in type definition build + + Signed-off-by: Patrik Oldsberg + +commit c69411e6e68f941b5c73e6731caee8fda049e11c +Author: Patrik Oldsberg +Date: Tue Feb 8 16:07:12 2022 +0100 + + cli: add message passing to runWorkerThreads + + Signed-off-by: Patrik Oldsberg + +commit 89a2d00de73d9e810adc0fcf7538e859bc41b04e +Author: Johan Haals +Date: Tue Feb 8 16:43:04 2022 +0100 + + chore: add links to options doc strings + + Signed-off-by: Johan Haals + +commit 3dd6b007933cfcf9d4585584d4bdac49f71090c9 +Merge: 05453654c7 27c1a76233 +Author: Ben Lambert +Date: Tue Feb 8 16:32:23 2022 +0100 + + Merge pull request #9409 from backstage/blam/update-codeowners + + Update CODEOWNERS to have reviewer group always + +commit 27c1a76233a8193871d7f2e0e46bc2ed4dc2bced +Author: blam +Date: Tue Feb 8 15:58:41 2022 +0100 + + chore: make CODEOWNERS pretty ✨ + + Signed-off-by: blam + +commit dbee923ba89e862fa858c373eff65b9cbbddf68e +Author: blam +Date: Tue Feb 8 15:49:16 2022 +0100 + + chore: fix codereviews to always have reviewers + + Signed-off-by: blam + +commit 05453654c75764abe88f69861767d52d8fc908a6 +Merge: 5f0a20db15 0da410b905 +Author: Ben Lambert +Date: Tue Feb 8 15:38:33 2022 +0100 + + Merge pull request #9367 from backstage/jhaals/actions + + actions: Comment information about DCO signing when failing + +commit 5f0a20db151d7458bef4a6256d938210b22716ff +Merge: 970c06b521 6458be3307 +Author: Ben Lambert +Date: Tue Feb 8 15:01:28 2022 +0100 + + Merge pull request #9391 from snehaljos/issue9157 + + Fixed bug in UI | Fix for issue #9157 + +commit db1066eec96294abbc9da34817c7afe973a0dae1 +Author: Johan Haals +Date: Tue Feb 8 15:00:12 2022 +0100 + + chore: clarify function names + + Signed-off-by: Johan Haals + +commit 0af2670e45d43bcc29599c2c7d65eb1e0729d9e1 +Author: Johan Haals +Date: Tue Feb 8 14:44:05 2022 +0100 + + scripts: Do not allow warnings in packages/release-manifests + + Signed-off-by: Johan Haals + +commit 494e1914cdf6522f2f0273556ab3b54ce28cab0b +Author: Johan Haals +Date: Tue Feb 8 14:48:31 2022 +0100 + + chore: Remove accidental dot import + + Signed-off-by: Johan Haals + +commit bf78c72b16b37a875ed76e931ff1be69cbb535a7 +Author: Johan Haals +Date: Tue Feb 8 14:46:39 2022 +0100 + + fix typos in .changeset/cold-houses-type.md + + Signed-off-by: Johan Haals + + Co-authored-by: Fredrik Adelöw + +commit 970c06b521fa51c78ee34c87e99e06238a8e2f28 +Merge: 9370194ce9 646eb8748b +Author: Patrik Oldsberg +Date: Tue Feb 8 14:45:29 2022 +0100 + + Merge pull request #9396 from backstage/rugvip/pre + + changesets: enter prerelease + +commit 259929af4e745da266254bdffd3007e9eb8ba21f +Author: Johan Haals +Date: Tue Feb 8 14:41:40 2022 +0100 + + Update package header + + Signed-off-by: Johan Haals + + Co-authored-by: Fredrik Adelöw + +commit 1b58473c4bb2504fd1ee57a62a870784aa7dae0a +Author: Johan Haals +Date: Tue Feb 8 14:41:25 2022 +0100 + + Update .changeset/green-peaches-explode.md + + Signed-off-by: Johan Haals + + Co-authored-by: Fredrik Adelöw + +commit b25e1d23c7042a9461520da78c3f041e69bf0d57 +Author: Johan Haals +Date: Tue Feb 8 14:41:12 2022 +0100 + + Fix incorrect package name + + Signed-off-by: Johan Haals + + Co-authored-by: Fredrik Adelöw + +commit 6458be3307a3564ebb33b3c6f2cb08259e8972e9 +Author: blam +Date: Tue Feb 8 14:41:10 2022 +0100 + + chore: added changeset + Signed-off-by: blam + +commit 1026f12334e9fe5a05a5b475b95459c4daf7eae7 +Author: blam +Date: Tue Feb 8 14:36:20 2022 +0100 + + chore: fixing a totally different way and arguably a more simpler way. + + Signed-off-by: blam + +commit 0da410b9055a309aad72e66ba7d474a5950cdc3d +Author: Johan Haals +Date: Tue Feb 8 14:18:30 2022 +0100 + + Multiline message body + + Signed-off-by: Johan Haals + + Co-authored-by: Ben Lambert + +commit 1ac6871673a40ce37715051f04258f15c80a56e7 +Author: Patrik Oldsberg +Date: Tue Feb 8 13:11:08 2022 +0100 + + cli: refactor worker thread helper to separate queue and plain threads + + Signed-off-by: Patrik Oldsberg + +commit 00f6bcda2a06db6d14fa43dd73658f1dabef856b +Author: Patrik Oldsberg +Date: Tue Feb 8 12:33:58 2022 +0100 + + cli: initial worker thread helper + + Signed-off-by: Patrik Oldsberg + +commit d77c32fd48477a1d1d6d2e2de77f7b57d781a7c2 +Author: Johan Haals +Date: Tue Feb 8 11:33:59 2022 +0100 + + Use release version from manifest + + Signed-off-by: Johan Haals + +commit 9370194ce9e52b8abeeda06539b67bb34b323c54 +Merge: 1d3f760d29 68e1ba360f +Author: Patrik Oldsberg +Date: Tue Feb 8 11:15:07 2022 +0100 + + Merge pull request #9312 from backstage/rugvip/release-dispatch + + scripts/create-release-tag: dispatch release workflows + +commit 81e19c612ae1e067c573afedd0f67b47661ad60c +Author: Karan Shah +Date: Tue Feb 8 10:04:39 2022 +0000 + + Minor refactoring to better name variables + + Signed-off-by: Karan Shah + +commit db4ed55d9d380ff9851cad327a799d86c059202b +Author: Karan Shah +Date: Tue Feb 8 10:03:15 2022 +0000 + + Error test now passes + + Signed-off-by: Karan Shah + +commit 1d3f760d29446cdb145a862dd95774cffcea0d08 +Merge: 8173a668a6 a06665e272 +Author: Ben Lambert +Date: Tue Feb 8 10:55:44 2022 +0100 + + Merge pull request #9404 from backstage/rugvip/f + + cli: avoid preprack failure if dist/embedded-app doesn't exist + +commit 8173a668a6312c1f3aec2bb987bc3d96d4a85af8 +Merge: 2c82f6b5dd c3868458d8 +Author: Fredrik Adelöw +Date: Tue Feb 8 10:44:37 2022 +0100 + + Merge pull request #9403 from backstage/freben/no-port + + Remove unnecessary get-port dependency + +commit b740b0c7d8e5faa8d84e11a086ea5c6310c61dad +Author: Johan Haals +Date: Tue Feb 8 10:43:36 2022 +0100 + + switch to markdown comment tag + + Signed-off-by: Johan Haals + +commit f1a5d816965d3c9886d3b37f2e181aed8f838613 +Author: Johan Haals +Date: Tue Feb 8 10:33:38 2022 +0100 + + include dco-helper tag in comment + + Signed-off-by: Johan Haals + +commit c22bcaafddbccb4ddc45732aacef2a897d8b66af +Author: Johan Haals +Date: Tue Feb 8 10:22:19 2022 +0100 + + update tests + + Signed-off-by: Johan Haals + +commit cbb3aa231bc564320bb8c38a7a940dfdcd0bcfeb +Author: Johan Haals +Date: Mon Feb 7 11:20:08 2022 +0100 + + Update changeset + + Signed-off-by: Johan Haals + +commit 788ffa78e28f039f52683b7f933f934af79fb85d +Author: Johan Haals +Date: Wed Jan 26 14:45:24 2022 +0100 + + Skip backstage.json update for custom patterns. Add more tests + + Co-authored-by: Patrik Oldsberg + Co-authored-by: Fredrik Adelöw + Signed-off-by: Johan Haals + +commit 59f31a631552490ada609d60db7e959193f82d07 +Author: Johan Haals +Date: Wed Jan 26 11:37:49 2022 +0100 + + chore: fix test, add additonal tests + + Signed-off-by: Johan Haals + +commit 25c6c2fd747503f72f176979b1fc5e91dcbf288c +Author: Johan Haals +Date: Wed Jan 26 09:16:05 2022 +0100 + + update api report + + Signed-off-by: Johan Haals + +commit fc65c6cd9eef760b0a9838866e060d2065f2e80e +Author: Johan Haals +Date: Tue Jan 25 16:39:50 2022 +0100 + + Rename pkg, make isomorphic + + Signed-off-by: Johan Haals + +commit ba6c626d09e3d439f5b6e788d00a2ea57328582e +Author: Johan Haals +Date: Tue Jan 25 16:20:35 2022 +0100 + + combine bump arguments + + Signed-off-by: Johan Haals + +commit a06665e272f90901ddcc59167bf014077b3d65a8 +Author: Patrik Oldsberg +Date: Tue Feb 8 10:12:30 2022 +0100 + + cli: avoid preprack failure if dist/embedded-app doesn't exist + + Signed-off-by: Patrik Oldsberg + +commit c3868458d8afa82972f21afd8efa7b7a0eef45e2 +Author: Fredrik Adelöw +Date: Tue Feb 8 10:10:08 2022 +0100 + + Remove unnecessary get-port dependency + + Signed-off-by: Fredrik Adelöw + +commit aa15e9ae2bac8ad5b307f46c24e562740050f52c +Author: Johan Haals +Date: Tue Jan 25 16:06:54 2022 +0100 + + Add releaseVersion to manifest + + Signed-off-by: Johan Haals + +commit 1ecfb1614ba0e09b6006fa022d358e8c646ecf50 +Author: Johan Haals +Date: Tue Jan 25 08:57:57 2022 +0100 + + update yarn.lock + + Signed-off-by: Johan Haals + +commit dc4b7d4778beb184521d99e89644375bc4172f4d +Author: Johan Haals +Date: Mon Jan 24 14:40:22 2022 +0100 + + Add more tests + + Signed-off-by: Johan Haals + +commit 714895e91bcf5813c2d34d8eaa1a8f7458f11622 +Author: Johan Haals +Date: Mon Jan 24 14:36:43 2022 +0100 + + fix tests + + Signed-off-by: Johan Haals + +commit d9327ae0783d601aa18e51260360a99937c8c362 +Author: Johan Haals +Date: Mon Jan 24 10:40:33 2022 +0100 + + cli: fix tests + + Signed-off-by: Johan Haals + +commit 79b08b5fe3173bb2ca0c53e7e21f7f6b6f949596 +Author: Johan Haals +Date: Mon Jan 24 09:17:50 2022 +0100 + + Use correct package version + + Signed-off-by: Johan Haals + +commit aeb5c69abb75e6bd1519bfddc3f7aa76e0f8fa82 +Author: Johan Haals +Date: Fri Jan 21 15:27:12 2022 +0100 + + Add changesets + + Signed-off-by: Johan Haals + +commit cbf43cee68d24a1892e534b81cc7971c2593b755 +Author: Johan Haals +Date: Fri Jan 21 15:12:55 2022 +0100 + + Remove unused dependencies + + Signed-off-by: Johan Haals + +commit 0e09335809e17d64dbcf4f9831ebd826d1660900 +Author: Johan Haals +Date: Fri Jan 21 15:08:57 2022 +0100 + + fix missing annotations + + Signed-off-by: Johan Haals + +commit 2b92120edb4ce3cadd9f808a1e288ef2b029e132 +Author: Johan Haals +Date: Fri Jan 21 15:07:03 2022 +0100 + + Add missing export + + Signed-off-by: Johan Haals + +commit 415316302bac5450380ea80ce7f59a067ea37e45 +Author: Johan Haals +Date: Fri Jan 21 14:52:15 2022 +0100 + + Update paths, remove exclude + + Signed-off-by: Johan Haals + +commit 061393a964a018cdbd4909070d7b71664cb4cc50 +Author: Johan Haals +Date: Fri Jan 21 14:17:50 2022 +0100 + + Pass releaseManifest to versionFinder + + Signed-off-by: Johan Haals + +commit c2930c3b2cf88e62cdc83de246d7700954a277e7 +Author: Johan Haals +Date: Fri Jan 21 14:15:58 2022 +0100 + + manifest: add getReleaseBy methods + + Signed-off-by: Johan Haals + +commit 5cd75ebbea503e1cdb8b1264a1f3ee4adab93910 +Author: Johan Haals +Date: Fri Jan 21 14:14:58 2022 +0100 + + fix eslint error + + Signed-off-by: Johan Haals + +commit 7c4e7b707c285cfe56ddb73b0e3235713f9e9da6 +Author: Johan Haals +Date: Thu Jan 20 11:13:55 2022 +0100 + + cli/bump: Add tests for versionfinder + + Co-authored-by: Patrik Oldsberg + Signed-off-by: Johan Haals + +commit 36cca38c61fdd71b76edc4a08aa1d2bceda788a1 +Author: Johan Haals +Date: Wed Jan 19 13:48:15 2022 +0100 + + date compare release tracks, prefer latest + + Signed-off-by: Johan Haals + +commit 476bb9411595cda8337353d0dbd6ffd17a95190a +Author: Johan Haals +Date: Wed Jan 19 10:30:12 2022 +0100 + + Initial release manifest package + + Signed-off-by: Johan Haals + +commit 2c82f6b5dd0e802a7771a6b86b1ae6f8675d3c9e +Merge: 2e465e1a11 a7abd5f35b +Author: Ben Lambert +Date: Tue Feb 8 10:06:06 2022 +0100 + + Merge pull request #9397 from mufaddal7/feature/export-dashboard-component + + export DashboardSnapshotComponent from new-relic-dashboard plugin + +commit 2e465e1a11ffd7cd9f18a692e0a6b6e82090b36e +Merge: fea215fa7e d897491df2 +Author: Patrik Oldsberg +Date: Tue Feb 8 09:32:12 2022 +0100 + + Merge pull request #9399 from backstage/dependabot/npm_and_yarn/esbuild-0.14.20 + + chore(deps): bump esbuild from 0.14.10 to 0.14.20 + +commit fea215fa7e1ad6b858d15f18b4e3493bb504baba +Merge: 1b8fbcca3a 9067d7052f +Author: Patrik Oldsberg +Date: Tue Feb 8 09:30:07 2022 +0100 + + Merge pull request #9400 from backstage/dependabot/npm_and_yarn/winston-3.5.1 + + chore(deps): bump winston from 3.3.3 to 3.5.1 + +commit 1b8fbcca3a5327354d71315a33a9edaf03d0d300 +Merge: b0530b60a0 9774508111 +Author: Patrik Oldsberg +Date: Tue Feb 8 09:29:01 2022 +0100 + + Merge pull request #9402 from backstage/dependabot/npm_and_yarn/typescript-4.5.5 + + chore(deps-dev): bump typescript from 4.5.4 to 4.5.5 + +commit b0530b60a07477a3188edbb93b96d0e653967968 +Merge: d9ac082bef 51fe2055df +Author: Patrik Oldsberg +Date: Tue Feb 8 09:25:40 2022 +0100 + + Merge pull request #9259 from backstage/rugvip/role-pack + + cli: avoid using `yarn pack` when creating dist workspace + +commit a7abd5f35b5152f0ae9671b90622bdd3ad3cf024 +Author: mufaddal motiwala +Date: Tue Feb 8 12:09:31 2022 +0530 + + jsDoc comment added + + Signed-off-by: mufaddal motiwala + +commit 9774508111cd6d5cd0eeff8e14a59efc49b17f48 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Tue Feb 8 04:37:32 2022 +0000 + + chore(deps-dev): bump typescript from 4.5.4 to 4.5.5 + + Bumps [typescript](https://github.com/Microsoft/TypeScript) from 4.5.4 to 4.5.5. + - [Release notes](https://github.com/Microsoft/TypeScript/releases) + - [Commits](https://github.com/Microsoft/TypeScript/compare/v4.5.4...v4.5.5) + + --- + updated-dependencies: + - dependency-name: typescript + dependency-type: direct:development + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit 9067d7052f03976f972616df6c8b933b4fb65ddc +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Tue Feb 8 04:26:03 2022 +0000 + + chore(deps): bump winston from 3.3.3 to 3.5.1 + + Bumps [winston](https://github.com/winstonjs/winston) from 3.3.3 to 3.5.1. + - [Release notes](https://github.com/winstonjs/winston/releases) + - [Changelog](https://github.com/winstonjs/winston/blob/master/CHANGELOG.md) + - [Commits](https://github.com/winstonjs/winston/compare/v3.3.3...v3.5.1) + + --- + updated-dependencies: + - dependency-name: winston + dependency-type: direct:production + update-type: version-update:semver-minor + ... + + Signed-off-by: dependabot[bot] + +commit d897491df24eba614b124f4e69183e052f37c988 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Tue Feb 8 04:10:21 2022 +0000 + + chore(deps): bump esbuild from 0.14.10 to 0.14.20 + + Bumps [esbuild](https://github.com/evanw/esbuild) from 0.14.10 to 0.14.20. + - [Release notes](https://github.com/evanw/esbuild/releases) + - [Changelog](https://github.com/evanw/esbuild/blob/master/CHANGELOG.md) + - [Commits](https://github.com/evanw/esbuild/compare/v0.14.10...v0.14.20) + + --- + updated-dependencies: + - dependency-name: esbuild + dependency-type: direct:production + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit 5255292a2a0c5e7a84ea59f53c74439f21e4b4ac +Author: Mike Ball +Date: Mon Feb 7 17:04:01 2022 -0500 + + update changeset to be 'patch' change + + Per code review feedback: + https://github.com/backstage/backstage/pull/9362#discussion_r800480438 + + Signed-off-by: Mike Ball + +commit d9ac082bef8a20a9443bb5b354fddd79645ae07f +Author: Jahred Hope +Date: Tue Feb 8 08:33:34 2022 +1100 + + Update link to moved repository - techdocs-cli (#9305) + +commit 9552df7653c0f0b2ef08c961f4ca503a893f055a +Author: Mike Ball +Date: Mon Feb 7 13:55:01 2022 -0500 + + test reflects occurrence of single 'Missing Annotation' + + Signed-off-by: Mike Ball + +commit 04365cd21355ed000389c764543811e675c3b211 +Author: Mike Ball +Date: Mon Feb 7 12:12:35 2022 -0500 + + display only 1 `` + + Per code review feedback, it's arguably unnecessary + to display duplicate ``, + especially given the preceding contextual sentence + noting the supported annotations. + + Signed-off-by: Mike Ball + +commit 1514d8a3137148964ab78907fa0c0739fde8b8ba +Author: Mike Ball +Date: Mon Feb 7 10:06:30 2022 -0500 + + Update plugins/splunk-on-call/src/components/EntitySplunkOnCallCard.tsx + + Co-authored-by: Johan Haals + Signed-off-by: Mike Ball + +commit 9fa811ddbb6eb440c4a518989fd55b054b120dab +Author: Mike Ball +Date: Mon Feb 7 10:06:23 2022 -0500 + + Update .changeset/honest-foxes-scream.md + + Co-authored-by: Johan Haals + Signed-off-by: Mike Ball + +commit da9d1723f6f35b50b4af5f16fc92442b0724c593 +Author: Mike Ball +Date: Fri Feb 4 10:04:49 2022 -0500 + + invalid annotation logic better reflects component logic + + The EntitySplunkOnCallCard gives precedence to a `splunk.com/on-call-team` + annotation. Therefore, the InvalidAnnotation component messaging + should reflect that precedence, even in instances where _both_ supported + annotations are provided and both are deemed invalid. + + Signed-off-by: Mike Ball + +commit a957b9fc4d5ec80f8da55675881aa1e886bb6812 +Author: Mike Ball +Date: Fri Feb 4 08:38:38 2022 -0500 + + fine-tune Splunk On-Call README language + + Signed-off-by: Mike Ball + +commit 4ddc657bd349e427720e07b3be61884433993a5c +Author: Mike Ball +Date: Fri Feb 4 08:32:08 2022 -0500 + + add Splunk client `getRoutingKeys` method documentation + + Signed-off-by: Mike Ball + +commit 12182960f421a5ca37ca21fdd15999000f31952c +Author: Mike Ball +Date: Fri Feb 4 08:21:30 2022 -0500 + + address TypeScript compilation failure + + This fixes... + + ``` + Run yarn tsc + yarn run v1.22.1 + $ tsc + plugins/splunk-on-call/src/components/EntitySplunkOnCallCard.test.tsx:158:26 - error TS2345: Argument of type 'string | undefined' is not assignable to parameter of type 'Matcher'. + Type 'undefined' is not assignable to type 'Matcher'. + + 158 expect(getByText(MOCK_INCIDENT.entityDisplayName)).toBeInTheDocument(), + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ``` + + Signed-off-by: Mike Ball + +commit c17be55ffbddbd7354556c8f68d49453cf8eca3f +Author: Mike Ball +Date: Fri Feb 4 07:57:51 2022 -0500 + + add Splunk On-Call plugin changeset + + Adds a changeset associated with the Splunk On-Call plugin's + support for a new `splunk.com/on-call-routing-key` annotation. + + Signed-off-by: Mike Ball + +commit ba1a3e9456363bd59d5e56042385fd26588be876 +Author: Mike Ball +Date: Fri Feb 4 07:51:18 2022 -0500 + + add splunk.com/on-call-routing-key docs to README + + Signed-off-by: Mike Ball + +commit 5669e32ac1ac5494eb4273ae516a673422687096 +Author: Mike Ball +Date: Thu Feb 3 20:30:09 2022 -0500 + + test component rendering w/ new annotation + + Test that the Splunk On Call component properly + renders when a `splunk.com/on-call-routing-key` + annotation is used. + + Signed-off-by: Mike Ball + +commit 07ffc7ca9d2a0edeba69c4a86d50afa09e77852d +Author: Mike Ball +Date: Thu Feb 3 20:19:36 2022 -0500 + + test when no Splunk On Call annotations are provided + + Signed-off-by: Mike Ball + +commit 4bda7d3045e7d36ce9a9fb87a3a24c74117724a8 +Author: Mike Ball +Date: Thu Feb 3 20:03:43 2022 -0500 + + test warning for incorrect routing key annotation + + This adds a test asserting that the correct component + is rendered when the entity `splunk.com/on-call-routing-key` + does not properly map to any associated teams. + + Signed-off-by: Mike Ball + +commit 7fa7857d4885bea7ef3dcfca9179c9dee1d88f0b +Author: Mike Ball +Date: Thu Feb 3 18:51:06 2022 -0500 + + correct incorrect team annotation test + + Signed-off-by: Mike Ball + +commit f408cabe8f93bdc828e661c3fb75bde42c309bf4 +Author: Mike Ball +Date: Thu Feb 3 17:09:17 2022 -0500 + + handle invalid Splunk On-Call annotations + + If a `splunk.com/on-call-team` annotation is provided and + the API returns no associated team, render... + + ``` + Splunk On-Call API returned no record of teams associated with the "foo" team name + Escalation Policy and incident information unavailable. Splunk On-Call requires a valid team name or routing key. + ``` + + If a `splunk.com/on-call-routing-key` annotation is provided and + the API returns no associated team, render... + + ``` + Splunk On-Call API returned no record of teams associated with the "foo" routing key + Escalation Policy and incident information unavailable. Splunk On-Call requires a valid team name or routing key. + ``` + + Signed-off-by: Mike Ball + +commit 52bb1807db368179feb0dee4b680e332070f918f +Author: Mike Ball +Date: Thu Feb 3 16:45:42 2022 -0500 + + properly render components + + Corrects logic ensuring `` and `` + render correctly. Previously, neither component would render from + within the `` component. + + Signed-off-by: Mike Ball + +commit 0dfbb30a5db99afd6a209ad76b978eb12a75ddb4 +Author: Mike Ball +Date: Thu Feb 3 16:33:18 2022 -0500 + + add 1em spacing between each Splunk On-Call card + + Signed-off-by: Mike Ball + +commit 4c61bc0cfa73bdd65467a65a7da1d38bca1245b6 +Author: Mike Ball +Date: Thu Feb 3 16:08:22 2022 -0500 + + render Splunk On-Call card per team + + In instances where a `splunk.com/on-call-routing-key` + is provided and that routing key is associated with + multiple teams, the component now renders an individual + Splunk On-Call card for each team. + + Signed-off-by: Mike Ball + +commit 70903de8792dc3b1470c845994a0180f04b81f68 +Author: Mike Ball +Date: Thu Feb 3 12:04:55 2022 -0500 + + [wip] support 'splunk.com/on-call-routing-key' annotation + + Extends the Splunk On Call plugin Entity card to infer the + corresponding team names from a `splunk.com/on-call-routing-key` + annotation. + + This seeks to enable the use of the Splunk On Call plugin on + entity pages for those orgs who associate a component with a + routing key rather than a team name. + + Signed-off-by: Mike Ball + +commit 51fe2055df5f2ce2400111aba4fffde9b9683a8c +Author: Patrik Oldsberg +Date: Mon Feb 7 18:33:53 2022 +0100 + + cli: fix a spelling + + Signed-off-by: Patrik Oldsberg + +commit b906f98119eb6e0d9e2fef204fdc3ede0b0c8d83 +Author: Patrik Oldsberg +Date: Sun Jan 30 19:36:40 2022 +0100 + + changesets: add changeset for dist workspace improvements + + Signed-off-by: Patrik Oldsberg + +commit f65550a08d85dfea1344cfb9176e7403957371b3 +Author: Patrik Oldsberg +Date: Sat Jan 29 19:10:33 2022 +0100 + + cli: update createDistWorkspace to use dist move utility when possible + + Signed-off-by: Patrik Oldsberg + +commit a41f50f9705b58e7e86255cebaa2644595efc3aa +Author: Patrik Oldsberg +Date: Sat Jan 29 19:01:19 2022 +0100 + + cli: added utility for copying package dist files + + Signed-off-by: Patrik Oldsberg + +commit c039c184c570b6fb7b6c5de6c7946f4078cc1fa9 +Author: Patrik Oldsberg +Date: Sat Jan 29 19:10:03 2022 +0100 + + cli: update createDistWorkspace to inline builds when possible + + Signed-off-by: Patrik Oldsberg + +commit 46855aaffa7f958518410b933632c6594bc09fbd +Author: Patrik Oldsberg +Date: Sun Jan 30 19:42:00 2022 +0100 + + cli: packager, add back index + + Signed-off-by: Patrik Oldsberg + +commit 2375ef7c3c5f63be60090cf010540b00118f75d0 +Author: Patrik Oldsberg +Date: Sun Jan 30 19:41:44 2022 +0100 + + cli: packager, rename index to createDistWorkspace + + Signed-off-by: Patrik Oldsberg + +commit 28cad572ff7b58f6e78a60f3a21aa1476d7e5d18 +Merge: 89b88a920d 8c4f24eb23 +Author: Ben Lambert +Date: Mon Feb 7 19:28:46 2022 +0100 + + Merge pull request #9384 from backstage/dependabot/npm_and_yarn/fork-ts-checker-webpack-plugin-7.1.1 + + chore(deps): bump fork-ts-checker-webpack-plugin from 7.0.0-alpha.11 to 7.1.1 + +commit 89b88a920d34dc6989f7ebe5d453f7b917882648 +Merge: 618366b8a7 7d2ddae27a +Author: Ben Lambert +Date: Mon Feb 7 19:27:23 2022 +0100 + + Merge pull request #9379 from backjo/feature/AddExpandParamToMsGraphQuery + + feat: add optional userExpand parameter for ms graph + +commit 618366b8a76bce0cfa701c779f5c74b18f3bdfc5 +Merge: b5bcc42493 764ee19029 +Author: Patrik Oldsberg +Date: Mon Feb 7 19:18:15 2022 +0100 + + Merge pull request #9388 from backstage/rugvip/role-parallel + + cli: refactor parallel helpers + limit parallelism + +commit 22ebeb4575720a88477889322c4843fa9553c686 +Author: mufaddal motiwala +Date: Mon Feb 7 23:03:41 2022 +0530 + + API report added + + Signed-off-by: mufaddal motiwala + +commit 646eb8748b0041b66af2dbd68426b4b699b6e065 +Author: Patrik Oldsberg +Date: Mon Feb 7 18:12:54 2022 +0100 + + changesets: enter prerelease + + Signed-off-by: Patrik Oldsberg + +commit 5ca42462b7e0fd54391c7519f994a764f9d85d75 +Author: mufaddal motiwala +Date: Mon Feb 7 22:41:33 2022 +0530 + + export DashboardSnapshotComponent + + Signed-off-by: mufaddal motiwala + +commit 68e1ba360f2ab1f6dfb71317460ec881bf5a491f +Author: Patrik Oldsberg +Date: Mon Feb 7 18:11:02 2022 +0100 + + workflows: move upgrade helper dispatch to release manifest workflow + + Signed-off-by: Patrik Oldsberg + +commit b5bcc42493c2c27b7a2be857afa499146c335264 +Merge: 424d4d6ef6 dd474f9350 +Author: Ben Lambert +Date: Mon Feb 7 18:06:21 2022 +0100 + + Merge pull request #9366 from backstage/emmaindal/error-page + + [ErrorPage] adjust accepted properties + +commit 424d4d6ef682ed465af2fb309a462bbc77c95f0f +Merge: 9d56dabe65 814a3ff480 +Author: Ben Lambert +Date: Mon Feb 7 18:05:35 2022 +0100 + + Merge pull request #9371 from backstage/rugvip/td-cli-build + + techdocs-cli: simplify dev setup and optimize build + +commit 7d2ddae27a1994ffaafb8957dc687ed00f0c482c +Author: blam +Date: Mon Feb 7 18:04:28 2022 +0100 + + chore: updated api-report + + Signed-off-by: blam + +commit 764ee19029f1abc0458a70f9587c70dcd806b0c0 +Author: Patrik Oldsberg +Date: Mon Feb 7 17:42:32 2022 +0100 + + cli: switch to looping parallel workers + fix bump test log ordering + + Signed-off-by: Patrik Oldsberg + +commit 8c4f24eb23c6440c80138e73de4c8f94043aade3 +Author: blam +Date: Mon Feb 7 17:43:25 2022 +0100 + + chore: bumping the memory limit of the forchore: bumping the memory limit of the ForkTsCheckerWebpackPlugin as it doesn't work without it for the main repo. + + Signed-off-by: blam + +commit 82641a96d40fafadfa5ab61a8e11605756ffa653 +Author: Karan Shah +Date: Mon Feb 7 16:25:49 2022 +0000 + + Fleshing out more tests with API failures + + Signed-off-by: Karan Shah + +commit 88ba8f6282f4649c14e9c2e9af3890db72a30071 +Author: Patrik Oldsberg +Date: Sun Feb 6 01:07:01 2022 +0100 + + cli: switch out some unbounded parallelism to use worker helper + + Signed-off-by: Patrik Oldsberg + +commit 872fcca2814f33a6df46cb9b29af1da8cd803cd0 +Author: Patrik Oldsberg +Date: Sun Feb 6 00:36:24 2022 +0100 + + cli: refactor parallelism util + new shared worker util + + Signed-off-by: Patrik Oldsberg + +commit 9d56dabe65bcc37064400562e515cd77e2b4edfd +Merge: 6398f2a3e5 9b0f6458b8 +Author: Patrik Oldsberg +Date: Mon Feb 7 17:08:53 2022 +0100 + + Merge pull request #9258 from backstage/rugvip/role-build + + cli: add experimental repo-wide build based on package roles + +commit 6398f2a3e5a85315c4b8b4118fd30a1a3e58680e +Merge: 910a7e0dde 50a19ff8dd +Author: Patrik Oldsberg +Date: Mon Feb 7 17:03:12 2022 +0100 + + Merge pull request #9393 from backstage/rugvip/lint-root + + cli: make lint path output relative to repo root + +commit 910a7e0dde701b42428ae8f6f9bad1f0d4a3b60d +Merge: b472f1c7b8 5d5c9bfb4c +Author: Ben Lambert +Date: Mon Feb 7 16:46:18 2022 +0100 + + Merge pull request #9344 from backstage/rugvip/auth-cookies + + auth-backend: make it possible to tweak the cookie configuration logic + +commit e76d563fe0b586b7912a650041c513d4fa1194b3 +Author: Karan Shah +Date: Mon Feb 7 15:42:26 2022 +0000 + + Added production-api.test.ts + + Signed-off-by: Karan Shah + +commit b472f1c7b885c365ec4c7b70e3db093fa241721a +Merge: 0d1e74c068 3d05c1da92 +Author: Patrik Oldsberg +Date: Mon Feb 7 16:19:43 2022 +0100 + + Merge pull request #9392 from backstage/rugvip/lint + + cli: fix lint invocation + +commit 50a19ff8dda13d19e6d32c4ad33bf1397f70c555 +Author: Patrik Oldsberg +Date: Mon Feb 7 15:58:35 2022 +0100 + + cli: make lint path output relative to repo root + + Signed-off-by: Patrik Oldsberg + +commit eba79f6e3f5eed82d1cfd6bce6c5d5fd44643de4 +Merge: e8731ffbc6 0d1e74c068 +Author: Karan Shah +Date: Mon Feb 7 14:57:16 2022 +0000 + + Merge remote-tracking branch 'upstream/master' into airbrake-api + + # Conflicts: + # ADOPTERS.md + +commit 1dd5a02e91b822d659021e6de92621463b422087 +Author: Fredrik Adelöw +Date: Fri Feb 4 10:56:29 2022 +0100 + + fix build + + Signed-off-by: Fredrik Adelöw + +commit 2441d1cf5922fa1e1b73d2980e225edd3efb99a0 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Fri Feb 4 04:22:06 2022 +0000 + + chore(deps): bump knex from 0.95.6 to 1.0.2 + + Bumps [knex](https://github.com/knex/knex) from 0.95.6 to 1.0.2. + - [Release notes](https://github.com/knex/knex/releases) + - [Changelog](https://github.com/knex/knex/blob/master/CHANGELOG.md) + - [Commits](https://github.com/knex/knex/commits) + + --- + updated-dependencies: + - dependency-name: knex + dependency-type: direct:production + update-type: version-update:semver-major + ... + + Signed-off-by: dependabot[bot] + +commit 3d05c1da92984939d7aff5b8a6588c104097f003 +Author: Patrik Oldsberg +Date: Mon Feb 7 15:18:46 2022 +0100 + + cli: fix lint invocation + + Signed-off-by: Patrik Oldsberg + +commit 0d1e74c068f11e882b94ce78a78971cc342dc3fb +Merge: 2cff0248e1 d0c71e2aa4 +Author: Ben Lambert +Date: Mon Feb 7 15:09:28 2022 +0100 + + Merge pull request #9389 from backstage/rugvip/lint + + cli: tweak lint rules and switch ESLint invocation method + +commit 41402f98a812eebda8143a73c71237c004a2c381 +Author: snehaljos +Date: Mon Feb 7 19:21:00 2022 +0530 + + Fixed bug in UI | Fix for issue #9157 + + Signed-off-by: snehaljos + +commit 2cff0248e1e827f52fc478bcdea6d73d35d8e5a1 +Merge: 653e98bbe5 22f4ecb0e6 +Author: Patrik Oldsberg +Date: Mon Feb 7 14:40:14 2022 +0100 + + Merge pull request #9372 from backstage/rugvip/nocopy + + use link: rather than file: for local dependencies + +commit dd474f93501425413272a119aa20dc4d389c4c42 +Author: Emma Indal +Date: Mon Feb 7 14:35:31 2022 +0100 + + update changeset + + Signed-off-by: Emma Indal + +commit 653e98bbe56df97cb3d8b5c476239f252d2ccfab +Merge: d2c379aeab 8563695598 +Author: Ben Lambert +Date: Mon Feb 7 14:33:14 2022 +0100 + + Merge pull request #9359 from RoadieHQ/loading-progress-on-task-page + + adds progress bar to the task page.. + +commit 4922f11fe3d35607201b41fcc51e37fe57b7453c +Author: Emma Indal +Date: Mon Feb 7 14:33:12 2022 +0100 + + update type from JSX.Element or string to ReactNode + add test for string based prop + + Signed-off-by: Emma Indal + +commit 9033775d392b88fa01609889c3a20b1298f4e9a2 +Author: Fredrik Adelöw +Date: Mon Feb 7 13:36:30 2022 +0100 + + review comments + + Signed-off-by: Fredrik Adelöw + +commit b04ef1e4255fb96b62519c9cdc8ff06ff364969a +Author: Fredrik Adelöw +Date: Mon Feb 7 10:38:57 2022 +0100 + + add some tests + + Signed-off-by: Fredrik Adelöw + +commit f8633307c40b0af9bf813e9d90986bc954a51bc7 +Author: Fredrik Adelöw +Date: Fri Feb 4 20:17:10 2022 +0100 + + add an entity inspection dialog + + Signed-off-by: Fredrik Adelöw + +commit d2c379aeabdd6eac6e64f59801c72492bd4bfb64 +Merge: caa4e27de0 fb39efa320 +Author: Ben Lambert +Date: Mon Feb 7 13:18:40 2022 +0100 + + Merge pull request #9247 from backstage/filter-query-params + + Respect queryParameter updates in catalog pickers + +commit d0c71e2aa4f9482b8a210588353391fa2057ab9b +Author: Patrik Oldsberg +Date: Mon Feb 7 12:36:36 2022 +0100 + + cli: use node API from ESLint to invoke it rather than a subprocess + + Signed-off-by: Patrik Oldsberg + +commit fae2aee8785686f0d96bb486d2ea35190b1ba35d +Author: Patrik Oldsberg +Date: Mon Feb 7 12:23:44 2022 +0100 + + cli: remove no-duplicates lint rule + + Signed-off-by: Patrik Oldsberg + +commit 92abfffe84d2623b70d4341a1992dc6dba05644a +Author: Patrik Oldsberg +Date: Mon Feb 7 12:18:20 2022 +0100 + + cli: deduplicate no-extraneous-dependencies lint rule + + Signed-off-by: Patrik Oldsberg + +commit caa4e27de05d0831fb20b33fe88e20177a5880e5 +Merge: a4a777441d 0c7936af83 +Author: Fredrik Adelöw +Date: Mon Feb 7 11:33:24 2022 +0100 + + Merge pull request #9352 from backstage/dependabot/npm_and_yarn/husky-7.0.4 + + chore(deps-dev): bump husky from 6.0.0 to 7.0.4 + +commit a4a777441de6f1619e19bcefc7b958ee127335d2 +Author: Emma Indal +Date: Mon Feb 7 11:28:26 2022 +0100 + + [Home] homepage component starred entities (#9378) + + * implement starred entities home page component + add to storybook + + Signed-off-by: Emma Indal + + * update default template to include starred entities + + Signed-off-by: Emma Indal + + * add changeset + + Signed-off-by: Emma Indal + + * api report + + Signed-off-by: Emma Indal + +commit 0c7936af831d45f220a061774d7f3416f81b7a0f +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Mon Feb 7 09:46:30 2022 +0000 + + chore(deps-dev): bump husky from 6.0.0 to 7.0.4 + + Bumps [husky](https://github.com/typicode/husky) from 6.0.0 to 7.0.4. + - [Release notes](https://github.com/typicode/husky/releases) + - [Commits](https://github.com/typicode/husky/compare/v6.0.0...v7.0.4) + + --- + updated-dependencies: + - dependency-name: husky + dependency-type: direct:development + update-type: version-update:semver-major + ... + + Signed-off-by: dependabot[bot] + +commit 709bc85ca11427b93e6eca643a05fc04fcca6cf0 +Merge: 87bcdc2366 7bb1bde7f6 +Author: Fredrik Adelöw +Date: Mon Feb 7 10:45:37 2022 +0100 + + Merge pull request #9338 from backstage/freben/ea-no-more + + Bunch of random api cleanup + +commit 1239b113b97dafdf90b33b5ad9d029c814690847 +Author: Johan Haals +Date: Mon Feb 7 10:35:45 2022 +0100 + + format + + Signed-off-by: Johan Haals + +commit 88f5a56b6016f717c1fb7dd11546e21156b21167 +Author: Johan Haals +Date: Mon Feb 7 10:34:24 2022 +0100 + + Update .github/workflows/verify_dco.yaml + + Signed-off-by: Johan Haals + + Co-authored-by: Adam Harvey + +commit 87bcdc236641812cae30b29788c4540732c9bfe9 +Merge: 6989351d1f bbbaa8ed61 +Author: Patrik Oldsberg +Date: Mon Feb 7 10:33:14 2022 +0100 + + Merge pull request #9341 from backstage/rugvip/todo-test + + todo: switch to routable extension + add test + +commit 6989351d1fa9221f99ffa32169223e2beea26157 +Merge: 58835a8c68 fe0e05ddcf +Author: Johan Haals +Date: Mon Feb 7 10:33:04 2022 +0100 + + Merge pull request #9386 from ljupchokotev/ikea-adopters + + Add IKEA IT AB to adopters list + +commit 58835a8c685eb3abe7d90405642b5bf1b06a1f70 +Merge: 38ae73ac1c 1841159490 +Author: Johan Haals +Date: Mon Feb 7 10:32:34 2022 +0100 + + Merge pull request #9358 from SDA-SE/chore/add-sda-codeowner + + chore: add sda codeowner + +commit fe0e05ddcf25d457980edd79da7c36c582907b8f +Author: Lyupcho Kotev +Date: Mon Feb 7 09:48:59 2022 +0100 + + Add IKEA IT AB to adopters list + + Signed-off-by: Lyupcho Kotev + +commit 38ae73ac1cf790b1354cf115b988e0935ab1dafe +Merge: 46301d4dc5 d62bdb7a8e +Author: Ben Lambert +Date: Mon Feb 7 10:00:42 2022 +0100 + + Merge pull request #9373 from backstage/rugvip/fallback + + core-components: make useSupportConfig fall back to default config when needed + +commit 46301d4dc5a92bc0849cb63470bfacef1e5b8f6d +Merge: 310887cd40 599f3dfa83 +Author: Johan Haals +Date: Mon Feb 7 09:08:01 2022 +0100 + + Merge pull request #9382 from backstage/dependabot/npm_and_yarn/types/concat-stream-2.0.0 + + chore(deps-dev): bump @types/concat-stream from 1.6.1 to 2.0.0 + +commit 310887cd40d93197f87a84b38d8d9b2ced6b00e7 +Merge: 411d2a425a 112d2e1f02 +Author: Johan Haals +Date: Mon Feb 7 09:07:11 2022 +0100 + + Merge pull request #9381 from backstage/dependabot/npm_and_yarn/lint-staged-12.3.3 + + chore(deps-dev): bump lint-staged from 12.2.2 to 12.3.3 + +commit 3cfd0ac71ca4c061871812d36d6452b7c0a4508f +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Mon Feb 7 04:36:42 2022 +0000 + + chore(deps): bump fork-ts-checker-webpack-plugin + + Bumps [fork-ts-checker-webpack-plugin](https://github.com/TypeStrong/fork-ts-checker-webpack-plugin) from 7.0.0-alpha.11 to 7.1.1. + - [Release notes](https://github.com/TypeStrong/fork-ts-checker-webpack-plugin/releases) + - [Changelog](https://github.com/TypeStrong/fork-ts-checker-webpack-plugin/blob/main/CHANGELOG.md) + - [Commits](https://github.com/TypeStrong/fork-ts-checker-webpack-plugin/compare/v7.0.0-alpha.11...v7.1.1) + + --- + updated-dependencies: + - dependency-name: fork-ts-checker-webpack-plugin + dependency-type: direct:production + update-type: version-update:semver-minor + ... + + Signed-off-by: dependabot[bot] + +commit 599f3dfa835d8b6f8b94ac61a960179718136d30 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Mon Feb 7 04:23:29 2022 +0000 + + chore(deps-dev): bump @types/concat-stream from 1.6.1 to 2.0.0 + + Bumps [@types/concat-stream](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/concat-stream) from 1.6.1 to 2.0.0. + - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) + - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/concat-stream) + + --- + updated-dependencies: + - dependency-name: "@types/concat-stream" + dependency-type: direct:development + update-type: version-update:semver-major + ... + + Signed-off-by: dependabot[bot] + +commit 112d2e1f0252a04cb08f44403f8d241a20ef27fd +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Mon Feb 7 04:19:46 2022 +0000 + + chore(deps-dev): bump lint-staged from 12.2.2 to 12.3.3 + + Bumps [lint-staged](https://github.com/okonet/lint-staged) from 12.2.2 to 12.3.3. + - [Release notes](https://github.com/okonet/lint-staged/releases) + - [Commits](https://github.com/okonet/lint-staged/compare/v12.2.2...v12.3.3) + + --- + updated-dependencies: + - dependency-name: lint-staged + dependency-type: direct:development + update-type: version-update:semver-minor + ... + + Signed-off-by: dependabot[bot] + +commit 9b122a780caf35be74c6c9eb1a962524e337cd50 +Author: Jonah Back +Date: Sun Feb 6 19:22:52 2022 -0800 + + feat: add optional userExpand parameter for ms graph + + Signed-off-by: Jonah Back + +commit 6c978548edd55c070a2a3449d428e066081fcb0b +Author: Kévin Gomez +Date: Sun Feb 6 17:34:57 2022 +0100 + + Update catalog-model api-report.md + + Signed-off-by: Kévin Gomez + +commit ca1d6c17884336f0d5a7ae98aa417b179678a625 +Author: Kévin Gomez +Date: Sun Feb 6 16:12:43 2022 +0100 + + Add changeset + + Signed-off-by: Kévin Gomez + +commit 50d71061ca15eac18492bb1be24c1d60e79f0dce +Author: Kévin Gomez +Date: Sun Feb 6 16:11:27 2022 +0100 + + Support "dependencyOf" relation in Resource entities + + Signed-off-by: Kévin Gomez + +commit 9b0f6458b84d8d61cc5cd4a0a58cdc2f47f8268a +Author: Patrik Oldsberg +Date: Sat Feb 5 23:51:31 2022 +0100 + + cli: refactored build script parser + + Signed-off-by: Patrik Oldsberg + +commit 411d2a425a613b255a6a74e4c55adafbaeabf808 +Merge: c0e519529b 1049a6d949 +Author: Ben Lambert +Date: Sat Feb 5 22:02:00 2022 +0100 + + Merge pull request #9346 from djamaile/master + + fix(scaffolder-backend): use the right key when initializing a Gitlab… + +commit c0e519529b69ffa43fc03b4303a56dbf5ec5185a +Merge: 07d9fa4301 63181dee79 +Author: Ben Lambert +Date: Sat Feb 5 19:52:35 2022 +0100 + + Merge pull request #9370 from backstage/rugvip/iife + + cli: wrap minified code in iife + +commit 5b54608615a2ba012fccd5110506b84eba30a358 +Author: Patrik Oldsberg +Date: Sat Feb 5 18:47:21 2022 +0100 + + cli: add option to include bundled packages in repo build + parse options + + Signed-off-by: Patrik Oldsberg + +commit d62bdb7a8e444d7a250e14b6b3c6cbe6882f2c45 +Author: Patrik Oldsberg +Date: Sat Feb 5 14:02:16 2022 +0100 + + core-components: make useSupportConfig fall back to default config when needed + + Signed-off-by: Patrik Oldsberg + +commit 814a3ff48021da2c756fe3bf8455372c2b3f5c53 +Author: Patrik Oldsberg +Date: Sat Feb 5 12:15:43 2022 +0100 + + techdocs-cli: switch to embedding app using prepack script + + Signed-off-by: Patrik Oldsberg + +commit b70c186194421975e27af00e14d04e15abbb9633 +Author: Patrik Oldsberg +Date: Sat Feb 5 11:18:43 2022 +0100 + + techdocs-cli: unified dev and production build through config detection + + Signed-off-by: Patrik Oldsberg + +commit 22f4ecb0e6b4056f12b4574a4b13a12d4475c6b6 +Author: Patrik Oldsberg +Date: Sat Feb 5 12:44:58 2022 +0100 + + use link: rather than file: for local dependencies + + Signed-off-by: Patrik Oldsberg + +commit 63181dee791f857fa0c9930cd9d783655ec63103 +Author: Patrik Oldsberg +Date: Sat Feb 5 10:42:38 2022 +0100 + + cli: wrap minified code in iife + + Signed-off-by: Patrik Oldsberg + +commit fb39efa3204c06080ac99c83084c60a9c0542cdf +Author: Tim Hansen +Date: Fri Feb 4 13:25:51 2022 -0700 + + Fix useEntityListProvider test + + Signed-off-by: Tim Hansen + +commit 911f01ace35f3372269fcb3fa959cf6d86c2f782 +Author: Tim Hansen +Date: Fri Feb 4 12:47:18 2022 -0700 + + Set initial value from queryParameters + Add tests for external queryParameter updates + + Signed-off-by: Tim Hansen + +commit 680e7c7452ae6bc3b787095462f915befaf8c728 +Author: Tim Hansen +Date: Fri Jan 28 15:52:08 2022 -0700 + + Respect queryParameter updates in pickers + + Signed-off-by: Tim Hansen + +commit 07d9fa4301034c64fd6400494072e0461899be51 +Merge: 3bc7465f71 3941ada3cf +Author: Patrik Oldsberg +Date: Fri Feb 4 16:32:53 2022 +0100 + + Merge pull request #9133 from backstage/rugvip/role + + cli: add support for package role + script & migration utils + +commit 4a4ab7c6034837a59b9781e9f0592c68715d6d4d +Author: Vincenzo Scamporlino +Date: Fri Feb 4 14:22:29 2022 +0100 + + Invoke search only when SearchModal is visible + + Signed-off-by: Vincenzo Scamporlino + +commit d408d210c21b1e638ed16af30b343276035b4d9b +Author: Vincenzo Scamporlino +Date: Fri Feb 4 14:17:36 2022 +0100 + + Remove duplicated SearchContextProvider + + Signed-off-by: Vincenzo Scamporlino + +commit 85636955987f84d2fb8b320a684f88d7f1ddb586 +Author: Brian Fletcher +Date: Fri Feb 4 15:07:24 2022 +0000 + + move the progress bar inside the log viewer + + Signed-off-by: Brian Fletcher + +commit 0fdba0af76d5c11cd2d7a2131d7b150a4c231a7c +Author: Johan Haals +Date: Fri Feb 4 16:00:39 2022 +0100 + + actions: Comment information about DCO signing when failing + + Signed-off-by: Johan Haals + +commit 0912186d16154c59fedf56a3eeff0096a9fa5828 +Author: Emma Indal +Date: Fri Feb 4 15:17:37 2022 +0100 + + update changelog and prettier fixups + + Signed-off-by: Emma Indal + +commit 308efff0ac09d9255786edbac15b218f85165ea9 +Author: Emma Indal +Date: Fri Feb 4 15:11:40 2022 +0100 + + add optional supportUrl property + + Signed-off-by: Emma Indal + +commit e8731ffbc6ddd19d61901ffe1a417bde6f8f7157 +Author: Karan Shah +Date: Fri Feb 4 14:06:18 2022 +0000 + + Added a test for the annotation missing component + + Signed-off-by: Karan Shah + +commit f2dfbd3fb06f3fccb4c8c36cd52b469eb9ce6429 +Author: Emma Indal +Date: Fri Feb 4 14:59:41 2022 +0100 + + add changeset + + Signed-off-by: Emma Indal + +commit 437659b92f0a0adb1056bf6a386b9edfbafbbbf2 +Author: Emma Indal +Date: Fri Feb 4 14:59:12 2022 +0100 + + accept JSX Element as additionalInfo prop + + Signed-off-by: Emma Indal + +commit 3bc7465f71699941777d9011a6984a6923a02631 +Merge: d7b534014c 8d95c29bd3 +Author: Johan Haals +Date: Fri Feb 4 13:32:28 2022 +0100 + + Merge pull request #9350 from backstage/dependabot/npm_and_yarn/dompurify-2.3.5 + + chore(deps): bump dompurify from 2.3.3 to 2.3.5 + +commit d7b534014c198e82e7fe75cdca6fecae9381cdd0 +Merge: bbd59ed355 dffe939b80 +Author: Ben Lambert +Date: Fri Feb 4 13:21:57 2022 +0100 + + Merge pull request #9335 from backstage/upgrade-helper-link + + docs: add link to upgrade helper in keeping backstage updated page + +commit d59b90852a6d5893bd8bf4f00046329e2a2e9d93 +Author: Patrik Oldsberg +Date: Sun Jan 30 19:24:10 2022 +0100 + + changesets: added changesets for CLI repo command and type worker thread + + Signed-off-by: Patrik Oldsberg + +commit d20f260e6dcb2eba8b3c23f63b16665d97995193 +Author: Patrik Oldsberg +Date: Sat Jan 29 18:57:16 2022 +0100 + + cli: tweak buildPackages to use standard BuildOptions + + Signed-off-by: Patrik Oldsberg + +commit f8e529030eeb788ff814b0fe21635e30de932dbf +Author: Patrik Oldsberg +Date: Sat Jan 29 18:55:31 2022 +0100 + + cli: added getOutputsForRole utility + + Signed-off-by: Patrik Oldsberg + +commit 336b3101519c32428e73599ec4f41f91fe8ef31a +Author: Patrik Oldsberg +Date: Sat Jan 29 12:43:51 2022 +0100 + + cli: add initial experimental repo sub-command with build + + Signed-off-by: Patrik Oldsberg + +commit fe571d2b0652e541819d3ff6c9eef84c088fb234 +Author: Patrik Oldsberg +Date: Sat Jan 29 12:31:16 2022 +0100 + + cli: add buildPackages for building multiple packages at once + + Signed-off-by: Patrik Oldsberg + +commit 03b39bbcc3c467bd28ee39ea6b787dca5d66fde0 +Author: Patrik Oldsberg +Date: Sat Jan 29 12:20:27 2022 +0100 + + cli: run API Extractor type builds in worker thread + + Signed-off-by: Patrik Oldsberg + +commit 4917c71d00e0049dd8ed75cb676cec1ee6eefd18 +Author: Patrik Oldsberg +Date: Sat Jan 29 11:10:33 2022 +0100 + + cli: allow optimized type definition builds across packages + + Signed-off-by: Patrik Oldsberg + +commit ee4931047470df16e9fa407d48c864caaf729fac +Author: Patrik Oldsberg +Date: Sat Jan 29 01:55:02 2022 +0100 + + cli: custom warning handler for rollup + support for log prefix + + Signed-off-by: Patrik Oldsberg + +commit b2db40b700a6da3ca812cb6789b72f8b86f48c50 +Author: Patrik Oldsberg +Date: Sat Jan 29 01:23:44 2022 +0100 + + cli: add support for specifying target dir in build options + + Signed-off-by: Patrik Oldsberg + +commit 3941ada3cfa8dcf58c9939dd9ae56dd7cffd326d +Author: Patrik Oldsberg +Date: Thu Feb 3 13:35:53 2022 +0100 + + cli: remove separate bundle script, using build instead + + Signed-off-by: Patrik Oldsberg + +commit eaf67f05783da2a5c140f66ce19647daa9faf8b8 +Author: Patrik Oldsberg +Date: Thu Jan 27 18:43:50 2022 +0100 + + changesets: add changset for cli role addition + + Signed-off-by: Patrik Oldsberg + +commit 323562efc9236bd397034d8e24881fa15ea97065 +Author: Patrik Oldsberg +Date: Tue Jan 25 21:35:39 2022 +0100 + + cli: switch to keeping track of outputs for each package role + + Signed-off-by: Patrik Oldsberg + +commit f2c5b7461773a2c9ced713c9bc3c86a83c912588 +Author: Patrik Oldsberg +Date: Mon Jan 24 00:34:20 2022 +0100 + + cli: refactor role functions to work around simpler PackageRole + + Signed-off-by: Patrik Oldsberg + +commit 3532a7d81c94d77b3c275685e0201a2e443d0a78 +Author: Patrik Oldsberg +Date: Sun Jan 23 16:33:46 2022 +0100 + + cli: update package script migration to use script commands + + Signed-off-by: Patrik Oldsberg + +commit c9f8c1189f57014c13a331bfa7687c0fbd12f83d +Author: Patrik Oldsberg +Date: Sun Jan 23 16:20:27 2022 +0100 + + cli: mark commands for planned deprecation + + Signed-off-by: Patrik Oldsberg + +commit 036d95b99b4d9cec1ec40ebd87d2b6e5526503e0 +Author: Patrik Oldsberg +Date: Sun Jan 23 16:19:45 2022 +0100 + + cli: refactored registration of script and migration commands + + Signed-off-by: Patrik Oldsberg + +commit 38963aa860feced0673f514d00d901667d3c6d9b +Author: Patrik Oldsberg +Date: Sun Jan 23 15:47:53 2022 +0100 + + cli: add new role-based build command + + Signed-off-by: Patrik Oldsberg + +commit 703314d1a53c5515f960ce43bfb2a0cac0bcfff2 +Author: Patrik Oldsberg +Date: Sun Jan 23 14:28:13 2022 +0100 + + cli: move new commands into experimental sub-commands + + Signed-off-by: Patrik Oldsberg + +commit 189c44104c05ac3a727cd3002e3813bc746a85d7 +Author: Patrik Oldsberg +Date: Sun Jan 23 13:07:21 2022 +0100 + + cli: added migrate:package-scripts + + Signed-off-by: Patrik Oldsberg + +commit 0bf983e703cef5c7fb3c98ee0dc32d9918800b6e +Author: Patrik Oldsberg +Date: Sun Jan 23 13:05:54 2022 +0100 + + cli: add PackageGraph utility for listing extended packages + + Signed-off-by: Patrik Oldsberg + +commit c7169dc440f0560d945be95ef8e541f9ea6b4f50 +Author: Patrik Oldsberg +Date: Sat Jan 22 17:52:30 2022 +0100 + + cli: add migrate:package-role command + + Signed-off-by: Patrik Oldsberg + +commit 9227753a7c30f57c7988dfa0a0e0b8098129aba1 +Author: Patrik Oldsberg +Date: Sat Jan 22 17:17:23 2022 +0100 + + cli: added role-based start command + + Signed-off-by: Patrik Oldsberg + +commit f0ee50cfabd467c357ed955dc1ce19684a9abcb2 +Author: Patrik Oldsberg +Date: Sat Jan 22 16:39:48 2022 +0100 + + cli: add utility for passing explicit role option + + Signed-off-by: Patrik Oldsberg + +commit 17a9f90efcd0a4d9cfc9c93d24755b94ca71437c +Author: Patrik Oldsberg +Date: Sat Jan 22 16:06:56 2022 +0100 + + cli: add util to get role info by name + + Signed-off-by: Patrik Oldsberg + +commit 29260100446370472eaa10cbf2af4e11b5ff8936 +Author: Patrik Oldsberg +Date: Sat Jan 22 15:36:06 2022 +0100 + + cli: add new role-based bundle command + + Signed-off-by: Patrik Oldsberg + +commit 8263cac40e2b9e7b90b7146b0e73b9cb0b98b33c +Author: Patrik Oldsberg +Date: Sat Jan 22 14:53:20 2022 +0100 + + cli: bit more specific matching of module roles + + Signed-off-by: Patrik Oldsberg + +commit 4e62242eb1945cd9c9f969144a4e72a451953aa7 +Author: Patrik Oldsberg +Date: Sat Jan 22 14:03:49 2022 +0100 + + cli: split role detection into read and detect + + Signed-off-by: Patrik Oldsberg + +commit 0a2719a5ab7c0205f8e70a2ce96e82c0b6b31199 +Author: Patrik Oldsberg +Date: Fri Jan 21 01:52:05 2022 +0100 + + cli: add initial role types and detection + + Signed-off-by: Patrik Oldsberg + +commit 5d5c9bfb4c8b0f4002c07ffd0e28baaa814f2fed +Author: Patrik Oldsberg +Date: Fri Feb 4 13:11:10 2022 +0100 + + auth-backend: removed cookieConfigurer from router options + + Signed-off-by: Patrik Oldsberg + +commit 33e139e65248b2133212c9eae6e9878261e6c318 +Author: Brian Fletcher +Date: Fri Feb 4 12:05:37 2022 +0000 + + adds changeset + + Signed-off-by: Brian Fletcher + +commit bbd59ed35575402e3f46c1443a0afc7450910fe4 +Merge: faf49ba82f 6b07ea436c +Author: Ben Lambert +Date: Fri Feb 4 13:04:45 2022 +0100 + + Merge pull request #9275 from RoadieHQ/allow-configurable-holding-text + + allow providing holding text for scaffolder loading + +commit 9f19529e4847a1785ceed629266d7f27ac56afc3 +Author: Brian Fletcher +Date: Fri Feb 4 12:02:09 2022 +0000 + + adds progress bar to the task page.. + + .. if the task is still loading + + Signed-off-by: Brian Fletcher + +commit faf49ba82f435b54af7ccb7669dbf637c2f00cf8 +Author: Jussi Hallila +Date: Fri Feb 4 13:02:22 2022 +0100 + + Add line clamping to search results on modal search screen. (#9331) + + * Add line clamping to search results on modal search screen. + + Signed-off-by: Jussi Hallila + + * Add mock to test so we don't have to spin up canvas with jsdom. + + Signed-off-by: Jussi Hallila + +commit f7ad6f0795c7f20c53856b9027aa72881cfe3796 +Author: Karan Shah +Date: Fri Feb 4 11:59:40 2022 +0000 + + Fix EntityAirbrakeWidget.test.tsx + + Signed-off-by: Karan Shah + +commit d2434bada1970b4803fc579f7d56f838266e193b +Merge: c0d61279af aa43106718 +Author: Karan Shah +Date: Fri Feb 4 11:02:20 2022 +0000 + + Merge remote-tracking branch 'upstream/master' into airbrake-api + + # Conflicts: + # ADOPTERS.md + # plugins/airbrake/package.json + +commit c0d61279af21ff72d5da138aed829a6916e3f743 +Author: Karan Shah +Date: Fri Feb 4 10:50:50 2022 +0000 + + Fix extensions.test.tsx + + Signed-off-by: Karan Shah + +commit 18411594901331edbb7817dd597d501245bc1f27 +Author: iammnils +Date: Fri Feb 4 11:44:55 2022 +0100 + + chore: add sda codeowner + + Signed-off-by: iammnils + +commit bbbaa8ed61b4e6b5485aa77cd079ea88acc4b501 +Author: Patrik Oldsberg +Date: Thu Feb 3 19:03:20 2022 +0100 + + cli: no longer diff dev/ or src/ + + Signed-off-by: Patrik Oldsberg + +commit 323f48704d434fcc406754ed6e798d6f77776bf7 +Author: Patrik Oldsberg +Date: Thu Feb 3 18:09:30 2022 +0100 + + todo: switch to routable extension + add test + + Signed-off-by: Patrik Oldsberg + +commit 8d95c29bd34dd261eaf6c2a1ce39232517fe8687 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Fri Feb 4 08:39:02 2022 +0000 + + chore(deps): bump dompurify from 2.3.3 to 2.3.5 + + Bumps [dompurify](https://github.com/cure53/DOMPurify) from 2.3.3 to 2.3.5. + - [Release notes](https://github.com/cure53/DOMPurify/releases) + - [Commits](https://github.com/cure53/DOMPurify/compare/2.3.3...2.3.5) + + --- + updated-dependencies: + - dependency-name: dompurify + dependency-type: direct:production + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit aa431067188a28d55b0e57724169d050ab13c38d +Merge: 6ba9dd66f2 31b081e20a +Author: Fredrik Adelöw +Date: Fri Feb 4 09:28:54 2022 +0100 + + Merge pull request #9355 from backstage/dependabot/npm_and_yarn/types/zen-observable-0.8.3 + + chore(deps): bump @types/zen-observable from 0.8.2 to 0.8.3 + +commit 6ba9dd66f2bb7901cc666a96e5094ce9c03a0b35 +Merge: 74f13b20ad 6dc0256606 +Author: Fredrik Adelöw +Date: Fri Feb 4 09:27:29 2022 +0100 + + Merge pull request #9353 from backstage/dependabot/npm_and_yarn/types/dompurify-2.3.3 + + chore(deps-dev): bump @types/dompurify from 2.2.3 to 2.3.3 + +commit 74f13b20adcc0c8437a2d62533933b6ee989ccbd +Merge: f0050d457e 3ce6842b63 +Author: Johan Haals +Date: Fri Feb 4 09:18:46 2022 +0100 + + Merge pull request #9356 from backstage/dependabot/npm_and_yarn/simple-get-3.1.1 + + chore(deps): bump simple-get from 3.1.0 to 3.1.1 + +commit 3ce6842b633f383c1374467889f7ceec0091b0c7 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Fri Feb 4 07:23:36 2022 +0000 + + chore(deps): bump simple-get from 3.1.0 to 3.1.1 + + Bumps [simple-get](https://github.com/feross/simple-get) from 3.1.0 to 3.1.1. + - [Release notes](https://github.com/feross/simple-get/releases) + - [Commits](https://github.com/feross/simple-get/compare/v3.1.0...v3.1.1) + + --- + updated-dependencies: + - dependency-name: simple-get + dependency-type: indirect + ... + + Signed-off-by: dependabot[bot] + +commit f0050d457e8f0035ae9ec84c8857a8f8749c84a2 +Merge: d5b6653839 a58fca4cc2 +Author: Johan Haals +Date: Fri Feb 4 07:42:48 2022 +0100 + + Merge pull request #9354 from backstage/dependabot/npm_and_yarn/storybook/storybook/addon-storysource-6.4.18 + + chore(deps-dev): bump @storybook/addon-storysource from 6.4.17 to 6.4.18 in /storybook + +commit 31b081e20abe1afc6c8e0d8e641818f9fdc14acf +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Fri Feb 4 04:40:58 2022 +0000 + + chore(deps): bump @types/zen-observable from 0.8.2 to 0.8.3 + + Bumps [@types/zen-observable](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/zen-observable) from 0.8.2 to 0.8.3. + - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) + - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/zen-observable) + + --- + updated-dependencies: + - dependency-name: "@types/zen-observable" + dependency-type: direct:production + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit a58fca4cc2ec7123b62ebeb5b1c97d6fea92a0ae +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Fri Feb 4 04:38:11 2022 +0000 + + chore(deps-dev): bump @storybook/addon-storysource in /storybook + + Bumps [@storybook/addon-storysource](https://github.com/storybookjs/storybook/tree/HEAD/addons/storysource) from 6.4.17 to 6.4.18. + - [Release notes](https://github.com/storybookjs/storybook/releases) + - [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md) + - [Commits](https://github.com/storybookjs/storybook/commits/v6.4.18/addons/storysource) + + --- + updated-dependencies: + - dependency-name: "@storybook/addon-storysource" + dependency-type: direct:development + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit 6dc0256606b9ec70d05ec13c93394809bdabae0f +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Fri Feb 4 04:35:19 2022 +0000 + + chore(deps-dev): bump @types/dompurify from 2.2.3 to 2.3.3 + + Bumps [@types/dompurify](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/dompurify) from 2.2.3 to 2.3.3. + - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) + - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/dompurify) + + --- + updated-dependencies: + - dependency-name: "@types/dompurify" + dependency-type: direct:development + update-type: version-update:semver-minor + ... + + Signed-off-by: dependabot[bot] + +commit 08fcda13ef74646c35db8ca4c7c9ce7868df3a1c +Author: Patrik Oldsberg +Date: Thu Feb 3 20:38:27 2022 +0100 + + auth-backend: make it possible to tweak the cookie configuration logic + + Signed-off-by: Patrik Oldsberg + +commit 1049a6d94924304ded900520823e0567b4f29134 +Author: djamaile +Date: Thu Feb 3 22:21:22 2022 +0100 + + fix(scaffolder-backend): spelling mistakes + + Signed-off-by: djamaile + +commit 2bd5f240439f63a75a310b7627a55629f2309006 +Author: djamaile +Date: Thu Feb 3 22:14:29 2022 +0100 + + fix(scaffolder-backend): use the right key when initializing a Gitlab client + + Signed-off-by: djamaile + +commit d5b665383975e1f9738de15524e9392a824f9956 +Merge: 6d7385487c 07eccc027d +Author: Ben Lambert +Date: Thu Feb 3 16:50:59 2022 +0100 + + Merge pull request #9332 from sabernal/patch-1 + + Adding Uala to list of Adopters + +commit 7bb1bde7f63354a6edd2448ec020e54d13d4c10a +Author: Fredrik Adelöw +Date: Thu Feb 3 15:53:26 2022 +0100 + + Bunch of random api cleanup + + Signed-off-by: Fredrik Adelöw + +commit 6d7385487c6a9f0a20b5c3a39608b2811e8d4d8a +Merge: c351d9c107 8d785a0b1b +Author: Ben Lambert +Date: Thu Feb 3 16:11:44 2022 +0100 + + Merge pull request #9304 from backstage/dependabot/npm_and_yarn/ansi-regex-6.0.1 + + chore(deps): bump ansi-regex from 5.0.1 to 6.0.1 + +commit c351d9c107917422c3d8866483e9bc8490533bc7 +Merge: 0b26937eba b72347b090 +Author: Ben Lambert +Date: Thu Feb 3 16:05:00 2022 +0100 + + Merge pull request #9318 from gabriel-dantas98/docs(deployment)/heroku + + Improve heroku deployment documentation + +commit 0b26937eba53932bae961cbdefff21ddd231bb63 +Merge: 9d053aff65 6c6d1c6439 +Author: Ben Lambert +Date: Thu Feb 3 15:11:47 2022 +0100 + + Merge pull request #9336 from mdb/mdb/splunk-on-call-spelling-fix + + correct spelling of 'Acknowledge' in tooltip + +commit 6b07ea436cfd1987ee9c65eac1f79123fe8c1e01 +Merge: 17182f82ae 9d053aff65 +Author: Brian Fletcher +Date: Thu Feb 3 14:04:20 2022 +0000 + + Merge branch 'master' of github.com:backstage/backstage into holding + +commit 6c6d1c6439e8072821b66f3619c168fbd2fbced7 +Author: Mike Ball +Date: Thu Feb 3 08:45:20 2022 -0500 + + add changeset explaining 'Acknowledge' spelling correction + + Signed-off-by: Mike Ball + +commit 63e0e3a70d06b9ac3fbd0485b595b317dacb0933 +Author: Mike Ball +Date: Thu Feb 3 08:36:26 2022 -0500 + + correct spelling of 'Acknowledge' in tooltip + + Correct the spelling of 'Acknowledge' in the + Splunk On Call plugin tooltip title. + + Signed-off-by: Mike Ball + +commit dffe939b80cedb8a50514fd6ee20de6ecdec3cc8 +Author: MT Lewis +Date: Thu Feb 3 13:21:32 2022 +0000 + + docs: add link to upgrade helper in keeping backstage updated page + + Signed-off-by: MT Lewis + +commit b72347b090ac12f602f3fd8b4582d6a0a3507786 +Author: Gabriel Dantas +Date: Thu Feb 3 10:15:54 2022 -0300 + + lint: docs style + + Signed-off-by: Gabriel Dantas + +commit 9d053aff6500b49a27e2c97773fc85154f6ef63d +Merge: 66346945de 85e5bdfe51 +Author: Fredrik Adelöw +Date: Thu Feb 3 14:02:01 2022 +0100 + + Merge pull request #9334 from backstage/freben/docs-e + + more entity docs + +commit 85e5bdfe5109737c34b9a743eef0790198661386 +Author: Fredrik Adelöw +Date: Thu Feb 3 13:33:54 2022 +0100 + + more entity docs + + Signed-off-by: Fredrik Adelöw + +commit 66346945dee022f886d3fd724cf3674adb374ca1 +Merge: f944a625c4 a532ac2e10 +Author: Patrik Oldsberg +Date: Thu Feb 3 13:27:15 2022 +0100 + + Merge pull request #9306 from backstage/rugvip/eta-tea + + embedded-techdocs-app -> techdocs-cli-embedded-app + +commit d1eff621051b27472d0cecf3ae9a93f2829b4be5 +Author: Jussi Hallila +Date: Thu Feb 3 12:21:54 2022 +0100 + + Fix tests. + + Signed-off-by: Jussi Hallila + +commit 811c710a21d65eef0ec0b10eba61b21edf8b8722 +Author: Jussi Hallila +Date: Thu Feb 3 12:15:12 2022 +0100 + + Fix tech docs inline search on Postgres + + Fix bug where tech docs collator stores search indices with wrong entity ref casing. Make the collator to conform legacyPathCasing configuration option. + + Signed-off-by: Jussi Hallila + +commit a532ac2e102aeb9031c102f8c488be93566280e6 +Author: Patrik Oldsberg +Date: Thu Feb 3 10:01:29 2022 +0100 + + embedded-techdocs-app -> techdocs-cli-embedded-app + + Signed-off-by: Patrik Oldsberg + +commit 07eccc027df84103785e390c4fa329330a0e571c +Author: Santiago Bernal <46529144+sabernal@users.noreply.github.com> +Date: Thu Feb 3 11:50:51 2022 +0100 + + Adding Uala to list of Adopters + +commit f944a625c4a8ec7f6a6237502691da9209ce6b14 (tag: v0.66.0) +Merge: 379427cbbf a12bb7b065 +Author: Johan Haals +Date: Thu Feb 3 11:44:44 2022 +0100 + + Merge pull request #9315 from backstage/changeset-release/master + + Version Packages + +commit a12bb7b06520addb638aeb1d47236597f1de216b +Author: github-actions[bot] +Date: Thu Feb 3 09:42:25 2022 +0000 + + Version Packages + +commit 379427cbbf26d590833ad432737229d3de3bf4a9 +Merge: 56365604e7 5d09bdd1de +Author: Johan Haals +Date: Thu Feb 3 10:36:35 2022 +0100 + + Merge pull request #9308 from backstage/eide/add-custom-callbackurl-to-providers + + [auth-backend]: Add custom `callbackUrl` support to additional providers + +commit 56365604e7cee68eb15c67ee75aba7e4d010f550 +Merge: b7ec1fcfdd c8acc4ae40 +Author: Johan Haals +Date: Thu Feb 3 10:33:02 2022 +0100 + + Merge pull request #8807 from Expelizabeth/Expelizabeth/gauge-updates + + Adding hover message and an info icon. + +commit b7ec1fcfdddc633b56f5f430a85edac6db6e95bd +Merge: c209fe277e 89b42418d7 +Author: Johan Haals +Date: Thu Feb 3 10:30:31 2022 +0100 + + Merge pull request #9319 from andreizimin/patch-1 + + Adding VMware to the list of Adopters + +commit c209fe277e97a9f9f25dad11c23f5d64b0af90cb +Merge: b48226f04a 7d2589de9d +Author: Ben Lambert +Date: Thu Feb 3 10:23:05 2022 +0100 + + Merge pull request #9168 from backstage/blam/scaffodler-secrets-frontend + +commit b48226f04a2643196379ea1e0c26c0944a71d89c +Merge: 6d492eb9c1 261decab66 +Author: Johan Haals +Date: Thu Feb 3 10:11:37 2022 +0100 + + Merge pull request #9328 from backstage/dependabot/npm_and_yarn/storybook/storybook/addon-a11y-6.4.18 + + chore(deps-dev): bump @storybook/addon-a11y from 6.4.17 to 6.4.18 in /storybook + +commit 89b42418d7d947a486f9a3860b741dbd0d2a1a35 +Author: andreizimin <75641133+andreizimin@users.noreply.github.com> +Date: Wed Feb 2 18:47:48 2022 -0800 + + Adding VMware to the list of Adopters + +commit c8acc4ae4030eaa57a028984350d2afd657bc22c +Author: Johan Haals +Date: Thu Feb 3 09:54:07 2022 +0100 + + chore: fix test + + Signed-off-by: Johan Haals + +commit 261decab663f0193aab90be8f414cde9485c1a33 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Thu Feb 3 08:46:36 2022 +0000 + + chore(deps-dev): bump @storybook/addon-a11y in /storybook + + Bumps [@storybook/addon-a11y](https://github.com/storybookjs/storybook/tree/HEAD/addons/a11y) from 6.4.17 to 6.4.18. + - [Release notes](https://github.com/storybookjs/storybook/releases) + - [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md) + - [Commits](https://github.com/storybookjs/storybook/commits/v6.4.18/addons/a11y) + + --- + updated-dependencies: + - dependency-name: "@storybook/addon-a11y" + dependency-type: direct:development + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit 6d492eb9c1e301b84e0e83864f4ef4d66a416a49 +Merge: b594f11d89 5488132301 +Author: Johan Haals +Date: Thu Feb 3 09:40:57 2022 +0100 + + Merge pull request #9326 from backstage/dependabot/npm_and_yarn/storybook/storybook/addon-links-6.4.18 + + chore(deps-dev): bump @storybook/addon-links from 6.4.17 to 6.4.18 in /storybook + +commit b594f11d89183e9bbfdda03b2a62bf8351b4f0b4 +Merge: 53c538d6c6 45fadf1277 +Author: Johan Haals +Date: Thu Feb 3 09:33:00 2022 +0100 + + Merge pull request #9330 from backstage/jhaals/exit + + Changeset: exit prerelease mode + +commit 53c538d6c68ed39b2921ff59013222542f8708aa +Merge: f6f3f43d8d e1d0e228a2 +Author: Johan Haals +Date: Thu Feb 3 09:32:07 2022 +0100 + + Merge pull request #9310 from awanlin/topic/add-description-to-user-profile-card + + Added description to UserProfileCard + +commit 548813230188fec9b225eabf1e2e4ea17dab2205 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Thu Feb 3 08:16:37 2022 +0000 + + chore(deps-dev): bump @storybook/addon-links in /storybook + + Bumps [@storybook/addon-links](https://github.com/storybookjs/storybook/tree/HEAD/addons/links) from 6.4.17 to 6.4.18. + - [Release notes](https://github.com/storybookjs/storybook/releases) + - [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md) + - [Commits](https://github.com/storybookjs/storybook/commits/v6.4.18/addons/links) + + --- + updated-dependencies: + - dependency-name: "@storybook/addon-links" + dependency-type: direct:development + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit f6f3f43d8d927d657463aad2f2fa96c5c71eca13 +Merge: ca89a6050c 22d05f1ca7 +Author: Johan Haals +Date: Thu Feb 3 09:08:49 2022 +0100 + + Merge pull request #9317 from dekoding/patch-2 + + Add HP Inc to list of adopters + +commit ca89a6050c386ba75e4a15769a4349dded6a2bde +Merge: 19d7fb2f97 7e1d0114b7 +Author: Johan Haals +Date: Thu Feb 3 09:06:53 2022 +0100 + + Merge pull request #9329 from backstage/dependabot/npm_and_yarn/storybook/storybook/addon-actions-6.4.18 + + chore(deps-dev): bump @storybook/addon-actions from 6.4.17 to 6.4.18 in /storybook + +commit 45fadf1277c2feffd4fb556bab00d8ec55a79859 +Author: Johan Haals +Date: Thu Feb 3 09:05:54 2022 +0100 + + Changeset: exit prerelease mode + + Signed-off-by: Johan Haals + +commit 7e1d0114b797e8934372b0fd187577428f63bde2 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Thu Feb 3 07:39:59 2022 +0000 + + chore(deps-dev): bump @storybook/addon-actions in /storybook + + Bumps [@storybook/addon-actions](https://github.com/storybookjs/storybook/tree/HEAD/addons/actions) from 6.4.17 to 6.4.18. + - [Release notes](https://github.com/storybookjs/storybook/releases) + - [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md) + - [Commits](https://github.com/storybookjs/storybook/commits/v6.4.18/addons/actions) + + --- + updated-dependencies: + - dependency-name: "@storybook/addon-actions" + dependency-type: direct:development + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit 19d7fb2f977a015a4d8a5b5c5d2f5aea037e5610 +Merge: a477b44544 5b7b5da059 +Author: Johan Haals +Date: Thu Feb 3 07:44:25 2022 +0100 + + Merge pull request #9320 from backstage/dependabot/npm_and_yarn/graphql-tag-2.12.6 + + chore(deps): bump graphql-tag from 2.12.4 to 2.12.6 + +commit a477b44544e5d451b7e52b3f73ff091ec4b03f54 +Merge: 22f65d3c19 c9505f1cf4 +Author: Johan Haals +Date: Thu Feb 3 07:40:12 2022 +0100 + + Merge pull request #9324 from backstage/dependabot/npm_and_yarn/keyv-4.1.0 + + chore(deps): bump keyv from 4.0.5 to 4.1.0 + +commit 22f65d3c1940d857691d2d36bf8c7dccdf78755f +Merge: ea3fdd90b9 7a38eb8642 +Author: Johan Haals +Date: Thu Feb 3 07:38:37 2022 +0100 + + Merge pull request #9323 from backstage/dependabot/npm_and_yarn/types/passport-google-oauth20-2.0.11 + + chore(deps-dev): bump @types/passport-google-oauth20 from 2.0.7 to 2.0.11 + +commit ea3fdd90b94178a1ebb823fa0330aee57a46db04 +Merge: a5998e8e5a 38ddee40b4 +Author: Johan Haals +Date: Thu Feb 3 07:38:03 2022 +0100 + + Merge pull request #9325 from backstage/dependabot/npm_and_yarn/storybook/storybook/react-6.4.18 + + chore(deps-dev): bump @storybook/react from 6.4.17 to 6.4.18 in /storybook + +commit a5998e8e5a9b0c2639d9ee5c44302365a9ced0a2 +Merge: 18317a08db e2b970573d +Author: Johan Haals +Date: Thu Feb 3 07:37:00 2022 +0100 + + Merge pull request #9322 from backstage/dependabot/npm_and_yarn/immer-9.0.12 + + chore(deps): bump immer from 9.0.7 to 9.0.12 + +commit 38ddee40b4a4bf02e9ca97f6ce4e63d78aa8c006 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Thu Feb 3 04:35:16 2022 +0000 + + chore(deps-dev): bump @storybook/react in /storybook + + Bumps [@storybook/react](https://github.com/storybookjs/storybook/tree/HEAD/app/react) from 6.4.17 to 6.4.18. + - [Release notes](https://github.com/storybookjs/storybook/releases) + - [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md) + - [Commits](https://github.com/storybookjs/storybook/commits/v6.4.18/app/react) + + --- + updated-dependencies: + - dependency-name: "@storybook/react" + dependency-type: direct:development + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit c9505f1cf4bfc355a7ae7fdfb7c8597008e52f65 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Thu Feb 3 04:19:53 2022 +0000 + + chore(deps): bump keyv from 4.0.5 to 4.1.0 + + Bumps [keyv](https://github.com/jaredwray/keyv) from 4.0.5 to 4.1.0. + - [Release notes](https://github.com/jaredwray/keyv/releases) + - [Commits](https://github.com/jaredwray/keyv/commits) + + --- + updated-dependencies: + - dependency-name: keyv + dependency-type: direct:production + update-type: version-update:semver-minor + ... + + Signed-off-by: dependabot[bot] + +commit 7a38eb86429273c0818795cb5804dd59cd3991e1 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Thu Feb 3 04:18:28 2022 +0000 + + chore(deps-dev): bump @types/passport-google-oauth20 + + Bumps [@types/passport-google-oauth20](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/passport-google-oauth20) from 2.0.7 to 2.0.11. + - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) + - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/passport-google-oauth20) + + --- + updated-dependencies: + - dependency-name: "@types/passport-google-oauth20" + dependency-type: direct:development + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit e2b970573d1efc3fca1aed9bebc010dc2c2987d0 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Thu Feb 3 04:16:52 2022 +0000 + + chore(deps): bump immer from 9.0.7 to 9.0.12 + + Bumps [immer](https://github.com/immerjs/immer) from 9.0.7 to 9.0.12. + - [Release notes](https://github.com/immerjs/immer/releases) + - [Commits](https://github.com/immerjs/immer/compare/v9.0.7...v9.0.12) + + --- + updated-dependencies: + - dependency-name: immer + dependency-type: direct:production + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit 5b7b5da05962123c30d8c3a216f6cb09393558e3 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Thu Feb 3 04:05:45 2022 +0000 + + chore(deps): bump graphql-tag from 2.12.4 to 2.12.6 + + Bumps [graphql-tag](https://github.com/apollographql/graphql-tag) from 2.12.4 to 2.12.6. + - [Release notes](https://github.com/apollographql/graphql-tag/releases) + - [Changelog](https://github.com/apollographql/graphql-tag/blob/main/CHANGELOG.md) + - [Commits](https://github.com/apollographql/graphql-tag/commits) + + --- + updated-dependencies: + - dependency-name: graphql-tag + dependency-type: direct:production + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit 36cf0bf6e0bb5133146ccd0a6ed842ce59a32d4d +Author: Gabriel Dantas +Date: Wed Feb 2 20:43:37 2022 -0300 + + update document + + Signed-off-by: Gabriel Dantas + +commit 22d05f1ca72621def9a5f21c579efc7e4cb480f7 +Author: Damon Kaswell +Date: Wed Feb 2 14:07:54 2022 -0800 + + Add HP Inc to list of adopters + + Signed-off-by: Damon Kaswell + +commit e1d0e228a2d7d900eb417f5e563523f65114d356 +Author: Andre Wanlin +Date: Wed Feb 2 15:22:08 2022 -0600 + + Minor change for Vale + + Signed-off-by: Andre Wanlin + +commit 18317a08db865ad88285e747d8ca002b38ae633e +Author: Eric Peterson +Date: Wed Feb 2 19:00:32 2022 +0100 + + Do not add 'copy to clipboard' buttons to plain-old code instances. (#9314) + +commit d6da97a1edeb21fcefc682d91916987ba9f3d89a (tag: v0.66.0-next.1) +Merge: e7f38e3546 51eecb3f03 +Author: Patrik Oldsberg +Date: Wed Feb 2 16:59:36 2022 +0100 + + Merge pull request #9285 from backstage/changeset-release/master + + Version Packages (next) + +commit 17182f82aeac47bec96ec2da6a310465efa81bb6 +Author: Brian Fletcher +Date: Wed Feb 2 15:49:31 2022 +0000 + + remove undefined option for optional param + + Signed-off-by: Brian Fletcher + +commit 34224a0b704469428696cdff754555f60b1b4802 +Author: Patrik Oldsberg +Date: Wed Feb 2 16:47:31 2022 +0100 + + scripts/create-release-tag: dispatch release workflows + + Signed-off-by: Patrik Oldsberg + +commit 51eecb3f0386df553b3cdd678616ca21edc71fa2 +Author: github-actions[bot] +Date: Wed Feb 2 14:28:47 2022 +0000 + + Version Packages (next) + +commit 8d785a0b1b2330e0b557c38d9d6ba5c873d98f77 +Author: Johan Haals +Date: Wed Feb 2 15:23:58 2022 +0100 + + add changeset + + Signed-off-by: Johan Haals + +commit e7f38e354612b7d060146108fbfcc0800b5d4c78 +Merge: 026a67e109 c65f5b76d0 +Author: Lee Mills +Date: Wed Feb 2 15:23:49 2022 +0100 + + Merge pull request #9309 from backstage/leemills83-roleofsponsor + + Updating GOVERNANCE.md with description of End User Sponsors and the … + +commit 026a67e1094091b0d07b0da087d1735d98b4d6af +Merge: 9888ccb678 5bd0ce9e62 +Author: Johan Haals +Date: Wed Feb 2 15:20:32 2022 +0100 + + Merge pull request #9298 from backstage/dependabot/npm_and_yarn/inquirer-8.2.0 + + chore(deps): bump inquirer from 7.3.3 to 8.2.0 + +commit 64cbca78393b7cd5cda37c8cb8dd18f41f8cd56d +Author: Andre Wanlin +Date: Wed Feb 2 07:07:44 2022 -0600 + + Added description to UserProfileCard + + Signed-off-by: Andre Wanlin + +commit c65f5b76d0cfbc77e0910e8d0d6a7175a8d2948b +Author: Lee Mills +Date: Wed Feb 2 14:02:25 2022 +0100 + + Updating GOVERNANCE.md with description of End User Sponsors and the path to become one. + + Signed-off-by: Lee Mills + +commit 5d09bdd1de8d3bd4d9c88af71ce0ef6a5275f896 +Author: Marcus Eide +Date: Wed Feb 2 13:48:04 2022 +0100 + + Add changeset + + Signed-off-by: Marcus Eide + +commit ea30d0fd756c8ad8cf97785088f7a1ec7c6d58a9 +Author: Marcus Eide +Date: Wed Feb 2 13:32:57 2022 +0100 + + Add support for custom callbackUrls to providers + + Signed-off-by: Marcus Eide + +commit 9888ccb678da2cf1fdc0ff5c0262b40e8d8020fc +Merge: 6acc8f7db7 40775bd263 +Author: Patrik Oldsberg +Date: Wed Feb 2 12:07:21 2022 +0100 + + Merge pull request #9294 from backstage/rugvip/auth-refresh + + auth-backend,core-app-api: GitHub auth refactor and fixes + +commit 6acc8f7db72b5cb760c3b6e4ef4834c71311c346 +Author: Joon Park +Date: Wed Feb 2 04:49:04 2022 -0600 + + Add caching to the useEntityPermission hook (#9064) + + * Add caching to the useEntityPermission hook + + Signed-off-by: Joon Park + + * Remove useRef + + Signed-off-by: Joon Park + + * Use useSWR hook + + Signed-off-by: Joon Park + +commit 40775bd263ae55e69b2a9a9d2baa69d20d59b1df +Author: Patrik Oldsberg +Date: Tue Feb 1 22:25:20 2022 +0100 + + core-app-api: switch GithubAuth to use the common OAuth2 implementation + + Signed-off-by: Patrik Oldsberg + +commit 648606b3ac1c7172951a949e4b85894ef60353d1 +Author: Patrik Oldsberg +Date: Tue Feb 1 22:09:37 2022 +0100 + + auth-backend: store github oauth token in cookie and use for refresh + + Signed-off-by: Patrik Oldsberg + +commit 74298c1ae3ab2ee5c222b223edcd4f06bc5590d8 +Merge: a0f0b8eb9a f612ff7a81 +Author: Johan Haals +Date: Wed Feb 2 10:27:36 2022 +0100 + + Merge pull request #9303 from backstage/dependabot/npm_and_yarn/roadiehq/backstage-plugin-travis-ci-1.3.6 + + chore(deps): bump @roadiehq/backstage-plugin-travis-ci from 1.3.3 to 1.3.6 + +commit a0f0b8eb9a6d570e7483bf10526e281f9ad4533d +Merge: 551f4c04cb c35e52cfcd +Author: Fredrik Adelöw +Date: Wed Feb 2 10:24:07 2022 +0100 + + Merge pull request #8042 from backstage/freben/backend-context + + [PRFC] Introduce the backend-common Context + +commit a15fc5a29834f98775d5735665446e84ab721312 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Wed Feb 2 09:24:00 2022 +0000 + + chore(deps): bump ansi-regex from 5.0.1 to 6.0.1 + + Bumps [ansi-regex](https://github.com/chalk/ansi-regex) from 5.0.1 to 6.0.1. + - [Release notes](https://github.com/chalk/ansi-regex/releases) + - [Commits](https://github.com/chalk/ansi-regex/compare/v5.0.1...v6.0.1) + + --- + updated-dependencies: + - dependency-name: ansi-regex + dependency-type: direct:production + update-type: version-update:semver-major + ... + + Signed-off-by: dependabot[bot] + +commit 551f4c04cb0a96aa55e76c4d4917c070d5837d51 +Merge: 1e932a79ca 50ef52a640 +Author: Johan Haals +Date: Wed Feb 2 09:57:00 2022 +0100 + + Merge pull request #9302 from backstage/dependabot/npm_and_yarn/replace-in-file-6.3.2 + + chore(deps): bump replace-in-file from 6.1.0 to 6.3.2 + +commit 1e932a79ca9bacd68cc2c0a9a2f02f10cadadc03 +Merge: 2e6927225d c4b38fc1a3 +Author: Johan Haals +Date: Wed Feb 2 09:56:42 2022 +0100 + + Merge pull request #9300 from backstage/dependabot/npm_and_yarn/changesets/cli-2.20.0 + + chore(deps-dev): bump @changesets/cli from 2.17.0 to 2.20.0 + +commit 9d75a939b63ad53f55677ea91be50b8d35530280 +Author: Patrik Oldsberg +Date: Tue Feb 1 18:40:51 2022 +0100 + + auth-backend: fix OAuthAdapter scope store, only storing on success + + Signed-off-by: Patrik Oldsberg + +commit f612ff7a817a0baa973341be291853e0bbfcc690 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Wed Feb 2 08:42:13 2022 +0000 + + chore(deps): bump @roadiehq/backstage-plugin-travis-ci + + Bumps [@roadiehq/backstage-plugin-travis-ci](https://github.com/RoadieHQ/roadie-backstage-plugins/tree/HEAD/plugins/frontend/backstage-plugin-travis-ci) from 1.3.3 to 1.3.6. + - [Release notes](https://github.com/RoadieHQ/roadie-backstage-plugins/releases) + - [Changelog](https://github.com/RoadieHQ/roadie-backstage-plugins/blob/main/plugins/frontend/backstage-plugin-travis-ci/CHANGELOG.md) + - [Commits](https://github.com/RoadieHQ/roadie-backstage-plugins/commits/HEAD/plugins/frontend/backstage-plugin-travis-ci) + + --- + updated-dependencies: + - dependency-name: "@roadiehq/backstage-plugin-travis-ci" + dependency-type: direct:production + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit c4b38fc1a36294b0e92c25643a9f5b96c2fbea2d +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Wed Feb 2 08:16:38 2022 +0000 + + chore(deps-dev): bump @changesets/cli from 2.17.0 to 2.20.0 + + Bumps [@changesets/cli](https://github.com/changesets/changesets) from 2.17.0 to 2.20.0. + - [Release notes](https://github.com/changesets/changesets/releases) + - [Changelog](https://github.com/changesets/changesets/blob/main/docs/modifying-changelog-format.md) + - [Commits](https://github.com/changesets/changesets/compare/@changesets/cli@2.17.0...@changesets/cli@2.20.0) + + --- + updated-dependencies: + - dependency-name: "@changesets/cli" + dependency-type: direct:development + update-type: version-update:semver-minor + ... + + Signed-off-by: dependabot[bot] + +commit 5bd0ce9e626e13fdf397389c44e28d9ea9c6593a +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Wed Feb 2 08:10:25 2022 +0000 + + chore(deps): bump inquirer from 7.3.3 to 8.2.0 + + Bumps [inquirer](https://github.com/SBoudrias/Inquirer.js) from 7.3.3 to 8.2.0. + - [Release notes](https://github.com/SBoudrias/Inquirer.js/releases) + - [Commits](https://github.com/SBoudrias/Inquirer.js/compare/inquirer@7.3.3...inquirer@8.2.0) + + --- + updated-dependencies: + - dependency-name: inquirer + dependency-type: direct:production + update-type: version-update:semver-major + ... + + Signed-off-by: dependabot[bot] + +commit 50ef52a6409fe5559a8f5fd43ccfcba2effe01ee +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Wed Feb 2 08:07:47 2022 +0000 + + chore(deps): bump replace-in-file from 6.1.0 to 6.3.2 + + Bumps [replace-in-file](https://github.com/adamreisnz/replace-in-file) from 6.1.0 to 6.3.2. + - [Release notes](https://github.com/adamreisnz/replace-in-file/releases) + - [Changelog](https://github.com/adamreisnz/replace-in-file/blob/main/CHANGELOG.md) + - [Commits](https://github.com/adamreisnz/replace-in-file/compare/v6.1.0...v6.3.2) + + --- + updated-dependencies: + - dependency-name: replace-in-file + dependency-type: direct:production + update-type: version-update:semver-minor + ... + + Signed-off-by: dependabot[bot] + +commit 2e6927225d459b541d3b7e7c228ed61e98df13b7 +Merge: 2e9fe70c52 2ce5e4e0a7 +Author: Johan Haals +Date: Wed Feb 2 09:02:07 2022 +0100 + + Merge pull request #9292 from RoadieHQ/code-coverage-plugin-fix-explore-files-breadcrumb + + Code coverage plugin - fix explore files breadcrumbs bug + +commit 2e9fe70c52ec8cda53a490c5d4702d558e0132ee +Merge: 5ebcf0cd93 3ee4d1bdb5 +Author: Johan Haals +Date: Wed Feb 2 08:52:55 2022 +0100 + + Merge pull request #9291 from adamtester/patch-1 + + Fix incorrect package name in Changelog + +commit 5ebcf0cd93792a67baee2b6f6ce272ea50f2f61b +Merge: c2dc075c24 478eb69092 +Author: Johan Haals +Date: Wed Feb 2 08:49:31 2022 +0100 + + Merge pull request #9299 from backstage/dependabot/npm_and_yarn/types/body-parser-1.19.2 + + chore(deps-dev): bump @types/body-parser from 1.19.1 to 1.19.2 + +commit 478eb69092d8c4645db5b4633110ab30d1d60fd2 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Wed Feb 2 04:12:28 2022 +0000 + + chore(deps-dev): bump @types/body-parser from 1.19.1 to 1.19.2 + + Bumps [@types/body-parser](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/body-parser) from 1.19.1 to 1.19.2. + - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) + - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/body-parser) + + --- + updated-dependencies: + - dependency-name: "@types/body-parser" + dependency-type: direct:development + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit d0a3bdb263c8419c412131ddca8307eb1150afee +Author: Brian Fletcher +Date: Tue Feb 1 22:59:53 2022 +0000 + + also export task page props and document + + Signed-off-by: Brian Fletcher + +commit 5f32f20a3446eb61df6d313face77f70c1ce2017 +Author: Brian Fletcher +Date: Tue Feb 1 22:44:44 2022 +0000 + + fixes the comonent types + + Signed-off-by: Brian Fletcher + +commit 2ce5e4e0a7b5feb67ebd05b52922363bdf233af6 +Author: Eoghan McIlwaine +Date: Tue Feb 1 19:36:18 2022 +0100 + + Add changeset for bugfix + + Signed-off-by: Eoghan McIlwaine + +commit 3a5b41a2afeb5ed5a8109e107b7bdf15f7587973 +Author: Eoghan McIlwaine +Date: Tue Feb 1 19:11:55 2022 +0100 + + Add basic tests + + Signed-off-by: Eoghan McIlwaine + +commit 1854bd771bf6235d35e3aa733233d555ea9d5f25 +Author: Eoghan McIlwaine +Date: Fri Jan 28 19:29:54 2022 +0100 + + Code coverage plugin: fix breadcrumbs + + Signed-off-by: Eoghan McIlwaine + +commit 499f8f547eb613efc24d221f83b4bba0229d1871 +Author: Karan Shah +Date: Tue Feb 1 17:18:22 2022 +0000 + + Add some routes to the extensions test + + Signed-off-by: Karan Shah + +commit 3ee4d1bdb51189da456d4e734cf860923de5273a +Author: Adam Tester +Date: Tue Feb 1 16:38:24 2022 +0000 + + Fix incorrect package name in changelog + + Signed-off-by: Adam Tester + +commit d7db71bb2b2b4b660335d62a0e0b7b8a2f9f137c +Merge: 9e505d20a3 c2dc075c24 +Author: Karan Shah +Date: Tue Feb 1 16:00:56 2022 +0000 + + Merge remote-tracking branch 'upstream/master' into airbrake-api + + # Conflicts: + # plugins/airbrake/package.json + +commit 9e505d20a340879289384684ccbdf24b0edb7464 +Author: Karan Shah +Date: Tue Feb 1 15:56:46 2022 +0000 + + Added a changeset + + Signed-off-by: Karan Shah + +commit c2dc075c2489cba416deafae51f65d36539929f1 +Merge: 475b3cdaa3 1233350ccd +Author: Ben Lambert +Date: Tue Feb 1 16:45:57 2022 +0100 + + Merge pull request #9288 from backstage/blam/fix-release-script + + chore: updating release scripts to have proper includes and fixing next release formatting + +commit 475b3cdaa3befd726cafd23b382fa20a051cc4c5 +Merge: bde492e45b f7257dff6f +Author: Eric Peterson +Date: Tue Feb 1 16:39:01 2022 +0100 + + Merge pull request #9257 from backstage/analytics/link-no-track + +commit 6c3a7ad51fef61c550f7e47f4bb6a3b087ee6783 +Author: Karan Shah +Date: Tue Feb 1 15:24:25 2022 +0000 + + Remove Discovery API Ref + + Signed-off-by: Karan Shah + +commit bde492e45b677bc2814c5e7ce900bb3b93929b4e +Merge: 3550ba77cf 06f84f7e67 +Author: Johan Haals +Date: Tue Feb 1 16:00:18 2022 +0100 + + Merge pull request #8937 from backstage/fix-initial-filter + + catalog-react: improve handling of groups with 0 items in UserListPicker + +commit 3550ba77cfb9c263eecafa10f4918bdd902f724a +Merge: 0b83dc7333 82f855f9a0 +Author: Patrik Oldsberg +Date: Tue Feb 1 15:46:52 2022 +0100 + + Merge pull request #9287 from backstage/rugvip/fix-release + + scripts/prepare-release: fix base version handling in non-prereleases + +commit 1233350ccd18deb0fbba7a6348fed9e5b45cfe0d +Author: blam +Date: Tue Feb 1 15:46:38 2022 +0100 + + chore: updating release scripts to have proper includes and fixing next release formatting + + Co-authored-by: Patrik Oldsberg + Signed-off-by: blam + +commit 410ce6ed2a4e38b43c57911284584fd56bbbc59c +Author: Brian Fletcher +Date: Tue Feb 1 14:23:43 2022 +0000 + + Allow providing a TaskPageComponent + + Signed-off-by: Brian Fletcher + +commit 0b83dc7333efc933c070bb9dee7af61f9a8bdb62 +Merge: 1fc6c84043 11c86325ea +Author: Ben Lambert +Date: Tue Feb 1 15:22:36 2022 +0100 + + Merge pull request #9286 from backstage/blam/fix-release-tag-script + + chore: added missing path require + +commit 06f84f7e678fca28f5621613e86b274ce39f515f +Author: MT Lewis +Date: Tue Feb 1 14:21:39 2022 +0000 + + Stop abbreviating 'params' to make Vale happy + + Signed-off-by: MT Lewis + +commit 1fc6c84043b58d2cb542e70af9d7529dd66ca461 +Merge: b22a1e279c 742434a6ba +Author: Eric Peterson +Date: Tue Feb 1 15:13:54 2022 +0100 + + Merge pull request #9284 from backstage/techdocs/same-host-a-download + + [TechDocs] Fix download 404 when backend/app hosts are the same + +commit 11c86325ea7a260d50d6e5ed4acfec17322d7176 +Author: blam +Date: Tue Feb 1 15:13:17 2022 +0100 + + chore: added missing path require + + Signed-off-by: blam + +commit 82f855f9a0945b741910ee9c53d3869a0474db13 +Author: Patrik Oldsberg +Date: Tue Feb 1 14:59:03 2022 +0100 + + scripts/prepare-release: fix base version handling in non-prereleases + + Signed-off-by: Patrik Oldsberg + +commit b22a1e279c2584eead1b5e4a547fe2ce49560705 +Merge: a28838ac5c fd6decb02d +Author: Johan Haals +Date: Tue Feb 1 14:33:06 2022 +0100 + + Merge pull request #9036 from backstage/catalog-permission-integration/catalog-import + + Integrate catalog-import with permissions + +commit 742434a6ba08f8b2f2b414e0953d22acd9c2f43a +Author: Eric Peterson +Date: Tue Feb 1 13:39:23 2022 +0100 + + Fix TechDocs download bug when backend/app hosts are the same. + + Signed-off-by: Eric Peterson + +commit fd6decb02dafcc2b264d8c3546996f153c532eb6 +Author: Joon Park +Date: Tue Feb 1 11:07:55 2022 +0000 + + Fix changeset descriptions + + Signed-off-by: Joon Park + +commit 86b1c46bd5c11d49b8e1604c893ae17688bf6e52 +Author: Joon Park +Date: Mon Jan 31 15:21:35 2022 +0000 + + Add changeset descriptions + + Signed-off-by: Joon Park + +commit ba59832aedb0f7232fca9e0f324979715c4fe742 +Author: Joon Park +Date: Wed Jan 19 17:06:00 2022 +0000 + + Integrate catalog-import with permissions + + Signed-off-by: Joon Park + +commit a28838ac5c80c7332caa6ca0569d2ec85151784f (tag: v0.66.0-next.0) +Merge: d3c107da13 e1580cf73a +Author: Patrik Oldsberg +Date: Tue Feb 1 13:08:49 2022 +0100 + + Merge pull request #9203 from backstage/changeset-release/master + + Version Packages (next) + +commit 569715b9f0a43922cd1519ca1f98151e5fb94393 +Author: MT Lewis +Date: Tue Feb 1 11:37:12 2022 +0000 + + catalog-react: expand bugfix description in changeset + + Signed-off-by: MT Lewis + +commit 91ffc2ade2c5e8739ddc899db174700aeeb354b1 +Author: MT Lewis +Date: Fri Jan 28 10:29:27 2022 +0000 + + catalog: update DefaultCatalogPage test + + This test appears to be checking for a regression in which the filter + reset from starred to owned after starring an entity. As a precursor, + it tried to select all three possible filters, but now it's no longer + possible to select filters that don't have any matching entities. + + Now that the behaviour of menu items when there are no items in that + filter has changed, this commit updates the test to confirm that the + menu item starts disabled, and then enables when an entity is starred. + + Signed-off-by: MT Lewis + +commit ce383faaef7edcb371c73e49668212b62f68d148 +Author: MT Lewis +Date: Fri Jan 28 10:26:20 2022 +0000 + + catalog-react: generalise UserListPicker filter resetting tests + + Signed-off-by: MT Lewis + +commit 17d812bdf25434e4e4c4cb259b4a96da957438a6 +Author: MT Lewis +Date: Fri Jan 14 14:36:16 2022 +0000 + + catalog-react: generalize empty group handling + + Signed-off-by: MT Lewis + +commit dc3fe7c3ead198bb778399ef7e1f04345cfe3cf8 +Author: MT Lewis +Date: Fri Jan 14 14:20:39 2022 +0000 + + catalog-react: disable groups with 0 entries in UserListPicker + + Signed-off-by: MT Lewis + +commit 300f8cdaee54fc40fc94c493e0c1a40cdd50fcfe +Author: MT Lewis +Date: Fri Jan 14 13:35:24 2022 +0000 + + catalog-react: fix filter resetting bug in UserListPicker + + Signed-off-by: MT Lewis + +commit 3193d9d3bb1bdb1212726442bb0bdbf8de068684 +Author: Karan Shah +Date: Tue Feb 1 11:03:33 2022 +0000 + + Add back catalog model and catalog plugin react + + Signed-off-by: Karan Shah + +commit c331d3fd7aac2800c6453e85a99787e7de457c93 +Merge: 899b8d748f d3c107da13 +Author: Karan Shah +Date: Tue Feb 1 10:32:33 2022 +0000 + + Merge remote-tracking branch 'upstream/master' into airbrake-api + + Signed-off-by: Karan Shah + + # Conflicts: + # plugins/airbrake/package.json + +commit e1580cf73ae74c22e340cb113bd22c607298c0eb +Author: github-actions[bot] +Date: Tue Feb 1 08:53:29 2022 +0000 + + Version Packages (next) + +commit d3c107da13f28fa0c1dd4408630171263d19de38 +Merge: f918a3d54e 359c31e31d +Author: Eric Peterson +Date: Tue Feb 1 09:48:14 2022 +0100 + + Merge pull request #9279 from backstage/techdocs/support-relative-source-src + + [TechDocs] Add support for source tags pointing to relative assets + +commit f918a3d54ea22af14c1650874a0cd77088a936b8 +Merge: 07e3f5e48e 1eb5d32112 +Author: Johan Haals +Date: Tue Feb 1 09:47:01 2022 +0100 + + Merge pull request #9210 from marcosborges/patch-1 + + Added RCHLO and MIDWAY new adopters. + +commit 07e3f5e48e9912e0b90842501f91a62aea29451d +Merge: a8d731e449 12a5c884f3 +Author: Johan Haals +Date: Tue Feb 1 09:38:02 2022 +0100 + + Merge pull request #9282 from backstage/dependabot/npm_and_yarn/raw-body-2.4.2 + + chore(deps): bump raw-body from 2.4.1 to 2.4.2 + +commit a8d731e44937399a5d0b45440270b27fbf3815b9 +Merge: aa4be23eaf b623eddf55 +Author: Johan Haals +Date: Tue Feb 1 09:37:38 2022 +0100 + + Merge pull request #9283 from backstage/dependabot/npm_and_yarn/storybook/storybook/addon-actions-6.4.17 + + chore(deps-dev): bump @storybook/addon-actions from 6.4.14 to 6.4.17 in /storybook + +commit 7d2589de9da5bb25e4e0a60129fa12becccc3f37 +Author: blam +Date: Mon Jan 31 21:24:35 2022 +0100 + + chore: adding a link to the docs + + Signed-off-by: blam + +commit ac23003f62f18a969a4ac8a0c6a52a72d8ef156f +Author: blam +Date: Mon Jan 31 21:17:53 2022 +0100 + + chore: encode some values too + + Signed-off-by: blam + +commit 37a3fc75c06fa51a9e2dfb85ae54a5eb7ad28d60 +Author: blam +Date: Mon Jan 31 20:58:51 2022 +0100 + + chore: more code review fixes + + Signed-off-by: blam + +commit c1be2801a9011704bc677b88f9789e7fcc6dcd7d +Author: blam +Date: Mon Jan 31 20:53:13 2022 +0100 + + chore: rewording `PROVIDER_TOKEN` to `token` + + Signed-off-by: blam + +commit b856b156c2ee96660627dcc2f46e1c4a06a3b06e +Author: blam +Date: Wed Jan 26 18:13:01 2022 +0100 + + docs: making the docs a little clearer + + Signed-off-by: blam + +commit c95df1631e4ae930dfbbd172520699e2256f3040 +Author: blam +Date: Wed Jan 26 18:08:13 2022 +0100 + + chore: added changeset and updating documentation about being able to grab the user token + + Signed-off-by: blam + +commit 0f264c4f842c7010109339d53d99e5a108d107ff +Author: blam +Date: Wed Jan 26 17:55:16 2022 +0100 + + chore: api-reports needed updating for scaffolder bacend + Signed-off-by: blam + +commit 72eccc0f5dc6dbbf52df81b12105c74892caa343 +Author: blam +Date: Wed Jan 26 17:47:26 2022 +0100 + + chore: added tests for ensuring that the token is used properly when passed into the actions + Signed-off-by: blam + +commit 2c34749bb66bef1b3ce12acb0fe409024044677a +Author: blam +Date: Wed Jan 26 16:23:05 2022 +0100 + + feat: added support for overriding the token used for publish actions. + + Signed-off-by: blam + +commit c91ba8cf2fe1a4ee779c5a8266191a2d906c50b3 +Author: blam +Date: Wed Jan 26 09:42:29 2022 +0100 + + feat: Added the ability for the scaffolder backend engine to template secrets into the input of actions + + Signed-off-by: blam + +commit c345946703cd65082a04a7aa8825a84a2e045bdc +Author: blam +Date: Wed Jan 26 09:27:15 2022 +0100 + + chore: added a test to check the secrets context is being updated with the secrets returned from the scmAuthApi + + Signed-off-by: blam + +commit cee44ad2898bcd6aa2ac7ca7778c921c992cb864 +Author: blam +Date: Tue Jan 25 20:53:33 2022 +0100 + + chore: added changeset + + Signed-off-by: blam + +commit b61c34067658f55ae85be839c315320fc4002599 +Author: blam +Date: Tue Jan 25 20:46:50 2022 +0100 + + chore: generated API reports + + Signed-off-by: blam + +commit 7d740b86c9c23dbcd570ecaebc4d3113248da407 +Author: blam +Date: Tue Jan 25 20:40:03 2022 +0100 + + chore: added a todo for test + + Signed-off-by: blam + +commit 2ae059d35a13072cd5cafb4fbd6f67b806cdb53a +Author: blam +Date: Tue Jan 25 20:38:56 2022 +0100 + + feat: testing the RepoUrlPicker component with SecretsContexts + + Signed-off-by: blam + +commit 3e96fa47d0e47af505ba3e38c777c61513f49afa +Author: blam +Date: Tue Jan 25 20:20:17 2022 +0100 + + chore: need to convert these to empty strings as they are controlled input values and material ui throws some errors in the frontend unless we have them + + Signed-off-by: blam + +commit 5521945cc712d3166ff62aae1c7b01a81bd36ba7 +Author: blam +Date: Tue Jan 25 19:37:04 2022 +0100 + + feat: added some more behaviour to the HostPicker as noticed that when no hosts are supplied it breaks currently + + Signed-off-by: blam + +commit 6708dbfffe6e1c3b2a9035839af73ef97d29e37e +Author: blam +Date: Tue Jan 25 19:10:08 2022 +0100 + + feat: added grabbing the token from the form with a debounce to not happen on every key press + + Signed-off-by: blam + +commit 288ad92b64e53bc5075b865eba58e15077c19677 +Author: blam +Date: Tue Jan 25 16:52:50 2022 +0100 + + feat: reworking the secret types for the context. + + Signed-off-by: blam + +commit 6d9f426eabc5d32d7d77c5101e10b0154bbe538c +Author: blam +Date: Tue Jan 25 16:23:43 2022 +0100 + + feat: added a SecretsContext for storing the secrets in the frontend and being able to add secrets to the context using a hooks + + Signed-off-by: blam + +commit 2e5c4d1a151580e61b60ce5599e0bc83cc52231f +Author: blam +Date: Tue Jan 25 15:17:04 2022 +0100 + + chore: added some additional scopes support for the ScmAuthApi + + Signed-off-by: blam + +commit b623eddf5505e6cc28e9c92e12f52d3951e2f26d +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Tue Feb 1 04:31:54 2022 +0000 + + chore(deps-dev): bump @storybook/addon-actions in /storybook + + Bumps [@storybook/addon-actions](https://github.com/storybookjs/storybook/tree/HEAD/addons/actions) from 6.4.14 to 6.4.17. + - [Release notes](https://github.com/storybookjs/storybook/releases) + - [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md) + - [Commits](https://github.com/storybookjs/storybook/commits/v6.4.17/addons/actions) + + --- + updated-dependencies: + - dependency-name: "@storybook/addon-actions" + dependency-type: direct:development + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit 12a5c884f345b164018443acae9ea2ccda476770 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Tue Feb 1 04:12:04 2022 +0000 + + chore(deps): bump raw-body from 2.4.1 to 2.4.2 + + Bumps [raw-body](https://github.com/stream-utils/raw-body) from 2.4.1 to 2.4.2. + - [Release notes](https://github.com/stream-utils/raw-body/releases) + - [Changelog](https://github.com/stream-utils/raw-body/blob/master/HISTORY.md) + - [Commits](https://github.com/stream-utils/raw-body/compare/2.4.1...2.4.2) + + --- + updated-dependencies: + - dependency-name: raw-body + dependency-type: direct:production + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit f7257dff6f25ba48879f4eba84674b5fc70e0d15 +Author: Eric Peterson +Date: Sun Jan 30 19:16:30 2022 +0100 + + Allow links to not be tracked (or tracked custom). + + Signed-off-by: Eric Peterson + +commit aa4be23eafcf27b07be51b7fbcc92b7fe31805f6 +Merge: 416513b5c4 e8df331078 +Author: Eric Peterson +Date: Mon Jan 31 19:22:13 2022 +0100 + + Merge pull request #9166 from backstage/analytics/user-identity-3 + + [Analytics] Convention for tying events to known users + +commit e8df3310781237c965d78a88eb2b0285f12ae8a8 +Author: Eric Peterson +Date: Mon Jan 31 18:39:45 2022 +0100 + + Update docs to match reality. + + Signed-off-by: Eric Peterson + +commit 359c31e31d8f2ef451b6e3d312c1b699e584949f +Author: Eric Peterson +Date: Mon Jan 31 18:19:53 2022 +0100 + + Add support for source tags pointing to relative assets. + + Signed-off-by: Eric Peterson + +commit 899b8d748fa414bbe1d0c5d1ea71cafda1a18431 +Author: Karan Shah +Date: Mon Jan 31 16:39:49 2022 +0000 + + Connect up the production API + + Signed-off-by: Karan Shah + +commit 319f4b79a2a5f6964dae99ac3630679037f2e464 +Author: Brian Fletcher +Date: Mon Jan 31 15:31:52 2022 +0000 + + allow providing holding text for scaffolder loading + + Signed-off-by: Brian Fletcher + +commit 416513b5c497cfa52518e7d9d5ec96da85acc463 +Merge: 7e94528a3a 1da4ff22da +Author: Johan Haals +Date: Mon Jan 31 15:58:56 2022 +0100 + + Merge pull request #9262 from backstage/dependabot/npm_and_yarn/cronstrue-1.123.0 + + chore(deps): bump cronstrue from 1.122.0 to 1.123.0 + +commit 7e94528a3a1508b1aec477fc876dd80f67e717e9 +Merge: 51c870b42f dd64f72bf2 +Author: Lee Mills +Date: Mon Jan 31 15:45:28 2022 +0100 + + Merge pull request #9274 from backstage/leemills83-codeofconduct + + Updated the Code of Conduct to point to the CNCF Code of Conduct + +commit dd64f72bf23f589968e9cf93831478bbbc6f3ba0 +Author: Lee Mills +Date: Mon Jan 31 15:16:58 2022 +0100 + + Updated the Code of Conduct to point to the CNCF Code of Conduct + + Signed-off-by: Lee Mills + +commit 1da4ff22da002fb09e45acd6200c165d2ade0c6e +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Mon Jan 31 14:00:38 2022 +0000 + + chore(deps): bump cronstrue from 1.122.0 to 1.123.0 + + Bumps [cronstrue](https://github.com/bradymholt/cronstrue) from 1.122.0 to 1.123.0. + - [Release notes](https://github.com/bradymholt/cronstrue/releases) + - [Commits](https://github.com/bradymholt/cronstrue/compare/v1.122.0...v1.123.0) + + --- + updated-dependencies: + - dependency-name: cronstrue + dependency-type: direct:production + update-type: version-update:semver-minor + ... + + Signed-off-by: dependabot[bot] + +commit 51c870b42f7a6bb7221fde2de83829e390fd247e +Merge: 9224a7f154 d8ebc62a10 +Author: Johan Haals +Date: Mon Jan 31 14:50:18 2022 +0100 + + Merge pull request #9264 from backstage/dependabot/npm_and_yarn/storybook/storybook/addon-storysource-6.4.17 + + chore(deps-dev): bump @storybook/addon-storysource from 6.4.14 to 6.4.17 in /storybook + +commit 9224a7f15420ebabbbe0a51fe7e3dc0c426aa710 +Merge: d430d85d16 409725e9c2 +Author: Johan Haals +Date: Mon Jan 31 14:39:26 2022 +0100 + + Merge pull request #9239 from awanlin/topic/add-orphan-clean-up-script + + Added Orphan Clean Up script + +commit d8ebc62a108aa86a9b0cb01c1e10d4e4ee1f3d48 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Mon Jan 31 13:30:49 2022 +0000 + + chore(deps-dev): bump @storybook/addon-storysource in /storybook + + Bumps [@storybook/addon-storysource](https://github.com/storybookjs/storybook/tree/HEAD/addons/storysource) from 6.4.14 to 6.4.17. + - [Release notes](https://github.com/storybookjs/storybook/releases) + - [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md) + - [Commits](https://github.com/storybookjs/storybook/commits/v6.4.17/addons/storysource) + + --- + updated-dependencies: + - dependency-name: "@storybook/addon-storysource" + dependency-type: direct:development + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit d430d85d162512cca25173668cb0f7e78271015b +Merge: 1a25e61e86 0f85999d07 +Author: Johan Haals +Date: Mon Jan 31 14:25:52 2022 +0100 + + Merge pull request #9268 from backstage/dependabot/npm_and_yarn/storybook/storybook/addon-a11y-6.4.17 + + chore(deps-dev): bump @storybook/addon-a11y from 6.4.14 to 6.4.17 in /storybook + +commit 409725e9c2f7152d5ff0c3bb592f0cc4722e552c +Author: Andre Wanlin +Date: Mon Jan 31 07:11:45 2022 -0600 + + Updated readme + + Signed-off-by: Andre Wanlin + +commit 1a25e61e864249cb4c2ce4360a4c08961eab8ad2 +Merge: 6e067fd2b1 c810594492 +Author: Fredrik Adelöw +Date: Mon Jan 31 13:36:19 2022 +0100 + + Merge pull request #9272 from backstage/freben/no-docker-plz + + disable docker in more test runs + +commit 6e067fd2b1d578f1dec37098559252ec3ec49d3c +Merge: 2dca53c395 80b6cf3380 +Author: Patrik Oldsberg +Date: Mon Jan 31 13:20:52 2022 +0100 + + Merge pull request #9273 from backstage/rugvip/branches + + scripts/prepare-release: more main branches + +commit 0f85999d07a75dc450b9911e6d2b2e1bd2965881 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Mon Jan 31 12:20:27 2022 +0000 + + chore(deps-dev): bump @storybook/addon-a11y in /storybook + + Bumps [@storybook/addon-a11y](https://github.com/storybookjs/storybook/tree/HEAD/addons/a11y) from 6.4.14 to 6.4.17. + - [Release notes](https://github.com/storybookjs/storybook/releases) + - [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md) + - [Commits](https://github.com/storybookjs/storybook/commits/v6.4.17/addons/a11y) + + --- + updated-dependencies: + - dependency-name: "@storybook/addon-a11y" + dependency-type: direct:development + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit 2dca53c395a6bca0ae16d8354122ea96cb9b68ee +Merge: d6fff4be3c bf1b485962 +Author: Johan Haals +Date: Mon Jan 31 13:18:57 2022 +0100 + + Merge pull request #9263 from backstage/dependabot/npm_and_yarn/camelcase-keys-7.0.1 + + chore(deps): bump camelcase-keys from 6.2.2 to 7.0.1 + +commit d6fff4be3c0b255759b7e2a0d374b95fc1211c71 +Merge: 79d42f266c 6d71920820 +Author: Johan Haals +Date: Mon Jan 31 13:11:27 2022 +0100 + + Merge pull request #9266 from backstage/dependabot/npm_and_yarn/storybook/storybook/addon-links-6.4.17 + + chore(deps-dev): bump @storybook/addon-links from 6.4.14 to 6.4.17 in /storybook + +commit 80b6cf3380c8cfa189b0c2b430f21640972ea283 +Author: Patrik Oldsberg +Date: Mon Jan 31 13:01:56 2022 +0100 + + scripts/prepare-release: more main branches + + Signed-off-by: Patrik Oldsberg + +commit c810594492bc73eef27fb0f9ec295db9f02d911a +Author: Fredrik Adelöw +Date: Mon Jan 31 12:18:13 2022 +0100 + + disable docker in more test runs + + Signed-off-by: Fredrik Adelöw + +commit 6d71920820835d3391ef6c7fb2afcac606218bfa +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Mon Jan 31 11:01:56 2022 +0000 + + chore(deps-dev): bump @storybook/addon-links in /storybook + + Bumps [@storybook/addon-links](https://github.com/storybookjs/storybook/tree/HEAD/addons/links) from 6.4.14 to 6.4.17. + - [Release notes](https://github.com/storybookjs/storybook/releases) + - [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md) + - [Commits](https://github.com/storybookjs/storybook/commits/v6.4.17/addons/links) + + --- + updated-dependencies: + - dependency-name: "@storybook/addon-links" + dependency-type: direct:development + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit 79d42f266ccc5b2c7ce48af0a1d97b8b78bcc7ab +Merge: 562b511841 991ffe45cd +Author: Johan Haals +Date: Mon Jan 31 11:57:31 2022 +0100 + + Merge pull request #9265 from backstage/dependabot/npm_and_yarn/storybook/storybook/react-6.4.17 + + chore(deps-dev): bump @storybook/react from 6.4.14 to 6.4.17 in /storybook + +commit 562b5118413b1ceaf2b67a861f222cae40ff4a0c +Merge: 401e171a59 60e5db75b4 +Author: Patrik Oldsberg +Date: Mon Jan 31 10:59:57 2022 +0100 + + Merge pull request #9240 from backstage/mob/enter-pre + + changesets: enter prerelease + +commit 991ffe45cda20b0f06cc883c0830cee1aa8968c1 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Mon Jan 31 09:59:53 2022 +0000 + + chore(deps-dev): bump @storybook/react in /storybook + + Bumps [@storybook/react](https://github.com/storybookjs/storybook/tree/HEAD/app/react) from 6.4.14 to 6.4.17. + - [Release notes](https://github.com/storybookjs/storybook/releases) + - [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md) + - [Commits](https://github.com/storybookjs/storybook/commits/v6.4.17/app/react) + + --- + updated-dependencies: + - dependency-name: "@storybook/react" + dependency-type: direct:development + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit bf1b48596228df3fe0590935ac17b52d80ed31c2 +Author: Johan Haals +Date: Mon Jan 31 10:59:20 2022 +0100 + + update api report + + Signed-off-by: Johan Haals + +commit 401e171a5929f3369c5a7a7808a63923b268af9c +Merge: dcd387e6d7 93b8b48fbb +Author: Johan Haals +Date: Mon Jan 31 10:54:55 2022 +0100 + + Merge pull request #9271 from backstage/jhaals/storybookrc + + storybook: Add [npm|yarn]rc files + +commit dcd387e6d75b1ae4bdafd1cc2724c09baccd2502 +Merge: e8445a15a1 c9bb0818f7 +Author: Johan Haals +Date: Mon Jan 31 10:54:41 2022 +0100 + + Merge pull request #9225 from RoadieHQ/softer-proxy-startup + + allow backend to start if proxy target is not set + +commit e8445a15a1d64d59ee84ac1ad304eb6eb7cb0e62 +Merge: 20d9579a88 c710467ba2 +Author: Johan Haals +Date: Mon Jan 31 10:39:57 2022 +0100 + + Merge pull request #9270 from backstage/freben/callouts + + fix callouts + +commit 93b8b48fbb5a74b6f99a1a6ea3e92002db5875ce +Author: Johan Haals +Date: Mon Jan 31 10:37:15 2022 +0100 + + fix invalid yarn-path + + Signed-off-by: Johan Haals + +commit 20d9579a880ceedf600f84e115cd4dc81e8f132b +Merge: 53b6379758 7fdd461135 +Author: Patrik Oldsberg +Date: Mon Jan 31 10:34:19 2022 +0100 + + Merge pull request #9256 from backstage/rugvip/emergency + + docs,workflows: updates and new branch name for emergency release flow + +commit 2bed92aca8290731d7afeeee809944a6b475a778 +Author: Johan Haals +Date: Mon Jan 31 10:33:18 2022 +0100 + + update yarn-path + + Signed-off-by: Johan Haals + +commit 7f84a4b60606fc535eedf81b7a914df60078bd93 +Author: Johan Haals +Date: Mon Jan 31 10:15:17 2022 +0100 + + storybook: Add [npm|yarn]rc files + + Signed-off-by: Johan Haals + +commit c710467ba2fa3c95cb322ed51d49506f7443ff26 +Author: Fredrik Adelöw +Date: Mon Jan 31 10:06:45 2022 +0100 + + fix callouts + + Signed-off-by: Fredrik Adelöw + +commit 53b637975847a3cada09b401457491655bc5bd74 +Merge: 8caa691a0b 9a7f28779a +Author: Fredrik Adelöw +Date: Mon Jan 31 10:01:14 2022 +0100 + + Merge pull request #9251 from backstage/freben/catalog-api-docs + + add catalog API docs + +commit 9a7f28779ab80a13cf3309ee68b7180440546d5f +Author: Fredrik Adelöw +Date: Sat Jan 29 19:01:28 2022 +0100 + + add catalog API docs + + Signed-off-by: Fredrik Adelöw + +commit 8caa691a0be5fb61f4798df5cc005432ad79aa76 +Merge: 554dfe8755 1b954933af +Author: Johan Haals +Date: Mon Jan 31 09:18:27 2022 +0100 + + Merge pull request #9189 from lunarway/feature/migrate-scaffolder-octokit + + Replace @octokit/rest with octokit in scaffolder-backend + +commit 554dfe8755610bebed534e167fe221a9554d3ed8 +Merge: c9eb0a866e 2687029a67 +Author: Johan Haals +Date: Mon Jan 31 09:02:05 2022 +0100 + + Merge pull request #9231 from backstage/better-backend-to-backend-auth-link + + docs: use backstage.io link to backend-to-backend auth docs + +commit c9eb0a866e855e568604bdf9e7db62aae2ec8492 +Merge: 2b06ccadb3 a65d71c584 +Author: Johan Haals +Date: Mon Jan 31 07:40:02 2022 +0100 + + Merge pull request #9261 from backstage/dependabot/npm_and_yarn/types/js-yaml-4.0.5 + + chore(deps-dev): bump @types/js-yaml from 4.0.1 to 4.0.5 + +commit 91faf87aaf51bde86ddd266000e028578c32915e +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Mon Jan 31 04:15:54 2022 +0000 + + chore(deps): bump camelcase-keys from 6.2.2 to 7.0.1 + + Bumps [camelcase-keys](https://github.com/sindresorhus/camelcase-keys) from 6.2.2 to 7.0.1. + - [Release notes](https://github.com/sindresorhus/camelcase-keys/releases) + - [Commits](https://github.com/sindresorhus/camelcase-keys/compare/v6.2.2...v7.0.1) + + --- + updated-dependencies: + - dependency-name: camelcase-keys + dependency-type: direct:production + update-type: version-update:semver-major + ... + + Signed-off-by: dependabot[bot] + +commit a65d71c584743a1f3ea580e5b6c5499be442197a +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Mon Jan 31 04:12:33 2022 +0000 + + chore(deps-dev): bump @types/js-yaml from 4.0.1 to 4.0.5 + + Bumps [@types/js-yaml](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/js-yaml) from 4.0.1 to 4.0.5. + - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) + - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/js-yaml) + + --- + updated-dependencies: + - dependency-name: "@types/js-yaml" + dependency-type: direct:development + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit e9ca4ff2bd25c009bbe9b35f5319141b29cab1e2 +Author: Eric Peterson +Date: Sun Jan 30 18:58:03 2022 +0100 + + Deprecate useless plugin export. + + Signed-off-by: Eric Peterson + +commit b4b678eb5af55d33094ba23630c6c63a587d5ab4 +Author: Eric Peterson +Date: Sun Jan 30 18:51:36 2022 +0100 + + Simpler queue mechanism in DeferredCapture. + + Signed-off-by: Eric Peterson + +commit 919a77845d4fcda70b3f3b84458e9f15dbb712a7 +Author: Eric Peterson +Date: Sun Jan 30 18:51:18 2022 +0100 + + Less magical custom hash mechanism. + + Signed-off-by: Eric Peterson + +commit 35d1d675b57b624fa51e5b04a82161b747059db5 +Author: Eric Peterson +Date: Tue Jan 25 18:15:50 2022 +0100 + + Document convention for supporting user identity in Analytics. + + Signed-off-by: Eric Peterson + +commit b40a0ccc4dc4a795acd13a33ace0c113f4b6f3fa +Author: Eric Peterson +Date: Sun Jan 16 18:34:40 2022 +0100 + + Initial identity-awareness implementation for GA. + + Signed-off-by: Eric Peterson + +commit 1b954933affc28b802c27fcdfed79183550930c6 +Author: Crevil +Date: Sun Jan 30 12:45:22 2022 +0100 + + Update changelog to be a patch + + Signed-off-by: Crevil + +commit 5321d7b553bf6996378d273523e4d4d52cef85a9 +Author: Elizabeth Stranack +Date: Fri Jan 28 14:53:34 2022 -0800 + + Updating api-report + + Signed-off-by: Elizabeth Stranack + +commit 7fdd46113542285e895227cb24f9d38bf0ac2ef3 +Author: Patrik Oldsberg +Date: Fri Jan 28 23:43:12 2022 +0100 + + docs,workflows: updates and new branch name for emergency release flow + + Signed-off-by: Patrik Oldsberg + +commit 2b06ccadb356891798390e4cbed56a8cdc68ff05 +Merge: 2923075f88 f0e9f82d0c +Author: Ben Lambert +Date: Fri Jan 28 20:35:34 2022 +0100 + + Merge pull request #9243 from backstage/blam/apply-create-app-fix + + Apply `create-app` fix to mainline branch + +commit f0e9f82d0cf3dbed4be728b9ff4229f6a4b114a1 +Author: blam +Date: Fri Jan 28 16:55:52 2022 +0100 + + create-app: copying the changelog from 0.4.16 release + + Co-authored-by: Patrik Oldsberg + Signed-off-by: blam + +commit f27f5197e2511864817c168d08fbf7ab82751714 +Author: blam +Date: Fri Jan 28 16:49:05 2022 +0100 + + create-app: apply changeset for hot release + + Co-authored-by: Patrik Oldsberg + Signed-off-by: blam + +commit 24ef62048cf0925e00b21e1bf324eb6aeadddf93 +Author: Johan Haals +Date: Fri Jan 28 15:31:01 2022 +0100 + + create-app: add missing catalog-graph route + + Signed-off-by: Johan Haals + +commit 2923075f883198af15ef5a5695f22465ea4c8c6a +Merge: 4284c09e1c 9705c336a7 +Author: Patrik Oldsberg +Date: Fri Jan 28 16:33:18 2022 +0100 + + Merge pull request #9242 from backstage/mob/accindent + + scripts/prepare-release: properly indent and encode package.json + +commit 4284c09e1c3e5fb83bb97dc77a0ab3564de8553c +Merge: bf06801f94 cb28b6c1a9 +Author: Patrik Oldsberg +Date: Fri Jan 28 16:11:02 2022 +0100 + + Merge pull request #9241 from backstage/rugvip/vefix + + workflows/sync_release-manifest: skip v prefix in release manifests + +commit 9705c336a74faabca59dfeabf8480785dea129c0 +Author: Patrik Oldsberg +Date: Fri Jan 28 16:10:12 2022 +0100 + + scripts/prepare-release: properly indent and encode package.json + + Co-authored-by: blam + Signed-off-by: Patrik Oldsberg + +commit cb28b6c1a958e1722f1ec0f848fa36bb731bf8db +Author: Patrik Oldsberg +Date: Fri Jan 28 16:03:35 2022 +0100 + + workflows/sync_release-manifest: skip v prefix in release manifests + + Signed-off-by: Patrik Oldsberg + +commit bf06801f942c57f4f62413ca7a3a3cfcde3d74e2 +Merge: ef033f87c4 ae3b4ebb53 +Author: Johan Haals +Date: Fri Jan 28 15:50:15 2022 +0100 + + Merge pull request #9221 from recobe182/bie/improve-org-memberlist + + org: add relations.memberof filter to catalog api call in MembersListCard + +commit ef033f87c42434f70f4216121016943144e357a5 +Merge: 6d7530de74 0d582b00e9 +Author: Patrik Oldsberg +Date: Fri Jan 28 15:22:06 2022 +0100 + + Merge pull request #9236 from backstage/mob/version-updates + + scripts: updates to support new release process + +commit 2687029a67a4045cba290116db41760c774bfc75 +Author: MT Lewis +Date: Fri Jan 28 14:18:35 2022 +0000 + + create-app: add changeset for comment update + + Signed-off-by: MT Lewis + +commit 0d582b00e9defe7c366748a962f280e07e9988d5 +Author: Patrik Oldsberg +Date: Fri Jan 28 13:33:53 2022 +0100 + + package.json: set base version to 0.65 + + Co-authored-by: blam + Signed-off-by: Patrik Oldsberg + +commit c311773f4ffd99e0b0efdf8d2d4d26f85617fc77 +Author: Patrik Oldsberg +Date: Fri Jan 28 11:21:13 2022 +0100 + + scripts/create-github-release: mark prereleases as prerelease + + Co-authored-by: blam + Signed-off-by: Patrik Oldsberg + +commit f38b2b1b23690d0099273d18c1555e5ebef7abdf +Author: Patrik Oldsberg +Date: Fri Jan 28 11:16:52 2022 +0100 + + scripts: update release scripts to work with release version in package.json + + Co-authored-by: Johan Haals + Co-authored-by: blam + Co-authored-by: Fredrik Adelöw + Signed-off-by: Patrik Oldsberg + +commit e7586f3c83de784f53aa1f8f0f8ac40c3cf6b0c5 +Author: Andre Wanlin +Date: Fri Jan 28 08:14:57 2022 -0600 + + Added newline to end of script + + Signed-off-by: Andre Wanlin + +commit 60e5db75b476584c18b92dcc681f0f2a41aeca30 +Author: Patrik Oldsberg +Date: Fri Jan 28 15:10:36 2022 +0100 + + changesets: enter prerelease + + Signed-off-by: Patrik Oldsberg + +commit fcdf511b7ba68282fa6a427a2df2b6855be00c6c +Author: Andre Wanlin +Date: Fri Jan 28 08:08:43 2022 -0600 + + Added Orphan Clean Up script + + Signed-off-by: Andre Wanlin + +commit c9bb0818f77b8318eec213dbc0cf0475ec915f11 +Merge: 27e1ab0ec4 6d7530de74 +Author: Brian Fletcher +Date: Fri Jan 28 14:08:41 2022 +0000 + + Merge branch 'master' of github.com:backstage/backstage into allow-failing-proxies + +commit 6d7530de74722478afbd6339bc64404a7b6305d8 +Merge: 222980c1dd 66cea3a791 +Author: Patrik Oldsberg +Date: Fri Jan 28 15:06:17 2022 +0100 + + Merge pull request #9237 from backstage/mob/pretty-workflows + + workflows/sync_release-manifest: prettier + +commit 222980c1dd0bbb399c13e693a2f4c97aed45ef4b +Merge: 617dd982b0 7427a1d2c7 +Author: Patrik Oldsberg +Date: Fri Jan 28 15:04:52 2022 +0100 + + Merge pull request #9235 from backstage/mob/avengers + + scripts/assemble-manifest: gracefully skip tag redirect + +commit 66cea3a7914f8bc2e494fcad5ac155b0ac368235 +Author: Patrik Oldsberg +Date: Fri Jan 28 15:01:55 2022 +0100 + + workflows/sync_release-manifest: prettier + + Co-authored-by: blam + Signed-off-by: Patrik Oldsberg + +commit 7427a1d2c7f679005d689e6e1500bc2dc7e94485 +Author: Patrik Oldsberg +Date: Fri Jan 28 14:58:40 2022 +0100 + + scripts/assemble-manifest: gracefully skip tag redirect + + Co-authored-by: blam + Co-authored-by: Johan Haals + Signed-off-by: Patrik Oldsberg + +commit 27e1ab0ec4222dceaa054b8e54e9a85181dc68f5 +Author: Brian Fletcher +Date: Fri Jan 28 13:51:47 2022 +0000 + + addressing review suggestions + + Signed-off-by: Brian Fletcher + +commit 617dd982b08af9aceffd0e66b8ea39456e03e1dc +Merge: 677c25cf67 6efb1eb42d +Author: Johan Haals +Date: Fri Jan 28 14:39:48 2022 +0100 + + Merge pull request #9200 from tudi2d/9093-fix-page-height + + Differentiate between page height for mobile & desktop + +commit 677c25cf6742f98c89680382ac189723504ef3ac +Merge: 1c171329aa 2301c0a526 +Author: Patrik Oldsberg +Date: Fri Jan 28 14:26:55 2022 +0100 + + Merge pull request #9234 from backstage/mob/smol-fml + + workflows/sync_release-manifest: checkout backstage into backstage + +commit 2301c0a526a01249aa0db976a052ed815947a5b1 +Author: Patrik Oldsberg +Date: Fri Jan 28 14:25:26 2022 +0100 + + workflows/sync_release-manifest: checkout backstage into backstage + + Co-authored-by: blam + Signed-off-by: Patrik Oldsberg + +commit 1c171329aa6b70d2b8aa8bb93b1dcaeaa4cf5ef8 +Merge: 3d4f92ea3e a9ab9f439b +Author: Patrik Oldsberg +Date: Fri Jan 28 14:16:54 2022 +0100 + + Merge pull request #9233 from backstage/mob/smol-maybe + + workflows/sync_release-manifest: move install to top + +commit a9ab9f439bf26d20f0b118acba23e4a511227332 +Author: Patrik Oldsberg +Date: Fri Jan 28 14:15:25 2022 +0100 + + workflows/sync_release-manifest: move install to top + + Co-authored-by: blam + Signed-off-by: Patrik Oldsberg + +commit 3d4f92ea3ecdfe78657210fe2c0ad21e9daf5c7d +Merge: fc307f8da4 ed6503c75b +Author: Ben Lambert +Date: Fri Jan 28 14:04:57 2022 +0100 + + Merge pull request #9232 from backstage/mob/smol-fix + + workflows/sync_release-manifest: tweak install to make it work + +commit 6efb1eb42db39d0271c4981227207880822b12df +Author: Philipp Hugenroth +Date: Fri Jan 28 14:04:43 2022 +0100 + + Make SidebarPinStateContext import more clear + + Signed-off-by: Philipp Hugenroth + +commit ed6503c75b1ff5ed9687abc155359c544645b010 +Author: Patrik Oldsberg +Date: Fri Jan 28 14:03:47 2022 +0100 + + workflows/sync_release-manifest: tweak install to make it work + + Co-authored-by: blam + Signed-off-by: Patrik Oldsberg + +commit fd41c51452d27a97c55b9d2eff846ff3197e9081 +Author: MT Lewis +Date: Fri Jan 28 12:55:47 2022 +0000 + + docs: use backstage.io link to backend-to-backend auth docs + + There's rightfully been some confusion in various contexts about where + to find this documentation - switching to a fully qualified docs URL + should make it easier to find. + + Signed-off-by: MT Lewis + +commit fc307f8da44c3da267edabebab6eb9cc2cc1652d +Merge: d2a0f08d5c 3e79214e37 +Author: Patrik Oldsberg +Date: Fri Jan 28 13:55:17 2022 +0100 + + Merge pull request #9230 from backstage/mob/smol-install + + workflows/sync_release-manifest: support backfills + +commit 3e79214e37326397edc5adf9f8f63795c2648bcc +Author: Patrik Oldsberg +Date: Fri Jan 28 13:47:01 2022 +0100 + + workflows/sync_release-manifest: support backfills + + Co-authored-by: blam + Signed-off-by: Patrik Oldsberg + +commit ae3b4ebb5370d181bdc831f5917808729375fafd +Author: Paladetch Usavasereelert +Date: Fri Jan 28 21:21:04 2022 +0900 + + Update .changeset/nasty-pets-glow.md + + Signed-off-by: Paladetch Usavasereelert + + Co-authored-by: Johan Haals + +commit 947f1098ee24334c921ee25e568f42d84709eca7 +Author: Brian Fletcher +Date: Fri Jan 28 11:31:09 2022 +0000 + + adds details to the changeset + + Signed-off-by: Brian Fletcher + +commit 8030dc7dd5bc8fc55e87ed62083d3fce7da6b555 +Author: Brian Fletcher +Date: Fri Jan 28 11:28:14 2022 +0000 + + only skip proxies if configured to do so + + Signed-off-by: Brian Fletcher + +commit d2a0f08d5cfd0805c0b585f813b63ed238996032 +Merge: 1d52dbbd5e cef64b1561 +Author: Johan Haals +Date: Fri Jan 28 11:55:07 2022 +0100 + + Merge pull request #9190 from backstage/catalog-identity-client-token + + Use server token for catalog identity client + +commit 1d52dbbd5e3809faa6cc14c26ca172c93b145cf6 +Merge: 231edcc265 e39d88bd84 +Author: Johan Haals +Date: Fri Jan 28 11:40:12 2022 +0100 + + Merge pull request #9205 from backstage/rugvip/appdep + + create-app: switch to using a file target for app dependency + +commit 231edcc265b010ad9c1600a2ea4a5dc716b7e9ef +Merge: 1da8ae65a7 6e11259006 +Author: Johan Haals +Date: Fri Jan 28 11:38:22 2022 +0100 + + Merge pull request #9213 from backstage/blog/backstage-homepage-templates-tweaks + + Minor adjustments to backstage homepage templates blog post + +commit 1da8ae65a7f1c01d537a1038919e7a88e774414e +Merge: f72d08087c 341bbbfe09 +Author: Johan Haals +Date: Fri Jan 28 11:35:29 2022 +0100 + + Merge pull request #9215 from backstage/dependabot/npm_and_yarn/prop-types-15.8.1 + + chore(deps): bump prop-types from 15.8.0 to 15.8.1 + +commit f72d08087c7a15edfc01729a947c2572a63ea98e +Merge: 1351cd632d 28a5f9d0b1 +Author: Johan Haals +Date: Fri Jan 28 11:28:40 2022 +0100 + + Merge pull request #9214 from backstage/dependabot/npm_and_yarn/passport-0.5.2 + + chore(deps): bump passport from 0.4.1 to 0.5.2 + +commit 1351cd632d172b142d62dac2cb5de62399eeb7ae +Merge: dc7a17c6dd 787847a676 +Author: Johan Haals +Date: Fri Jan 28 11:28:02 2022 +0100 + + Merge pull request #9217 from backstage/dependabot/npm_and_yarn/microsoft/microsoft-graph-types-2.13.0 + + chore(deps): bump @microsoft/microsoft-graph-types from 2.11.0 to 2.13.0 + +commit dc7a17c6dd9d8d0f59359f4779d4d153124ec8ef +Merge: c49b7bd960 a1d2d3966f +Author: Johan Haals +Date: Fri Jan 28 11:10:13 2022 +0100 + + Merge pull request #9218 from backstage/dependabot/npm_and_yarn/graphql-16.3.0 + + chore(deps): bump graphql from 16.0.1 to 16.3.0 + +commit c49b7bd960d99bb81e7a7a0f6372205918a573fe +Merge: aaac5c72bc bee418a36b +Author: Johan Haals +Date: Fri Jan 28 11:01:09 2022 +0100 + + Merge pull request #8934 from kmikko/feat/catalog-import-customizations + + feat(catalog-import): Make catalog filename and branch customizable + +commit aaac5c72bc218a1e6494afe600cbe0481f95d7b7 +Merge: b1b16030e7 912b2d9925 +Author: Eric Peterson +Date: Fri Jan 28 10:57:46 2022 +0100 + + Merge pull request #9224 from backstage/docs/warn-about-public-kroki-server-default + + [Documentation] Note default ServerURL config in kroki how-to + +commit 332d3decb20de2127caed1f76852b9763e045d54 +Author: Brian Fletcher +Date: Fri Jan 28 09:53:38 2022 +0000 + + adds changeset + + Signed-off-by: Brian Fletcher + +commit 124520078c8ee3e78486d715b93f095a7710b522 +Author: Brian Fletcher +Date: Fri Jan 28 09:49:55 2022 +0000 + + allow backend to start if proxy target is not set + + Signed-off-by: Brian Fletcher + +commit 912b2d992532447c3337a6ab95a92ba8069345ba +Author: Eric Peterson +Date: Fri Jan 28 10:37:40 2022 +0100 + + Note default ServerURL config in kroki how-to + + Signed-off-by: Eric Peterson + +commit 341bbbfe093fc338b4e345278ea6d85591e3bbf4 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Fri Jan 28 09:41:44 2022 +0000 + + chore(deps): bump prop-types from 15.8.0 to 15.8.1 + + Bumps [prop-types](https://github.com/facebook/prop-types) from 15.8.0 to 15.8.1. + - [Release notes](https://github.com/facebook/prop-types/releases) + - [Changelog](https://github.com/facebook/prop-types/blob/main/CHANGELOG.md) + - [Commits](https://github.com/facebook/prop-types/compare/v15.8.0...v15.8.1) + + --- + updated-dependencies: + - dependency-name: prop-types + dependency-type: direct:production + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit 28a5f9d0b1505d7aa5ceba59cac7ee3f33cc2c66 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Fri Jan 28 09:40:00 2022 +0000 + + chore(deps): bump passport from 0.4.1 to 0.5.2 + + Bumps [passport](https://github.com/jaredhanson/passport) from 0.4.1 to 0.5.2. + - [Release notes](https://github.com/jaredhanson/passport/releases) + - [Changelog](https://github.com/jaredhanson/passport/blob/master/CHANGELOG.md) + - [Commits](https://github.com/jaredhanson/passport/compare/v0.4.1...v0.5.2) + + --- + updated-dependencies: + - dependency-name: passport + dependency-type: direct:production + update-type: version-update:semver-minor + ... + + Signed-off-by: dependabot[bot] + +commit 787847a676a3632f0494e021aff14205eca30882 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Fri Jan 28 09:37:47 2022 +0000 + + chore(deps): bump @microsoft/microsoft-graph-types from 2.11.0 to 2.13.0 + + Bumps [@microsoft/microsoft-graph-types](https://github.com/microsoftgraph/msgraph-typescript-typings) from 2.11.0 to 2.13.0. + - [Release notes](https://github.com/microsoftgraph/msgraph-typescript-typings/releases) + - [Commits](https://github.com/microsoftgraph/msgraph-typescript-typings/compare/2.11.0...2.13.0) + + --- + updated-dependencies: + - dependency-name: "@microsoft/microsoft-graph-types" + dependency-type: direct:production + update-type: version-update:semver-minor + ... + + Signed-off-by: dependabot[bot] + +commit a1d2d3966f9e9e4645b3233853b4b2bec1858aa0 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Fri Jan 28 09:25:38 2022 +0000 + + chore(deps): bump graphql from 16.0.1 to 16.3.0 + + Bumps [graphql](https://github.com/graphql/graphql-js) from 16.0.1 to 16.3.0. + - [Release notes](https://github.com/graphql/graphql-js/releases) + - [Commits](https://github.com/graphql/graphql-js/compare/v16.0.1...v16.3.0) + + --- + updated-dependencies: + - dependency-name: graphql + dependency-type: direct:production + update-type: version-update:semver-minor + ... + + Signed-off-by: dependabot[bot] + +commit b1b16030e7aebe8bd9a64f446db00a129144b51d +Merge: 32dd057f3d fac5f112b4 +Author: Ben Lambert +Date: Fri Jan 28 09:59:35 2022 +0100 + + Merge pull request #9216 from backstage/dependabot/npm_and_yarn/prom-client-14.0.1 + + chore(deps): bump prom-client from 13.2.0 to 14.0.1 + +commit 32dd057f3da1c249fb4920d0c3cbe7158c10790a +Merge: f97f527c25 c2e07bff68 +Author: Johan Haals +Date: Fri Jan 28 09:57:05 2022 +0100 + + Merge pull request #9113 from gabrie30/master + + Fixes: Change Events Unable to be Listed + +commit bee418a36b7db3d8ebdfa82e2d43cede76e8a11d +Author: Mikko Korhonen +Date: Tue Jan 25 11:36:18 2022 +0200 + + docs(catalog-import): update documentation about catalog filename customizations + + Signed-off-by: Mikko Korhonen + +commit 9735b00b6aa634d6541cf8ca7aa71c2b686f2eec +Author: Mikko Korhonen +Date: Tue Jan 25 11:21:53 2022 +0200 + + refactor(catalog-import): access catalog filename and branchname via hooks and helpers + + Signed-off-by: Mikko Korhonen + +commit 2734946be07d78d50b5dfcd211019d57442b3148 +Author: Mikko Korhonen +Date: Tue Jan 25 09:17:53 2022 +0200 + + test(catalog-import): migrate some tests to use TestApiProvider + + Signed-off-by: Mikko Korhonen + +commit e9b5f55a8b88adb7d4f589443d3f91c7f88ad40e +Author: Mikko Korhonen +Date: Thu Jan 20 11:49:35 2022 +0200 + + chore(catalog-import): generate api report + + Signed-off-by: Mikko Korhonen + +commit 2e8764b95fa2095b7b99eed7e5613fc819c3e73c +Author: Mikko Korhonen +Date: Fri Jan 14 11:43:11 2022 +0200 + + chore(catalog-import): add change set for import flow customizations + + Signed-off-by: Mikko Korhonen + +commit b40159ff3a2b73782ca240eb1e1039bca966b757 +Author: Mikko Korhonen +Date: Fri Jan 14 09:50:22 2022 +0200 + + chore(catalog-import): update README with relevant information how to customzie layout + Obsolete instructions were used, updated with up-to-date information from changelog + https://github.com/backstage/backstage/blob/master/plugins/catalog-import/CHANGELOG.md#minor-changes-1 + + Signed-off-by: Mikko Korhonen + +commit 4d17cc54248c3ba00caba3b3969a77969414b815 +Author: Mikko Korhonen +Date: Fri Jan 14 09:35:16 2022 +0200 + + test(catalog-import): update and tests for custom catalog filename and branch name + + Signed-off-by: Mikko Korhonen + +commit 307f17372e667f111a2fc1371102a9b407d1ba4b +Author: Mikko Korhonen +Date: Thu Jan 13 12:30:39 2022 +0200 + + feat(catalog-import): make catalog import branch name customizable + + Signed-off-by: Mikko Korhonen + +commit 1bd29cd9aecf9cef13476a69c17c5decc55b368d +Author: Mikko Korhonen +Date: Thu Jan 13 11:07:43 2022 +0200 + + feat(catalog-import): make catalog import example paths customizable + + Signed-off-by: Mikko Korhonen + +commit 581bed351228bd347c7326ea774527794a617893 +Author: Mikko Korhonen +Date: Wed Jan 12 17:04:00 2022 +0200 + + feat(catalog-import): read catalog filename from app config + + Signed-off-by: Mikko Korhonen + +commit b20709491de27d618b99d380bdcf1008bc28fea6 +Author: Mikko Korhonen +Date: Thu Jan 13 11:00:35 2022 +0200 + + feat(catalog-import): expose catalog filename to frontend + + Signed-off-by: Mikko Korhonen + +commit 826e279e6204b5cc6d9505eac98983694ff524e3 +Author: Mikko Korhonen +Date: Wed Jan 12 16:45:14 2022 +0200 + + feat(catalog-import): make catalog filename configurable + + Signed-off-by: Mikko Korhonen + +commit f97f527c25f7230c34660a5bec8c839774f89b48 +Merge: b681c6afaf 4e9cb235ff +Author: Johan Haals +Date: Fri Jan 28 08:00:16 2022 +0100 + + Merge pull request #9220 from backstage/dependabot/npm_and_yarn/aws-sdk-2.1065.0 + + chore(deps): bump aws-sdk from 2.922.0 to 2.1065.0 + +commit b681c6afaf9267a8cadc84aa4956d264065920ab +Merge: aa68de1970 66c30cfb96 +Author: Johan Haals +Date: Fri Jan 28 07:56:39 2022 +0100 + + Merge pull request #9219 from backstage/dependabot/npm_and_yarn/types/mime-types-2.1.1 + + chore(deps-dev): bump @types/mime-types from 2.1.0 to 2.1.1 + +commit ef86143c16c6e930d98f18f54243887a6f3db02d +Author: Paladetch Usavasereelert +Date: Fri Jan 28 15:48:16 2022 +0900 + + org: update changeset + + Signed-off-by: Paladetch Usavasereelert + +commit bd1a822c6d2c0f846e25afdcd86a80d4f60e30cb +Author: Paladetch Usavasereelert +Date: Fri Jan 28 15:40:07 2022 +0900 + + org: add relations.memberof filter to catalog api call + + Signed-off-by: Paladetch Usavasereelert + +commit 4e9cb235ffbe3c0b78082b8a1a3d412ce02411d9 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Fri Jan 28 04:31:39 2022 +0000 + + chore(deps): bump aws-sdk from 2.922.0 to 2.1065.0 + + Bumps [aws-sdk](https://github.com/aws/aws-sdk-js) from 2.922.0 to 2.1065.0. + - [Release notes](https://github.com/aws/aws-sdk-js/releases) + - [Changelog](https://github.com/aws/aws-sdk-js/blob/master/CHANGELOG.md) + - [Commits](https://github.com/aws/aws-sdk-js/compare/v2.922.0...v2.1065.0) + + --- + updated-dependencies: + - dependency-name: aws-sdk + dependency-type: direct:production + update-type: version-update:semver-minor + ... + + Signed-off-by: dependabot[bot] + +commit 66c30cfb96ccf66ea0be8fb8aa9ffd8201c7473e +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Fri Jan 28 04:25:39 2022 +0000 + + chore(deps-dev): bump @types/mime-types from 2.1.0 to 2.1.1 + + Bumps [@types/mime-types](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/mime-types) from 2.1.0 to 2.1.1. + - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) + - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/mime-types) + + --- + updated-dependencies: + - dependency-name: "@types/mime-types" + dependency-type: direct:development + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit fac5f112b4847418e9d8bc6623cc064a3297de02 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Fri Jan 28 04:18:50 2022 +0000 + + chore(deps): bump prom-client from 13.2.0 to 14.0.1 + + Bumps [prom-client](https://github.com/siimon/prom-client) from 13.2.0 to 14.0.1. + - [Release notes](https://github.com/siimon/prom-client/releases) + - [Changelog](https://github.com/siimon/prom-client/blob/master/CHANGELOG.md) + - [Commits](https://github.com/siimon/prom-client/compare/v13.2.0...v14.0.1) + + --- + updated-dependencies: + - dependency-name: prom-client + dependency-type: direct:production + update-type: version-update:semver-major + ... + + Signed-off-by: dependabot[bot] + +commit 6e112590065b5a194d4e7de7bc4f3bfbc4c0e53c +Author: Joe Porpeglia +Date: Thu Jan 27 17:49:46 2022 -0500 + + Minor adjustments to backstage homepage templates blog post + + Signed-off-by: Joe Porpeglia + Co-authored-by: Tim Hansen + +commit cef64b156177bfa0021cd65b3286ba05a40f9d1f +Author: Joe Porpeglia +Date: Thu Jan 27 16:18:43 2022 -0500 + + Add changesets + + Signed-off-by: Joe Porpeglia + +commit aa68de1970f1c43e3a562aa8bb4a23bb264127b5 +Merge: 7f9759da2f e4e6337567 +Author: Patrik Oldsberg +Date: Thu Jan 27 19:55:55 2022 +0100 + + Merge pull request #9206 from backstage/rugvip/fixnightly + + fix: nightly + +commit 1eb5d32112bfc76ceb5e347d9fac68bd2bbcbe98 +Author: Marcos Borges +Date: Thu Jan 27 15:52:36 2022 -0300 + + Added RCHLO and MIDWAY new adopters. + +commit 7f9759da2f870003c4292ffba4e7da0ea903b1d0 +Merge: cf1f9e8e05 fef8fc92c5 +Author: MT Lewis +Date: Thu Jan 27 18:17:08 2022 +0000 + + Merge pull request #9207 from backstage/pass-token-to-location-service + + catalog-backend: pass token to locationService in location routes + +commit fef8fc92c53de7f730f636889f68ed0c959c6153 +Author: MT Lewis +Date: Thu Jan 27 17:48:15 2022 +0000 + + catalog-backend: add some missing location unit tests + + Signed-off-by: MT Lewis + +commit 5bbffa60be3ce136c67f23181b8673bf4231e7e8 +Author: MT Lewis +Date: Thu Jan 27 16:26:43 2022 +0000 + + catalog-backend: pass token to locationService in location routes + + Signed-off-by: MT Lewis + +commit e4e63375673cfbdc18fe6de377c37e752a1e8bc4 +Author: Patrik Oldsberg +Date: Thu Jan 27 17:25:27 2022 +0100 + + fixnightly + + Signed-off-by: Patrik Oldsberg + +commit e39d88bd840b63945bba271f274f1eee6a9ccb7f +Author: Patrik Oldsberg +Date: Thu Jan 27 17:14:05 2022 +0100 + + create-app: switch backend dep to use file target + + Signed-off-by: Patrik Oldsberg + +commit 5f9916b2fd5b9ef10449f639473ecfee4bd4015e +Author: Patrik Oldsberg +Date: Thu Jan 27 17:11:42 2022 +0100 + + backend: switch example-app to be a file dep + + Signed-off-by: Patrik Oldsberg + +commit f99d31d38526990abce378b7a1e61d2b8dbb158e +Author: Karan Shah +Date: Thu Jan 27 15:23:42 2022 +0000 + + Improved how the API Bar looks + + Signed-off-by: Karan Shah + +commit cf1f9e8e05f5ac7838e0b480c1982da45b479ef6 +Merge: 601ccdbe7a 4c773ed25c +Author: Johan Haals +Date: Thu Jan 27 16:03:53 2022 +0100 + + Merge pull request #9201 from radoslaw-wielonski-nc/feat/api-subtitle-font-color + + Change subtitle of Header style to be more customizable + +commit 601ccdbe7a92c322a021d38899972d4f332e3057 +Merge: e628945d4b 80f510caee +Author: Johan Haals +Date: Thu Jan 27 15:41:17 2022 +0100 + + Merge pull request #9193 from msamad/msamad/optional-yarn-lock-parsing + + cli: Log warning if unable to parse yarn.lock + +commit 6b5b9f2f1ba0c30a3344b687b9160e41fcb2c8aa +Author: Karan Shah +Date: Thu Jan 27 14:21:27 2022 +0000 + + Rename useProjectSlug.ts to useProjectId.ts + + Signed-off-by: Karan Shah + +commit 7023e7066b4fd760686e3658724a61ba615bd6d1 +Author: Joe Porpeglia +Date: Wed Jan 26 17:20:08 2022 -0500 + + Remove todo + + Signed-off-by: Joe Porpeglia + +commit 55c0d91dfc5f837a19c9ed02e922337a68989c6a +Author: Joe Porpeglia +Date: Wed Jan 26 17:02:22 2022 -0500 + + Fix formatting + + Signed-off-by: Joe Porpeglia + +commit 2b028ae041a6c6e973838ef42e4b9cf1138fb842 +Author: Joe Porpeglia +Date: Wed Jan 26 17:00:22 2022 -0500 + + Update api reports + + Signed-off-by: Joe Porpeglia + +commit ae1bba9ebccae7c354b84b7a030dc0746cc598af +Author: Joe Porpeglia +Date: Wed Jan 26 16:31:33 2022 -0500 + + Use server token for catalog identity client + + Signed-off-by: Joe Porpeglia + +commit e628945d4bf7bf03a6eb7eb464630913be8effaa +Merge: 84397bbf7e 46795c9be0 +Author: Johan Haals +Date: Thu Jan 27 15:02:08 2022 +0100 + + Merge pull request #9148 from brethubbard/master + + Make linkTarget configurable in MarkdownContent component + +commit 84397bbf7ec88ffccae738fe32b2dd80dbf8d10c +Merge: 8b0da2d774 31efea171a +Author: Johan Haals +Date: Thu Jan 27 14:49:30 2022 +0100 + + Merge pull request #9137 from fcorti/fcorti-roadmap-002 + + Updating the roadmap page in the documentation to make it more readable + +commit 8b0da2d77456b3870bfee9c1c9fb355475800a14 +Merge: 493394603a 14472509a3 +Author: Fredrik Adelöw +Date: Thu Jan 27 14:24:39 2022 +0100 + + Merge pull request #9199 from backstage/freben/local-embedded-techdocs-app + + Move to a file dependency for embedded-techdocs-app + +commit 31efea171a7624ed0901bdcf56738661e516755c +Author: Francesco Corti +Date: Thu Jan 27 14:18:19 2022 +0100 + + Added the link to the table headers plus prietter run. + + Signed-off-by: Francesco Corti + +commit 14472509a3c06caf175a9351aad55609c8f849d4 +Author: Fredrik Adelöw +Date: Thu Jan 27 10:37:03 2022 +0100 + + Move to a file dependency for embedded-techdocs-app + + Signed-off-by: Fredrik Adelöw + +commit 493394603a2c47ea1d141159af9bc7bb84fac9e5 (tag: v0.65.0, tag: release-2022-01-27) +Merge: c46a99b045 406848efee +Author: Ben Lambert +Date: Thu Jan 27 13:01:40 2022 +0100 + + Merge pull request #9054 from backstage/changeset-release/master + + Version Packages + +commit 4c773ed25cc35b57408e0b37342fe77859e60b39 +Author: Radoslaw Wielonski +Date: Thu Jan 27 12:13:00 2022 +0100 + + docs: add changes to changeset + + Signed-off-by: Radoslaw Wielonski + +commit f465b63b7f06ace665351d603d3eed2391197763 +Author: Philipp Hugenroth +Date: Thu Jan 27 12:01:55 2022 +0100 + + Add changeset + + Signed-off-by: Philipp Hugenroth + +commit 406848efee6bfe01279f982526a98e6831b3d4ce +Author: github-actions[bot] +Date: Thu Jan 27 11:07:27 2022 +0000 + + Version Packages + +commit f3238a1a6c69f04a778bd9aef445c5eedf022ef9 +Author: Karan Shah +Date: Thu Jan 27 11:07:21 2022 +0000 + + Make the project slug into a project ID + + Signed-off-by: Karan Shah + +commit 3754cd42affb95367d8e59b00409ab353d18084d +Author: Radoslaw Wielonski +Date: Thu Jan 27 12:06:34 2022 +0100 + + feat(frontend): change API page subtitle style to use fontColor + + Signed-off-by: Radoslaw Wielonski + +commit c46a99b0457ece1b3b4342d3cd9e50b25e3b6083 +Merge: caab696f28 af4864b462 +Author: MT Lewis +Date: Thu Jan 27 11:01:51 2022 +0000 + + Merge pull request #8506 from backstage/authz-search-backend + + search: filter unauthorized results + +commit d937e32409db42d6dab3c1b5d7b0fc5d442edea5 +Author: Philipp Hugenroth +Date: Thu Jan 27 11:50:16 2022 +0100 + + Differentiate between page height for mobile & desktop + + Signed-off-by: Philipp Hugenroth + +commit 1c2ba8ccdeeb83298aa601878ea7d246bb1837a2 +Author: Karan Shah +Date: Thu Jan 27 10:47:41 2022 +0000 + + Added state to the top level for the real API + + Signed-off-by: Karan Shah + +commit caab696f28b3750db4dbe5a8ac556e2e09d68adb +Merge: 4fb3347370 26c7fca6be +Author: Ben Lambert +Date: Thu Jan 27 11:37:36 2022 +0100 + + Merge pull request #9191 from backstage/auth-backend/full-ref-subs + + Auth backend/full ref subs + +commit 4fb3347370b5b41340ab2f71bd8bd20fe29f9592 +Merge: 5148c4f29d efe02b86ff +Author: Patrik Oldsberg +Date: Thu Jan 27 10:54:36 2022 +0100 + + Merge pull request #9181 from backstage/rugvip/pretty + + docs: remove prettier configuration with proseWrap setting + +commit 80f510caee943fdb96a8683fe9948bf47a20d143 +Author: Mustansar Anwar ul Samad +Date: Thu Jan 27 12:03:26 2022 +1300 + + cli: Log warning if unable to parse yarn.lock + + Signed-off-by: Mustansar Anwar ul Samad + +commit 26c7fca6bef15460b06ce9039a75bbe699a2ec6f +Author: Patrik Oldsberg +Date: Thu Jan 27 10:52:00 2022 +0100 + + auth-backend: prettier + changeset tweak + + Signed-off-by: Patrik Oldsberg + +commit 5148c4f29dbdec0cc272c69833182df46f9adf40 +Merge: bc91e2563a bdc53553eb +Author: Patrik Oldsberg +Date: Thu Jan 27 10:20:22 2022 +0100 + + Merge pull request #9176 from backstage/dependabot/npm_and_yarn/react-text-truncate-0.17.0 + + chore(deps): bump react-text-truncate from 0.16.0 to 0.17.0 + +commit bc91e2563ae363b14032e94a48a7078544d71358 +Merge: f0086c9543 de9d7eba63 +Author: Ben Lambert +Date: Thu Jan 27 09:54:31 2022 +0100 + + Merge pull request #9167 from backstage/rugvip/host + + backend-common: fix config schema using address rather than host + +commit f0086c95432782da9fa8565e58e2d8efb50b0f82 +Merge: 9de03b24c6 138ea531e7 +Author: Patrik Oldsberg +Date: Thu Jan 27 09:22:17 2022 +0100 + + Merge pull request #9192 from colinrymer/patch-1 + + docs(tech-insights-backend): fix CHANGELOG.md typo + +commit 426aee1212bbce3c92c83daf597303d884193781 +Author: Crevil +Date: Thu Jan 27 08:51:36 2022 +0100 + + Update api report + + Signed-off-by: Crevil + +commit 9ef7e4800c135cdd7856ad6fc642ae8308abe145 +Merge: 2e0dbb0e50 9de03b24c6 +Author: Crevil +Date: Thu Jan 27 08:36:56 2022 +0100 + + Merge branch 'master' into feature/migrate-scaffolder-octokit + +commit 9de03b24c6d5f39a869154dca1e7bbd1854e2c4f +Merge: b4e6b82afd 62eea29f80 +Author: Johan Haals +Date: Thu Jan 27 08:00:14 2022 +0100 + + Merge pull request #9194 from backstage/dependabot/npm_and_yarn/types/testing-library__jest-dom-5.14.2 + + chore(deps-dev): bump @types/testing-library__jest-dom from 5.9.5 to 5.14.2 + +commit b4e6b82afde4844eabe7f46cdcb4b70a4821d3a9 +Merge: 9a671452ba 7e1ed725d3 +Author: Johan Haals +Date: Thu Jan 27 07:59:22 2022 +0100 + + Merge pull request #9195 from backstage/dependabot/npm_and_yarn/d3-shape-3.1.0 + + chore(deps): bump d3-shape from 3.0.1 to 3.1.0 + +commit 9a671452ba3b894ea6d29597f86447834ec97d78 +Merge: 867d44c82e 7dfe253dee +Author: Johan Haals +Date: Thu Jan 27 07:58:41 2022 +0100 + + Merge pull request #9196 from backstage/dependabot/npm_and_yarn/types/diff-5.0.2 + + chore(deps-dev): bump @types/diff from 5.0.1 to 5.0.2 + +commit 7dfe253deef62e96a845c465be1e77c9a615e5ae +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Thu Jan 27 04:11:15 2022 +0000 + + chore(deps-dev): bump @types/diff from 5.0.1 to 5.0.2 + + Bumps [@types/diff](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/diff) from 5.0.1 to 5.0.2. + - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) + - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/diff) + + --- + updated-dependencies: + - dependency-name: "@types/diff" + dependency-type: direct:development + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit 7e1ed725d37f276981984902603404d81071b53e +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Thu Jan 27 04:10:10 2022 +0000 + + chore(deps): bump d3-shape from 3.0.1 to 3.1.0 + + Bumps [d3-shape](https://github.com/d3/d3-shape) from 3.0.1 to 3.1.0. + - [Release notes](https://github.com/d3/d3-shape/releases) + - [Commits](https://github.com/d3/d3-shape/compare/v3.0.1...v3.1.0) + + --- + updated-dependencies: + - dependency-name: d3-shape + dependency-type: direct:production + update-type: version-update:semver-minor + ... + + Signed-off-by: dependabot[bot] + +commit 62eea29f807ddcbb9f2db1dfa95d652018eb1f56 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Thu Jan 27 04:08:58 2022 +0000 + + chore(deps-dev): bump @types/testing-library__jest-dom + + Bumps [@types/testing-library__jest-dom](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/testing-library__jest-dom) from 5.9.5 to 5.14.2. + - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) + - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/testing-library__jest-dom) + + --- + updated-dependencies: + - dependency-name: "@types/testing-library__jest-dom" + dependency-type: direct:development + update-type: version-update:semver-minor + ... + + Signed-off-by: dependabot[bot] + +commit 138ea531e79bdc8f4b79d2f85f71458a6cfa7cb7 +Author: Colin Rymer +Date: Wed Jan 26 17:58:47 2022 -0500 + + docs(tech-insights-backend): fix CHANGELOG.md typo + + Signed-off-by: Colin Rymer + +commit 53acf95366e500210cd2890b4e2d920e990ab7b3 +Author: elonj +Date: Wed Jan 26 17:55:05 2022 -0500 + + prettier in ADOPTERS.md file + + Signed-off-by: elonj + +commit 67349916ac6512eb5d74973cfa7043c4762998ea +Author: elonj +Date: Wed Jan 26 17:30:14 2022 -0500 + + changeset + + Signed-off-by: elonj + +commit 80b9027eb74f791730983bf59ce701e215aa87f7 +Author: elonj +Date: Wed Jan 26 17:27:32 2022 -0500 + + oidc and googld subs will be full entity refs + + Signed-off-by: elonj + +commit 867d44c82e997906699718e1c1da11c71e17a868 +Merge: 6947170cc6 16b925ed4d +Author: Patrik Oldsberg +Date: Wed Jan 26 21:58:34 2022 +0100 + + Merge pull request #9149 from tradcliffe-expediagroup/tradcliffe/add-input-option-github-actions-dispatch + + Tradcliffe/add input option GitHub actions dispatch + +commit 2e0dbb0e50e2774c70ce819c774a6b5eebcfcc25 +Author: Crevil +Date: Wed Jan 26 20:46:09 2022 +0100 + + Replace @octokit/rest in scaffolder-backend + + Signed-off-by: Crevil + +commit c2e07bff68a42046993d08674bd443d485d9bd21 +Author: Jay Gabriels +Date: Wed Jan 26 11:52:34 2022 -0800 + + Add missing key + + Signed-off-by: Jay Gabriels + +commit 65ea82efdf8e71a11a73000a48076322a4fe6521 +Author: Jay Gabriels +Date: Wed Jan 26 11:50:57 2022 -0800 + + Add Link component back in + + Signed-off-by: Jay Gabriels + +commit af4864b46234114f21aef03f5c4f3caf8151f93a +Author: MT Lewis +Date: Wed Jan 26 19:38:01 2022 +0000 + + search-backend: deduplicate authorize calls + + Signed-off-by: MT Lewis + +commit 46795c9be04502522a0f4c2075c731f6850a720b +Author: Bret Hubbard +Date: Wed Jan 26 11:54:18 2022 -0700 + + update api report + + Signed-off-by: Bret Hubbard + +commit a681cb9c2fb48c90d29974e80b0af83a069617dc +Author: Bret Hubbard +Date: Mon Jan 24 14:40:27 2022 -0700 + + add changeset + + Signed-off-by: Bret Hubbard + +commit 6947170cc6679e8725b121330543cdc5b7cbd8dd +Merge: 0e20b65be3 7f77248247 +Author: Patrik Oldsberg +Date: Wed Jan 26 19:46:18 2022 +0100 + + Merge pull request #9169 from cmpadden/gh-workflow-cancel-prior-runs + + Cancel in-progress GitHub workflow run on a subsequent pull-request pushes + +commit 16b925ed4d3c09dd88c25a22b10d77bd3b23ce99 +Author: Patrik Oldsberg +Date: Wed Jan 26 19:00:18 2022 +0100 + + Update eight-tools-sleep.md + + Signed-off-by: Patrik Oldsberg + +commit 0e20b65be3d6443d4cf8495cf4a38faf6f8e696f +Merge: 9e3a06f09f 2d6c0902f7 +Author: Fredrik Adelöw +Date: Wed Jan 26 18:57:27 2022 +0100 + + Merge pull request #9185 from backstage/freben/dedup-webpoo + + dedup webpack and babel + +commit 9e3a06f09fc2a43d24fc966528b374dc1e02c2fe +Merge: 7dea56b3ee 3847c6f7a7 +Author: Patrik Oldsberg +Date: Wed Jan 26 18:43:33 2022 +0100 + + Merge pull request #8983 from alefcarlos/feat/plugin-dotnet-backend + + feat: added backend .NET scaffolder plugin + +commit 7dea56b3ee43f8ca90a6007f60e4e5c568ef6203 +Merge: 1aee8c207c 5760229149 +Author: Fredrik Adelöw +Date: Wed Jan 26 18:22:41 2022 +0100 + + Merge pull request #9183 from DanielTibbing/chore/update-ldap-docs + + Updated LDAP docs with Provider usage + +commit ce0c66668f72162a9b16e78e6365c89031dd3075 +Author: Jay Gabriels +Date: Wed Jan 26 08:24:35 2022 -0800 + + Update tall-rats-lie.md + + Signed-off-by: Jay Gabriels + +commit 7966d8c75c4b112e2dfbd1a2548eac2ca3d7445b +Author: Jay Gabriels +Date: Tue Jan 25 15:20:45 2022 -0800 + + Run prettier + + Signed-off-by: Jay Gabriels + +commit 2d6c0902f7e9aab98d43540856cdc5d588a3cd86 +Author: Fredrik Adelöw +Date: Wed Jan 26 16:55:21 2022 +0100 + + dedup webpack and babel + + Signed-off-by: Fredrik Adelöw + +commit 1aee8c207c82ecc9aa1e3e79571c7a2e752ea981 +Merge: 851d5cef9a 3b6e41009b +Author: Patrik Oldsberg +Date: Wed Jan 26 16:34:21 2022 +0100 + + Merge pull request #9136 from backstage/eide/auth-callback-urls + + [auth-backend]: Support callbackUrl when setting cookie configuration + +commit 5760229149e48acabcbb76c816b4275d0e3fe405 +Author: Daniel Tibbing +Date: Wed Jan 26 16:18:13 2022 +0100 + + chore: updated docs according to comments + + Signed-off-by: Daniel Tibbing + +commit 851d5cef9acdfab38d7f15ff7d4672c212c74796 +Merge: 214e91b216 0019cea06f +Author: Fredrik Adelöw +Date: Wed Jan 26 15:58:33 2022 +0100 + + Merge pull request #9184 from backstage/freben/later + + clarify that providers should be started AFTER the catalog + +commit 214e91b216fadb499d52074af523815a2e0ffc22 +Merge: 1787694435 b97a2460d5 +Author: Patrik Oldsberg +Date: Wed Jan 26 15:34:03 2022 +0100 + + Merge pull request #9121 from Sarabadu/fix-popover-focus + + removes `ignoreChildEvent`utility + +commit efe02b86ffb2c75f2c41557f85c3404647c376cf +Author: Patrik Oldsberg +Date: Wed Jan 26 14:35:06 2022 +0100 + + docs: tweak line wrapping of doc action + + Signed-off-by: Patrik Oldsberg + +commit 0019cea06f660b3d685f8fe949e14425cb5b8961 +Author: Fredrik Adelöw +Date: Wed Jan 26 14:08:53 2022 +0100 + + clarify that providers should be started AFTER the catalog + + Signed-off-by: Fredrik Adelöw + +commit 1787694435b2427c15e0a80a7f6b81be99333daf +Author: Emma Indal +Date: Wed Jan 26 13:56:01 2022 +0100 + + [Header] remove flex wrap and add max width of characters for subtitle (#9180) + +commit e3196c6dd8709db1f81e4cefb8c2d8607904f151 +Merge: c8f377eeb3 ab03f065c0 +Author: Johan Haals +Date: Wed Jan 26 13:26:01 2022 +0100 + + Merge pull request #9182 from backstage/jhaals/fix-missing-pkgs + + scripts: update package private check to handle undefined + +commit c8f377eeb3e18a0f298258d26bfb99a2fddff792 +Merge: b30cb642cc 15bac1d738 +Author: Patrik Oldsberg +Date: Wed Jan 26 12:47:07 2022 +0100 + + Merge pull request #9152 from backstage/dependabot/npm_and_yarn/react-markdown-8.0.0 + + chore(deps): bump react-markdown from 7.1.2 to 8.0.0 + +commit b30cb642cc8bb2662a33ead98431a60becae567e +Merge: 941211e2b3 05f0f44180 +Author: Patrik Oldsberg +Date: Wed Jan 26 12:34:06 2022 +0100 + + Merge pull request #9154 from backstage/dependabot/npm_and_yarn/remark-gfm-3.0.1 + + chore(deps): bump remark-gfm from 2.0.0 to 3.0.1 + +commit 941211e2b3c6dfb110943fb7f30368010523e8ed +Merge: 43e1fd5766 a03716d24b +Author: Patrik Oldsberg +Date: Wed Jan 26 12:18:16 2022 +0100 + + Merge pull request #9156 from backstage/dependabot/npm_and_yarn/types/node-cron-3.0.1 + + chore(deps-dev): bump @types/node-cron from 2.0.5 to 3.0.1 + +commit 43e1fd5766da38fbe67e5cf5066f022947bdcd91 +Merge: 4c48766266 dc46efa2cc +Author: Patrik Oldsberg +Date: Wed Jan 26 12:09:27 2022 +0100 + + Merge pull request #9179 from backstage/rugvip/wsproxy + + cli: use auto proto for ws url + +commit 4cad73ca7f05f9a9b0318bc2be793c173dc273be +Author: Patrik Oldsberg +Date: Wed Jan 26 11:22:45 2022 +0100 + + run prettier + + Signed-off-by: Patrik Oldsberg + +commit 8bfc214f9d2d3e9b17eeab142bbd8f99638c317e +Author: Patrik Oldsberg +Date: Wed Jan 26 11:19:42 2022 +0100 + + docs: remove prettier config + + Signed-off-by: Patrik Oldsberg + +commit fef86fe600acb6f9b3c9795ef927810af79be788 +Author: Daniel Tibbing +Date: Wed Jan 26 11:55:05 2022 +0100 + + Updated LDAP docs with Provider usage + + Signed-off-by: Daniel Tibbing + +commit 39a5bfb958f74f2a6d891c1946a1ec77decaa747 +Author: Karan Shah +Date: Wed Jan 26 10:53:42 2022 +0000 + + Improved the icons + + Signed-off-by: Karan Shah + +commit ab03f065c02a2689d95ac4aa01a2143f9f15a18c +Author: Johan Haals +Date: Wed Jan 26 11:50:20 2022 +0100 + + scripts: update package private check to handle undefined + + Signed-off-by: Johan Haals + +commit de5133035009e4d7b3f05f40566315b80802442d +Author: Karan Shah +Date: Wed Jan 26 10:42:20 2022 +0000 + + Added in FlexColumn.tsx + + Signed-off-by: Karan Shah + +commit 137d240bbcc7eca2a491652d572aece219a268bf +Author: Karan Shah +Date: Wed Jan 26 10:27:54 2022 +0000 + + Start moving towards 2 pages + + Signed-off-by: Karan Shah + +commit dc46efa2cc982ceffa501bd06d50b742aaee37e7 +Author: Patrik Oldsberg +Date: Wed Jan 26 11:08:34 2022 +0100 + + cli: use auto proto for ws url + + Signed-off-by: Patrik Oldsberg + +commit 4c48766266f69ad20d0e819e69064f9e7db546fb +Merge: 093720ecbc 1effad00de +Author: Patrik Oldsberg +Date: Wed Jan 26 10:55:49 2022 +0100 + + Merge pull request #9170 from backstage/rugvip/nowarn + + cli: fix app:serve dependency warning + +commit 093720ecbcc0073a4cf19a67a755d214f4546c63 +Merge: 0386a59755 da9cba20f2 +Author: Fredrik Adelöw +Date: Wed Jan 26 10:32:54 2022 +0100 + + Merge pull request #9171 from backstage/freben/providers + + add docs on how to add custom entity providers + +commit da9cba20f2f0bb5b39c57a484bb933fdd80dd6bd +Author: Fredrik Adelöw +Date: Tue Jan 25 23:05:13 2022 +0100 + + add docs on how to add custom entity providers + + Signed-off-by: Fredrik Adelöw + +commit 0386a5975542420ba28796dbbf664e9a04d82a3a +Merge: 3bbf6125c6 aee5b168f2 +Author: Johan Haals +Date: Wed Jan 26 09:17:09 2022 +0100 + + Merge pull request #9175 from backstage/dependabot/npm_and_yarn/date-io/luxon-2.13.1 + + chore(deps): bump @date-io/luxon from 2.11.1 to 2.13.1 + +commit bdc53553eb3c29ec66f68605ff3ffdc95a4f7e4e +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Wed Jan 26 04:19:42 2022 +0000 + + chore(deps): bump react-text-truncate from 0.16.0 to 0.17.0 + + Bumps [react-text-truncate](https://github.com/ShinyChang/react-text-truncate) from 0.16.0 to 0.17.0. + - [Release notes](https://github.com/ShinyChang/react-text-truncate/releases) + - [Changelog](https://github.com/ShinyChang/React-Text-Truncate/blob/master/CHANGELOG.md) + - [Commits](https://github.com/ShinyChang/react-text-truncate/commits) + + --- + updated-dependencies: + - dependency-name: react-text-truncate + dependency-type: direct:production + update-type: version-update:semver-minor + ... + + Signed-off-by: dependabot[bot] + +commit aee5b168f240c3681cb782e7f2ddffb56fe3cf77 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Wed Jan 26 04:18:15 2022 +0000 + + chore(deps): bump @date-io/luxon from 2.11.1 to 2.13.1 + + Bumps [@date-io/luxon](https://github.com/dmtrKovalenko/date-io) from 2.11.1 to 2.13.1. + - [Release notes](https://github.com/dmtrKovalenko/date-io/releases) + - [Commits](https://github.com/dmtrKovalenko/date-io/compare/v2.11.1...v2.13.1) + + --- + updated-dependencies: + - dependency-name: "@date-io/luxon" + dependency-type: direct:production + update-type: version-update:semver-minor + ... + + Signed-off-by: dependabot[bot] + +commit 1effad00defa154fa52acf816c75f45950d1985c +Author: Patrik Oldsberg +Date: Tue Jan 25 22:32:51 2022 +0100 + + cli: fix app:serve problem package condition + + Signed-off-by: Patrik Oldsberg + +commit 1b4ab0d44ccf2cfc193987d8c4b83725d250eba2 +Author: Patrik Oldsberg +Date: Tue Jan 25 22:19:29 2022 +0100 + + cli: fix app:serve dependency warning + + Signed-off-by: Patrik Oldsberg + +commit 7f77248247b116dfe6a57c055696fe25348c52b2 +Author: Colton Padden +Date: Tue Jan 25 15:49:12 2022 -0500 + + Cancel in-progress workflow runs on a subsequent pull-request pushes + + This will cancel any outstanding workflow runs when a commit is pushed + to the active pull request. This is done by configuring `concurrency` in + which only a single job or workflow in a concurrency `group` is active + at a single time. + + Signed-off-by: Colton Padden + +commit 957d7210e604a822420e61d05d74efe7016d8ddc +Author: Elizabeth Stranack +Date: Tue Jan 25 12:40:26 2022 -0800 + + Adding dependencies the hook + + Signed-off-by: Elizabeth Stranack + +commit de9d7eba63798b9e5b604c647f81b635af5b9f73 +Author: Patrik Oldsberg +Date: Tue Jan 25 20:40:43 2022 +0100 + + backend-common: fix config schema using address rather than host + + Signed-off-by: Patrik Oldsberg + +commit 10358e8b20f9397542ff61ddd3edb801f3372965 +Merge: 01b27d547c 9f394b231c +Author: MT Lewis +Date: Tue Jan 25 18:26:05 2022 +0000 + + Merge pull request #9115 from backstage/vinzscam/authz-search-backend + + Add AuthorizedSearchEngine tests + +commit 3847c6f7a713b2c3e8ab03089bfbd3f40560dea0 +Author: Alef +Date: Tue Jan 25 14:20:57 2022 -0300 + + docs: prettier + + Signed-off-by: Alef + +commit d249d6742df094a70e82e692f180e5d8644b98c8 +Author: Elizabeth Stranack +Date: Tue Jan 25 08:41:20 2022 -0800 + + Removing comment + + Signed-off-by: Elizabeth Stranack + +commit 3bbf6125c65842be59faba2a6a62892862e41ecf +Merge: 5cd8efd576 6efb76581c +Author: Otto Sichert +Date: Tue Jan 25 16:59:17 2022 +0100 + + Merge pull request #9164 from backstage/search/filter-timers + + Use fake timers to test search filter hooks debounce + +commit 9f394b231c1f270aca49a7d86cb3d52756dd8918 +Author: Vincenzo Scamporlino +Date: Tue Jan 25 16:31:29 2022 +0100 + + Remove unused type + + Signed-off-by: Vincenzo Scamporlino + +commit 074f36cc43fa8a3f6808ab5b931aaa496058895c +Author: Vincenzo Scamporlino +Date: Tue Jan 25 15:31:04 2022 +0100 + + Import DocumentTypeInfo from common + + Signed-off-by: Vincenzo Scamporlino + +commit 43f9d00c1efa6b5d8a1e0168d48970dafeb06b3c +Author: Vincenzo Scamporlino +Date: Tue Jan 25 00:25:10 2022 +0100 + + Add result-by-result filtering pagination test + + Signed-off-by: Vincenzo Scamporlino + +commit 77cbb318834d272a0aaed6d303fb98ae645c03d9 +Author: Vincenzo Scamporlino +Date: Mon Jan 24 23:34:03 2022 +0100 + + Fix comments + + Signed-off-by: Vincenzo Scamporlino + +commit e73ad9c89a91a9eab4dd516b7129ee7763fe89fd +Author: Vincenzo Scamporlino +Date: Fri Jan 21 22:49:31 2022 +0100 + + Add AuthorizedSearchEngine tests + + Signed-off-by: Vincenzo Scamporlino + +commit a03716d24b3cb92a9692f43868135c5513a680bd +Author: Patrik Oldsberg +Date: Tue Jan 25 16:07:35 2022 +0100 + + Delete dependabot-a3a694f.md + + Signed-off-by: Patrik Oldsberg + +commit 6efb76581ccd16427c8bb43590d8da8a093196c0 +Author: Otto Sichert +Date: Tue Jan 25 15:40:14 2022 +0100 + + Use fake timers to test search filter hooks debounce + + Signed-off-by: Otto Sichert + +commit c9010470f6933e7aff6c2e905144deea1a84ac2a +Author: Alef +Date: Tue Jan 25 11:40:01 2022 -0300 + + feat: added Alef to vocab + + Signed-off-by: Alef + +commit 01b27d547c74ee0f3a739bce4589ddbe004f5475 +Author: MT Lewis +Date: Tue Jan 25 13:23:40 2022 +0000 + + create-app: add changeset for new search-backend createRouter params + + Signed-off-by: MT Lewis + +commit bd895e5812fce50b1f682bd4915601b691c18b67 +Author: MT Lewis +Date: Tue Jan 25 13:17:08 2022 +0000 + + search-backend: update changeset to minor and add migration steps + + Signed-off-by: MT Lewis + +commit c7ce3076d9f71f8fa36a23a8623c7e5768df0610 +Author: MT Lewis +Date: Tue Jan 25 13:01:22 2022 +0000 + + search-backend: skip result-by-result filtering when possible + + Signed-off-by: MT Lewis + +commit 5cd8efd5766ebcc47115a485196abc41d0d18881 +Author: Emma Indal +Date: Tue Jan 25 15:17:32 2022 +0100 + + homepage templates blog post (#9158) + +commit 12b9fb8b34e6e688168ca81aa320c67ace056b96 +Author: Vincenzo Scamporlino +Date: Tue Jan 25 11:48:24 2022 +0000 + + search-backend: initialize variable rather than declaring type + + Signed-off-by: MT Lewis + +commit bdbacb3b9c531b14d8526d76866221555e4ef5b8 +Author: Vincenzo Scamporlino +Date: Tue Jan 25 11:46:58 2022 +0000 + + search-backend: handle missing type configuration in AuthorizedSearchEngine + + The search-backend router ensures that all requested types are + configured, but since we don't know how this search engine will + be used, it's good to properly handle the case where an + unconfigured type is supplied. + + Signed-off-by: MT Lewis + +commit 32e46459308db9f42c84b981f1e4434a157932b9 +Author: Vincenzo Scamporlino +Date: Tue Jan 25 11:44:56 2022 +0000 + + search-backend: validate page cursor when decoding + + Signed-off-by: MT Lewis + +commit 634abc1a41a678155ee1a7039bf3a1012348b362 +Author: MT Lewis +Date: Mon Jan 24 14:46:11 2022 +0000 + + search: move DocumentTypeInfo to search-common + + Signed-off-by: MT Lewis + +commit 1887a857c41f1d83296d9112ce3f72b5ff2225df +Author: MT Lewis +Date: Wed Jan 19 13:33:53 2022 +0000 + + reduce detail in changesets + + Co-authored-by: Eric Peterson + Signed-off-by: MT Lewis + +commit bbfbc755aa7dc3305ad816decf082547e968cf53 +Author: MT Lewis +Date: Mon Jan 17 18:26:25 2022 +0000 + + [wip] search-backend: result-by-result authorization + + To do: + - add tests for AuthorizedSearchEngine + - update router tests + - add diff to changeset + + Signed-off-by: MT Lewis + +commit 7da1b7c42af75757ebe7d9c3d9096c6b70284700 +Author: MT Lewis +Date: Mon Jan 17 18:22:34 2022 +0000 + + search-backend: add optional latency budget for authorized search backend + + Signed-off-by: MT Lewis + +commit 46823404570d5924cb878c6f06269f22e377a1ee +Author: MT Lewis +Date: Mon Jan 17 18:10:56 2022 +0000 + + techdocs-backend: support authorization in DefaultTechDocsCollator + + Signed-off-by: MT Lewis + +commit 4f5bde47e9a6b011b8b73bf701cd0f19a927782c +Author: MT Lewis +Date: Mon Jan 17 18:03:42 2022 +0000 + + catalog-backend: support authorization in DefaultCatalogCollator + + Signed-off-by: MT Lewis + +commit f6389e9e5d75dc30b5802d21828606aecf600fff +Author: MT Lewis +Date: Mon Jan 17 17:59:33 2022 +0000 + + search-backend-node: track document visibility permission by type in IndexBuilder + + Tracking permissions by collator ensures that all the documents of a + given type are authorized using the same permission. This is not + critical for result-by-result authorization, but will likely be a + useful constraint when adding in-engine permission filtering to + specific search engines in the future. + + Signed-off-by: MT Lewis + +commit 9a511968b1521fae919e2e05a2495ddfe7818be0 +Author: MT Lewis +Date: Mon Jan 17 17:57:09 2022 +0000 + + search-common: add optional visibilityPermission property to DocumentCollator type + + Signed-off-by: MT Lewis + +commit 96cbebc62956bf341eb809aff977642a749fd4c5 +Author: MT Lewis +Date: Mon Jan 17 17:48:07 2022 +0000 + + search-common: add optional request options with token to SearchEngine#query + + Signed-off-by: MT Lewis + +commit b2e918fa0bf6e8536f2bd216641426e4527dd9ba +Author: MT Lewis +Date: Mon Jan 17 17:46:07 2022 +0000 + + search-common: add optional resourceRef field to IndexableDocument type + + Signed-off-by: MT Lewis + +commit 2d96be2810ff00e4e380380867575a161b480514 +Merge: ea8158d252 232f66cfbf +Author: Johan Haals +Date: Tue Jan 25 13:34:16 2022 +0100 + + Merge pull request #9134 from backstage/mob/release-manifest + + github-actions: Add assemble release workflow + +commit ea8158d25217de9949ecf9c344ad32a36f789df4 +Merge: f5aac9b35c 1ddf6d9d5a +Author: Johan Haals +Date: Tue Jan 25 13:33:38 2022 +0100 + + Merge pull request #9159 from backstage/jhaals/cleanup-cli + + cli: Remove `remove-plugin` command and lax option + +commit 3cb377126d45335dc1a0694ee3c3500810efddb5 +Author: Karan Shah +Date: Tue Jan 25 10:50:21 2022 +0000 + + Improve the api bar components + + Signed-off-by: Karan Shah + +commit 4b794662c184fe1af07e3b413e33cc32cc8dd301 +Author: Karan Shah +Date: Tue Jan 25 10:40:40 2022 +0000 + + Added the UI ability to change APIs + + Signed-off-by: Karan Shah + +commit f5aac9b35c42d36bbba3fc82f28c62492105a179 +Merge: 4463b661af 3cd9123a32 +Author: Johan Haals +Date: Tue Jan 25 10:57:36 2022 +0100 + + Merge pull request #9155 from backstage/dependabot/npm_and_yarn/prettier-2.5.1 + + chore(deps-dev): bump prettier from 2.4.1 to 2.5.1 + +commit 1ddf6d9d5a6f8ca4dc01424d6af7e687af2aac54 +Author: Johan Haals +Date: Tue Jan 25 10:35:09 2022 +0100 + + Add changeset + + Signed-off-by: Johan Haals + +commit c52347c51f869939f0248e1afad465006a9a0dcf +Author: Johan Haals +Date: Tue Jan 25 10:32:01 2022 +0100 + + cli: Remove deprecated commands + + Signed-off-by: Johan Haals + +commit 973229906208d9c0e9bbb03c9ee83edecc211fab +Author: Eoghan McIlwaine +Date: Tue Jan 25 09:58:13 2022 +0100 + + Run prettier on changeset + + Signed-off-by: Eoghan McIlwaine + +commit 4463b661af016fb77e50cac3e2f684738306734d +Merge: 7081f1cb9f b82292a61a +Author: Patrik Oldsberg +Date: Tue Jan 25 09:17:43 2022 +0100 + + Merge pull request #9150 from backstage/dependabot/npm_and_yarn/html-webpack-plugin-5.5.0 + + chore(deps): bump html-webpack-plugin from 5.3.1 to 5.5.0 + +commit 3cd9123a32ebc051574911fc626cf6d4f5473426 +Author: Johan Haals +Date: Tue Jan 25 09:11:48 2022 +0100 + + chore: format with prettier + + Signed-off-by: Johan Haals + +commit 7081f1cb9fa0564aaffb16dafb9edeaff3929a87 +Merge: 06562229bb 296ad00b45 +Author: Fredrik Adelöw +Date: Tue Jan 25 08:48:34 2022 +0100 + + Merge pull request #9142 from backstage/freben/postcss-too + + bump postcss past CVE-2021-23382 + +commit cad2172d017e0a6b791ada9192851a5618aa972e +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Tue Jan 25 04:32:10 2022 +0000 + + chore(deps-dev): bump @types/node-cron from 2.0.5 to 3.0.1 + + Bumps [@types/node-cron](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node-cron) from 2.0.5 to 3.0.1. + - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) + - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node-cron) + + --- + updated-dependencies: + - dependency-name: "@types/node-cron" + dependency-type: direct:development + update-type: version-update:semver-major + ... + + Signed-off-by: dependabot[bot] + +commit beff00764f3b56793676abdd88b09d60b0776fb7 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Tue Jan 25 04:28:43 2022 +0000 + + chore(deps-dev): bump prettier from 2.4.1 to 2.5.1 + + Bumps [prettier](https://github.com/prettier/prettier) from 2.4.1 to 2.5.1. + - [Release notes](https://github.com/prettier/prettier/releases) + - [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md) + - [Commits](https://github.com/prettier/prettier/compare/2.4.1...2.5.1) + + --- + updated-dependencies: + - dependency-name: prettier + dependency-type: direct:development + update-type: version-update:semver-minor + ... + + Signed-off-by: dependabot[bot] + +commit 05f0f441806b251788a73cd79472753c2e676510 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Tue Jan 25 04:16:57 2022 +0000 + + chore(deps): bump remark-gfm from 2.0.0 to 3.0.1 + + Bumps [remark-gfm](https://github.com/remarkjs/remark-gfm) from 2.0.0 to 3.0.1. + - [Release notes](https://github.com/remarkjs/remark-gfm/releases) + - [Commits](https://github.com/remarkjs/remark-gfm/compare/2.0.0...3.0.1) + + --- + updated-dependencies: + - dependency-name: remark-gfm + dependency-type: direct:production + update-type: version-update:semver-major + ... + + Signed-off-by: dependabot[bot] + +commit 15bac1d738f0bda0550717dddeb82274376205f9 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Tue Jan 25 04:13:08 2022 +0000 + + chore(deps): bump react-markdown from 7.1.2 to 8.0.0 + + Bumps [react-markdown](https://github.com/remarkjs/react-markdown) from 7.1.2 to 8.0.0. + - [Release notes](https://github.com/remarkjs/react-markdown/releases) + - [Changelog](https://github.com/remarkjs/react-markdown/blob/main/changelog.md) + - [Commits](https://github.com/remarkjs/react-markdown/compare/7.1.2...8.0.0) + + --- + updated-dependencies: + - dependency-name: react-markdown + dependency-type: direct:production + update-type: version-update:semver-major + ... + + Signed-off-by: dependabot[bot] + +commit b82292a61add916e6804267a24ce14f933317710 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Tue Jan 25 04:07:28 2022 +0000 + + chore(deps): bump html-webpack-plugin from 5.3.1 to 5.5.0 + + Bumps [html-webpack-plugin](https://github.com/jantimon/html-webpack-plugin) from 5.3.1 to 5.5.0. + - [Release notes](https://github.com/jantimon/html-webpack-plugin/releases) + - [Changelog](https://github.com/jantimon/html-webpack-plugin/blob/main/CHANGELOG.md) + - [Commits](https://github.com/jantimon/html-webpack-plugin/compare/v5.3.1...v5.5.0) + + --- + updated-dependencies: + - dependency-name: html-webpack-plugin + dependency-type: direct:production + update-type: version-update:semver-minor + ... + + Signed-off-by: dependabot[bot] + +commit 9af88acb7b822f5eacee0d08be1feac1f8965923 +Author: Jay Gabriels +Date: Mon Jan 24 14:25:03 2022 -0800 + + Update README.md + + Signed-off-by: Jay Gabriels + +commit b1b5639b867f56e7d17fc2671c0b7c56fdbe6590 +Author: Tracey +Date: Mon Jan 24 14:01:17 2022 -0800 + + shortened description, added type to workflowInputs and fixed line issue in handler + + Signed-off-by: Tracey + +commit ba1d635ebb3d84ce709a421b545a9235245c7207 +Author: Bret Hubbard +Date: Mon Jan 24 14:36:58 2022 -0700 + + software-templates: configure links in markdown to open in new tab + + Signed-off-by: Bret Hubbard + +commit 1de71f97f774822414be6e1e827470d231822d34 +Author: Bret Hubbard +Date: Mon Jan 24 14:34:39 2022 -0700 + + Make linkTarget configurable for MarkdownContent + + Signed-off-by: Bret Hubbard + +commit ac2f1eeec0150b5036353d74dce6747e7a3598a1 +Author: Tracey +Date: Wed Jan 19 15:05:07 2022 -0700 + + comitting changeset + + Signed-off-by: Tracey + +commit 2cd42a7ae54bc6100272db7f7e6fa4ff1251c07e +Author: Tracey +Date: Wed Jan 19 14:57:06 2022 -0700 + + updated github:action:dispatch to include inputs to send to GitHub action + + Signed-off-by: Tracey + +commit 06562229bbc59791212baae09f45141652fa7a33 +Merge: 1ce0bf62b8 4ffc16b9c6 +Author: Patrik Oldsberg +Date: Mon Jan 24 21:54:38 2022 +0100 + + Merge pull request #8716 from awanlin/topic/use-definition-name + + Updated to add definition name support + +commit 76b74230bb9869228885db503a7f6caf9e21fb40 +Author: Eoghan McIlwaine +Date: Mon Jan 24 18:34:28 2022 +0100 + + Updated changeset after review comment + + Signed-off-by: Eoghan McIlwaine + +commit 75b0d21e89fc94bf1885e7c8bfd435dd5fdd289d +Author: Elizabeth Stranack +Date: Mon Jan 24 11:17:43 2022 -0800 + + Checking if description is set to use the Hover functionality + + Signed-off-by: Elizabeth Stranack + +commit 4444fa4050b9243613a76eb133d3f3ebf8113af3 +Author: Elizabeth Stranack +Date: Mon Jan 24 10:41:19 2022 -0800 + + Fixing code request changes + + Signed-off-by: Elizabeth Stranack + +commit 0efb45be626c9b59465aa47b6d1879809fa36bf7 +Author: Alef +Date: Mon Jan 24 15:20:56 2022 -0300 + + fix: naming + + Signed-off-by: Alef + +commit 1ce0bf62b847052b3a2735589b869642d9e5dc68 +Merge: 843f0347fb 250f4a5091 +Author: Patrik Oldsberg +Date: Mon Jan 24 18:26:51 2022 +0100 + + Merge pull request #9143 from backstage/Rugvip-patch-1 + + docs: fix typo in composability docs + +commit 843f0347fb49bc370fa1210155b60cf16ed528f1 +Merge: e47a70b601 1ce84943fb +Author: Fredrik Adelöw +Date: Mon Jan 24 18:00:14 2022 +0100 + + Merge pull request #9141 from backstage/freben/some-node + + get almost all of node-fetch past CVE-2022-0235 + +commit e47a70b60170e7817c5693729709cefb98113706 +Merge: 491409c014 019460a9af +Author: Fredrik Adelöw +Date: Mon Jan 24 17:59:42 2022 +0100 + + Merge pull request #9144 from backstage/freben/bump-json-schema + + bump json-schema past CVE-2021-3918 + +commit 491409c014798cd31242dd24f3264e3dc2b4c5dc +Merge: 15910d70a6 bbb6622752 +Author: Jussi Hallila +Date: Mon Jan 24 17:25:31 2022 +0100 + + Merge pull request #9094 from RoadieHQ/update-readme-tech-insights + + Update tech-insight BE README. + +commit 37092662cb39757d1ad0c1c7aa1c0d24096e3689 +Author: Eoghan McIlwaine +Date: Mon Jan 24 16:56:35 2022 +0100 + + Add changeset for the code removal + + Signed-off-by: Eoghan McIlwaine + +commit cbe4ab0d204149ac4e6d0019d0a931c81d6b6412 +Author: Eoghan McIlwaine +Date: Mon Jan 24 16:33:21 2022 +0100 + + Remove EntitySystemDiagramCard from api report + + Signed-off-by: Eoghan McIlwaine + +commit e7dd277232d2417e687b003c6a1e204a9e32dead +Author: Eoghan McIlwaine +Date: Mon Jan 24 16:29:24 2022 +0100 + + Remove EntitySystemDiagramCard code + + Signed-off-by: Eoghan McIlwaine + +commit 475f1926528c43b29fed62e13d84e33d98a63496 +Author: Eoghan McIlwaine +Date: Mon Jan 24 16:27:12 2022 +0100 + + Replace deprecated component on docs page + + Signed-off-by: Eoghan McIlwaine + +commit 15910d70a6bd1e1821c84e60430947c3de194b8c +Merge: 2488a81e20 6c59abc74e +Author: Patrik Oldsberg +Date: Mon Jan 24 17:09:25 2022 +0100 + + Merge pull request #8945 from backstage/identity/reliable-methods + + [Identity] Wait for implementation instead of throwing + +commit 019460a9afea62d25e74efadbab1202debf3f82b +Author: Fredrik Adelöw +Date: Mon Jan 24 17:02:39 2022 +0100 + + bump json-schema past CVE-2021-3918 + + Signed-off-by: Fredrik Adelöw + +commit 250f4a5091f3d090b4ab6eb92f4df34d27324340 +Author: Patrik Oldsberg +Date: Mon Jan 24 17:00:54 2022 +0100 + + docs: fix type in composability docs + + Signed-off-by: Patrik Oldsberg + +commit 296ad00b45624430c9b66916bac31a0e10498664 +Author: Fredrik Adelöw +Date: Mon Jan 24 16:55:38 2022 +0100 + + bump postcss past CVE-2021-23382 + + Signed-off-by: Fredrik Adelöw + +commit 1ce84943fb105a49c63020507d452593b2b2422e +Author: Fredrik Adelöw +Date: Mon Jan 24 16:40:30 2022 +0100 + + get almost all of node-fetch past CVE-2022-0235 + + Signed-off-by: Fredrik Adelöw + +commit 2488a81e20012eaa29129b8748c862a116528676 +Merge: 64700a10e4 8f370b038d +Author: Eric Peterson +Date: Mon Jan 24 16:36:55 2022 +0100 + + Merge pull request #8697 from backstage/search/filter-autocomplete + + Introduce a Component + +commit 232f66cfbf183fdce5494477f735fd899fe9afdb +Author: Johan Haals +Date: Mon Jan 24 16:36:50 2022 +0100 + + fix ref format + + Signed-off-by: Johan Haals + +commit c35e52cfcd204ac0d63bbd49829e5cc6a0900d84 +Author: Fredrik Adelöw +Date: Mon Jan 24 15:50:13 2022 +0100 + + switch to alpha + + Signed-off-by: Fredrik Adelöw + +commit e77926db8419d7d56acd92da218bbeaa27ac1ddd +Author: Johan Haals +Date: Mon Jan 24 16:24:53 2022 +0100 + + checkout tag, yarn install + + Signed-off-by: Johan Haals + +commit 6880c9ac5349057bc0b4ec848db238f27e05d411 +Author: Johan Haals +Date: Mon Jan 24 16:23:24 2022 +0100 + + ensure that tagPath exists + + Signed-off-by: Johan Haals + +commit 5045671d32c8a8fde99bf53170da36fbf7d67c7f +Author: Fredrik Adelöw +Date: Mon Jan 24 15:23:37 2022 +0100 + + remove the middleware part of context composition + + Signed-off-by: Fredrik Adelöw + +commit c78bf4acd49802ac3d6fa151f4e3c21e7167e2d3 +Author: Fredrik Adelöw +Date: Mon Jan 24 14:26:08 2022 +0100 + + only allow string keys for context values + + Signed-off-by: Fredrik Adelöw + +commit 95e702e50d40b9801fcd3d91a62edbd191b9747a +Author: Fredrik Adelöw +Date: Sun Nov 28 18:40:22 2021 +0100 + + ability to abort on controllers instead of just signals, plus more tests + + Signed-off-by: Fredrik Adelöw + +commit 5ae840e4f69445a2ef70433597eebac4666899ec +Author: Fredrik Adelöw +Date: Sat Nov 27 12:35:45 2021 +0100 + + Use the simpler abortSignal + deadline + value structure instead + + Signed-off-by: Fredrik Adelöw + +commit 50d039577a13ad8ff992b7be09c92e1c965a1e09 +Author: Fredrik Adelöw +Date: Fri Nov 12 16:54:20 2021 +0100 + + Introduce the Context to the backend again + + Signed-off-by: Fredrik Adelöw + +commit bbb6622752390992b7a1eeebf93bae1b63d810fd +Author: Jussi Hallila +Date: Fri Jan 21 16:24:34 2022 +0100 + + Update tech-insight BE README. + + Signed-off-by: Jussi Hallila + +commit 4ffc16b9c65ebbee67557a401112ac03c0d9876e +Author: Andre Wanlin +Date: Mon Jan 24 08:03:26 2022 -0600 + + Updated useAsync import + + Signed-off-by: Andre Wanlin + +commit 3efec40f7428501616c863f445f7bb7938f48823 +Merge: c1767859c3 64700a10e4 +Author: Andre Wanlin <67169551+awanlin@users.noreply.github.com> +Date: Mon Jan 24 07:57:21 2022 -0600 + + Merge branch 'backstage:master' into topic/use-definition-name + +commit 64700a10e461d344d7180b43af60ef2532a2bdb2 +Merge: 32b44f571d 8e09fc712e +Author: Johan Haals +Date: Mon Jan 24 14:29:52 2022 +0100 + + Merge pull request #9140 from erihanse/patch-1 + + Update writing-custom-actions.md + +commit 3b6e41009ba660494ecbf4a8200601f97e0d3e13 +Author: Marcus Eide +Date: Mon Jan 24 14:24:39 2022 +0100 + + Revert the cookiePath to include the handler suffix + + Signed-off-by: Marcus Eide + +commit 71a2fbaa58c0b6a7d496605b0a7b767dc416fcc0 +Author: Marcus Eide +Date: Mon Jan 24 14:22:54 2022 +0100 + + Simplify the cookiePath logic + + Signed-off-by: Marcus Eide + +commit 3b948a982e18b99359a9123d3bf332911f7e647c +Author: Johan Haals +Date: Mon Jan 24 14:21:53 2022 +0100 + + Move symlinking to script. Require valid semver range + + Signed-off-by: Johan Haals + +commit 8e09fc712ea16fc1f24589c4b815f4e1fe73dc9f +Author: Erik Aaron Hansen +Date: Mon Jan 24 13:43:09 2022 +0100 + + Update writing-custom-actions.md + + Signed-off-by: Erik Aaron Hansen + +commit 32b44f571d3839794a22ff726d5649a1c065e610 +Merge: 631807c5c5 9abb28bb22 +Author: Fredrik Adelöw +Date: Mon Jan 24 13:27:16 2022 +0100 + + Merge pull request #9091 from tudi2d/fix-component-type-comparison + + Fix component type comparison in Sidebar + +commit 8f370b038da073c9431f654e9dbfdf46661ef321 +Author: Eric Peterson +Date: Sat Jan 22 18:05:21 2022 +0100 + + Review feedback. + + Signed-off-by: Eric Peterson + +commit 1dbe63ec393027c2e4036ce435077a686eaa9f80 +Author: Eric Peterson +Date: Wed Jan 12 10:59:51 2022 +0100 + + Don't fallback to name on label to help clarify the different uses for each and allow label-less filters. + + Signed-off-by: Eric Peterson + +commit 21705f64326c1ab4d2ee57a348efd4cebf2ff747 +Author: Eric Peterson +Date: Wed Jan 12 10:21:28 2022 +0100 + + Document asyncValues/asyncDebounce props. + + Signed-off-by: Eric Peterson + +commit 3b0000669a5efee201b9de192ea41cd2b2cd842e +Author: Eric Peterson +Date: Wed Jan 5 14:57:07 2022 +0100 + + Test filter utility hooks. + + Signed-off-by: Eric Peterson + +commit 73811cfb33913311d7e82d9dc4b445ea471e0aed +Author: Eric Peterson +Date: Wed Jan 5 13:21:25 2022 +0100 + + Refactor default value logic into utility hook. + + Signed-off-by: Eric Peterson + +commit c84c404fc893bd8bf8aad538154de172437d997e +Author: Eric Peterson +Date: Mon Jan 3 18:36:30 2022 +0100 + + Initial tests. + + Signed-off-by: Eric Peterson + +commit 3e5400cfa8c396e823d3f587fee0731a22d7d6e5 +Author: Eric Peterson +Date: Mon Jan 3 16:03:50 2022 +0100 + + Minor docs updates. + + Signed-off-by: Eric Peterson + +commit 84208528d97aa11c6a06ac8b34bceefd087cc626 +Author: Eric Peterson +Date: Mon Jan 3 16:00:48 2022 +0100 + + Use precise imports for react-use hooks. + + Signed-off-by: Eric Peterson + +commit 4aca2a5307ada0105be43c4e587caf701e25ddda +Author: Eric Peterson +Date: Thu Dec 30 15:12:47 2021 +0100 + + Update search plugin API report and add changesets. + + Signed-off-by: Eric Peterson + +commit 86164e96ceb39a7bb268f6a3c3143a0a3b1feb18 +Author: Eric Peterson +Date: Thu Dec 30 15:05:26 2021 +0100 + + Add an entity filter just for TechDocs search. + + Signed-off-by: Eric Peterson + +commit bb20c30a7df700b7de047e74c7ab2c1c31398663 +Author: Eric Peterson +Date: Thu Dec 30 15:03:46 2021 +0100 + + Add initial implementation. + + Signed-off-by: Eric Peterson + +commit d4d48e1b1ae911d6ad3929891522efab47760269 +Author: Eric Peterson +Date: Thu Dec 30 14:58:44 2021 +0100 + + Add asyncValues and asyncDebounce to props and implement in select filter. + + Signed-off-by: Eric Peterson + +commit edfb46bc71e15d0fdb43b0dea6576f1be52c840b +Author: Eric Peterson +Date: Thu Dec 30 14:50:33 2021 +0100 + + Add an internal utility hook for handling async values. + + Signed-off-by: Eric Peterson + +commit 631807c5c53ae3bb8ba2022bb07b65f4b2428db4 +Merge: 180408d052 13162e81ca +Author: Patrik Oldsberg +Date: Mon Jan 24 12:40:21 2022 +0100 + + Merge pull request #9066 from mufaddal7/feature/EntitySystemDiagramCard + + Feature/entity system diagram card + +commit 180408d052d1ce3e1673f57f5215f02e1f5a1dd3 +Merge: b53a1afd67 228077143c +Author: Patrik Oldsberg +Date: Mon Jan 24 12:24:04 2022 +0100 + + Merge pull request #9135 from backstage/rugvip/bumpapi + + root: bump api extractor packages + +commit 9abb28bb228f0710d7e2b8334ba774dc01b2a72c +Author: Philipp Hugenroth +Date: Mon Jan 24 10:29:05 2022 +0100 + + Add changeset + + Signed-off-by: Philipp Hugenroth + +commit cf772fc02ecfa63b6bfe9d823d6f5d35f89bfe1a +Author: Philipp Hugenroth +Date: Mon Jan 24 10:18:41 2022 +0100 + + Fix unnecessary recreation of react element + + Signed-off-by: Philipp Hugenroth + +commit 41f4f2dd886f08111a9960bd021cfb12822647bf +Author: Philipp Hugenroth +Date: Fri Jan 21 14:45:33 2022 +0100 + + Fix component type comparison in Sidebar + + Signed-off-by: Philipp Hugenroth + +commit b53a1afd67f68ece5b84b1c08b85e317b8fbb88d +Merge: df93cec94c cc6ba5dd03 +Author: Patrik Oldsberg +Date: Mon Jan 24 11:57:44 2022 +0100 + + Merge pull request #9128 from backstage/dependabot/npm_and_yarn/puppeteer-13.1.1 + + chore(deps-dev): bump puppeteer from 10.4.0 to 13.1.1 + +commit df93cec94cdb74a9d38c5aa9b7286e4b850801db +Merge: 01f8acebd3 f30e334e2f +Author: Patrik Oldsberg +Date: Mon Jan 24 11:57:31 2022 +0100 + + Merge pull request #9126 from backstage/dependabot/npm_and_yarn/http-proxy-middleware-2.0.2 + + chore(deps): bump http-proxy-middleware from 2.0.1 to 2.0.2 + +commit 01f8acebd3ec8bf6cd3b0eef788dbf308d3743d5 +Merge: bec7ced88e 69ba7c1c07 +Author: Patrik Oldsberg +Date: Mon Jan 24 11:57:25 2022 +0100 + + Merge pull request #9124 from backstage/dependabot/npm_and_yarn/shx-0.3.4 + + chore(deps-dev): bump shx from 0.3.3 to 0.3.4 + +commit bec7ced88ec23e98a4d5ccf2403e1a4fac2f456b +Merge: b0b1d84c01 18201557a1 +Author: Patrik Oldsberg +Date: Mon Jan 24 11:57:19 2022 +0100 + + Merge pull request #9123 from backstage/dependabot/npm_and_yarn/mini-css-extract-plugin-2.5.2 + + chore(deps): bump mini-css-extract-plugin from 2.4.2 to 2.5.2 + +commit 19a9c341a7bf66ac91849bccd8230099840c2cf4 +Author: Johan Haals +Date: Mon Jan 24 11:55:24 2022 +0100 + + Output script path in error + + Signed-off-by: Johan Haals + +commit 06f0296caefd45ea07ca5d630c86ba565209f3e6 +Author: Johan Haals +Date: Mon Jan 24 11:54:55 2022 +0100 + + Rename workflow + + Signed-off-by: Johan Haals + +commit b0b1d84c01ccf56a706287aa48eba588edd607f6 +Merge: 52621b9755 0d5e846a78 +Author: Patrik Oldsberg +Date: Mon Jan 24 11:50:26 2022 +0100 + + Merge pull request #9065 from DavidZemon/feature/8920-custom-nunjucks-filters + + feat: [#8920] Add `nunjucksFilters` option for user-provided filters + +commit 55692c00366bb13138320b24f5a2641ef394accb +Author: Francesco Corti +Date: Mon Jan 24 11:47:03 2022 +0100 + + Checking the header of the page. + + Signed-off-by: Francesco Corti + +commit 0fde8397d26915256656b6d98e0861750cb21fb4 +Author: Francesco Corti +Date: Mon Jan 24 11:43:42 2022 +0100 + + Updating the roadmap page in the documentation to make it more readble. + + Signed-off-by: Francesco Corti + +commit b97a2460d5a10eebcc5005b592df7469b2a876a1 +Author: Juan Pablo Garcia Ripa +Date: Mon Jan 24 00:44:15 2022 +0100 + + removes `ignoreChildEvent`utility + + Signed-off-by: Juan Pablo Garcia Ripa + +commit 033493a8af8e8bc963ff99ed9e6ffbab57737e70 +Author: Marcus Eide +Date: Mon Jan 24 11:06:13 2022 +0100 + + Add changeset + + Signed-off-by: Marcus Eide + +commit 129dc2e099b1dcea5f2394dd8827d1d53945bbe4 +Author: Marcus Eide +Date: Mon Jan 24 11:04:17 2022 +0100 + + Update api-reports + + Signed-off-by: Marcus Eide + +commit 2bef25550d9d29b27315c5857665c331ec57e75a +Author: Marcus Eide +Date: Mon Jan 24 10:59:56 2022 +0100 + + Add tests + + Signed-off-by: Marcus Eide + +commit aec40d321d5d6a773428815763959a0d02818faa +Author: Marcus Eide +Date: Mon Jan 24 10:55:42 2022 +0100 + + Add support for callbackUrl when setting cookie configuration + + Signed-off-by: Marcus Eide + +commit 228077143c1a1d857a03be9efc13498c8da5f850 +Author: Patrik Oldsberg +Date: Mon Jan 24 11:19:50 2022 +0100 + + root: bump api extractor packages + + Signed-off-by: Patrik Oldsberg + +commit 18201557a12d5805e675cc61276d86541cbf057c +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Mon Jan 24 10:04:20 2022 +0000 + + chore(deps): bump mini-css-extract-plugin from 2.4.2 to 2.5.2 + + Bumps [mini-css-extract-plugin](https://github.com/webpack-contrib/mini-css-extract-plugin) from 2.4.2 to 2.5.2. + - [Release notes](https://github.com/webpack-contrib/mini-css-extract-plugin/releases) + - [Changelog](https://github.com/webpack-contrib/mini-css-extract-plugin/blob/master/CHANGELOG.md) + - [Commits](https://github.com/webpack-contrib/mini-css-extract-plugin/compare/v2.4.2...v2.5.2) + + --- + updated-dependencies: + - dependency-name: mini-css-extract-plugin + dependency-type: direct:production + update-type: version-update:semver-minor + ... + + Signed-off-by: dependabot[bot] + +commit ee3ee0701f76fde985be095cbaebd4f2c3f4420d +Author: Johan Haals +Date: Mon Jan 24 11:02:00 2022 +0100 + + github-actions: Add assemble release workflow + + Signed-off-by: Johan Haals + +commit f30e334e2f9ba2b23e9ce09c83fabe8264c584b7 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Mon Jan 24 09:48:09 2022 +0000 + + chore(deps): bump http-proxy-middleware from 2.0.1 to 2.0.2 + + Bumps [http-proxy-middleware](https://github.com/chimurai/http-proxy-middleware) from 2.0.1 to 2.0.2. + - [Release notes](https://github.com/chimurai/http-proxy-middleware/releases) + - [Changelog](https://github.com/chimurai/http-proxy-middleware/blob/master/CHANGELOG.md) + - [Commits](https://github.com/chimurai/http-proxy-middleware/compare/v2.0.1...v2.0.2) + + --- + updated-dependencies: + - dependency-name: http-proxy-middleware + dependency-type: direct:production + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit 69ba7c1c073c26f7d142508d843f24069039a78e +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Mon Jan 24 09:40:17 2022 +0000 + + chore(deps-dev): bump shx from 0.3.3 to 0.3.4 + + Bumps [shx](https://github.com/shelljs/shx) from 0.3.3 to 0.3.4. + - [Release notes](https://github.com/shelljs/shx/releases) + - [Changelog](https://github.com/shelljs/shx/blob/master/CHANGELOG.md) + - [Commits](https://github.com/shelljs/shx/compare/v0.3.3...v0.3.4) + + --- + updated-dependencies: + - dependency-name: shx + dependency-type: direct:development + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit cc6ba5dd039ac398202758bb1ea4e8045328c9c9 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Mon Jan 24 09:37:34 2022 +0000 + + chore(deps-dev): bump puppeteer from 10.4.0 to 13.1.1 + + Bumps [puppeteer](https://github.com/puppeteer/puppeteer) from 10.4.0 to 13.1.1. + - [Release notes](https://github.com/puppeteer/puppeteer/releases) + - [Changelog](https://github.com/puppeteer/puppeteer/blob/main/CHANGELOG.md) + - [Commits](https://github.com/puppeteer/puppeteer/compare/v10.4.0...v13.1.1) + + --- + updated-dependencies: + - dependency-name: puppeteer + dependency-type: direct:development + update-type: version-update:semver-major + ... + + Signed-off-by: dependabot[bot] + +commit 52621b97558806b1b63976dea1edcbcce10925e3 +Merge: 19bc43c41e 975f3b7bc2 +Author: Johan Haals +Date: Mon Jan 24 10:34:17 2022 +0100 + + Merge pull request #9131 from backstage/jhaals-patch-1 + + github-actions: Use SA token for checkout + +commit 19bc43c41ee60934b1e8dd2017cef258b441d87c +Merge: af10edb2ea 65cf1d5836 +Author: Fredrik Adelöw +Date: Mon Jan 24 10:33:56 2022 +0100 + + Merge pull request #9130 from backstage/freben/no-priv-changeset + + do not generate changesets for private repos + +commit 65cf1d5836938110d44b0f3a980c1632563fdecd +Author: Fredrik Adelöw +Date: Mon Jan 24 09:55:43 2022 +0100 + + do not generate changesets for private repos + + Signed-off-by: Fredrik Adelöw + +commit 975f3b7bc25a4a70c1b185022a840c489522beb3 +Author: Johan Haals +Date: Mon Jan 24 10:10:22 2022 +0100 + + github-actions: Use SA token for checkout + + Needed to fool github actions to run workflows when changes are made by a bot + +commit af10edb2ea85b151f94570de2e0deba884ab6d43 +Merge: afabc97f6c 321bbd2722 +Author: Patrik Oldsberg +Date: Mon Jan 24 10:05:30 2022 +0100 + + Merge pull request #9114 from backstage/revert-9105-dependabot/npm_and_yarn/material-table/core-4.3.19 + + Revert "chore(deps): bump @material-table/core from 3.1.0 to 4.3.19" + +commit afabc97f6cf6a37d61a43976beca83308deaa0c8 +Merge: ec374168ee b09dd8f43b +Author: Johan Haals +Date: Mon Jan 24 08:19:07 2022 +0100 + + Merge pull request #9122 from backstage/dependabot/npm_and_yarn/gitbeaker/node-35.1.0 + + chore(deps): bump @gitbeaker/node from 34.6.0 to 35.1.0 + +commit ec374168ee6dad9af2fef135d57eeafaa52cfb71 +Merge: 0127060226 7346b5fb96 +Author: Johan Haals +Date: Mon Jan 24 08:17:40 2022 +0100 + + Merge pull request #9125 from backstage/dependabot/npm_and_yarn/rc-progress-3.2.4 + + chore(deps): bump rc-progress from 3.1.4 to 3.2.4 + +commit 7346b5fb96b86c3289b59c9ba227381b5bc0657b +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Mon Jan 24 04:30:33 2022 +0000 + + chore(deps): bump rc-progress from 3.1.4 to 3.2.4 + + Bumps [rc-progress](https://github.com/react-component/progress) from 3.1.4 to 3.2.4. + - [Release notes](https://github.com/react-component/progress/releases) + - [Changelog](https://github.com/react-component/progress/blob/master/CHANGELOG.md) + - [Commits](https://github.com/react-component/progress/compare/v3.1.4...v3.2.4) + + --- + updated-dependencies: + - dependency-name: rc-progress + dependency-type: direct:production + update-type: version-update:semver-minor + ... + + Signed-off-by: dependabot[bot] + +commit b09dd8f43b0158e8274fcd3d12b36f34880ec1a5 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Mon Jan 24 04:13:38 2022 +0000 + + chore(deps): bump @gitbeaker/node from 34.6.0 to 35.1.0 + + Bumps [@gitbeaker/node](https://github.com/jdalrymple/gitbeaker) from 34.6.0 to 35.1.0. + - [Release notes](https://github.com/jdalrymple/gitbeaker/releases) + - [Changelog](https://github.com/jdalrymple/gitbeaker/blob/master/CHANGELOG.md) + - [Commits](https://github.com/jdalrymple/gitbeaker/compare/34.6.0...35.1.0) + + --- + updated-dependencies: + - dependency-name: "@gitbeaker/node" + dependency-type: direct:production + update-type: version-update:semver-major + ... + + Signed-off-by: dependabot[bot] + +commit c1767859c3d892e3538373c19652a2c5d69f320f +Author: Andre Wanlin +Date: Sat Jan 22 15:29:53 2022 -0600 + + Updated to patch + + Signed-off-by: Andre Wanlin + +commit 520007b8b084a111b90d7ca207601621e5d40420 +Author: Andre Wanlin +Date: Sat Jan 22 15:28:39 2022 -0600 + + Changes based on latest round of feedback + + Signed-off-by: Andre Wanlin + +commit 539d686c937d3d9a02760289a30124f09aea4d84 +Author: Andre Wanlin +Date: Fri Jan 7 09:40:54 2022 -0600 + + Changes based on feedback + + Signed-off-by: Andre Wanlin + +commit 0f104ecc4dd0c715c02c4fad5962e6b430a9703d +Author: Andre Wanlin +Date: Fri Dec 31 13:11:46 2021 -0600 + + Updated to add definition name support + + Signed-off-by: Andre Wanlin + +commit 6c59abc74e2148c9e794e990cfd298528fbbc821 +Author: Eric Peterson +Date: Wed Jan 19 10:31:05 2022 +0100 + + Revert app manager protections and let identity API hang. + + Signed-off-by: Eric Peterson + +commit f959c227877f5c4d1fc72037f64bbcb1cb8bac3f +Author: Eric Peterson +Date: Sat Jan 15 17:28:49 2022 +0100 + + Changeset. + + Signed-off-by: Eric Peterson + +commit 76aebab211655eaf1a79c74ace04ea09edf0095d +Author: Eric Peterson +Date: Sat Jan 15 17:18:34 2022 +0100 + + Test isolated ApiProvider behavior for SignInPage component. + + Signed-off-by: Eric Peterson + +commit 599f2929f2311fbefb2d62886882809d45e8d9ea +Author: Eric Peterson +Date: Fri Jan 14 21:58:51 2022 +0100 + + Hang identity api methods until implementation is set. + + Signed-off-by: Eric Peterson + +commit 0127060226100ca23d8af5070deb01e07727eb48 +Merge: f64256ef15 977c87a905 +Author: Patrik Oldsberg +Date: Sat Jan 22 12:31:56 2022 +0100 + + Merge pull request #9117 from backstage/rugvip/gcprrd + + gcp-projects: pin react-router-dom version + +commit 977c87a905810f9854036ccc27cce06953b0a3ba +Author: Patrik Oldsberg +Date: Sat Jan 22 11:28:57 2022 +0100 + + gcp-projects: pin react-router-dom version + + Signed-off-by: Patrik Oldsberg + +commit 0d5e846a78f2fb9a2c1f7bc9c15f0b3e942b5ec9 +Author: David Zemon +Date: Fri Jan 21 15:16:33 2022 -0600 + + chore: [#8920] Add changeset + + Signed-off-by: David Zemon + +commit 321bbd272295e57715fd0d61094982ccaba5edfa +Author: Patrik Oldsberg +Date: Fri Jan 21 22:21:29 2022 +0100 + + Revert "chore(deps): bump @material-table/core from 3.1.0 to 4.3.19" + + Signed-off-by: Patrik Oldsberg + +commit f64256ef153139c45bbe974c613530c97130ae89 +Merge: 872ceccf44 a9bede36e1 +Author: Patrik Oldsberg +Date: Fri Jan 21 22:19:58 2022 +0100 + + Merge pull request #9112 from dclayton-godaddy/master + + docs(plugins): add GH OAuth to github-actions docs + +commit fb247b39d842800736c039d6b463fe428aa56389 +Author: Jay Gabriels +Date: Fri Jan 21 12:29:10 2022 -0800 + + Add test + + Signed-off-by: Jay Gabriels + +commit 5a459626bc419eb56840f1e107968c8e6b01c661 +Author: Jay Gabriels +Date: Fri Jan 21 12:19:15 2022 -0800 + + Create tall-rats-lie.md + + Signed-off-by: Jay Gabriels + +commit b9b98f1b92c76495dc787030624a37115e17f788 +Author: Jay Gabriels +Date: Fri Jan 21 11:55:35 2022 -0800 + + Update ChangeEventListItem.tsx + + Signed-off-by: Jay Gabriels + +commit b95ee4667cd728668a66c76c3f05ad6f1f3a2a9e +Author: Jay Gabriels +Date: Fri Jan 21 11:54:06 2022 -0800 + + Update ChangeEventListItem.tsx + + Signed-off-by: Jay Gabriels + +commit 872ceccf446718a5d4edff4a19115a3128d61511 +Merge: 565b6b6c3a c372a5032f +Author: Patrik Oldsberg +Date: Fri Jan 21 20:56:56 2022 +0100 + + Merge pull request #9108 from backstage/dependabot/npm_and_yarn/jest-transform-yaml-1.0.0 + + chore(deps): bump jest-transform-yaml from 0.1.1 to 1.0.0 + +commit a9bede36e1d0521504ffd4f39377ad0d4719a17d +Author: Daniel Clayton +Date: Fri Jan 21 12:03:53 2022 -0700 + + docs(plugins): add GH OAuth to github-actions docs + In order for GitHub Actions plugin to work, the GitHub OAuth application must be created at the organization level. Updated docs to assist others that may run into any issues related to this. + + Signed-off-by: Daniel Clayton + +commit 565b6b6c3a8853222b0b43dc818c293db667d153 +Merge: 5ba2a080ba f3bb1e3509 +Author: Patrik Oldsberg +Date: Fri Jan 21 20:30:35 2022 +0100 + + Merge pull request #9104 from backstage/dependabot/npm_and_yarn/qs-6.10.3 + + chore(deps): bump qs from 6.10.1 to 6.10.3 + +commit 5ba2a080ba3e1971667a29378673989c8db36b2e +Merge: a7766d534f f882f87667 +Author: Patrik Oldsberg +Date: Fri Jan 21 20:09:26 2022 +0100 + + Merge pull request #9111 from backstage/dependabot/npm_and_yarn/graphiql-1.5.16 + + chore(deps): bump graphiql from 1.5.13 to 1.5.16 + +commit a7766d534f960aa10a01722a8aea3a5f21a48738 +Merge: 1ac18f3e34 3c04846633 +Author: Patrik Oldsberg +Date: Fri Jan 21 19:47:37 2022 +0100 + + Merge pull request #9105 from backstage/dependabot/npm_and_yarn/material-table/core-4.3.19 + + chore(deps): bump @material-table/core from 3.1.0 to 4.3.19 + +commit 1ac18f3e348948438cd82e26c04435e895d1b159 +Merge: 8b3089bf74 e46b6c581e +Author: Patrik Oldsberg +Date: Fri Jan 21 19:47:10 2022 +0100 + + Merge pull request #9106 from backstage/dependabot/npm_and_yarn/lint-staged-12.2.2 + + chore(deps-dev): bump lint-staged from 12.2.0 to 12.2.2 + +commit 8b3089bf74b39652952b08f9f36e5f7e35a34f96 +Merge: db89ff7e11 2f29261ab8 +Author: Patrik Oldsberg +Date: Fri Jan 21 19:45:49 2022 +0100 + + Merge pull request #9109 from backstage/dependabot/npm_and_yarn/types/google-protobuf-3.15.5 + + chore(deps-dev): bump @types/google-protobuf from 3.7.3 to 3.15.5 + +commit db89ff7e11f27432b929b94cfebe32345cecd892 +Merge: 087f137e81 5f05809b82 +Author: Patrik Oldsberg +Date: Fri Jan 21 19:45:11 2022 +0100 + + Merge pull request #9107 from backstage/dependabot/npm_and_yarn/supertest-6.2.2 + + chore(deps-dev): bump supertest from 6.1.6 to 6.2.2 + +commit f3bb1e350951afc6126c6a8b8af64ba569bcca36 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Fri Jan 21 18:24:45 2022 +0000 + + chore(deps): bump qs from 6.10.1 to 6.10.3 + + Bumps [qs](https://github.com/ljharb/qs) from 6.10.1 to 6.10.3. + - [Release notes](https://github.com/ljharb/qs/releases) + - [Changelog](https://github.com/ljharb/qs/blob/main/CHANGELOG.md) + - [Commits](https://github.com/ljharb/qs/compare/v6.10.1...v6.10.3) + + --- + updated-dependencies: + - dependency-name: qs + dependency-type: direct:production + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit 087f137e81b57d9ca227f29fe7c3d4fd07d71f1d +Merge: 0532fccb27 b56c8608ee +Author: Patrik Oldsberg +Date: Fri Jan 21 19:11:41 2022 +0100 + + Merge pull request #9096 from backstage/rugvip/bmp + + yarn.lock: bump css-what + +commit 0532fccb27481ba9f9b13e76bae0065f2a0e1265 +Merge: cb00780a60 bc876f419b +Author: Patrik Oldsberg +Date: Fri Jan 21 19:11:30 2022 +0100 + + Merge pull request #9103 from backstage/rugvip/bumpsb + + storybook: bump all deps + +commit f882f876670a6defcb7bef1641c38b5ef612c002 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Fri Jan 21 18:00:37 2022 +0000 + + chore(deps): bump graphiql from 1.5.13 to 1.5.16 + + Bumps [graphiql](https://github.com/graphql/graphiql) from 1.5.13 to 1.5.16. + - [Release notes](https://github.com/graphql/graphiql/releases) + - [Changelog](https://github.com/graphql/graphiql/blob/main/CHANGELOG.md) + - [Commits](https://github.com/graphql/graphiql/compare/graphiql@1.5.13...graphiql@1.5.16) + + --- + updated-dependencies: + - dependency-name: graphiql + dependency-type: direct:production + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit 2f29261ab893ccb3465c030a3a24520dde82af49 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Fri Jan 21 17:57:32 2022 +0000 + + chore(deps-dev): bump @types/google-protobuf from 3.7.3 to 3.15.5 + + Bumps [@types/google-protobuf](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/google-protobuf) from 3.7.3 to 3.15.5. + - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) + - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/google-protobuf) + + --- + updated-dependencies: + - dependency-name: "@types/google-protobuf" + dependency-type: direct:development + update-type: version-update:semver-minor + ... + + Signed-off-by: dependabot[bot] + +commit c372a5032f4379d3fd82ded2b13940876ac933cb +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Fri Jan 21 17:56:45 2022 +0000 + + chore(deps): bump jest-transform-yaml from 0.1.1 to 1.0.0 + + Bumps [jest-transform-yaml](https://github.com/sumwatshade/jest-transform-yaml) from 0.1.1 to 1.0.0. + - [Release notes](https://github.com/sumwatshade/jest-transform-yaml/releases) + - [Changelog](https://github.com/sumwatshade/jest-transform-yaml/blob/main/CHANGELOG.md) + - [Commits](https://github.com/sumwatshade/jest-transform-yaml/compare/v0.1.1...v1.0.0) + + --- + updated-dependencies: + - dependency-name: jest-transform-yaml + dependency-type: direct:production + update-type: version-update:semver-major + ... + + Signed-off-by: dependabot[bot] + +commit 5f05809b826dd943b1ce4bfab072445491745431 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Fri Jan 21 17:56:13 2022 +0000 + + chore(deps-dev): bump supertest from 6.1.6 to 6.2.2 + + Bumps [supertest](https://github.com/visionmedia/supertest) from 6.1.6 to 6.2.2. + - [Release notes](https://github.com/visionmedia/supertest/releases) + - [Commits](https://github.com/visionmedia/supertest/compare/v6.1.6...v6.2.2) + + --- + updated-dependencies: + - dependency-name: supertest + dependency-type: direct:development + update-type: version-update:semver-minor + ... + + Signed-off-by: dependabot[bot] + +commit e46b6c581e6d30244d840c6fb39c4db2311a8818 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Fri Jan 21 17:47:10 2022 +0000 + + chore(deps-dev): bump lint-staged from 12.2.0 to 12.2.2 + + Bumps [lint-staged](https://github.com/okonet/lint-staged) from 12.2.0 to 12.2.2. + - [Release notes](https://github.com/okonet/lint-staged/releases) + - [Commits](https://github.com/okonet/lint-staged/compare/v12.2.0...v12.2.2) + + --- + updated-dependencies: + - dependency-name: lint-staged + dependency-type: direct:development + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit 3c048466332b63498e83c04c0c1a97174e0e3dd8 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Fri Jan 21 17:39:17 2022 +0000 + + chore(deps): bump @material-table/core from 3.1.0 to 4.3.19 + + Bumps [@material-table/core](https://github.com/material-table-core/core) from 3.1.0 to 4.3.19. + - [Release notes](https://github.com/material-table-core/core/releases) + - [Changelog](https://github.com/material-table-core/core/blob/master/CHANGELOG.md) + - [Commits](https://github.com/material-table-core/core/compare/v3.1.0...v4.3.19) + + --- + updated-dependencies: + - dependency-name: "@material-table/core" + dependency-type: direct:production + update-type: version-update:semver-major + ... + + Signed-off-by: dependabot[bot] + +commit bc876f419b637341d1ab4fff83b30e810bdd72c7 +Author: Patrik Oldsberg +Date: Fri Jan 21 18:29:12 2022 +0100 + + storybook: bump all deps + + Signed-off-by: Patrik Oldsberg + +commit cb00780a60d48d176fb17fb50c2a1e63515e58c0 +Merge: f869d916a8 107e6ef802 +Author: Patrik Oldsberg +Date: Fri Jan 21 18:17:04 2022 +0100 + + Merge pull request #9089 from backstage/storybook-move + + Moved Storybook from package to root of the project (continued) + +commit b16ad3f8c98303e1b62a48e06243dc2f9dfb070b +Author: David Zemon +Date: Fri Jan 21 10:49:31 2022 -0600 + + chore: [#8920] Update API report + + Signed-off-by: David Zemon + +commit b56c8608ee7e04c2bcd7a727210035801c767237 +Author: Patrik Oldsberg +Date: Fri Jan 21 17:49:10 2022 +0100 + + yarn.lock: bump css-what + + Signed-off-by: Patrik Oldsberg + +commit 2137b84c3225a8650949c25990bd6ed341a6742f +Author: David Zemon +Date: Fri Jan 21 10:44:02 2022 -0600 + + refactor: [#8920] Rename for inclusion of other templating engines + + Signed-off-by: David Zemon + +commit 107e6ef8021d400254a828d607cded4288c6ad13 +Author: Patrik Oldsberg +Date: Fri Jan 21 17:20:42 2022 +0100 + + github/dependabot: add storybook + + Signed-off-by: Patrik Oldsberg + +commit 724bc7d0e2e658fd2c9b7eb9bc5615b3c6c352c7 +Author: Patrik Oldsberg +Date: Fri Jan 21 17:19:28 2022 +0100 + + cli: remove ts fork checker memory limit + + Signed-off-by: Patrik Oldsberg + +commit 10086f5873c50a609855c24970b858efe928f387 +Author: Patrik Oldsberg +Date: Fri Jan 21 17:18:08 2022 +0100 + + changesets: added changesets for storybook move bumps + + Signed-off-by: Patrik Oldsberg + +commit 0e4f141661bf99074df2ae7376b79c6459e83285 +Author: David Zemon +Date: Fri Jan 21 09:51:14 2022 -0600 + + refactor: [#8920] Minor import optimization + + Signed-off-by: David Zemon + +commit 723e5fc26a978800631e50e2d42f4dc269de893c +Author: David Zemon +Date: Fri Jan 21 09:39:38 2022 -0600 + + refactor: [#8920] Clean-up based on PR feedback + + Signed-off-by: David Zemon + +commit a5600dba15a89684a365190c4837c73a69ff77c0 +Author: David Zemon +Date: Fri Jan 21 09:37:59 2022 -0600 + + feat: [8920] Define explicit type for filter; Add SecureTemplater tests + + Signed-off-by: David Zemon + +commit af6b692cb3ca685d97ef16b40b6e9dc99913e3d4 +Author: David Zemon +Date: Fri Jan 21 09:37:05 2022 -0600 + + feat: [8920] Define explicit type for filter; Add SecureTemplater tests + + Signed-off-by: David Zemon + +commit fde4307fc407988e96d84e77843e1101d12c9b3f +Author: David Zemon +Date: Fri Jan 21 09:36:07 2022 -0600 + + feat: [#8920] Add `nunjucksFilters` option for user-provided filters + + Signed-off-by: David Zemon + +commit 13162e81caca834b8ad912ecf02d812cb8a9a07a +Merge: b9ef4086ae f869d916a8 +Author: mufaddal motiwala +Date: Fri Jan 21 18:55:32 2022 +0530 + + Merge branch 'master' of https://github.com/mufaddal7/backstage-1 into feature/EntitySystemDiagramCard + +commit 04b11b51caa50bd2d26f10b76b51e60e547a845c +Author: Patrik Oldsberg +Date: Fri Jan 21 13:38:27 2022 +0100 + + storybook: switch @backstage deps to peerDeps + + Signed-off-by: Patrik Oldsberg + +commit 7fa11b23c91e4f9382513c76f9aed75c31422e33 +Author: blam +Date: Thu Jan 20 17:45:19 2022 +0100 + + choer: reworking storybook, not sure if this is gonna work + + Signed-off-by: blam + +commit 03f5c764e9f013169da8592f39a3cf4cc56797ca +Author: blam +Date: Thu Jan 20 17:10:34 2022 +0100 + + chore; added top level install to the chromatic dist build + + Signed-off-by: blam + +commit f419f1c1f10b45ceb589f6e7b93565613428caba +Author: blam +Date: Thu Jan 20 15:48:50 2022 +0100 + + chore: updating build commands for storybook + + Signed-off-by: blam + +commit 97458a0fc9a1e734558f9cc6adfb17dc53b87e51 +Author: blam +Date: Thu Jan 20 15:21:47 2022 +0100 + + chore: regenerating storybook config + + Signed-off-by: blam + +commit 7d01d0479edf234ad967e7e84199354100a0a708 +Author: blam +Date: Thu Jan 20 11:47:08 2022 +0100 + + chore: bumping some other packages whilst we are here too + + Signed-off-by: blam + +commit bab9637665ae4b6add6343ac6f8475b26abed779 +Author: blam +Date: Thu Jan 20 11:32:40 2022 +0100 + + chore: working tsc:full! + + Signed-off-by: blam + +commit d620855bd2b6ade36ec1cf0110b0032858b34ef0 +Author: blam +Date: Thu Jan 20 10:52:30 2022 +0100 + + chore: fixing up the config + + Signed-off-by: blam + +commit b1912b18d67d93a6943fa9d9b431f8fb2f6fdcfe +Author: blam +Date: Thu Jan 20 10:48:54 2022 +0100 + + chore: adding eslint plugin seperately + + Signed-off-by: blam + +commit 8dfb92b58ff7268582f4bb964a35ee91c1345605 +Author: blam +Date: Thu Jan 20 10:35:44 2022 +0100 + + chore: eslint is no longer supported by the webpack ForkTsCheckerWebpackPlugin + + Signed-off-by: blam + +commit 663531d6af72f3214101e3d208c4761be9e5e96a +Author: blam +Date: Thu Jan 20 10:25:49 2022 +0100 + + chore: fixing some and bringing depdendencies up to date + + Signed-off-by: blam + +commit bfa059b765ee51a909bbeeebf327ec9dfb722f7b +Author: blam +Date: Tue Jan 18 16:19:56 2022 +0100 + + chore: run optional install in the storybook directory + + Signed-off-by: blam + +commit 4560581d0d7f703092336525000799907f9aa61f +Author: blam +Date: Tue Jan 18 16:14:46 2022 +0100 + + chore: fixing yarn.lock with new depedencies + + Signed-off-by: blam + +commit 53de6f91c2311d113262d3e7bdd4e8e26b733bfa +Author: snehaljos +Date: Tue Jan 18 18:35:22 2022 +0530 + + Updated the docs + + Signed-off-by: snehaljos + +commit e460ff035a84efe6f8c6e89c4f902e522fe68099 +Author: snehaljos +Date: Tue Jan 18 18:25:07 2022 +0530 + + Updated the action files + + Signed-off-by: snehaljos + +commit 30b67162b3bea44e6b0de3de50f896c6a79eff22 +Author: snehaljos +Date: Mon Jan 17 21:45:54 2022 +0530 + + Fix for issue #8869 + + Signed-off-by: snehaljos + +commit f869d916a86ea6a38ff51533cc2a150a0dd3b552 +Merge: 59e34e4038 a64f99f734 +Author: Eric Peterson +Date: Fri Jan 21 12:50:56 2022 +0100 + + Merge pull request #9058 from backstage/techdocs/copy-code-to-clipboard + + [TechDocs] Emulate mkdocs-material copy-to-clipboard functionality. + +commit 59e34e4038d03a7d0cc3c08bcd211896d7623fc4 +Merge: 2f0d3d3278 a3c4438abf +Author: Patrik Oldsberg +Date: Fri Jan 21 12:32:56 2022 +0100 + + Merge pull request #9070 from backstage/rugvip/deproute + + explore,catalog-graph: use entityRouteRef directly + +commit 2f0d3d327853d5121278e10a62e43d9ddc14306c +Author: Emma Indal +Date: Fri Jan 21 12:24:23 2022 +0100 + + [Home] forward classes to HomePageSearchBar instead of using className (#9049) + + * override styles + + Signed-off-by: Emma Indal + + * add changeset + + Signed-off-by: Emma Indal + + * update api report + + Signed-off-by: Emma Indal + + * forward classes instad of using className + + Signed-off-by: Emma Indal + + * update changeset breaking change, add instructions + + Signed-off-by: Emma Indal + +commit 4df8c4bfd8055f48f235e24df22b9af10b125e66 +Author: Gary Niemen <65337273+garyniemen@users.noreply.github.com> +Date: Fri Jan 21 10:45:26 2022 +0100 + + TechDocs etc update to Backstage roadmap (#8944) + + * TechDocs etc update to Backstage roadmap + + * fixup + + Signed-off-by: Fredrik Adelöw + + * Minor changes to roadmap + + * prettier fixup + + Signed-off-by: Emma Indal + + Co-authored-by: Fredrik Adelöw + Co-authored-by: Emma Indal + +commit 7fdeeead480075abe1d0b966f6c0b9f67480b894 +Merge: 69abb4cece ff93fbeeec +Author: Fredrik Adelöw +Date: Fri Jan 21 10:11:37 2022 +0100 + + Merge pull request #9050 from oparaskos/oparaskos-patch-1 + + Fix interpolated string `Failed to generate docs...` + +commit ff93fbeeec4f355563ac411c567057e5df502215 +Author: Fredrik Adelöw +Date: Fri Jan 21 09:41:45 2022 +0100 + + changeset + + Signed-off-by: Fredrik Adelöw + +commit 69abb4cecee19202334e3155797849ad3b780740 +Merge: 40f8f66b20 4528aa2586 +Author: Johan Haals +Date: Fri Jan 21 08:25:31 2022 +0100 + + Merge pull request #9082 from backstage/dependabot/npm_and_yarn/types/d3-selection-3.0.2 + + chore(deps-dev): bump @types/d3-selection from 3.0.1 to 3.0.2 + +commit 40f8f66b208f60628e8271b7e41fc33d78cababc +Merge: 80798b3936 694ae56de1 +Author: Johan Haals +Date: Fri Jan 21 08:25:11 2022 +0100 + + Merge pull request #9083 from backstage/dependabot/npm_and_yarn/types/yarnpkg__lockfile-1.1.5 + + chore(deps-dev): bump @types/yarnpkg__lockfile from 1.1.4 to 1.1.5 + +commit 80798b39361ba53dc24a0ad21809cd110bc1f459 +Merge: 974d25f822 10313948d5 +Author: Johan Haals +Date: Fri Jan 21 08:24:47 2022 +0100 + + Merge pull request #9080 from backstage/dependabot/npm_and_yarn/rollup/plugin-node-resolve-13.1.3 + + chore(deps): bump @rollup/plugin-node-resolve from 13.0.0 to 13.1.3 + +commit 974d25f822ca2ace4b338123059ace0ba36e6039 +Merge: daefff9319 08788009de +Author: Johan Haals +Date: Fri Jan 21 08:23:59 2022 +0100 + + Merge pull request #9078 from backstage/dependabot/npm_and_yarn/sucrase/jest-plugin-2.2.0 + + chore(deps): bump @sucrase/jest-plugin from 2.1.1 to 2.2.0 + +commit daefff93194800f26185acfbfb9b37080030f7c4 +Merge: fdde894f90 571f3631e6 +Author: Johan Haals +Date: Fri Jan 21 08:23:29 2022 +0100 + + Merge pull request #9075 from backstage/dependabot/npm_and_yarn/types/unzipper-0.10.5 + + chore(deps-dev): bump @types/unzipper from 0.10.4 to 0.10.5 + +commit fdde894f90027b21c675826e37d44c0983c0489d +Merge: 04b0cb2a7b 726f125e11 +Author: Johan Haals +Date: Fri Jan 21 08:23:11 2022 +0100 + + Merge pull request #9076 from backstage/dependabot/npm_and_yarn/jscodeshift-0.13.1 + + chore(deps): bump jscodeshift from 0.13.0 to 0.13.1 + +commit 694ae56de1a64cec212a6b757b6284140bbac2fa +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Fri Jan 21 04:32:58 2022 +0000 + + chore(deps-dev): bump @types/yarnpkg__lockfile from 1.1.4 to 1.1.5 + + Bumps [@types/yarnpkg__lockfile](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/yarnpkg__lockfile) from 1.1.4 to 1.1.5. + - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) + - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/yarnpkg__lockfile) + + --- + updated-dependencies: + - dependency-name: "@types/yarnpkg__lockfile" + dependency-type: direct:development + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit 4528aa2586fa41f3e566d875ce80a57f1591878e +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Fri Jan 21 04:32:04 2022 +0000 + + chore(deps-dev): bump @types/d3-selection from 3.0.1 to 3.0.2 + + Bumps [@types/d3-selection](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/d3-selection) from 3.0.1 to 3.0.2. + - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) + - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/d3-selection) + + --- + updated-dependencies: + - dependency-name: "@types/d3-selection" + dependency-type: direct:development + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit 10313948d59405671aa205caa6a1dfdb40ede167 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Fri Jan 21 04:29:33 2022 +0000 + + chore(deps): bump @rollup/plugin-node-resolve from 13.0.0 to 13.1.3 + + Bumps [@rollup/plugin-node-resolve](https://github.com/rollup/plugins/tree/HEAD/packages/node-resolve) from 13.0.0 to 13.1.3. + - [Release notes](https://github.com/rollup/plugins/releases) + - [Changelog](https://github.com/rollup/plugins/blob/master/packages/node-resolve/CHANGELOG.md) + - [Commits](https://github.com/rollup/plugins/commits/node-resolve-v13.1.3/packages/node-resolve) + + --- + updated-dependencies: + - dependency-name: "@rollup/plugin-node-resolve" + dependency-type: direct:production + update-type: version-update:semver-minor + ... + + Signed-off-by: dependabot[bot] + +commit 08788009ded499be41df56de8dd5d79c870999a9 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Fri Jan 21 04:27:07 2022 +0000 + + chore(deps): bump @sucrase/jest-plugin from 2.1.1 to 2.2.0 + + Bumps [@sucrase/jest-plugin](https://github.com/alangpierce/sucrase) from 2.1.1 to 2.2.0. + - [Release notes](https://github.com/alangpierce/sucrase/releases) + - [Changelog](https://github.com/alangpierce/sucrase/blob/main/CHANGELOG.md) + - [Commits](https://github.com/alangpierce/sucrase/commits) + + --- + updated-dependencies: + - dependency-name: "@sucrase/jest-plugin" + dependency-type: direct:production + update-type: version-update:semver-minor + ... + + Signed-off-by: dependabot[bot] + +commit 726f125e115b6eff84641412572c6d507b718f7a +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Fri Jan 21 04:12:27 2022 +0000 + + chore(deps): bump jscodeshift from 0.13.0 to 0.13.1 + + Bumps [jscodeshift](https://github.com/facebook/jscodeshift) from 0.13.0 to 0.13.1. + - [Release notes](https://github.com/facebook/jscodeshift/releases) + - [Changelog](https://github.com/facebook/jscodeshift/blob/main/CHANGELOG.md) + - [Commits](https://github.com/facebook/jscodeshift/compare/0.13.0...0.13.1) + + --- + updated-dependencies: + - dependency-name: jscodeshift + dependency-type: direct:production + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit 571f3631e6fe5ae72ef04f235755ade1c8bd6eac +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Fri Jan 21 04:11:26 2022 +0000 + + chore(deps-dev): bump @types/unzipper from 0.10.4 to 0.10.5 + + Bumps [@types/unzipper](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/unzipper) from 0.10.4 to 0.10.5. + - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) + - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/unzipper) + + --- + updated-dependencies: + - dependency-name: "@types/unzipper" + dependency-type: direct:development + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit a3c4438abf712ca79b38669258c67adac2f647e0 +Author: Patrik Oldsberg +Date: Thu Jan 20 22:41:22 2022 +0100 + + explore,catalog-graph: use entityRouteRef directly + + Signed-off-by: Patrik Oldsberg + +commit 04b0cb2a7b3dc408864ded58e70e4c2c96c3d3c9 +Merge: abc204b89d 884e83f0b2 +Author: Patrik Oldsberg +Date: Fri Jan 21 01:10:59 2022 +0100 + + Merge pull request #9071 from mdb/mdb/add-hbo-max + + add HBO Max to adopters list + +commit 884e83f0b2d5a82b2fbc96f4882b72d4e5415943 +Author: Mike Ball +Date: Thu Jan 20 18:17:01 2022 -0500 + + add HBO Max to adopters list + + Signed-off-by: Mike Ball + +commit 2a3f792f9e7dbba618b90bbf67654b8b6416e920 +Author: Elizabeth Stranack +Date: Thu Jan 20 14:01:39 2022 -0800 + + Updating Commit Changes + + Signed-off-by: Elizabeth Stranack + +commit abc204b89d70cffa9b27e9999c70acd2c6eb5a79 (tag: v0.64.1, tag: release-2022-01-20.1) +Merge: ad7780bb46 da4c50f124 +Author: Patrik Oldsberg +Date: Thu Jan 20 22:12:51 2022 +0100 + + Merge pull request #9069 from backstage/rugvip/tip + + tech-insights-backend: fixed type assignment + +commit da4c50f1248209efc4b62471056cb7e20759fb4d +Author: Patrik Oldsberg +Date: Thu Jan 20 21:47:10 2022 +0100 + + release tech-insights-backend 0.2.1 + + Signed-off-by: Patrik Oldsberg + +commit ad0a7eb088050bfe91d950deac8a7dda5e4b5b83 +Author: Patrik Oldsberg +Date: Thu Jan 20 21:44:47 2022 +0100 + + tech-insights-backend: fixed type assignment + + Signed-off-by: Patrik Oldsberg + +commit b9ef4086ae25fd0705545fbb2262d5d63169427e +Author: mufaddal motiwala +Date: Fri Jan 21 02:08:55 2022 +0530 + + formatting (empty line after import statement ) + + Signed-off-by: mufaddal motiwala + +commit 49eb9780d51c0c961001a05a9448adab6f1abbd2 +Author: mufaddal motiwala +Date: Fri Jan 21 01:51:20 2022 +0530 + + updated changeset + + Signed-off-by: mufaddal motiwala + +commit b45aff645e69e300173459ebf1adc01be8eca87f +Author: Alef +Date: Thu Jan 20 17:20:06 2022 -0300 + + fix: plugin logo + + Signed-off-by: Alef + +commit 48639b213ea67a086eb682a081a34b4d5c856baa +Author: Alef +Date: Thu Jan 20 17:08:10 2022 -0300 + + fix: yaml new line + + Signed-off-by: Alef + +commit e50ddb1f72590653c14c2caac8580b4fc85359b8 +Author: Alef +Date: Thu Jan 20 17:06:56 2022 -0300 + + docs: better naming + + Signed-off-by: Alef + +commit d42069763de1c0b67bfc88c1636cf56bde44b7cd +Author: mufaddal motiwala +Date: Fri Jan 21 01:25:51 2022 +0530 + + rewording + + Signed-off-by: mufaddal motiwala + +commit 83388d17e4a1da5d675fc8e15ea1c2a15368bffe +Author: mufaddal motiwala +Date: Fri Jan 21 01:19:06 2022 +0530 + + typo fix + + Signed-off-by: mufaddal motiwala + +commit 40d32c3c99c5c139a99c0beb058ef72f74810a3c +Author: mufaddal motiwala +Date: Fri Jan 21 01:13:46 2022 +0530 + + update api-report.md + + Signed-off-by: mufaddal motiwala + +commit aac316279fecb4a90248ca4b434c1cee020c21fb +Author: mufaddal motiwala +Date: Fri Jan 21 00:26:54 2022 +0530 + + add @backstage/plugin-catalog changeset + + Signed-off-by: mufaddal motiwala + +commit a0d446c8ecc4163a981ec1313124dab67f7db85b +Author: mufaddal motiwala +Date: Fri Jan 21 00:26:29 2022 +0530 + + add @backstage/create-app changeset + + Signed-off-by: mufaddal motiwala + +commit 6313075d770026d72c4f384b9b1e52c1c2948247 +Author: mufaddal motiwala +Date: Fri Jan 21 00:13:55 2022 +0530 + + deprecate EntitySystemDiagramCard + + Signed-off-by: mufaddal motiwala + +commit 0d57638d2b8eda60fe23a4714a2abbc118acbe99 +Author: mufaddal motiwala +Date: Fri Jan 21 00:13:10 2022 +0530 + + Replaced EntitySystemDiagramCard with EntityCatalogGraphCard + + Signed-off-by: mufaddal motiwala + +commit ad7780bb4684af1835194eb6371722c9a00ea299 +Merge: bed2da46af a1c792d71a +Author: Patrik Oldsberg +Date: Thu Jan 20 18:28:11 2022 +0100 + + Merge pull request #9057 from backstage/rugvip/workflows + + github/workflows: organize and rename + +commit a1c792d71ad93a191ff96d662989d0f0daaa067f +Author: Patrik Oldsberg +Date: Thu Jan 20 15:30:39 2022 +0100 + + github/workflows: rename and group + + Signed-off-by: Patrik Oldsberg + +commit a64f99f73424c64aef2055faf88bc144d76c1e3e +Author: Eric Peterson +Date: Thu Jan 20 16:14:59 2022 +0100 + + Emulate mkdocs-material copy-to-clipboard functionality. + + Signed-off-by: Eric Peterson + +commit bed2da46afe484667bb2c8e25f89941bd78610c2 +Merge: a370706a18 21885379c1 +Author: Patrik Oldsberg +Date: Thu Jan 20 14:18:40 2022 +0100 + + Merge pull request #9053 from backstage/benjdlambert-patch-1 + + goalie: cron is failing due to no user in some events + +commit 21885379c17bbce1162d95a9129358dae3b95904 +Author: Fredrik Adelöw +Date: Thu Jan 20 14:06:43 2022 +0100 + + fixup + + Signed-off-by: Fredrik Adelöw + +commit e872c7ebaf59fb14cdaceeabd75506b7bfbe52c2 +Author: Ben Lambert +Date: Thu Jan 20 13:30:24 2022 +0100 + + Revert back to cron + + Signed-off-by: Ben Lambert + +commit b9e5973d9bd86a379246b15de6a83c0b799b9256 +Author: Ben Lambert +Date: Thu Jan 20 13:27:14 2022 +0100 + + Removing unused var + + Signed-off-by: Ben Lambert + +commit aad66df1ba5a86579eae3f4d269fdd745612f8e9 +Author: Ben Lambert +Date: Thu Jan 20 13:25:22 2022 +0100 + + Doesn't support optional chaining + + Signed-off-by: Ben Lambert + +commit e053eb597a120e4da793a71e86dc7d115436ab5b +Author: Ben Lambert +Date: Thu Jan 20 13:21:47 2022 +0100 + + Replace to pipes instead + + Signed-off-by: Ben Lambert + +commit 6d08f818a6172f90bb4932bde7d76d5842a99685 +Author: Ben Lambert +Date: Thu Jan 20 13:19:17 2022 +0100 + + Fixing by falling back to the committer and check to see if there's a user + + Signed-off-by: Ben Lambert + +commit 1e423fab53cab694281fcad96bd61930d599e8fc +Author: Ben Lambert +Date: Thu Jan 20 13:05:58 2022 +0100 + + chore: add a check to see what's going on with an event + + Signed-off-by: Ben Lambert + +commit d392d2dbb33979bfea7ebe0a2bc7e2b8082c1601 +Author: Ben Lambert +Date: Thu Jan 20 13:02:59 2022 +0100 + + change run frequency to push + + Signed-off-by: Ben Lambert + +commit a370706a18a3b8e3db8822b231a0bb554c8faf6c +Merge: a39b265786 427fa5de82 +Author: Fredrik Adelöw +Date: Thu Jan 20 13:40:19 2022 +0100 + + Merge pull request #9045 from kim5566/k8s/use-default-kubeconfig + + Kubernetes plugin: Loading default Kube configuration + +commit a39b265786582b387c2af5a5533297bedf13cee2 +Merge: 898e2d8933 fb0da1e418 +Author: Fredrik Adelöw +Date: Thu Jan 20 13:21:36 2022 +0100 + + Merge pull request #9052 from backstage/catalog-permission-integration/doc-fix + + Fix link in MockPermissionApi docs + +commit 898e2d89332a8585bab13c2b395a64c19b445804 +Merge: 600d6e3c85 b4bbd0e47d +Author: Fredrik Adelöw +Date: Thu Jan 20 12:48:38 2022 +0100 + + Merge pull request #9051 from backstage/freben/fix-task-tests + + fix the tasks test + +commit 600d6e3c854bbfb12a0078ca6f726d1c0d1fea0b (tag: v0.64.0, tag: release-2022-01-20) +Merge: 4918be78b0 8b18d054f3 +Author: Patrik Oldsberg +Date: Thu Jan 20 12:34:10 2022 +0100 + + Merge pull request #9006 from backstage/changeset-release/master + + Version Packages + +commit fb0da1e418ad887300738eab1f36c3074b998f00 +Author: Joon Park +Date: Thu Jan 20 11:16:01 2022 +0000 + + Fix link in MockPermissionApi docs + + Signed-off-by: Joon Park + +commit b4bbd0e47d38f52896f159c00bb025d6978ce096 +Author: Fredrik Adelöw +Date: Thu Jan 20 12:15:59 2022 +0100 + + fix the tasks test + + Signed-off-by: Fredrik Adelöw + +commit 46dcbaeb645165c2ce94cad28704067f3ed30bcc +Author: Oliver Paraskos +Date: Thu Jan 20 10:52:15 2022 +0000 + + Fix interpolated string `Failed to generate docs...` + + A string was using the wrong kind of quotes and so the interpolated fields weren't. + + Signed-off-by: Oliver Paraskos + +commit 8b18d054f3866ed14e9064d631cb548b37225a2d +Author: github-actions[bot] +Date: Thu Jan 20 10:33:31 2022 +0000 + + Version Packages + +commit 4918be78b0c9691566a5b77b9b28d247a9067eb2 +Merge: 0577f29a13 3aa2ae1f91 +Author: Fredrik Adelöw +Date: Thu Jan 20 11:25:56 2022 +0100 + + Merge pull request #8769 from backstage/freben/techdocs-clients + + Some more usage of the `FetchApi` + +commit 0577f29a13c96d3dac558005f7af853327b4ad52 +Merge: 6be95e308f 5e8d278f8e +Author: Patrik Oldsberg +Date: Thu Jan 20 11:11:21 2022 +0100 + + Merge pull request #8931 from backstage/rugvip/entityrr + + catalog-react: deprecate catalogRouteRef and deduplicate entityRouteRef + +commit 6be95e308fe1de49f0487ac288120c362d94f9fe +Merge: 1fb1555145 a8e6265109 +Author: Fredrik Adelöw +Date: Thu Jan 20 11:00:39 2022 +0100 + + Merge pull request #9048 from backstage/revert-8987-dependabot/npm_and_yarn/helmet-5.0.1 + + Revert "build(deps): bump helmet from 4.4.1 to 5.0.1" + +commit 1fb15551458e0d1b85315f182b73850548eac655 +Merge: 795e13be49 f8496730ab +Author: Patrik Oldsberg +Date: Thu Jan 20 11:00:18 2022 +0100 + + Merge pull request #9043 from backstage/rugvip/full-refal-panic + + auth-backend: make sure userEntityRef is always a full entity ref + +commit 3aa2ae1f91bb5ca21d5edc4de3f2c649fee18d9b +Author: Fredrik Adelöw +Date: Tue Jan 11 16:29:48 2022 +0100 + + expand on the changesets + + Signed-off-by: Fredrik Adelöw + +commit fb565073ec95afa5871e761d08c3ae215f31e447 +Author: Fredrik Adelöw +Date: Fri Jan 7 20:46:52 2022 +0100 + + implement injectIdentityAuth + + Signed-off-by: Fredrik Adelöw + +commit 19ea047412a3a5b209a03d457c1531a0b7a9e360 +Author: Fredrik Adelöw +Date: Fri Jan 7 17:28:48 2022 +0100 + + use a one-argument constructor instead of setters + + Signed-off-by: Fredrik Adelöw + +commit 6bf7826258ee4e1f475b8728db207e882d5a7ea0 +Author: Fredrik Adelöw +Date: Thu Jan 6 19:46:33 2022 +0100 + + add and use MockFetchApi + + Signed-off-by: Fredrik Adelöw + +commit aecfe4f403d72dd5e4c60893b659d459ff11acdd +Author: Fredrik Adelöw +Date: Wed Jan 5 21:35:51 2022 +0100 + + same for the scaffolder + + Signed-off-by: Fredrik Adelöw + +commit 88a0a4ee6a29de2b40961db916d1c1ea57e68c47 +Author: Fredrik Adelöw +Date: Wed Jan 5 21:19:07 2022 +0100 + + Make the techdocs APIs use the FetchApi + + Signed-off-by: Fredrik Adelöw + +commit 795e13be4967cbeab80405198cfa4ef6bd1f3bb7 +Merge: c10beb84e5 6ba478138d +Author: Fredrik Adelöw +Date: Thu Jan 20 10:23:15 2022 +0100 + + Merge pull request #8972 from backstage/catalog-permission-integration/unregister-entity + + Disable unregister entity button in catalog if unauthorized + +commit c10beb84e590446b33454a2b37ad681940b616f6 +Merge: 72c51e8483 66a1456286 +Author: Fredrik Adelöw +Date: Thu Jan 20 10:22:56 2022 +0100 + + Merge pull request #9042 from backstage/rugvip/tip + + changesets: add tip for handling react-use error when upgrading TypeScript + +commit 72c51e848376a86428132c597abbcdd1304bee6b +Merge: 5dc22bd77f a56eb5242a +Author: Fredrik Adelöw +Date: Thu Jan 20 10:17:15 2022 +0100 + + Merge pull request #9046 from kim5566/k8s/google-service-account-authprovider + + Kubernetes plugin: Add a Google Service Account auth provider + +commit a8e6265109b21fa27c48dc45443f76d3be73302b +Author: Fredrik Adelöw +Date: Thu Jan 20 09:54:39 2022 +0100 + + Revert "build(deps): bump helmet from 4.4.1 to 5.0.1" + + Signed-off-by: Fredrik Adelöw + +commit f8496730abd68dcec6947c4ed9275591cbc9c6ee +Author: Patrik Oldsberg +Date: Wed Jan 19 23:30:58 2022 +0100 + + auth-backend: make sure userEntityRef is always a full entity ref + + Signed-off-by: Patrik Oldsberg + +commit 5dc22bd77f9ec457b84695c2568fe2519ac09efb +Merge: 868cd6e736 b8b5945990 +Author: Ben Lambert +Date: Thu Jan 20 10:00:50 2022 +0100 + + Merge pull request #9047 from backstage/blam/goalie-workflows-fix-events + + chore: events endpoint does not return all events.. so we go get them ourselves + +commit 868cd6e736871623f3e7db780ccf4c2ec8e0b4b9 +Merge: 452afde031 f2fe4d240b +Author: Patrik Oldsberg +Date: Thu Jan 20 09:56:10 2022 +0100 + + Merge pull request #9037 from backstage/rugvip/react17 + + Upgrade to React 17 + +commit 452afde0311da24d026a1ff0db2240b4e4c5d531 +Merge: 444175b7a4 7e76e7dc12 +Author: Ben Lambert +Date: Thu Jan 20 09:28:37 2022 +0100 + + Merge pull request #9038 from backstage/blam/scaffolder-secrets + + scaffolder: Support supplying secrets at Task Creation + +commit b8b5945990fc0c208b3dcad52dbe498295a10ea7 +Author: blam +Date: Thu Jan 20 09:18:17 2022 +0100 + + chore: filter out anything by bots + + Signed-off-by: blam + +commit 444175b7a4095f4a2c0e29c3b57d84d282bac755 +Merge: 1592cfd2f1 c1a6d642bd +Author: Fredrik Adelöw +Date: Thu Jan 20 09:13:35 2022 +0100 + + Merge pull request #8987 from backstage/dependabot/npm_and_yarn/helmet-5.0.1 + + build(deps): bump helmet from 4.4.1 to 5.0.1 + +commit 7e76e7dc123975781f39d4a19e09a8dd665b9c65 +Author: blam +Date: Thu Jan 20 09:02:46 2022 +0100 + + chore: adjusting the types a little bit and regenerating api-docs + + Signed-off-by: blam + +commit 1592cfd2f1b848f99fa139527a6197447d3d5d7a +Merge: 2da2eda0e9 5cc0b0ee37 +Author: Ben Lambert +Date: Thu Jan 20 09:02:15 2022 +0100 + + Merge pull request #9041 from backstage/rugvip/fixdocs + + fix API reference + add regression test + +commit 231846b4e5a225ae9643dc6100c137d362536902 +Author: blam +Date: Thu Jan 20 08:36:38 2022 +0100 + + chore: reset back to cron time as this all seems to work perfectly + + Signed-off-by: blam + +commit b7b44015c412f3eb92fa17a2f60c4bbfc5191758 +Author: blam +Date: Thu Jan 20 08:34:49 2022 +0100 + + chore: missed the async function here + + Signed-off-by: blam + +commit 673e73ea422b08098e929008ef0c3a53732165c3 +Author: blam +Date: Thu Jan 20 08:30:54 2022 +0100 + + chore: events endpoint does not return all events.. so we go get them ourselves + + Signed-off-by: blam + +commit a56eb5242abe63a158facf0dafaccdee917bd0e7 +Author: kim5566 <28945404+kim5566@users.noreply.github.com> +Date: Thu Jan 20 14:07:03 2022 +1100 + + update doc + + Signed-off-by: kim5566 <28945404+kim5566@users.noreply.github.com> + +commit edbd626d0a4222f18ab969512a6c70071ae0e3ee +Author: kim5566 <28945404+kim5566@users.noreply.github.com> +Date: Thu Jan 20 13:58:21 2022 +1100 + + add changeset + + Signed-off-by: kim5566 <28945404+kim5566@users.noreply.github.com> + +commit 8cd1d9033dca3dd45c2fd1475b0bc9378ab054ad +Author: kim5566 <28945404+kim5566@users.noreply.github.com> +Date: Thu Jan 20 13:55:52 2022 +1100 + + add new googleServiceAccount authProvider + + Signed-off-by: kim5566 <28945404+kim5566@users.noreply.github.com> + +commit 427fa5de82b3eb1c8429ef05c3ea0b1a650a1632 +Author: kim5566 <28945404+kim5566@users.noreply.github.com> +Date: Thu Jan 20 10:42:43 2022 +1100 + + update changeset + + Signed-off-by: kim5566 <28945404+kim5566@users.noreply.github.com> + +commit 278baee51453c2b59fc79ff7d71da99b84f57343 +Author: kim5566 <28945404+kim5566@users.noreply.github.com> +Date: Thu Jan 20 10:37:10 2022 +1100 + + update changeset + + Signed-off-by: kim5566 <28945404+kim5566@users.noreply.github.com> + +commit 8fc0d122e8f7dec5f65c36088e3975b0ff8b7337 +Author: kim5566 <28945404+kim5566@users.noreply.github.com> +Date: Thu Jan 20 09:49:24 2022 +1100 + + add changeset + + Signed-off-by: kim5566 <28945404+kim5566@users.noreply.github.com> + +commit 120c133e3ba877753e559e39ec4a12be199dbde8 +Author: kim5566 <28945404+kim5566@users.noreply.github.com> +Date: Thu Jan 20 09:45:09 2022 +1100 + + if serviceAccountToken not provided use default + + Signed-off-by: kim5566 <28945404+kim5566@users.noreply.github.com> + +commit 66a1456286bd9d43dc1132cb32103e0bf9bb1371 +Author: Patrik Oldsberg +Date: Wed Jan 19 22:25:49 2022 +0100 + + changesets: add tip for handling react-use error when upgrading TypeScript + + Signed-off-by: Patrik Oldsberg + +commit 5cc0b0ee37306b186b3c99b3348c909de96a561e +Author: Patrik Oldsberg +Date: Wed Jan 19 21:33:34 2022 +0100 + + scripts/verify-api-reference: added more context and hint for how to fix + + Signed-off-by: Patrik Oldsberg + +commit c540922cad0c3736969c08b64a4987cabf69fb42 +Author: Patrik Oldsberg +Date: Wed Jan 19 20:03:59 2022 +0100 + + fix API reference + add regression test + + Signed-off-by: Patrik Oldsberg + +commit 2da2eda0e9a49953ea30c3faf1d6b7e6488ac7d5 +Merge: ce5edcbc05 e9bea97be4 +Author: Fredrik Adelöw +Date: Wed Jan 19 19:28:03 2022 +0100 + + Merge pull request #9035 from backstage/dependabot/npm_and_yarn/trim-off-newlines-1.0.3 + + chore(deps): bump trim-off-newlines from 1.0.1 to 1.0.3 + +commit f2fe4d240bf4dc14789928db71a685c721c6aa8a +Author: Patrik Oldsberg +Date: Wed Jan 19 19:11:04 2022 +0100 + + cli: only apply hot loader hook support alias for react 16 + + Signed-off-by: Patrik Oldsberg + +commit 5e8d278f8e133d2436b26ab2b93d8c1a4e6e0038 +Author: Patrik Oldsberg +Date: Wed Jan 19 18:38:43 2022 +0100 + + create-app: update to bind the org plugin catalog index route + + Signed-off-by: Patrik Oldsberg + +commit 783c435e461dffbe7fc08f660eddfcf7f501655c +Author: blam +Date: Wed Jan 19 18:38:10 2022 +0100 + + api-docs: regenerate reports for scaffolder and changes + + Signed-off-by: blam + +commit b05d3032260a21d28a555b24c01450b97fcc1c4f +Author: blam +Date: Wed Jan 19 18:20:54 2022 +0100 + + chore: added changeset + + Signed-off-by: blam + +commit 8181b34c892edf89582439a71ff28ea6d1179aaf +Author: blam +Date: Wed Jan 19 18:20:19 2022 +0100 + + chore: set the secrets type as TaskSecrets + + Signed-off-by: blam + +commit 2d4ef2b78e1dd01d40c2868d45bf9ce6665fc4bb +Author: blam +Date: Wed Jan 19 18:13:32 2022 +0100 + + chore: secrets are removed when claiming the task + + Signed-off-by: blam + +commit e9bea97be47c6ff04b324091e4fb1b29c443f533 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Wed Jan 19 17:11:14 2022 +0000 + + chore(deps): bump trim-off-newlines from 1.0.1 to 1.0.3 + + Bumps [trim-off-newlines](https://github.com/stevemao/trim-off-newlines) from 1.0.1 to 1.0.3. + - [Release notes](https://github.com/stevemao/trim-off-newlines/releases) + - [Commits](https://github.com/stevemao/trim-off-newlines/compare/v1.0.1...v1.0.3) + + --- + updated-dependencies: + - dependency-name: trim-off-newlines + dependency-type: indirect + ... + + Signed-off-by: dependabot[bot] + +commit ce5edcbc0537b3d10722b1a5dd27b66078115aca +Merge: 622bf785f7 0c0d8a47e7 +Author: Fredrik Adelöw +Date: Wed Jan 19 18:07:03 2022 +0100 + + Merge pull request #8973 from benlangfeld/patch-2 + + Bump @asyncapi/react-component for CVE + +commit b5402d6d72f59ad0b12a5b09232b93bafcefb982 +Author: Patrik Oldsberg +Date: Wed Jan 19 17:18:11 2022 +0100 + + switch to React 17 + + Signed-off-by: Patrik Oldsberg + +commit 128a489ba0866f1d6fa7475c089f233a708b93d3 +Author: blam +Date: Wed Jan 19 17:18:30 2022 +0100 + + chore: delete the secrets when claiming the task so we don't store anything locally + + Signed-off-by: blam + +commit d19c88a9e480ad055aeab9e55986ae541d53b55a +Author: blam +Date: Wed Jan 19 17:13:59 2022 +0100 + + chore: moving the catalog register to use `backstageToken` instead from the secrets + + Signed-off-by: blam + +commit f999b4063a137f014dc177dc34ee45d7bd789e65 +Author: blam +Date: Wed Jan 19 17:11:45 2022 +0100 + + chore: deprecating the token that's passed through to the context and using ctx.secrets.backstageToken instead + + Signed-off-by: blam + +commit c3a28a46fcd494b308258b0aba99a076945b8c23 +Author: blam +Date: Wed Jan 19 16:43:45 2022 +0100 + + chore: deprecating the token field and renaming to backstageToken as token is far too generic + + Signed-off-by: blam + +commit 7149150bd9ecfd7ad676eaf2f3bab12b571e23c6 +Author: Patrik Oldsberg +Date: Wed Jan 19 16:43:26 2022 +0100 + + yarn.lock: bump @roadiehq deps + + Signed-off-by: Patrik Oldsberg + +commit 8100abfde283003bfe1c6a32e4a5c3d800ab24cd +Author: blam +Date: Wed Jan 19 16:43:12 2022 +0100 + + feat: adding the option to pass secrets from the frontend from the ScaffolderApiClient + + Signed-off-by: blam + +commit 319ca2b20a78fbd81ddc0ee9caad86c7b5463539 +Author: Patrik Oldsberg +Date: Wed Jan 19 10:00:08 2022 +0100 + + core-app-api: moved out and delay the route binding logic + + Signed-off-by: Patrik Oldsberg + +commit 3d870192697b7481ceb063152fa2fe40bd110347 +Author: Patrik Oldsberg +Date: Fri Jan 14 14:14:20 2022 +0100 + + catalog-react: route ref deprecations + deduplication and docs + + Signed-off-by: Patrik Oldsberg + +commit 8a6950b82221cf62e0e5e229bd64d447d6c98f4f +Author: Patrik Oldsberg +Date: Fri Jan 14 11:27:03 2022 +0100 + + bazaar: stop using catalogRouteRef + + Signed-off-by: Patrik Oldsberg + +commit 1285c2fe60063ee9d26237d36e695227f2a90ca1 +Author: Patrik Oldsberg +Date: Fri Jan 14 11:13:18 2022 +0100 + + org: switched catalog index route to use an external route ref + + Signed-off-by: Patrik Oldsberg + +commit 622bf785f781742928172ba162dc88e95aface3f +Merge: 5390c64d87 a53d7d8143 +Author: Fredrik Adelöw +Date: Wed Jan 19 16:35:36 2022 +0100 + + Merge pull request #9033 from backstage/sub-is-full-ref + + Sub is full ref + +commit 0c0d8a47e73b58d9491e43616bff5386cb0fefa9 +Author: Ben Langfeld +Date: Mon Jan 17 16:27:19 2022 -0300 + + Bump @asyncapi/react-component for CVE + + [CVE-2022-21680](https://github.com/advisories/GHSA-rrrm-qjm4-v8hf) and [CVE-2022-21681](https://github.com/advisories/GHSA-5v2h-r2cx-5xgj) + + See https://github.com/asyncapi/asyncapi-react/pull/522 + + Signed-off-by: Ben Langfeld + +commit f050eec2c0dc5fe02428d29e47bda57017b5dcfa +Author: Patrik Oldsberg +Date: Fri Jan 14 11:09:57 2022 +0100 + + core-app-api: added validation of external route bindings + + Signed-off-by: Patrik Oldsberg + +commit 2ff3f1d3bf7ee6f864285c67b91ed7aef38028e2 +Author: Patrik Oldsberg +Date: Fri Jan 14 11:04:12 2022 +0100 + + microsite: add links page with stable links to various places + + Signed-off-by: Patrik Oldsberg + +commit 5390c64d87e2c9d1abd9547bcc9a82c174cc73ba +Merge: 2b46058df8 9565610509 +Author: Fredrik Adelöw +Date: Wed Jan 19 16:13:45 2022 +0100 + + Merge pull request #8804 from lakshikaparihar/master + + Adding Mermaid instructions to Tech Docs Guides + +commit 2b46058df8abe816ba8727b109ebbfefbf2a46fd +Merge: 835b2da52a 9b9e442da0 +Author: Patrik Oldsberg +Date: Wed Jan 19 16:11:34 2022 +0100 + + Merge pull request #9031 from SDA-SE/docs/fix-oauth2proxy-reference + + docs(auth): align provider reference with config example + +commit a53d7d8143f3efd4efaf50a2ea767185c02341be +Author: elonj +Date: Wed Jan 19 09:42:35 2022 -0500 + + generated changeset + + Signed-off-by: elonj + +commit 8143d941b80af24c28dd720e534b6109e534da26 +Author: elonj +Date: Wed Jan 19 09:34:23 2022 -0500 + + ids will be name + + Signed-off-by: elonj + +commit b7c1bb21adeb1e232fb6b43eed3c0712f9b47ef7 +Author: elonj +Date: Tue Jan 18 11:31:55 2022 -0500 + + fixed GithubAuth tests + + Signed-off-by: elonj + +commit d0ad9ebe22ec457a833912d3032815bb52d54669 +Author: elonj +Date: Thu Jan 13 17:51:25 2022 -0500 + + auth providers will return entity ref as "sub" value + + Signed-off-by: elonj + +commit 9565610509c261fea7bedb668fe96f1f4785d5f8 +Author: Fredrik Adelöw +Date: Wed Jan 19 15:20:06 2022 +0100 + + prettier + + Signed-off-by: Fredrik Adelöw + +commit 6ba478138daf15064d63987becd81a12ab3872ed +Author: Joon Park +Date: Wed Jan 19 12:53:38 2022 +0000 + + Refactor useEntityPermission + + Signed-off-by: Joon Park + +commit 835b2da52afa22d3f1abaf8abf06f7c0d291c82b +Merge: 472e02160e 3a5eba9464 +Author: Fredrik Adelöw +Date: Wed Jan 19 14:59:57 2022 +0100 + + Merge pull request #8967 from djamaile/master + + chore(catalog): export RelatedEntitiesCard component + +commit 9b9e442da0a03390b877b029b28081e2e7b706d2 +Author: Dominik Schwank +Date: Wed Jan 19 14:15:49 2022 +0100 + + docs(auth): align provider reference with config example + + The used provider reference was not aligned with the config example. + + Signed-off-by: Dominik Schwank + +commit 3a5eba94647445b36e7b13df249fa717494def5b +Author: Fredrik Adelöw +Date: Wed Jan 19 13:59:09 2022 +0100 + + fixup + + Signed-off-by: Fredrik Adelöw + +commit 472e02160e29264ce03e55004454de2c2b2a8e91 +Merge: 3be00ed138 56a7513656 +Author: Ben Lambert +Date: Wed Jan 19 13:58:53 2022 +0100 + + Merge pull request #9008 from backstage/rugvip/exit + + changeset: exit prerelease mode + +commit 3be00ed138d33174daaf380880957a58efe55ebd +Merge: 04fd26b4ae 23027665f1 +Author: Johan Haals +Date: Wed Jan 19 13:58:07 2022 +0100 + + Merge pull request #9027 from backstage/rugvip/patch-tweaks + + docs/publish: tweak patch release process + +commit 04fd26b4ae0c71d725d5c13d6c05f4f08a0c1306 +Merge: cdaca3ef82 a56f3fdbb2 +Author: Ben Lambert +Date: Wed Jan 19 13:36:35 2022 +0100 + + Merge pull request #9028 from backstage/blam/goalie-workflows + + Goalie Workflow (again) + +commit bff82c9ed2708c9e092ee6d49125df320ff87ff2 +Author: Fredrik Adelöw +Date: Wed Jan 19 13:21:49 2022 +0100 + + fixup + + Signed-off-by: Fredrik Adelöw + +commit cdaca3ef82c630ee9dd0e450d4b6ee29142f8888 +Merge: 2e903d91af 725af819e3 +Author: Patrik Oldsberg +Date: Wed Jan 19 13:34:10 2022 +0100 + + Merge pull request #9029 from backstage/mob/fix-changeset-release + + Run prepare release script part of the changeset release + +commit 725af819e353b46bb47e9f2ff420e0caf3794632 +Author: blam +Date: Wed Jan 19 13:29:51 2022 +0100 + + Run prepare release script part of the changeset release + + Co-authored-by: Johan Haals + Co-authored-by: Fredrik Adelöw + Co-authored-by: Patrik Oldsberg + Signed-off-by: blam + +commit 7f9270117a3c5e4a72f60bd2210a5c5f9c0a5759 +Author: elstranack +Date: Thu Jan 13 13:59:12 2022 -0800 + + Removing the any and updating the api:report + + Signed-off-by: elstranack + +commit 064e750a503613d6fea810323ba19971a50a3657 +Author: elstranack +Date: Fri Jan 7 08:17:47 2022 -0800 + + Adding hover message and an info icon. + + Signed-off-by: elstranack + +commit a56f3fdbb20b2e68946cfe3b0d70a703f602f0fc +Author: blam +Date: Wed Jan 19 13:00:43 2022 +0100 + + docs: updating some documentation for the workflows + + Signed-off-by: blam + +commit 23027665f19799b4e5b1041ffd2690b639d5c78c +Author: Patrik Oldsberg +Date: Wed Jan 19 12:59:03 2022 +0100 + + docs/publish: tweak patch release process + + Signed-off-by: Patrik Oldsberg + +commit b2313e2329eb43bd1ffbd6523bcfba6acf841282 +Author: blam +Date: Wed Jan 19 12:57:25 2022 +0100 + + chore: pull.user not pull.author + + Signed-off-by: blam + +commit 2e903d91afd15ca91c9591281392f6d5cf20a980 +Merge: e14cba1e33 751e0ceb2a +Author: Ben Lambert +Date: Wed Jan 19 12:53:47 2022 +0100 + + Merge pull request #9025 from backstage/blam/fix-todo-plugin-readme + + todos: fix typo in README.md + +commit e14cba1e331b9aa2640b6e553233a3aa917db9dd +Merge: 94c0026640 17eabeb6ad +Author: Ben Lambert +Date: Wed Jan 19 12:51:50 2022 +0100 + + Merge pull request #9026 from backstage/blam/goalie-workflows + + goalie-workflow: wrap the action as it's not a starting + +commit 440c534dd8c61db83edde221aec7c2adb4c31c95 +Author: djamaile +Date: Wed Jan 19 12:34:15 2022 +0100 + + chore: change exported component name + + Signed-off-by: djamaile + +commit 94c00266400253d899501df463d14e212f786c19 +Merge: 99f675b5aa dfbd30a14c +Author: Fredrik Adelöw +Date: Wed Jan 19 12:12:49 2022 +0100 + + Merge pull request #9022 from mufaddal7/fix/newrelic-dashboard + + Fix/newrelic dashboard + +commit 99f675b5aa2c7aec35e5372f0ea6163da53fda19 +Merge: bc75e051db f815b7e4a4 +Author: Fredrik Adelöw +Date: Wed Jan 19 12:10:25 2022 +0100 + + Merge pull request #8995 from backstage/dependabot/npm_and_yarn/google-cloud/firestore-5.0.2 + + build(deps): bump @google-cloud/firestore from 4.15.1 to 5.0.2 + +commit 17eabeb6ad29878cef216bc93345b108bc98e523 +Author: blam +Date: Wed Jan 19 11:56:50 2022 +0100 + + chore: wrap the action as it's not a starting + + Signed-off-by: blam + +commit 751e0ceb2ac80c0861d68d7667ef6fc4796037aa +Author: blam +Date: Wed Jan 19 11:25:01 2022 +0100 + + fix: readme typo + + Signed-off-by: blam + +commit bc75e051db1ca820f09053d9e63793b871f84917 +Merge: e5783ad087 476c05a6bd +Author: Fredrik Adelöw +Date: Wed Jan 19 11:51:43 2022 +0100 + + Merge pull request #9018 from backstage/dependabot/npm_and_yarn/lint-staged-12.2.0 + + chore(deps-dev): bump lint-staged from 11.1.2 to 12.2.0 + +commit e5783ad087d9f0143087ff97fc9389a816d32bb3 +Merge: cc33f8d8cb 1245434124 +Author: Fredrik Adelöw +Date: Wed Jan 19 11:49:42 2022 +0100 + + Merge pull request #9023 from backstage/blam/goalie-workflows + + Remove the awaiting-review label when the PR is closed + +commit e845a5b30aea95fff2e852f570ed08f75013d731 +Author: blam +Date: Wed Jan 19 11:41:48 2022 +0100 + + chore: updated patched.json with the next release for plugin-todo + + Signed-off-by: blam + +commit cc33f8d8cb8a258f349de2b65e0dbd9b1607afb2 +Merge: 84c63a39b7 520332da27 +Author: Fredrik Adelöw +Date: Wed Jan 19 11:39:37 2022 +0100 + + Merge pull request #8782 from akz08/reroute-register-api + + Reroute register api + +commit 4d6b58d5b6ea114ee1f2bc7c2a55c46d4b20b1e9 +Author: blam +Date: Wed Jan 19 11:25:01 2022 +0100 + + fix: readme typo + + Signed-off-by: blam + +commit 84c63a39b7fe88c841e3660330858321baa2ee96 +Merge: 1f65b3752e 0e76e264e9 +Author: Fredrik Adelöw +Date: Wed Jan 19 11:31:25 2022 +0100 + + Merge pull request #9010 from RoadieHQ/update-github-credentials-provider + + Update GitHub credentials provider + +commit 1245434124bf8e7bf809c851a24442ad7dfb709f +Author: blam +Date: Wed Jan 19 10:38:33 2022 +0100 + + chore: namespace the workflow name + + Signed-off-by: blam + +commit 21d2908351526495bf11e16efc733588a38e0668 +Author: blam +Date: Wed Jan 19 10:35:46 2022 +0100 + + chore: remove extra request - not needed as we already have the PR and only use it for the author. + + Signed-off-by: blam + +commit 1f65b3752ec030b2ad26b1e4d0e49098976ca200 +Merge: f92294b004 cd6854046e +Author: Eric Peterson +Date: Wed Jan 19 10:10:49 2022 +0100 + + Merge pull request #9001 from backstage/validate-search-query-string + + search-backend: validate query string + +commit 0981cb2f571459cbb6931fb69c914c149957b922 +Author: blam +Date: Wed Jan 19 09:56:52 2022 +0100 + + chore: remove the label when it's closed + + Signed-off-by: blam + +commit f92294b0047eac83d1346649b937d09d4dc217e3 +Merge: 5754f2d200 4b42944ca0 +Author: Ben Lambert +Date: Wed Jan 19 09:42:18 2022 +0100 + + Merge pull request #9013 from backstage/blam/goalie-workflows + + Don't remove the `awaiting-review` label if the author was the last event + +commit 5754f2d200224ea3eb52559fc8de2e2c8b39a6dc +Merge: ec60bc64a9 59732bb11f +Author: Fredrik Adelöw +Date: Wed Jan 19 09:32:16 2022 +0100 + + Merge pull request #8455 from Sarabadu/master + + [RFC] LayoutProvider and focusContent + +commit dfbd30a14cef244631696b7250362d3f0f3de4cd +Author: mufaddal motiwala +Date: Wed Jan 19 13:02:58 2022 +0530 + + md quality workflow check + + Signed-off-by: mufaddal motiwala + +commit afe1bd78d2a29421939e5a8698bba3619a6f8af5 +Author: mufaddal motiwala +Date: Wed Jan 19 12:53:02 2022 +0530 + + add changeset + + Signed-off-by: mufaddal motiwala + +commit 69883ebcc01905286302378830aafacc9e58eacf +Author: mufaddal motiwala +Date: Wed Jan 19 12:50:30 2022 +0530 + + render single page dashboards + + Signed-off-by: mufaddal motiwala + +commit ec60bc64a9e2c2d2ee01e2c1dcb3861bb5f210ec +Merge: 3259b08078 ee083012f9 +Author: Fredrik Adelöw +Date: Wed Jan 19 06:35:05 2022 +0100 + + Merge pull request #9017 from backstage/dependabot/npm_and_yarn/types/dockerode-3.3.1 + + chore(deps): bump @types/dockerode from 3.3.0 to 3.3.1 + +commit 3259b08078c073fc3bf18b045cbcc517a92ca3c6 +Merge: bb8773073d b9084ed6fe +Author: Fredrik Adelöw +Date: Wed Jan 19 06:33:36 2022 +0100 + + Merge pull request #9019 from backstage/dependabot/npm_and_yarn/acuris/aws-es-connection-2.3.0 + + chore(deps): bump @acuris/aws-es-connection from 2.2.0 to 2.3.0 + +commit bb8773073d761a3b6cd35d5c69403bb7aeb10e8f +Merge: c67b1bdb03 8a47851284 +Author: Fredrik Adelöw +Date: Wed Jan 19 06:32:40 2022 +0100 + + Merge pull request #9020 from backstage/dependabot/npm_and_yarn/testcontainers-8.2.0 + + chore(deps): bump testcontainers from 8.1.2 to 8.2.0 + +commit c67b1bdb03a98aab85957ad5b62c96efd26ec4e3 +Merge: d5f2f907a7 6da99cedf6 +Author: Fredrik Adelöw +Date: Wed Jan 19 06:31:52 2022 +0100 + + Merge pull request #9021 from backstage/dependabot/npm_and_yarn/types/nunjucks-3.2.1 + + chore(deps-dev): bump @types/nunjucks from 3.2.0 to 3.2.1 + +commit 6da99cedf65ef10bbc6b1f5c95ebe643b8fd8617 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Wed Jan 19 04:39:25 2022 +0000 + + chore(deps-dev): bump @types/nunjucks from 3.2.0 to 3.2.1 + + Bumps [@types/nunjucks](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/nunjucks) from 3.2.0 to 3.2.1. + - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) + - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/nunjucks) + + --- + updated-dependencies: + - dependency-name: "@types/nunjucks" + dependency-type: direct:development + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit 8a478512845b49d70e7d282d3effb5a2e0ef79d0 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Wed Jan 19 04:37:39 2022 +0000 + + chore(deps): bump testcontainers from 8.1.2 to 8.2.0 + + Bumps [testcontainers](https://github.com/testcontainers/testcontainers-node) from 8.1.2 to 8.2.0. + - [Release notes](https://github.com/testcontainers/testcontainers-node/releases) + - [Commits](https://github.com/testcontainers/testcontainers-node/compare/v8.1.2...v8.2.0) + + --- + updated-dependencies: + - dependency-name: testcontainers + dependency-type: direct:production + update-type: version-update:semver-minor + ... + + Signed-off-by: dependabot[bot] + +commit b9084ed6fe7c25407694c1305ea1fc27ce633c44 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Wed Jan 19 04:35:47 2022 +0000 + + chore(deps): bump @acuris/aws-es-connection from 2.2.0 to 2.3.0 + + Bumps [@acuris/aws-es-connection](https://github.com/mergermarket/acuris-aws-es-connection) from 2.2.0 to 2.3.0. + - [Release notes](https://github.com/mergermarket/acuris-aws-es-connection/releases) + - [Commits](https://github.com/mergermarket/acuris-aws-es-connection/commits) + + --- + updated-dependencies: + - dependency-name: "@acuris/aws-es-connection" + dependency-type: direct:production + update-type: version-update:semver-minor + ... + + Signed-off-by: dependabot[bot] + +commit 476c05a6bdd84a20d3fd38f1f3b8941cb3b4feb8 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Wed Jan 19 04:32:54 2022 +0000 + + chore(deps-dev): bump lint-staged from 11.1.2 to 12.2.0 + + Bumps [lint-staged](https://github.com/okonet/lint-staged) from 11.1.2 to 12.2.0. + - [Release notes](https://github.com/okonet/lint-staged/releases) + - [Commits](https://github.com/okonet/lint-staged/compare/v11.1.2...v12.2.0) + + --- + updated-dependencies: + - dependency-name: lint-staged + dependency-type: direct:development + update-type: version-update:semver-major + ... + + Signed-off-by: dependabot[bot] + +commit ee083012f93925b440baf3e6f5657c8c327577f9 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Wed Jan 19 04:17:53 2022 +0000 + + chore(deps): bump @types/dockerode from 3.3.0 to 3.3.1 + + Bumps [@types/dockerode](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/dockerode) from 3.3.0 to 3.3.1. + - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) + - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/dockerode) + + --- + updated-dependencies: + - dependency-name: "@types/dockerode" + dependency-type: direct:production + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit 4b42944ca031682d61a41d2f199432afec3883fb +Author: blam +Date: Tue Jan 18 22:46:08 2022 +0100 + + chore: small fix not to remove the label if the author was the last event to the issues + + Signed-off-by: blam + +commit d5f2f907a784cfe8ba4afa37a294559a1bb0d111 +Merge: 77416d04f7 0c3641fc84 +Author: Ben Lambert +Date: Tue Jan 18 22:25:06 2022 +0100 + + Merge pull request #9012 from backstage/blam/goalie-workflows + + Use PR target for higher permissions + +commit 0c3641fc84210e70b0c35998055aa9ee927fb169 +Author: blam +Date: Tue Jan 18 22:08:20 2022 +0100 + + chore: added a noite around the repo token + + Signed-off-by: blam + +commit 77416d04f7a226dffebd04f6db26d5c2486136b4 +Merge: 5387ea8f0d 5324ccaa8e +Author: Patrik Oldsberg +Date: Tue Jan 18 21:55:10 2022 +0100 + + Merge pull request #9011 from backstage/rugvip/capd + + create-app: switch peer dep range to empty + +commit e2a8331c600207584dc4ec6bfacfff90f09c5710 +Author: blam +Date: Tue Jan 18 21:46:43 2022 +0100 + + chore: use GITHUB_TOKEN + + Signed-off-by: blam + +commit 2c2695cc1a0340620963834b45ad61bf5b193643 +Author: blam +Date: Tue Jan 18 21:42:16 2022 +0100 + + chore: some small changes to try and get the workflow running properly + + Signed-off-by: blam + +commit 0e76e264e9bec1df68a73b75b6d8d361418893d1 +Author: Iain Billett +Date: Tue Jan 18 18:30:27 2022 +0000 + + Return undefined rather than an empty string + + Signed-off-by: Iain Billett + +commit 520332da2773e80986057bc81010424c637bd095 +Author: Kamil Zainal +Date: Tue Jan 18 18:24:44 2022 +0000 + + Update to reflect rename + + Signed-off-by: Kamil Zainal + +commit f8af53571deddc6c2a5c32c95161b3f2799f17b8 +Author: Kamil Zainal +Date: Tue Jan 18 18:22:03 2022 +0000 + + Alter changeset to reflect changes local to the package + + Signed-off-by: Kamil Zainal + +commit 59732bb11f46b5cbf89f5d6131938cf097174d87 +Author: Juan Pablo Garcia Ripa +Date: Tue Jan 18 19:20:55 2022 +0100 + + fix api-report changes + + Signed-off-by: Juan Pablo Garcia Ripa + +commit 027bc50cc569e93cc482567f05f49e4777ea19f3 +Author: Kamil Zainal +Date: Tue Jan 18 18:12:36 2022 +0000 + + Rename registerComponent to registerApi to better communicate intent + + Signed-off-by: Kamil Zainal + +commit 48d75dcc2adc2c0b6510d2387b28917a59494036 +Author: Juan Pablo Garcia Ripa +Date: Tue Jan 18 19:11:33 2022 +0100 + + fix api report + + Signed-off-by: Juan Pablo Garcia Ripa + +commit 5324ccaa8eaeb126ff598beb7711b3c67b03b5ef +Author: Patrik Oldsberg +Date: Tue Jan 18 19:10:00 2022 +0100 + + create-app: switch peer dep range to empty + + Signed-off-by: Patrik Oldsberg + +commit f45e99e5da40d5eeca7303212ec02fa99dfe1036 +Author: Iain Billett +Date: Tue Jan 18 18:09:14 2022 +0000 + + Changeset + + Signed-off-by: Iain Billett + +commit 2030b5e80dadf3de04a793ce5a17e8f2c14f53c1 +Author: Iain Billett +Date: Tue Jan 18 18:01:07 2022 +0000 + + Return an empty token where an installation owner is not allowed + + While this is less obvious to the user this facilitates anonymous access + to (public) files where the app is installed but the owner is not in the + allowed list. + + Signed-off-by: Iain Billett + +commit 1523926507ea155442532ff0a5d67b10a8a312fe +Author: Juan Pablo Garcia Ripa +Date: Tue Jan 18 18:58:51 2022 +0100 + + add documentation and changeset + + Signed-off-by: Juan Pablo Garcia Ripa + +commit 5387ea8f0da9ccc6cedd108795b7e4ca76055d94 +Merge: a724d38208 ec33c21c9d +Author: Fredrik Adelöw +Date: Tue Jan 18 18:54:46 2022 +0100 + + Merge pull request #9007 from backstage/blam/goalie-workflows + + chore: split the goalie workflows for permissions + +commit a724d38208c52ce464f6bcb721f42a1220cf3e8d +Merge: ffa0ecfac4 59a9309536 +Author: Patrik Oldsberg +Date: Tue Jan 18 18:46:28 2022 +0100 + + Merge pull request #9000 from backstage/rugvip/noignore + + remove usage of @ts-ignore + +commit ffa0ecfac43981c30b9764e7073e23c1de5f7f39 +Author: Joe Porpeglia +Date: Tue Jan 18 11:09:40 2022 -0500 + + Remove unused dependency + + Signed-off-by: Joe Porpeglia + +commit 597f7a604de4d710ae47de14e54e0b9f198b2e81 +Author: Joe Porpeglia +Date: Fri Jan 14 14:28:54 2022 -0500 + + Update changeset + + Signed-off-by: Joe Porpeglia + +commit ca2ee182c36895e73bf23db74c58a6a2bb17f3c3 +Author: Joe Porpeglia +Date: Thu Jan 13 16:25:28 2022 -0500 + + Add changeset + + Signed-off-by: Joe Porpeglia + +commit f911a60bafe69407aa79f6588d8cb5b6eb95d103 +Author: Joe Porpeglia +Date: Thu Jan 13 15:20:59 2022 -0500 + + Update api-report + + Signed-off-by: Joe Porpeglia + +commit cd3c5b132ea0251e25f3aa7447e99a15e4c4509b +Author: Joe Porpeglia +Date: Thu Jan 13 14:25:03 2022 -0500 + + Update package exports to align with ADR004 + + Signed-off-by: Joe Porpeglia + +commit ccaa50511f452558f2ce4d4bc184baee8a8f9d4b +Author: Joe Porpeglia +Date: Thu Jan 13 14:17:24 2022 -0500 + + Make getCacheKey sync + + Signed-off-by: Joe Porpeglia + +commit 63e8b8605e41638a36aa9e6ee02ff5b1f766b390 +Author: Joe Porpeglia +Date: Tue Jan 11 18:51:07 2022 -0500 + + Disable catalog permission middleware unless permission.enabled = true + + Signed-off-by: Joe Porpeglia + +commit 17ebcb09cd46d7751480467b60c761593bdbdd4f +Author: Joe Porpeglia +Date: Tue Jan 11 18:47:44 2022 -0500 + + Refactor router tests + + Adds a `createApp` helper instead of creating the express app in `beforeEach`. This allows tests to mock behavior of router creation, like toggling certain middleware based on config values. + + Signed-off-by: Joe Porpeglia + +commit f1918143e51b3d261408794362f72df5714c188e +Author: Joe Porpeglia +Date: Tue Jan 11 16:28:19 2022 -0500 + + Compute cache keys from tokens instead of user entity refs + + Signed-off-by: Joe Porpeglia + +commit e9857d0b82c36b2b0d58d842e165406dd32ee447 +Author: Joe Porpeglia +Date: Tue Jan 11 16:19:10 2022 -0500 + + Remove 403 handling logic + + Signed-off-by: Joe Porpeglia + +commit d9afa2e882329815624811d75cd3c057fc394ac9 +Author: Joe Porpeglia +Date: Mon Jan 10 18:57:15 2022 -0500 + + Add tests to verify /static/docs behavior + + Signed-off-by: Joe Porpeglia + +commit c2f54048d1dd916749b09ebd38f29acaf642a3a9 +Author: Joe Porpeglia +Date: Mon Jan 10 16:47:22 2022 -0500 + + Use catalog: prefix for catalog entity cache + + Signed-off-by: Joe Porpeglia + +commit 413c9fab08389bd619a4f1ecc9578194a030e2c2 +Author: Joe Porpeglia +Date: Fri Jan 7 17:47:59 2022 -0500 + + Cancel cache read if it takes too long + + Signed-off-by: Joe Porpeglia + +commit f5598677bf9a38b654a6b9bc5a3962d7f759acf7 +Author: Joe Porpeglia +Date: Fri Jan 7 17:46:53 2022 -0500 + + Set cache value asynchronously + + Signed-off-by: Joe Porpeglia + +commit 45f37c98354ff6a4749f2857a0260863d44882fa +Author: Joe Porpeglia +Date: Wed Jan 5 18:16:25 2022 -0500 + + Use CachedEntityLoader in techdocs router + + Signed-off-by: Joe Porpeglia + +commit 7dcc6b1fe663d4ed4ab413420516d78cb92d4dbb +Author: Joe Porpeglia +Date: Wed Jan 5 18:16:10 2022 -0500 + + Add CachedEntityLoader for techdocs + + Signed-off-by: Joe Porpeglia + +commit b76fec242dfa7ff36e3409fb75427da1149ba599 +Author: Joe Porpeglia +Date: Wed Jan 5 14:57:07 2022 -0500 + + Verify access to related catalog entities for all techdocs api routes + + Signed-off-by: Joe Porpeglia + Co-authored-by: Nataliya Issayeva + +commit ec33c21c9d5664d14ee1fd65971afcb037538cb9 +Author: blam +Date: Tue Jan 18 18:33:21 2022 +0100 + + chore: make the workflows pretty + + Signed-off-by: blam + +commit 0163fb056f171c56adfab54a65c4685fb3ce0a30 +Author: blam +Date: Tue Jan 18 18:31:19 2022 +0100 + + chore: run the goalie Workflow + + Signed-off-by: blam + +commit c6946dedbe707eba96777ea2ad222502305e1eb0 +Author: blam +Date: Tue Jan 18 18:24:29 2022 +0100 + + chore: missed the Codeowners + Signed-off-by: blam + +commit e23c2463d51cb098961e4e7e58fc264fa96df087 +Author: blam +Date: Tue Jan 18 18:21:29 2022 +0100 + + chore: move out script into one file instead because args were too long + + Signed-off-by: blam + +commit 5cefc14d5176b9705119405be9deab54a94b408c +Author: blam +Date: Tue Jan 18 18:11:08 2022 +0100 + + chore: more comment removal? + + Signed-off-by: blam + +commit 1129e3d1bc863f0008c4cc042f1f39c337c491e8 +Author: blam +Date: Tue Jan 18 18:07:28 2022 +0100 + + chore: remove some comments and maybe it works? + + Signed-off-by: blam + +commit 6be405bde435632fe5655d262cfa0c215bca1c7c +Author: Joon Park +Date: Tue Jan 18 16:40:02 2022 +0000 + + Refactor tests to use mock api + + Signed-off-by: Joon Park + +commit 557ad7e4629bff927a129a15b3991e5ebcaa375c +Author: blam +Date: Tue Jan 18 18:04:46 2022 +0100 + + feat: split out the workflow to run for each open PR + + signed-off-by: blam + +commit cd6854046ebac7e31dfb68d39d306a309445d416 +Author: MT Lewis +Date: Tue Jan 18 12:27:14 2022 +0000 + + search-backend: validate query string + + Ensures that known query params accepted by the search endpoint have + the correct type after parsing + + Signed-off-by: MT Lewis + +commit c54c0d9d10397f6c5a5c1c3f042a79c8603ea911 +Author: Joon Park +Date: Mon Jan 17 17:59:59 2022 +0000 + + Disable unregister entity button in catalog if unauthorized + + Signed-off-by: Joon Park + +commit 65b0d1b3fdd310ad993e5e1735c81acd65269ba0 +Author: blam +Date: Tue Jan 18 17:45:03 2022 +0100 + + chore: dont destructure + + Signed-off-by: blam + +commit f2bb24298f43d4530152085688069703def56eaf +Author: blam +Date: Tue Jan 18 17:43:40 2022 +0100 + + chore: added some debug logging + + Signed-off-by: blam + +commit 56a7513656c5b3753deb0425c8b7b52f031bf39f +Author: Patrik Oldsberg +Date: Tue Jan 18 17:43:23 2022 +0100 + + changeset: exit prerelease mode + + Signed-off-by: Patrik Oldsberg + +commit c732188aeed0544a1fc408f84ad6f9319b97f7f9 +Author: blam +Date: Tue Jan 18 17:42:14 2022 +0100 + + chore: goalie cron + + Signed-off-by: blam + +commit f38b57fcf79cf950c3f689fc979641de59e26dcd +Author: blam +Date: Tue Jan 18 17:38:06 2022 +0100 + + chore: run every minute + + Signed-off-by: blam + +commit 196e572e98ea8d2fdc9bab4ab4e6eca3a707a326 +Author: blam +Date: Tue Jan 18 17:35:50 2022 +0100 + + chore: rename the workflow so it runs + + Signed-off-by: blam + +commit d6a79e311fb0af527bc7d35ca901b9b8de0bba5f +Author: Alef +Date: Tue Jan 18 13:33:58 2022 -0300 + + fix: new linec + + Signed-off-by: Alef + +commit 9af839d2961f794faef9810241b03cc6f731a33f +Author: blam +Date: Tue Jan 18 17:33:48 2022 +0100 + + chore: split the workflows + + Signed-off-by: blam + +commit 6680853e0c51fadcc9a2862dcea2ab52115a3171 +Author: Joon Park +Date: Tue Jan 18 16:04:57 2022 +0000 + + Export conditional permission policy helpers from catalog-backend (#8966) + + * Export conditional permission policy helpers from catalog-backend + + Signed-off-by: Joon Park + + * Rename exports to include 'catalog' + + Signed-off-by: Joon Park + + * Minor comment edits + + Co-authored-by: MT Lewis + Signed-off-by: Joon Park + + Co-authored-by: MT Lewis + +commit dc68ebc6de64936222445cf7c8fe8296d93dc6b5 +Merge: 7e38acaa9e 48b86d2929 +Author: Fredrik Adelöw +Date: Tue Jan 18 16:59:54 2022 +0100 + + Merge pull request #9005 from msfuko/master + + Add Hopin to the list of adopters + +commit 7e38acaa9e962e57544ecfe4e12ede6355ec078b +Author: Joon Park +Date: Tue Jan 18 15:55:49 2022 +0000 + + Integrate permissions into catalog-backend location endpoints (#8887) + + Signed-off-by: Joon Park + +commit 48b86d292989d914875e4889591996f44efb5503 +Author: Chloe Lee +Date: Tue Jan 18 10:39:57 2022 -0500 + + Add Hopin to the list of adopters + +commit 79a7d37964abb610525937131f6d89c376fe1a64 +Merge: 31184691d5 b0755576c2 +Author: Ben Lambert +Date: Tue Jan 18 16:11:45 2022 +0100 + + Merge pull request #9003 from backstage/blam/goalie-workflows + + Goalie workflow running on forks + +commit 31184691d5a38cb78b091c8f7ad6db80604519a6 (tag: v0.63.1, tag: release-2022-01-18) +Merge: e9861467d0 0925b232fc +Author: Patrik Oldsberg +Date: Tue Jan 18 15:59:26 2022 +0100 + + Merge pull request #8921 from backstage/changeset-release/master + + Version Packages (next) + +commit b0755576c22808557481ba662df3865985c6b7d8 +Author: blam +Date: Tue Jan 18 15:16:42 2022 +0100 + + chore: pretty + + Signed-off-by: blam + +commit 08923f548fb72b02952d6856a428da21c220bd66 +Author: blam +Date: Tue Jan 18 15:12:36 2022 +0100 + + chore: change permissions + + Signed-off-by: blam + +commit 9bfe00c3510e3427a4ecacb546f9475318753e0c +Author: blam +Date: Tue Jan 18 15:11:24 2022 +0100 + + chore: spoiler alert, it's a secret + + Signed-off-by: blam + +commit 5ca2edfcb9850046e1470f280e2afe0aa1a228dc +Author: blam +Date: Tue Jan 18 15:09:05 2022 +0100 + + chore: try this token? + + Signed-off-by: blam + +commit f44a185ab70878dfa530e3e50fdd8a23159cab57 +Author: blam +Date: Tue Jan 18 15:05:31 2022 +0100 + + chore: maybe these tokens workflows + + Signed-off-by: blam + +commit 192a8bc84a8b0228513272e1ef527e8bb4a283cd +Author: blam +Date: Tue Jan 18 15:03:48 2022 +0100 + + set the org as it's installed at an org level + + Signed-off-by: blam + +commit 0925b232fc1c625cee07a6c3ceda7dedf59f3bb8 +Author: Patrik Oldsberg +Date: Tue Jan 18 14:57:45 2022 +0100 + + create-app: fix release version to 0.4.13 + + Signed-off-by: Patrik Oldsberg + +commit a94a2b8b3fd5974b122d14c282ebe6eebf90267d +Author: github-actions[bot] +Date: Tue Jan 18 13:49:07 2022 +0000 + + Version Packages (next) + +commit e9861467d058dbd8be9ab1f436b01b9e2355bffc +Merge: fa4967f869 99eda291cf +Author: Patrik Oldsberg +Date: Tue Jan 18 14:42:46 2022 +0100 + + Merge pull request #8999 from backstage/rugvip/clipre + + cli: fix versioning provider test to work with pre-releases + +commit 5a49582e93e5eebc0c1873b16c958d0ec5c37d2a +Author: blam +Date: Tue Jan 18 14:35:27 2022 +0100 + + chore: fix syntax + + Signed-off-by: blam + +commit 08b7b16cb162ff694e235e30f0baaf3262eba7d2 +Author: blam +Date: Tue Jan 18 14:32:50 2022 +0100 + + chore: updating permission for runing on forks + + Signed-off-by: blam + i + +commit 6108041ce4c5ccb341637a4f4bcddb6fb4ee18ea +Author: blam +Date: Tue Jan 18 14:29:16 2022 +0100 + + chore: added get-workflow-token script + + Signed-off-by: blam + +commit fa4967f869a2facfab87f1c146dceb7e0bcf4a38 +Merge: a57bee1a02 805751631a +Author: Fredrik Adelöw +Date: Tue Jan 18 14:24:25 2022 +0100 + + Merge pull request #9002 from backstage/freben/disable-docker-in-ci + + disable testcontainers docker based tests in ci + +commit 805751631abdf41142373c2f738e0e4d95495653 +Author: Fredrik Adelöw +Date: Tue Jan 18 14:05:38 2022 +0100 + + disable testcontainers docker based tests in ci + + Signed-off-by: Fredrik Adelöw + +commit a57bee1a0286e40acb7acaa3d381842b68ff04d6 +Merge: b4e6325654 d45cb13107 +Author: Patrik Oldsberg +Date: Tue Jan 18 14:01:32 2022 +0100 + + Merge pull request #8982 from backstage/rugvip/tsbump + + Upgrade TypeScript to 4.5 and decouple versioning + +commit b4e63256541ebe09184bad719b90496ec93f2987 +Merge: 68210a3e50 48248e2db5 +Author: Fredrik Adelöw +Date: Tue Jan 18 14:01:09 2022 +0100 + + Merge pull request #8853 from backstage/catalog-backend-permission-integration/entity-ancestry + + Integrate permissions into `entityAncestry` endpoint in catalog-backend + +commit 75883ddf329cbea79cdb86b9eb3acb6c49ff0f77 +Author: Alef +Date: Tue Jan 18 09:48:11 2022 -0300 + + docs: added to custom actions doc + + Signed-off-by: Alef + +commit 68210a3e50535668c69c941324694e43458d3632 +Merge: b6d04a261c d622d37fd6 +Author: Ben Lambert +Date: Tue Jan 18 13:34:50 2022 +0100 + + Merge pull request #8497 from backstage/blam/goalie-workflows + + Goalie Workflows + +commit b6d04a261c0d40ed7a4c1e5af280a944fae30594 +Merge: d1009d3b3e d935b05a18 +Author: Patrik Oldsberg +Date: Tue Jan 18 13:27:28 2022 +0100 + + Merge pull request #8998 from backstage/rugvip/vp + + workflows: fix for changeset flow not using service account + +commit d622d37fd62a1bdb9d79c78b65b12d527c891f63 +Author: blam +Date: Tue Jan 18 13:19:55 2022 +0100 + + chore: added the missing awaits. + + Signed-off-by: blam + +commit 99eda291cfa89295e49d3181ea7d7183031ca981 +Author: Patrik Oldsberg +Date: Tue Jan 18 13:16:51 2022 +0100 + + cli: fix versioning provider test to work with pre-releases + + Signed-off-by: Patrik Oldsberg + +commit d45cb13107ebc1a709f9a583065b39eb0cadea3f +Author: Patrik Oldsberg +Date: Tue Jan 18 12:52:02 2022 +0100 + + Apply suggestions from code review + + Signed-off-by: Patrik Oldsberg + + Co-authored-by: Fredrik Adelöw + +commit 34f30674a93cfd93dd2f363ed7090650d577a625 +Author: blam +Date: Tue Jan 18 12:01:26 2022 +0100 + + chore: setting awaiting review labels until all reviews have been fulfilled + + Signed-off-by: blam + +commit 9af913243f42c85e9f8215579836600d29c5dd31 +Author: blam +Date: Tue Jan 18 11:56:56 2022 +0100 + + chore: thinking that this should be working now + + Signed-off-by: blam + +commit 7400c02e70ec2b25a9a9f99ed09a8c5bf5fb326c +Author: blam +Date: Tue Jan 18 11:48:03 2022 +0100 + + chore: think it should work now + + Signed-off-by: blam + +commit d935b05a188ded163362dfd9277e151de6ce7c65 +Author: Patrik Oldsberg +Date: Tue Jan 18 11:43:48 2022 +0100 + + workflows: fix for changeset flow not using service account + + Signed-off-by: Patrik Oldsberg + +commit 7c879508c41b25eab9ef61fa0ff7a23813f30f4b +Author: blam +Date: Tue Jan 18 11:36:34 2022 +0100 + + use the codeowners library instead + + Signed-off-by: blam + +commit 8f3dde70c8264a1459d3f4c3a3edc20f67d17118 +Author: blam +Date: Tue Jan 18 11:26:12 2022 +0100 + + chore: added logging + + Signed-off-by: blam + +commit 995ab54b72f5b5e4f8052b50bf3a665680c18a16 +Author: blam +Date: Tue Jan 18 11:23:56 2022 +0100 + + chore: think the match should be right now + + Signed-off-by: blam + +commit 59a9309536427677ffaeabfb6330c0bd579ede3f +Author: Patrik Oldsberg +Date: Tue Jan 18 11:19:01 2022 +0100 + + remove usage of @ts-ignore + + Signed-off-by: Patrik Oldsberg + +commit 1c91bea01eb0bfdef3e76238190aff2199257bb0 +Author: blam +Date: Tue Jan 18 11:11:29 2022 +0100 + + catch all + Signed-off-by: blam + + Signed-off-by: blam + +commit 407d010e5c2ab12d45238556f028a87497b86a37 +Author: blam +Date: Tue Jan 18 11:07:56 2022 +0100 + + chore: add some debug logging + + Signed-off-by: blam + +commit d1009d3b3ee3e1e8af6c66e5031dd6b7769871fa +Merge: 65752caad7 2a42d573d2 +Author: Patrik Oldsberg +Date: Tue Jan 18 11:06:14 2022 +0100 + + Merge pull request #8965 from backstage/rugvip/extractor + + cli,catalog-model: add experimental type definitions with release stage split + +commit 0c4e39408b43e89737f7cbc83561a8e2b8618e9c +Author: blam +Date: Tue Jan 18 11:04:11 2022 +0100 + + match properly + + Signed-off-by: blam + +commit a336c520e95fc90a394fc2b67a317b16ce639c2d +Author: blam +Date: Tue Jan 18 11:02:48 2022 +0100 + + chore: install minimatch + + Signed-off-by: blam + +commit 17676f3b626aa56ea5138c1b36d4c52028a6baa5 +Author: blam +Date: Tue Jan 18 11:01:38 2022 +0100 + + chore: require the correct package name + + Signed-off-by: blam + +commit 9a9d56aea1ec780521199f305aa20168fe4e9488 +Author: blam +Date: Tue Jan 18 10:59:09 2022 +0100 + + chore: install mimimatch + + Signed-off-by: blam + +commit 52c32c7f76b0fcccbc1a8f9e9dcf959dbf6dbc28 +Author: blam +Date: Tue Jan 18 10:57:23 2022 +0100 + + chore: ignore author for now + + Signed-off-by: blam + +commit 55bb755ce2d700e49675a67ffd41302b5fc99df6 +Author: blam +Date: Tue Jan 18 10:52:48 2022 +0100 + + chore: try go get the correct reviews + + Signed-off-by: blam + +commit c1a6d642bdca3e2063c9311a8907463083af02c3 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Tue Jan 18 09:46:32 2022 +0000 + + build(deps): bump helmet from 4.4.1 to 5.0.1 + + Bumps [helmet](https://github.com/helmetjs/helmet) from 4.4.1 to 5.0.1. + - [Release notes](https://github.com/helmetjs/helmet/releases) + - [Changelog](https://github.com/helmetjs/helmet/blob/main/CHANGELOG.md) + - [Commits](https://github.com/helmetjs/helmet/compare/v4.4.1...v5.0.1) + + --- + updated-dependencies: + - dependency-name: helmet + dependency-type: direct:production + update-type: version-update:semver-major + ... + + Signed-off-by: dependabot[bot] + +commit 65752caad758437b37a4e43f8cfeb1dddb5df621 +Merge: d44d8d6844 ab81d5766b +Author: Ben Lambert +Date: Tue Jan 18 10:41:44 2022 +0100 + + Merge pull request #8576 from backstage/blam/refactor-repo-url + + chore: Refactoring the `RepoUrlPicker` + +commit d44d8d6844bdc9d2e9797db5337c70d5c8e81441 +Merge: 593de33361 013301e07b +Author: Fredrik Adelöw +Date: Tue Jan 18 10:40:10 2022 +0100 + + Merge pull request #8996 from backstage/freben/node-ferhtch + + remove node-fetch from frontend packages + +commit f815b7e4a40f09b51128912ab7e219d7e1fb74ee +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Tue Jan 18 09:19:43 2022 +0000 + + build(deps): bump @google-cloud/firestore from 4.15.1 to 5.0.2 + + Bumps [@google-cloud/firestore](https://github.com/googleapis/nodejs-firestore) from 4.15.1 to 5.0.2. + - [Release notes](https://github.com/googleapis/nodejs-firestore/releases) + - [Changelog](https://github.com/googleapis/nodejs-firestore/blob/main/CHANGELOG.md) + - [Commits](https://github.com/googleapis/nodejs-firestore/compare/v4.15.1...v5.0.2) + + --- + updated-dependencies: + - dependency-name: "@google-cloud/firestore" + dependency-type: direct:production + update-type: version-update:semver-major + ... + + Signed-off-by: dependabot[bot] + +commit 4e2245a7b2800fa77f7cbbce00181ff11b8eba0c +Author: Patrik Oldsberg +Date: Tue Jan 18 10:16:05 2022 +0100 + + update API reports + + Signed-off-by: Patrik Oldsberg + +commit 593de33361e1adc826481bf83d304010655bd558 +Merge: a3c5d8e363 2899aa18c6 +Author: Johan Haals +Date: Tue Jan 18 10:13:13 2022 +0100 + + Merge pull request #8997 from backstage/rugvip/depbotfix + + workflows: fix dependabot changeset maker condition + +commit 0988dc5238452bca9d7dd654a1e42eee22d911c4 +Author: Patrik Oldsberg +Date: Tue Jan 18 09:54:09 2022 +0100 + + switch out react-use imports + + Signed-off-by: Patrik Oldsberg + +commit 08fa6a604a8b1e9ff68005c8a5f4af6970e0549d +Author: Patrik Oldsberg +Date: Tue Jan 18 00:08:58 2022 +0100 + + bump typescript to 4.5 + + Signed-off-by: Patrik Oldsberg + +commit 2899aa18c64520e7c8605712e3d9a8d58f66b264 +Author: Patrik Oldsberg +Date: Tue Jan 18 10:01:15 2022 +0100 + + workflows: fix dependabot changeset maker condition + + Signed-off-by: Patrik Oldsberg + +commit 013301e07bd39da928559f32456a28216489b35c +Author: Fredrik Adelöw +Date: Tue Jan 18 09:40:10 2022 +0100 + + remove node-fetch from frontend packages + + Signed-off-by: Fredrik Adelöw + +commit a3c5d8e363e39f38afa56c788baae58618f90b8c +Merge: a5c31502ec f0fdae8e08 +Author: Patrik Oldsberg +Date: Tue Jan 18 09:28:40 2022 +0100 + + Merge pull request #8984 from backstage/rugvip/nightly + + workflows: make nightly builds exit prerelease mode if needed + +commit a5c31502ec579edf7b2d77821400b84246df0f6d +Merge: 53ad25b800 3368dc6b62 +Author: Fredrik Adelöw +Date: Tue Jan 18 08:26:23 2022 +0100 + + Merge pull request #8974 from backstage/freben/ldapjs-clone + + clone ldapjs input objects + +commit ab81d5766b6695e32574adc7a589ee07f083aa5c +Author: blam +Date: Tue Jan 18 08:21:16 2022 +0100 + + chore: updating props api-report + + Signed-off-by: blam + +commit c56c70cf7b80b42694be66c29e7d0b28e538ac56 +Author: blam +Date: Tue Jan 18 08:16:51 2022 +0100 + + chore: fixing up code review comments for the RepoUrlPicker + + Signed-off-by: blam + +commit 53ad25b80003c430907fd2430eb004f077552b84 +Merge: 88f4518b83 021bba18c4 +Author: Ben Lambert +Date: Tue Jan 18 07:55:57 2022 +0100 + + Merge pull request #8978 from backstage/freben/rrreadme + + Update tech-radar readme + +commit c5614d98bc20d64a66cc309aad9e760046be1614 +Author: blam +Date: Tue Jan 18 07:51:31 2022 +0100 + + chore: added comment for next steps + Signed-off-by: blam + +commit 88f4518b838d1b9949e82565eb1ad4e34adae910 +Merge: 9038d8177b 9a8fb71ddf +Author: Fredrik Adelöw +Date: Tue Jan 18 07:44:49 2022 +0100 + + Merge pull request #8989 from backstage/dependabot/npm_and_yarn/eslint-8.7.0 + + build(deps): bump eslint from 8.6.0 to 8.7.0 + +commit 9038d8177bbd883bf5117e64c46a38069fa12d91 +Merge: 9274c5218f 4776b2d536 +Author: Fredrik Adelöw +Date: Tue Jan 18 07:42:53 2022 +0100 + + Merge pull request #8990 from backstage/dependabot/npm_and_yarn/kafkajs-1.16.0-beta.32 + + build(deps): bump kafkajs from 1.16.0-beta.21 to 1.16.0-beta.32 + +commit 9274c5218fe083a0947aeb2367c0ef6ee16257b9 +Merge: e484ff66a4 82ffafddee +Author: Fredrik Adelöw +Date: Tue Jan 18 07:42:13 2022 +0100 + + Merge pull request #8991 from backstage/dependabot/npm_and_yarn/http-proxy-middleware-2.0.1 + + build(deps): bump http-proxy-middleware from 2.0.0 to 2.0.1 + +commit e484ff66a4e48b45cc7533034b1ec53db83e68d2 +Merge: 08fc77dde7 52e2a8b10b +Author: Fredrik Adelöw +Date: Tue Jan 18 07:41:43 2022 +0100 + + Merge pull request #8992 from backstage/dependabot/npm_and_yarn/types/react-text-truncate-0.14.1 + + build(deps): bump @types/react-text-truncate from 0.14.0 to 0.14.1 + +commit 08fc77dde79ce164fc5b6eec77738b40863010d7 +Merge: 3e0482d134 1f9127349b +Author: Fredrik Adelöw +Date: Tue Jan 18 07:40:51 2022 +0100 + + Merge pull request #8994 from backstage/dependabot/npm_and_yarn/types/http-errors-1.8.2 + + build(deps-dev): bump @types/http-errors from 1.8.1 to 1.8.2 + +commit 1f9127349b3485a99664e52e66d5f860eb2b5944 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Tue Jan 18 04:28:05 2022 +0000 + + build(deps-dev): bump @types/http-errors from 1.8.1 to 1.8.2 + + Bumps [@types/http-errors](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/http-errors) from 1.8.1 to 1.8.2. + - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) + - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/http-errors) + + --- + updated-dependencies: + - dependency-name: "@types/http-errors" + dependency-type: direct:development + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit 52e2a8b10ba3cee8e8a56afa217ef3ee51038366 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Tue Jan 18 04:24:13 2022 +0000 + + build(deps): bump @types/react-text-truncate from 0.14.0 to 0.14.1 + + Bumps [@types/react-text-truncate](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-text-truncate) from 0.14.0 to 0.14.1. + - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) + - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react-text-truncate) + + --- + updated-dependencies: + - dependency-name: "@types/react-text-truncate" + dependency-type: direct:production + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit 82ffafddeed755a4613ba75b52f3f50606e897ca +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Tue Jan 18 04:21:54 2022 +0000 + + build(deps): bump http-proxy-middleware from 2.0.0 to 2.0.1 + + Bumps [http-proxy-middleware](https://github.com/chimurai/http-proxy-middleware) from 2.0.0 to 2.0.1. + - [Release notes](https://github.com/chimurai/http-proxy-middleware/releases) + - [Changelog](https://github.com/chimurai/http-proxy-middleware/blob/master/CHANGELOG.md) + - [Commits](https://github.com/chimurai/http-proxy-middleware/compare/v2.0.0...v2.0.1) + + --- + updated-dependencies: + - dependency-name: http-proxy-middleware + dependency-type: direct:production + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit 4776b2d536ff4d59e136f0368234650ec3502526 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Tue Jan 18 04:20:13 2022 +0000 + + build(deps): bump kafkajs from 1.16.0-beta.21 to 1.16.0-beta.32 + + Bumps [kafkajs](https://github.com/tulios/kafkajs) from 1.16.0-beta.21 to 1.16.0-beta.32. + - [Release notes](https://github.com/tulios/kafkajs/releases) + - [Changelog](https://github.com/tulios/kafkajs/blob/master/CHANGELOG.md) + - [Commits](https://github.com/tulios/kafkajs/commits) + + --- + updated-dependencies: + - dependency-name: kafkajs + dependency-type: direct:production + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit 9a8fb71ddff393e2d5eabfb34797e5c5e2e146dd +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Tue Jan 18 04:17:52 2022 +0000 + + build(deps): bump eslint from 8.6.0 to 8.7.0 + + Bumps [eslint](https://github.com/eslint/eslint) from 8.6.0 to 8.7.0. + - [Release notes](https://github.com/eslint/eslint/releases) + - [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md) + - [Commits](https://github.com/eslint/eslint/compare/v8.6.0...v8.7.0) + + --- + updated-dependencies: + - dependency-name: eslint + dependency-type: direct:production + update-type: version-update:semver-minor + ... + + Signed-off-by: dependabot[bot] + +commit f0fdae8e0875f5972e61ed9ebd274596c4742892 +Author: Patrik Oldsberg +Date: Tue Jan 18 00:54:07 2022 +0100 + + workflows: make nightly builds exit prerelease mode if needed + + Signed-off-by: Patrik Oldsberg + +commit 246532b544f09b43414af1ce3f3b9c1763b426fe +Author: Alef +Date: Mon Jan 17 20:28:10 2022 -0300 + + feat: added dotnet plugin + + Signed-off-by: Alef + +commit 3e0482d134121386fe798ca0b264d41ba8e010e0 +Merge: 4c176a81d6 fb3a33036c +Author: Patrik Oldsberg +Date: Tue Jan 18 00:01:31 2022 +0100 + + Merge pull request #8976 from backstage/rugvip/bumpnf + + yarn.lock: bump node-fetch + +commit 021bba18c4622062095849b5bf3fcb5388d870a5 +Author: Fredrik Adelöw +Date: Mon Jan 17 21:56:26 2022 +0100 + + Update readme + + Signed-off-by: Fredrik Adelöw + +commit fb3a33036c860654834a11622eb2be3fcdd8aa5d +Author: Patrik Oldsberg +Date: Mon Jan 17 21:37:55 2022 +0100 + + yarn.lock: bump node-fetch + + Signed-off-by: Patrik Oldsberg + +commit 3368dc6b621ce490b8b5392e85cff57b6ac13502 +Author: Fredrik Adelöw +Date: Mon Jan 17 20:48:18 2022 +0100 + + clone ldapjs input objects + + Signed-off-by: Fredrik Adelöw + +commit 4c176a81d6942f91a48dff77d210c4e1c48e5ede +Merge: 630080141c c52ae0a73b +Author: Fredrik Adelöw +Date: Mon Jan 17 18:34:45 2022 +0100 + + Merge pull request #8923 from kuangp/feat/shortcutIcon + + feat(shortcuts): make sidebar item icon configurable + +commit 630080141c78a8a444ab2dd42b422ade10dd98bd +Merge: dda8a168fe 31ab782686 +Author: Fredrik Adelöw +Date: Mon Jan 17 18:33:25 2022 +0100 + + Merge pull request #8946 from dweber019/patch-1 + + Export GraphQlDefinitionWidget + +commit dda8a168fe7ff7d341e0e82caa47e118ee75e35b +Merge: 59b6130d19 83fae70575 +Author: Fredrik Adelöw +Date: Mon Jan 17 18:32:46 2022 +0100 + + Merge pull request #8947 from markstickley/patch-1 + + Fixed typo and made warning a little clearer + +commit 59b6130d1902023bc9207143f5c149aa2c4f8d1e +Merge: 6b3e80069e 47277c0d8c +Author: Eric Peterson +Date: Mon Jan 17 18:27:54 2022 +0100 + + Merge pull request #8970 from backstage/techdocs/latest-container + +commit 6b3e80069efdef68b1da151c41be0c3be0396ca7 +Merge: aa9030d313 a6df0ff8bc +Author: Patrik Oldsberg +Date: Mon Jan 17 18:22:53 2022 +0100 + + Merge pull request #8964 from backstage/rugvip/build-system + + docs: introduce build system docs + +commit a6df0ff8bc31435c8f6a642f319bec9d878b449b +Author: Patrik Oldsberg +Date: Mon Jan 17 17:58:00 2022 +0100 + + docs: build system review fixes + + Co-authored-by: Fredrik Adelöw + Signed-off-by: Patrik Oldsberg + +commit 63945e3e85c3daa42c9947d87f2d43dc1df970ac +Author: Patrik Oldsberg +Date: Mon Jan 17 10:33:26 2022 +0100 + + microsite: format sidebars.json + + Signed-off-by: Patrik Oldsberg + +commit d5f3d84817aa4b10def59299975b5914a79dceeb +Author: Patrik Oldsberg +Date: Mon Jan 17 09:58:36 2022 +0100 + + docs: merge build system docs with cli docs + restructure + + Signed-off-by: Patrik Oldsberg + +commit 47277c0d8cc032bbd536bb8af741a819c69b12a8 +Author: Eric Peterson +Date: Mon Jan 17 17:34:01 2022 +0100 + + Bump @spotify/techdocs container to v0.3.6 + + Signed-off-by: Eric Peterson + +commit c52ae0a73b1b629b85ba47aa7d94c5396b9c8cf7 +Author: Phil Kuang +Date: Thu Jan 13 17:09:44 2022 -0500 + + feat(shortcuts): make sidebar item icon configurable + + Signed-off-by: Phil Kuang + +commit 31ab7826864528db6684156eaa88e1c68523ea18 +Author: Fredrik Adelöw +Date: Mon Jan 17 17:01:32 2022 +0100 + + api report + + Signed-off-by: Fredrik Adelöw + +commit 61ded2a8639d005f545de08477a5206427fafa22 +Author: Djamaile Rahamat +Date: Mon Jan 17 16:47:21 2022 +0100 + + chore(catalog): export RelatedEntitiesCard component + + Signed-off-by: djamaile + +commit 83fae7057581f1749b22a74129a235ef4b8e4b01 +Author: Fredrik Adelöw +Date: Mon Jan 17 16:52:12 2022 +0100 + + prettier + + Signed-off-by: Fredrik Adelöw + +commit aa9030d313ba88bc29d5c8c8d0685c1769278741 +Merge: a1f9b4153e 8aebc7b0db +Author: Fredrik Adelöw +Date: Mon Jan 17 16:26:17 2022 +0100 + + Merge pull request #8681 from backstage/rugvip/assetcache + + app-backend: store static assets across deployments and improve caching + +commit a1f9b4153e5e0456647d2442d17eb162e42897b6 +Merge: 101eb459e3 87f37b1674 +Author: Fredrik Adelöw +Date: Mon Jan 17 16:22:46 2022 +0100 + + Merge pull request #8845 from RoadieHQ/fact-garbage-truck + + [TechInsights] Add expiration configurations to fact retrievers + +commit 9cd42d40c45c01ea335557cb930b8dec8c8115d8 +Author: blam +Date: Mon Jan 17 15:54:51 2022 +0100 + + chore: update the ID + + Signed-off-by: blam + +commit 2ba73e1037e994846e913593d23043225a251446 +Author: blam +Date: Mon Jan 17 15:50:40 2022 +0100 + + chore: it's outputs + + Signed-off-by: blam + +commit 101eb459e3a928366862812c7b8b464064040356 +Merge: 2ab5c268b8 619bc06613 +Author: Fredrik Adelöw +Date: Mon Jan 17 15:50:13 2022 +0100 + + Merge pull request #8396 from SDA-SE/feat/DOCKM-1134 + + feat: Add new authentication provider: OAuth2Proxy + +commit 641487033ac383c3fd211c69ad5539d6ba198d8e +Author: blam +Date: Mon Jan 17 15:48:07 2022 +0100 + + chore: get the codeowners\ + + Signed-off-by: blam + +commit 43ccdf5bae43a3afbaa06fb6ef0a5d45ee84358e +Author: blam +Date: Mon Jan 17 15:45:36 2022 +0100 + + chore: fixing CODEOWNERS + + Signed-off-by: blam + +commit 23ac5b11e9b4a34371f5162b36034a130dc70c38 +Author: blam +Date: Mon Jan 17 15:38:34 2022 +0100 + + chore: fixing again + + Signed-off-by: blam + +commit 7d3308297297357799616635cfc82035ac3766f8 +Author: blam +Date: Mon Jan 17 15:36:11 2022 +0100 + + chore: use the correct path for the codeowners file + \ + + Signed-off-by: blam + +commit e9f653adaa55a7879cb61d6eb894e3f612c81e12 +Author: blam +Date: Mon Jan 17 15:34:57 2022 +0100 + + chore: actually grab the files + + Signed-off-by: blam + +commit 9af4549a844b43f0315bedd9b6f02ffbcdca0fe5 +Author: blam +Date: Mon Jan 17 15:33:06 2022 +0100 + + chore: try list all members of all teams + + Signed-off-by: blam + +commit 48248e2db5913b03c4283d9f68e45bad5820907e +Author: Joon Park +Date: Mon Jan 10 18:11:26 2022 +0000 + + Integrate permissions into entityAncestry endpoint in catalog-backend + + Signed-off-by: Joon Park + +commit 221b7813f0efcf10588234ed7a2ed1f2023fd8bf +Author: blam +Date: Mon Jan 17 14:39:14 2022 +0100 + + chore: trying to get matching review + + Signed-off-by: blam + +commit 619bc06613c6af290de785f8d4df0b57df5f37d5 +Author: Dominik Schwank +Date: Sat Jan 15 15:08:20 2022 +0100 + + feat(auth-backend): mark authHandler context as required parameter + + Signed-off-by: Dominik Schwank + +commit 6e92ee62676acdcc64b0570d43bbdab389fe6d32 +Author: Adrian Barwicki +Date: Wed Dec 15 23:03:40 2021 +0100 + + feat: add oauth2proxy provider + + Signed-off-by: Adrian Barwicki + Signed-off-by: Dominik Schwank + +commit 207d8eb0727879075ac2556642e92805bed0dc80 +Author: blam +Date: Mon Jan 17 14:29:34 2022 +0100 + + chore: flatten a little nicer + Signed-off-by: blam + +commit 2ab5c268b87fa3bc3ea33a7200db0e0fb455de87 +Merge: cc13505856 ca26a420c8 +Author: Fredrik Adelöw +Date: Mon Jan 17 14:26:40 2022 +0100 + + Merge pull request #8952 from backstage/freben/not-next + + Deprecate the legacy catalog engine + +commit 9f67b49f3cca888e8147b1f1a45dfcd6704e970f +Author: blam +Date: Mon Jan 17 14:26:40 2022 +0100 + + chore: fixy fixy + + Signed-off-by: blam + +commit ed3073bf1e02dfee880b40803bf82e690f247bb2 +Author: blam +Date: Mon Jan 17 14:21:42 2022 +0100 + + chore: added some more lookups + + Signed-off-by: blam + +commit ca26a420c82c158e613045626a24d9d5168490e0 +Author: Fredrik Adelöw +Date: Mon Jan 17 10:27:40 2022 +0100 + + update changeset + + Signed-off-by: Fredrik Adelöw + +commit 420c1cce915377db830a5e32cd7ca51c932978dc +Author: Fredrik Adelöw +Date: Sun Jan 16 16:01:38 2022 +0100 + + rename the NextEntitiesCatalog + + Signed-off-by: Fredrik Adelöw + +commit 5e1a83e4f172fee1d3249ce408acf4b8cc2d86f6 +Author: Fredrik Adelöw +Date: Sun Jan 16 15:55:01 2022 +0100 + + remove batchAddOrUpdateEntities too + + Signed-off-by: Fredrik Adelöw + +commit daec53fa1051c36424504229fcdd7daaf83ce4c9 +Author: blam +Date: Mon Jan 17 14:01:37 2022 +0100 + + chore: syntax + + Signed-off-by: blam + +commit cc13505856d7eef7aa7528e9f7644633c6fa3805 +Merge: e15ce5c16e 4d21332888 +Author: Patrik Oldsberg +Date: Mon Jan 17 14:01:34 2022 +0100 + + Merge pull request #8809 from backstage/rugvip/depr + + removed deprecations from the 2021-12-09 release + +commit f0ea274f22b8378ebe16fbda8541e2c3ea067afe +Author: blam +Date: Mon Jan 17 14:00:00 2022 +0100 + + chore: think we can do all this with one workflow\ + + Signed-off-by: blam + +commit 9f2a8dc42311e826a57451d957b465f956d5cf93 +Author: Fredrik Adelöw +Date: Sun Jan 16 14:54:05 2022 +0100 + + add migration to remove the old tables, and some cleanup + + Signed-off-by: Fredrik Adelöw + +commit 200c31c100c65615e4e980cd408f9b55dfdb9bb1 +Author: Fredrik Adelöw +Date: Sun Jan 16 14:34:51 2022 +0100 + + remove the legacy folder + + Signed-off-by: Fredrik Adelöw + +commit 462b76da149c1e6b5c521d3019f48f627be655a1 +Author: Fredrik Adelöw +Date: Sun Jan 16 14:31:51 2022 +0100 + + stop exposing legacy and replace with next + + Signed-off-by: Fredrik Adelöw + +commit 3cd87f3fa0ef640ac1cf287d1a0f49bba9efb810 +Author: blam +Date: Mon Jan 17 13:52:22 2022 +0100 + + chore: simplyfying the labels + + Signed-off-by: blam + +commit ed5752e3f02ea0d2138ee7d1038b0df6657aa1ac +Author: blam +Date: Thu Dec 16 10:44:25 2021 +0100 + + chore: updating secrets + + Signed-off-by: blam + +commit 1063afe18f3011cd560ede2c8ba42001a1218056 +Author: blam +Date: Wed Dec 15 14:39:55 2021 +0100 + + chore: updating pending review workflows + + Signed-off-by: blam + +commit be98a13b9d7c698a64fe1ffe7035dfcdeb992b76 +Author: blam +Date: Wed Dec 15 14:36:09 2021 +0100 + + chore: updating goalie review worklfows + + Signed-off-by: blam + +commit 3c7a8aee0334f8ccf504f390923a740c33f37d45 +Author: blam +Date: Wed Dec 15 14:27:51 2021 +0100 + + chore: added some workflows to add some labels to inflight PR's + + Signed-off-by: blam + +commit e15ce5c16e5ed4837151d7d96cfbee93a6098fa1 +Author: Joon Park +Date: Mon Jan 17 12:22:24 2022 +0000 + + Integrate authorization into catalog-backend delete entities endpoint (#8805) + + * Integrate authorization into catalog-backend delete entities endpoint + + Signed-off-by: Joon Park + + * Remove entity ref from request and handle conditional response + + Signed-off-by: Joon Park + +commit 4d213328883580dbb58022e42f4888ed1976d37b +Merge: 6b05ad1265 4df6c3ccb3 +Author: Patrik Oldsberg +Date: Mon Jan 17 13:07:16 2022 +0100 + + Merge branch 'master' into rugvip/depr + +commit 02687954caa020738a8539b7a1b08ab6fdb437b0 +Author: Mark Stickley +Date: Sat Jan 15 01:05:54 2022 +0000 + + Fixed typo and made warning a little clearer + + Signed-off-by: Mark Stickley + +commit 4df6c3ccb3bfcdb45920fe93496b8c0e34897a0b +Merge: c13beb05e4 258699f1ce +Author: Fredrik Adelöw +Date: Mon Jan 17 10:44:07 2022 +0100 + + Merge pull request #8958 from backstage/dependabot/npm_and_yarn/svgr/plugin-jsx-6.2.0 + + build(deps): bump @svgr/plugin-jsx from 5.5.0 to 6.2.0 + +commit 258699f1ce9529980d34253ca47621df9dccd63f +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Mon Jan 17 08:47:02 2022 +0000 + + build(deps): bump @svgr/plugin-jsx from 5.5.0 to 6.2.0 + + Bumps [@svgr/plugin-jsx](https://github.com/gregberge/svgr) from 5.5.0 to 6.2.0. + - [Release notes](https://github.com/gregberge/svgr/releases) + - [Changelog](https://github.com/gregberge/svgr/blob/main/CHANGELOG.md) + - [Commits](https://github.com/gregberge/svgr/compare/v5.5.0...v6.2.0) + + --- + updated-dependencies: + - dependency-name: "@svgr/plugin-jsx" + dependency-type: direct:production + update-type: version-update:semver-major + ... + + Signed-off-by: dependabot[bot] + +commit c13beb05e4bd2b8f66f2c5579023c82604cd75cf +Merge: 35d17bed68 f006fe2529 +Author: Fredrik Adelöw +Date: Mon Jan 17 09:39:58 2022 +0100 + + Merge pull request #8943 from djamaile/master + + feat(org): expose pageSize prop for MembersListCard component + +commit 35d17bed68f9e6c8a696e3661839f798555b8fa1 +Merge: ab548076e3 2f89895af6 +Author: Fredrik Adelöw +Date: Mon Jan 17 09:38:06 2022 +0100 + + Merge pull request #8927 from backstage/dependabot/npm_and_yarn/svgr/plugin-svgo-6.2.0 + + build(deps): bump @svgr/plugin-svgo from 5.4.0 to 6.2.0 + +commit ab548076e3b1219098b7c5f7414a3a0435589519 +Merge: 604a87a46f bc58af2722 +Author: Johan Haals +Date: Mon Jan 17 09:32:06 2022 +0100 + + Merge pull request #8950 from julioz/gocd-logo + + Replace GoCD plugin logo + +commit 604a87a46f7071b73519b78d2d6217ea706b33f6 +Merge: 4eb34102d5 28872b53dd +Author: Fredrik Adelöw +Date: Mon Jan 17 09:29:16 2022 +0100 + + Merge pull request #8962 from backstage/dependabot/npm_and_yarn/postcss-8.4.5 + + build(deps): bump postcss from 8.3.5 to 8.4.5 + +commit 4eb34102d5c1edbfa7b5d5c9d24813deb588e547 +Merge: f2bb0e6993 bf177df9c3 +Author: Fredrik Adelöw +Date: Mon Jan 17 09:28:45 2022 +0100 + + Merge pull request #8963 from backstage/dependabot/npm_and_yarn/core-js-3.20.3 + + build(deps): bump core-js from 3.19.0 to 3.20.3 + +commit f2bb0e69932396f98b4531020918a0fbcb9cd2cd +Merge: 56bbc3dd31 de907b4f20 +Author: Fredrik Adelöw +Date: Mon Jan 17 09:12:11 2022 +0100 + + Merge pull request #8954 from backstage/freben/azure-version + + fix wrong azure devops version + +commit 56bbc3dd3156989bddcdd01cbf27b2e1272f9ee9 +Merge: 5efc8924ff dc6aa5559f +Author: Fredrik Adelöw +Date: Mon Jan 17 07:35:40 2022 +0100 + + Merge pull request #8961 from backstage/dependabot/npm_and_yarn/types/jquery-3.5.13 + + build(deps-dev): bump @types/jquery from 3.5.8 to 3.5.13 + +commit 5efc8924ff460bd891f0d5fa63ca7ad62ba1a597 +Merge: 0f91ff58ce c0e4963fd1 +Author: Fredrik Adelöw +Date: Mon Jan 17 07:35:08 2022 +0100 + + Merge pull request #8960 from backstage/dependabot/npm_and_yarn/keyv-4.0.5 + + build(deps): bump keyv from 4.0.3 to 4.0.5 + +commit 0f91ff58ce4ee43895ae260dc95c7133029f833c +Merge: d268fdb61c d6a02ec73f +Author: Fredrik Adelöw +Date: Mon Jan 17 07:34:36 2022 +0100 + + Merge pull request #8959 from backstage/dependabot/npm_and_yarn/terser-webpack-plugin-5.3.0 + + build(deps): bump terser-webpack-plugin from 5.2.4 to 5.3.0 + +commit bf177df9c39b7d6b6a2977f81b8579adcba54511 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Mon Jan 17 04:22:35 2022 +0000 + + build(deps): bump core-js from 3.19.0 to 3.20.3 + + Bumps [core-js](https://github.com/zloirock/core-js) from 3.19.0 to 3.20.3. + - [Release notes](https://github.com/zloirock/core-js/releases) + - [Changelog](https://github.com/zloirock/core-js/blob/master/CHANGELOG.md) + - [Commits](https://github.com/zloirock/core-js/compare/v3.19.0...v3.20.3) + + --- + updated-dependencies: + - dependency-name: core-js + dependency-type: direct:production + update-type: version-update:semver-minor + ... + + Signed-off-by: dependabot[bot] + +commit 28872b53dd9a9db3a336a225d1b189ef25e26d52 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Mon Jan 17 04:19:55 2022 +0000 + + build(deps): bump postcss from 8.3.5 to 8.4.5 + + Bumps [postcss](https://github.com/postcss/postcss) from 8.3.5 to 8.4.5. + - [Release notes](https://github.com/postcss/postcss/releases) + - [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md) + - [Commits](https://github.com/postcss/postcss/compare/8.3.5...8.4.5) + + --- + updated-dependencies: + - dependency-name: postcss + dependency-type: direct:production + update-type: version-update:semver-minor + ... + + Signed-off-by: dependabot[bot] + +commit dc6aa5559ff5372a3c05dd690a8ed71a802f65da +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Mon Jan 17 04:18:55 2022 +0000 + + build(deps-dev): bump @types/jquery from 3.5.8 to 3.5.13 + + Bumps [@types/jquery](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jquery) from 3.5.8 to 3.5.13. + - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) + - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jquery) + + --- + updated-dependencies: + - dependency-name: "@types/jquery" + dependency-type: direct:development + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit c0e4963fd1233bcf9b6cb5996cfd94829a5eef0e +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Mon Jan 17 04:15:05 2022 +0000 + + build(deps): bump keyv from 4.0.3 to 4.0.5 + + Bumps [keyv](https://github.com/jaredwray/keyv) from 4.0.3 to 4.0.5. + - [Release notes](https://github.com/jaredwray/keyv/releases) + - [Commits](https://github.com/jaredwray/keyv/commits) + + --- + updated-dependencies: + - dependency-name: keyv + dependency-type: direct:production + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit d6a02ec73f67466050bb8c43fe748826a79868ca +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Mon Jan 17 04:10:00 2022 +0000 + + build(deps): bump terser-webpack-plugin from 5.2.4 to 5.3.0 + + Bumps [terser-webpack-plugin](https://github.com/webpack-contrib/terser-webpack-plugin) from 5.2.4 to 5.3.0. + - [Release notes](https://github.com/webpack-contrib/terser-webpack-plugin/releases) + - [Changelog](https://github.com/webpack-contrib/terser-webpack-plugin/blob/master/CHANGELOG.md) + - [Commits](https://github.com/webpack-contrib/terser-webpack-plugin/compare/v5.2.4...v5.3.0) + + --- + updated-dependencies: + - dependency-name: terser-webpack-plugin + dependency-type: direct:production + update-type: version-update:semver-minor + ... + + Signed-off-by: dependabot[bot] + +commit 6bc3d749e88419e93f9cb1afaf66346a047f4616 +Author: Patrik Oldsberg +Date: Sun Jan 16 21:58:37 2022 +0100 + + docs: add build system publishing and jest config sections + + Signed-off-by: Patrik Oldsberg + +commit 035abd52dd7e9967dec768090fa54db6d8493275 +Author: Patrik Oldsberg +Date: Sun Jan 16 20:18:54 2022 +0100 + + docs: build system tweaks and corrections + + Signed-off-by: Patrik Oldsberg + +commit e3155cbfaaa2036c1e0c073639ed6318eb88c4f3 +Author: Patrik Oldsberg +Date: Sun Jan 16 15:05:58 2022 +0100 + + docs: build system transpilers and loaders docs + + Signed-off-by: Patrik Oldsberg + +commit a2f6b59119a378b117d9b6a4419da3a04ed55edc +Author: Patrik Oldsberg +Date: Sun Jan 16 14:02:18 2022 +0100 + + docs: document backend dev and prod bundling setup + + Signed-off-by: Patrik Oldsberg + +commit 525e7aa3d7e70ab12951d6eb860420cb0eb7167c +Author: Patrik Oldsberg +Date: Sun Jan 16 12:39:37 2022 +0100 + + docs: frontend bundling docs mostly done + + Signed-off-by: Patrik Oldsberg + +commit 71c22ae2fc825ad9aba65bddc05cf4aebe9aa0c8 +Author: Patrik Oldsberg +Date: Sun Dec 19 13:47:05 2021 +0100 + + docs: halfway bundling docs + + Signed-off-by: Patrik Oldsberg + +commit 0a052c9be1dfed8b456c9cad0e3c35461614c0a3 +Author: Patrik Oldsberg +Date: Fri Dec 17 22:31:13 2021 +0100 + + docs: initial build system build step docs + + Signed-off-by: Patrik Oldsberg + +commit 7a9240a56f8e12c16e2fdd68f2ea4dc792f3291e +Author: Patrik Oldsberg +Date: Fri Dec 10 22:10:35 2021 +0100 + + docs/local-dev: build system doc tweaks and more type checking/test + + Signed-off-by: Patrik Oldsberg + +commit aaeda76427424ddb2decae0a7a08f10c63452228 +Author: Patrik Oldsberg +Date: Fri Dec 10 17:21:20 2021 +0100 + + docs: move cli/build-system to local-dev + + Signed-off-by: Patrik Oldsberg + +commit de907b4f20498efffa4c55b82fb20cd76772f944 +Author: Fredrik Adelöw +Date: Sun Jan 16 20:57:06 2022 +0100 + + fix wrong azure devops version + + Signed-off-by: Fredrik Adelöw + +commit c007bea54673a834502943738f25454b17315b93 +Author: David Weber +Date: Sun Jan 16 12:46:24 2022 +0100 + + Add change set + + Signed-off-by: David Weber + +commit 6f4f3422d809987bcd1891908417d49d45c58688 +Author: David Weber +Date: Fri Jan 14 23:19:50 2022 +0100 + + Export GraphQlDefinitionWidget + + This is important for reuse of the widget. + + Signed-off-by: David Weber + +commit 12174e0b9c8aaedfc58240093fdb6ca29bef7b80 +Author: Patrik Oldsberg +Date: Mon Oct 4 17:36:03 2021 +0200 + + docs: more build system docs + + Signed-off-by: Patrik Oldsberg + +commit d61f0d4fd4ecea434b7dfd5fd9445920a096473a +Author: Patrik Oldsberg +Date: Sun Oct 3 14:59:33 2021 +0200 + + docs: initial build system docs + + Signed-off-by: Patrik Oldsberg + +commit 2a42d573d2f76d3b513f876b18314e5d02158a06 +Author: Patrik Oldsberg +Date: Sun Jan 16 11:48:51 2022 +0100 + + cangesets: add changeset for the exterimental cli type builds + + Signed-off-by: Patrik Oldsberg + +commit 26cd3e2d019978c4cb54867e6c7f460c386bd8bc +Author: Patrik Oldsberg +Date: Sun Jan 16 11:14:26 2022 +0100 + + cli: set skipLibCheck for api extractor + + Signed-off-by: Patrik Oldsberg + +commit d268fdb61c291320c92cde282c619c74dd93412f +Merge: 0b30af8f06 838dd945da +Author: Fredrik Adelöw +Date: Sat Jan 15 23:08:58 2022 +0100 + + Merge pull request #8951 from kurtaking/kurtaking/fixing-types-architecture-overview-docs + + Fixed several typos in the Architecture Overview docs + +commit 838dd945da97e977397fb4b827f6f7db5234281d +Author: Fredrik Adelöw +Date: Sat Jan 15 22:53:54 2022 +0100 + + prettier + + Signed-off-by: Fredrik Adelöw + +commit 4316d9ae40ec53de79714a04b05097ae71702b7e +Author: Kurt King +Date: Sat Jan 15 10:36:20 2022 -0600 + + Fixed several types in the Architecture Overview docs + + Signed-off-by: Kurt King + +commit 2b27e49eb1bba6f2d02ef6d729e7d6d89791188b +Author: Patrik Oldsberg +Date: Sat Jan 15 16:47:39 2022 +0100 + + catalog,catalog-backend: update to catalog-model status change + + Signed-off-by: Patrik Oldsberg + +commit 8b5a7763d5a9454cc8c2a33c3a97af96a7f65cae +Author: Patrik Oldsberg +Date: Sat Jan 15 13:25:40 2022 +0100 + + catalog-model: enable alpha release stage and add AlphaEntity + + Signed-off-by: Patrik Oldsberg + +commit bc58af272292a771f37d97bc0f121217acb8fc2f +Author: Julio Zynger +Date: Sat Jan 15 15:47:42 2022 +0100 + + Replace GoCD plugin logo + + The original link does not render on the plugins page, replace it with an asset from the official website. + + Signed-off-by: Julio Zynger + +commit 0b30af8f06852228756a87b0545cb04f99d2dedf +Merge: 34a2a107a9 2afa6a94c0 +Author: Patrik Oldsberg +Date: Sat Jan 15 13:41:36 2022 +0100 + + Merge pull request #8949 from backstage/dependabot/npm_and_yarn/microsite/shelljs-0.8.5 + + build(deps): bump shelljs from 0.8.4 to 0.8.5 in /microsite + +commit 3d79f6321f6773c409935f1b1adda063d45acb84 +Author: Patrik Oldsberg +Date: Sat Jan 15 13:24:21 2022 +0100 + + cli: add support for separate release stage types in publishConfig + + Signed-off-by: Patrik Oldsberg + +commit d241348038d116df93358ba31642c76c80d4d4db +Author: Patrik Oldsberg +Date: Sat Jan 15 13:23:21 2022 +0100 + + cli: split release stages in experimental type build + + Signed-off-by: Patrik Oldsberg + +commit 2afa6a94c0ba9776fa5b8818f5570172b57fcd0a +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Sat Jan 15 10:45:08 2022 +0000 + + build(deps): bump shelljs from 0.8.4 to 0.8.5 in /microsite + + Bumps [shelljs](https://github.com/shelljs/shelljs) from 0.8.4 to 0.8.5. + - [Release notes](https://github.com/shelljs/shelljs/releases) + - [Changelog](https://github.com/shelljs/shelljs/blob/master/CHANGELOG.md) + - [Commits](https://github.com/shelljs/shelljs/compare/v0.8.4...v0.8.5) + + --- + updated-dependencies: + - dependency-name: shelljs + dependency-type: indirect + ... + + Signed-off-by: dependabot[bot] + +commit 34a2a107a939595b62249fa6fb4a706f30933a44 +Merge: 790cf7fea0 049cb4b1bb +Author: Patrik Oldsberg +Date: Sat Jan 15 11:44:37 2022 +0100 + + Merge pull request #8948 from backstage/dependabot/npm_and_yarn/shelljs-0.8.5 + + build(deps): bump shelljs from 0.8.4 to 0.8.5 + +commit 049cb4b1bba7695247641a48076e7eedf6a0368a +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Sat Jan 15 06:30:07 2022 +0000 + + build(deps): bump shelljs from 0.8.4 to 0.8.5 + + Bumps [shelljs](https://github.com/shelljs/shelljs) from 0.8.4 to 0.8.5. + - [Release notes](https://github.com/shelljs/shelljs/releases) + - [Changelog](https://github.com/shelljs/shelljs/blob/master/CHANGELOG.md) + - [Commits](https://github.com/shelljs/shelljs/compare/v0.8.4...v0.8.5) + + --- + updated-dependencies: + - dependency-name: shelljs + dependency-type: indirect + ... + + Signed-off-by: dependabot[bot] + +commit 790cf7fea0e3c60b1a0fa5c9ed3ca4e8750ed00b +Merge: 178c149e90 96b9e44312 +Author: Patrik Oldsberg +Date: Fri Jan 14 20:16:11 2022 +0100 + + Merge pull request #8941 from satrox28/patch-1 + + Fixing typo error on Changelog + +commit 178c149e90886a2d8b7b73462d846b7e68f0dfc8 +Merge: 7cd53159a2 a686efd469 +Author: Fredrik Adelöw +Date: Fri Jan 14 19:47:03 2022 +0100 + + Merge pull request #8942 from backstage/freben/locks + + yarn.lock again + +commit 093e5e06e43bd15cd12b57e7ce8134b56bcd8e7c +Author: Patrik Oldsberg +Date: Fri Jan 14 19:39:06 2022 +0100 + + cli: add experimental type builds + + Signed-off-by: Patrik Oldsberg + +commit 96b9e44312e6441df061bb12fecc6ac3232aa8a6 +Author: Sathish Kumar +Date: Fri Jan 14 12:38:17 2022 -0500 + + Fixing typo error + + Signed-off-by: Sathish Kumar + +commit f006fe252999b86ffd4ff6c373c4f07bf03b5431 +Author: djamaile +Date: Fri Jan 14 19:05:43 2022 +0100 + + feat(org): expose pageSize prop for MembersListCard component + + Signed-off-by: djamaile + +commit 7cd53159a2fee3e6d0319ea5da1607307454514f +Merge: 68c16958da cd4e3c4d4e +Author: Fredrik Adelöw +Date: Fri Jan 14 18:57:19 2022 +0100 + + Merge pull request #8940 from SDA-SE/fix/api-docs-url + + fix(api-docs): set url explicitly to an empty string + +commit a686efd4692344bfcf20e37f3934c4bc13a2502a +Author: Fredrik Adelöw +Date: Fri Jan 14 18:56:34 2022 +0100 + + yarn.lock again + + Signed-off-by: Fredrik Adelöw + +commit 9f0d178a51facc8753cff5c84735e14edbe059bb +Author: Juan Pablo Garcia Ripa +Date: Fri Jan 14 18:46:52 2022 +0100 + + apply last feedback + + Signed-off-by: Juan Pablo Garcia Ripa + +commit cd4e3c4d4edd8eb3874621c2190dba302d739078 +Author: Dominik Schwank +Date: Fri Jan 14 18:16:54 2022 +0100 + + fix(api-docs): set url explicitly to an empty string + + The url argument is undefined when it is not explicitly set to an empty string. An undefined url is + causing the swagger UI to fail on match checks. + + fixes #8895 + + Signed-off-by: Dominik Schwank + +commit ec67d27cb21d1a4943b5c333039d30798956dbbd +Author: Juan Pablo Garcia Ripa +Date: Tue Jan 11 18:13:09 2022 +0100 + + remove layoutProvider references + + Signed-off-by: Juan Pablo Garcia Ripa + +commit 14b882a6968560f1cb8c2d21ab57b6955c35f573 +Author: Juan Pablo Garcia Ripa +Date: Mon Jan 10 18:14:46 2022 +0100 + + Move layout context to SidabarPage + + Signed-off-by: Juan Pablo Garcia Ripa + +commit 5bd03f03be84f7128659de5a61085c7099b90aa3 +Author: Juan Pablo Garcia Ripa +Date: Mon Jan 10 17:51:55 2022 +0100 + + fix conflict resolution + + Signed-off-by: Juan Pablo Garcia Ripa + +commit eae85fecaccfec53d7068a76674914ea00b09746 +Author: Juan Pablo Garcia Ripa +Date: Sat Dec 11 00:52:41 2021 +0100 + + add focus after search + + Signed-off-by: Juan Pablo Garcia Ripa + + add provider to report + + Signed-off-by: Juan Pablo Garcia Ripa + +commit 8a0c363862ca0643ecb2c91b690a0458cdd6c492 +Author: Juan Pablo Garcia Ripa +Date: Thu Dec 9 16:37:50 2021 +0100 + + update app + + Signed-off-by: Juan Pablo Garcia Ripa + +commit af7608e58dbcaf7bc1c12b1ba917b2232b6ee9fd +Author: Juan Pablo Garcia Ripa +Date: Thu Dec 9 16:32:23 2021 +0100 + + dont show skip if there is no content ref + + Signed-off-by: Juan Pablo Garcia Ripa + +commit 8bb0f4bc8a1852cde1c83a167c3a95dc6ae6a083 +Author: Juan Pablo Garcia Ripa +Date: Sun Sep 19 00:59:45 2021 +0200 + + add LayoutProvider + + Signed-off-by: Juan Pablo Garcia Ripa + +commit 68c16958dabeeda90de82a956a968aa98e839daf +Merge: a10b8c4df0 a86034504a +Author: Fredrik Adelöw +Date: Fri Jan 14 17:41:59 2022 +0100 + + Merge pull request #8915 from backstage/blam/bump-graphql-dependencies + + chore: restore devops plugin + +commit a10b8c4df0891ceb6a361dfb4eaf75bec6cc72a5 +Merge: be5b5e3eba 2908a41b9b +Author: Fredrik Adelöw +Date: Fri Jan 14 17:41:05 2022 +0100 + + Merge pull request #8938 from djamaile/master + + fix: typo in MembersListCard component + +commit be5b5e3ebaf226338d9bb895caa93587f3f0c85e +Merge: 7e8cc7d24e 653d1fe263 +Author: Fredrik Adelöw +Date: Fri Jan 14 17:14:02 2022 +0100 + + Merge pull request #8936 from backstage/freben/healer + + Clear parent entity hashes on deletion, to get healing behaviors back + +commit 7e8cc7d24e741fc9b9640475a35a51263931ec18 +Merge: 81ad90ba28 374550ead0 +Author: Fredrik Adelöw +Date: Fri Jan 14 16:55:14 2022 +0100 + + Merge pull request #6905 from tudi2d/mobile-sidebar + + Mobile sidebar + +commit 653d1fe263b10d34a6383f1c5fdad79001b530d7 +Author: Fredrik Adelöw +Date: Fri Jan 14 16:47:27 2022 +0100 + + better formulation + + Signed-off-by: Fredrik Adelöw + +commit 2908a41b9b63314c8d0752ebf5b3660bfe105885 +Author: djamaile +Date: Fri Jan 14 16:41:24 2022 +0100 + + fix: typo in MembersListCard component + + Signed-off-by: djamaile + +commit 81ad90ba2869290e6d7a7b6bc21c9f5fed2d450a +Merge: 68fa2e868d 4b57df1d86 +Author: Fredrik Adelöw +Date: Fri Jan 14 16:31:52 2022 +0100 + + Merge pull request #8790 from greatmindsorg/bugfix/helm_chart_ingress + + bugfix: Fix helm chart ingress template + +commit 68fa2e868d6c6d754447436259a68d7f255fdade +Merge: 71b09c83be 29710c91c2 +Author: Fredrik Adelöw +Date: Fri Jan 14 16:29:13 2022 +0100 + + Merge pull request #8822 from erikxiv/techdocs-style-blockquote + + Techdocs: use lighter color for block quotes and horizontal rulers + +commit 374550ead0bb797bc8900738b50046c013f84ed1 +Author: Philipp Hugenroth +Date: Fri Jan 14 16:18:22 2022 +0100 + + Fix wrong import path in test + + Signed-off-by: Philipp Hugenroth + +commit 1fdf97f15043e309438b28e775af27b187c29edf +Author: Philipp Hugenroth +Date: Fri Jan 14 16:09:50 2022 +0100 + + Avoid breaking api changes + + Signed-off-by: Philipp Hugenroth + +commit 71b09c83be5db8b645b61b6f03d61ee2095ef0fc +Merge: fb889454d2 12f5c33043 +Author: MT Lewis +Date: Fri Jan 14 14:43:50 2022 +0000 + + Merge pull request #8799 from backstage/permissions-batching-improvements + + permission-backend: wrap authorize request and response batches in envelope + +commit dce98a92f71dbf2733128d27962be7cadfeb7b8a +Author: Fredrik Adelöw +Date: Fri Jan 14 15:06:29 2022 +0100 + + Clear parent entity hashes on deletion, to get healing behaviors back + + Signed-off-by: Fredrik Adelöw + +commit fb889454d2060681fb587ad7e4d73aaacd9d8f22 +Merge: 597588e2e8 bd2ce1922b +Author: Johan Haals +Date: Fri Jan 14 14:49:16 2022 +0100 + + Merge pull request #8935 from backstage/jhaals/publish + + Publish pre-releases under `next` npm dist tag + +commit bd2ce1922b95c501dfde6f6dd4d3d08a2c54c4ca +Author: Johan Haals +Date: Fri Jan 14 14:21:53 2022 +0100 + + Publish pre-releases under `next` npm dist tag + + Signed-off-by: Johan Haals + +commit 597588e2e8dfca22e18ac2071306c36d58c044e1 +Merge: 4259cda05c 3375622ec3 +Author: Johan Haals +Date: Fri Jan 14 13:42:03 2022 +0100 + + Merge pull request #8918 from RoadieHQ/add-buildkite-to-example-app + + Include buildkite in example-app again + +commit 4259cda05c634655742e1d8e5321eecf7522af31 +Merge: 04e98c89ef ced88f1b08 +Author: Johan Haals +Date: Fri Jan 14 13:30:10 2022 +0100 + + Merge pull request #8924 from backstage/blam/fix-descriptor-docs + + Fix slightly out of date docs + +commit 04e98c89ef666bfa199c453312ec25b3660cda7a +Merge: 98427a998f 7ea8ab0c33 +Author: Patrik Oldsberg +Date: Fri Jan 14 13:27:32 2022 +0100 + + Merge pull request #8932 from backstage/rugvip/nold + + docs: remove composability docs for how to port legacy apps + +commit 98427a998fb5b67921410a87b0bcc58b5d94353f +Merge: ccd9b1643b 05a777a46c +Author: Patrik Oldsberg +Date: Fri Jan 14 13:27:20 2022 +0100 + + Merge pull request #8930 from backstage/rugvip/prerelease + + changeset: enter prerelease mode + +commit ccd9b1643b5b98b882f4de58bd7c11308bfe89eb +Merge: 72d4b7061d c8e0f906a1 +Author: Fredrik Adelöw +Date: Fri Jan 14 13:27:05 2022 +0100 + + Merge pull request #8865 from fcorti/fcorti-roadmap-001 + + Updated roadmap page in the public documentation. + +commit 87f37b167499fbaf54adc21ef49863a4ad5ce5fa +Author: Jussi Hallila +Date: Fri Jan 14 13:20:35 2022 +0100 + + Knexify queries. + Add additional test cases for cases where multiple entities are inserted. + + Signed-off-by: Jussi Hallila + +commit c8e0f906a137200650e55814c76055fb7df426e2 +Author: Fredrik Adelöw +Date: Fri Jan 14 13:19:11 2022 +0100 + + prettier + + Signed-off-by: Fredrik Adelöw + +commit ab61c4603a230c99632af4524ebc0f15d1739d35 +Author: Francesco Corti +Date: Fri Jan 14 12:30:14 2022 +0100 + + Updated roadmap page in the public documentation. + + Signed-off-by: Francesco Corti + +commit e340186d2a1aa96077ecd5af6fa3acc2f8ea0a21 +Merge: 6c16957065 72d4b7061d +Author: Francesco Corti +Date: Fri Jan 14 12:12:02 2022 +0100 + + Merge branch 'backstage:master' into fcorti-roadmap-001 + +commit 6c16957065ee848854ddde6a87ba55e292d8165b +Author: Francesco Corti +Date: Fri Jan 14 11:47:35 2022 +0100 + + Update docs/overview/roadmap.md + + Review from rodmachen. + + Co-authored-by: Rod Machen + +commit 22052dc872271e1796d972f06ccea9a3190782f0 +Author: Francesco Corti +Date: Fri Jan 14 11:47:26 2022 +0100 + + Update docs/overview/roadmap.md + + Review from rodmachen. + + Co-authored-by: Rod Machen + +commit 5f0be90d88fbcf272d87670d4718903b921bc886 +Author: Francesco Corti +Date: Fri Jan 14 11:47:13 2022 +0100 + + Update docs/overview/roadmap.md + + Review from rodmachen. + + Co-authored-by: Rod Machen + +commit 7ea8ab0c331c643044dabb63858e8942a1ab6706 +Author: Patrik Oldsberg +Date: Fri Jan 14 11:27:55 2022 +0100 + + docs: remove composability docs for how to port legacy apps + + Signed-off-by: Patrik Oldsberg + +commit cf77b60e0e6f27e94e4070a69766a1d6d096f117 +Author: Francesco Corti +Date: Fri Jan 14 10:17:07 2022 +0100 + + Update docs/overview/roadmap.md + + Review from rodmachen. + + Co-authored-by: Rod Machen + +commit af06098589fa89984bb2483fd5745c967553300a +Author: Francesco Corti +Date: Fri Jan 14 10:16:59 2022 +0100 + + Update docs/overview/roadmap.md + + Review from rodmachen. + + Co-authored-by: Rod Machen + +commit 5ed2ad9648edde6e6ada6e070f073a86f356f506 +Author: Francesco Corti +Date: Fri Jan 14 10:16:47 2022 +0100 + + Update docs/overview/roadmap.md + + Review from rodmachen. + + Co-authored-by: Rod Machen + +commit 06860ac82826f46d52549d925ef37c0440ab8fcf +Author: Francesco Corti +Date: Fri Jan 14 10:16:39 2022 +0100 + + Update docs/overview/roadmap.md + + Review from rodmachen. + + Co-authored-by: Rod Machen + +commit 4eff1188c0ec8fcab11f493aed97d9dd7488e517 +Author: Francesco Corti +Date: Fri Jan 14 10:16:32 2022 +0100 + + Update docs/overview/roadmap.md + + Review from rodmachen. + + Co-authored-by: Rod Machen + +commit 796454994ba00b26db817989607051ce2a6f4edd +Author: Francesco Corti +Date: Fri Jan 14 10:15:57 2022 +0100 + + Update docs/overview/roadmap.md + + Review from rodmachen. + + Co-authored-by: Rod Machen + +commit ee45cd42d84246d00e01b3ac4ca694684a646041 +Author: Francesco Corti +Date: Fri Jan 14 10:15:45 2022 +0100 + + Update docs/overview/roadmap.md + + Review from rodmachen. + + Co-authored-by: Rod Machen + +commit 05a777a46c7f9f4d76ab93cc84fad6866536c40a +Author: Patrik Oldsberg +Date: Fri Jan 14 09:54:57 2022 +0100 + + changeset: enter prerelease mode + + Signed-off-by: Patrik Oldsberg + +commit 33e2553ccc99a459fb7dd359b549ed61a2bc1694 +Author: blam +Date: Fri Jan 14 06:50:47 2022 +0100 + + chore: added tests for the rest of the broken out components. Now I think we're ready to go... + + Signed-off-by: blam + +commit a86034504a9c5edfe3ab56c04fb3d28c8268d562 +Merge: 07ec177dbf 72d4b7061d +Author: Ben Lambert +Date: Fri Jan 14 05:44:16 2022 +0100 + + Merge branch 'master' into blam/bump-graphql-dependencies + +commit 2f89895af63f745f5121eed5b726f16d7da1d6ba +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Fri Jan 14 04:09:48 2022 +0000 + + build(deps): bump @svgr/plugin-svgo from 5.4.0 to 6.2.0 + + Bumps [@svgr/plugin-svgo](https://github.com/gregberge/svgr) from 5.4.0 to 6.2.0. + - [Release notes](https://github.com/gregberge/svgr/releases) + - [Changelog](https://github.com/gregberge/svgr/blob/main/CHANGELOG.md) + - [Commits](https://github.com/gregberge/svgr/compare/v5.4.0...v6.2.0) + + --- + updated-dependencies: + - dependency-name: "@svgr/plugin-svgo" + dependency-type: direct:production + update-type: version-update:semver-major + ... + + Signed-off-by: dependabot[bot] + +commit 72d4b7061d5f2a1d1d09d77f7aeaf8bd1726e26f +Merge: 46d74fd427 f685e1398f +Author: Patrik Oldsberg +Date: Thu Jan 13 23:25:01 2022 +0100 + + Merge pull request #8719 from cmpadden/warn-app-config-deprecations + + Warn users of deprecated keys in app configurations + +commit ced88f1b08100de780892b16bacba2b81bfee310 +Author: blam +Date: Thu Jan 13 23:24:21 2022 +0100 + + chore: steps are required + + Signed-off-by: blam + +commit 46d74fd4274f1756898bb3aa585d5cb621ea6b63 +Merge: 77c6543bca 306d879536 +Author: Fredrik Adelöw +Date: Thu Jan 13 22:32:49 2022 +0100 + + Merge pull request #8774 from backstage/dependabot/npm_and_yarn/types/swagger-ui-react-4.1.1 + + build(deps-dev): bump @types/swagger-ui-react from 3.35.2 to 4.1.1 + +commit 77c6543bcacd27f6f30d9506bf6bfe31032f0fcc +Merge: 6f9a38849c a4487f7050 +Author: Fredrik Adelöw +Date: Thu Jan 13 21:18:29 2022 +0100 + + Merge pull request #8876 from backstage/dependabot/npm_and_yarn/roadiehq/backstage-plugin-github-insights-1.4.3 + + build(deps): bump @roadiehq/backstage-plugin-github-insights from 1.4.2 to 1.4.3 + +commit 6f9a38849c2d24216967fc3382b4db8dbfda7d4f +Merge: 69c082065c e683a479d1 +Author: Patrik Oldsberg +Date: Thu Jan 13 20:08:23 2022 +0100 + + Merge pull request #8916 from RoadieHQ/gh-8906-update-docs + + Add clarification that Location spec is required + +commit 69c082065ccde18dc2498da0aa32bc104e45a88c +Merge: 9c5cd63243 5de4482b44 +Author: Fredrik Adelöw +Date: Thu Jan 13 20:07:27 2022 +0100 + + Merge pull request #8649 from nigelwright-roam/s3-discovery-docs + + Added additional S3 Discovery instructions + +commit 8aebc7b0db404d40f498d87efbcbc1210854adc9 +Author: Patrik Oldsberg +Date: Wed Dec 29 18:04:37 2021 +0100 + + app-backend: clarify relation between database and staticFallbackHandler + + Signed-off-by: Patrik Oldsberg + +commit ccd9bcb86ee254390fb307bcfe1b598b07daede9 +Author: Patrik Oldsberg +Date: Wed Dec 29 17:37:53 2021 +0100 + + app-backend: some refactoring, renaming, and docs + + Signed-off-by: Patrik Oldsberg + +commit fb08e2f285a0f5fa1bbe6f8d020f0b5ca0b3aaea +Author: Patrik Oldsberg +Date: Wed Dec 29 17:14:03 2021 +0100 + + backend,create-app: update app-backend setup to forward database + + Signed-off-by: Patrik Oldsberg + +commit eb00e8af146a7b8ecf950c76b3330bf68d467910 +Author: Patrik Oldsberg +Date: Wed Dec 29 17:02:26 2021 +0100 + + app-backend: changeset and API report for asset cache and header updates + + Signed-off-by: Patrik Oldsberg + +commit 729b188045846e3107afccf133d630c2febaecf2 +Author: Patrik Oldsberg +Date: Wed Dec 29 16:58:01 2021 +0100 + + app-backend: update router to use static assets store and new cache headers + + Signed-off-by: Patrik Oldsberg + +commit 7261b769358c762ba26368ff94f31ab5d1d84fb8 +Author: Patrik Oldsberg +Date: Wed Dec 29 16:52:59 2021 +0100 + + app-backend: added static assets middleware + header constants + + Signed-off-by: Patrik Oldsberg + +commit 3a7911ece86fbeecc0818769dc7b5820bf94b5ed +Author: Patrik Oldsberg +Date: Wed Dec 29 15:55:20 2021 +0100 + + app-backend: added test for asset lookup + + Signed-off-by: Patrik Oldsberg + +commit 54ecf37c1503a5d96638f6198844452a4fa7c585 +Author: Patrik Oldsberg +Date: Wed Dec 29 15:34:45 2021 +0100 + + app-backend: added utility to find assets to store + + Signed-off-by: Patrik Oldsberg + +commit a9dcace703f2487eaa17870a84b13e4969f28a17 +Author: Patrik Oldsberg +Date: Wed Dec 29 14:41:51 2021 +0100 + + app-backend: add StaticAssetsStore + + Signed-off-by: Patrik Oldsberg + +commit 6841660ba4ac6b93e94cde43acc925ffab49194c +Author: Patrik Oldsberg +Date: Wed Dec 29 12:01:46 2021 +0100 + + app-backend: added initial db migration for asset cache + + Signed-off-by: Patrik Oldsberg + +commit 6b05ad12654f3ae6bf4d55171f6b56f15141dc59 +Author: Patrik Oldsberg +Date: Thu Jan 13 13:18:02 2022 +0100 + + changesets: added changeset for core-components IdentityApi deprecation removals + + Signed-off-by: Patrik Oldsberg + +commit 553533629236f81a50d4113e4bd7f0ccaada8d09 +Author: Patrik Oldsberg +Date: Thu Jan 13 12:17:51 2022 +0100 + + search: update api tests to mock getCredentials + + Signed-off-by: Patrik Oldsberg + +commit 8a086d1c360191021233ed9ceb04c6bfadddf2f8 +Author: blam +Date: Wed Jan 12 13:17:08 2022 +0100 + + chore: remove the last occurence of getIdToken + + Signed-off-by: blam + +commit c4a1dc4ec867bf3b0f00640c50c83213eab02c4e +Author: Patrik Oldsberg +Date: Tue Jan 11 10:13:19 2022 +0100 + + core-app-api: warn if IdentityApi returns an invalid userEntityRef + + Signed-off-by: Patrik Oldsberg + +commit d879072b0cc89ba120a5186d2f70b928e8378d09 +Author: Patrik Oldsberg +Date: Tue Jan 4 23:31:50 2022 +0100 + + core-plugin-api: remove deprecated id field from BackstageIdentityResponse + + Signed-off-by: Patrik Oldsberg + +commit 234a36405b45157af34db4c0b255f06fc3a23ade +Author: Patrik Oldsberg +Date: Tue Jan 4 23:15:03 2022 +0100 + + core-plugin-api: remove deprecated OAuthRequestApi types + + Signed-off-by: Patrik Oldsberg + +commit 94c02b424695907f28822efbca86ac2a72023d31 +Author: Patrik Oldsberg +Date: Tue Jan 4 23:11:24 2022 +0100 + + core: removed BackstageIdentity type + + Signed-off-by: Patrik Oldsberg + +commit 51fbedc4451980532ae8b8543b4e4a3bd7efd506 +Author: Patrik Oldsberg +Date: Tue Jan 4 23:08:05 2022 +0100 + + plugins: migrate usage of deprecated IdentityApi methods + + Signed-off-by: Patrik Oldsberg + +commit 2916a83b9cd1a218b1821c92544ffe8cca8b3688 +Author: Patrik Oldsberg +Date: Tue Jan 4 22:10:43 2022 +0100 + + catalog-react: deprecate loadIdentityOwnerRefs and simplify implementation + + Signed-off-by: Patrik Oldsberg + +commit ceebe25391ba0e8fe163acefd6f662610e8d2559 +Author: Patrik Oldsberg +Date: Tue Jan 4 21:56:26 2022 +0100 + + core: removed deprecated IdentityApi methods + + Signed-off-by: Patrik Oldsberg + +commit a4487f70509dc73cad6d4787099039b780f05e7f +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Wed Jan 12 04:10:17 2022 +0000 + + build(deps): bump @roadiehq/backstage-plugin-github-insights + + Bumps [@roadiehq/backstage-plugin-github-insights](https://github.com/RoadieHQ/roadie-backstage-plugins/tree/HEAD/plugins/frontend/backstage-plugin-github-insights) from 1.4.2 to 1.4.3. + - [Release notes](https://github.com/RoadieHQ/roadie-backstage-plugins/releases) + - [Changelog](https://github.com/RoadieHQ/roadie-backstage-plugins/blob/main/plugins/frontend/backstage-plugin-github-insights/CHANGELOG.md) + - [Commits](https://github.com/RoadieHQ/roadie-backstage-plugins/commits/HEAD/plugins/frontend/backstage-plugin-github-insights) + + --- + updated-dependencies: + - dependency-name: "@roadiehq/backstage-plugin-github-insights" + dependency-type: direct:production + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit 12f5c330430ae5d9e8de26856aeee23bf3135f71 +Author: MT Lewis +Date: Thu Jan 13 13:30:08 2022 +0000 + + catalog-backend: rename permission-related variable to match type + + Signed-off-by: MT Lewis + +commit 0ae4f4cc82dc0303fac95fd06cdb9cad7d56e8ab +Author: MT Lewis +Date: Thu Jan 13 13:39:15 2022 +0000 + + permissions: rename authorize request and response types to avoid envelope suffix + + Signed-off-by: MT Lewis + +commit b76825924451180f7891622d8e01a13b10908023 +Author: MT Lewis +Date: Fri Jan 7 12:49:18 2022 +0000 + + permission-backend: wrap authorize request and response batches in envelope + + Signed-off-by: MT Lewis + +commit 9c5cd63243f05c77bb3f9a6284312ba5c7fb3347 +Merge: da66c61bdd 68edbbeafd +Author: MT Lewis +Date: Thu Jan 13 17:50:43 2022 +0000 + + Merge pull request #8919 from backstage/fix-catalog-get-resources + + catalog-backend: fix getResources + +commit 68edbbeafd7da722cbaae1660e3e1a9f3a591c53 +Author: MT Lewis +Date: Thu Jan 13 17:26:04 2022 +0000 + + catalog-backend: add changeset + + Signed-off-by: MT Lewis + +commit 94d24c751da0f6b1ac65a544425a849cae76812c +Author: MT Lewis +Date: Thu Jan 13 17:10:45 2022 +0000 + + catalog-backend: fix getResources + + The getResources method in catalog-backend should use the + unauthorizedEntitiesCatalog to load resources, otherwise + we end up authorizing access to entities during application + of conditions. + + Signed-off-by: MT Lewis + +commit 1b026578f00cc6c5a17a06bd7676916383530cc9 +Author: blam +Date: Thu Jan 13 17:41:14 2022 +0100 + + chore: export some missing bits for the api-report.md + + Signed-off-by: blam + +commit 7fb125ac0741453659df17bcc1f41781c9673b30 +Author: blam +Date: Thu Jan 13 17:34:59 2022 +0100 + + chore: simplify the contract between the different provider pickers + + Signed-off-by: blam + +commit 3375622ec33f93d845aba01e758357f6688c3aff +Author: irma12 +Date: Thu Jan 13 17:35:53 2022 +0100 + + Include buildkite again + + Signed-off-by: irma12 + +commit da66c61bdd63cdb3f0f0cd2e26dc9e6454d93c7b (tag: v0.63.0, tag: release-2022-01-13) +Merge: 182e573def b04011602b +Author: Patrik Oldsberg +Date: Thu Jan 13 17:25:20 2022 +0100 + + Merge pull request #8751 from backstage/changeset-release/master + + Version Packages + +commit cd8bf7a4abb9a586e1d9eba70d5771458b96ffec +Author: Jussi Hallila +Date: Thu Jan 13 16:34:22 2022 +0100 + + Add more breaking changes. + Update API reports. + + Signed-off-by: Jussi Hallila + +commit 28fd9bc6039e907c4a0fa57188d23f099ef5a7f3 +Author: Jussi Hallila +Date: Thu Jan 13 16:04:30 2022 +0100 + + Modify based on review comments. + Make it breaking change. + + Signed-off-by: Jussi Hallila + +commit e683a479d1b8759204cb413c78eeb9820e2db2ef +Author: Miklos Kiss +Date: Thu Jan 13 16:01:34 2022 +0100 + + Fix formatting + + Signed-off-by: Miklos Kiss + +commit d78909c35e7ed51b727a4b2f6b62744bafeb8dca +Author: Miklos Kiss +Date: Thu Jan 13 15:39:52 2022 +0100 + + Fix typo + + Signed-off-by: Miklos Kiss + +commit b04011602b9cd0dcb54e2e5aa9128a826beacbf8 +Author: github-actions[bot] +Date: Thu Jan 13 14:23:13 2022 +0000 + + Version Packages + +commit 182e573defb19c72ce411c8332a81cdf22ed07e3 +Merge: 653152c7ff ba2dbe47d7 +Author: Fredrik Adelöw +Date: Thu Jan 13 15:17:29 2022 +0100 + + Merge pull request #8551 from backstage/authz-batching + + permissions: more efficient integration between permission backend and plugin backends + +commit 653152c7ff0ee111a9d86db935584bf19ea44f06 +Merge: ebc34d0a05 0627a63723 +Author: Johan Haals +Date: Thu Jan 13 15:15:02 2022 +0100 + + Merge pull request #8913 from backstage/rugvip/shtoyle + + STYLE: recommend prefixed type parameter names + +commit ebc34d0a05f1a3d0f7c85619585d550901b7fcf8 +Merge: 4f04a54451 9f9596f9ef +Author: Fredrik Adelöw +Date: Thu Jan 13 15:14:38 2022 +0100 + + Merge pull request #8911 from backstage/rugvip/azureboot + + azure-devops-backend: only warn if teams fail to load at startup + +commit 7b8976425d070f43d0e7cbd46b3a97ee8bfd5a2c +Author: Miklos Kiss +Date: Thu Jan 13 14:22:58 2022 +0100 + + Add clarification that Location spec is required + + Signed-off-by: Miklos Kiss + +commit 07ec177dbf826971a0c6e82883b28a790c2fe436 +Author: blam +Date: Thu Jan 13 14:50:42 2022 +0100 + + chore: restore dev-ops as we're gonna fix it + + Signed-off-by: blam + +commit 4f04a54451096f293d0f69f1ac4a3f879c6c46ae +Merge: 1fcd816b06 0d0476d594 +Author: Fredrik Adelöw +Date: Thu Jan 13 14:49:58 2022 +0100 + + Merge pull request #8904 from backstage/blam/bump-graphql-dependencies + + Bump GraphQL Dependencies in `graphql` plugins + +commit 1fcd816b064670306762cc7390371d8ae5f53de5 +Merge: 9d46378346 b85010a0c8 +Author: Erik Engervall +Date: Thu Jan 13 14:44:07 2022 +0100 + + Merge pull request #8910 from backstage/erikengervall/improve-patch-cta + + [Plugin] git-release-manager: Improve patch CTA copy + +commit 142d65b1d788a6af6c864026525fe2aefcc58c62 +Author: blam +Date: Thu Jan 13 14:43:42 2022 +0100 + + chore: reworking tests and fixing up some of the types for the repo pickers + + Signed-off-by: blam + +commit 9f9596f9efafea1854ac4fe41c3c9c387a66b64d +Author: Patrik Oldsberg +Date: Thu Jan 13 13:37:57 2022 +0100 + + azure-devops-backend: only warn if teams fail to load at startup + + Signed-off-by: Patrik Oldsberg + +commit 9d463783467e32822b9fa52af14774464d3d8c30 +Merge: d97eb828b9 37914fa9e0 +Author: Fredrik Adelöw +Date: Thu Jan 13 14:40:09 2022 +0100 + + Merge pull request #8907 from Artur93gev/patch-1 + + Update identity-resolver.md + +commit d97eb828b98394f9b936c224c5480a737ffdce0c +Merge: 26c13d006a b00ea117cb +Author: Fredrik Adelöw +Date: Thu Jan 13 14:30:54 2022 +0100 + + Merge pull request #8909 from backstage/rugvip/proxyid + + core-components: update ProxiedSignInPage for IdentityApi deprecation removals + +commit ba2dbe47d736b43c174098df4f9b6a71a2737d41 +Author: MT Lewis +Date: Thu Jan 13 13:28:51 2022 +0000 + + permission-node: regenerate api-report + + Signed-off-by: MT Lewis + +commit 37914fa9e05815f337ef71f7c8865251966720ba +Author: Artur Gevorgyan +Date: Thu Jan 13 17:24:55 2022 +0400 + + Update identity-resolver.md + + Signed-off-by: Artur Gevorgyan + +commit b85010a0c8394880f868dd3b4c2b55c85f5f0d08 +Author: Erik Engervall +Date: Thu Jan 13 14:25:03 2022 +0100 + + Update api-report.md + + Signed-off-by: Erik Engervall + +commit 0627a63723f415dff981b9d66e568386396fd2cf +Author: Patrik Oldsberg +Date: Thu Jan 13 14:19:51 2022 +0100 + + STYLE: recommend prefix of type parameter names + + Signed-off-by: Patrik Oldsberg + +commit de065ce91c55033c3054b7e950418efddd7d9c9d +Author: Erik Engervall +Date: Thu Jan 13 14:06:21 2022 +0100 + + Fix tests + + Signed-off-by: Erik Engervall + +commit 74967cf50d48f19bb9520df9659bd3209bf34f62 +Author: MT Lewis +Date: Thu Jan 13 13:04:47 2022 +0000 + + catalog-backend: update permission integration to support batching + + Signed-off-by: MT Lewis + +commit 3bb0afb54c3865ea843aa0091dfbe1f4645d825d +Author: MT Lewis +Date: Thu Jan 13 13:04:30 2022 +0000 + + permission-node: add test for apply conditions router + + Signed-off-by: MT Lewis + +commit 34a4be296f5b3dd7d3185ead2ef35d258cd00950 +Author: MT Lewis +Date: Thu Jan 13 10:52:05 2022 +0000 + + permission-node: list all incorrect resource types in apply-conditions handler + + Signed-off-by: MT Lewis + +commit 1fb2e0e0b4e2ab5bd91be82310a641b7d8a2b61d +Author: MT Lewis +Date: Thu Jan 6 12:18:01 2022 +0000 + + permission-node: wrap request and response arrays in object + + Signed-off-by: MT Lewis + +commit ef291ff9856e87eeb21ea09289925a983d48a587 +Author: MT Lewis +Date: Wed Jan 5 18:34:48 2022 +0000 + + permission-backend: move dataloader to router + + Signed-off-by: MT Lewis + +commit 85b9e1ae608faaa202104bb9b59a5e7441442fe6 +Author: MT Lewis +Date: Wed Jan 5 12:35:31 2022 +0000 + + permission-backend: use dataloader in PermissionIntegrationClient + + Signed-off-by: MT Lewis + +commit e4c2ee4ba7f0b1b5b2e224488e220c3e9e0519b7 +Author: MT Lewis +Date: Wed Jan 5 12:34:46 2022 +0000 + + build(deps): add dependency on dataloader + + Signed-off-by: MT Lewis + +commit cbb85e07f0687121c490a7b63df1594b108293ae +Author: MT Lewis +Date: Wed Dec 22 10:17:21 2021 +0000 + + permission-node: simplify undefined check and fix applyConditions signature + + Signed-off-by: MT Lewis + +commit 8e72b573aa0b7b9e6fbd43de137b48614aac4bf7 +Author: MT Lewis +Date: Mon Dec 20 17:17:20 2021 +0000 + + permission-node: switch to array for getResources return value + + Signed-off-by: MT Lewis + +commit 419ca637c075ae4765a8e9674080642a96521c08 +Author: MT Lewis +Date: Mon Dec 20 15:14:38 2021 +0000 + + permissions: add changeset for optimizations + + Signed-off-by: MT Lewis + +commit 706b6c29e9a69afa03bef3c0be5f964236705804 +Author: MT Lewis +Date: Mon Dec 20 14:37:45 2021 +0000 + + permission-node: allow batch retrieval of resources in /apply-conditions + + Signed-off-by: MT Lewis + +commit b66704db18a51cc9d4e908981b4bcae068204ad8 +Author: MT Lewis +Date: Mon Dec 20 14:12:26 2021 +0000 + + permission-node: accept batched requests in /apply-conditions + + Signed-off-by: MT Lewis + +commit 26c13d006a4c3abcce25ec9d64ed4a371ef2d210 +Merge: bc5fe6c6c4 811fb9cf9c +Author: Fredrik Adelöw +Date: Thu Jan 13 13:54:23 2022 +0100 + + Merge pull request #8796 from goenning/go/log-error-tech-insights + + [TechInsights] log errors when tech insights throws an error + +commit b567ee28186358cac3a4c2b57d78374ad1dd625f +Author: Jussi Hallila +Date: Mon Jan 10 16:13:34 2022 +0100 + + Make Vale happier. + + Signed-off-by: Jussi Hallila + +commit dfd5e81721960d8d70ac5a5459b2aff72a4a2dd6 +Author: Jussi Hallila +Date: Mon Jan 10 15:38:16 2022 +0100 + + Adds a configuration option to fact retrievers to define lifecycle for facts the retriever persists. Possible values are either 'items-to-live' or 'time-to-live'. The former will only n number of items in to the database for each fact per entity. The latter will remove all facts that are older than the TTL value. + + Possible values: + * { itl: 5 } // Deletes all facts for the retriever/entity pair, apart from the last five + * { ttl: 1209600000 } // (2 weeks) Deletes all facts older than 2 weeks for the retriever/entity pair + * { ttl: { weeks: 2 } } // Deletes all facts older than 2 weeks for the retriever/entity pair + + Signed-off-by: Jussi Hallila + +commit b00ea117cb50635f51f386e26413d83bc9fa2a9d +Author: Patrik Oldsberg +Date: Thu Jan 13 13:00:46 2022 +0100 + + core-components: update ProxiedSignInPage for IdentityApi deprecation removals + + Signed-off-by: Patrik Oldsberg + +commit c1813739c64f9c261259e95b425611736e87fa56 +Author: Erik Engervall +Date: Thu Jan 13 13:27:29 2022 +0100 + + Add changeset + + Signed-off-by: Erik Engervall + +commit 9c0f87acc7b75f15bd82b7449062243463557bbf +Author: Erik Engervall +Date: Thu Jan 13 13:25:55 2022 +0100 + + Improve Patch CTA copy + + Signed-off-by: Erik Engervall + +commit bc5fe6c6c48c863d3ed7b55855489168bc4dc719 +Merge: f58092cfeb 6ff24fde43 +Author: Johan Haals +Date: Thu Jan 13 13:11:31 2022 +0100 + + Merge pull request #8908 from backstage/rugvip/debot + + workflows/dependabot-changeset-maker: only run on dependabot branches + +commit 6ff24fde43bf5b79c3705efa5b794ab1dedb810c +Author: Patrik Oldsberg +Date: Thu Jan 13 12:27:34 2022 +0100 + + workflows/dependabot-changeset-maker: only run on dependabot branches + + Signed-off-by: Patrik Oldsberg + +commit f58092cfeb82d43ebca7f23af57373fabe9300ac +Merge: 0a6c68582a 7a35aa9377 +Author: Fredrik Adelöw +Date: Thu Jan 13 12:17:18 2022 +0100 + + Merge pull request #8695 from backstage/feature/add-gcp-iap-auth-provider-frontend + + auth: implement frontend parts of iap-like sign-in + +commit 0a6c68582a152aba13e6ecdef21e5111eefbec09 +Author: Joon Park +Date: Thu Jan 13 10:59:13 2022 +0000 + + Add authorization to entities get endpoints in catalog-backend. (#8711) + + * Add authorization to entities get endpoints in catalog-backend. + + The delete endpoint and the ancestry endpoint, as well as the rest of the endpoints in catalog-backend will be covered in later PRs. + + Signed-off-by: Joon Park + + * Refactor permissioning into AuthorizedNextEntitiesCatalog + + Signed-off-by: Joon Park + + * Create integration router in builder + + Signed-off-by: Joon Park + + * Fix test authorization strings + + Signed-off-by: Joon Park + +commit 7a35aa9377ef1963b3b159fcf6a77921a205f788 +Author: Fredrik Adelöw +Date: Thu Jan 13 11:39:42 2022 +0100 + + typo in changeset + + Signed-off-by: Fredrik Adelöw + +commit 0d0476d594da77ea4501a1b6d16e98074030a5ed +Author: blam +Date: Thu Jan 13 11:32:25 2022 +0100 + + chore: need to inherit the resolvers from the interfaces for niceness + + Signed-off-by: blam + +commit 36be75022f8b0daa1df7c176ccdbb5fced55b34b +Author: blam +Date: Thu Jan 13 11:31:57 2022 +0100 + + chore: updating the tests to actually work like before + + Signed-off-by: blam + +commit be610c5744141dc6a358a46cecef7c990e9db253 +Author: Fredrik Adelöw +Date: Thu Jan 13 11:16:16 2022 +0100 + + address review comments + + Signed-off-by: Fredrik Adelöw + +commit 0fb17da1644772029373055ff431b391210438eb +Author: blam +Date: Thu Jan 13 10:43:24 2022 +0100 + + chore: added changeset + + Signed-off-by: blam + +commit 2d4dfb1b98229f01b75c8612f6733e262ad30b14 +Author: blam +Date: Thu Jan 13 10:42:19 2022 +0100 + + chore: it's now a Module not a GraphQLModule + + Signed-off-by: blam + +commit 55a53d7cc2c7d11c04c2e9f05685d8cb706d7e51 +Author: blam +Date: Thu Jan 13 10:37:09 2022 +0100 + + chore: more removal + + Signed-off-by: blam + +commit fe7e7116aafffe7242fdfbb387332f248576d93d +Author: blam +Date: Thu Jan 13 10:34:41 2022 +0100 + + chore: removing some older dependencies + + Signed-off-by: blam + +commit dc4a5d7d9149a49e869a6faa214b9ef4983db82f +Author: blam +Date: Thu Jan 13 10:34:20 2022 +0100 + + chore: updating graphql-backend to support later versions of graphql-modules + + Signed-off-by: blam + +commit e79aaf9712fc9c991e67d94649c8903ed9488579 +Author: blam +Date: Thu Jan 13 10:33:36 2022 +0100 + + chore: bringing all this up to date with the new dependencies. Still some stuff to work with. + + Signed-off-by: blam + +commit 6fbdcdd5c7cf6f6a34ed7431f8f09ab4064e6016 +Author: blam +Date: Thu Jan 13 10:33:10 2022 +0100 + + chore: remove the rest + + Signed-off-by: blam + +commit ecc01818d78ef8a459b3fe5c639d20c2a5b906dc +Author: blam +Date: Thu Jan 13 10:30:47 2022 +0100 + + chore: removing this from the default app as it breaks with invalid config + + Signed-off-by: blam + +commit 4578d5c347beb0072e7370d3851a32ab1835d267 +Merge: 7e5551f846 bc199d8843 +Author: Johan Haals +Date: Thu Jan 13 10:42:36 2022 +0100 + + Merge pull request #8902 from backstage/dependabot/npm_and_yarn/follow-redirects-1.14.7 + + build(deps): bump follow-redirects from 1.14.6 to 1.14.7 + +commit 2989c8282588d135888d7f5014184bc85687ebc3 +Author: Philipp Hugenroth +Date: Thu Jan 13 10:35:33 2022 +0100 + + Avoid breaking changes + + Signed-off-by: Philipp Hugenroth + +commit 7e5551f846f723b92d39d2c57e376ce12e87c1b9 +Merge: a8f2c86476 22a9001e69 +Author: Camila Belo +Date: Thu Jan 13 10:29:51 2022 +0100 + + Merge pull request #8903 from backstage/fix/possible-windows-search-flake + + [Search] Mock cleanup in modal test + +commit 22a9001e693e9774449920073aaa1d5983690847 +Author: Eric Peterson +Date: Thu Jan 13 09:42:11 2022 +0100 + + Mock API, not module. + + Signed-off-by: Eric Peterson + +commit 306d879536eea8cc563f9bc50ab6cc6297720afe +Author: blam +Date: Thu Jan 13 08:43:30 2022 +0100 + + chore: add changeset + + Signed-off-by: blam + +commit a8f2c86476504c7cd6b4518b4287b1cfb8ab735d +Merge: 2a13ac8902 acc7beeac4 +Author: Ben Lambert +Date: Thu Jan 13 08:33:59 2022 +0100 + + Merge pull request #8898 from backstage/dependabot/npm_and_yarn/types/archiver-5.3.1 + + build(deps-dev): bump @types/archiver from 5.3.0 to 5.3.1 + +commit 50f4ebc247dd4bf46dceca8216d0b3bb08e68410 +Author: blam +Date: Thu Jan 13 08:29:38 2022 +0100 + + chore: reworking some dependencies + + Signed-off-by: blam + +commit 014f9a8f452d93469ff1788018086ef54b4daa36 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Thu Jan 6 04:14:21 2022 +0000 + + build(deps-dev): bump @types/swagger-ui-react from 3.35.2 to 4.1.1 + + Bumps [@types/swagger-ui-react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/swagger-ui-react) from 3.35.2 to 4.1.1. + - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) + - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/swagger-ui-react) + + --- + updated-dependencies: + - dependency-name: "@types/swagger-ui-react" + dependency-type: direct:development + update-type: version-update:semver-major + ... + + Signed-off-by: dependabot[bot] + +commit 2a13ac8902815d20372a15c01d0dd74ea1451cf0 +Merge: dbb91f248c 13536d6d30 +Author: Ben Lambert +Date: Thu Jan 13 08:15:42 2022 +0100 + + Merge pull request #8872 from lalit774/patch-1 + + documentation update: LdapOrgReaderProcessor is not registered by default + +commit bc199d884312f86477ce5f7dd14d8699725d0b55 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Thu Jan 13 07:14:48 2022 +0000 + + build(deps): bump follow-redirects from 1.14.6 to 1.14.7 + + Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.14.6 to 1.14.7. + - [Release notes](https://github.com/follow-redirects/follow-redirects/releases) + - [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.14.6...v1.14.7) + + --- + updated-dependencies: + - dependency-name: follow-redirects + dependency-type: indirect + ... + + Signed-off-by: dependabot[bot] + +commit dbb91f248c4619f89c88da50b3ff11b9d4ab84d3 +Merge: 37833250c3 f56088567d +Author: Ben Lambert +Date: Thu Jan 13 08:11:33 2022 +0100 + + Merge pull request #8900 from backstage/dependabot/npm_and_yarn/typescript-eslint/parser-5.9.1 + + build(deps): bump @typescript-eslint/parser from 5.9.0 to 5.9.1 + +commit 37833250c3a872c389d5a046fa852bf3260d0c7e +Merge: 02ac69f943 0c1f3cfbbb +Author: Johan Haals +Date: Thu Jan 13 08:10:58 2022 +0100 + + Merge pull request #8901 from backstage/dependabot/npm_and_yarn/types/semver-7.3.9 + + build(deps-dev): bump @types/semver from 7.3.8 to 7.3.9 + +commit 02ac69f943988a885ae3a41e0ec933b66a8c29bc +Merge: e0b4b118cc 451ef0aa07 +Author: Ben Lambert +Date: Thu Jan 13 07:49:06 2022 +0100 + + Merge pull request #8884 from diegoribeiro-hotmart/bugfix/nunjucks-token + + [Scaffolder] Fix token pass-through for software templates using beta 3 version + +commit e0b4b118cc1aa16ac6c6fa9db65c8ad70c981f9b +Merge: 167cdcab98 6fd70f8bc8 +Author: Ben Lambert +Date: Thu Jan 13 07:48:07 2022 +0100 + + Merge pull request #8815 from dhruvaldarji/dhruvaldarji/add-baseurl-support-for-bitbucket-discovery-processor + + fix(catalog-backend): support bitbucket servers with custom baseUrls + +commit 167cdcab98bb861980e7b530207327329b3b27c5 +Merge: 532f8580f0 df59c87ee3 +Author: Ben Lambert +Date: Thu Jan 13 07:40:30 2022 +0100 + + Merge pull request #8897 from lykkeaxlin/bazaar-marketplace-logo + + Update bazaar marketplace logo + +commit 0c1f3cfbbbe6cb609dc7ca4610e00aea8cc57439 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Thu Jan 13 04:17:13 2022 +0000 + + build(deps-dev): bump @types/semver from 7.3.8 to 7.3.9 + + Bumps [@types/semver](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/semver) from 7.3.8 to 7.3.9. + - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) + - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/semver) + + --- + updated-dependencies: + - dependency-name: "@types/semver" + dependency-type: direct:development + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit f56088567d668c472ef0c256ec3a1f074e0d73a4 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Thu Jan 13 04:15:00 2022 +0000 + + build(deps): bump @typescript-eslint/parser from 5.9.0 to 5.9.1 + + Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 5.9.0 to 5.9.1. + - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) + - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md) + - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.9.1/packages/parser) + + --- + updated-dependencies: + - dependency-name: "@typescript-eslint/parser" + dependency-type: direct:production + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit acc7beeac41398f60f847c41542581f5bc7bfc7d +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Thu Jan 13 04:12:00 2022 +0000 + + build(deps-dev): bump @types/archiver from 5.3.0 to 5.3.1 + + Bumps [@types/archiver](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/archiver) from 5.3.0 to 5.3.1. + - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) + - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/archiver) + + --- + updated-dependencies: + - dependency-name: "@types/archiver" + dependency-type: direct:development + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit df59c87ee34fd1df753c2ac5c78d0723f5d3c6e8 +Merge: 5597a9267f 532f8580f0 +Author: Lykke Axlin +Date: Thu Jan 13 02:26:10 2022 +0100 + + Merge branch 'master' of https://github.com/backstage/backstage into minor-fixes + +commit 5597a9267f631fa7c26b042947ebaef7a22aae6a +Author: Lykke Axlin +Date: Thu Jan 13 02:25:18 2022 +0100 + + update bazaar marketplace logo + + Signed-off-by: Lykke Axlin + +commit 13536d6d30b26d74d10b7b12834d08028593a015 +Author: Lalit Kumar Singla +Date: Tue Jan 11 09:45:04 2022 -0500 + + Update org.md + + Update documentation for env.config and logger + + Signed-off-by: lalit kumar + +commit 532f8580f0800fae86fed9f5f4fa2182b418c214 +Merge: 49870d4a9a f3eb37dbed +Author: Patrik Oldsberg +Date: Wed Jan 12 16:46:57 2022 +0100 + + Merge pull request #8888 from backstage/freben/yarn + + missing yarn.lock change + +commit f3eb37dbed076a7a5754ff3aeb51be4b905ea8ed +Author: Fredrik Adelöw +Date: Wed Jan 12 15:53:15 2022 +0100 + + missing yarn.lock change + + Signed-off-by: Fredrik Adelöw + +commit 49870d4a9a76e4d426872e9fdb3f7f7919f4fd47 +Merge: bc3acec86a 1e3c4ac5cb +Author: Ben Lambert +Date: Wed Jan 12 14:35:05 2022 +0100 + + Merge pull request #8886 from backstage/jhaals/more-labels + + Label permission PRs auth + +commit 5688027163aff7b7097e7c6077b60b28220bd966 +Author: blam +Date: Wed Jan 12 14:12:22 2022 +0100 + + chore: fix tests for GithubRepoPicker + + Signed-off-by: blam + +commit 1e3c4ac5cb8e5f44682a2021f29910b8903dbd83 +Author: Johan Haals +Date: Wed Jan 12 14:10:32 2022 +0100 + + Label permission PRs auth + + Signed-off-by: Johan Haals + +commit bc3acec86a2988819563212532fb40cebc0da783 +Merge: 890734d440 6a1e2bf90f +Author: Ben Lambert +Date: Wed Jan 12 14:00:59 2022 +0100 + + Merge pull request #8622 from julioz/julioz/gocd-plugin + + Add GoCD plugin + +commit 890734d4405ed475549c4e3ce73215d21027096b +Merge: ad157cf288 163b4d2d33 +Author: Patrik Oldsberg +Date: Wed Jan 12 13:58:46 2022 +0100 + + Merge pull request #8883 from backstage/mob/prerelease + + Prepare for prerelease flow and introduce documentation and tooling for emergency releases + +commit 451ef0aa0759c7011f62f0017fb5e65e65bbc026 +Author: Diego Drumond +Date: Wed Jan 12 09:16:36 2022 -0300 + + scaffolder-backend: pass token to tasks + + Signed-off-by: Diego Drumond + +commit fced56a416e7244a71fc75d52ede40eaa24831db +Author: Diego Drumond +Date: Wed Jan 12 08:55:16 2022 -0300 + + scaffolder-backend: pass token to tasks + + Signed-off-by: Diego Drumond + +commit ad157cf288a4d52d62e771a859f66c265128c9bd +Merge: ed054cd9b8 2d622caab5 +Author: Johan Haals +Date: Wed Jan 12 13:37:21 2022 +0100 + + Merge pull request #8879 from backstage/dependabot/npm_and_yarn/microsoft/api-extractor-model-7.15.3 + + build(deps): bump @microsoft/api-extractor-model from 7.15.1 to 7.15.3 + +commit 163b4d2d33a0c6dda8cb78b355ddc16556aad15f +Author: Patrik Oldsberg +Date: Wed Jan 12 13:30:43 2022 +0100 + + docs/publishing.md: review fixes + + Co-authored-by: Fredrik Adelöw + Co-authored-by: Johan Haals + Signed-off-by: Patrik Oldsberg + +commit fbef4663f7464a4536731fa04cb75bb11a0bee05 +Author: blam +Date: Mon Jan 10 07:10:10 2022 +0100 + + chore: starting to add some tests for the GithubRepoUrlPicker + + Signed-off-by: blam + +commit abdfe612c01c20be79fc95f14836f8dc0065ba20 +Author: blam +Date: Fri Jan 7 18:56:08 2022 +0100 + + chore: updating the api-report + + Signed-off-by: blam + +commit be5fc422f72decd9e168eb59d855191f9cdd1e60 +Author: blam +Date: Fri Jan 7 18:24:48 2022 +0100 + + chore: reworking some more stuff in the code review, better naming + + Signed-off-by: blam + +commit 9f4c552157ab9a7875c76dac3b195a84f29eba60 +Author: blam +Date: Fri Jan 7 18:10:11 2022 +0100 + + chore: some code review comments + + Signed-off-by: blam + +commit 66be3c5fd4327689ff02443bf802ac3ef7bed0da +Author: blam +Date: Mon Jan 3 17:30:49 2022 +0100 + + chore: added tests for util files + + Signed-off-by: blam + +commit 381184c4388bd2e000634cfb0ab6aea78e52323f +Author: blam +Date: Mon Jan 3 17:09:00 2022 +0100 + + chore: change the import to of `react-use` things to use explicit import + + Signed-off-by: blam + +commit dd17fa9e31c352c9e2165ee136da2a7e4de69a26 +Author: blam +Date: Tue Dec 28 23:02:39 2021 +0100 + + chore: updating the api-report with the new type + Signed-off-by: blam + +commit 269f4dd307d503ffbd3cdc3780895377bca6f53b +Author: blam +Date: Fri Dec 24 15:08:13 2021 +0100 + + chore: added some tests for the hosts dropdown + + Signed-off-by: blam + +commit cd05442ed28aad28b617fae0358f4cfb26bcf414 +Author: blam +Date: Wed Dec 22 09:53:56 2021 +0100 + + chore: added changeset + + Signed-off-by: blam + +commit a9412268a9f2e5645112b6380a3be1cbc3c03227 +Author: blam +Date: Wed Dec 22 04:50:54 2021 +0100 + + chore: think i've finished the refactor of this bloody component now + + Signed-off-by: blam + +commit 2632ae4c2f2487986b82c2dad3280e6483574886 +Author: blam +Date: Wed Dec 22 04:36:58 2021 +0100 + + chore: fixing bitbucket behaviour for cloud and noncloud things + + Signed-off-by: blam + +commit 49299ac371f4400ac42bfc83ec4874609f45f06a +Author: blam +Date: Wed Dec 22 04:28:45 2021 +0100 + + chore: starting the refactor and split of the RepoUrlPicker + + Signed-off-by: blam + +commit 0ca7eacd648eac174d54f58d9a7bc28883001bd2 +Author: blam +Date: Wed Dec 22 02:10:53 2021 +0100 + + chore: added Host widget + Signed-off-by: blam + + Signed-off-by: blam + +commit fece75f0387faaa5ab668b1f2f9fd6d8a24982b5 +Author: blam +Date: Wed Dec 22 02:10:32 2021 +0100 + + chore + + Signed-off-by: blam + +commit 02274caa49cb71a5f1922bed4e0cb4576ba8490c +Author: blam +Date: Wed Dec 22 01:25:33 2021 +0100 + + chore: moving out the host field into another component + Signed-off-by: blam + + Signed-off-by: blam + +commit ed054cd9b8a95c0c094e62cd9bb1c5ee952b3b1a +Merge: aabbd9a475 9a797cfd50 +Author: Ben Lambert +Date: Wed Jan 12 13:20:53 2022 +0100 + + Merge pull request #8868 from lykkeaxlin/minor-fixes + + [Bazaar] Add to marketplace and some minor fixes + +commit aabbd9a475c8c75dbcca77a64357fde5ab897df5 +Merge: 332b47fcdf be7b234fb6 +Author: Ben Lambert +Date: Wed Jan 12 13:19:25 2022 +0100 + + Merge pull request #8871 from DRoystonSmith/patch-1 + + Add Just Eat Takeaway to adopters list + +commit 7c04bfb8284d31ab701ac30e114ae10a7da313c3 +Author: Patrik Oldsberg +Date: Wed Jan 12 11:34:44 2022 +0100 + + vocab.txt: added "backported" + + Co-authored-by: Johan Haals + Signed-off-by: Patrik Oldsberg + +commit 874bdb3febaa2bb927d278b955a46a030bbe7964 +Author: Patrik Oldsberg +Date: Wed Jan 12 11:33:44 2022 +0100 + + docs: remove publishing.md from microsite and move to docs root + + Co-authored-by: Johan Haals + Signed-off-by: Patrik Oldsberg + +commit 332b47fcdf8c7e0194b183b966a5ade7d9cad36c +Merge: ea228d2417 0a51b21328 +Author: Ben Lambert +Date: Wed Jan 12 11:41:39 2022 +0100 + + Merge pull request #8821 from djamaile/master + + feat: give component EntityMembersListCard a memberType prop + +commit 34d5570c78a768db85a91355484a97448775f13a +Author: Patrik Oldsberg +Date: Wed Jan 12 11:32:19 2022 +0100 + + SECURITY,docs: move emergency release process docs to publishing.md + complete + + Co-authored-by: Johan Haals + Signed-off-by: Patrik Oldsberg + +commit e6bef72496c85c8381f82deb8b3ac1610c88e784 +Author: Patrik Oldsberg +Date: Wed Jan 12 11:28:10 2022 +0100 + + scripts: rename pre-release to prepare-release + cleanup + + Co-authored-by: Johan Haals + Signed-off-by: Patrik Oldsberg + +commit ea228d2417e1ba1dfa72c5f38922c8c5b1e6caa9 +Merge: 285d641eb6 d1ab1d613e +Author: Ben Lambert +Date: Wed Jan 12 11:38:03 2022 +0100 + + Merge pull request #8517 from marleypowell/marley/7678-pull-request-custom-filters-2 + + feat: Added the ability to resolve team and team member relations for PR column filters + +commit 80724f644479fec3e3239e7b96de85a1486c1e58 +Author: Johan Haals +Date: Tue Jan 11 14:40:36 2022 +0100 + + Initial prerelease work + + Signed-off-by: Johan Haals + +commit be7b234fb6a7e48bcb13d653c76e2de5a3cf64be +Author: DRoystonSmith <82180203+DRoystonSmith@users.noreply.github.com> +Date: Tue Jan 11 16:12:08 2022 +0000 + + Add Just Eat Takeaway to adopters list + +commit 285d641eb620dec20f7211d7ae11d6077d3ebcbb +Author: Emma Indal +Date: Wed Jan 12 11:30:33 2022 +0100 + + Custom Homepage documentation (#8862) + + * Fix note formatting + + Signed-off-by: Emma Indal + + * Update app-custom-theme.md + + Signed-off-by: Emma Indal + +commit d1ab1d613e9328e9c050983f57d5a46ee2bcfa4f +Merge: 8a8c11158d f9c8cef5f9 +Author: Marley Powell +Date: Wed Jan 12 10:09:21 2022 +0000 + + Merge branch 'master' of https://github.com/backstage/backstage into marley/7678-pull-request-custom-filters-2 + +commit f9c8cef5f9cfd98718777cd2602dfdae973b0be3 +Merge: 92703c58c3 783537bb1a +Author: Ben Lambert +Date: Wed Jan 12 11:07:29 2022 +0100 + + Merge pull request #8881 from backstage/blam/fix-dep + + Trim the commit message on dependabot script so that it doesn't break prettier + +commit 783537bb1a809f29d29a6dd05e41403540e732f5 +Author: blam +Date: Wed Jan 12 11:00:36 2022 +0100 + + chore: add back the newline char + + Signed-off-by: blam + +commit 57ce85be71020fb8dfe3acd76947c85b0c42e394 +Author: blam +Date: Wed Jan 12 10:48:14 2022 +0100 + + chore: trim the message to remove any extra chars + + Signed-off-by: blam + +commit b7ecbb60147a0d3091002783b04d9afb52fd3ceb +Author: blam +Date: Wed Jan 12 10:46:12 2022 +0100 + + chore: needs a new line at the end + Signed-off-by: blam + +commit 92703c58c3798db44c7f29a4bca7300d09d42e22 +Merge: 00ec6fe3c2 67c53777ec +Author: Patrik Oldsberg +Date: Wed Jan 12 10:46:02 2022 +0100 + + Merge pull request #8837 from backstage/rugvip/style + + added STYLE.md + +commit 18023e40ce7411d26baf3d2c711af82e4564db44 +Author: blam +Date: Wed Jan 12 10:41:26 2022 +0100 + + chore: prettify changeset + + Signed-off-by: blam + +commit 00ec6fe3c2a9cb1b2b75c48420634e7f0206b283 +Merge: e142fa53b8 dffff180b7 +Author: Ben Lambert +Date: Wed Jan 12 10:10:41 2022 +0100 + + Merge pull request #8877 from backstage/dependabot/npm_and_yarn/jest-when-3.5.0 + + build(deps-dev): bump jest-when from 3.3.1 to 3.5.0 + +commit 8a8c11158defb953be4c083defd89dc6623a36cb +Merge: 7de84a8239 e142fa53b8 +Author: Marley Powell +Date: Wed Jan 12 09:06:24 2022 +0000 + + Merge branch 'master' of https://github.com/backstage/backstage into marley/7678-pull-request-custom-filters-2 + +commit 7de84a823940434c03896d41a2da4aff16e85a3d +Author: Marley Powell +Date: Wed Jan 12 08:59:16 2022 +0000 + + refactor: Code review improvements around `getTeamMembers` parameters. + + Signed-off-by: Marley Powell + +commit 7f280f3840f49da2769063874ac33795d26fd556 +Author: Francesco Corti +Date: Wed Jan 12 09:41:22 2022 +0100 + + Reviewing the telemetry description. + + Reviewing the telemetry description. + +commit 3d6041acf78ea318a50aa5cac989ce6ffee3b4bb +Author: Francesco Corti +Date: Wed Jan 12 09:39:49 2022 +0100 + + Update docs/overview/roadmap.md + + Accepting the suggestion on the security plan. + + Co-authored-by: Fredrik Adelöw + +commit 5d7d54438c3c18a894a2b09dc2270d52672f910f +Author: Francesco Corti +Date: Wed Jan 12 09:39:31 2022 +0100 + + Update docs/overview/roadmap.md + + Typo in the benefits for adopters (Accepting the suggestion). + + Co-authored-by: Fredrik Adelöw + +commit 2059387e4a47129c9185bc7f63a1104389ffd871 +Author: Francesco Corti +Date: Wed Jan 12 09:39:07 2022 +0100 + + Update docs/overview/roadmap.md + + Accepting the suggestion on the support model. + + Co-authored-by: Fredrik Adelöw + +commit 51a1946c2ccc676c688c95d0a917a0feffcc31fb +Author: Francesco Corti +Date: Wed Jan 12 09:38:47 2022 +0100 + + Update docs/overview/roadmap.md + + Accepting the suggestion on the release cadence. + + Co-authored-by: Fredrik Adelöw + +commit ebb0cddf07708a0be94b9efd5211450aa5ebe3d1 +Author: Francesco Corti +Date: Wed Jan 12 09:38:11 2022 +0100 + + Typo in a change + +commit f344a694a243751bb0235d78ab9a94cdc479be72 +Author: Francesco Corti +Date: Wed Jan 12 09:36:22 2022 +0100 + + Update docs/overview/roadmap.md + + Co-authored-by: Fredrik Adelöw + +commit c870703ee413c4b23ce2d33a9516b3e8e8ab41ec +Author: Francesco Corti +Date: Wed Jan 12 09:32:25 2022 +0100 + + Update docs/overview/roadmap.md + + Co-authored-by: Fredrik Adelöw + +commit e142fa53b8f571ef2b7cb9cd8b0575a1c548a118 +Merge: 4656a55779 3423b3b24d +Author: Johan Haals +Date: Wed Jan 12 09:09:23 2022 +0100 + + Merge pull request #8873 from SDA-SE/docs/sonarqube-token-info + + docs(sonarqube): enhance token content documentation + +commit 4656a55779bbf180f88d29e858045a9292d554dd +Merge: 82e2c1d77a 5a9cbb17fa +Author: Johan Haals +Date: Wed Jan 12 09:07:59 2022 +0100 + + Merge pull request #8875 from praveen-livspace/patch-1 + + Adding Livspace in the list of adopters + +commit 82e2c1d77a4f3ba83df7c7c1bfaa71331ed10134 +Merge: fdb2e43502 ba64975be6 +Author: Johan Haals +Date: Wed Jan 12 09:04:37 2022 +0100 + + Merge pull request #8878 from backstage/dependabot/npm_and_yarn/yup-0.32.11 + + build(deps): bump yup from 0.32.9 to 0.32.11 + +commit fdb2e43502ca3317a41331cb522fa4b8e7d7d20a +Merge: 0d1e0bef8e 5b406daabe +Author: Johan Haals +Date: Wed Jan 12 09:02:12 2022 +0100 + + Merge pull request #8880 from backstage/dependabot/npm_and_yarn/http-errors-2.0.0 + + build(deps-dev): bump http-errors from 1.8.0 to 2.0.0 + +commit 5a9cbb17fa0ab80c5111235a7e638c3528c51c01 +Author: praveen-livspace <77090791+praveen-livspace@users.noreply.github.com> +Date: Wed Jan 12 09:25:54 2022 +0530 + + Adding Livspace in the list of adopters + + Signed-off-by: praveen-livspace + +commit 5b406daabe307d0a2bceda1f86505d72f165a221 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Wed Jan 12 04:28:33 2022 +0000 + + build(deps-dev): bump http-errors from 1.8.0 to 2.0.0 + + Bumps [http-errors](https://github.com/jshttp/http-errors) from 1.8.0 to 2.0.0. + - [Release notes](https://github.com/jshttp/http-errors/releases) + - [Changelog](https://github.com/jshttp/http-errors/blob/master/HISTORY.md) + - [Commits](https://github.com/jshttp/http-errors/compare/1.8.0...v2.0.0) + + --- + updated-dependencies: + - dependency-name: http-errors + dependency-type: direct:development + update-type: version-update:semver-major + ... + + Signed-off-by: dependabot[bot] + +commit 2d622caab53fcaccc84a84f780fe1ed40f46317e +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Wed Jan 12 04:25:28 2022 +0000 + + build(deps): bump @microsoft/api-extractor-model from 7.15.1 to 7.15.3 + + Bumps [@microsoft/api-extractor-model](https://github.com/microsoft/rushstack/tree/HEAD/apps/api-extractor-model) from 7.15.1 to 7.15.3. + - [Release notes](https://github.com/microsoft/rushstack/releases) + - [Changelog](https://github.com/microsoft/rushstack/blob/master/apps/api-extractor-model/CHANGELOG.md) + - [Commits](https://github.com/microsoft/rushstack/commits/@microsoft/api-extractor-model_v7.15.3/apps/api-extractor-model) + + --- + updated-dependencies: + - dependency-name: "@microsoft/api-extractor-model" + dependency-type: direct:production + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit ba64975be6a76bab59108b9db8c211e5ec7d99d7 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Wed Jan 12 04:17:24 2022 +0000 + + build(deps): bump yup from 0.32.9 to 0.32.11 + + Bumps [yup](https://github.com/jquense/yup) from 0.32.9 to 0.32.11. + - [Release notes](https://github.com/jquense/yup/releases) + - [Changelog](https://github.com/jquense/yup/blob/master/CHANGELOG.md) + - [Commits](https://github.com/jquense/yup/compare/v0.32.9...v0.32.11) + + --- + updated-dependencies: + - dependency-name: yup + dependency-type: direct:production + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit dffff180b77a31f26fff8ddb39ccd76d1f3f9a30 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Wed Jan 12 04:13:02 2022 +0000 + + build(deps-dev): bump jest-when from 3.3.1 to 3.5.0 + + Bumps [jest-when](https://github.com/timkindberg/jest-when) from 3.3.1 to 3.5.0. + - [Release notes](https://github.com/timkindberg/jest-when/releases) + - [Commits](https://github.com/timkindberg/jest-when/compare/v3.3.1...v3.5.0) + + --- + updated-dependencies: + - dependency-name: jest-when + dependency-type: direct:development + update-type: version-update:semver-minor + ... + + Signed-off-by: dependabot[bot] + +commit 67c53777ec34f690ac435797c8e74c265bff7187 +Author: Patrik Oldsberg +Date: Tue Jan 11 12:20:07 2022 +0100 + + STYLE.md: review fixes + + Signed-off-by: Patrik Oldsberg + +commit 071b6eb6600f0705f5f19a50976d6a43ee9c3348 +Author: Patrik Oldsberg +Date: Mon Jan 10 10:57:20 2022 +0100 + + added STYLE.md + + Signed-off-by: Patrik Oldsberg + +commit 0a51b21328b755db3a1c12d491cf42f09f5de69a +Author: djamaile +Date: Tue Jan 11 19:21:45 2022 +0100 + + test: update test description + + Signed-off-by: djamaile + +commit 68651069b6f411e080381d13dca01850fd180aa6 +Author: djamaile +Date: Tue Jan 11 19:14:44 2022 +0100 + + fix: use right prop name + + Signed-off-by: djamaile + +commit 3423b3b24da54af6bf00d329905d0c4ffb66b213 +Author: Dominik Schwank +Date: Tue Jan 11 17:49:32 2022 +0100 + + docs(sonarqube): enhance token content documentation + + Signed-off-by: Dominik Schwank + +commit 03016eab49da948ae568a16be811e6b86f53ef4b +Author: djamaile +Date: Tue Jan 11 17:25:27 2022 +0100 + + chore: change prop name to memberDisplayTitle + + Signed-off-by: djamaile + +commit 0d1e0bef8e3a1cc7eddacddb59c38f585884b965 +Merge: ac65c65391 5a14988da6 +Author: Ben Lambert +Date: Tue Jan 11 16:44:44 2022 +0100 + + Merge pull request #8864 from RoadieHQ/query-perf-tweaks-for-tech-insights + + [TechInsights] Modify queries to perform better by filtering on subqueries as well + +commit ac65c65391a884c2f795995f22a2c299118eb01f +Merge: 4c9c45f351 60ec1a959b +Author: Ben Lambert +Date: Tue Jan 11 16:43:05 2022 +0100 + + Merge pull request #8863 from goenning/go/add-bulk-check-operation + + [TechInsights] add operation to run checks for multiple entities in one operation + +commit 9a797cfd5041a60919d02d36bf56f855b6114b20 +Author: Lykke Axlin +Date: Tue Jan 11 16:34:45 2022 +0100 + + add newline at end of file + + Signed-off-by: Lykke Axlin + +commit fac69a935c1156f6e669ab1810ca37e10ad5f56b +Author: Lykke Axlin +Date: Tue Jan 11 16:32:52 2022 +0100 + + remove unnecessary type cast + + Signed-off-by: Lykke Axlin + +commit 77f194c89eddb0f9794772368ec0fefbb3a772ce +Author: Lykke Axlin +Date: Tue Jan 11 16:25:06 2022 +0100 + + add line break to prevent horizontal scrolling + + Signed-off-by: Lykke Axlin + +commit 60ec1a959bafc0c3612b829632394735ddd6b1b6 +Author: goenning +Date: Tue Jan 11 12:22:48 2022 +0000 + + simplify error handling + + Signed-off-by: goenning + +commit a60eb0f0dd46c35365a19ce245de1b4c344b9d5d +Author: goenning +Date: Tue Jan 11 09:58:07 2022 +0000 + + add checks bulk operation + + Signed-off-by: goenning + +commit 5cee07e45fea96ab623caef8e8d434f0cf6f9170 +Author: Lykke Axlin +Date: Tue Jan 11 16:14:41 2022 +0100 + + update yarn.lock + + Signed-off-by: Lykke Axlin + +commit 6eb6e2dc31effdb397207238054611d74985a2df +Author: Lykke Axlin +Date: Tue Jan 11 16:11:51 2022 +0100 + + add changeset + + Signed-off-by: Lykke Axlin + +commit f686aaccf2252b180d71175de6035d338d266321 +Merge: d2b984597c 4c9c45f351 +Author: Lykke Axlin +Date: Tue Jan 11 16:09:37 2022 +0100 + + Merge branch 'master' of https://github.com/backstage/backstage into minor-fixes + +commit d2b984597c0eaaa469974371329063938f287d90 +Author: Lykke Axlin +Date: Tue Jan 11 16:06:23 2022 +0100 + + add type checking + + Signed-off-by: Lykke Axlin + +commit 5a14988da6999a31967425c53dc6c89e7ac58167 +Author: Jussi Hallila +Date: Tue Jan 11 12:12:54 2022 +0100 + + Add dash to make vale happier. + + Signed-off-by: Jussi Hallila + +commit 10f26e88836e8b805316af68ef7ebbca24d769ca +Author: Jussi Hallila +Date: Tue Jan 11 12:09:17 2022 +0100 + + Modify queries to perform better by filtering on subqueries as well + + Signed-off-by: Jussi Hallila + +commit 15a4b1e071891358882adb70845e4d38c77e7760 +Merge: ccd1c6617e 4c9c45f351 +Author: Francesco Corti +Date: Tue Jan 11 15:05:52 2022 +0100 + + Merge branch 'backstage:master' into fcorti-roadmap-001 + +commit ccd1c6617e7d5724db44168e02156d52697d0f41 +Author: Francesco Corti +Date: Tue Jan 11 14:42:52 2022 +0100 + + Update docs/overview/roadmap.md + + Co-authored-by: Ben Lambert + +commit 4c9c45f3514afc377aa88fde037b7f79f50875de +Merge: 9552a6feea 06af8a33b3 +Author: Ben Lambert +Date: Tue Jan 11 14:33:19 2022 +0100 + + Merge pull request #8866 from backstage/blam/fixing-dependendabot-changeset-maker + + Dependabot workflow backtick changeset of package name + +commit 06af8a33b3666bdce18aa7f1aaa48e89671dd9ab +Author: blam +Date: Tue Jan 11 13:48:17 2022 +0100 + + chore: fixing the matching and replace with same character + + Signed-off-by: blam + +commit 36eb73bb8b86f679d3955abaedc44a6ec744bca0 +Author: blam +Date: Tue Jan 11 13:36:57 2022 +0100 + + chore: backtick the packages + Signed-off-by: blam + +commit a8de66688ac208b92c6079a71d022cff23280deb +Author: blam +Date: Tue Jan 11 13:42:16 2022 +0100 + + chore: actually match everything that is non-whitepace + + Signed-off-by: blam + +commit 063cbbef4785eb5b046a2512640dab1836008027 +Author: blam +Date: Tue Jan 11 13:36:57 2022 +0100 + + chore: backtick the packages + Signed-off-by: blam + +commit 2a8d10dc9024a6353f6558f505821ed54b4fe1bb +Author: blam +Date: Tue Jan 11 13:32:19 2022 +0100 + + chore: fixing formatting for the roadmap + + Signed-off-by: blam + +commit cceaf78bca4cd4df9863bcb33cc9db47ee766b6e +Merge: 602f2c543c 9552a6feea +Author: Lykke Axlin +Date: Tue Jan 11 13:31:06 2022 +0100 + + Merge branch 'master' of https://github.com/backstage/backstage into bazaar-workflow-changes + +commit 602f2c543ce27444b47bb33f231a84943df8a206 +Author: Lykke Axlin +Date: Tue Jan 11 13:29:09 2022 +0100 + + add Bazaar to marketplace and minor UI and API improvements + + Signed-off-by: Lykke Axlin + +commit 0a80732c959c842a75dec563489c14b6fbc84fff +Author: Francesco Corti +Date: Tue Jan 11 12:45:03 2022 +0100 + + Updated roadmap page in the public documentation + + Signed-off-by: Francesco Corti + +commit 9552a6feea36577eb55201958b023deabe23b7bc +Merge: 7b72bd4aee b47965beec +Author: Ben Lambert +Date: Tue Jan 11 11:47:02 2022 +0100 + + Merge pull request #8777 from backstage/dependabot/npm_and_yarn/date-io/luxon-2.11.1 + + build(deps): bump @date-io/luxon from 1.3.13 to 2.11.1 + +commit 35ab9befbaddb8aa8832df66613a16f7091d96c9 +Author: Karan Shah +Date: Tue Jan 11 10:45:29 2022 +0000 + + Rename entity() to createEntity() + + Signed-off-by: Karan Shah + +commit b47965beecadbc0cc753b8f32bec6856bbb92e66 (origin/dependabot/npm_and_yarn/date-io/luxon-2.11.1) +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Tue Jan 11 10:16:24 2022 +0000 + + build(deps): bump @date-io/luxon from 1.3.13 to 2.11.1 + + Bumps [@date-io/luxon](https://github.com/dmtrKovalenko/date-io) from 1.3.13 to 2.11.1. + - [Release notes](https://github.com/dmtrKovalenko/date-io/releases) + - [Commits](https://github.com/dmtrKovalenko/date-io/compare/v1.3.13...v2.11.1) + + --- + updated-dependencies: + - dependency-name: "@date-io/luxon" + dependency-type: direct:production + update-type: version-update:semver-major + ... + + Signed-off-by: dependabot[bot] + +commit 87ffa4698ddc6bd1a8b3c655a831ea8a1db36567 +Author: Karan Shah +Date: Tue Jan 11 10:14:21 2022 +0000 + + Create a mock entity + + Signed-off-by: Karan Shah + +commit 811fb9cf9ca1c31ff8a3cad89ae965ea62314191 +Author: goenning +Date: Tue Jan 11 09:55:04 2022 +0000 + + remove this.logger.isDebugEnabled call + + Signed-off-by: goenning + +commit 32ab08a4b14e4a2ef1b538fee7a5f58d368367cd +Author: Karan Shah +Date: Tue Jan 11 09:35:22 2022 +0000 + + Register the mock API for the dev app + + Signed-off-by: Karan Shah + +commit a48a3fec9b8f106c7d90186271d77f9594d5d552 +Merge: dc55aa89f6 7b72bd4aee +Author: Marley Powell +Date: Tue Jan 11 09:32:52 2022 +0000 + + Merge branch 'master' of https://github.com/backstage/backstage into marley/7678-pull-request-custom-filters-2 + +commit 7b72bd4aeebf48214ea0184e36153431fdbfe5d8 +Merge: 28246da60e bc5f67627c +Author: Ben Lambert +Date: Tue Jan 11 10:30:44 2022 +0100 + + Merge pull request #8619 from RoadieHQ/demo-of-processor-using-creds-provider-interface + + processor, actions and readers to use gh creds interface + +commit 28246da60e702e0713d66be5d91380496c59fe4f +Merge: c09fbe361f d6ed0e407d +Author: Johan Haals +Date: Tue Jan 11 10:15:49 2022 +0100 + + Merge pull request #8849 from backstage/jhaals/changeset-maker + + Automatically generate dependabot changesets + +commit c09fbe361fc1a5f1ae746b260c64e91cfc16ba78 +Merge: b401c83b00 faf844e269 +Author: Ben Lambert +Date: Tue Jan 11 09:40:55 2022 +0100 + + Merge pull request #8847 from SDA-SE/build/bump-asyncapi-react-components + + build(deps): bump @asyncapi/react-component to 1.0.0-next.26 + +commit d6ed0e407d5e0ebcf5741f934959b3b669dc4f63 +Author: Johan Haals +Date: Tue Jan 11 09:21:22 2022 +0100 + + format, pass args in array + + Signed-off-by: Johan Haals + +commit ab2ae2a28cf23fd4915735307924caaf3c32bc08 +Author: lakshikaparihar +Date: Tue Jan 11 13:26:41 2022 +0530 + + formatted code with prettier + + Signed-off-by: lakshikaparihar + +commit 0988d56b69b13e842fd7d9be618459167987c7b4 +Author: lakshikaparihar +Date: Tue Jan 11 12:36:39 2022 +0530 + + formatted md file + + Signed-off-by: lakshikaparihar + +commit b401c83b00f4a54b6697a27f6b5688b18009f554 +Merge: 72b00f4f2e 9c8c4be7ce +Author: Himanshu Mishra +Date: Tue Jan 11 12:13:57 2022 +0530 + + Merge pull request #8854 from powerhome/power-adopter + + docs: Add Power to the list of adopters + +commit 5de4482b44dc22b70b647694a44dfe63d37014e7 +Author: Nigel Wright +Date: Tue Jan 11 09:16:25 2022 +1300 + + chore: cleaned up markdown with prettier + + Signed-off-by: Nigel Wright + +commit 9c8c4be7ce314bf2af2997c9fa9b2ad679a310a7 +Author: Ben Langfeld +Date: Mon Jan 10 16:27:30 2022 -0300 + + docs: Add Power to the list of adopters + + Signed-off-by: Ben Langfeld + +commit 72b00f4f2ed99160c3aa5da3304da52ddfeb09b3 +Merge: 79982b2a99 20ca7cfa5f +Author: Patrik Oldsberg +Date: Mon Jan 10 19:49:23 2022 +0100 + + Merge pull request #8852 from backstage/rugvip/auto + + auth-backend: switch over to use auto secure cookies + +commit faf844e26942642ac1c806f9a92af9c609bae8b4 +Author: Dominik Schwank +Date: Mon Jan 10 16:07:01 2022 +0100 + + build(deps): bump @asyncapi/react-component to 1.0.0-next.26 + + The new pre-release is fixing errors with the ResizeObserver. + + Signed-off-by: Dominik Schwank + +commit 79982b2a99cab29c2559f900d669e4ecd80c505a +Merge: 8833a6b28f d6d9272749 +Author: Ben Lambert +Date: Mon Jan 10 17:36:49 2022 +0100 + + Merge pull request #8772 from ananthulasrikar/master + + Add file details to add Shorcuts component + +commit 20ca7cfa5fa831359d8cd6b3618a117d6b8305fd +Author: Patrik Oldsberg +Date: Mon Jan 10 17:35:02 2022 +0100 + + auth-backend: switch over to use auto secure cookies + + Signed-off-by: Patrik Oldsberg + +commit 8833a6b28f13f9e5cba5d6a3141d2e9e0ea8ba71 +Merge: b1ca1f5bff ef4e0628aa +Author: Ben Lambert +Date: Mon Jan 10 17:28:23 2022 +0100 + + Merge pull request #8813 from hiba-aldalaty/hdalaty/bug-fix-sidebar-submenu-delay + + Bug fix: Create a delay when a Sidebar submenu opens + +commit d16c977381980614e529a65a28bc6b5dc5a2e352 +Author: Karan Shah +Date: Mon Jan 10 16:27:46 2022 +0000 + + Incorporate the API changes to the rest of the code. + + Signed-off-by: Karan Shah + +commit b1ca1f5bff06a0852d9a391d24eefb8ff46b407e +Merge: ddc64f3c39 5060116e9d +Author: Ben Lambert +Date: Mon Jan 10 17:27:16 2022 +0100 + + Merge pull request #8840 from RoadieHQ/customizable-title-description + + Customizable title and description for tech insights + +commit ddc64f3c39bb068ac829db677047c37498dd26a9 +Merge: 8a7ccbdf73 161f32cf4e +Author: Ben Lambert +Date: Mon Jan 10 17:18:56 2022 +0100 + + Merge pull request #8844 from backstage/rugvip/nowarn + + scripts/api-extractor: forbid warnings for a couple of core packages + +commit d4941024bce71887f1af802f5e64259f24a5bdc2 +Author: Kamil Zainal +Date: Mon Jan 10 16:09:14 2022 +0000 + + Add changeset for create-app with instructions for upgrade + + Signed-off-by: Kamil Zainal + +commit 5a2204ef0a9b8309ad77f2b4ad9b5f6f584d5017 +Author: Kamil Zainal +Date: Mon Jan 10 15:51:52 2022 +0000 + + Update existing changeset to reflect API change + + Signed-off-by: Kamil Zainal + +commit e1f24677dbd3ebf340899f4b8ebe9dc1c7585dcb +Author: Johan Haals +Date: Mon Jan 10 16:48:54 2022 +0100 + + Move script into actions definition + + Signed-off-by: Johan Haals + +commit ef4e0628aa4965063750fc9d2fc81ef349e4b653 +Author: hiba-aldalaty +Date: Mon Jan 10 15:12:41 2022 +0000 + + Remove unused import + + Signed-off-by: hiba-aldalaty + +commit c9394b67bcd31b4cbec91cdb079c7d3022be63e2 +Author: hiba-aldalaty +Date: Mon Jan 10 15:03:31 2022 +0000 + + Use css transition to create submenu open delay instead of js + + Signed-off-by: hiba-aldalaty + +commit bc5f67627c6a4e75278789f382393f6b167e181b +Merge: ce82656901 8a7ccbdf73 +Author: Brian Fletcher +Date: Mon Jan 10 14:40:04 2022 +0000 + + Merge branch 'master' of github.com:backstage/backstage into readersprocessorstasks + +commit 161f32cf4ec199e8d4ac1379b43eec878050c0e7 +Author: Patrik Oldsberg +Date: Mon Jan 10 15:35:29 2022 +0100 + + scripts/api-extractor: forbid warnings for a couple of core packages + + Signed-off-by: Patrik Oldsberg + +commit 06ab42b65d2ede4da97bf016c6612f68fd812e63 +Author: Patrik Oldsberg +Date: Mon Jan 10 15:35:06 2022 +0100 + + config-loader: fix API Report warnings + + Signed-off-by: Patrik Oldsberg + +commit 5060116e9dff183dbe91423a8662d3579576a16d +Author: irma12 +Date: Mon Jan 10 15:25:47 2022 +0100 + + Modified changeset + + Signed-off-by: irma12 + +commit 8a7ccbdf73adb66f04ffd4b5af71dfdf7a51c737 +Merge: dfc2fcc08d 512591b8c3 +Author: Patrik Oldsberg +Date: Mon Jan 10 15:22:39 2022 +0100 + + Merge pull request #8841 from backstage/rugvip/winfix + + cli: fix versioning tests on windows + +commit dfc2fcc08dfee4f8ed9114d7e611f86d94d430bb +Merge: 416323397a 784d8078ab +Author: Ben Lambert +Date: Mon Jan 10 15:20:40 2022 +0100 + + Merge pull request #8736 from backstage/rugvip/purge + + core-app-api,core-plugin-api: remove MUI dependencies + +commit 24ed8c02373f65abcf54ab24d449497a879c51ba +Author: irma12 +Date: Mon Jan 10 15:03:07 2022 +0100 + + Added api report + + Signed-off-by: irma12 + +commit 416323397ac8521b1d36492f1b27ff46cb8de137 +Merge: 618d78495c 34442cd5cf +Author: Ben Lambert +Date: Mon Jan 10 14:56:19 2022 +0100 + + Merge pull request #8838 from backstage/rugvip/sessions + + core-app-api: fix saml and github session types + +commit b7e049377029e2fb699d1d2c9fd6be111e7bb89a +Author: Karan Shah +Date: Mon Jan 10 13:51:33 2022 +0000 + + Documentation should just point to the plugin folder, not the README file directly. + + Signed-off-by: Karan Shah + +commit 784d8078abca22e2a3fe3abde309738f562cb025 +Author: Patrik Oldsberg +Date: Tue Jan 4 10:46:11 2022 +0100 + + core-app-api,core-plugin-api: remove MUI dependencies + + Signed-off-by: Patrik Oldsberg + +commit 512591b8c3d777f0af0969b7803b74d346f04384 +Author: Patrik Oldsberg +Date: Mon Jan 10 14:30:59 2022 +0100 + + cli: fix versioning tests on windows + + Signed-off-by: Patrik Oldsberg + +commit 618d78495cf6cdf8928365a20b97435c5a65074d +Merge: 49a665e97e 5333451def +Author: Johan Haals +Date: Mon Jan 10 14:27:21 2022 +0100 + + Merge pull request #8825 from backstage/freben/a-tale-of-hyphens-and-braces + + 🧹 Got rid of the last brace-typed and hyphen-less params etc + +commit ef6c1a13b2d01ada47ac61b606d77a1568f0501d +Author: irma12 +Date: Mon Jan 10 14:15:18 2022 +0100 + + Fix in order to pass tsc + + Signed-off-by: irma12 + +commit 34883f5c9e4041179d5d0242fbcc5edc032a0ea5 +Author: irma12 +Date: Mon Jan 10 14:11:20 2022 +0100 + + Add posibility to customize description and title + + Signed-off-by: irma12 + +commit 49a665e97e8348b5acf5e075d20491dc42e324f9 +Merge: ccb5bef731 ac5a99077b +Author: Ben Lambert +Date: Mon Jan 10 13:53:45 2022 +0100 + + Merge pull request #8839 from backstage/rugvip/exit + + scripts/api-extractor: exit on tsc failure + +commit ccb5bef7318133b307b318a8e040c699e1fb2022 +Merge: fca5c02e41 ad0ceca026 +Author: Ben Lambert +Date: Mon Jan 10 13:44:44 2022 +0100 + + Merge pull request #8802 from backstage/rugvip/warn + + scripts/api-extractor: warn when introducing new warnings + +commit 34442cd5cf52a64656ae64e862c6f7cfa6418495 +Author: Patrik Oldsberg +Date: Mon Jan 10 11:26:50 2022 +0100 + + core-app-api: fix + deprecate saml and github session types + + Signed-off-by: Patrik Oldsberg + +commit fca5c02e4155b7384baee3a812c93ab8e999acaf +Merge: f5d41dc2c9 9632cda521 +Author: Johan Haals +Date: Mon Jan 10 13:37:54 2022 +0100 + + Merge pull request #8826 from backstage/freben/ze-author + + 🧹 Fix the last renmnants of the old copyright header + +commit f5d41dc2c9101a6124780d176f6bc0f39e0a7a11 +Merge: bdf1419d20 1449509f9c +Author: Patrik Oldsberg +Date: Mon Jan 10 13:31:16 2022 +0100 + + Merge pull request #8797 from backstage/rugvip/nolerna + + switch to using @manypkg/get-packages for enumerating monorepo packages + +commit ac5a99077bdebfb56106412ddb121e57efefca5f +Author: Patrik Oldsberg +Date: Mon Jan 10 13:09:11 2022 +0100 + + scripts/api-extractor: exit on tsc failure + + Signed-off-by: Patrik Oldsberg + +commit f3d7baaefa248681c8db3e0829f95cf02af40934 +Author: Karan Shah +Date: Mon Jan 10 11:49:23 2022 +0000 + + Connect the API code to the components + + Signed-off-by: Karan Shah + +commit b1afac9d0954e1fd44fc4b37c78eb7e1882b50b0 +Merge: 135df6accc bdf1419d20 +Author: Karan Shah +Date: Mon Jan 10 10:53:10 2022 +0000 + + Merge remote-tracking branch 'upstream/master' into airbrake-api + +commit 135df6accc042471807536659e79cec942212fb8 +Author: Karan Shah +Date: Mon Jan 10 10:52:02 2022 +0000 + + Setup the API code + + Signed-off-by: Karan Shah + +commit bdf1419d20f91230a6b12bb2a96d252f45a6ca56 +Author: Emma Indal +Date: Mon Jan 10 11:40:07 2022 +0100 + + [Home] first homepage template to storybook + two more home components (#8434) + + * add new toolkit component + + Signed-off-by: Emma Indal + + * add toolkit content test + + Signed-off-by: Emma Indal + + * add key to toolkit items + + Signed-off-by: Emma Indal + + * add reusable company logo component + + Signed-off-by: Emma Indal + + * export root ref from search plugin + + Signed-off-by: Emma Indal + + * add homepage template to storybook + + Signed-off-by: Emma Indal + + * export new homepage components from plugin + + Signed-off-by: Emma Indal + + * fix imports + + Signed-off-by: Emma Indal + + * add search plugin to dependencies + + Signed-off-by: Emma Indal + + * add home plugin changeset + + Signed-off-by: Emma Indal + + * add storybook changeset + + Signed-off-by: Emma Indal + + * delete changeset for storybook + + Signed-off-by: Emma Indal + + * delete duplicated search context provider + + Signed-off-by: Emma Indal + + * use list item text props + + Signed-off-by: Emma Indal + + * update home plugin documentation + add customize app docs + + Signed-off-by: Emma Indal + + * named exports + + Signed-off-by: Emma Indal + + * add homepage components to storybook + + Signed-off-by: Emma Indal + + * use app config as default for company logo + + Signed-off-by: Emma Indal + + * rename homepage template + + Signed-off-by: Emma Indal + + * use props instead of context for tools, update Content component of card extension to accept props + + Signed-off-by: Emma Indal + + * fix api reports + docstrings + markers + + Signed-off-by: Emma Indal + + * export ToolkitContentProps instead of Tool + + Signed-off-by: Emma Indal + + * docs and stories fixups + + Signed-off-by: Emma Indal + + * do not export rootRouteRef from search plugin + + Signed-off-by: Emma Indal + + * update docs links + + Signed-off-by: Emma Indal + + * change unpacking of props + + Signed-off-by: Emma Indal + + * delete extra fragment + + Signed-off-by: Emma Indal + + * fixup searchbar border styles + + Signed-off-by: Emma Indal + +commit 5b516c13956a4497a089b6a0c52e8df5e50eaf94 +Merge: 00beac0ab6 da9c59d6e0 +Author: Ben Lambert +Date: Mon Jan 10 11:31:34 2022 +0100 + + Merge pull request #8798 from backstage/rugvip/badep + + auth-backend: moved test-utils dependency to devDeps + +commit 00beac0ab61e1c61cf902c2a873e2cf8d7f4d211 +Merge: a889cc4216 db5310e25e +Author: Ben Lambert +Date: Mon Jan 10 11:17:34 2022 +0100 + + Merge pull request #8836 from backstage/blam/colors-fix + + bump `logform` with pinned `colors` dependency + +commit a889cc4216d3b3d2d8a8087536445519291532f8 +Merge: 7db91695b7 47ab72bde2 +Author: Ben Lambert +Date: Mon Jan 10 11:17:18 2022 +0100 + + Merge pull request #8690 from moltenice-forks/airbrake-initial + + Initial Airbrake Plugin Setup + +commit 7db91695b783554322d5c94cbd2d234b56e9d44c +Merge: 1588840d67 9fbd3b90ae +Author: Ben Lambert +Date: Mon Jan 10 10:56:09 2022 +0100 + + Merge pull request #8832 from bert-huang/register-entityRef-prioritise-component-kind + + fix: Register plugin to prioritise Component kind for entityRef + +commit 1588840d6798ccb9bf6d24ed777b7b7b85cd2bb9 +Merge: 5d13ce64a3 e2eb92c109 +Author: Patrik Oldsberg +Date: Mon Jan 10 10:55:44 2022 +0100 + + Merge pull request #8808 from backstage/rugvip/depr1 + + removed deprecations from the 2021-11-25 release + +commit 5d13ce64a3fd9f586b92fa4df79af635ff395a7b +Merge: 4d9fff9fcd a1ac761a9d +Author: Johan Haals +Date: Mon Jan 10 10:54:25 2022 +0100 + + Merge pull request #8830 from backstage/freben/markdown-it + + Bump markdown-it to the fixed version + +commit 4ae04a2c2fd9964344b48290100ce185a7580791 +Author: Philipp Hugenroth +Date: Mon Jan 10 10:32:56 2022 +0100 + + Fix naming of SidebarStateContext import + + Signed-off-by: Philipp Hugenroth + +commit 2c876194a02b244bef579b2a9d62654c02d6472d +Merge: 1d251689d5 4d9fff9fcd +Author: Philipp Hugenroth +Date: Mon Jan 10 10:08:00 2022 +0100 + + Merge branch 'master' into mobile-sidebar + +commit db5310e25e7faec0a179c1dcb3e2ad1ee8b40a59 +Author: blam +Date: Mon Jan 10 10:00:08 2022 +0100 + + chore: added changeset + + Signed-off-by: blam + +commit 7848b5047854494d0c66a222c0aa748a1de0e89e +Author: blam +Date: Mon Jan 10 09:55:50 2022 +0100 + + chore: bump logform and fixing the colors issue + + Signed-off-by: blam + +commit 4d9fff9fcd14180575b8fbd256a9873caa5b216f +Merge: c8ff2df05a 45df287eec +Author: Eric Peterson +Date: Mon Jan 10 09:50:05 2022 +0100 + + Merge pull request #8800 from backstage/docs/configure-catalog-search + + [Search] Illustrate how to hide locations from catalog search + +commit 5333451defd45bc39c719b262b171abd865bcda6 +Author: Fredrik Adelöw +Date: Sun Jan 9 15:56:07 2022 +0100 + + Got rid of the last brace-typed and hyphen-less params etc + + Signed-off-by: Fredrik Adelöw + +commit c8ff2df05a9db240ff380859ff59900d4083c487 +Merge: 47a5e8c273 f77bd5c8ff +Author: Ben Lambert +Date: Mon Jan 10 07:33:31 2022 +0100 + + Merge pull request #8824 from backstage/freben/api-commonz + + 🧹 Clean up API reports in backend-common + +commit 47a5e8c273fdce367cbd8b9de30e898e7c95fba5 +Merge: 1883aebdc9 8319c54e28 +Author: Ben Lambert +Date: Mon Jan 10 07:19:34 2022 +0100 + + Merge pull request #8833 from backstage/dependabot/npm_and_yarn/octokit/webhooks-9.22.0 + + build(deps): bump @octokit/webhooks from 9.18.0 to 9.22.0 + +commit 1883aebdc9df3ad75ce2796839390d202b2d90bf +Merge: 7f3894be1c 06e2d79569 +Author: Ben Lambert +Date: Mon Jan 10 07:19:11 2022 +0100 + + Merge pull request #8834 from backstage/dependabot/npm_and_yarn/microsoft/microsoft-graph-types-2.11.0 + + build(deps): bump @microsoft/microsoft-graph-types from 2.8.0 to 2.11.0 + +commit 06e2d79569667b8cd7b7e4be701d63ee52e099fe +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Mon Jan 10 04:16:23 2022 +0000 + + build(deps): bump @microsoft/microsoft-graph-types from 2.8.0 to 2.11.0 + + Bumps [@microsoft/microsoft-graph-types](https://github.com/microsoftgraph/msgraph-typescript-typings) from 2.8.0 to 2.11.0. + - [Release notes](https://github.com/microsoftgraph/msgraph-typescript-typings/releases) + - [Commits](https://github.com/microsoftgraph/msgraph-typescript-typings/commits) + + --- + updated-dependencies: + - dependency-name: "@microsoft/microsoft-graph-types" + dependency-type: direct:production + update-type: version-update:semver-minor + ... + + Signed-off-by: dependabot[bot] + +commit 8319c54e28fe9923062c721f1994971e127a5693 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Mon Jan 10 04:13:59 2022 +0000 + + build(deps): bump @octokit/webhooks from 9.18.0 to 9.22.0 + + Bumps [@octokit/webhooks](https://github.com/octokit/webhooks.js) from 9.18.0 to 9.22.0. + - [Release notes](https://github.com/octokit/webhooks.js/releases) + - [Commits](https://github.com/octokit/webhooks.js/compare/v9.18.0...v9.22.0) + + --- + updated-dependencies: + - dependency-name: "@octokit/webhooks" + dependency-type: direct:production + update-type: version-update:semver-minor + ... + + Signed-off-by: dependabot[bot] + +commit 9fbd3b90ae98e89f26386253178ee963f8da9fcc +Author: Bert Huang +Date: Mon Jan 10 13:22:53 2022 +1300 + + fix: Register plugin to prioritise Component kind for entityRef + + Signed-off-by: Bert Huang + +commit a1ac761a9d618836af85e6e9870e865014e10782 +Author: Fredrik Adelöw +Date: Sun Jan 9 22:14:51 2022 +0100 + + Bump markdown-it to the fixed version + + Signed-off-by: Fredrik Adelöw + +commit 9632cda521be35f96e39e7a764dfb34d8de24c85 +Author: Fredrik Adelöw +Date: Sun Jan 9 17:49:09 2022 +0100 + + Fix the last renmnants of the old copyright header + + Signed-off-by: Fredrik Adelöw + +commit fb33739fbe3984f0cc00f2c90528dc28649f9d33 +Author: Nigel Wright +Date: Mon Jan 10 08:16:21 2022 +1300 + + updated integration instructions + + Signed-off-by: Nigel Wright + +commit 3f08dcd696d902397e35000e84e65ae5db86332f +Author: Djamaile Rahamat +Date: Sat Jan 8 19:47:13 2022 +0100 + + feat: give component EntityMembersListCard a memberType prop + + Signed-off-by: djamaile + +commit f77bd5c8ff955d2842579706297cc70e25fd5f7f +Author: Fredrik Adelöw +Date: Sun Jan 9 15:21:44 2022 +0100 + + Clean up API reports in backend-common + + Signed-off-by: Fredrik Adelöw + +commit 7f3894be1ca80fe38d7c5730cf8b8518c8555b0d +Merge: 508b3ffb36 722681b1b1 +Author: Fredrik Adelöw +Date: Sun Jan 9 13:57:48 2022 +0100 + + Merge pull request #8823 from backstage/freben/apireportz + + 🧹 Clean up API reports in ldap and msgraph catalog modules + +commit 722681b1b13ff2192a0c3a3389d7fc7d0b752b13 +Author: Fredrik Adelöw +Date: Sun Jan 9 13:05:10 2022 +0100 + + Clean up API reports in ldap and msgraph catalog modules + + Signed-off-by: Fredrik Adelöw + +commit 29710c91c29d5a324c81eb695c0b3e1b53ac38ba +Author: Erik Larsson +Date: Sun Jan 9 00:02:09 2022 +0100 + + use lighter color for block quotes and horizontal rulers + + Signed-off-by: Erik Larsson + +commit 508b3ffb367a39f564944d01abc26e003dc5f89a +Merge: af98fbc3d5 2b19fd2e94 +Author: Fredrik Adelöw +Date: Sat Jan 8 18:33:41 2022 +0100 + + Merge pull request #8820 from backstage/freben/ldap-set-fix + + deep clone data read out of config, to avoid pollution / mutation + +commit 2b19fd2e941b6b3a00abc96a519597c40e290a68 +Author: Fredrik Adelöw +Date: Sat Jan 8 16:30:45 2022 +0100 + + deep clone data read out of config, to avoid pollution / mutation + + Signed-off-by: Fredrik Adelöw + +commit af98fbc3d5c35b7e92d4affe16211c029a46a28a +Merge: a426ba0e26 f5343e7c1a +Author: Patrik Oldsberg +Date: Sat Jan 8 17:38:19 2022 +0100 + + Merge pull request #8819 from backstage/rugvip/clonfig + + config: make ConfigReader#get always return a clone + +commit f5343e7c1aea3877df023d53481d49912c458e7e +Author: Patrik Oldsberg +Date: Sat Jan 8 16:23:26 2022 +0100 + + config: make get always return a clone + + Signed-off-by: Patrik Oldsberg + +commit a95e7880590ba432b4705c6648a41ba2e626a4de +Author: Patrik Oldsberg +Date: Sat Jan 8 16:22:02 2022 +0100 + + config: move reader test to correct block + + Signed-off-by: Patrik Oldsberg + +commit 6fd70f8bc8a85a60e0c927c0cb6555552766398e +Author: Dhruval Darji +Date: Fri Jan 7 11:19:10 2022 -0500 + + fix(catalog-backend): support Bitbucket servers with custom BaseURLs + + Previously, the `BitbucketDiscoveryProcessor` assumed that all Bitbucket servers would have paths formed in the pattern of `/projects/{project}/repos/{repo}`. However, since Bitbucket servers have the ability to configure custom baseUrls, this assumption does not always hold true. Instead of evaluating project and repo terms from the full target path, the processor will find the `/projects/` url segment, and start path evaluations from its index instead. This path substring is then used to determine the `projectSearchPath` and the `repoSearchPath`. Support is also added to accept search params for the `catalogPath` as well. + + Fixes #8771 + + Signed-off-by: Dhruval Darji + +commit a426ba0e26f3596126913c6793cf53eaaa3b25e3 +Merge: 71369c2591 23046ab18d +Author: Patrik Oldsberg +Date: Fri Jan 7 19:51:27 2022 +0100 + + Merge pull request #8814 from backstage/blam/fix-type + + Change help text for `api-extractor` + +commit 23046ab18d1b83594c3f6ae88c97adbbb4de1d6b +Author: Ben Lambert +Date: Fri Jan 7 18:47:31 2022 +0100 + + chore: we're generating api-reports not changesets + + + + Signed-off-by: Ben Lambert + +commit d5b17b28d1579f6c8e173e1d6bb8fd0eabe76ea6 +Author: hiba-aldalaty +Date: Fri Jan 7 17:31:52 2022 +0000 + + Update changeset + + Signed-off-by: hiba-aldalaty + +commit 42f81cf45181a0f5789e607afe6a9c345979a2dc +Author: hiba-aldalaty +Date: Fri Jan 7 17:25:50 2022 +0000 + + Update changeset + + Signed-off-by: hiba-aldalaty + +commit de2396da2435588ced3d5d7955747c34583da385 +Author: hiba-aldalaty +Date: Fri Jan 7 17:10:17 2022 +0000 + + Add changeset + + Signed-off-by: hiba-aldalaty + +commit 190f105901e73c089a5f46ace3404fd5c814d2b1 +Author: hiba-aldalaty +Date: Fri Jan 7 17:04:39 2022 +0000 + + Add open delay for submenus in sidebar + + Signed-off-by: hiba-aldalaty + +commit 71369c25917c14acb048890d9dd57bcdecdfe096 +Merge: 43561d100f f2134e7029 +Author: Fredrik Adelöw +Date: Fri Jan 7 17:59:42 2022 +0100 + + Merge pull request #8806 from runebaas/add-adopter-ef + + Add EF Education First to the list of adopters + +commit db75552b8bbc0f8124973a0b979e20b2da36cf24 +Author: Lakshika Parihar <31981299+lakshikaparihar@users.noreply.github.com> +Date: Fri Jan 7 21:08:38 2022 +0530 + + Update how-to-guides.md + + Signed-off-by: lakshikaparihar + +commit 43561d100f4e69d8b843ec70748c456016f20532 +Merge: cd529c4094 10b4ba686f +Author: MT Lewis +Date: Fri Jan 7 16:56:42 2022 +0000 + + Merge pull request #8784 from backstage/catalog-permission-rule-type-param + + catalog-backend: add type parameter to CatalogPermissionRule type + +commit e2eb92c1095411f1162987de4ebde320ce7f96d9 +Author: Patrik Oldsberg +Date: Tue Jan 4 01:57:59 2022 +0100 + + removed deprecations from the 2021-11-25 release + + Signed-off-by: Patrik Oldsberg + +commit 10b4ba686f234ef0b301a5204a71fba6f12c0637 +Author: MT Lewis +Date: Fri Jan 7 15:04:50 2022 +0000 + + catalog-backend: remove CatalogPermissionRule type + + Signed-off-by: MT Lewis + +commit bef617807bb39973f9d458dce9227e172232e80c +Author: MT Lewis +Date: Fri Jan 7 11:50:51 2022 +0000 + + catalog-backend: custom createPermissionRule implementation + + Signed-off-by: MT Lewis + +commit 82cfdc8d02e5595d89604b698e10c9bdb52dadfb +Author: MT Lewis +Date: Fri Jan 7 11:47:14 2022 +0000 + + catalog-backend: use createPermissionRule helper instead of manually typing rules + + Signed-off-by: MT Lewis + +commit 9db1b86f3244579c0e5b1f5aced5371aabf08c59 +Author: MT Lewis +Date: Fri Jan 7 11:26:54 2022 +0000 + + permission-node: add helpers for creating PermissionRules + + Signed-off-by: MT Lewis + +commit 8fe84eadaf5a414240aac2ba7d57141a4a5122a5 +Author: MT Lewis +Date: Thu Jan 6 16:46:17 2022 +0000 + + catalog-backend: add type parameter to CatalogPermissionRule type + + Previously the CatalogPermissionRule type had a fixed type of unknown[] + for the parameters expected in the `apply` and `toQuery` methods. This + meant that conditions generated for these rules would always have + unknown parameters too, which makes using them in policies much more + difficult. + + To address this, this commit introduces a mandatory type parameter for + CatalogPermissionRule which is expected to be set to a tuple + corresponding to the expected parameters. + + Signed-off-by: MT Lewis + +commit f2134e7029f704331370dd7516d85063b4a7be7a +Author: Daan Boerlage +Date: Fri Jan 7 17:03:11 2022 +0100 + + docs: Add EF Education First to the list of adopters + +commit cd529c409445c124fc3030f5250ba6db957d336c +Author: Joon Park +Date: Fri Jan 7 15:49:26 2022 +0000 + + Integrate permissions with catalog-backend refresh endpoint (#8693) + + Integration permission framework with refresh in catalog-backend + + ... through the use of a new AuthorizedRefreshService. + + Signed-off-by: Joon Park + +commit 1d251689d5c72d51cd4ebea721ea14866557fb18 +Merge: 0322c6fbb9 3cf9ff0ba4 +Author: Philipp Hugenroth +Date: Fri Jan 7 16:41:44 2022 +0100 + + Merge branch 'master' into mobile-sidebar + +commit 6dfb8eb8484ab3700ac2abc7db3eb1d9a7048071 +Author: Johan Haals +Date: Fri Jan 7 16:34:05 2022 +0100 + + Automatically generate dependabot changesets + + Signed-off-by: Johan Haals + +commit ad0ceca026cbf5cdca1473d28513d16495f0315d +Author: Patrik Oldsberg +Date: Fri Jan 7 15:58:26 2022 +0100 + + scripts/api-extractor: warn when introducing new warnings + + Signed-off-by: Patrik Oldsberg + +commit 45df287eec039e84722ae838119408d625dbc465 +Author: Eric Peterson +Date: Fri Jan 7 15:41:45 2022 +0100 + + Show how to hide locations from search + + Signed-off-by: Eric Peterson + +commit ce82656901817c2072419b8913f03183d1043c08 +Author: Brian Fletcher +Date: Fri Jan 7 14:13:23 2022 +0000 + + removes some breaking compatability changes + + Signed-off-by: Brian Fletcher + +commit 1449509f9cd824caa5773a61c13ad3bd3777d252 +Author: Patrik Oldsberg +Date: Fri Jan 7 15:01:48 2022 +0100 + + cli: updated versions bump tests to work with get-packages + + Signed-off-by: Patrik Oldsberg + +commit 3cf9ff0ba46e443517ff7dfb2e55ab003d414283 +Merge: eba3653e3c 2a5875ce5b +Author: Eric Peterson +Date: Fri Jan 7 14:39:00 2022 +0100 + + Merge pull request #8795 from backstage/rugvip/storyfix + + fix storybook and tweak workflow trigger + +commit eba3653e3c08365cf295b0b30902c5774a99cebe +Merge: 3f975582a4 a67ec8527f +Author: Johan Haals +Date: Fri Jan 7 14:28:09 2022 +0100 + + Merge pull request #8747 from lorsatti/kubernetes-aws-rbac + + Make AWS session token optional + +commit 61261079ccdcc1dd65317f2352e8f198aa8b4834 +Author: Patrik Oldsberg +Date: Fri Jan 7 13:30:59 2022 +0100 + + scripts: refactor to use get-packages + + Signed-off-by: Patrik Oldsberg + +commit 79464187293213ccb516d4e8cfc4bee90319bc72 +Author: Patrik Oldsberg +Date: Fri Jan 7 13:21:38 2022 +0100 + + changesets: added changeset for get-packages refactor + + Signed-off-by: Patrik Oldsberg + +commit 859fc51f553da611a44db558df3b2a9ad90232f8 +Author: Patrik Oldsberg +Date: Fri Jan 7 13:21:04 2022 +0100 + + backend-common: switch to using get-packages for listing monorepo packages + + Signed-off-by: Patrik Oldsberg + +commit e9a5faf1f60f100baa2eedd25187b5018786f009 +Author: Patrik Oldsberg +Date: Fri Jan 7 13:14:01 2022 +0100 + + cli: remove lerna dependency + + Signed-off-by: Patrik Oldsberg + +commit de4f500c22a3454f95ca5fc13c9afd1e99730295 +Author: Patrik Oldsberg +Date: Fri Jan 7 13:10:23 2022 +0100 + + cli: migrate packager to use PackageGraph + + Signed-off-by: Patrik Oldsberg + +commit f202e2a90bda0d1a29320b344bc05617520e8c14 +Author: Patrik Oldsberg +Date: Fri Jan 7 11:59:13 2022 +0100 + + cli: refactory versioning mapDependencies to use get-packages + + Signed-off-by: Patrik Oldsberg + +commit 0555c594e42d1d0e734a481dfa14ec483fb0a36a +Author: Patrik Oldsberg +Date: Fri Jan 7 11:47:12 2022 +0100 + + cli: switch bundler config to use get-packages + + Signed-off-by: Patrik Oldsberg + +commit 2a5875ce5be71d4addae922663e3b523c0b3e53a +Author: Patrik Oldsberg +Date: Fri Jan 7 10:52:44 2022 +0100 + + storybook: add missing dependency declarations + + Signed-off-by: Patrik Oldsberg + +commit eebe1df58296d9b1d8b52d3ec8939b2b689711fc +Author: Patrik Oldsberg +Date: Fri Jan 7 10:46:50 2022 +0100 + + test-utils: avoid usage of private field syntax + + Signed-off-by: Patrik Oldsberg + +commit da9c59d6e082054700a7c66bb45bd13c431be87a +Author: Patrik Oldsberg +Date: Fri Jan 7 13:40:15 2022 +0100 + + auth-backend: moved test-utils dependency to devDeps + + Signed-off-by: Patrik Oldsberg + +commit 3f975582a4f0a20db2e89921682bce52913fed82 +Merge: c6c571dff0 a46fe68c1c +Author: Eric Peterson +Date: Fri Jan 7 11:50:26 2022 +0100 + + Merge pull request #8625 from dweber019/patch-1 + + Fix mkdocs-techdocs-core version + +commit 89dc61747166c29fb625bfb1186f8e2e51292422 +Author: Patrik Oldsberg +Date: Fri Jan 7 11:35:57 2022 +0100 + + cli: switch lib/config to use get-packages and PackageGraph + + Signed-off-by: Patrik Oldsberg + +commit 4aa68bf8f16bb9da9f28cee04b834ee978ac62fc +Author: Patrik Oldsberg +Date: Fri Jan 7 11:35:13 2022 +0100 + + cli: add PackagesGraph for traversing monorepo package graphs + + Signed-off-by: Patrik Oldsberg + +commit 97dc62c83a6b1d7a4cc4d2f6301ba9d7315a9d1a +Author: goenning +Date: Fri Jan 7 10:29:34 2022 +0000 + + log errors when tech insights throws an error + + Signed-off-by: goenning + +commit 19f0f9350480b471160d7cb77be630e831332dca +Author: goenning +Date: Fri Jan 7 10:25:42 2022 +0000 + + log errors when tech insights throws an error + + Signed-off-by: goenning + +commit c6c571dff0e948472839dd61234b27f227cb97cf +Merge: ed07f8244e 1628ca3f49 +Author: Eric Peterson +Date: Fri Jan 7 10:52:47 2022 +0100 + + Merge pull request #8789 from cmpadden/techdocs-dynamic-sidebar-positioning + + Techdocs: dynamically set primary sidebar position based on backstage sidebar pinned state + +commit ed07f8244ebd989d31de637c107e036631c5f73c +Merge: ad276c345e 1deb4c20eb +Author: Johan Haals +Date: Fri Jan 7 09:18:22 2022 +0100 + + Merge pull request #8773 from backstage/dependabot/npm_and_yarn/react-dev-utils-12.0.0 + + build(deps): bump react-dev-utils from 12.0.0-next.47 to 12.0.0 + +commit ad276c345e0d920d14a4f7a5f4c6ef7147f68a3b +Merge: 75c220c868 7f6a7fd274 +Author: Johan Haals +Date: Fri Jan 7 09:17:05 2022 +0100 + + Merge pull request #8785 from backstage/rugvip/bbsir + + docs: add bitbucket sign-in resolver docs + +commit 75c220c86832ef6243d497a885c1d5bb98f6ba58 +Merge: bf7a731531 1256bd408a +Author: Johan Haals +Date: Fri Jan 7 08:32:52 2022 +0100 + + Merge pull request #8794 from backstage/dependabot/npm_and_yarn/pgtools-0.3.2 + + build(deps-dev): bump pgtools from 0.3.0 to 0.3.2 + +commit a46fe68c1cb59ae9e27da1d6fb0e7803e088972d +Author: David Weber +Date: Thu Dec 23 23:11:23 2021 +0100 + + Update to mkdocs-techdocs-core==0.2.2 + + Signed-off-by: David Weber + +commit 1256bd408a10e9a70746c54f234b3bb2c2ffad3d +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Fri Jan 7 04:08:42 2022 +0000 + + build(deps-dev): bump pgtools from 0.3.0 to 0.3.2 + + Bumps [pgtools](https://github.com/olalonde/pgtools) from 0.3.0 to 0.3.2. + - [Release notes](https://github.com/olalonde/pgtools/releases) + - [Changelog](https://github.com/olalonde/pgtools/blob/master/CHANGELOG.md) + - [Commits](https://github.com/olalonde/pgtools/compare/v0.3.0...v0.3.2) + + --- + updated-dependencies: + - dependency-name: pgtools + dependency-type: direct:development + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit 7f6a7fd274bef9a5270417cc70439675698175f5 +Author: Patrik Oldsberg +Date: Thu Jan 6 18:22:56 2022 +0100 + + docs: add bitbucket sign-in resolver docs + + Signed-off-by: Patrik Oldsberg + +commit bf7a73153111ee4b15dd8473f6f5a0793ccb0cfb +Merge: f8d746e3ea 2260702efd +Author: Patrik Oldsberg +Date: Thu Jan 6 22:19:30 2022 +0100 + + Merge pull request #8781 from backstage/rugvip/todo-warnings + + todo-backend: fix API report warnings + +commit 4b57df1d86d16230f3482364b3213ca075545bf3 +Author: Julio Arias +Date: Thu Jan 6 14:55:33 2022 -0600 + + bugfix: Fix helm chart ingress template + + This changes fixes the ingress spec to match the API version either v1 or v1beta1, + previously the apiVersion was change according to the K8S version but no + further changes where made to actually match the new v1 API spec. This + cause issues deploying to clusters with versions 1.19+ + + Signed-off-by: Julio Arias + +commit 1628ca3f499e9fa42a5c416601248f5064a628bf +Author: Colton Padden +Date: Thu Jan 6 15:18:35 2022 -0500 + + dynamically set techdocs sidebar position based on backstage sidebar pinned state + + Signed-off-by: Colton Padden + +commit 2068135b9b463205bf1048632a72f6e7f7cd0aaf +Author: Kamil Zainal +Date: Thu Jan 6 16:41:58 2022 +0000 + + Update create-app template + + Signed-off-by: Kamil Zainal + +commit 859891b7de1cc8914cee94a23fefb44d1fce00b0 +Author: Kamil Zainal +Date: Thu Jan 6 16:36:22 2022 +0000 + + Changes from yarn build:api-reports + + Signed-off-by: Kamil Zainal + +commit db49de335f4f13d3b2d720436f0fc8f2196ef748 +Author: Brian Fletcher +Date: Thu Jan 6 16:31:36 2022 +0000 + + adds api-reports + + Signed-off-by: Brian Fletcher + +commit 2260702efd04c192d4847d890dc353ba4c9b41b9 +Author: Patrik Oldsberg +Date: Thu Jan 6 16:40:13 2022 +0100 + + todo-backend: fix API report warnings + + Signed-off-by: Patrik Oldsberg + +commit b3831be2feb8e02ddd48dfb8fddb1ac55a6e1e0a +Author: Kamil Zainal +Date: Thu Jan 6 15:37:41 2022 +0000 + + Add changeset + + Signed-off-by: Kamil Zainal + +commit a9f1c704dc9061319edf2387b33daf029b86ceb9 +Author: Kamil Zainal +Date: Thu Jan 6 12:41:41 2022 +0000 + + Route 'Register Existing API' on API page to /catalog-import + + The 'Register Existing API' button on /api-docs was routing to /create but APIs can't be created. Changing to route to /catalog-import where an API can be registered instead. + + Signed-off-by: Kamil Zainal + +commit f8d746e3ea3835631707294d5c4967c3f9c569d0 +Merge: cfca607777 48580d0fbb +Author: Patrik Oldsberg +Date: Thu Jan 6 15:45:11 2022 +0100 + + Merge pull request #8780 from goenning/go/fix-missing-react-key + + fix: add missing react key + +commit 95b369d808a44425ce4fc071c24e0c2cfc26d40e +Author: Brian Fletcher +Date: Thu Jan 6 14:21:56 2022 +0000 + + use scm integrations interface rather than implementation + + Signed-off-by: Brian Fletcher + +commit 48580d0fbb4b1106ba0b725b14b7241361011f85 +Author: goenning +Date: Thu Jan 6 14:16:51 2022 +0000 + + add missing react key + + Signed-off-by: goenning + +commit ffda3d4490f81503af776c3ea190e3814bde6fb1 +Author: Brian Fletcher +Date: Thu Jan 6 12:11:05 2022 +0000 + + tweaks to remove uneeded differences + + Signed-off-by: Brian Fletcher + +commit 3b4d8caff6917f062b9ba63da14a14f0ea313588 +Author: Brian Fletcher +Date: Thu Jan 6 12:03:52 2022 +0000 + + adds changesets + + Signed-off-by: Brian Fletcher + +commit be15350198199e6b5f41f3bf4d491be7da607c95 +Author: Brian Fletcher +Date: Thu Jan 6 11:55:15 2022 +0000 + + change single instance provider back to the way it was + + there was no changes to it, so there was no need for it. + + Signed-off-by: Brian Fletcher + +commit 0a21e4bcc4aa6e801c83df1dfe9e42e55e3dd533 +Author: Brian Fletcher +Date: Thu Jan 6 11:46:39 2022 +0000 + + Make the credentials provider optional.. + + ..and other review comments improvements. + + Signed-off-by: Brian Fletcher + +commit fb8ca7c1bfc89952e8af4e8e211d43ff02fc42ae +Author: Brian Fletcher +Date: Wed Jan 5 16:53:30 2022 +0000 + + remove code accidently added in + + Signed-off-by: Brian Fletcher + +commit cfca6077777a3e373284fe69067987bcf5802676 +Merge: ecd353fcff 6011a234f0 +Author: Fredrik Adelöw +Date: Thu Jan 6 09:20:18 2022 +0100 + + Merge pull request #8775 from backstage/dependabot/npm_and_yarn/types/jenkins-0.23.3 + + build(deps-dev): bump @types/jenkins from 0.23.2 to 0.23.3 + +commit ecd353fcff3e149e3633c5b4091566589248a31e +Merge: 730d01ab1a 6c3c70197f +Author: Fredrik Adelöw +Date: Thu Jan 6 09:16:39 2022 +0100 + + Merge pull request #8778 from backstage/dependabot/npm_and_yarn/mime-types-2.1.34 + + build(deps): bump mime-types from 2.1.32 to 2.1.34 + +commit 6c3c70197faace6dbd18819a7d074797c62dbcfe +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Thu Jan 6 04:44:12 2022 +0000 + + build(deps): bump mime-types from 2.1.32 to 2.1.34 + + Bumps [mime-types](https://github.com/jshttp/mime-types) from 2.1.32 to 2.1.34. + - [Release notes](https://github.com/jshttp/mime-types/releases) + - [Changelog](https://github.com/jshttp/mime-types/blob/master/HISTORY.md) + - [Commits](https://github.com/jshttp/mime-types/compare/2.1.32...2.1.34) + + --- + updated-dependencies: + - dependency-name: mime-types + dependency-type: direct:production + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit 6011a234f0f201c0c5118490d759cf9c5e76ab5d +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Thu Jan 6 04:16:56 2022 +0000 + + build(deps-dev): bump @types/jenkins from 0.23.2 to 0.23.3 + + Bumps [@types/jenkins](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jenkins) from 0.23.2 to 0.23.3. + - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) + - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jenkins) + + --- + updated-dependencies: + - dependency-name: "@types/jenkins" + dependency-type: direct:development + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit 1deb4c20eb3c5a79aed26156e7b4ffb8194ef071 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Thu Jan 6 04:11:49 2022 +0000 + + build(deps): bump react-dev-utils from 12.0.0-next.47 to 12.0.0 + + Bumps [react-dev-utils](https://github.com/facebook/create-react-app/tree/HEAD/packages/react-dev-utils) from 12.0.0-next.47 to 12.0.0. + - [Release notes](https://github.com/facebook/create-react-app/releases) + - [Changelog](https://github.com/facebook/create-react-app/blob/main/CHANGELOG-1.x.md) + - [Commits](https://github.com/facebook/create-react-app/commits/react-dev-utils@12.0.0/packages/react-dev-utils) + + --- + updated-dependencies: + - dependency-name: react-dev-utils + dependency-type: direct:production + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit d6d9272749a12e91ff302a7653fcb150318027c8 +Author: SrikarAnanthula <783594+ananthulasrikar@users.noreply.github.com> +Date: Wed Jan 5 17:13:25 2022 -0800 + + Add file details to add Shorcuts component + + Signed-off-by: SrikarAnanthula <783594+ananthulasrikar@users.noreply.github.com> + +commit f685e1398f857b129f5ff3402883ba31e12f3be1 +Author: Colton Padden +Date: Wed Jan 5 14:46:39 2022 -0500 + + add changeset for deprecation warning feature + + Signed-off-by: Colton Padden + +commit a505347140e3091915c2a7dfbf4dcb202c835734 +Author: Colton Padden +Date: Wed Jan 5 14:17:11 2022 -0500 + + enable withDeprecatedKeys in schema process for backend-common and app-backend + + Signed-off-by: Colton Padden + +commit 730d01ab1ad8b0107a37d0113aeb7b27c141b6f1 +Author: Joon Park +Date: Wed Jan 5 18:08:09 2022 +0000 + + Add apply-conditions endpoint for evaluating conditional permissions (#8675) + + Add apply-conditions endpoint for evaluating conditional permissions in catalog backend. + + Signed-off-by: Joon Park + +commit 6a1e2bf90f176774c16b3c53b0b481d56362b590 +Author: Julio Zynger +Date: Wed Jan 5 18:41:43 2022 +0100 + + Sync with app template + + Signed-off-by: Julio Zynger + +commit 0ae759dad4503fe150680fa0c5a37bb806cefc0a +Author: Joon Park +Date: Wed Jan 5 17:36:33 2022 +0000 + + Catalog permission rules (#8766) + + Add catalog permission rules + + Signed-off-by: Joon Park + +commit 687cfac22239ecdff0e2586894d10e4eaa504b83 +Merge: 1fc15f3ed3 717830634b +Author: Julio Zynger +Date: Wed Jan 5 18:22:20 2022 +0100 + + Merge branch 'master' into julioz/gocd-plugin + + Signed-off-by: Julio Zynger + +commit 717830634bf583ca4f50a483e1c0acb391a5e9b3 +Merge: b11555ec07 09a24bb65e +Author: Patrik Oldsberg +Date: Wed Jan 5 17:02:12 2022 +0100 + + Merge pull request #8745 from backstage/rugvip/minmax + + cli: switch to using esbuild for minifcation + +commit b11555ec070a783725cd626c01f55e3dcaad26ef +Merge: 62aae59c61 05f5bb5b53 +Author: Johan Haals +Date: Wed Jan 5 16:45:27 2022 +0100 + + Merge pull request #8765 from backstage/rugvip/drawio + + docs: switch package architecture diagram to .drawio.svg + +commit 0322c6fbb9580c3adcd96ee27a82116ce9111a97 +Merge: 7c28c82537 62aae59c61 +Author: Philipp Hugenroth +Date: Wed Jan 5 16:43:17 2022 +0100 + + Merge branch 'master' into mobile-sidebar + +commit 62aae59c61203dd73a766d6016817158aa580768 +Merge: dc47c51707 cf01627a33 +Author: Johan Haals +Date: Wed Jan 5 16:32:49 2022 +0100 + + Merge pull request #8764 from backstage/jhaals/bump-graphql + + catalog-graphql: Bump graphql versions + +commit 05f5bb5b530b49fd4d463a4242b19d67800348bf +Author: Patrik Oldsberg +Date: Wed Jan 5 16:08:01 2022 +0100 + + docs: switch package architecture diagram to .drawio.svg + + Signed-off-by: Patrik Oldsberg + +commit 09a24bb65e35aa8aa6629e9450fa0727460babb6 +Merge: 449833d4b5 dc47c51707 +Author: Patrik Oldsberg +Date: Wed Jan 5 16:06:15 2022 +0100 + + Merge branch 'master' into rugvip/minmax + +commit 7c28c825377a809b62f6501d3e671a76595c8f7f +Author: Philipp Hugenroth +Date: Wed Jan 5 16:02:39 2022 +0100 + + Improve typing by making isMobile optional & removing PropsWithChildren + + Improve consistency in documentation + + Signed-off-by: Philipp Hugenroth + +commit cf01627a3344e95f6410d72668aab1294bd2d9cd +Author: Johan Haals +Date: Wed Jan 5 15:33:16 2022 +0100 + + catalog-graphql: Bump graphql versions + + Signed-off-by: Johan Haals + +commit dc47c51707cf7b23c85c9374d85fb5bc89f3126b +Merge: 0e800fa610 14e980acee +Author: Fredrik Adelöw +Date: Wed Jan 5 15:26:56 2022 +0100 + + Merge pull request #8762 from szubster/eslint-8 + + Upgrade ESLint to version 8 and all it's plugin + +commit 2f1d27133b9fe11d1f4851c323ae9c4c2c0ffb14 +Author: Brian Fletcher +Date: Wed Jan 5 13:52:01 2022 +0000 + + use single instance provider in default one + + Also changes how the GitHub url is parsed. + + Signed-off-by: Brian Fletcher + +commit 14e980aceef900eb2de2ebd7c71c08afd27b755b +Author: Tomasz Szuba +Date: Wed Jan 5 12:48:32 2022 +0100 + + Upgrade ESLint to version 8 and all it's plugin + + Signed-off-by: Tomasz Szuba + +commit 449833d4b5cc3bfcf2803f55049be2a69fa05be6 +Author: blam +Date: Wed Jan 5 13:52:03 2022 +0100 + + chore: importing the ESBuildMinifyPlugin with require instead + Signed-off-by: blam + +commit 0e800fa61070f7f5d6c0c3df7f7248899fa32d5d +Merge: 759a590439 326dfbd565 +Author: Fredrik Adelöw +Date: Wed Jan 5 14:00:55 2022 +0100 + + Merge pull request #8758 from backstage/dependabot/npm_and_yarn/rollup-plugin-dts-4.1.0 + + build(deps): bump rollup-plugin-dts from 4.0.1 to 4.1.0 + +commit 759a5904398f57acf1c4d0e991d36b039d5a9d3f +Merge: f9f31b7cd6 2d3fd91e33 +Author: Patrik Oldsberg +Date: Wed Jan 5 13:32:39 2022 +0100 + + Merge pull request #8738 from backstage/rugvip/mockonf + + test-utils: add MockConfigApi + +commit f9f31b7cd6fbda169907188f07d08d128e6c64f7 +Merge: 48059943e8 8bdf613b31 +Author: Patrik Oldsberg +Date: Wed Jan 5 13:31:57 2022 +0100 + + Merge pull request #8740 from backstage/rugvip/quick-bar + + api-extractor: add option to generate API reports for select packages + +commit 48059943e8c3347856c778de24760e3df4203cb9 +Merge: 29713aafe8 ed08ab8df6 +Author: Johan Haals +Date: Wed Jan 5 13:29:48 2022 +0100 + + Merge pull request #8746 from backstage/rugvip/icons + + search: fix slow build + cli: fix import rule edge-case + +commit 29713aafe800878a2a1c31ee8ecb6ef751f87591 +Merge: 69fcd9637a 558b1d0ea4 +Author: Johan Haals +Date: Wed Jan 5 13:28:49 2022 +0100 + + Merge pull request #8757 from backstage/dependabot/npm_and_yarn/types/react-helmet-6.1.5 + + build(deps-dev): bump @types/react-helmet from 6.1.1 to 6.1.5 + +commit 69fcd9637a2be0011d282349bcbc47af465b0ef1 +Merge: 6ab3fc62c3 9135a581b9 +Author: Fredrik Adelöw +Date: Wed Jan 5 13:17:00 2022 +0100 + + Merge pull request #8753 from backstage/dependabot/npm_and_yarn/concurrently-7.0.0 + + build(deps-dev): bump concurrently from 6.2.0 to 7.0.0 + +commit 6ab3fc62c3e94ecc26450f29ca854d301d274984 +Merge: ca5342decb ba4cb0eecb +Author: Fredrik Adelöw +Date: Wed Jan 5 13:16:04 2022 +0100 + + Merge pull request #8755 from backstage/dependabot/npm_and_yarn/react-markdown-7.1.2 + + build(deps): bump react-markdown from 7.0.1 to 7.1.2 + +commit 326dfbd5653835b6bfbe715187ea3251c1271037 +Author: Fredrik Adelöw +Date: Wed Jan 5 13:14:19 2022 +0100 + + merj + + Signed-off-by: Fredrik Adelöw + +commit 54596bd67266432b30457d270090bd8092ac5865 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Wed Jan 5 10:46:20 2022 +0000 + + build(deps): bump rollup-plugin-dts from 4.0.1 to 4.1.0 + + Bumps [rollup-plugin-dts](https://github.com/Swatinem/rollup-plugin-dts) from 4.0.1 to 4.1.0. + - [Release notes](https://github.com/Swatinem/rollup-plugin-dts/releases) + - [Changelog](https://github.com/Swatinem/rollup-plugin-dts/blob/master/CHANGELOG.md) + - [Commits](https://github.com/Swatinem/rollup-plugin-dts/compare/v4.0.1...v4.1.0) + + --- + updated-dependencies: + - dependency-name: rollup-plugin-dts + dependency-type: direct:production + update-type: version-update:semver-minor + ... + + Signed-off-by: dependabot[bot] + +commit 558b1d0ea420097949191fa01a74d6a6bf0b119f +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Wed Jan 5 10:45:48 2022 +0000 + + build(deps-dev): bump @types/react-helmet from 6.1.1 to 6.1.5 + + Bumps [@types/react-helmet](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-helmet) from 6.1.1 to 6.1.5. + - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) + - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react-helmet) + + --- + updated-dependencies: + - dependency-name: "@types/react-helmet" + dependency-type: direct:development + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit 47ab72bde24ca0660b4fd0e1cd19c1e8f187d6cb +Author: Karan Shah +Date: Wed Jan 5 10:34:37 2022 +0000 + + Update dependencies + + Signed-off-by: Karan Shah + +commit ba4cb0eecb3f793b3c64cab6ac110d0ac4e445b5 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Wed Jan 5 10:30:46 2022 +0000 + + build(deps): bump react-markdown from 7.0.1 to 7.1.2 + + Bumps [react-markdown](https://github.com/remarkjs/react-markdown) from 7.0.1 to 7.1.2. + - [Release notes](https://github.com/remarkjs/react-markdown/releases) + - [Changelog](https://github.com/remarkjs/react-markdown/blob/main/changelog.md) + - [Commits](https://github.com/remarkjs/react-markdown/compare/7.0.1...7.1.2) + + --- + updated-dependencies: + - dependency-name: react-markdown + dependency-type: direct:production + update-type: version-update:semver-minor + ... + + Signed-off-by: dependabot[bot] + +commit 9135a581b911f7d14e7a3a8ba7d06a247fde548d +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Wed Jan 5 10:22:53 2022 +0000 + + build(deps-dev): bump concurrently from 6.2.0 to 7.0.0 + + Bumps [concurrently](https://github.com/open-cli-tools/concurrently) from 6.2.0 to 7.0.0. + - [Release notes](https://github.com/open-cli-tools/concurrently/releases) + - [Commits](https://github.com/open-cli-tools/concurrently/compare/v6.2.0...v7.0.0) + + --- + updated-dependencies: + - dependency-name: concurrently + dependency-type: direct:development + update-type: version-update:semver-major + ... + + Signed-off-by: dependabot[bot] + +commit ca5342decb8980db9bc05c01f1851113de150e0f +Merge: bba83e5a00 8b165b181d +Author: Fredrik Adelöw +Date: Wed Jan 5 11:06:41 2022 +0100 + + Merge pull request #8752 from backstage/freben/dependddddd + + bump dependabot aggro + +commit 0a461bbfb077d9c606f7cc77043915cd3d2369c2 +Merge: 53a604cc5e bba83e5a00 +Author: Karan Shah +Date: Wed Jan 5 09:36:05 2022 +0000 + + Merge remote-tracking branch 'upstream/master' into airbrake-initial + + # Conflicts: + # packages/app/package.json + +commit bba83e5a006b5632c24fa1ba703040b9629f1e2f +Merge: a99fa7dc4e b1bc55405e +Author: Fredrik Adelöw +Date: Wed Jan 5 10:33:47 2022 +0100 + + Merge pull request #8750 from backstage/dependabot/npm_and_yarn/testcontainers-8.1.2 + + build(deps): bump testcontainers from 7.23.0 to 8.1.2 + +commit 8b165b181d0d2b48cf936081a7465fe2b8c5147c +Author: Fredrik Adelöw +Date: Wed Jan 5 10:23:44 2022 +0100 + + bump dependabot aggro + + Signed-off-by: Fredrik Adelöw + +commit a99fa7dc4e49e5140877dd20d774024272648b4f +Merge: b2a6bf7f25 7612e2856b +Author: Fredrik Adelöw +Date: Wed Jan 5 10:08:41 2022 +0100 + + Merge pull request #8748 from lorsatti/emptystate-svg-clean-up + + clean up emptystate.svg + +commit 41ced545f38eaa9bca1745bc4ea8c1924798eb1b +Author: Brian Fletcher +Date: Wed Jan 5 08:30:11 2022 +0000 + + api-reports + + Signed-off-by: Brian Fletcher + +commit b1bc55405e6c83fd55f7dd574fd3362a6427f0ad +Author: Johan Haals +Date: Wed Jan 5 09:28:38 2022 +0100 + + add changeset + + Signed-off-by: Johan Haals + +commit 595dab2935701efd0d2328ca43d3c1d92ce87c1f +Author: Brian Fletcher +Date: Wed Jan 5 08:23:04 2022 +0000 + + Creates new provider for compatability + + There is now two credentials providers: + - SingleInstanceGithubCredentialsProvider can be created with a single + GitHubIntegrationConfig. + - DefaultGithubCredentialsProvider is created from the full integrations + config. + + Signed-off-by: Brian Fletcher + +commit b2a6bf7f254ee5d35d164bca7282252c38e0dcab +Merge: db8e6cace7 cf073fa2cf +Author: Johan Haals +Date: Wed Jan 5 07:52:07 2022 +0100 + + Merge pull request #8741 from leons727/patch-1 + + Add doc on custom endpoint and path-style access + +commit db8e6cace70d8ad538cad2bac02c1386e1047421 +Merge: ba1865c3d9 32e2fafe66 +Author: Johan Haals +Date: Wed Jan 5 07:45:43 2022 +0100 + + Merge pull request #8749 from backstage/dependabot/npm_and_yarn/azure-devops-node-api-11.1.0 + + build(deps): bump azure-devops-node-api from 11.0.1 to 11.1.0 + +commit 9b031646147d36600f3aa6934bcf542d7e72188e +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Wed Jan 5 04:15:27 2022 +0000 + + build(deps): bump testcontainers from 7.23.0 to 8.1.2 + + Bumps [testcontainers](https://github.com/testcontainers/testcontainers-node) from 7.23.0 to 8.1.2. + - [Release notes](https://github.com/testcontainers/testcontainers-node/releases) + - [Commits](https://github.com/testcontainers/testcontainers-node/compare/v7.23.0...v8.1.2) + + --- + updated-dependencies: + - dependency-name: testcontainers + dependency-type: direct:production + update-type: version-update:semver-major + ... + + Signed-off-by: dependabot[bot] + +commit 32e2fafe66cf5e9964100b4603f009441cfcbd2a +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Wed Jan 5 04:14:35 2022 +0000 + + build(deps): bump azure-devops-node-api from 11.0.1 to 11.1.0 + + Bumps [azure-devops-node-api](https://github.com/Microsoft/azure-devops-node-api) from 11.0.1 to 11.1.0. + - [Release notes](https://github.com/Microsoft/azure-devops-node-api/releases) + - [Commits](https://github.com/Microsoft/azure-devops-node-api/commits) + + --- + updated-dependencies: + - dependency-name: azure-devops-node-api + dependency-type: direct:production + update-type: version-update:semver-minor + ... + + Signed-off-by: dependabot[bot] + +commit 7612e2856b0a69da831570cc1bfe29999c584a6b +Author: Lorenzo Orsatti <49567430+lorsatti@users.noreply.github.com> +Date: Tue Jan 4 23:34:05 2022 +0100 + + clean up emptystate.svg + + Signed-off-by: Lorenzo Orsatti <49567430+lorsatti@users.noreply.github.com> + +commit a67ec8527f04fe56b70e09ad8dc4c0281e824c48 +Author: Lorenzo Orsatti <49567430+lorsatti@users.noreply.github.com> +Date: Tue Jan 4 23:13:07 2022 +0100 + + make AWS session token optional + + Signed-off-by: Lorenzo Orsatti <49567430+lorsatti@users.noreply.github.com> + +commit ba1865c3d9089b752ff5ed80ea7a9f68ddec2daf +Merge: ffdb98aa29 ea4ac162ce +Author: Patrik Oldsberg +Date: Wed Jan 5 02:13:03 2022 +0100 + + Merge pull request #8742 from fengypants/package-architecture-docs-typos + + docs: Fix typos in architecture-overview + +commit ea4ac162ce3434c7c0981e652f98f5e785680b88 +Author: Patrik Oldsberg +Date: Wed Jan 5 02:01:43 2022 +0100 + + docs: format overview/architecture-overview.md + + Signed-off-by: Patrik Oldsberg + +commit ed08ab8df650f1774af2039d46b288e726abcf6e +Author: Patrik Oldsberg +Date: Wed Jan 5 01:54:41 2022 +0100 + + search: fix import of all of MUI/icons + + Signed-off-by: Patrik Oldsberg + +commit bee708209411e91a458adb2288b339fb43cdff77 +Author: Patrik Oldsberg +Date: Wed Jan 5 01:52:35 2022 +0100 + + cli: detect edge-case for MUI icon imports + + Signed-off-by: Patrik Oldsberg + +commit f9c5841c801a1a543c61d8acc81befbb7aa3ae1c +Author: Colton Padden +Date: Tue Jan 4 19:33:42 2022 -0500 + + remove deleted artifacts of filterByDeprecated + + Signed-off-by: Colton Padden + +commit f302d24d340908b4a4d9e1af0df4a30fbacff406 +Author: Patrik Oldsberg +Date: Wed Jan 5 00:37:13 2022 +0100 + + cli: switch to using esbuild for minifcation + + Signed-off-by: Patrik Oldsberg + +commit 6e34e2cfbfbd83aa61ec184a78374e1c4220ca96 +Author: Colton Padden +Date: Tue Jan 4 16:29:28 2022 -0500 + + Add `backstage-cli config:check --deprecated` to list deprecated settings + + Signed-off-by: Colton Padden + +commit 63fa8f83715b9a998d6ee6deb8af170cc23f8089 +Author: Colton Padden +Date: Tue Jan 4 16:24:06 2022 -0500 + + move deprecation description key mapping into filterByVisibility + + Signed-off-by: Colton Padden + +commit 2d3fd91e33567bc45b4f33657ac11366e833d614 +Author: Patrik Oldsberg +Date: Tue Jan 4 11:46:49 2022 +0100 + + test-utils: add MockConfigApi + + Signed-off-by: Patrik Oldsberg + +commit cf073fa2cf05c9c8141b013643fd25809c74e7ca +Author: Leon Stein +Date: Tue Jan 4 14:05:03 2022 -0500 + + prettify + + Signed-off-by: Leon Stein + +commit edb534e26e78255de85ea4d702dfbda1da635018 +Author: Jeff Feng +Date: Tue Jan 4 13:27:51 2022 -0500 + + fix typos in architecture-overview + + Signed-off-by: Jeff Feng + +commit 9767bf8570a0f619507fdb1580fe243612bc4b93 +Author: Leon +Date: Tue Jan 4 13:19:04 2022 -0500 + + Add doc on custom endpoint and path-style access + + These features were added in https://github.com/backstage/backstage/commit/cf2e20a79223997baf2480db0d1c63f4c98abe8b + + Signed-off-by: Leon Stein + +commit 8bdf613b31ab7aab8acd3ddc998e0058cc5ab758 +Author: Patrik Oldsberg +Date: Tue Jan 4 18:27:04 2022 +0100 + + api-extractor: add option to generate API reports for select packages + + Signed-off-by: Patrik Oldsberg + +commit bb8ce88f2ea27d0cf4db945d0b662942976d8ed7 +Author: Brian Fletcher +Date: Tue Jan 4 15:57:07 2022 +0000 + + api reports + + Signed-off-by: Brian Fletcher + +commit 7af4986af8a42ffba67d14113055929c73a51b61 +Author: Brian Fletcher +Date: Tue Jan 4 15:30:07 2022 +0000 + + remove factory signature from gh creds provider + + This change required the SingleInstanceGithubCredentialsProvider to be + changed to allow it to look up the credentials from the whole list of + integrations. + + As such all places where it was used I have updated. + + Signed-off-by: Brian Fletcher + +commit ffdb98aa2973366d48ff1774a7f892bc0c926e7e (tag: v0.62.0, tag: release-2022-01-04) +Merge: a2fb9a4e03 e432d44f94 +Author: Johan Haals +Date: Tue Jan 4 13:11:08 2022 +0100 + + Merge pull request #8698 from backstage/changeset-release/master + + Version Packages + +commit 28b61f32b4d8d5ee9324c9ae801504593c2ab561 +Author: Fredrik Adelöw +Date: Tue Jan 4 13:02:55 2022 +0100 + + slim down and fetch on demand + + Signed-off-by: Fredrik Adelöw + +commit e432d44f9465f638b5ef669b30cd9d188d69f0bf +Author: github-actions[bot] +Date: Tue Jan 4 10:54:36 2022 +0000 + + Version Packages + +commit a2fb9a4e039cab522e56b540c48d9300225d5ecb +Merge: 76fe305f16 c534ef2242 +Author: Patrik Oldsberg +Date: Tue Jan 4 11:48:57 2022 +0100 + + Merge pull request #8737 from backstage/rugvip/old + + core-plugin-api: deprecate OldIconComponent + +commit c534ef2242b2f4baf400f3f7a870586400b81986 +Author: Patrik Oldsberg +Date: Tue Jan 4 11:03:45 2022 +0100 + + core-plugin-api: deprecate OldIconComponent + + Signed-off-by: Patrik Oldsberg + +commit 76fe305f16bfa38c009572d91da2882aa1dd1e77 +Merge: 620aae994d c4bde64707 +Author: Johan Haals +Date: Tue Jan 4 10:55:09 2022 +0100 + + Merge pull request #8731 from cooperbenson-qz/cooperbenson-qz/issue8525 + + Allow manual refresh of file enties + +commit 742c7a9929dc038c0f9cb77c640eecd4313a8e55 +Author: Fredrik Adelöw +Date: Tue Jan 4 10:49:43 2022 +0100 + + api report + + Signed-off-by: Fredrik Adelöw + +commit f0a743ecaec7c8acd6053adfe5e864c8ddc7c6f4 +Author: Fredrik Adelöw +Date: Mon Jan 3 19:06:31 2022 +0100 + + more tests + + Signed-off-by: Fredrik Adelöw + +commit b254d60924aa05b2d4734e00a8bddc69068ac487 +Author: Fredrik Adelöw +Date: Mon Jan 3 14:34:15 2022 +0100 + + proper token expiry handling + + Signed-off-by: Fredrik Adelöw + +commit 0bc142f54526fe3113556e59f71c09ea1eada2fb +Author: Fredrik Adelöw +Date: Mon Jan 3 12:00:58 2022 +0100 + + moved around the docs sections to make things clearer + + Signed-off-by: Fredrik Adelöw + +commit 6415189d9946a9790cac72b1849eb03b1447af19 +Author: Patrik Oldsberg +Date: Tue Dec 28 17:30:00 2021 +0100 + + auth: implement frontend parts of iap-like sign-in + + Signed-off-by: Fredrik Adelöw + +commit 6f5a1e74f55def5c25af380b7389cf0285391b20 +Author: Fredrik Adelöw +Date: Sun Dec 26 21:57:07 2021 +0100 + + use only a sign-in resolver + + Signed-off-by: Fredrik Adelöw + +commit 620aae994d1db6ddf4952cfcc145fe3dff3aafee +Merge: 37c81d4e1f 1b69ed0e39 +Author: Fredrik Adelöw +Date: Tue Jan 4 10:33:53 2022 +0100 + + Merge pull request #8647 from zgriesinger/add-prefix-glob-to-version-bump + + CLI: Add --prefix option to version:bump command + +commit 1b69ed0e39263eb3216a3ff291de0f0d6276a3a9 +Author: Fredrik Adelöw +Date: Tue Jan 4 10:30:10 2022 +0100 + + fix review comment + + Signed-off-by: Fredrik Adelöw + +commit 53a604cc5e756279d13480f35d7fc8c917e3a57d +Author: Karan Shah +Date: Tue Jan 4 09:29:39 2022 +0000 + + Create EntityAirbrakeContent.test.tsx + + Signed-off-by: Karan Shah + +commit c4bde64707de8374c7e899a1f08a6dc10b71dd07 +Author: Ben Lambert +Date: Tue Jan 4 10:29:17 2022 +0100 + + Update changeset text for spelling + + Signed-off-by: Ben Lambert + +commit 37c81d4e1f0db28709a58cb6b382639e6e0088d5 +Merge: 5c87d17286 b46dea84a9 +Author: Johan Haals +Date: Tue Jan 4 10:26:01 2022 +0100 + + Merge pull request #8717 from awanlin/topic/allow-for-bare-clone + + Allow for bare clone and retrieving commit history + +commit dc55aa89f64e3ff7839e54d5d8f8ade1cc42fef9 +Author: Marley Powell +Date: Tue Jan 4 09:17:49 2022 +0000 + + fix: Implemented a `p-limit` in `PullRequestsDashboardProvider` to stop unlimited parallelism. + + Signed-off-by: Marley Powell + +commit b46dea84a9e6076aedabcccb62bb4d9527d4af99 +Author: Johan Haals +Date: Tue Jan 4 09:57:31 2022 +0100 + + pass noCheckout without defaulting to false + + Signed-off-by: Johan Haals + +commit 5c87d17286fa73822efd2d89ba86053c09146354 +Merge: 2c62f86eb9 7b31064fe8 +Author: Johan Haals +Date: Tue Jan 4 09:35:32 2022 +0100 + + Merge pull request #8728 from backstage/timbonicus/catalog-routeref + + Add routeRef in catalog customization example + +commit 2c62f86eb91b07fe61ad316a2f32f0fe3dc312f1 +Merge: ecac0b195e d6934ee733 +Author: Johan Haals +Date: Tue Jan 4 09:27:52 2022 +0100 + + Merge pull request #8700 from cmpadden/techdocs-internal-link-new-tab + + Support cmd/ctrl+click to open internal Techdoc links in a new tab + +commit ecac0b195e858435ff323073d2370645a5f0cf1f +Merge: 8aab705d04 8dafbbb8b8 +Author: Johan Haals +Date: Tue Jan 4 09:24:28 2022 +0100 + + Merge pull request #8723 from RoadieHQ/modify-tech-insights-default-cadence + + Modify tech insights default cadence to be less eager. + +commit 8aab705d04a7ec1692654c267e213dba8ab9d392 +Merge: bdb33ceab7 077aa5688a +Author: Johan Haals +Date: Tue Jan 4 08:23:28 2022 +0100 + + Merge pull request #8733 from backstage/dependabot/npm_and_yarn/types/recharts-1.8.23 + + build(deps): bump @types/recharts from 1.8.19 to 1.8.23 + +commit bdb33ceab7c7b1475ae08b11a18f268bd71e9067 +Merge: 9ec2032ee2 7deee7fc86 +Author: Johan Haals +Date: Tue Jan 4 08:23:02 2022 +0100 + + Merge pull request #8734 from backstage/dependabot/npm_and_yarn/esbuild-0.14.10 + + build(deps): bump esbuild from 0.14.1 to 0.14.10 + +commit 7deee7fc86ec810cefae0f81dbdcb1a2da66cc55 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Tue Jan 4 04:13:57 2022 +0000 + + build(deps): bump esbuild from 0.14.1 to 0.14.10 + + Bumps [esbuild](https://github.com/evanw/esbuild) from 0.14.1 to 0.14.10. + - [Release notes](https://github.com/evanw/esbuild/releases) + - [Changelog](https://github.com/evanw/esbuild/blob/master/CHANGELOG.md) + - [Commits](https://github.com/evanw/esbuild/compare/v0.14.1...v0.14.10) + + --- + updated-dependencies: + - dependency-name: esbuild + dependency-type: direct:production + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit 077aa5688ac22fc77ec1b9e186d4189d16aceffd +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Tue Jan 4 04:10:44 2022 +0000 + + build(deps): bump @types/recharts from 1.8.19 to 1.8.23 + + Bumps [@types/recharts](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/recharts) from 1.8.19 to 1.8.23. + - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) + - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/recharts) + + --- + updated-dependencies: + - dependency-name: "@types/recharts" + dependency-type: direct:production + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit 9ec2032ee2589a910bf9f0d98f314946ed2910fc +Merge: a356288fce 9b75ef5def +Author: Patrik Oldsberg +Date: Tue Jan 4 00:57:33 2022 +0100 + + Merge pull request #8725 from backstage/rugvip/g + + yarn.lock: dedup and bump some g modules + +commit 330d71f42669d893a392ccd82feb1eb9030ef0d0 +Author: Andre Wanlin +Date: Mon Jan 3 13:03:24 2022 -0600 + + Updated API report + + Signed-off-by: Andre Wanlin + +commit e36f0d372f1f7d1c5f93068ad231585108f47ccb +Author: Andre Wanlin +Date: Mon Jan 3 12:59:30 2022 -0600 + + Changes based on feedback + + Signed-off-by: Andre Wanlin + +commit a356288fceffdde19dcf1e1d1c7b70fc24d135be +Merge: 75f78762b1 085587cca5 +Author: Patrik Oldsberg +Date: Mon Jan 3 19:48:09 2022 +0100 + + Merge pull request #8732 from backstage/rugvip/eager + + catalog-backend: make sure tasks aren't loaded too eagerly in TaskPipeline test + +commit 085587cca552ed2fb2603a443317a7828e0b9a19 +Author: Patrik Oldsberg +Date: Mon Jan 3 19:21:18 2022 +0100 + + catalog-backend: make sure tasks aren't loaded too eagerly in TaskPipeline test + + Signed-off-by: Patrik Oldsberg + +commit e1953909748fa014f6c8ea35fec0d1e6f532bb52 +Author: Cooper Benson +Date: Mon Jan 3 10:14:03 2022 -0700 + + Allow manual refresh of file enties + + Signed-off-by: Cooper Benson + +commit 75f78762b165aabb8059046ca2cf265e121933d2 +Merge: 3fa24d4828 1834a02e16 +Author: Patrik Oldsberg +Date: Mon Jan 3 18:09:49 2022 +0100 + + Merge pull request #8730 from backstage/rugvip/fixdia + + docs: fix package architecture diagram reference + +commit 9b75ef5def2c41d63d8270142d927289b7ba1631 +Author: Patrik Oldsberg +Date: Mon Jan 3 15:06:17 2022 +0100 + + yarn.lock: dedup and bump some g modules + + Signed-off-by: Patrik Oldsberg + +commit 3fa24d4828469c46aa8d903eddbbe99b8f02ed21 +Merge: 1c36cf7b84 74123a434e +Author: Patrik Oldsberg +Date: Mon Jan 3 18:05:12 2022 +0100 + + Merge pull request #8724 from RoadieHQ/update-roadie-plugins + + Update Roadie plugins to latest + +commit 1834a02e16ee7c5ad098dc67a4cf7082440e7ae1 +Author: Patrik Oldsberg +Date: Mon Jan 3 18:00:14 2022 +0100 + + docs: fix package architecture diagram reference + + Signed-off-by: Patrik Oldsberg + +commit 7b31064fe8537336343df40a4e503cf7a802e4b1 +Author: Tim Hansen +Date: Mon Jan 3 09:51:45 2022 -0700 + + Add routeRef in catalog customization example + + Signed-off-by: Tim Hansen + +commit 1fc15f3ed33175596db9b50e75ed6815fcee3980 +Author: Julio Zynger +Date: Mon Jan 3 16:39:06 2022 +0100 + + Sync with latest template + + Signed-off-by: Julio Zynger + +commit 78ebd2baee7032d4e9f90948af223173ba67459f +Author: Julio Zynger +Date: Mon Jan 3 16:17:32 2022 +0100 + + Adjust test to include configApi + + Signed-off-by: Julio Zynger + +commit 74123a434e3e44c17c5430e183b0c600fc03f4ad +Author: Jussi Hallila +Date: Mon Jan 3 16:15:39 2022 +0100 + + Update yarn.lock, resolve conflicts. + + Signed-off-by: Jussi Hallila + +commit 13770c3b2a250fedb12e7894899de29006b32ef0 +Author: Jussi Hallila +Date: Mon Jan 3 14:55:55 2022 +0100 + + Update Roadie plugins to latest + + Signed-off-by: Jussi Hallila + +commit 1c36cf7b840a1d772389233ff41a86bee99a9eeb +Merge: a88401c76e 4d7df87f54 +Author: Johan Haals +Date: Mon Jan 3 15:41:06 2022 +0100 + + Merge pull request #8699 from cmpadden/techdocs-footer-navigation-dynamic-width + + Bug fix Techdocs footer navigation going off the screen + +commit 7feff487e20642f3d54c23dfdf0a69c238dab8c1 +Author: Julio Zynger +Date: Mon Jan 3 15:40:06 2022 +0100 + + Replace manual jest mocking with helpers + + Signed-off-by: Julio Zynger + +commit eee13c54c5c0272d4777a1aed353142de99f3f7d +Author: Julio Zynger +Date: Mon Jan 3 15:33:12 2022 +0100 + + Throw errors when response is not ok + + Signed-off-by: Julio Zynger + +commit 8ca42b7b4993974d2f9b17ecc88d41253d696814 +Author: Julio Zynger +Date: Mon Jan 3 15:30:16 2022 +0100 + + Clarify Basic auth token generation + + Signed-off-by: Julio Zynger + +commit e783290cdd1b4457b67a0f4fe01dd1c4e7b571ce +Author: Julio Zynger +Date: Mon Jan 3 15:26:07 2022 +0100 + + Update api-report + + Signed-off-by: Julio Zynger + +commit 3a7b77697f98b9c8adfbaf5b59905e366ef61a68 +Author: Julio Zynger +Date: Mon Jan 3 15:23:38 2022 +0100 + + Add public annotations to api-report + + Signed-off-by: Julio Zynger + +commit 2d44ec02c278a8080e3a5c36b61e1a2c3ef84f8a +Author: Julio Zynger +Date: Mon Jan 3 15:20:25 2022 +0100 + + Rename annotation + + Signed-off-by: Julio Zynger + +commit 0781c324d5058f2a3a89383f7046ca6059c52ecf +Author: Julio Zynger +Date: Mon Jan 3 15:15:24 2022 +0100 + + Move accept header to client instead of proxy + + Signed-off-by: Julio Zynger + +commit 108a0cf2fb046553c3c3530150cf162aac8e9c29 +Author: Julio Zynger +Date: Fri Dec 24 12:22:52 2021 +0100 + + Remove unneeded properties from plugin definition + + Signed-off-by: Julio Zynger + +commit f06933c3b49b99768bb826bd5ceed37e2b40469e +Author: Julio Zynger +Date: Fri Dec 24 11:43:32 2021 +0100 + + Set up dependency versions + + Signed-off-by: Julio Zynger + +commit b7b2d09cf5f3d0e9a48cad51a183149e0eaf8925 +Author: Julio Zynger +Date: Thu Dec 23 18:16:38 2021 +0100 + + Move devDependencies + + Signed-off-by: Julio Zynger + +commit 016331eb7e54bba8a30ae1df9fa460c49abbf314 +Author: Julio Zynger +Date: Thu Dec 23 17:57:42 2021 +0100 + + Add api-report.md + + Signed-off-by: Julio Zynger + +commit d9aaecd1cb6f4aaf2c91b4a18d03856cf6aec2cc +Author: Julio Zynger +Date: Thu Dec 23 17:32:37 2021 +0100 + + Add changeset + + Signed-off-by: Julio Zynger + +commit 6fc1d9bbafb725a7a401d0d583829d59021ba3ee +Author: Julio Zynger +Date: Thu Dec 23 17:04:02 2021 +0100 + + Update README and app-config + + Signed-off-by: Julio Zynger + +commit e14896fb63efa261cb51f21d7d626841498ee8de +Author: Julio Zynger +Date: Thu Dec 23 17:01:28 2021 +0100 + + Update well-known annotations + + Signed-off-by: Julio Zynger + +commit cc30c202eac418bf31a534c0983e0c0f02376173 +Author: Julio Zynger +Date: Thu Dec 23 17:01:11 2021 +0100 + + Integrate plugin with Backstage installation + + Signed-off-by: Julio Zynger + +commit 2d5be0975d92d09d0acf6ebec05f2fc74b41e16a +Author: Julio Zynger +Date: Thu Dec 23 16:40:30 2021 +0100 + + Add GoCD entry to plugins marketplace + + Signed-off-by: Julio Zynger + +commit 3671ae9bcd98d1e02ad566ca426f17d8c7bfa6e3 +Author: Julio Zynger +Date: Thu Dec 23 16:35:33 2021 +0100 + + Add GoCD plugin + + Signed-off-by: Julio Zynger + +commit a88401c76e317685ccb8cbe9e69b27327b65d82b +Merge: 4f5b44d3a3 02ba513776 +Author: Johan Haals +Date: Mon Jan 3 15:35:51 2022 +0100 + + Merge pull request #8726 from backstage/jhaals-patch-1 + + Stalebot: Ignore issues/pr's with will-fix label + +commit d6934ee733bc0954df92104702b73864bfa9b815 +Author: Colton Padden +Date: Mon Jan 3 09:35:39 2022 -0500 + + prevent scrolling when links are openened in a new tab + + Signed-off-by: Colton Padden + +commit 4f5b44d3a34a65456e303be1fba268aa01363109 +Merge: 4a8c57227e 1cd13fc748 +Author: Johan Haals +Date: Mon Jan 3 15:34:47 2022 +0100 + + Merge pull request #8708 from backstage/dependabot/npm_and_yarn/roadiehq/backstage-plugin-travis-ci-1.2.3 + + build(deps): bump @roadiehq/backstage-plugin-travis-ci from 1.0.11 to 1.2.3 + +commit 02ba513776bb83d9295e0a086a6ea9728fc3f8c3 +Author: Johan Haals +Date: Mon Jan 3 15:21:43 2022 +0100 + + Stalebot: Ignore issues/pr's with will-fix label + +commit 8dafbbb8b8df819999cde54fe14f1610616b76ab +Author: Jussi Hallila +Date: Mon Jan 3 15:15:54 2022 +0100 + + Swap default example cadence to once a month + + Signed-off-by: Jussi Hallila + +commit 4d7df87f54d93d3eda1b48ada6f1541f788808a5 +Author: Colton Padden +Date: Mon Jan 3 08:55:22 2022 -0500 + + fix dynamic footer size for mobile display width and fix issue with overlapping footer linksv + + Signed-off-by: Colton Padden + +commit 4a8c57227eeb46a34cb9970aa6fd7a3dfac03291 +Merge: df52424c1e 54ef743aa4 +Author: Eric Peterson +Date: Mon Jan 3 14:40:19 2022 +0100 + + Merge pull request #8682 from kuangp/feat/SearchTypeTabs + + feat(SearchTypeTabs): implement a tabs variant search type filter + +commit df52424c1e3fa437441c393bb1cd1b7f8c56cdd5 +Merge: 8a8aa0b1db 5f2e4bd180 +Author: Johan Haals +Date: Mon Jan 3 14:16:06 2022 +0100 + + Merge pull request #8602 from tomwolfgang/fix/docs-aut-api-requests + + Updating tutorial to work with latest backstage + +commit 8a8aa0b1db0b6bc04576568e95108b672c3caa90 +Merge: 2e86d06617 fa63e63198 +Author: Johan Haals +Date: Mon Jan 3 14:04:39 2022 +0100 + + Merge pull request #8704 from backstage/rugvip/arch + + docs: add package architecture section to the architecture overview + +commit 2e86d066170c0301ccdd1cb585978b33772acfe6 +Merge: ae32e71237 37123b4851 +Author: Johan Haals +Date: Mon Jan 3 13:14:08 2022 +0100 + + Merge pull request #8709 from backstage/dependabot/npm_and_yarn/css-loader-6.5.1 + + build(deps): bump css-loader from 5.2.6 to 6.5.1 + +commit 6668b6e2fcc51338d84854fc94cc4efdfdfd2a7a +Author: Jussi Hallila +Date: Mon Jan 3 13:06:59 2022 +0100 + + Modify tech insights default cadence to be less eager. + + Signed-off-by: Jussi Hallila + +commit ae32e71237e4f5390f4af7d50eff42e161bff16e +Merge: a68d86eaa6 78074ab1d6 +Author: Fredrik Adelöw +Date: Mon Jan 3 13:04:48 2022 +0100 + + Merge pull request #8589 from backstage/feature/add-gcp-iap-auth-provider + + Updated: add gcp iap auth provider + +commit 78074ab1d659f8f3541e718606ddd6e187a2b439 +Author: Fredrik Adelöw +Date: Mon Jan 3 12:25:32 2022 +0100 + + review fixes + + Signed-off-by: Fredrik Adelöw + +commit a68d86eaa61bcee1529309159daa462a1534b8f4 +Merge: 9c57723c2c eacc582473 +Author: Johan Haals +Date: Mon Jan 3 11:39:44 2022 +0100 + + Merge pull request #8722 from backstage/rugvip/csp + + backend-common: reintroduce unsafe-eval + +commit 37123b4851cf8b89e20845ad4b372f59c7bf1bde +Author: Johan Haals +Date: Mon Jan 3 11:37:02 2022 +0100 + + Add changeset + + Signed-off-by: Johan Haals + +commit 9c57723c2c1c5b6065eafc429bfbe718e79dd7f5 +Merge: 75c85b81ba 4ce51ab0f1 +Author: Patrik Oldsberg +Date: Mon Jan 3 11:18:48 2022 +0100 + + Merge pull request #8694 from backstage/rugvip/use + + use precise imports of react-use hooks + +commit eacc58247313af31e97e48db5bb28a439db02c0b +Author: Patrik Oldsberg +Date: Mon Jan 3 11:06:22 2022 +0100 + + backend-common: reintroduce unsafe-eval + + Signed-off-by: Patrik Oldsberg + +commit a0142b7b04881eac754a21ec2a8898ea6738d434 +Author: blam +Date: Mon Jan 3 10:44:39 2022 +0100 + + chore: reset the adopters.md file + + Signed-off-by: blam + +commit 75c85b81ba3055c1e8fc8b31c16c06d2cad57644 +Merge: 8fdb2d8c0c f701b67f5b +Author: Ben Lambert +Date: Mon Jan 3 10:43:09 2022 +0100 + + Merge pull request #8720 from backstage/blam/remove-notice + + chore: removing notice + +commit f701b67f5badecfaf122707d66f493709e76fdc1 +Author: blam +Date: Mon Jan 3 10:33:44 2022 +0100 + + chore: removing notice + + Signed-off-by: blam + +commit 78abba5ed2e19920257b4ed316103fd124ac4907 +Merge: 8c833df12a 8fdb2d8c0c +Author: Philipp Hugenroth +Date: Mon Jan 3 10:31:12 2022 +0100 + + Merge branch 'master' into mobile-sidebar + + Signed-off-by: Philipp Hugenroth + +commit 8fdb2d8c0cfb4d164351c1da95315239e2e0dab7 +Merge: 46116d2d39 e05b9115aa +Author: Johan Haals +Date: Mon Jan 3 10:12:55 2022 +0100 + + Merge pull request #8703 from kuangp/fix/homepageSearchBar + + fix(HomePageSearchBar): fix missing search context issue + +commit 1136ed83e3e3ba30a031e80bc0bdea11be4d0c36 +Author: Colton Padden +Date: Sun Jan 2 11:39:33 2022 -0500 + + wip: warn users of deprecated keys in app configurations + + Signed-off-by: Colton Padden + +commit 573015fc6d71a10a9cfd0d5ec6bec64ae87d42de +Author: Andre Wanlin +Date: Sat Jan 1 10:44:28 2022 -0600 + + Added git log + + Signed-off-by: Andre Wanlin + +commit 21ae56168e24108a5e3934efe1862e1e76f636f4 +Author: Andre Wanlin +Date: Fri Dec 31 18:49:53 2021 -0600 + + Allow for bare clone + + Signed-off-by: Andre Wanlin + +commit e05b9115aa0185326b4ca5e070b504de3cb4b16c +Author: Phil Kuang +Date: Thu Dec 30 15:22:10 2021 -0500 + + fix(HomePageSearchBar): fix missing search context issue + + Signed-off-by: Phil Kuang + +commit 46116d2d39938700a37adfdbb16410399e07aa69 +Merge: 04da4ec45c e188b37024 +Author: Fredrik Adelöw +Date: Fri Dec 31 18:59:30 2021 +0100 + + Merge pull request #8683 from awanlin/topic/update-backend-tasks-readme + + Updated backend-tasks readme + +commit 3b5666e6598f5c56523e08a3eb7e0d0162fa55eb +Author: Karan Shah +Date: Fri Dec 31 16:01:40 2021 +0000 + + Fix up template errors + + Signed-off-by: Karan Shah + +commit 5b4a983a7a03ffa9eb368b2bd6ca9c8e779fb989 +Author: Karan Shah +Date: Fri Dec 31 09:33:36 2021 +0000 + + Rename AirbrakeWidget to EntityAirbrakeContent + + Signed-off-by: Karan Shah + +commit 09553959b74f474218f3755857c0399c007307a5 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Fri Dec 31 04:19:11 2021 +0000 + + build(deps): bump css-loader from 5.2.6 to 6.5.1 + + Bumps [css-loader](https://github.com/webpack-contrib/css-loader) from 5.2.6 to 6.5.1. + - [Release notes](https://github.com/webpack-contrib/css-loader/releases) + - [Changelog](https://github.com/webpack-contrib/css-loader/blob/master/CHANGELOG.md) + - [Commits](https://github.com/webpack-contrib/css-loader/compare/v5.2.6...v6.5.1) + + --- + updated-dependencies: + - dependency-name: css-loader + dependency-type: direct:production + update-type: version-update:semver-major + ... + + Signed-off-by: dependabot[bot] + +commit 1cd13fc748276e80c955d0d142f8477a92a07205 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Fri Dec 31 04:17:59 2021 +0000 + + build(deps): bump @roadiehq/backstage-plugin-travis-ci + + Bumps [@roadiehq/backstage-plugin-travis-ci](https://github.com/RoadieHQ/roadie-backstage-plugins/tree/HEAD/plugins/frontend/backstage-plugin-travis-ci) from 1.0.11 to 1.2.3. + - [Release notes](https://github.com/RoadieHQ/roadie-backstage-plugins/releases) + - [Changelog](https://github.com/RoadieHQ/roadie-backstage-plugins/blob/main/plugins/frontend/backstage-plugin-travis-ci/CHANGELOG.md) + - [Commits](https://github.com/RoadieHQ/roadie-backstage-plugins/commits/HEAD/plugins/frontend/backstage-plugin-travis-ci) + + --- + updated-dependencies: + - dependency-name: "@roadiehq/backstage-plugin-travis-ci" + dependency-type: direct:production + update-type: version-update:semver-minor + ... + + Signed-off-by: dependabot[bot] + +commit fa63e631985f5e2b86bff7e6e18772cf16f78f0d +Author: Patrik Oldsberg +Date: Fri Dec 31 00:12:27 2021 +0100 + + docs: tweak package architecture diagram layout + + Signed-off-by: Patrik Oldsberg + +commit 9480b862b845718833026c756db75c37b07f744b +Author: Patrik Oldsberg +Date: Thu Dec 30 19:19:17 2021 +0100 + + docs: add package architecture section to the architecture overview + + Signed-off-by: Patrik Oldsberg + +commit 6475cd1ec4acaccaabdf5aa25873310f13bbd487 +Author: Patrik Oldsberg +Date: Thu Dec 30 23:45:22 2021 +0100 + + docs: add compatibility table to package architecture diagram + + Signed-off-by: Patrik Oldsberg + +commit 5f2e4bd1803a7300022b0ac34614b3ff8cfcfc0c +Author: tom.wolf +Date: Tue Dec 28 22:15:17 2021 +0200 + + Returning usage of 'jose" and removing the null token retry code + + Signed-off-by: tom.wolf + +commit e188b37024f58c2d65d036a3e7547c3160490168 +Author: Andre Wanlin +Date: Thu Dec 30 14:08:53 2021 -0600 + + Feedback changes and changeset + + Signed-off-by: Andre Wanlin + +commit 099e5405955d8a69284535ac7d2ae30922f668c7 +Merge: 6ace1d996e 04da4ec45c +Author: Andre Wanlin <67169551+awanlin@users.noreply.github.com> +Date: Thu Dec 30 14:01:37 2021 -0600 + + Merge branch 'backstage:master' into topic/update-backend-tasks-readme + +commit cce485cf7d92c4615036f4e00893c4b7b72940d9 +Author: Patrik Oldsberg +Date: Thu Dec 30 19:19:08 2021 +0100 + + docs/adr011: add frontend module suffix + + Signed-off-by: Patrik Oldsberg + +commit 04da4ec45c87b794ac82101ddf1d44f6a9c77794 +Merge: 2997bbe3c4 11b81683a9 +Author: Tim Hansen +Date: Thu Dec 30 11:04:43 2021 -0700 + + Merge pull request #8685 from kuangp/feat/customization + + feat(customization): support customizing catalog and api index pages via outlets + +commit 48087b4395f0a86ae76bd2c7641c5c6ac1de036a +Author: Patrik Oldsberg +Date: Thu Dec 30 19:03:25 2021 +0100 + + docs: add initial package architecture diagram + + Signed-off-by: Patrik Oldsberg + +commit fe9de6c25b8c4798a30e3dc20992d710e4dd6864 +Author: Colton Padden +Date: Thu Dec 30 12:52:58 2021 -0500 + + support cmd/ctrl+click for internal techdoc links + + Signed-off-by: Colton Padden + +commit 11b81683a9985e8ce3b8b762ce0ff72db893f39d +Author: Phil Kuang +Date: Wed Dec 29 16:55:39 2021 -0500 + + feat(customization): support customizing catalog and api index pages via outlets + + Signed-off-by: Phil Kuang + +commit fb36de613858ba36421dafeb1019ab9463e9cb6f +Author: Colton Padden +Date: Thu Dec 30 11:40:18 2021 -0500 + + validate footer element exists before applying style + + Signed-off-by: Colton Padden + +commit ba21c9acf171bebf0701878ec7f1191e7247a1e9 +Author: Zack Griesinger +Date: Thu Dec 30 10:17:28 2021 -0600 + + Fix TypeScript Error + + Signed-off-by: Zack Griesinger + +commit b471662e8adaa7bd18add66af0226caf40ec3588 +Author: Zackery Griesinger +Date: Tue Dec 28 09:06:35 2021 -0600 + + Review comments - swap prefix to pattern + + Signed-off-by: Zackery Griesinger + +commit bec82b0b2ff0074bce68a076fec785ee370e4634 +Author: Zack Griesinger +Date: Mon Dec 27 16:04:32 2021 -0600 + + Add back in skip case + + Signed-off-by: Zack Griesinger + +commit bafc399585888adb8cd1b43b48052fece7e8ed91 +Author: Zack Griesinger +Date: Mon Dec 27 15:54:10 2021 -0600 + + Add better logging and fix command index + + Signed-off-by: Zack Griesinger + +commit 93d8a6f0bb0b4f1a7066f7e2c5c744282278bd62 +Author: Zack Griesinger +Date: Mon Dec 27 14:59:06 2021 -0600 + + Update docs + + Signed-off-by: Zack Griesinger + +commit 9534391ae41d094f2c95d08cd7d910a6da3eb295 +Author: Zack Griesinger +Date: Mon Dec 27 14:52:08 2021 -0600 + + Add changeset + + Signed-off-by: Zack Griesinger + +commit d9ea06a8b5a93e3f36ef05443ab4c5f0c03fabe8 +Author: Zack Griesinger +Date: Mon Dec 27 14:50:46 2021 -0600 + + Update CLI to allow passing in a prefix glob for versioning + + Signed-off-by: Zack Griesinger + +commit e0271456d8ee9b44cab89fa6e640ac6d5cf96692 +Author: Colton Padden +Date: Thu Dec 30 11:09:35 2021 -0500 + + dynamically resize width of techdocs footer navigation + + Signed-off-by: Colton Padden + +commit 2997bbe3c4a859447933790c7419010189ac8632 +Merge: 5ba7b6b20e de7bba1aa3 +Author: Patrik Oldsberg +Date: Thu Dec 30 16:50:18 2021 +0100 + + Merge pull request #8643 from dehamzah/overrideable-components-for-catalog-react + + Overridable components for components in plugin catalog react + +commit 5ba7b6b20ead0ac4e343e4e6175d7b479ad9e966 +Merge: 02f4767b2a eb2a9ff026 +Author: Patrik Oldsberg +Date: Thu Dec 30 16:47:56 2021 +0100 + + Merge pull request #8641 from livetocode/feature/addGkeLinkFormatter + + implement dashboard link formatter for GKE + +commit cccee1da42cf4ccaa71dad7d97e7a0bf3674a135 +Author: Karan Shah +Date: Thu Dec 30 15:36:37 2021 +0000 + + Branch coverage appears to be broken due to an issue with Jest and Typescript. Disabling. + + Signed-off-by: Karan Shah + +commit 02f4767b2ac88c796428e8b3d4049b9b7fc62fa0 +Merge: 1fa18f2ab6 e4abf18708 +Author: Patrik Oldsberg +Date: Thu Dec 30 16:31:49 2021 +0100 + + Merge pull request #8657 from goenning/go/tech-insights-optimization + + [Tech Insights] remove unecessary http request when running all checks + +commit e6ac25e7552e3265d0a11e4807149ca675fccda0 +Author: Karan Shah +Date: Thu Dec 30 14:51:00 2021 +0000 + + Don't change example-app + + Signed-off-by: Karan Shah + +commit 06d04183d0288f668dbdda42391c1e51e03a04d6 +Author: Karan Shah +Date: Thu Dec 30 14:44:15 2021 +0000 + + Use renderInTestApp + + Signed-off-by: Karan Shah + +commit 88aad0803df2f95cbb2b09efbfbbd97f05ad65c6 +Author: Fredrik Adelöw +Date: Thu Dec 30 11:39:23 2021 +0100 + + remove frontend parts + + Signed-off-by: Fredrik Adelöw + +commit 761ff980f1e750972a63240a0c56383ee19ef32e +Author: Fredrik Adelöw +Date: Sun Dec 26 21:57:07 2021 +0100 + + use only a sign-in resolver + + Signed-off-by: Fredrik Adelöw + +commit 59c5c70bf7631c959fe6550d12b7b8556fac7b11 +Author: Fredrik Adelöw +Date: Wed Dec 22 16:56:29 2021 +0100 + + first minor cleanups + + Signed-off-by: Fredrik Adelöw + +commit 1e932ee498786025c505b72882333fe9b260a8f5 +Author: Fabian Hippmann +Date: Mon Jul 26 16:07:43 2021 +0200 + + fix tsc errors + + Signed-off-by: Fabian Hippmann + +commit e0e57817d265fe8d59228e0bd7c86b9f9d32e3bb +Author: Fabian Hippmann +Date: Tue Jul 6 15:16:40 2021 +0200 + + add changeset + + Signed-off-by: Fabian Hippmann + +commit 1756d252ceeeb37d773a719c3a8231f12f3f1935 +Author: Fabian Hippmann +Date: Tue Jul 6 15:13:25 2021 +0200 + + update tests, add dependencies + + Signed-off-by: Fabian Hippmann + +commit 876a5351d87572c74bb38729d413babfd8d7a846 +Author: Fabian Hippmann +Date: Tue Jul 6 12:10:59 2021 +0200 + + update documentation location + + Signed-off-by: Fabian Hippmann + +commit 9fa77c4b91a55dd8c63041e0b161d036159bbddc +Author: Fabian Hippmann +Date: Sat Jun 12 02:42:53 2021 +0200 + + feat: add gcp-iap first draft + + Signed-off-by: Fabian Hippmann + +commit 1fa18f2ab60abf534301bcf2b47c63b49615cf93 +Merge: 4b2a8ed96f bee8692afc +Author: Patrik Oldsberg +Date: Thu Dec 30 13:44:12 2021 +0100 + + Merge pull request #8692 from backstage/rugvip/verichange + + scripts,workflows: added scripts to verify changesets + +commit b4f2f650dcb506b3ba153eedbde345c775d4cb2b +Merge: ad5f1a0022 4b2a8ed96f +Author: Karan Shah +Date: Thu Dec 30 12:01:41 2021 +0000 + + Merge remote-tracking branch 'upstream/master' into airbrake-initial + +commit 4ce51ab0f1374290947f3741bf7d9e69ea7f7a1b +Author: Patrik Oldsberg +Date: Thu Dec 30 12:00:06 2021 +0100 + + use precise imports of react-use + + Signed-off-by: Patrik Oldsberg + +commit ad5f1a0022ee55596bdc4fcd45380ad350adcf04 +Author: Karan Shah +Date: Thu Dec 30 11:50:53 2021 +0000 + + Change example data to json + + Signed-off-by: Karan Shah + +commit 4b2a8ed96ff427735c872a72c1864321ef698436 (tag: v0.61.0, tag: release-2021-12-30) +Merge: f3784edd89 7d27a11079 +Author: Patrik Oldsberg +Date: Thu Dec 30 12:49:27 2021 +0100 + + Merge pull request #8618 from backstage/changeset-release/master + + Version Packages + +commit 7d27a11079060221a16b3a3466bb42a5a41781d2 +Author: github-actions[bot] +Date: Thu Dec 30 11:06:46 2021 +0000 + + Version Packages + +commit f3784edd89b02f305864b69d4fd84468477ca5f8 +Merge: 6335b5a9ea cf2e20a792 +Author: Patrik Oldsberg +Date: Thu Dec 30 12:01:09 2021 +0100 + + Merge pull request #8636 from leons727/aws-s3-localstack + + Support for non-amazonaws.com hosts in AwsS3UrlReader + +commit bee8692afce03527b3de7d73b6b508544d6a89ba +Author: Patrik Oldsberg +Date: Thu Dec 30 11:47:27 2021 +0100 + + scripts,workflows: added scripts to verify changesets + + Signed-off-by: Patrik Oldsberg + +commit 6335b5a9ea642e3ef185db74b8dd45418a9be40f +Merge: c5c6679b54 9c3aaf3512 +Author: Fredrik Adelöw +Date: Thu Dec 30 11:36:59 2021 +0100 + + Merge pull request #8689 from backstage/dependabot/npm_and_yarn/typescript-eslint/eslint-plugin-4.33.0 + + build(deps): bump @typescript-eslint/eslint-plugin from 4.30.0 to 4.33.0 + +commit c54013e93972a44c47a396d5dba4ae754b66b036 +Merge: 3370d7ce21 c5c6679b54 +Author: Karan Shah +Date: Thu Dec 30 10:28:07 2021 +0000 + + Merge branch 'backstage:master' into airbrake-initial + +commit cf2e20a79223997baf2480db0d1c63f4c98abe8b +Author: Patrik Oldsberg +Date: Thu Dec 30 11:09:18 2021 +0100 + + Create red-chefs-travel.md + + Signed-off-by: Patrik Oldsberg + +commit c5c6679b54d27669fca7b09cb73c677da94d5b10 +Merge: 5597311ad4 9f8a615d91 +Author: Patrik Oldsberg +Date: Thu Dec 30 11:04:25 2021 +0100 + + Merge pull request #8691 from backstage/rugvip/fixup + + changesets: tech-insights minor -> patch + +commit 3370d7ce21fa27911adf738b1fbc45642195430d +Author: Karan Shah +Date: Thu Dec 30 09:57:24 2021 +0000 + + Update api-report.md + + Signed-off-by: Karan Shah + +commit f73e6a3f58e6e8e2fb663be10f050a964b246d11 +Author: Karan Shah +Date: Thu Dec 30 09:51:25 2021 +0000 + + Add Airbrake to vocab.txt + + Signed-off-by: Karan Shah + +commit 9f8a615d91f43eb94a29c7d565576fffb48c2384 +Author: Patrik Oldsberg +Date: Thu Dec 30 10:50:03 2021 +0100 + + changesets: tech-insights minor -> patch + + Signed-off-by: Patrik Oldsberg + +commit 5597311ad45669d1bf4b004c36fcd79112e48f68 +Merge: 79343d1b83 d573aa8e30 +Author: Patrik Oldsberg +Date: Thu Dec 30 10:46:49 2021 +0100 + + Merge pull request #8662 from zhammer/zh-gitlab-default-branch-missing + + gitlab discovery ignore projects without default_branch + +commit 9c3aaf3512c19b335691e460e88eaea74f8a4519 +Author: Fredrik Adelöw +Date: Thu Dec 30 10:36:33 2021 +0100 + + changeset + + Signed-off-by: Fredrik Adelöw + +commit 79343d1b83b1dd73d63bcbe131c3b2621fbe9bcc +Merge: 9d443a8bc4 adebbfad68 +Author: Patrik Oldsberg +Date: Thu Dec 30 09:49:18 2021 +0100 + + Merge pull request #8688 from backstage/dependabot/npm_and_yarn/express-promise-router-4.1.1 + + build(deps): bump express-promise-router from 4.1.0 to 4.1.1 + +commit 9d443a8bc4973c6aa7b713f9822ff3a14b166e70 +Merge: 08bc6c8117 047af00c93 +Author: Patrik Oldsberg +Date: Thu Dec 30 09:48:55 2021 +0100 + + Merge pull request #8687 from backstage/dependabot/npm_and_yarn/types/jscodeshift-0.11.3 + + build(deps-dev): bump @types/jscodeshift from 0.11.0 to 0.11.3 + +commit 7086679d8116dd1e3effcd5088d0e293c306f506 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Thu Dec 30 04:38:08 2021 +0000 + + build(deps): bump @typescript-eslint/eslint-plugin from 4.30.0 to 4.33.0 + + Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 4.30.0 to 4.33.0. + - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) + - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md) + - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v4.33.0/packages/eslint-plugin) + + --- + updated-dependencies: + - dependency-name: "@typescript-eslint/eslint-plugin" + dependency-type: direct:production + update-type: version-update:semver-minor + ... + + Signed-off-by: dependabot[bot] + +commit adebbfad68d315b2135cff6cfd70ac454424fb1f +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Thu Dec 30 04:35:25 2021 +0000 + + build(deps): bump express-promise-router from 4.1.0 to 4.1.1 + + Bumps [express-promise-router](https://github.com/express-promise-router/express-promise-router) from 4.1.0 to 4.1.1. + - [Release notes](https://github.com/express-promise-router/express-promise-router/releases) + - [Changelog](https://github.com/express-promise-router/express-promise-router/blob/trunk/CHANGELOG.md) + - [Commits](https://github.com/express-promise-router/express-promise-router/compare/v4.1.0...v4.1.1) + + --- + updated-dependencies: + - dependency-name: express-promise-router + dependency-type: direct:production + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit 047af00c93a7968df65b685e8487e621fc17cfdd +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Thu Dec 30 04:07:12 2021 +0000 + + build(deps-dev): bump @types/jscodeshift from 0.11.0 to 0.11.3 + + Bumps [@types/jscodeshift](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jscodeshift) from 0.11.0 to 0.11.3. + - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) + - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jscodeshift) + + --- + updated-dependencies: + - dependency-name: "@types/jscodeshift" + dependency-type: direct:development + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit 08bc6c8117a76cb52dcde1984135538f264bbc8b +Merge: 8c207df37f 56efafbe28 +Author: Patrik Oldsberg +Date: Thu Dec 30 00:43:03 2021 +0100 + + Merge pull request #8684 from backstage/update-theme-docs + + Fix outdated custom theme docs + +commit 56efafbe28a9d4ae32bef30256003789675a8d1b +Merge: 851e9bd42e 8c207df37f +Author: Patrik Oldsberg +Date: Thu Dec 30 00:34:47 2021 +0100 + + Merge branch 'master' into update-theme-docs + +commit 8c207df37fa3d6b4e4ad9f04c2896af310903f0a +Merge: fbdb1ec331 56c8ff9be7 +Author: Patrik Oldsberg +Date: Thu Dec 30 00:33:45 2021 +0100 + + Merge pull request #8680 from cmpadden/update-custom-theme-docs + + Update Backstage Customization Docs to use ThemeProvider + +commit 851e9bd42ec252f1c77951d5b1fd1cabbdb95d1d +Author: Tim Hansen +Date: Wed Dec 29 14:46:57 2021 -0700 + + Fix outdated custom theme docs + + Signed-off-by: Tim Hansen + +commit 56c8ff9be73ac81cd116ae02798a2f2e6113f26d +Author: Colton Padden +Date: Wed Dec 29 14:14:20 2021 -0500 + + update docs to use ThemeProvider for custom theme overrides + + Signed-off-by: Colton Padden + +commit d573aa8e308cfb275c169c8139f66fab1acfdc92 +Author: Zach Hammer +Date: Wed Dec 29 14:06:50 2021 -0500 + + separate filter statements + + Signed-off-by: Zach Hammer + +commit f8259f7ceca294a83a1698450fa680363cc21c5f +Author: Zach Hammer +Date: Wed Dec 29 14:05:13 2021 -0500 + + use GitLab casing as found in vocab.txt + + Signed-off-by: Zach Hammer + +commit 6ace1d996e51fcf721e5bed924a7474dceadd1e4 +Author: Andre Wanlin +Date: Wed Dec 29 12:41:08 2021 -0600 + + Updated backend-tasks readme + + Signed-off-by: Andre Wanlin + +commit fbdb1ec33114149b4852b2f637e7a57b763c43da +Merge: d35511d750 9c25894892 +Author: Patrik Oldsberg +Date: Wed Dec 29 19:39:23 2021 +0100 + + Merge pull request #8667 from kuangp/feat/EntityTagsPicker + + feat(EntityTagsPicker): implement scaffolder field extension for selecting tags + +commit 54ef743aa4178f97c27c48904e9808d39259a105 +Author: Phil Kuang +Date: Wed Dec 29 12:45:33 2021 -0500 + + feat(SearchTypeTabs): implement a tabs variant search type filter + + Signed-off-by: Phil Kuang + +commit d35511d7507d2f0f0134e0f35abced16901f50bb +Merge: 3075622c23 5f8ceba1b1 +Author: Patrik Oldsberg +Date: Wed Dec 29 19:03:56 2021 +0100 + + Merge pull request #8666 from kuangp/feat/catalogWrite + + feat(catalog:write): support custom filenames + +commit 3075622c230c71a1f3b24b0fc5208842605116fc +Merge: a7a9c4f123 a2df40a8d7 +Author: Patrik Oldsberg +Date: Wed Dec 29 19:02:06 2021 +0100 + + Merge pull request #8677 from fabioviana-hotmart/patch-1 + + Update ADOPTERS.md - adding Hotmart + +commit 8c833df12a6730edd927ba7120a32545615165e7 +Author: Philipp Hugenroth +Date: Wed Dec 29 18:34:18 2021 +0100 + + Fix dublicated css from merge + + Signed-off-by: Philipp Hugenroth + +commit 2f045bba6f71bfe073f505851af6250820e356e0 +Merge: 98a40195c1 b44a324064 +Author: Karan Shah +Date: Wed Dec 29 17:19:41 2021 +0000 + + Merge remote-tracking branch 'origin/airbrake-initial' into airbrake-initial + + # Conflicts: + # packages/app/package.json + +commit 98a40195c1c3d7f449e1c2fa7bed5279597ad7da +Author: Karan Shah +Date: Wed Dec 29 17:14:24 2021 +0000 + + Small name refactoring and improvement to dev + + Signed-off-by: Karan Shah + +commit c9ccdbbf126b69a2b654b1cd022b86bf1ff05efe +Author: Karan Shah +Date: Wed Dec 29 17:10:45 2021 +0000 + + Fix plugin.test.tsx as page elements were moved out + + Signed-off-by: Karan Shah + +commit 3e77697da02810c4bbb13137ab283f6f6342079c +Author: Karan Shah +Date: Wed Dec 29 17:04:08 2021 +0000 + + Fix AirbrakeWidget.test.tsx + + Signed-off-by: Karan Shah + +commit d0d32eff6424a5964a105180f3b993d7a8d68c5f +Author: Karan Shah +Date: Wed Dec 29 16:07:48 2021 +0000 + + Add 100% test coverage + + Signed-off-by: Karan Shah + +commit b788f6dd32c4228e7335bf65f8a6923ed9d6564e +Author: Karan Shah +Date: Wed Dec 29 16:02:09 2021 +0000 + + Improve tests and keys in for loops for TSX + + Signed-off-by: Karan Shah + +commit 00fd929ee062e88a37434f60f0bec68a4772aa4b +Author: Karan Shah +Date: Wed Dec 29 10:58:22 2021 +0000 + + Add in AirbrakeWidget + + Signed-off-by: Karan Shah + +commit 1b8b5148b73d5d891f723ec3831de48446e456b9 +Author: Karan Shah +Date: Wed Dec 29 09:26:28 2021 +0000 + + Added in some ExampleData.ts + + Signed-off-by: Karan Shah + +commit e1ae24781cabd955f565fed0bc83d910ad78501a +Author: Karan Shah +Date: Thu Dec 23 11:47:56 2021 +0000 + + Add the generated api-report.md + + Signed-off-by: Karan Shah + +commit 04c86e5a1033d005c377607c4b91c8a576aaea6b +Author: Karan Shah +Date: Thu Dec 23 11:15:54 2021 +0000 + + Created a Changeset and improved the Airbrake plugin README + + Signed-off-by: Karan Shah + +commit 1890a9db0f696b1afd6fa79035723bdd36cd0312 +Author: Karan Shah +Date: Thu Dec 23 11:03:18 2021 +0000 + + Improve the wording in index.test.ts + + Signed-off-by: Karan Shah + +commit 93c371143af1b20d7edad90799b59c04cd25dfff +Author: Karan Shah +Date: Thu Dec 23 11:01:24 2021 +0000 + + Make it very clear that this plugin is not fit for use + + Signed-off-by: Karan Shah + +commit 85f71c508e7074cd972817ef1774bf49ac848e2d +Author: Karan Shah +Date: Thu Dec 23 10:59:22 2021 +0000 + + Update ExampleFetchComponent.test.tsx + + Signed-off-by: Karan Shah + +commit 264298d5a429a6629ed5392883a3cbc9d4772244 +Author: Karan Shah +Date: Thu Dec 23 10:51:43 2021 +0000 + + Update the Airbrake Icon to use the one from their website + + Signed-off-by: Karan Shah + +commit 177d6f2db42b41a531b0693488a66a7fad5c52d8 +Author: Karan Shah +Date: Thu Dec 23 10:48:30 2021 +0000 + + Remove the plugin from App.tsx and update README + + Signed-off-by: Karan Shah + +commit f48f100f50a7f1439b50336f12a43ee44a88fabc +Author: Karan Shah +Date: Thu Dec 23 10:08:17 2021 +0000 + + Add index.test.ts and plugin.test.tsx + + Signed-off-by: Karan Shah + +commit 4d5182484cb9f404d6a841a5792ee881d77ae8a6 +Author: Karan Shah +Date: Wed Dec 22 14:59:19 2021 +0000 + + Generate the initial plugin code + + Signed-off-by: Karan Shah + +commit 0006f6f16520963069f7072c9363d5abb239f768 +Merge: 02338a6515 a7a9c4f123 +Author: Philipp Hugenroth +Date: Wed Dec 29 18:17:13 2021 +0100 + + Merge branch 'master' into mobile-sidebar + + Signed-off-by: Philipp Hugenroth + +commit 52465d490fe6e7540305db498d926d221d8c7b61 +Author: moltenice +Date: Wed Dec 22 14:22:11 2021 +0000 + + Add in the plugin marketplace entry for Airbrake + + Signed-off-by: Karan Shah + +commit b44a3240647773bda2595f50f823eede8a9060e0 +Author: Karan Shah +Date: Wed Dec 29 17:14:24 2021 +0000 + + Small name refactoring and improvement to dev + + Signed-off-by: Karan Shah + +commit 4ec1d27e26fdb8cad031d30ada38235a8ad424de +Author: Karan Shah +Date: Wed Dec 29 17:10:45 2021 +0000 + + Fix plugin.test.tsx as page elements were moved out + + Signed-off-by: Karan Shah + +commit 02338a65157fe16d6e9c8710cd5e91aafeae1a4f +Author: Philipp Hugenroth +Date: Wed Dec 29 18:05:17 2021 +0100 + + Improve documentation + + - Fix tests + + Signed-off-by: Philipp Hugenroth + +commit a5506610980f028a0a6c16adaa539aeb819db99f +Author: Karan Shah +Date: Wed Dec 29 17:04:08 2021 +0000 + + Fix AirbrakeWidget.test.tsx + + Signed-off-by: Karan Shah + +commit 8b8118bbd4ef88b7d6e3a1e3e9cec6b74f2f0e25 +Author: Colton Padden +Date: Wed Dec 29 11:58:59 2021 -0500 + + add instructions on using themeprovider to customization docs + + Signed-off-by: Colton Padden + +commit a7a9c4f123fdc4eee7a3fc70fa9cc32f4d394c1f +Merge: af4980fb5d 130b7aadf2 +Author: Patrik Oldsberg +Date: Wed Dec 29 17:10:15 2021 +0100 + + Merge pull request #8676 from backstage/rugvip/testcont + + backend-test-utils: lazy-load testcontainers + +commit 96d560cd950dbca3fee5a6d6c1af3eff97a3b5b7 +Author: Karan Shah +Date: Wed Dec 29 16:07:48 2021 +0000 + + Add 100% test coverage + + Signed-off-by: Karan Shah + +commit baa79f07241ff2524381607708207ae62ff8cc00 +Author: Karan Shah +Date: Wed Dec 29 16:02:09 2021 +0000 + + Improve tests and keys in for loops for TSX + + Signed-off-by: Karan Shah + +commit 9c2589489202f594888e6c6caa26c821b92f6bf6 +Author: Phil Kuang +Date: Tue Dec 28 21:36:28 2021 -0500 + + feat(EntityTagsPicker): implement scaffolder field extension for selecting tags + + Signed-off-by: Phil Kuang + +commit 5f8ceba1b130ec5d9e29aa605ec98aeb2759d60a +Author: Phil Kuang +Date: Tue Dec 28 20:44:14 2021 -0500 + + feat(catalog:write): support custom filenames + + Signed-off-by: Phil Kuang + +commit a2df40a8d787a280cc5e43c2d731a58a393f022d +Author: fabioviana-hotmart <30806361+fabioviana-hotmart@users.noreply.github.com> +Date: Wed Dec 29 11:14:30 2021 -0300 + + Update ADOPTERS.md + + adding Hotmart + +commit 33e5814c9f30b893f49335e2388632e99afc49f0 +Author: Zach Hammer +Date: Wed Dec 29 09:02:24 2021 -0500 + + fix changeset spelling check error from CI + + Signed-off-by: Zach Hammer + +commit ca52cf8b289da667f36cba2e1ee5e034d14d4b96 +Author: Leon Stein +Date: Wed Dec 29 08:41:00 2021 -0500 + + add aws s3 custom endpoint config test + + Signed-off-by: Leon Stein + +commit 0dd1971d4a30a13ae4439fd0bb2a630fb5a2878f +Author: Leon Stein +Date: Wed Dec 29 08:36:25 2021 -0500 + + fix tests + + Signed-off-by: Leon Stein + +commit af4980fb5d304fe0ec49f85fbe89b5c5e4c83d63 +Author: Emma Indal +Date: Wed Dec 29 14:10:01 2021 +0100 + + [Search] SearchBar Analytics tracking (#8656) + + * test capture search bar events + + Signed-off-by: Emma Indal + + * capture search bar events + + Signed-off-by: Emma Indal + + * only run onChange method if provided, otherwise set term + + Signed-off-by: Emma Indal + + * changeset + + Signed-off-by: Emma Indal + + * unconditionally call analytics API + + Signed-off-by: Emma Indal + + * update changeset to be less specific to GA + + Signed-off-by: Emma Indal + + * move analytics tracking to SearchBarBase + + Signed-off-by: Emma Indal + + * add search to key events + + Signed-off-by: Emma Indal + + * capture types as analytics context attribute, only for SearchBar + + Signed-off-by: Emma Indal + + * move AnalyticsContext to within SearchContextProvider + + Signed-off-by: Emma Indal + + * refactor search tracking out to its own component + + Signed-off-by: Emma Indal + + * captures not only google analytics + + Signed-off-by: Emma Indal + +commit 130b7aadf22192ab43fb8a7b847e040b45dfd468 +Author: Patrik Oldsberg +Date: Wed Dec 29 14:03:30 2021 +0100 + + backend-test-utils: lazy-load testcontainers + + Signed-off-by: Patrik Oldsberg + +commit e35aff0d169a82ffe40131e02c95e08eea01857e +Merge: a0004d3451 20af5a701f +Author: Eric Peterson +Date: Wed Dec 29 13:58:29 2021 +0100 + + Merge pull request #8646 from backstage/feat/search-facet-by-type + + [Search] Introduce a Variant + +commit 20af5a701f6954314ec468c8d1ff06022f9e2f39 +Author: Eric Peterson +Date: Wed Dec 29 12:10:23 2021 +0100 + + Update create-app with search accordion component. + + Signed-off-by: Eric Peterson + +commit a0004d34517d01a876e57b2b9ed274f898bb3036 +Merge: 2edb27e8e5 9d9cfc1b8a +Author: Patrik Oldsberg +Date: Wed Dec 29 12:54:43 2021 +0100 + + Merge pull request #8672 from backstage/rugvip/noframe + + app-backend: disallow all iframe embedding of the app + +commit 2edb27e8e50d996397bead8e5a28c34306483d4d +Merge: 8be7816b70 916b2f1f3e +Author: Patrik Oldsberg +Date: Wed Dec 29 12:54:24 2021 +0100 + + Merge pull request #8673 from backstage/rugvip/nocopy + + backend-common: get default csp policy from helmet + +commit a74b842d15195646138711db5b196e709dc9c8db +Author: Zach Hammer +Date: Wed Dec 29 06:50:48 2021 -0500 + + only filter when discovering default branch + + Signed-off-by: Zach Hammer + +commit 0f8661f444648eb0d25a717bb10388f43c709161 +Author: Karan Shah +Date: Wed Dec 29 10:58:22 2021 +0000 + + Add in AirbrakeWidget + + Signed-off-by: Karan Shah + +commit a6bc757a4540b6afc338d557a9f17339eb2d0a19 +Author: Eric Peterson +Date: Wed Dec 29 11:54:30 2021 +0100 + + Review notes. + + Signed-off-by: Eric Peterson + +commit 916b2f1f3efeb3e8c0fe917ff6d532e501bead0f +Author: Patrik Oldsberg +Date: Wed Dec 29 11:47:44 2021 +0100 + + backend-common: get default csp policy from helmet + + Signed-off-by: Patrik Oldsberg + +commit 9d9cfc1b8aacd8e3753eb22572b91e74772cecb5 +Author: Patrik Oldsberg +Date: Wed Dec 29 11:45:20 2021 +0100 + + app-backend: disallow all iframe embedding of the app + + Signed-off-by: Patrik Oldsberg + +commit 8be7816b7090d210bf08e150a9736d16054c4745 +Merge: 60b46cb934 17cb793aed +Author: Patrik Oldsberg +Date: Wed Dec 29 10:43:43 2021 +0100 + + Merge pull request #8670 from backstage/dependabot/npm_and_yarn/start-server-and-test-1.14.0 + + build(deps-dev): bump start-server-and-test from 1.13.1 to 1.14.0 + +commit f4896c495c30b6b4b992bfc9062162f7f0f177a7 +Merge: eeb2269bb9 9120f5351d +Author: Eric Peterson +Date: Wed Dec 29 10:43:33 2021 +0100 + + Merge branch 'master' into feat/search-facet-by-type + + Signed-off-by: Eric Peterson + +commit 66510a7d5b395f913d0c84c0c7c4995dffce8e1f +Author: Karan Shah +Date: Wed Dec 29 09:26:28 2021 +0000 + + Added in some ExampleData.ts + + Signed-off-by: Karan Shah + +commit 60b46cb9345bd4eb3cc896dc5bedcdbd3837fab4 +Merge: 977dfbf92c de81b7455e +Author: Patrik Oldsberg +Date: Wed Dec 29 09:54:32 2021 +0100 + + Merge pull request #8665 from kuangp/refactor/definitionCard + + feat(ApiDefinitionCard): display entity title if defined + +commit 977dfbf92cdb1f6f877b4efb64ea2087addfa689 +Merge: 5e7413e9a0 80ff1a6a0e +Author: Patrik Oldsberg +Date: Wed Dec 29 09:52:24 2021 +0100 + + Merge pull request #8668 from backstage/dependabot/npm_and_yarn/storybook/addon-a11y-6.4.9 + + build(deps-dev): bump @storybook/addon-a11y from 6.3.12 to 6.4.9 + +commit 5e7413e9a00dbc28ed6051b9c192c2f491d81a3f +Merge: 67abf9721c 3e1eec852f +Author: Patrik Oldsberg +Date: Wed Dec 29 09:52:09 2021 +0100 + + Merge pull request #8669 from backstage/dependabot/npm_and_yarn/prop-types-15.8.0 + + build(deps): bump prop-types from 15.7.2 to 15.8.0 + +commit 67abf9721c765f42e99cc7fd6fef003a1c44f1ea +Merge: 610f49f00e d33b65dc52 +Author: Patrik Oldsberg +Date: Wed Dec 29 09:51:26 2021 +0100 + + Merge pull request #8608 from backstage/rugvip/nosi + + create-app: remove unused serve_index.html + +commit 610f49f00ea149141e279a2399177e4548c8dae9 +Merge: 9120f5351d 94e731c173 +Author: Patrik Oldsberg +Date: Wed Dec 29 09:49:26 2021 +0100 + + Merge pull request #8609 from backstage/rugvip/nonodefe + + yarn.lock: bump @types/node-fetch + +commit 17cb793aed009e6e61b3a03a4dbc2362f8d414c7 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Wed Dec 29 04:18:36 2021 +0000 + + build(deps-dev): bump start-server-and-test from 1.13.1 to 1.14.0 + + Bumps [start-server-and-test](https://github.com/bahmutov/start-server-and-test) from 1.13.1 to 1.14.0. + - [Release notes](https://github.com/bahmutov/start-server-and-test/releases) + - [Commits](https://github.com/bahmutov/start-server-and-test/compare/v1.13.1...v1.14.0) + + --- + updated-dependencies: + - dependency-name: start-server-and-test + dependency-type: direct:development + update-type: version-update:semver-minor + ... + + Signed-off-by: dependabot[bot] + +commit 3e1eec852f077ff67c7b061c0f674283016dd695 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Wed Dec 29 04:15:14 2021 +0000 + + build(deps): bump prop-types from 15.7.2 to 15.8.0 + + Bumps [prop-types](https://github.com/facebook/prop-types) from 15.7.2 to 15.8.0. + - [Release notes](https://github.com/facebook/prop-types/releases) + - [Changelog](https://github.com/facebook/prop-types/blob/main/CHANGELOG.md) + - [Commits](https://github.com/facebook/prop-types/compare/v15.7.2...v15.8.0) + + --- + updated-dependencies: + - dependency-name: prop-types + dependency-type: direct:production + update-type: version-update:semver-minor + ... + + Signed-off-by: dependabot[bot] + +commit 80ff1a6a0e3d4a82b5befa32c8db3cbbde002e39 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Wed Dec 29 04:09:09 2021 +0000 + + build(deps-dev): bump @storybook/addon-a11y from 6.3.12 to 6.4.9 + + Bumps [@storybook/addon-a11y](https://github.com/storybookjs/storybook/tree/HEAD/addons/a11y) from 6.3.12 to 6.4.9. + - [Release notes](https://github.com/storybookjs/storybook/releases) + - [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md) + - [Commits](https://github.com/storybookjs/storybook/commits/v6.4.9/addons/a11y) + + --- + updated-dependencies: + - dependency-name: "@storybook/addon-a11y" + dependency-type: direct:development + update-type: version-update:semver-minor + ... + + Signed-off-by: dependabot[bot] + +commit de81b7455e592e5a0ce22b5181b98a1b579516b2 +Author: Phil Kuang +Date: Tue Dec 28 20:23:14 2021 -0500 + + feat(ApiDefinitionCard): display entity title if defined + + Signed-off-by: Phil Kuang + +commit 3a63491c5fca52e05e3616fac1f4471f43ac0684 +Author: Zach Hammer +Date: Tue Dec 28 19:07:22 2021 -0500 + + add changeset + + Signed-off-by: Zach Hammer + +commit deb6d781f65d4661a00e9fdfcd8fb0986321f20c +Author: Zach Hammer +Date: Tue Dec 28 19:03:24 2021 -0500 + + filter out projects with missing default branch + + Signed-off-by: Zach Hammer + +commit 3c013ef0650cd3b8c67091d8f58195b9116c11d1 +Author: Zach Hammer +Date: Tue Dec 28 18:53:54 2021 -0500 + + add failing test for empty default_branch + + Signed-off-by: Zach Hammer + +commit 7615549bf5a8c246e0144e860f6ea23515232a39 +Author: Leon Stein +Date: Tue Dec 28 17:35:14 2021 -0500 + + update api-reports + + Signed-off-by: Leon Stein + +commit afea3d9e36ac3414031e6afe61f5d478407d2da7 +Author: tom.wolf +Date: Thu Dec 23 00:08:59 2021 +0200 + + Updating tutorial to work with latest backstage + + Signed-off-by: tom.wolf + +commit 9120f5351dfa940cbb36bd39c059ecf743bf8efd +Merge: 786a5ef3df c88cdacc1a +Author: Patrik Oldsberg +Date: Tue Dec 28 20:20:02 2021 +0100 + + Merge pull request #8660 from backstage/rugvip/refrain + + auth-backend: always exchange and never return refresh tokens to clients + +commit 786a5ef3dfd933382c779deab17bcee5f853188d +Merge: 9b94dec212 77a5d0fb6f +Author: Patrik Oldsberg +Date: Tue Dec 28 20:19:08 2021 +0100 + + Merge pull request #8658 from backstage/rugvip/sir + + auth-backend: migrate onelogin and auth0 to sign-in resolver + +commit 9b94dec2126290dd9425a9e97806a36b6cc55920 +Merge: 1168f15c70 6d8e3a9651 +Author: Fredrik Adelöw +Date: Tue Dec 28 19:17:14 2021 +0100 + + Merge pull request #8580 from backstage/freben/search-exports + + Internal cleanup of the exports structure in the search plugin + +commit 858b6e40c96f38aea19ffed292bf4e1e153891c9 +Merge: 545a26a0b6 26a0296341 +Author: Philipp Hugenroth +Date: Tue Dec 28 18:39:03 2021 +0100 + + Merge branch 'master' into mobile-sidebar + + Signed-off-by: Philipp Hugenroth + +commit 1168f15c7022acee590a06af2ee7f788105212c0 +Merge: 26a0296341 613ad12960 +Author: Tim Hansen +Date: Tue Dec 28 10:15:16 2021 -0700 + + Merge pull request #8659 from backstage/timbonicus/backend-note + + Add warning to default backend + +commit 545a26a0b675e48647c3218f3638f6dbd33a9c41 +Author: Philipp Hugenroth +Date: Tue Dec 28 18:06:23 2021 +0100 + + Move 'isMobile' in Context + + Optimize generated docs by labeling components with scope + + Signed-off-by: Philipp Hugenroth + +commit c2d09d8c1789da6b07198856045a91716a3c1fdc +Author: Leon Stein +Date: Tue Dec 28 11:49:10 2021 -0500 + + cleanup + + Signed-off-by: Leon Stein + +commit e662ee528be2906708f58f178f2b87bb9594b2ed +Author: Leon Stein +Date: Tue Dec 28 11:42:23 2021 -0500 + + remove AMAZON_AWS_HOST export, fix regex per review feedback + + Signed-off-by: Leon Stein + +commit 77a5d0fb6fce6e388f16b08b54c3bc72e260f476 +Author: Patrik Oldsberg +Date: Tue Dec 28 17:37:55 2021 +0100 + + auth-backend: let adapter populate identity token for auth0 and onelogin + + Signed-off-by: Patrik Oldsberg + +commit 26a0296341414179c9ccf9f6daa3e7cd6407cc6e +Merge: cdcd0e062d 88e153dc44 +Author: Eric Peterson +Date: Tue Dec 28 17:33:36 2021 +0100 + + Merge pull request #8598 from erikxiv/fix-api-auth-in-techdocs + + fixes api auth bug in techdocs backend + +commit 613ad12960e53ce842e6a79574a62f7d6c04c890 +Author: Tim Hansen +Date: Tue Dec 28 09:30:37 2021 -0700 + + Add changeset + + Signed-off-by: Tim Hansen + +commit c88cdacc1abce1f77b93a3cf1757211cfba64e79 +Author: Patrik Oldsberg +Date: Tue Dec 28 17:30:00 2021 +0100 + + auth-backend: always exchange and never return refresh tokens to clients + + Signed-off-by: Patrik Oldsberg + +commit 62f36517072ebe147fac6b8894a14135e5662e37 +Author: Tim Hansen +Date: Tue Dec 28 09:19:09 2021 -0700 + + Add warning to default backend + + Signed-off-by: Tim Hansen + +commit eeb2269bb92563c122b5c0e95113dd38806aa47d +Author: Eric Peterson +Date: Tue Dec 28 17:08:01 2021 +0100 + + Add basic tests for + + Signed-off-by: Eric Peterson + +commit 60dee60d9becb2f819d91f4afac4e688a9b1fb3b +Author: Leon Stein +Date: Tue Dec 28 10:29:53 2021 -0500 + + update config schema + + Signed-off-by: Leon Stein + +commit eb2a9ff02645931c714b34773a6e05ba16a609eb +Author: Morgan Martinet +Date: Tue Dec 28 10:27:21 2021 -0500 + + remove unnecessary code after code review + + Signed-off-by: Morgan Martinet + +commit bc78cc3dca4f8662bc122e8dd4d4875d43bc7269 +Author: Leon Stein +Date: Tue Dec 28 10:23:53 2021 -0500 + + use endpoint/s3ForcePathStyle instead of validateHost/ssl per PR feedback + + Signed-off-by: Leon Stein + +commit dd95ac91ccfc4d6437ec2850051f444df20826ed +Author: Eric Peterson +Date: Tue Dec 28 16:11:05 2021 +0100 + + Refactor search plugin stories to use a shared mock search context provider. + + Signed-off-by: Eric Peterson + +commit 88e153dc4420c77fe2dfd60b0c1bbdba6ccebc03 +Author: Erik Larsson +Date: Tue Dec 28 16:09:55 2021 +0100 + + improve changeset description + + Signed-off-by: Erik Larsson + +commit 2f26120a36cb69adcfa8f19d3f1e9cc3b9b6cdc7 +Author: Patrik Oldsberg +Date: Tue Dec 28 16:01:01 2021 +0100 + + auth-backend: changeset and api report update for auth0 and onelogin + + Signed-off-by: Patrik Oldsberg + +commit e4abf1870864cc3e2d6764f79da13acf6976026f +Author: goenning +Date: Tue Dec 28 14:57:30 2021 +0000 + + replace null with undefined + + Signed-off-by: goenning + +commit e1aed5231fd47fa23dfb9a4986229f3b7e09570c +Author: goenning +Date: Tue Dec 28 14:53:08 2021 +0000 + + fix typo + + Signed-off-by: goenning + +commit 462c445892c6841bdd82e439387ae487347c445c +Author: goenning +Date: Tue Dec 28 14:51:15 2021 +0000 + + remove unecessary type + + Signed-off-by: goenning + +commit cdcd0e062d92aaf29c8a6c5b52554f1499ac594a +Merge: 0fdac13e7d 6bad2cfbd3 +Author: Patrik Oldsberg +Date: Tue Dec 28 15:49:47 2021 +0100 + + Merge pull request #8560 from backstage/jhaals/adr + + ADR: Use node-fetch for data fetching + +commit 96fb10fe254d34448aab45e45eb20ccaa8250f12 +Author: goenning +Date: Tue Dec 28 14:47:33 2021 +0000 + + remove unecessary http request when running all checks + + Signed-off-by: goenning + +commit 71998caef9f1994e3f50892359351d20525f6876 +Author: goenning +Date: Tue Dec 28 14:46:44 2021 +0000 + + remove unecessary http request when running all checks + + Signed-off-by: goenning + +commit 04b1d4be44ee435dd138835db90a1e0761fb5c2d +Author: Patrik Oldsberg +Date: Tue Dec 28 15:26:36 2021 +0100 + + auth-backend: refactor onelogin to use sign-in resolver + + Signed-off-by: Patrik Oldsberg + +commit b29d97633061f0bd1a067afdbeda18a651493235 +Author: Patrik Oldsberg +Date: Tue Dec 28 14:35:11 2021 +0100 + + auth-backend: refactor auth0 to use sign-in resolver + + Signed-off-by: Patrik Oldsberg + +commit 6d8e3a96513bcf231f5087c3ba8c1f67bcc852ab +Author: Fredrik Adelöw +Date: Wed Dec 22 12:35:23 2021 +0100 + + Internal cleanup of the exports structure in the search plugin + + Signed-off-by: Fredrik Adelöw + +commit 6bad2cfbd3f0c11034a3c70cf8f3e5724f2bbaf0 +Author: Patrik Oldsberg +Date: Tue Dec 28 14:14:46 2021 +0100 + + docs: add adrs to sidebar and mkdocs + + Signed-off-by: Patrik Oldsberg + +commit 0fdac13e7d20a19b7244c95c567a56662c620d9b +Merge: 9d93aa7c9b a69651d69d +Author: Patrik Oldsberg +Date: Tue Dec 28 14:11:31 2021 +0100 + + Merge pull request #8620 from goenning/go/expose-apiref + + expose techInsightsApiRef + +commit 9d93aa7c9bced5d86fcbf6ef8c8737fa9377a7f1 +Merge: 1a62c3fec9 c2c8768771 +Author: Patrik Oldsberg +Date: Tue Dec 28 14:10:47 2021 +0100 + + Merge pull request #8573 from backstage/dependabot/npm_and_yarn/azure/identity-2.0.1 + + build(deps): bump @azure/identity from 1.5.0 to 2.0.1 + +commit 1a62c3fec9e33a677bf90ed4f84d6510a1fa5f44 +Merge: 5ad4643977 84663d59a3 +Author: Patrik Oldsberg +Date: Tue Dec 28 13:23:42 2021 +0100 + + Merge pull request #8603 from backstage/dependabot/npm_and_yarn/typescript-json-schema-0.52.0 + + build(deps): bump typescript-json-schema from 0.51.0 to 0.52.0 + +commit 5ad4643977faa1e23346affa55ecd387b7af376d +Merge: f278c368bc a9abafa9df +Author: Patrik Oldsberg +Date: Tue Dec 28 13:22:23 2021 +0100 + + Merge pull request #8633 from carlitose/fix/refresh_login_okta + + fixing refresh token Okta provider #8632 + +commit f278c368bc72a470e5b20bbf32eb8e66cc358f3d +Merge: 658131a290 152bd9ba2b +Author: Patrik Oldsberg +Date: Tue Dec 28 12:14:31 2021 +0100 + + Merge pull request #8653 from backstage/rugvip/devdep + + rollback-backend: bump and move test-utils to devDep + +commit a69651d69d4451130fba9ed6b0752c422f464867 +Author: goenning +Date: Tue Dec 28 10:45:23 2021 +0000 + + add documentation to exported types + + Signed-off-by: goenning + +commit de7bba1aa315b1ea5a7490c36a9f0ab35bc16794 +Author: Dede Hamzah +Date: Tue Dec 28 17:34:20 2021 +0700 + + export CatalogReactComponentsNameToClassKey + + Signed-off-by: Dede Hamzah + +commit 627b98ac0771342e8a4f686b8b5893e76260f7d7 +Author: Eric Peterson +Date: Tue Dec 28 11:34:03 2021 +0100 + + -> + + Signed-off-by: Eric Peterson + +commit d85f2850f341bba1c5d84fa3aa246445e8c93644 +Author: Guilherme Oenning +Date: Tue Dec 28 10:06:50 2021 +0000 + + Update .changeset/slimy-socks-pump.md + + Co-authored-by: Patrik Oldsberg + Signed-off-by: goenning + +commit a9abafa9dff54a7730cbf75b245dac4962898f2e +Author: Carlo Giuseppe Sergi +Date: Fri Dec 24 14:22:03 2021 +0100 + + fixing refresh token okta provider + + Signed-off-by: Carlo Giuseppe Sergi + +commit 152bd9ba2b0b5f3c537c9c771ce903a7d62550b6 +Author: Patrik Oldsberg +Date: Tue Dec 28 10:55:47 2021 +0100 + + rollback-backend: bump and move test-utils to devDep + + Signed-off-by: Patrik Oldsberg + +commit 658131a2900928cf4d020f7f2bedcdf529bb5555 +Merge: d6aec1c506 089445ae0f +Author: Patrik Oldsberg +Date: Tue Dec 28 10:51:55 2021 +0100 + + Merge pull request #8651 from backstage/dependabot/npm_and_yarn/types/mock-fs-4.13.1 + + build(deps-dev): bump @types/mock-fs from 4.13.0 to 4.13.1 + +commit d6aec1c5060324fee36e013f8d36036ac5d62c1f +Author: Greg Taylor +Date: Mon Dec 27 23:59:11 2021 -0800 + + Fix techdocs links to the CLI (#8650) + + The techdocs docs were written prior to the techdocs-cli being + crunched into the monorepo. This commit fixes a few links that + still point to the old separte spotify/techdocs-cli repo. + + Signed-off-by: Greg Taylor + +commit 089445ae0f6bf278a24d13b4ca23b67fcf058234 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Tue Dec 28 04:11:22 2021 +0000 + + build(deps-dev): bump @types/mock-fs from 4.13.0 to 4.13.1 + + Bumps [@types/mock-fs](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/mock-fs) from 4.13.0 to 4.13.1. + - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) + - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/mock-fs) + + --- + updated-dependencies: + - dependency-name: "@types/mock-fs" + dependency-type: direct:development + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit 669e73b87bdcedc1e712b129f556f0e8baba6ca9 +Author: Morgan Martinet +Date: Mon Dec 27 22:40:46 2021 -0500 + + change dashboardParameters signature after code review + + Signed-off-by: Morgan Martinet + +commit 1d10e74080124cd5c63d03d7feed57b4bb3bcc5f +Author: Dede Hamzah +Date: Tue Dec 28 09:25:19 2021 +0700 + + Resolve code review + + Signed-off-by: Dede Hamzah + +commit 3df39d8ed3710bc4212d7e1f3ea1e83fa4202206 +Author: Nigel Wright +Date: Tue Dec 28 13:25:05 2021 +1300 + + added additional information for s3 discovery usage + + Signed-off-by: Nigel Wright + +commit 84663d59a308d8b929a527d2d6797f56bf3e1bff +Author: Patrik Oldsberg +Date: Mon Dec 27 19:21:20 2021 +0100 + + Create small-points-allow.md + + Signed-off-by: Patrik Oldsberg + +commit 62b3cea48d03381217b196f8bad504f870c10e95 +Merge: 2bb4402e6f 4ad024fd45 +Author: Patrik Oldsberg +Date: Mon Dec 27 19:13:59 2021 +0100 + + Merge pull request #8592 from AmericanAirlines/fix-clear-text-cookie-codeql + + fix: enforce cookie ssl in production + +commit 2bb4402e6fa83193bbe12113503ceea3782b5769 +Merge: 13ff7ecb5b 7858c2abdc +Author: Patrik Oldsberg +Date: Mon Dec 27 18:40:49 2021 +0100 + + Merge pull request #8644 from backstage/rugvip/notu + + cost-insights: avoid re-export of all of test-utils + +commit 13ff7ecb5bfc905f220c3c7cf086ea49b9ec79d1 +Merge: 4f511ab05e 6e4080d31b +Author: Patrik Oldsberg +Date: Mon Dec 27 18:40:43 2021 +0100 + + Merge pull request #8645 from backstage/build-cli-minify-code + + Add minify option to build command + +commit 8b532a6c02d7148f49569237cafd9e9619e76adc +Author: Eric Peterson +Date: Mon Dec 27 18:40:20 2021 +0100 + + Initial SearchTypeFacet implementation. + + Signed-off-by: Eric Peterson + +commit 4f511ab05e544a1e208276a764d84d07669c0868 +Merge: c4f11441a6 caf278c9f9 +Author: Patrik Oldsberg +Date: Mon Dec 27 18:37:11 2021 +0100 + + Merge pull request #8220 from djamaile/master + + feat: hide owned selector picker if user doesn't own an entity + +commit c4f11441a6e639575d68a2c11dc8d684bb1585a2 +Merge: 7037ea5a43 8e20d72cd4 +Author: Patrik Oldsberg +Date: Mon Dec 27 18:15:42 2021 +0100 + + Merge pull request #8504 from kuangp/feat/retryScaffold + + Support navigating back to prefilled templates to update inputs of scaffolder tasks for resubmission + +commit 7037ea5a43dd432d6dc620f688792a1352e72be0 +Merge: 6bb256cad2 d088a484db +Author: Patrik Oldsberg +Date: Mon Dec 27 17:44:05 2021 +0100 + + Merge pull request #8594 from goenning/go/add-custom-operators + + [TechInsights] ability to add custom operators + +commit 6bb256cad21ba7d03a7b5e3fbbd43c46a4bc08b8 +Merge: 181621172b 7e45b03f4d +Author: Patrik Oldsberg +Date: Mon Dec 27 17:05:51 2021 +0100 + + Merge pull request #8596 from cmpadden/adr013-adherance + + Replace `got` and `axios` dependencies with `node-fetch` + +commit 4ad024fd45e3255ef13f8364d802422137e80c02 +Merge: 27073a49a1 181621172b +Author: Fidel Coria +Date: Mon Dec 27 10:02:28 2021 -0600 + + Merge branch 'master' of github.com:AmericanAirlines/backstage into fix-clear-text-cookie-codeql + + Signed-off-by: Fidel Coria + +commit 4908fcf1775fdfb19f62c373d8c4d24b21e230d2 +Author: Morgan Martinet +Date: Mon Dec 27 10:53:33 2021 -0500 + + force CI to execute after internal failure + + Signed-off-by: Morgan Martinet + +commit 181621172b14582dee07fcff6ca731056cf3ad28 +Merge: b7b177d414 94cdf5d1bd +Author: Eric Peterson +Date: Mon Dec 27 16:32:22 2021 +0100 + + Merge pull request #8621 from backstage/cache/share-memory + +commit 6e4080d31bd64ff9b68897a88dfa00200e2045bf +Author: Vincenzo Scamporlino +Date: Mon Dec 27 16:25:20 2021 +0100 + + Add minify option to build command + + Signed-off-by: Vincenzo Scamporlino + +commit b7b177d414dffa38958db546db546fa042b965ad +Merge: 1cb896c5a4 8f3f8dbe76 +Author: Patrik Oldsberg +Date: Mon Dec 27 16:19:34 2021 +0100 + + Merge pull request #8631 from mufaddal7/meta/codeowner + + Add reviewer for plugins/newrelic-dashboard + +commit 1cb896c5a4c80ad67364b2aeb578fc50ee5335aa +Merge: ae8f194508 8ae2911339 +Author: Patrik Oldsberg +Date: Mon Dec 27 16:18:32 2021 +0100 + + Merge pull request #8640 from backstage/dependabot/npm_and_yarn/mysql2-2.3.3 + + build(deps): bump mysql2 from 2.2.5 to 2.3.3 + +commit ae8f1945089f154fad636c91c42bfda1b224173c +Merge: 8e5d716c0a 1d26017090 +Author: Patrik Oldsberg +Date: Mon Dec 27 16:12:28 2021 +0100 + + Merge pull request #8566 from blaryjp/master + + fix(cli): skip findPackages if not inside a monorepo + +commit 7858c2abdc5a2d984d4ca9d17b4193c3808efe27 +Author: Patrik Oldsberg +Date: Mon Dec 27 16:03:29 2021 +0100 + + cost-insights: avoid re-export of all of test-utils + + Signed-off-by: Patrik Oldsberg + +commit 8e5d716c0acf7e2c6e873d23af18b9286daeea2c +Merge: ef703064b2 0dcd1dd64f +Author: Fredrik Adelöw +Date: Mon Dec 27 14:31:48 2021 +0100 + + Merge pull request #8567 from backstage/freben/tasks + + Introduce TaskScheduler into backends + +commit ef703064b211a245e347f0bf876ecfc21c052b3c +Merge: 84fa1f8676 3bc9681263 +Author: Patrik Oldsberg +Date: Mon Dec 27 14:30:40 2021 +0100 + + Merge pull request #8577 from suuus/docs-3 + + Fixing image for PAT creation in Getting Started pt. 2 + +commit c2c87687718822f9b588bc80ade4b2a15b978a88 +Author: Patrik Oldsberg +Date: Mon Dec 27 14:29:06 2021 +0100 + + Create cyan-goats-confess.md + + Signed-off-by: Patrik Oldsberg + +commit 84fa1f8676de4bf58743c01424f6487aa24e2f71 +Merge: aa8f764a3e f85880e265 +Author: Patrik Oldsberg +Date: Mon Dec 27 14:05:12 2021 +0100 + + Merge pull request #8630 from backstage/rugvip/freeze + + test-utils: freeze and serialize MockStorageApi values + +commit d088a484db72c18d22e4a68a4126a23d98cdbd36 +Author: goenning +Date: Mon Dec 27 12:10:12 2021 +0000 + + add import to example + + Signed-off-by: goenning + +commit e3b49153b76932a08b2a33b7149921efec4ee81b +Author: goenning +Date: Mon Dec 27 12:08:42 2021 +0000 + + add example of custom operator + + Signed-off-by: goenning + +commit f85880e2656ce115388a17639099baa04944d16f +Author: Patrik Oldsberg +Date: Mon Dec 27 12:07:38 2021 +0100 + + catalog-react: update tests to work with new MockStorageApi + + Signed-off-by: Patrik Oldsberg + +commit aa8f764a3e9bfdcb9034e23094d913e3a678f06a +Author: Denis Aoki +Date: Mon Dec 27 08:01:22 2021 -0300 + + techdocs(sanitizer): adds iframe support (#8237) + + Signed-off-by: dnsaoki2 + +commit e762ecb94ef97022c98a7a81e474eea7ce92e97e +Author: Dede Hamzah +Date: Mon Dec 27 17:41:13 2021 +0700 + + Updating api reports + + Signed-off-by: Dede Hamzah + +commit fe2a6532ffbfb72e497879c0cb5cea667f0b79e3 +Author: Dede Hamzah +Date: Mon Dec 27 17:30:10 2021 +0700 + + Add Override Components for Components in @backstage/plugin-catalog-react + + Signed-off-by: Dede Hamzah + +commit acce31fa2a6700865fc4557f45bdaa2f17f44a90 +Author: Morgan Martinet +Date: Mon Dec 27 01:10:59 2021 -0500 + + fix documentation warnings + + Signed-off-by: Morgan Martinet + +commit 7ac0bd2c66671d17d2323b76e38e8671110eec57 +Author: Morgan Martinet +Date: Mon Dec 27 00:43:43 2021 -0500 + + implement dashboard link formatter for GKE + + Signed-off-by: Morgan Martinet + +commit 8ae291133972379514e1da4da5188ceb7d489817 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Mon Dec 27 04:12:52 2021 +0000 + + build(deps): bump mysql2 from 2.2.5 to 2.3.3 + + Bumps [mysql2](https://github.com/sidorares/node-mysql2) from 2.2.5 to 2.3.3. + - [Release notes](https://github.com/sidorares/node-mysql2/releases) + - [Changelog](https://github.com/sidorares/node-mysql2/blob/master/Changelog.md) + - [Commits](https://github.com/sidorares/node-mysql2/compare/v2.2.5...v2.3.3) + + --- + updated-dependencies: + - dependency-name: mysql2 + dependency-type: direct:production + update-type: version-update:semver-minor + ... + + Signed-off-by: dependabot[bot] + +commit caf278c9f93041382682f77d82b9d95741278e5c +Author: djamaile +Date: Mon Dec 27 01:59:04 2021 +0100 + + fix: remove double line + + Signed-off-by: djamaile + +commit ffe4a9a8a8e6de6f8317dac53a43234d38421000 +Author: djamaile +Date: Mon Dec 27 00:34:31 2021 +0100 + + fix: remove unused var + + Signed-off-by: djamaile + +commit 2c9e29a352c55510ec457c89a04f7f298a8881f4 +Author: djamaile +Date: Mon Dec 27 00:24:05 2021 +0100 + + test: add fire event click to tests + + Signed-off-by: djamaile + +commit 0dcd1dd64f5df9cebdfbe4e77bd982c329c33308 +Author: Fredrik Adelöw +Date: Tue Dec 21 15:00:47 2021 +0100 + + Introduce TaskScheduler into backends + + Signed-off-by: Fredrik Adelöw + +commit 995e4c7d9d8dca9b9cc2892b31f2a000b3bd5874 +Author: Leon Stein +Date: Fri Dec 24 16:11:38 2021 -0500 + + added changeset + + Signed-off-by: Leon Stein + +commit e74854410d81ec7c1439fcf9840054ff9654152d +Author: Leon Stein +Date: Thu Dec 23 16:36:35 2021 -0500 + + initial + + Signed-off-by: Leon Stein + +commit 8f3f8dbe7607045ab50e0431331867e95fddcd2c +Author: mufaddal motiwala +Date: Fri Dec 24 18:57:25 2021 +0530 + + Add reviewer for plugins/newrelic-dashboard + + Signed-off-by: mufaddal motiwala + +commit c36b7794f77b7fe010f60c1957ab36b3cdfc7f14 +Author: Patrik Oldsberg +Date: Fri Dec 24 11:38:19 2021 +0100 + + test-utils: freeze and serialize MockStorageApi values + + Signed-off-by: Patrik Oldsberg + +commit a85d9fe831603bb82fcb6807236d8e9dd398d18e (tag: v0.60.1, tag: release-2021-12-24) +Merge: 78b8229f93 2bd44f673b +Author: Patrik Oldsberg +Date: Fri Dec 24 11:24:18 2021 +0100 + + Merge pull request #8629 from backstage/rugvip/bonus + + release shortcuts plugin patch + +commit 2bd44f673b5c669f9b7f3dd3cf021b79eaa52e22 +Author: Patrik Oldsberg +Date: Fri Dec 24 10:51:48 2021 +0100 + + release shortcuts plugin patch + + Signed-off-by: Patrik Oldsberg + +commit 78b8229f9301fa92ff686ebee6e6f50c5d961151 +Merge: 74bfed65cd 01d894192d +Author: Fredrik Adelöw +Date: Fri Dec 24 10:17:49 2021 +0100 + + Merge pull request #8628 from tomwolfgang/patch-1 + + Update ADOPTERS.md - adding Overwolf + +commit 01d894192da5873434211d40b61ab12a8f508164 +Author: Tom Wolf +Date: Fri Dec 24 10:55:50 2021 +0200 + + Update ADOPTERS.md - adding Overwolf + +commit 74bfed65cd5b42a4d75bf0f466bd1c75a6da5cad +Merge: 78b4e3eed5 67859f9a05 +Author: Fredrik Adelöw +Date: Fri Dec 24 09:05:42 2021 +0100 + + Merge pull request #8627 from backstage/dependabot/npm_and_yarn/express-4.17.2 + + build(deps): bump express from 4.17.1 to 4.17.2 + +commit 78b4e3eed548851baa9b57b480662fd92558db85 +Merge: 5284458e18 b50cbd047b +Author: Fredrik Adelöw +Date: Fri Dec 24 09:04:36 2021 +0100 + + Merge pull request #8626 from kuangp/fix/shortcuts + + fix(shortcuts): make writable copies of saved shortcuts from storageApi + +commit 67859f9a05765a11242b610ed7125bc90c278cc2 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Fri Dec 24 04:42:37 2021 +0000 + + build(deps): bump express from 4.17.1 to 4.17.2 + + Bumps [express](https://github.com/expressjs/express) from 4.17.1 to 4.17.2. + - [Release notes](https://github.com/expressjs/express/releases) + - [Changelog](https://github.com/expressjs/express/blob/master/History.md) + - [Commits](https://github.com/expressjs/express/compare/4.17.1...4.17.2) + + --- + updated-dependencies: + - dependency-name: express + dependency-type: direct:production + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit b50cbd047b81717be6e43ef17b54123f242b8607 +Author: Phil Kuang +Date: Thu Dec 23 20:11:09 2021 -0500 + + fix(shortcuts): make writable copies of saved shortcuts from storageApi + + Signed-off-by: Phil Kuang + +commit c75c918048743cdbed58fde99f8647d9b845acec +Author: goenning +Date: Thu Dec 23 16:24:29 2021 +0000 + + add @types/react dependency + + Signed-off-by: goenning + +commit 94cdf5d1bdd32167d392c4b70cf07a00e1ef5934 +Author: Eric Peterson +Date: Thu Dec 23 17:17:56 2021 +0100 + + Memory cache client should share memory. + + Signed-off-by: Eric Peterson + +commit d83079fc11f11fae4817615ba271d144ec4082dc +Author: goenning +Date: Thu Dec 23 16:04:38 2021 +0000 + + expose techInsightsApiRef + + Signed-off-by: goenning + +commit 7e45b03f4d7c890f88e7f3b07fab682b2db986d6 +Author: Colton Padden +Date: Thu Dec 23 10:57:36 2021 -0500 + + add msw intercept for graph.microsoft and test photo query response + + Signed-off-by: Colton Padden + +commit 5284458e18f7da3bc0ba5eb8043e902108518726 +Merge: 1fc4105bb0 67489db5d6 +Author: Patrik Oldsberg +Date: Thu Dec 23 16:27:15 2021 +0100 + + Merge pull request #8606 from mufaddal7/fix/remove-css + + remove internal and inline css + +commit 57261f7e86940184853531167cde943c407d4cf7 +Author: Brian Fletcher +Date: Thu Dec 23 15:11:38 2021 +0000 + + discovery processor to use gh creds interface + + Signed-off-by: Brian Fletcher + +commit 1fc4105bb02bdfa1553b2243efda4f713b985031 +Merge: e355cef650 57a54eaed4 +Author: Patrik Oldsberg +Date: Thu Dec 23 15:52:49 2021 +0100 + + Merge pull request #8601 from erikxiv/fix-api-auth-in-tech-insights + + fixes api auth bug in tech-insights plugin + +commit e355cef650030a101c1d904ed76f45793117634f +Merge: f13228792e a385c77b88 +Author: Patrik Oldsberg +Date: Thu Dec 23 15:51:35 2021 +0100 + + Merge pull request #8617 from backstage/rugvip/norelease + + changeset/config: remove confusing config + +commit 8e20d72cd4f857c63ec5a818b2f66b640f2639c3 +Author: Phil Kuang +Date: Tue Dec 21 14:50:55 2021 -0500 + + feat(TemplatePage): serialize form data into url for back navigation + + Signed-off-by: Phil Kuang + +commit d078377f674d72eec7477e15e735a2470ec32545 +Author: Phil Kuang +Date: Wed Dec 15 15:53:48 2021 -0500 + + feat(scaffolder): support updating template inputs of tasks + + Signed-off-by: Phil Kuang + +commit f13228792e547ab41b7779c551686bded66e57b5 +Merge: 14824ff60a 7d4b4e937c +Author: Patrik Oldsberg +Date: Thu Dec 23 14:29:17 2021 +0100 + + Merge pull request #8533 from RoadieHQ/gh-creds-interface + + create an interface for gh creds provider + +commit a385c77b883844f41004d9bc31676ffe33eb21f2 +Author: Patrik Oldsberg +Date: Thu Dec 23 14:28:05 2021 +0100 + + changeset/config: remove confusing config + + Signed-off-by: Patrik Oldsberg + +commit 14824ff60ac61d59fa9245416a1a8622b17e48f5 +Merge: b315430f9d 6bf1e1a834 +Author: Patrik Oldsberg +Date: Thu Dec 23 14:21:57 2021 +0100 + + Merge pull request #8615 from mufaddal7/microsite/add-plugin + + add New Relic Dashboard plugin in marketplace + +commit 6bf1e1a834dab6e7954f4d72607df2dcd95b4d10 +Author: mufaddal motiwala +Date: Thu Dec 23 18:46:53 2021 +0530 + + rewording + + Signed-off-by: mufaddal motiwala + +commit 52ba8760d8bbbf81427efe2bfd50c7c92eb9f7ad +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Thu Dec 23 13:12:38 2021 +0000 + + build(deps): bump @azure/identity from 1.5.0 to 2.0.1 + + Bumps [@azure/identity](https://github.com/Azure/azure-sdk-for-js) from 1.5.0 to 2.0.1. + - [Release notes](https://github.com/Azure/azure-sdk-for-js/releases) + - [Commits](https://github.com/Azure/azure-sdk-for-js/compare/@azure/identity_1.5.0...@azure/identity_2.0.1) + + --- + updated-dependencies: + - dependency-name: "@azure/identity" + dependency-type: direct:production + update-type: version-update:semver-major + ... + + Signed-off-by: dependabot[bot] + +commit b315430f9dfcfa19ab0dd90f5b4ac6904938fba7 (tag: v0.60.0, tag: release-2021-12-23) +Merge: 3313e03905 3d68c45ef7 +Author: Patrik Oldsberg +Date: Thu Dec 23 14:07:19 2021 +0100 + + Merge pull request #8514 from backstage/changeset-release/master + + Version Packages + +commit 5ccdc3c05a99925f6ee501f02b0184d817d97dec +Author: mufaddal motiwala +Date: Thu Dec 23 18:06:08 2021 +0530 + + added new-relic-dashboard in plugin marketplace + + Signed-off-by: mufaddal motiwala + +commit 7d4b4e937c14bf300d5a94aa4eb5976c03b3e8bc +Author: Brian Fletcher +Date: Thu Dec 23 12:30:48 2021 +0000 + + addressing review comments + + Signed-off-by: Brian Fletcher + +commit 3d68c45ef770c7a666374a6b43bf995d6e070276 +Author: github-actions[bot] +Date: Thu Dec 23 12:23:34 2021 +0000 + + Version Packages + +commit 3313e03905c92a4d184a1a91a12093b1fc4d85c1 +Merge: 49a696d720 db70a6e482 +Author: Patrik Oldsberg +Date: Thu Dec 23 13:16:10 2021 +0100 + + Merge pull request #8611 from backstage/rugvip/tweakpkg + + changesets: tweak target package of @techdocs/cli change + +commit 67489db5d679328aa72041438e921c0701e93330 +Author: mufaddal motiwala +Date: Thu Dec 23 17:29:31 2021 +0530 + + embedded-techdocs-app changed to @techdocs/cli + + Signed-off-by: mufaddal motiwala + +commit e5e3875ec99660d062c1343e86fb72c00208f626 +Author: Karan Shah +Date: Thu Dec 23 11:47:56 2021 +0000 + + Add the generated api-report.md + + Signed-off-by: Karan Shah + +commit 367b5aac2ecd5999608d2fd9edd9c928a5174852 +Author: Karan Shah +Date: Thu Dec 23 11:15:54 2021 +0000 + + Created a Changeset and improved the Airbrake plugin README + + Signed-off-by: Karan Shah + +commit db70a6e482640f07fe90ca695d90d3e345a95ac3 +Author: Patrik Oldsberg +Date: Thu Dec 23 12:10:45 2021 +0100 + + changesets: tweak target package of @techdocs/cli change + + Signed-off-by: Patrik Oldsberg + +commit 49a696d720b8dde6c0acfd6399e84d8a825e7e88 +Author: Camila Belo +Date: Thu Dec 23 12:05:26 2021 +0100 + + [Search] Standardizes input search components (#8532) + + * refactor(plugin-search): customize search bar components + + Signed-off-by: Camila Belo + + * refactor(plugin-search): use search bar in search modal + + Signed-off-by: Camila Belo + + * refactor(plugin-search): customize home page search bar + + Signed-off-by: Camila Belo + + * chore(plugin-search): update api reports + + Signed-off-by: Camila Belo + + * chore: add changeset file + + Signed-off-by: Camila Belo + + * apply review suggestions + + Signed-off-by: Camila Belo + + * increase default debounceTime and remove prop from SearchBar in SearchModal + SearchPage in app + + Signed-off-by: Emma Indal + + * update test using default debounce time + + Signed-off-by: Emma Indal + + * add changeset for create-app + + Signed-off-by: Emma Indal + + * fix exports after rebase + + Signed-off-by: Emma Indal + + Co-authored-by: Emma Indal + +commit ec2b38ae2c35a12e45fa71b8a11ccb3329d637a8 +Author: Karan Shah +Date: Thu Dec 23 11:03:18 2021 +0000 + + Improve the wording in index.test.ts + + Signed-off-by: Karan Shah + +commit 273c9aa1ca26a169dd61673ff907e6068f5cddd6 +Author: goenning +Date: Thu Dec 23 11:03:06 2021 +0000 + + fix unit test + + Signed-off-by: goenning + +commit 6868b9087d7aa079963d22ca0bc9f71ac2f66123 +Author: Karan Shah +Date: Thu Dec 23 11:01:24 2021 +0000 + + Make it very clear that this plugin is not fit for use + + Signed-off-by: Karan Shah + +commit 9d314708534bd9a0d5c0c7b76d8729f172082ebf +Merge: e1ec6ce6f5 7a5f4f2ad8 +Author: Patrik Oldsberg +Date: Thu Dec 23 12:01:12 2021 +0100 + + Merge pull request #8610 from backstage/rugvip/patchk8s + + changesets: switch k8s export change to patch + +commit 94e731c173e8b79d13f4d49dba925b8a1d54c087 +Author: Patrik Oldsberg +Date: Thu Dec 23 10:57:01 2021 +0100 + + yarn.lock: bump @types/node-fetch + + Signed-off-by: Patrik Oldsberg + +commit 148029d9531d3ad1a0e784b3e8ebeedefbc045d4 +Author: Karan Shah +Date: Thu Dec 23 10:59:22 2021 +0000 + + Update ExampleFetchComponent.test.tsx + + Signed-off-by: Karan Shah + +commit 6be5f036055294112e070397c1bf140c5209c237 +Author: Karan Shah +Date: Thu Dec 23 10:51:43 2021 +0000 + + Update the Airbrake Icon to use the one from their website + + Signed-off-by: Karan Shah + +commit fc6530ea191ed62014691bc628e5a8e6f5e2e241 +Author: goenning +Date: Wed Dec 22 17:22:25 2021 +0000 + + fix unit test name + + Signed-off-by: goenning + +commit d0db4a56f103b6fd0e790f6bbb9e00f5e51cef6b +Author: goenning +Date: Wed Dec 22 17:14:24 2021 +0000 + + update api reports + + Signed-off-by: goenning + +commit 8d00dc427c4871364d3514471aa6787b6b17a903 +Author: goenning +Date: Wed Dec 22 16:58:40 2021 +0000 + + ability to add custom operators + + Signed-off-by: goenning + +commit 7a5f4f2ad8bc2306c7f61cbd27544edc65ae88e4 +Author: Patrik Oldsberg +Date: Thu Dec 23 11:49:06 2021 +0100 + + changesets: switch k8s export change to patch + + Signed-off-by: Patrik Oldsberg + +commit 483bdad7ece7fc0421995dd35e8bd96afa2375cc +Author: Karan Shah +Date: Thu Dec 23 10:48:30 2021 +0000 + + Remove the plugin from App.tsx and update README + + Signed-off-by: Karan Shah + +commit 1e69306d1b705fe93d77911e4dfbc58a78942756 +Author: Karan Shah +Date: Thu Dec 23 10:42:12 2021 +0000 + + Remove CODEOWNERS + + Signed-off-by: Karan Shah + +commit ff62764051fd2edbbfbecb2c972a37757e68cf26 +Author: mufaddal motiwala +Date: Thu Dec 23 15:49:44 2021 +0530 + + change path + + Signed-off-by: mufaddal motiwala + +commit 073bd161df089b954dd104a58b158f47f1c2baab +Author: Karan Shah +Date: Thu Dec 23 10:08:17 2021 +0000 + + Add index.test.ts and plugin.test.tsx + + Signed-off-by: Karan Shah + +commit 808828e4fa27111aa7e1062a772a9b269c859d4d +Author: mufaddal motiwala +Date: Thu Dec 23 15:36:21 2021 +0530 + + remove inline css + + Signed-off-by: mufaddal motiwala + +commit 8fbc988bfc3b2b4ec4116fa9b4b1a43301f870ab +Author: mufaddal motiwala +Date: Thu Dec 23 15:34:02 2021 +0530 + + remove internal and inline css + + Signed-off-by: mufaddal motiwala + +commit 18d631f8e2323677f9ac7a9679729f30edc0ecbf +Merge: 6a5a4da906 a8c4e812de +Author: mufaddal motiwala +Date: Thu Dec 23 15:29:37 2021 +0530 + + Merge branch 'fix/remove-css' of https://github.com/mufaddal7/backstage-1 into fix/remove-css + +commit 6a5a4da906eae34f8e25cf032688d2ac75f026ac +Author: mufaddal motiwala +Date: Thu Dec 23 15:29:25 2021 +0530 + + add changelog + + Signed-off-by: mufaddal motiwala + +commit a8c4e812de9be10ee0086c8d9018f7f6e74b7253 +Author: mufaddal motiwala +Date: Thu Dec 23 15:28:02 2021 +0530 + + add cahngelog + + Signed-off-by: mufaddal motiwala + +commit 79b342bd3669ccc65d14aef0043fd3da4f9f61bf +Author: mufaddal motiwala +Date: Thu Dec 23 15:27:21 2021 +0530 + + remove inline and internal CSS + + Signed-off-by: mufaddal motiwala + +commit d33b65dc52242c5211f3bda3578b976341e8522d +Author: Patrik Oldsberg +Date: Thu Dec 23 10:50:16 2021 +0100 + + create-app: remove unused serve_index.html + + Signed-off-by: Patrik Oldsberg + +commit b5a69efaadae8060eaae11bdd7543c989a5dacbf +Merge: a92d65bcb2 e1ec6ce6f5 +Author: Brian Fletcher +Date: Thu Dec 23 08:54:58 2021 +0000 + + Merge branch 'master' of github.com:backstage/backstage into gh-creds-blah + +commit 489d491b8c9126dffc735d742402d46f5c4c7ac8 +Author: mufaddal motiwala +Date: Thu Dec 23 13:01:11 2021 +0530 + + remove css from index.html + + Signed-off-by: mufaddal motiwala + +commit bc0c76e89dc465d008c1c33f367eed03370c86aa +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Thu Dec 23 04:08:20 2021 +0000 + + build(deps): bump typescript-json-schema from 0.51.0 to 0.52.0 + + Bumps [typescript-json-schema](https://github.com/YousefED/typescript-json-schema) from 0.51.0 to 0.52.0. + - [Release notes](https://github.com/YousefED/typescript-json-schema/releases) + - [Commits](https://github.com/YousefED/typescript-json-schema/compare/v0.51.0...v0.52.0) + + --- + updated-dependencies: + - dependency-name: typescript-json-schema + dependency-type: direct:production + update-type: version-update:semver-minor + ... + + Signed-off-by: dependabot[bot] + +commit 57a54eaed4ca87cfe7447ef9a07548290e9cbaca +Author: Erik Larsson +Date: Wed Dec 22 23:09:34 2021 +0100 + + tsc + + Signed-off-by: Erik Larsson + +commit da5751717e6daf9d0c9443850cbb647b49a55119 +Author: Erik Larsson +Date: Wed Dec 22 23:05:09 2021 +0100 + + tsc + + Signed-off-by: Erik Larsson + +commit a86f5c17016632908296e6a8d7498350b3705c01 +Author: Erik Larsson +Date: Wed Dec 22 22:48:07 2021 +0100 + + fixes api auth bug in tech-insights plugin + + Signed-off-by: Erik Larsson + +commit da676a49ab9998a40432d02e453359f164d22dd4 +Author: Erik Larsson +Date: Wed Dec 22 22:16:49 2021 +0100 + + fixes api auth bug in techdocs backend + + Signed-off-by: Erik Larsson + +commit e1ec6ce6f5ebb9c9239e1cfc7a174c9b204136e7 +Merge: f30f67f59b 457cfb9e23 +Author: Fredrik Adelöw +Date: Wed Dec 22 22:12:18 2021 +0100 + + Merge pull request #8531 from backstage/dependabot/npm_and_yarn/roadiehq/backstage-plugin-github-insights-1.3.3 + + build(deps): bump @roadiehq/backstage-plugin-github-insights from 1.2.2 to 1.3.3 + +commit f30f67f59b312485888be416d3a7bc9e81c82b65 +Merge: bb3c896836 2462b9e275 +Author: Patrik Oldsberg +Date: Wed Dec 22 22:06:16 2021 +0100 + + Merge pull request #8595 from backstage/rugvip/cleanfilter + + backend-common: make sure readTree temp dirs are cleaned up + +commit 457cfb9e2304e39ba54f8773791b860164c2cc5d +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Fri Dec 17 04:17:29 2021 +0000 + + build(deps): bump @roadiehq/backstage-plugin-github-insights + + Bumps [@roadiehq/backstage-plugin-github-insights](https://github.com/RoadieHQ/roadie-backstage-plugins/tree/HEAD/plugins/frontend/backstage-plugin-github-insights) from 1.2.2 to 1.3.3. + - [Release notes](https://github.com/RoadieHQ/roadie-backstage-plugins/releases) + - [Changelog](https://github.com/RoadieHQ/roadie-backstage-plugins/blob/main/plugins/frontend/backstage-plugin-github-insights/CHANGELOG.md) + - [Commits](https://github.com/RoadieHQ/roadie-backstage-plugins/commits/HEAD/plugins/frontend/backstage-plugin-github-insights) + + --- + updated-dependencies: + - dependency-name: "@roadiehq/backstage-plugin-github-insights" + dependency-type: direct:production + update-type: version-update:semver-minor + ... + + Signed-off-by: dependabot[bot] + +commit 22bb6fad0c9b675822083b08dbd6cd2b8aab45a9 +Author: Colton Padden +Date: Wed Dec 22 14:23:27 2021 -0500 + + update yarn.lock after axios and got top-level dependency removal + + Signed-off-by: Colton Padden + +commit f0f81f6cc7a56e71e462987dee5850deb28f4917 +Author: Colton Padden +Date: Wed Dec 22 14:23:16 2021 -0500 + + remove got dependency from auth-backend + + Signed-off-by: Colton Padden + +commit c5e175cde95ceba6e324fdc06343f140e077ab4f +Author: Colton Padden +Date: Wed Dec 22 14:14:31 2021 -0500 + + remove axios dependency from rollbar-backend + + Signed-off-by: Colton Padden + +commit 2462b9e27509e9e637aa5198f77a099ed44f25e4 +Author: Patrik Oldsberg +Date: Wed Dec 22 19:25:28 2021 +0100 + + backend-common: make sure readTree temp dirs are cleaned up + + Signed-off-by: Patrik Oldsberg + +commit bb3c896836d81de09043d3a73f34f9d970a109a7 +Merge: 614cc2b689 27af6d996b +Author: Fredrik Adelöw +Date: Wed Dec 22 18:39:15 2021 +0100 + + Merge pull request #8593 from backstage/blam/fix-rc-progress + +commit 614cc2b689c2d0424b00dca9375988575c0b12d1 +Merge: 24e5c96e0b 700dfbe67e +Author: Patrik Oldsberg +Date: Wed Dec 22 18:11:24 2021 +0100 + + Merge pull request #8579 from backstage/rugvip/fixdepr + + cli: fix index templating deprecation warning + +commit 27073a49a128a5f86efcca70404c2b8aaafbe6aa +Author: Fidel Coria +Date: Wed Dec 22 10:50:11 2021 -0600 + + fix spelling in changeset + + Signed-off-by: Fidel Coria + +commit 27af6d996bcf2ab47a0492e6c6db779aabc7b93d +Author: blam +Date: Wed Dec 22 17:47:06 2021 +0100 + + chore: lock `rc-progress` to a working version + + Signed-off-by: blam + +commit 5801adbd18509948219c4b8b0b17a43b1892d8f7 +Author: Fidel Coria +Date: Wed Dec 22 10:47:36 2021 -0600 + + use authUrl for condition + + Signed-off-by: Fidel Coria + +commit 24e5c96e0b6764897f7eb2122f418e4e11e391b0 +Merge: 3e788c522d 58b0262dd9 +Author: Patrik Oldsberg +Date: Wed Dec 22 17:36:06 2021 +0100 + + Merge pull request #8578 from backstage/rugvip/tsloader + + cli: removed unused ts-loader and dashify deps + +commit eb48e78886d10960ae316164de322bf0042bdbdb +Author: Fidel Coria +Date: Wed Dec 22 10:27:14 2021 -0600 + + add changeset + + Signed-off-by: Fidel Coria + +commit e3b11376cb93a5637e192dea7dc1f375f5a75bf6 +Author: Fidel Coria +Date: Wed Dec 22 10:22:12 2021 -0600 + + fix: enforce cookie ssl in production + + Signed-off-by: Fidel Coria + +commit 3e788c522d6bba502c57a6a1294bc0f5d4e64289 +Merge: 3a98a2b87e 183cef5886 +Author: Fredrik Adelöw +Date: Wed Dec 22 17:00:01 2021 +0100 + + Merge pull request #8588 from moltenice-forks/simplybusiness-as-adopters + + Add Simply Business as adopters + +commit 3a98a2b87e7e5d30b51225cc77b66d740eb77be0 +Merge: 85987c7459 d3f10b6e1e +Author: Fredrik Adelöw +Date: Wed Dec 22 16:57:33 2021 +0100 + + Merge pull request #8587 from niallmccullagh/helm-routing + + fix api-docs routing clash with /api + +commit a92d65bcb2389e5c47e18fa2b3c55e6bdd61ae3b +Author: Brian Fletcher +Date: Wed Dec 22 15:54:35 2021 +0000 + + create changeset file + + Signed-off-by: Brian Fletcher + +commit 183cef5886f3b8c7984ae83f9003b9b2bf377aa1 +Merge: 12c66ba076 b29bf02ab6 +Author: Karan Shah +Date: Wed Dec 22 15:32:29 2021 +0000 + + Merge remote-tracking branch 'origin/simplybusiness-as-adopters' into simplybusiness-as-adopters + + # Conflicts: + # ADOPTERS.md + +commit 12c66ba076876584b5592dd2f102826f91e65836 +Author: Karan Shah +Date: Wed Dec 22 15:25:22 2021 +0000 + + Add Simply Business as adopters + + Signed-off-by: Karan Shah + +commit b29bf02ab66fe9ca8b8ec4ba7c2d14c7fe1749d7 +Author: Karan Shah +Date: Wed Dec 22 15:25:22 2021 +0000 + + Add Simply Business as adopters + + Signed-off-by: Karan Shah + +commit 85987c7459fa10eae0da94270ab2e4fa217333c5 +Merge: 03f9dc4bdc 2cab14350b +Author: Fredrik Adelöw +Date: Wed Dec 22 16:11:46 2021 +0100 + + Merge pull request #8586 from awanlin/topic/add-azure-pipelines-to-plugin-marketplace + + Added Azure Pipelines to Plugin Marketplace + +commit 03f9dc4bdcb3642b4d1a5a1910a8c814837c768b +Merge: beda508164 1062468701 +Author: Fredrik Adelöw +Date: Wed Dec 22 16:06:16 2021 +0100 + + Merge pull request #8583 from awanlin/topic/add-keyloop-as-adopter + + Added Keyloop as adopter + +commit 2cab14350b69c1f9749cecc3b806bccfa05e2fb2 +Author: Andre Wanlin +Date: Wed Dec 22 09:01:48 2021 -0600 + + Added missing newlines + + Signed-off-by: Andre Wanlin + +commit 5cd6880dbe3de998562a43e4cda28b2959334c40 +Author: Karan Shah +Date: Wed Dec 22 14:59:19 2021 +0000 + + Generate the initial plugin code + + Signed-off-by: Karan Shah + +commit beda5081647ec4f49f8eab7e57ff73ca8436d7ed +Merge: 7a825e14ab 2f6d8ec3b6 +Author: Patrik Oldsberg +Date: Wed Dec 22 15:50:51 2021 +0100 + + Merge pull request #8585 from backstage/rugvip/treeify + + backend-common: clarify responsiblity of readTree directory deletion + +commit 7a825e14abdcc27f0ca54984c83c744a737fee36 +Merge: d30c811e33 8814c893e3 +Author: Fredrik Adelöw +Date: Wed Dec 22 15:46:15 2021 +0100 + + Merge pull request #8516 from wejendorp/jsonfc-fix + + fix: allow partial evaluation of checks in jsonfc factchecker + +commit d30c811e33410f0a9c9e4691bb0e21789e0c01e6 +Author: Emma Indal +Date: Wed Dec 22 15:43:09 2021 +0100 + + update roadmap for homepage, search, techdocs (#8584) + + Signed-off-by: Emma Indal + +commit 5f1333a60b43504d218b08a3a29ab3716966d5f3 +Merge: c761ea55c7 ebed29d928 +Author: MT Lewis +Date: Wed Dec 22 14:32:25 2021 +0000 + + Merge pull request #8357 from backstage/example-app-permission-integration + + Example app permission integration + +commit d3f10b6e1e814bc4bc0c0b8e6f9f75f58fe5d10e +Author: Niall McCullagh +Date: Wed Dec 22 14:27:05 2021 +0000 + + fix api docs routing clash with /api + + /api-docs was getting routed to the backend /api route. The + documentation at https://kubernetes.io/docs/concepts/services-networking/ingress/ + describes that the path should match on the full element so this was + unexpected. Adding a trailing slash is not supposed to have an impact + but in this case it solved the problem. + + Signed-off-by: Niall McCullagh + +commit e90a2f49e1c7f25c6b98e7d696e86cc098e422ff +Author: moltenice +Date: Wed Dec 22 14:22:11 2021 +0000 + + Add in the plugin marketplace entry for Airbrake + + Signed-off-by: Karan Shah + +commit c6cd92442fb4dbdffc41257e1dd0c5233190b1ee +Author: Andre Wanlin +Date: Wed Dec 22 08:19:54 2021 -0600 + + Added Azure Pipelines to PLugin Marketplace + + Signed-off-by: Andre Wanlin + +commit 2f6d8ec3b6bd3dd06199eb8f7d443346c71c6c82 +Author: Patrik Oldsberg +Date: Wed Dec 22 15:05:24 2021 +0100 + + backend-common: clarify responsiblity of readTree directory deletion + + Signed-off-by: Patrik Oldsberg + +commit 10624687014bd0c1eaf00d471efccc875265e74f +Author: Andre Wanlin +Date: Wed Dec 22 07:49:58 2021 -0600 + + Added Keyloop as adopter + + Signed-off-by: Andre Wanlin + +commit c761ea55c7c47baa95ccfd72ef25aea16c2ad085 +Merge: 407031f7ae dcbad5882c +Author: Fredrik Adelöw +Date: Wed Dec 22 14:17:17 2021 +0100 + + Merge pull request #8582 from mufaddal7/microsite/new-video + + add new what is backstage video + +commit dcbad5882c007d63b73bc3a26c0fff5100f7e632 +Author: mufaddal motiwala +Date: Wed Dec 22 18:32:22 2021 +0530 + + video moved to just above "out of the box" section + + Signed-off-by: mufaddal motiwala + +commit c273ea5c5a6fe8ea8620af7538196ed13714f51f +Author: mufaddal motiwala +Date: Wed Dec 22 18:16:31 2021 +0530 + + add new what is backstage video + + Signed-off-by: mufaddal motiwala + +commit 407031f7aef1fbdf20fa038a9a1ea022bc75c98b +Merge: 498c1e22f7 c86627aa52 +Author: Fredrik Adelöw +Date: Wed Dec 22 11:57:20 2021 +0100 + + Merge pull request #8441 from GoFightNguyen/scaffolder/EntityPicker-arbitrary-values + + EntityPicker: option for disabling arbitrary values + +commit 498c1e22f74ebc81a35a44abcb9fb860b5bc403e +Merge: 4be7999b3e a719c54a0b +Author: Fredrik Adelöw +Date: Wed Dec 22 11:39:50 2021 +0100 + + Merge pull request #8534 from lukzerom/core-components-docs-update + + Core-components descriptions docs update + +commit 700dfbe67e05e400fbc492a3791cdb3757697e51 +Author: Patrik Oldsberg +Date: Wed Dec 22 10:29:11 2021 +0100 + + cli: fix index templating deprecation warning + + Signed-off-by: Patrik Oldsberg + +commit 58b0262dd9fa9a5d1749b335233c8be5d477abbd +Author: Patrik Oldsberg +Date: Wed Dec 22 10:12:31 2021 +0100 + + cli: removed unused ts-loader and dashify deps + + Signed-off-by: Patrik Oldsberg + +commit 4be7999b3e1d3c12f65ed46c3fea5d680cc7dfbb +Merge: d4d541657b c6711d955e +Author: Patrik Oldsberg +Date: Wed Dec 22 10:12:07 2021 +0100 + + Merge pull request #8575 from backstage/dependabot/npm_and_yarn/supertest-6.1.6 + + build(deps-dev): bump supertest from 6.1.3 to 6.1.6 + +commit 3bc9681263b7cf8b6d1d35c16b10da8dd34d12c6 +Author: Suzanne Daniels +Date: Wed Dec 22 10:07:32 2021 +0100 + + Fixing image for PAT creation + + Signed-off-by: Suzanne Daniels + +commit d4d541657b1215d87b143316710b759d3d7b9e25 +Merge: 60ecf7e035 25f668d583 +Author: Suzanne Daniels +Date: Wed Dec 22 08:32:14 2021 +0100 + + Merge pull request #8317 from suuus/suuus/docs-2 + +commit c6711d955e9eb3d200cb9bddb52a1c375901bc92 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Wed Dec 22 04:33:21 2021 +0000 + + build(deps-dev): bump supertest from 6.1.3 to 6.1.6 + + Bumps [supertest](https://github.com/visionmedia/supertest) from 6.1.3 to 6.1.6. + - [Release notes](https://github.com/visionmedia/supertest/releases) + - [Commits](https://github.com/visionmedia/supertest/compare/v6.1.3...v6.1.6) + + --- + updated-dependencies: + - dependency-name: supertest + dependency-type: direct:development + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit c86627aa524e2b007051bdd816091541eedf0aac +Merge: ff5ff57883 60ecf7e035 +Author: Jason Nguyen +Date: Tue Dec 21 17:50:16 2021 -0700 + + Merge branch 'master' into scaffolder/EntityPicker-arbitrary-values + +commit 25f668d583f4b4691bf8308696706c6648341a6a +Author: Suzanne Daniels +Date: Tue Dec 21 21:03:11 2021 +0100 + + Link fixing + + Signed-off-by: Suzanne Daniels + +commit 60ecf7e0352bcc1c43801fe536703d336ee9a4d9 +Merge: f129731481 c5eb756760 +Author: Fredrik Adelöw +Date: Tue Dec 21 20:31:50 2021 +0100 + + Merge pull request #8570 from backstage/freben/warn-less-aight + + Fix two small browser console warnings + +commit 20b96aa6db91f163775bd3a372f6b9466203b1fb +Author: Suzanne Daniels +Date: Tue Dec 21 20:27:25 2021 +0100 + + Prettier ^^ + + Signed-off-by: Suzanne Daniels + +commit a719c54a0b0af82960239363d317a1682fd03bff +Merge: e643a59dca bf29e57324 +Author: lukzerom +Date: Tue Dec 21 17:18:45 2021 +0100 + + merge master + + Signed-off-by: lukzerom + +commit bf29e57324eb7cfce218b4ad43e816ad6e7e8c3a +Merge: 2140643512 f129731481 +Author: Łukasz Żeromski <55348672+lukzerom@users.noreply.github.com> +Date: Tue Dec 21 17:18:15 2021 +0100 + + Merge branch 'backstage:master' into core-components-docs-update + +commit e643a59dca04a24cebe661c62c62fb4c1f75bd17 +Author: lukzerom +Date: Tue Dec 21 17:16:05 2021 +0100 + + PR fixes + + Signed-off-by: lukzerom + +commit c5eb756760af95451446a0fcc00f52a8235511e1 +Author: Fredrik Adelöw +Date: Tue Dec 21 17:00:57 2021 +0100 + + Fix a small browser console warning + + Signed-off-by: Fredrik Adelöw + +commit f1297314818a3b0dc4781b681a7362601cd654dd +Merge: 56386f6b2d 610614a06d +Author: Fredrik Adelöw +Date: Tue Dec 21 16:47:14 2021 +0100 + + Merge pull request #8538 from obabativavmware/export-k8s-backend-client + + Includes an export for KubernetesBackendClient + +commit 56386f6b2d9f1424ae9acfd482acaeb0dd8c47b0 +Merge: a3982a0208 5fdc8df0e8 +Author: Johan Haals +Date: Tue Dec 21 16:27:01 2021 +0100 + + Merge pull request #8545 from backstage/rugvip/bundleconf + + cli: make config available in index.html template + +commit a3982a020827008075b452dd95d8938ed78a058d +Merge: 90b1c72aaa 6d36220ef2 +Author: Fredrik Adelöw +Date: Tue Dec 21 16:11:38 2021 +0100 + + Merge pull request #8544 from kuangp/fix/welcomeTitle + + fix(WelcomeTitle): use non-deprecated IdentityApi methods + +commit 90b1c72aaa07bc486007dc3f48f038347b247893 +Merge: faf2254214 a08be1cd8d +Author: Fredrik Adelöw +Date: Tue Dec 21 15:08:16 2021 +0100 + + Merge pull request #8201 from mufaddal7/plugin/new-relic-dashboard + + Plugin/new relic dashboard + +commit a08be1cd8d99fa9273cb97154ba12144f2673c97 +Merge: 6d532419cc 5d5744dae8 +Author: mufaddal motiwala +Date: Tue Dec 21 18:52:44 2021 +0530 + + Merge branch 'plugin/new-relic-dashboard' of https://github.com/mufaddal7/backstage-1 into plugin/new-relic-dashboard + +commit 6d532419cc248cdfa0cc7b3269d3a1ea6a6d4ddb +Author: mufaddal motiwala +Date: Tue Dec 21 18:52:31 2021 +0530 + + removed deprecated description from the plugin + + Signed-off-by: mufaddal motiwala + +commit faf22542148fd79713c833b0da2e08d4b335f850 +Merge: f5873e841e 8c25c3ea5b +Author: Eric Peterson +Date: Tue Dec 21 14:16:11 2021 +0100 + + Merge pull request #8564 from backstage/bug/techdocs-cache-rec-deploy + + [TechDocs] Allow cache in recommended deployment mode + +commit 5d5744dae809c7c7d6f590f9fa587c961f831cc0 +Author: mufaddal motiwala +Date: Tue Dec 21 18:39:21 2021 +0530 + + add the correct array type + + Signed-off-by: mufaddal motiwala + +commit 928142523dc19e9bafa9a06264170b8e64ed8388 +Author: mufaddal motiwala +Date: Tue Dec 21 18:36:01 2021 +0530 + + made replace 'pdf' regex case insensitive + + Signed-off-by: mufaddal motiwala + +commit de8aa3afd5dddacd1b0a6ef830a77ac4b3590a9e +Author: mufaddal motiwala +Date: Tue Dec 21 18:29:58 2021 +0530 + + link added in missing annotation button + + Signed-off-by: mufaddal motiwala + +commit 5ef436b659f73d1f3e59d05e9ac3e2a0ee5cebee +Author: mufaddal motiwala +Date: Tue Dec 21 18:27:42 2021 +0530 + + readme file changes + + Signed-off-by: mufaddal motiwala + +commit f5873e841e4ce164dd5347e255b7709de666f30d +Merge: 048c2e9fd6 165b156c25 +Author: Fredrik Adelöw +Date: Tue Dec 21 13:46:30 2021 +0100 + + Merge pull request #8562 from backstage/freben/fetchnesss + + Better API docs link for the fetch api + +commit 1d260170907fb0cef2a4fc07e143919036897b6e +Author: jean-philippe.blary +Date: Tue Dec 21 13:42:20 2021 +0100 + + fix(cli): skip findPackages if not inside a monorepo + + Signed-off-by: jean-philippe.blary + +commit 048c2e9fd655a194103675c729681792e9c4e0f7 +Merge: 0d225b04ab 10e5f9d10c +Author: Fredrik Adelöw +Date: Tue Dec 21 13:39:29 2021 +0100 + + Merge pull request #8563 from backstage/freben/mount-state + + Do not `setState` when unmounted in `OverflowTooltip` + +commit 0d225b04ab7318273e1ca71df0432e822f76304f +Merge: 2d6f65ea2f a195284c7b +Author: Patrik Oldsberg +Date: Tue Dec 21 13:36:53 2021 +0100 + + Merge pull request #8524 from backstage/mob/storageapi + + core-plugin-api: refactor StorageApi to better cater to async storage implementations + +commit ebed29d928130bac63e5bdf463846431b29c5610 +Author: MT Lewis +Date: Tue Dec 21 11:19:46 2021 +0000 + + backend-common: changeset clarification + + Signed-off-by: MT Lewis + +commit 70281a475b44d28d26626cf002d68a5433ac9aa3 +Author: MT Lewis +Date: Tue Dec 21 10:49:06 2021 +0000 + + permission-react: add changeset for IdentityPermissionApi.create signature change + + Signed-off-by: MT Lewis + +commit 8c25c3ea5bba6855c072180d5dd59a7f6510ce92 +Author: Eric Peterson +Date: Tue Dec 21 12:02:45 2021 +0100 + + Allow TechDocs cache in recommended deployment mode. + + Signed-off-by: Eric Peterson + +commit 10e5f9d10c99f06553d280adfeaab474349be109 +Author: Fredrik Adelöw +Date: Tue Dec 21 11:54:02 2021 +0100 + + Do not `setState` when unmounted in `OverflowTooltip` + + Signed-off-by: Fredrik Adelöw + +commit f80c7232aeb38e7079d627104498e41dbbea5832 +Author: MT Lewis +Date: Tue Dec 21 10:45:16 2021 +0000 + + permission-node: expand ServerPermissionClient changeset + + Signed-off-by: MT Lewis + +commit 482e4a4acd3bfffc70a03ff2c5d877565052ddfb +Author: MT Lewis +Date: Tue Dec 21 10:42:11 2021 +0000 + + permission-common: upgrade changeset to minor bump and describe breaking change + + Signed-off-by: MT Lewis + +commit 1e49c23eb74ff853677872165a61ba7c5fd58f12 +Author: MT Lewis +Date: Tue Dec 21 10:29:32 2021 +0000 + + app-defaults: add changeset for inclusion of permission api in default apis + + Signed-off-by: MT Lewis + +commit 165b156c25bfbed9c03800f3e279b4870fcd8023 +Author: Fredrik Adelöw +Date: Tue Dec 21 11:29:10 2021 +0100 + + Better API docs link for the fetch api + + Signed-off-by: Fredrik Adelöw + +commit 6fe4f20cbdff7d60fdb1e57d94dadb2c66ce00f6 +Author: MT Lewis +Date: Tue Dec 21 10:18:22 2021 +0000 + + backend-common: expand secret generation changeset + + Signed-off-by: MT Lewis + +commit e5703a34829635733bd66c0c54e36c7b6bd59741 +Author: Johan Haals +Date: Tue Dec 21 11:21:04 2021 +0100 + + Add fetch examples + + Co-authored-by: Fredrik Adelöw + Signed-off-by: Johan Haals + +commit 4320aea8794f200f7b8a2d26e55c44d73b497eb5 +Author: MT Lewis +Date: Tue Dec 21 10:16:50 2021 +0000 + + docs: add backend-to-backend auth tutorial to microsite + + Signed-off-by: MT Lewis + +commit c1c7116f4b88e8fb13a97b99793fd636aa4bf74f +Author: MT Lewis +Date: Tue Dec 21 10:08:19 2021 +0000 + + backend-common: improve error message in ServerTokenManager + + Signed-off-by: MT Lewis + +commit bc9a205b864bb9fdde0b904ebc63faf9de8ea286 +Author: MT Lewis +Date: Tue Dec 21 09:50:54 2021 +0000 + + backend-common: remove isSecure property in favour of a property on the NoopServerTokenManager + + Signed-off-by: MT Lewis + +commit 20d10b57d6373b09510fbe964427849c613a1890 +Author: MT Lewis +Date: Tue Dec 21 09:46:22 2021 +0000 + + permission-node: rename static create method to fromConfig + + Signed-off-by: MT Lewis + +commit a195284c7b545d49d326147750e1ce3d151beeb8 +Author: Patrik Oldsberg +Date: Thu Dec 16 23:24:18 2021 +0100 + + api report updates and changests for StorageApi refactor + + Signed-off-by: Patrik Oldsberg + +commit 281bac6f0c2cd538518868d5eb5a5c911af55816 +Author: Patrik Oldsberg +Date: Thu Dec 16 17:11:39 2021 +0100 + + catalog-react: explicit type for storageApi.get + + Signed-off-by: Patrik Oldsberg + +commit 0b01baf309bbf9b730c826f394f08272c6806f2f +Author: Patrik Oldsberg +Date: Thu Dec 16 15:26:39 2021 +0100 + + test-utils: update MockStorageApi + + Signed-off-by: Patrik Oldsberg + +commit a283b7396f6c0a117e63394edd26ed4892b2a0fb +Author: Patrik Oldsberg +Date: Thu Dec 16 15:23:30 2021 +0100 + + core-app-api: update WebStorage implementation and drop immidiate emit + + Co-authored-by: Fredrik Adelöw + Co-authored-by: blam + Co-authored-by: Johan Haals + Signed-off-by: Patrik Oldsberg + +commit 61fa5d0171042155b7077ebfd782097c32fd3be8 +Author: Patrik Oldsberg +Date: Thu Dec 16 11:52:49 2021 +0100 + + core-app-api: add tests for new StorageApi design + + Co-authored-by: Fredrik Adelöw + Co-authored-by: blam + Co-authored-by: Johan Haals + Signed-off-by: Patrik Oldsberg + +commit 78fa85cfa726774be4958dd7a3691f3c84a5c558 +Author: Patrik Oldsberg +Date: Thu Dec 16 11:06:57 2021 +0100 + + core-plugin-api: redesign StorageApi to add .snapshot() and new observe behavior + + Co-authored-by: Fredrik Adelöw + Co-authored-by: Johan Haals + Signed-off-by: Patrik Oldsberg + +commit 2d6f65ea2f446b966480531072384a682fb45452 +Merge: 20659e7223 5c53c87e54 +Author: Fredrik Adelöw +Date: Tue Dec 21 10:26:53 2021 +0100 + + Merge pull request #8561 from backstage/freben/adr + + Frontmatter fixup for ADRs + +commit 2140643512d701f5cc0683a64182eab360765b5b +Merge: 73a91e25f9 b975484fac +Author: lukzerom +Date: Tue Dec 21 10:13:41 2021 +0100 + + conflict fixed + + Signed-off-by: lukzerom + +commit 20659e7223bba918dc5879665d8316b87af818a1 +Merge: b975484fac 4c269c7c23 +Author: Ben Lambert +Date: Tue Dec 21 10:10:55 2021 +0100 + + Merge pull request #8437 from brethubbard/master + + scaffolder: add Markdown default field + +commit 5c53c87e54645ede66b280710e0b4786e1583277 +Author: Fredrik Adelöw +Date: Tue Dec 21 10:06:42 2021 +0100 + + Frontmatter fixup for ADRs + + Signed-off-by: Fredrik Adelöw + +commit f2bbca8dcf563d4a7ddd6d7a55c1c355c47b3a1a +Author: Suzanne Daniels +Date: Tue Dec 21 09:59:31 2021 +0100 + + Linking to part two, fixing spelling & script colorizing + + Signed-off-by: Suzanne Daniels + +commit 160d6b71e93f98b3a75b0f0fb6d763d7d5b3f004 +Merge: 32d733fbf1 b975484fac +Author: Suzanne Daniels +Date: Tue Dec 21 09:47:47 2021 +0100 + + Merge branch 'backstage:master' into suuus/docs-2 + +commit fbc20dc18e82a7c558408b297256bba3402957e6 +Author: Johan Haals +Date: Tue Dec 21 09:15:16 2021 +0100 + + ADR: Use node-fetch for data fetching + + Signed-off-by: Johan Haals + +commit b975484facad6cb213d2e5bce0e6c4f058b3b646 +Merge: a8c31c407e 518ddc00bc +Author: Fredrik Adelöw +Date: Tue Dec 21 09:15:09 2021 +0100 + + Merge pull request #8550 from backstage/freben/session-schema + + Validate persisted session info on both save and load + +commit a8c31c407e7d865aedda3c3a34c8da0dfeb65eb3 +Merge: 146cb50862 58d07a070c +Author: Fredrik Adelöw +Date: Tue Dec 21 09:15:00 2021 +0100 + + Merge pull request #8530 from backstage/dependabot/npm_and_yarn/axios-0.24.0 + + build(deps): bump axios from 0.21.4 to 0.24.0 + +commit 146cb50862c912174a9b4e1e2c9879d8f5fa7c09 +Merge: d0523cec56 b24828d4dd +Author: Johan Haals +Date: Tue Dec 21 08:14:52 2021 +0100 + + Merge pull request #8549 from backstage/jhaals/moar-labels + + label changes to techdocs, docs, microsite and auth folders + +commit d0523cec56ef493889e298dc0b3c0d1276e158fb +Merge: 15acd11b93 2847cd8234 +Author: Fredrik Adelöw +Date: Tue Dec 21 08:10:15 2021 +0100 + + Merge pull request #8156 from WarlenRodrigues/fixing_link_somponents_usage + + Fixed Link components usage. Now, all links use the Backstage's Link c… + +commit 15acd11b935e8d79faedfc9300bbef8362c25a73 +Merge: d4aeaa8461 3c878433d9 +Author: Fredrik Adelöw +Date: Tue Dec 21 08:08:23 2021 +0100 + + Merge pull request #8557 from backstage/dependabot/npm_and_yarn/find-process-1.4.7 + + build(deps-dev): bump find-process from 1.4.5 to 1.4.7 + +commit d4aeaa8461ad918f07069391ff80d36631b137a4 +Merge: 3bffb68943 2928eeda77 +Author: Fredrik Adelöw +Date: Tue Dec 21 08:08:02 2021 +0100 + + Merge pull request #8488 from cmpadden/remove-deprecations + + Remove Deprecations (release-2021-01-28, 2021-06-01, 2021-10-28, 2021-11-18) + +commit 58d07a070c57c5fcfa1cc6482c88f25efd6778ae +Author: Fredrik Adelöw +Date: Tue Dec 21 08:02:50 2021 +0100 + + add changeset + + Signed-off-by: Fredrik Adelöw + +commit 3bffb6894316b8e717a7636f8919a861a5cf3169 +Merge: 906d2b28cd e0cfcce9f9 +Author: Fredrik Adelöw +Date: Tue Dec 21 08:00:46 2021 +0100 + + Merge pull request #8519 from cmpadden/codeowner-airflow + + Code Owner: apache-airflow + +commit 3c878433d9efc52e41ba6a3745a7e34cee8b3825 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Tue Dec 21 04:10:15 2021 +0000 + + build(deps-dev): bump find-process from 1.4.5 to 1.4.7 + + Bumps [find-process](https://github.com/yibn2008/find-process) from 1.4.5 to 1.4.7. + - [Release notes](https://github.com/yibn2008/find-process/releases) + - [Changelog](https://github.com/yibn2008/find-process/blob/master/HISTORY.md) + - [Commits](https://github.com/yibn2008/find-process/compare/1.4.5...1.4.7) + + --- + updated-dependencies: + - dependency-name: find-process + dependency-type: direct:development + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit 906d2b28cdd0c5b65a712f23d0400ced7c61b235 +Merge: 6a0094bbde bac830188d +Author: Himanshu Mishra +Date: Tue Dec 21 00:33:31 2021 +0530 + + Merge pull request #8552 from fengypants/wrapped + +commit 6a0094bbde34ad942f49a136888675a88fb8c046 +Merge: 9e18e6b025 675578a4b3 +Author: Fredrik Adelöw +Date: Mon Dec 20 19:57:58 2021 +0100 + + Merge pull request #8496 from lykkeaxlin/bazaar-workflow-changes + + [Bazaar] Optional linkage to an Entity + +commit 2847cd82346a1bf5fca77c870a52064cc1fed069 +Author: Fredrik Adelöw +Date: Fri Dec 17 10:13:02 2021 +0100 + + some final cleanup + + Signed-off-by: Fredrik Adelöw + +commit 2928eeda77765581252260412cbbbbf632c5edfc +Author: Colton Padden +Date: Mon Dec 20 13:20:31 2021 -0500 + + make id required in createRouteRef config + + Signed-off-by: Colton Padden + +commit 7a4bd2ceac88766bf50fda699ea7e6bf52e239e6 +Author: WarlenRodrigues +Date: Thu Nov 25 10:07:20 2021 -0300 + + added changeset + + Signed-off-by: WarlenRodrigues + +commit 22bf2da9342ce24c0ce7eaf8dcc3a2ae5f0b7165 +Author: WarlenRodrigues +Date: Thu Nov 18 21:48:00 2021 -0300 + + Fied Link components usage. Now, all links use the Backstage's Link component + + Signed-off-by: WarlenRodrigues + +commit cb278fa3ad601f59312412eaa729638012ab4cca +Author: Colton Padden +Date: Mon Dec 20 13:16:52 2021 -0500 + + make Provider required in AppTheme + + Signed-off-by: Colton Padden + +commit 9e18e6b02570b2aa69be982fcbd4745d98f10c40 +Merge: 0a1f09835d de8b27572f +Author: Fredrik Adelöw +Date: Mon Dec 20 19:14:45 2021 +0100 + + Merge pull request #8447 from brunopenso/master + + TechRadar - urlTarget new attribute + +commit bac830188df64013b6b51735958b2c8d34da4648 +Author: Jeff Feng +Date: Mon Dec 20 13:11:50 2021 -0500 + + Fixing broken image link + + Renamed/replaced image file, updated link reference in post. + + Signed-off-by: Jeff Feng + +commit febd4d89983c5e8a82594191bba2571bd3202087 +Author: Jeff Feng +Date: Mon Dec 20 12:59:23 2021 -0500 + + Update vocab.txt with "Gource" + + Missed one of the terms. Added "Gource". + + Signed-off-by: Jeff Feng + +commit 48a060a8643ac2063b21e5349777bef67a9c62ae +Author: Jeff Feng +Date: Mon Dec 20 12:56:07 2021 -0500 + + Update vocab.txt for Wrapped post + + Added 6 terms from the Wrapped blog post. Also, noticed the term 'Firestore' was not in alphabetical order, moved it from the bottom of the list. + + Signed-off-by: Jeff Feng + +commit de8b27572f87048db2d46ecd3fa495af1a812816 +Author: Fredrik Adelöw +Date: Mon Dec 20 17:23:07 2021 +0100 + + fixup for review + + Signed-off-by: Fredrik Adelöw + +commit c829631b4af3ee18fe2e8b52563a49e5ba73257b +Author: MT Lewis +Date: Mon Dec 20 17:34:25 2021 +0000 + + permission-node: use filename import in ServerPermissionClient test suite + + Signed-off-by: MT Lewis + +commit 487468c17e1e94ce4e1f08697d6c3d388604194b +Author: Jeff Feng +Date: Mon Dec 20 12:30:58 2021 -0500 + + Add Wrapped 2021 blog post + + Celebrating the year's accomplishments with stats and thoughts from the maintainers. + + Signed-off-by: Jeff Feng + +commit 0a1f09835d6daf9bb64c75a6b8d32b6c73d50308 +Merge: 4fbff018de e2f35adc7a +Author: Ainhoa +Date: Mon Dec 20 16:30:46 2021 +0000 + + Merge pull request #8467 from ainhoaL/install-recipe-plugin-deps + + backstage-cli install: add plugin dependencies to experimentalInstallationRecipe + +commit ff5ff57883b71f255d0c9890aae7fbeae9a0ca58 +Author: Jason Nguyen +Date: Thu Dec 9 19:32:35 2021 -0700 + + EntityPicker: option for disabling arbitrary values + + This enables scenarios when a user must select an existing entity. + To maintain behavior for existing EntityPicker usages, the default behavior allows arbitrary values. + + Co-authored-by: Bret Hubbard + + Signed-off-by: Jason Nguyen + +commit c50aa5236ea00cf10c1e4a78e5e994ea059ed022 +Author: Bruno Fuzetti Penso +Date: Fri Dec 10 11:21:41 2021 -0300 + + add documentation + + Signed-off-by: Bruno Fuzetti Penso + +commit 11b7761914108f8e3e169c042af1491237c890df +Author: Bruno Fuzetti Penso +Date: Fri Dec 10 11:16:42 2021 -0300 + + changeset + + Signed-off-by: Bruno Fuzetti Penso + +commit 257cad74ca0ef9108e4cd1c2da7d7084143efef1 +Author: Bruno Fuzetti Penso +Date: Fri Dec 10 11:08:36 2021 -0300 + + description + + Signed-off-by: Bruno Fuzetti Penso + +commit 5e0879da2bf1ad7b83ee067ba82d5ab779a4167e +Author: Bruno Fuzetti Penso +Date: Fri Dec 10 11:07:13 2021 -0300 + + refacotr + + Signed-off-by: Bruno Fuzetti Penso + +commit b341771b91fc9c570862101349bed0b2c3815f80 +Author: Bruno Fuzetti Penso +Date: Fri Dec 10 11:00:09 2021 -0300 + + fix modal behaviour + + Signed-off-by: Bruno Fuzetti Penso + +commit 9a5212fef95027ac734be740cfaf4cb60fbf2fad +Author: Bruno Fuzetti Penso +Date: Fri Dec 10 10:34:08 2021 -0300 + + url target attribute + + Signed-off-by: Bruno Fuzetti Penso + +commit b365a96b4c8d1ad0da2cd9ba7c0e772648d48114 +Author: Bruno Fuzetti Penso +Date: Fri Dec 10 09:00:26 2021 -0300 + + add urlTarget attribute + + Signed-off-by: Bruno Fuzetti Penso + +commit e50a24b46da24be7eb55ba1c78f780ebe53b4fc8 +Author: Bruno Fuzetti Penso +Date: Fri Dec 10 08:58:51 2021 -0300 + + add samples data with the urlTarget attribute + + Signed-off-by: Bruno Fuzetti Penso + +commit d6fe397227206d1c04faa02e9d13530723ab6d19 +Author: mufaddal motiwala +Date: Mon Dec 20 21:14:35 2021 +0530 + + const url added outside the return scope + + Signed-off-by: mufaddal motiwala + +commit 4fbff018de9fa44adcb9da8ba35dc00a807dbd1a +Merge: c3a0c97461 7eeb65fd77 +Author: Fredrik Adelöw +Date: Mon Dec 20 16:35:59 2021 +0100 + + Merge pull request #8443 from dehamzah/export-props-icon-in-sidebarsearch + + Export Icon Props for SidebarSearch and SidebarSearchModal Component + +commit d57c4ef15601fedb535712481d5f4b32197df627 +Author: Philipp Hugenroth +Date: Mon Dec 20 16:23:36 2021 +0100 + + Move ExpandButton to Items & handle expanded as pinned + + Signed-off-by: Philipp Hugenroth + +commit b24828d4dd8f44e8a4943f0918e5b08696864de8 +Author: Johan Haals +Date: Mon Dec 20 16:09:42 2021 +0100 + + add more auth directories + + Signed-off-by: Johan Haals + +commit 7eeb65fd77053fb2ce9dfa1df3bab426215bfc39 +Author: Fredrik Adelöw +Date: Mon Dec 20 16:06:16 2021 +0100 + + fix review comments + + Signed-off-by: Fredrik Adelöw + +commit e2f35adc7acd719234f1e2d7beb40a19f7b5710a +Author: Ainhoa Larumbe +Date: Mon Dec 20 16:03:06 2021 +0100 + + clearer code in install command + + Signed-off-by: Ainhoa Larumbe + +commit b2d67bde044a332f1db034b7ef3f0669d598211a +Author: Brian Fletcher +Date: Mon Dec 20 13:54:19 2021 +0000 + + adds factory type for creds provider and rename default + + Signed-off-by: Brian Fletcher + +commit f89b2f73a0eae72248a829509cdeabf640d570dd +Author: Johan Haals +Date: Mon Dec 20 13:31:26 2021 +0100 + + label changes to techdocs, docs, microsite and auth folders + + Signed-off-by: Johan Haals + +commit 518ddc00bc38b2eeb820acb6c6e4d83c14a17811 +Author: Fredrik Adelöw +Date: Mon Dec 20 12:11:14 2021 +0100 + + Validate persisted session info on both save and load + + Signed-off-by: Fredrik Adelöw + +commit 1c7dec1fea8e6df9aa2878cb238e74ef8c8efc55 +Merge: 30e3fbb34b c3a0c97461 +Author: djamaile +Date: Mon Dec 20 13:28:48 2021 +0100 + + Merge branch 'backstage:master' into master + +commit 4faf47fc9d91e980665f403edd2aa09d64c7aa7c +Author: Philipp Hugenroth +Date: Mon Dec 20 12:33:58 2021 +0100 + + Reduce rerendering caused by useMediaQuery & fix expand button + + Signed-off-by: Philipp Hugenroth + +commit 61008c8136e1137e7b6b19121ea1a9bb806f6fd5 +Author: mufaddal motiwala +Date: Mon Dec 20 16:58:17 2021 +0530 + + fixed createComponentExtension , renamed EntityNewRelicDashboardsCard , EntityNewRelicDashboardsContent + + Signed-off-by: mufaddal motiwala + +commit 6984c4988a8e4bf9c3451b8de39efc286582278c +Author: Brian Fletcher +Date: Mon Dec 20 11:05:58 2021 +0000 + + moves types and interfaces to specific types file + + Signed-off-by: Brian Fletcher + +commit 2da5bb948456efc0b0172ee103447a6197fe883e +Author: mufaddal motiwala +Date: Mon Dec 20 16:33:15 2021 +0530 + + removed useNewRelicDashboardEntity hook + + Signed-off-by: mufaddal motiwala + +commit 706f3d6a96d11c84326e729beaa29ac99f99fcd4 +Author: mufaddal motiwala +Date: Mon Dec 20 14:54:26 2021 +0530 + + added dependency list in useAsync + + Signed-off-by: mufaddal motiwala + +commit 5010cc6566c89636216fa04ceb18cd0dced7c2af +Author: mufaddal motiwala +Date: Mon Dec 20 14:17:19 2021 +0530 + + Replace Alert with ErrorPanel + + Signed-off-by: mufaddal motiwala + +commit 11d4ee492d7be78e570136697ccea8e26a876f66 +Author: mufaddal motiwala +Date: Mon Dec 20 13:56:57 2021 +0530 + + removed all occurences of any + + Signed-off-by: mufaddal motiwala + +commit b60c08c46bb039156df2d6e45cfa6930ebe82eaf +Merge: 78fd1ffdb2 9ff0f1e76d +Author: Philipp Hugenroth +Date: Mon Dec 20 09:21:36 2021 +0100 + + Merge branch 'master' into mobile-sidebar + + Signed-off-by: Philipp Hugenroth + +commit 996120684fef8e888a8bda2b0600cc50cf5dfe1c +Author: mufaddal motiwala +Date: Mon Dec 20 13:23:11 2021 +0530 + + changed default dashboard duration to one month + + Signed-off-by: mufaddal motiwala + +commit 72a80e33738f8747c7ccb25704258e16aa6fd8f1 +Author: mufaddal motiwala +Date: Mon Dec 20 13:21:41 2021 +0530 + + renamed Number to number(lowercase) + + Signed-off-by: mufaddal motiwala + +commit c3a0c9746121f128c0a2ce75cf1513e3a529250f +Merge: f5fdee16c1 01e1f746f1 +Author: Johan Haals +Date: Mon Dec 20 08:49:53 2021 +0100 + + Merge pull request #8537 from goenning/go/update-docs + + Update scaffolder docs based on new backstage structure + +commit 78a8e9aaaaf7216a860e59879ccfdbbd40e13e8b +Author: mufaddal motiwala +Date: Mon Dec 20 13:12:04 2021 +0530 + + removed unused Grid + + Signed-off-by: mufaddal motiwala + +commit 3d26fb1606d284bc95e0a2f796e0722761ae52e6 +Author: mufaddal motiwala +Date: Mon Dec 20 13:07:51 2021 +0530 + + renamed String to string (lowercase) + + Signed-off-by: mufaddal motiwala + +commit baa1ee1de93434190c94a0b111c1ce7921148f69 +Author: mufaddal motiwala +Date: Mon Dec 20 12:58:49 2021 +0530 + + remove target and rel + + Signed-off-by: mufaddal motiwala + +commit 51acf9c226d278d9a7f3393b677c5fec9044d763 +Author: mufaddal motiwala +Date: Mon Dec 20 12:57:07 2021 +0530 + + removed extra grid + + Signed-off-by: mufaddal motiwala + +commit 66483c97d2c6bcab67b5336ad7534055486f2657 +Author: mufaddal motiwala +Date: Mon Dec 20 12:49:38 2021 +0530 + + added type to useState + + Signed-off-by: mufaddal motiwala + +commit 7ca8725460556c1b0a5bd42637fdeb021569ff63 +Author: mufaddal motiwala +Date: Mon Dec 20 12:19:51 2021 +0530 + + renamed newRelicDashboardAPI + + Signed-off-by: mufaddal motiwala + +commit 539a1b7cc19ba6e371def557edc6fc950bad0bce +Author: mufaddal motiwala +Date: Mon Dec 20 12:16:19 2021 +0530 + + renamed newRelicDashboardApiRef + + Signed-off-by: mufaddal motiwala + +commit 6481dfacd9ae83c2776fe7e26f3120bc83bb4eb0 +Author: mufaddal motiwala +Date: Mon Dec 20 12:02:22 2021 +0530 + + remove line comments + + Signed-off-by: mufaddal motiwala + +commit 77e7b56688b4ea232f8390e34fa70207dfc7a161 +Author: mufaddal motiwala +Date: Mon Dec 20 12:01:17 2021 +0530 + + add Response Error from backstage/erros + + Signed-off-by: mufaddal motiwala + +commit 7caba057c84e61a2ff39eb879121a7716c15374c +Author: mufaddal motiwala +Date: Mon Dec 20 11:50:52 2021 +0530 + + add NEWRELIC_GUID_ANNOTATION in index + + Signed-off-by: mufaddal motiwala + +commit 5fdc8df0e81320f0ac20aa597b311b671a8847fc +Author: Patrik Oldsberg +Date: Sun Dec 19 13:46:14 2021 +0100 + + cli: make config available in index.html template + + Signed-off-by: Patrik Oldsberg + +commit 342292a4575cf626d80e61443480e3b503a8c214 +Author: mufaddal motiwala +Date: Sun Dec 19 16:40:09 2021 +0530 + + private readonly added and removed unused baseURL + + Signed-off-by: mufaddal motiwala + +commit e37cad2673d3782da7677c8170b9049d365b6b65 +Author: mufaddal motiwala +Date: Sun Dec 19 16:35:38 2021 +0530 + + renamed NEWRELIC_GUID to NEWRELIC_GUID_ANNOTATION + + Signed-off-by: mufaddal motiwala + +commit f5fdee16c135166330fc2091838f96fb0d90e725 +Merge: 8a986a3e04 d03ee9e28f +Author: Fredrik Adelöw +Date: Sun Dec 19 11:50:29 2021 +0100 + + Merge pull request #8500 from nodify-at/master + + feature: add crumbIssuer option to jenkins and improved the UI + +commit 473cc1ab886978b5ccbe0a9829989749f1ee6f85 +Author: mufaddal motiwala +Date: Sun Dec 19 16:17:09 2021 +0530 + + fixed target URL in API + + Signed-off-by: mufaddal motiwala + +commit d4f01b20cd3e28a1d62845bc6e63fd9ef1e86a16 +Author: mufaddal motiwala +Date: Sun Dec 19 16:10:46 2021 +0530 + + Update plugins/newrelic-dashboard/README.md + + Signed-off-by: mufaddal motiwala + +commit d03ee9e28f0c32e6ad36ddca4eb7adbe592f74ae +Author: Hasan Ozdemir <21654050+nodify-at@users.noreply.github.com> +Date: Sat Dec 18 19:10:15 2021 +0100 + + feature: remove instanceof check from CITable, add @backstage/errors to jenkins plugin to resolve eslint related issues + + Signed-off-by: Hasan Ozdemir <21654050+nodify-at@users.noreply.github.com> + +commit 6d36220ef2c1f6b46fc628517b465d09f529b7d3 +Author: Phil Kuang +Date: Fri Dec 17 14:34:43 2021 -0500 + + fix(WelcomeTitle): use non-deprecated IdentityApi methods + + Signed-off-by: Phil Kuang + +commit e654134d229121a559c2356590089931a790d58b +Author: Colton Padden +Date: Fri Dec 17 15:14:16 2021 -0500 + + remove unused reference to OldIconComponent + + Signed-off-by: Colton Padden + +commit 80d4435e3736fee0f4a376ff988df86cd7cf74d0 +Author: Colton Padden +Date: Wed Dec 15 21:52:09 2021 -0500 + + removed documentation links to the @backstage/core-app-api#createApp + + Signed-off-by: Colton Padden + +commit ec3c47bee6b106a1743fc8c0ab24639cea4a3322 +Author: Colton Padden +Date: Wed Dec 15 21:50:53 2021 -0500 + + reintroduce check that provider is not null + + Signed-off-by: Colton Padden + +commit df8ee362882826cde937ee60b1126262211f01fc +Author: Colton Padden +Date: Wed Dec 15 21:31:13 2021 -0500 + + Implemented feedback to changesets, theme provider, and core-imports test + + - Removed validation logic for `appTheme.Provider` as type checking should be enough + - Replaced `createApp` with `createSpecializedApp` in `core-imports.test.ts` + - Upped changeset level from patch to minor and made minor verbiage tweaks + + Signed-off-by: Colton Padden + +commit 35b03e9dba2feda26a5a39749b417bb299772d25 +Author: Colton Padden +Date: Wed Dec 15 20:17:07 2021 -0500 + + Remove improperly labelled deprecation of withLogCollector + + Signed-off-by: Colton Padden + +commit e4974087570784d729b7678914c716af71fc2072 +Author: Colton Padden +Date: Wed Dec 15 13:59:11 2021 -0500 + + remove creatApp from core-import test because of updated package resolution + + Signed-off-by: Colton Padden + +commit cdf2c76a399e0bb86ca1e1f951db6e53b1159d1c +Author: Colton Padden +Date: Wed Dec 15 13:52:11 2021 -0500 + + release-2021-11-18 packages/core-app-api/src/apis/implementations/auth/* + + Signed-off-by: Colton Padden + +commit 0cad4e741f14308df256699915b26e6f51897029 +Author: Colton Padden +Date: Wed Dec 15 12:50:10 2021 -0500 + + release-2021-11-18 packages/core-app-api/src/app/types.ts:209 + + Signed-off-by: Colton Padden + +commit 17de72e406ec73b19e35f5a00ef24ce741e9729f +Author: Colton Padden +Date: Wed Dec 15 12:42:07 2021 -0500 + + update docs reference from @backstage/core-app-api#createApp to backstage/app-defaults#createApp + + Signed-off-by: Colton Padden + +commit 68f8b10ccd505539e60c94c52fc5be781da071f5 +Author: Colton Padden +Date: Wed Dec 15 10:12:31 2021 -0500 + + include changeset for `theme` removal of `AppTheme` + + Signed-off-by: Colton Padden + +commit b3605da81ce0ec8dbcc7a03b41192cf7bcf6c207 +Author: Colton Padden +Date: Wed Dec 15 10:11:32 2021 -0500 + + release-2021-11-18 packages/core-app-api/src/app/createApp.tsx:23,32 + + Signed-off-by: Colton Padden + +commit 5d6684f0df0516cdc0ec315cfdfd78db4bbf7fd7 +Author: Colton Padden +Date: Wed Dec 15 09:18:17 2021 -0500 + + release-2021-11-18 packages/core-plugin-api/src/apis/definitions/AppThemeApi.ts:45 + + Signed-off-by: Colton Padden + +commit c24bae00855e57bd56ba95d79f8428090da28fbb +Author: Colton Padden +Date: Wed Dec 15 08:57:02 2021 -0500 + + release-2021-11-18 packages/core-plugin-api/src/apis/definitions/ErrorApi.ts:34,50 + + Signed-off-by: Colton Padden + +commit f6722d245848c06bd9c8466d1864c63389a1bd10 +Author: Colton Padden +Date: Tue Dec 14 19:48:53 2021 -0500 + + add changesets for core-plugin-api, test-utils, and config-loader + + Signed-off-by: Colton Padden + +commit c90d26133f439c6fa0c5be414038a2f4f6b462c3 +Author: Colton Padden +Date: Tue Dec 14 18:31:42 2021 -0500 + + remove API ref description from serviceApiRef.test.ts + + Signed-off-by: Colton Padden + +commit ead7c922faeed9877d31a2668113e255b63f1b8f +Author: Colton Padden +Date: Tue Dec 14 17:56:32 2021 -0500 + + build api-reports with removed deprecations + + Signed-off-by: Colton Padden + +commit 24d466c373017010b60a8a27fa3f7654c9ec9866 +Author: Colton Padden +Date: Tue Dec 14 15:05:38 2021 -0500 + + release-2021-10-28 packages/test-utils/src/testUtils/msw/index.ts:18 + + Signed-off-by: Colton Padden + +commit eba9d2415f32e1f74e598479adf8de9d055ac562 +Author: Colton Padden +Date: Tue Dec 14 15:01:20 2021 -0500 + + release-2021-10-28 packages/core-plugin-api/src/deprecatedTypes.ts:27,35,49 + + Signed-off-by: Colton Padden + +commit 19e336ed09b43302e7ff9f2ccc949f445a2312f4 +Author: Colton Padden +Date: Tue Dec 14 14:32:46 2021 -0500 + + release-2021-06-01 packages/core-plugin-api/src/routing/RouteRef.ts:118,120,122 docs + + Signed-off-by: Colton Padden + +commit 46b84f79f83ded5c8f1b711195b5f416ef08e38a +Author: Colton Padden +Date: Tue Dec 14 14:27:41 2021 -0500 + + release-2021-06-01 packages/core-plugin-api/src/routing/RouteRef.ts:118,120,122 + + Signed-off-by: Colton Padden + +commit 864fd4f3e08fa8a75f9bb5c33325e5d6f451ebea +Author: Colton Padden +Date: Tue Dec 14 14:11:01 2021 -0500 + + release-2021-06-01 packages/core-plugin-api/src/apis/system/ApiRef.ts:27 docs + + Signed-off-by: Colton Padden + +commit 345dcea56085bd89d3f7b28ac042049e06a13ea1 +Author: Colton Padden +Date: Tue Dec 14 14:03:55 2021 -0500 + + release-2021-06-01 packages/core-plugin-api/src/apis/system/ApiRef.ts:27 + + Signed-off-by: Colton Padden + +commit e56c95a9412f90ccbc7f575be3b694a12a09c3e9 +Author: Colton Padden +Date: Tue Dec 14 13:39:17 2021 -0500 + + release-2021-01-28 packages/config-loader/src/loader.ts:70 + + Remove reference to `env?: string;` and usages in `loader.test.ts` + + Signed-off-by: Colton Padden + +commit 8a986a3e0499ec21720e629d2451ae584581cece +Merge: 6ae3e64b14 7e889bfb30 +Author: Fredrik Adelöw +Date: Fri Dec 17 20:25:11 2021 +0100 + + Merge pull request #8521 from reinoudk/fix-settings-page + + fix(user-settings): use non-deprecated IdentityApi methods + +commit f898c014ca2ec4eab0b9458c077f18897785fdb5 +Author: Joon Park +Date: Fri Dec 17 15:32:09 2021 +0000 + + Add explicit instance variable to denote the given token manager's scope of authentication + + Signed-off-by: Joon Park + +commit 0e8ec6d97402d292431939f410618e57e57a9a1d +Author: Joon Park +Date: Fri Dec 17 14:19:34 2021 +0000 + + Rename all the things + + Signed-off-by: Joon Park + +commit d1801d716689051d7ce92bded8ac6823150a061a +Author: Joon Park +Date: Tue Dec 14 16:28:05 2021 +0000 + + Refactor ServerPermissionClient away from inheritance + + Signed-off-by: Joon Park + +commit 816e0e04f90b27a253f672fcbda1be445043eebf +Author: Joon Park +Date: Tue Dec 14 15:56:06 2021 +0000 + + Address various comments round 1 + + Signed-off-by: Joon Park + +commit 24dce3ca434123ec90701aa91e58373f142c6a00 +Author: Joon Park +Date: Mon Dec 13 14:10:10 2021 +0000 + + Reintroduce noop token manager and refactor ServerPermissionClient + + Signed-off-by: Joon Park + +commit ea96ce244960e7c25eeabf2a7f115935f4bc1f8f +Author: Joon Park +Date: Mon Dec 13 11:07:23 2021 +0000 + + Change ServerTokenManager method name back to fromConfig + + Signed-off-by: Joon Park + +commit 2f8a9b665f8e410ec073f58b1b20b9205fdcb7c3 +Author: Joon Park +Date: Thu Dec 9 17:19:15 2021 +0000 + + Separate changesets + + Signed-off-by: Joon Park + +commit 366ca3ebfbaaa321b0ed7708822dd675164ee082 +Author: Joon Park +Date: Wed Dec 8 17:01:48 2021 +0000 + + Fix ts error + + Signed-off-by: Joon Park + +commit b3c67c7197292f471634389ccf92b51a51f1a7dc +Author: Joon Park +Date: Wed Dec 8 16:29:11 2021 +0000 + + Remove noop from create app template + + Signed-off-by: Joon Park + +commit abb7616345c98709b83a61d8e91dac1e16a1ba5c +Author: Joon Park +Date: Tue Dec 7 15:47:19 2021 +0000 + + Add changeset and docs. + + Signed-off-by: Joon Park + +commit f786dc81407772b8b7ad1e60069dd58fca648792 +Author: Joon Park +Date: Mon Dec 6 18:12:07 2021 +0000 + + Generate secret in development + + Signed-off-by: Joon Park + +commit 3d15cde451569a41c1ca58e7acaec45415f7f0c9 +Author: Joon Park +Date: Fri Dec 3 11:03:29 2021 +0000 + + Add permissionApiRef to app APIs + + Signed-off-by: Joon Park + +commit 6b8713df35c525edb4c1e327230ded591ee6878b +Author: Joon Park +Date: Thu Dec 2 10:26:44 2021 +0000 + + Create ServerPermissionClient and add it to example backend + + Signed-off-by: Joon Park + +commit 610614a06d06f389f1be8de5a51c6b297bb0e902 +Author: Omar Babativa +Date: Fri Dec 17 09:51:01 2021 -0500 + + Includes an export for KubernetesBackendClient + + Signed-off-by: Omar Babativa + +commit 01e1f746f1e70621f48e87bfd33553efc6481519 +Author: goenning +Date: Fri Dec 17 15:10:48 2021 +0000 + + update docs + + Signed-off-by: goenning + +commit 6ae3e64b14b48d19511c5d34d0166fc9e208830a +Merge: 21393dd443 ff9ace4d2a +Author: Ben Lambert +Date: Fri Dec 17 16:09:55 2021 +0100 + + Merge pull request #8536 from backstage/blam/notice + + Added maintainer status notes + +commit ff9ace4d2a903469c205e4b3061683c078b74f8b +Author: blam +Date: Fri Dec 17 15:39:07 2021 +0100 + + chore: added some readme notes + + Signed-off-by: blam + +commit 21393dd4433328269a0b90647d85dd26282d70dd +Merge: 3e79c4bc58 24a67e3e2e +Author: Patrik Oldsberg +Date: Fri Dec 17 15:14:35 2021 +0100 + + Merge pull request #8526 from backstage/rugvip/auth-compat + + auth-backend: fix identity fallback to populate userEntityRef correctly + +commit 7e889bfb30c100a592623cea69d2f5a6869cd3d4 +Author: Reinoud Kruithof <2184455+reinoudk@users.noreply.github.com> +Date: Fri Dec 17 15:12:30 2021 +0100 + + fix(user-settings): prevent using undefined value + + Signed-off-by: Reinoud Kruithof <2184455+reinoudk@users.noreply.github.com> + +commit 73a91e25f9429aea9530ab4bf72c09223ae63c42 +Author: lukzerom +Date: Fri Dec 17 12:41:08 2021 +0100 + + added changeset + + Signed-off-by: lukzerom + +commit 7eb1983900fd1b3980a28e0d65dc1434c0e8ae4b +Author: lukzerom +Date: Fri Dec 17 12:34:51 2021 +0100 + + docs generated + + Signed-off-by: lukzerom + +commit 90f5a457b52289da265552826b54a510631ca575 +Author: lukzerom +Date: Fri Dec 17 12:26:52 2021 +0100 + + Docs update + + Signed-off-by: lukzerom + +commit 7228b18c0ffdde85aefb73786902156ce820a47b +Author: Brian Fletcher +Date: Fri Dec 17 11:25:01 2021 +0000 + + create an interface for gh creds provider + + We plan to build on this later to allow the credentials provider to + be passed into the scaffolder tasks, the processors, and the url + readers. + + Signed-off-by: Brian Fletcher + +commit e3e39feb25e49ab3bb60d97b8b9f8759972fc2f5 +Author: lukzerom +Date: Fri Dec 17 12:17:53 2021 +0100 + + Core components descriptions update to I + + Signed-off-by: lukzerom + +commit 8814c893e3bd3efde71a3efac32c844d661f7472 +Author: Jacob Wejendorp +Date: Fri Dec 17 11:59:29 2021 +0100 + + feat: add logging when skipping checks + + Signed-off-by: Jacob Wejendorp + +commit 91c353da3a60023ab5a345730956b5256e3b6760 +Author: Jacob Wejendorp +Date: Thu Dec 16 17:26:53 2021 +0100 + + Apply suggestions from code review + + Co-authored-by: Marley <55280588+marleypowell@users.noreply.github.com> + Signed-off-by: Jacob Wejendorp + +commit 375ed38b167156c529fe5e8db441ec3a62b79ef7 +Author: Reinoud Kruithof <2184455+reinoudk@users.noreply.github.com> +Date: Fri Dec 17 11:31:51 2021 +0100 + + feat(user-settings): use useAsync and return loading status + + Signed-off-by: Reinoud Kruithof <2184455+reinoudk@users.noreply.github.com> + +commit 047d92db5e185480ee7edcc9f5815f3cc8adb98e +Author: Hasan Ozdemir <21654050+nodify-at@users.noreply.github.com> +Date: Fri Dec 17 11:38:19 2021 +0100 + + improve success and fail messages, re-generated api reports + + Signed-off-by: Hasan Ozdemir <21654050+nodify-at@users.noreply.github.com> + +commit ea82f340a3b8e9628967dab98cc3f843b850e120 +Author: lukzerom +Date: Fri Dec 17 10:41:38 2021 +0100 + + Docs update + + Signed-off-by: lukzerom + +commit 3e79c4bc58813158210ac454e7f861f7bc93ad3d +Merge: 95753e686f 85b844585c +Author: Fredrik Adelöw +Date: Fri Dec 17 10:34:32 2021 +0100 + + Merge pull request #8406 from prkeshri/7340-remote-config-fix + + 7340 remote config fix + +commit 95753e686f9f350577e4f98a2405af71937832ca +Merge: 597c79f001 7e0b8b0cde +Author: Fredrik Adelöw +Date: Fri Dec 17 09:48:39 2021 +0100 + + Merge pull request #8509 from cmpadden/remove-deprecations-release-2021-11-11 + + Remove Deprecations (release-2021-11-11) + +commit c9f71267092ae33f487bef1eac4015229ea47e1f +Author: lukzerom +Date: Fri Dec 17 09:06:58 2021 +0100 + + Card Tab docs update + + Signed-off-by: lukzerom + +commit 597c79f0017296351900d36e96256fe7d777db98 +Merge: fde22197c0 76676422a6 +Author: Johan Haals +Date: Fri Dec 17 08:52:13 2021 +0100 + + Merge pull request #8529 from backstage/dependabot/npm_and_yarn/sucrase-3.20.3 + + build(deps): bump sucrase from 3.20.2 to 3.20.3 + +commit ef6f0fca5548e5369da9ae8dbe9a8ffb94b7e8b1 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Fri Dec 17 04:11:19 2021 +0000 + + build(deps): bump axios from 0.21.4 to 0.24.0 + + Bumps [axios](https://github.com/axios/axios) from 0.21.4 to 0.24.0. + - [Release notes](https://github.com/axios/axios/releases) + - [Changelog](https://github.com/axios/axios/blob/master/CHANGELOG.md) + - [Commits](https://github.com/axios/axios/compare/v0.21.4...v0.24.0) + + --- + updated-dependencies: + - dependency-name: axios + dependency-type: direct:production + update-type: version-update:semver-minor + ... + + Signed-off-by: dependabot[bot] + +commit 76676422a6b50f3d6f76fff00ed7f2b8dd302323 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Fri Dec 17 04:08:23 2021 +0000 + + build(deps): bump sucrase from 3.20.2 to 3.20.3 + + Bumps [sucrase](https://github.com/alangpierce/sucrase) from 3.20.2 to 3.20.3. + - [Release notes](https://github.com/alangpierce/sucrase/releases) + - [Changelog](https://github.com/alangpierce/sucrase/blob/main/CHANGELOG.md) + - [Commits](https://github.com/alangpierce/sucrase/commits) + + --- + updated-dependencies: + - dependency-name: sucrase + dependency-type: direct:production + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit bc3695fe7ab6e3fbb88caf4f66ec15407e5fcee0 +Author: Hasan Ozdemir <21654050+nodify-at@users.noreply.github.com> +Date: Fri Dec 17 02:39:54 2021 +0100 + + remobe base response model and throw an error if jenkins:rebuild fails + + Signed-off-by: Hasan Ozdemir <21654050+nodify-at@users.noreply.github.com> + +commit 24a67e3e2e327792a1c6733eeff9c7fd721af090 +Author: Patrik Oldsberg +Date: Fri Dec 17 00:48:03 2021 +0100 + + auth-backend: fix identity fallback to populate userEntityRef correctly + + Signed-off-by: Patrik Oldsberg + +commit b594bab67dae08c635d826ede84527b67972ee09 +Author: lukzerom +Date: Thu Dec 16 22:43:05 2021 +0100 + + Breadcrumbs and icon update + + Signed-off-by: lukzerom + +commit d26904b8365a4e092e769406ed23b3d4d8d0279d +Author: lukzerom +Date: Thu Dec 16 22:04:02 2021 +0100 + + BottomLink description + + Signed-off-by: lukzerom + +commit 85b844585c83e8d29b45d1f0f6272b7b471d7bd9 +Author: Fredrik Adelöw +Date: Thu Dec 16 21:27:21 2021 +0100 + + fixup api report + + Signed-off-by: Fredrik Adelöw + +commit fde22197c0c845da5d13729be8cffe2ccc6be942 +Merge: b2b317a66e 651d1e7696 +Author: Fredrik Adelöw +Date: Thu Dec 16 21:19:15 2021 +0100 + + Merge pull request #8487 from RoadieHQ/search-location-protocol-whitelist + + Drop Search Results with potentially unsafe location values + +commit 43333a0fa2e527b9dfb2e871366e403eae32eff8 +Author: mufaddal motiwala +Date: Fri Dec 17 01:22:16 2021 +0530 + + package.json updated + + Signed-off-by: mufaddal motiwala + +commit c40c2fe1e00d22d05d745f669ec976ab473cb018 +Author: mufaddal motiwala +Date: Fri Dec 17 01:11:58 2021 +0530 + + unused packages removed + + Signed-off-by: mufaddal motiwala + +commit ff2f1b856b5bbd622531630c1722484c81d38149 +Merge: a0bf0cbe7a b2b317a66e +Author: mufaddal motiwala +Date: Fri Dec 17 00:30:47 2021 +0530 + + Merge branch 'master' of https://github.com/mufaddal7/backstage-1 into plugin/new-relic-dashboard + + Signed-off-by: mufaddal motiwala + +commit b2b317a66edc92fd1055b872a6986f8f2d6cab76 +Merge: 1e7af3e74f 6f263c2cbc +Author: Fredrik Adelöw +Date: Thu Dec 16 19:50:39 2021 +0100 + + Merge pull request #8474 from austina-lin/pluralize-team-ownership-section + + Fix bug in OwnershipCard component where text wasn't correctly plur… + +commit a0bf0cbe7af5d75f581e41cc6b5063ed687fdca4 +Author: mufaddal motiwala +Date: Thu Dec 16 23:57:58 2021 +0530 + + updated api-report + + Signed-off-by: mufaddal motiwala + +commit 1e7af3e74f214e4d1efbc92b5bff35d779cc04e0 +Merge: 0a9501ca1b fc8fc02510 +Author: Fredrik Adelöw +Date: Thu Dec 16 19:20:30 2021 +0100 + + Merge pull request #8499 from angeliski/add-more-rails-options + + add more options to rails new + +commit 0a9501ca1b8f89181d9b3d44298b09141f88e9cd +Merge: 393f107893 6b7b4b3fa2 +Author: Fredrik Adelöw +Date: Thu Dec 16 19:11:21 2021 +0100 + + Merge pull request #8512 from ArveSystad/patch-1 + + Correct keyword for microsoftAuthApiRef + +commit cc0f94218a9704ab20e4286c133194ac736a7a42 +Merge: b64e318c80 393f107893 +Author: Hasan Ozdemir <21654050+nodify-at@users.noreply.github.com> +Date: Thu Dec 16 18:08:03 2021 +0100 + + Merge branch 'backstage:master' into master + +commit 2a374057f59bc94240d9a2ddc3434478e2f3dfac +Author: Reinoud Kruithof <2184455+reinoudk@users.noreply.github.com> +Date: Thu Dec 16 16:49:59 2021 +0100 + + fix(user-settings): use non-deprecated IdentityApi methods + + This fixes the undefined identity error that is being thrown on the user-settings page. + + Signed-off-by: Reinoud Kruithof <2184455+reinoudk@users.noreply.github.com> + +commit e0cfcce9f946cb59d5af3296ebddb4d7013886e9 +Author: Colton Padden +Date: Thu Dec 16 10:45:19 2021 -0500 + + add @cmpadden as codeowner of apache-airflow + + Signed-off-by: Colton Padden + +commit 30d3623bf16cbbe1fe94fef083f4ff6a43a1db0a +Author: Marley Powell +Date: Thu Dec 16 15:24:54 2021 +0000 + + test: Updated router unit tests. + + Signed-off-by: Marley Powell + +commit 17da4e34c3d5edc0a8d15560bdb4678114c45bcd +Author: Marley Powell +Date: Thu Dec 16 14:53:08 2021 +0000 + + chore: Updated changeset + + Signed-off-by: Marley Powell + +commit 6ff4408fa694afa00a137b4d9efe343db94d5bba +Author: Jacob Wejendorp +Date: Thu Dec 16 15:26:43 2021 +0100 + + chore: add changeset to tech-insights changes + + Signed-off-by: Jacob Wejendorp + +commit b8d7602cfaf3e0e6cb84487caa0e5dde2c4dbe2c +Author: Jacob Wejendorp +Date: Thu Dec 16 15:41:58 2021 +0100 + + test: add tests for JsonRulesEngineFactChecker changes + + Signed-off-by: Jacob Wejendorp + +commit a2ed2c2d69c42de42a547abd745629be70ee2bf4 +Author: Marley Powell +Date: Thu Dec 16 14:50:03 2021 +0000 + + chore: Generated changeset + + Signed-off-by: Marley Powell + +commit 7d84a9aafb1d543e559f2c747671bad4a8b4a589 +Author: Marley Powell +Date: Thu Dec 16 14:47:41 2021 +0000 + + chore: Updated API reports. + + Signed-off-by: Marley Powell + +commit da8f2d2091633a3376f9b4a25f536c58db403a2c +Author: Marley Powell +Date: Thu Dec 16 14:39:26 2021 +0000 + + feat: Updated `useFilterProcessor` to provide teamIds for `AssignedToCurrentUsersTeams` and `CreatedByCurrentUsersTeams` filters. + + Signed-off-by: Marley Powell + +commit 562670a7cbf9c1ab451f66c1ebf088d282c45d0e +Author: Marley Powell +Date: Thu Dec 16 14:38:13 2021 +0000 + + feat: Created `useUserTeamIds` hook. + + Signed-off-by: Marley Powell + +commit 393f107893ec4ab4903d9022b8c3d0b6d0c4970d +Author: Joon Park +Date: Thu Dec 16 14:35:46 2021 +0000 + + Create catalog permissions. (#8403) + + These permissions will be used to integrate catalog with the permissions framework. + + Signed-off-by: Joon Park + +commit 060a39e4d8701bd9d3d7132e108bc2bf5b896656 +Author: Marley Powell +Date: Thu Dec 16 14:35:21 2021 +0000 + + feat: Created `PullRequestsDashboardProvider` for resolving team and team member relations + + Signed-off-by: Marley Powell + +commit cf7fc2b41a8ae84c26f96ce7ea2f9e053bc23afa +Author: Jacob Wejendorp +Date: Thu Dec 16 14:52:03 2021 +0100 + + fix: handle empty checks in tech-insights scorecard + + Show a warning about missing data instead of crashing if checks return empty. + + Signed-off-by: Jacob Wejendorp + +commit c88d8339a3c7ed3d088cc5491e340653cae1bbec +Author: Jacob Wejendorp +Date: Thu Dec 16 14:40:31 2021 +0100 + + fix: allow partial evaluation of checks in jsonfc factchecker + + This change should fix the entity check endpoint when some facts are + missing, e.g. the retriever has not run yet. + + Signed-off-by: Jacob Wejendorp + +commit 7e0b8b0cde98c9c3059bb03a3dcb93842fe32407 +Author: Colton Padden +Date: Thu Dec 16 08:31:44 2021 -0500 + + bumped changesets for deprecations from patch to minor + + Signed-off-by: Colton Padden + +commit 62d77827e1520bf7fe33ab21cbd8863845bfb12d +Author: Colton Padden +Date: Wed Dec 15 20:10:35 2021 -0500 + + remove associated tests for deprecated Keyboard.js + + Signed-off-by: Colton Padden + +commit 67d6cb3c7ea4cb5381ceb61770487949d60260ff +Author: Colton Padden +Date: Wed Dec 15 18:48:46 2021 -0500 + + remove deprecations packages/config-loader/src/loader.ts:63 + + Signed-off-by: Colton Padden + +commit 6b69b448624fc4355576a0aeeaf2a040858a1ce8 +Author: Colton Padden +Date: Wed Dec 15 17:31:32 2021 -0500 + + remove deprecations packages/core-plugin-api/src/apis/system/types.ts:38,55 + + Signed-off-by: Colton Padden + +commit 771b9c07fe6c3fd62fa07d983fb64f418b45ce5b +Author: Colton Padden +Date: Wed Dec 15 17:18:46 2021 -0500 + + remove deprecations packages/test-utils/src/testUtils/Keyboard.js:28 + + Signed-off-by: Colton Padden + +commit 26cbea8e691e51277b8a3d2e9127288e4d02aae0 +Author: Colton Padden +Date: Wed Dec 15 17:05:29 2021 -0500 + + remove deprecations packages/core-plugin-api/src/routing/types.ts:147,152,157 + + Signed-off-by: Colton Padden + +commit 7e9f1118dc8aef168247bacdfc8921f03023750b +Author: Colton Padden +Date: Wed Dec 15 17:05:13 2021 -0500 + + remove deprecations packages/core-plugin-api/src/routing/RouteRef.ts:27 + + Signed-off-by: Colton Padden + +commit b64e318c80571b94aa334ccc8dffecdcc5e71d3b +Merge: 51ee84204d 351fc58fe2 +Author: Hasan Ozdemir <21654050+nodify-at@users.noreply.github.com> +Date: Thu Dec 16 14:22:04 2021 +0100 + + Merge branch 'backstage:master' into master + +commit 51ee84204d27eefc7d2d44fd1a7b92cc964a00bb +Author: Hasan Ozdemir <21654050+nodify-at@users.noreply.github.com> +Date: Thu Dec 16 14:05:51 2021 +0100 + + fix typo. on changesets + + Signed-off-by: Hasan Ozdemir <21654050+nodify-at@users.noreply.github.com> + +commit 351fc58fe23562464985b869d4919bf9a200fd41 +Merge: 9c2e6bb86a 5463c03b35 +Author: Fredrik Adelöw +Date: Thu Dec 16 13:35:25 2021 +0100 + + Merge pull request #8507 from backstage/freben/paging + + Add support for passing paging parameters to the getEntities call of the catalog client + +commit 9c2e6bb86a381e7ad8ec25dda0ad259758be49e4 +Merge: 230df8b5ec 3fa31ec84a +Author: Fredrik Adelöw +Date: Thu Dec 16 11:30:37 2021 +0100 + + Merge pull request #6399 from backstage/freben/fetch-api + + Add `fetchApiRef` which implements fetch, plus Backstage token header when available + +commit 230df8b5ec540ed3c2073f7250b66ec62f9d3d30 +Merge: 2c10e8a19d 8d9ab4d7c1 +Author: Ben Lambert +Date: Thu Dec 16 11:26:42 2021 +0100 + + Merge pull request #8438 from mufaddal7/feature/OwnedEntityPicker + + add OwnedEntityPicker field in plugin/scaffolder + +commit 2c10e8a19d72069bc2a5847001db82ab14821b39 +Merge: f082d9034b b040d62e8e +Author: Ben Lambert +Date: Thu Dec 16 10:56:40 2021 +0100 + + Merge pull request #8454 from lukzerom/select-changes-1 + + Select and Autocomplete select readonly when one option available + +commit f082d9034b1b3ac001c4144762debabb140d15cc +Merge: 7c4334a912 62915c3688 +Author: Ben Lambert +Date: Thu Dec 16 10:55:49 2021 +0100 + + Merge pull request #8486 from RoadieHQ/cronjobs-docs + + add cronjobs to list of required permissions + +commit 7c4334a9120115286b7a4233c9c6d2b45a742e68 +Merge: cd8764d8ac b80e25bf1d +Author: Johan Haals +Date: Thu Dec 16 10:40:49 2021 +0100 + + Merge pull request #8495 from backstage/jhaals/label + + Label PRs + +commit cd8764d8ac5058249d92984c397c0c32c25ed941 +Merge: 9ff0f1e76d 68b2a31a05 +Author: Ben Lambert +Date: Thu Dec 16 10:33:55 2021 +0100 + + Merge pull request #8498 from julioz/patch-1 + + Update Airflow plugin README + +commit 6b7b4b3fa2fe42c0eceb411e61b04df98b9e9dbe +Author: Arve Systad <290195+ArveSystad@users.noreply.github.com> +Date: Thu Dec 16 10:33:10 2021 +0100 + + Correct keyword for microsoftAuthApiRef + + Makes for a little less guesswork in the middle of things. + +commit 8e9d7e92009fd69b96dfd5d6b9f0a6ac3ca49c76 +Author: Dede Hamzah +Date: Thu Dec 16 16:31:54 2021 +0700 + + Exporting the type + + Signed-off-by: Dede Hamzah + +commit 9ff0f1e76d4510edda2f1b1b3e58cba168a76190 (tag: v0.59.0, tag: release-2021-12-16) +Merge: 7bd536c985 ef6a039e07 +Author: Fredrik Adelöw +Date: Thu Dec 16 10:22:51 2021 +0100 + + Merge pull request #8431 from backstage/changeset-release/master + + Version Packages + +commit 5463c03b35cc815cb619ae92a79203ce6030290e +Author: Fredrik Adelöw +Date: Wed Dec 15 22:47:52 2021 +0100 + + Add support for passing paging parameters to the getEntities call of the catalog client + + Signed-off-by: Fredrik Adelöw + +commit b80e25bf1d3b31bdb6ebe56cd627bd2c6d20b8c6 +Author: Johan Haals +Date: Thu Dec 16 10:03:27 2021 +0100 + + add search packages to matching + + Signed-off-by: Johan Haals + +commit ef6a039e074f656f9671dbd50100f644f6dcae2e +Author: github-actions[bot] +Date: Thu Dec 16 08:56:38 2021 +0000 + + Version Packages + +commit 7bd536c985d63713f173585b7f3260c7193c988d +Merge: 64a5a09a51 18d4f500af +Author: Patrik Oldsberg +Date: Thu Dec 16 09:50:58 2021 +0100 + + Merge pull request #8508 from backstage/mob/expalytics + + core-plugin-api: mark AnalyticsApi as experimental + +commit 64a5a09a519c50363fccbf4d8e8c0c704540f3cb +Merge: 11151655a0 6e5f662187 +Author: Johan Haals +Date: Thu Dec 16 08:52:11 2021 +0100 + + Merge pull request #8511 from backstage/dependabot/npm_and_yarn/mock-fs-5.1.2 + + build(deps): bump mock-fs from 5.1.0 to 5.1.2 + +commit e603515ebac28e629d0c5846562cfef2a3cc79c5 +Author: mufaddal motiwala +Date: Thu Dec 16 11:07:57 2021 +0530 + + removed the deprecated prop + + Signed-off-by: mufaddal motiwala + +commit e1711f188547d21d108be6efdfa8c189722d102b +Author: mufaddal motiwala +Date: Thu Dec 16 11:07:01 2021 +0530 + + renamed the plugin + + Signed-off-by: mufaddal motiwala + +commit 6e5f6621876f4c20c040f73aeba702ea16cdcaa9 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Thu Dec 16 04:20:04 2021 +0000 + + build(deps): bump mock-fs from 5.1.0 to 5.1.2 + + Bumps [mock-fs](https://github.com/tschaub/mock-fs) from 5.1.0 to 5.1.2. + - [Release notes](https://github.com/tschaub/mock-fs/releases) + - [Changelog](https://github.com/tschaub/mock-fs/blob/main/changelog.md) + - [Commits](https://github.com/tschaub/mock-fs/compare/v5.1.0...v5.1.2) + + --- + updated-dependencies: + - dependency-name: mock-fs + dependency-type: direct:production + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit 4c269c7c23fcd8c8b1b6d22648ba526ffffca1bc +Author: Bret Hubbard +Date: Wed Dec 15 12:42:07 2021 -0700 + + scaffolder: add changeset + + Signed-off-by: Bret Hubbard + +commit 111dcaeb9ab2761437278b52296410218fd0311e +Author: Bret Hubbard +Date: Wed Dec 15 12:38:03 2021 -0700 + + scaffolder: add DescriptionField override to support markdown + + Signed-off-by: Bret Hubbard + +commit 3fa31ec84a4b564397d410228df25a9c75dac2d2 +Author: Fredrik Adelöw +Date: Tue Dec 14 14:11:30 2021 +0100 + + address comments + + Signed-off-by: Fredrik Adelöw + +commit afb7f31840d506c270035d1b53e5f4ede553e1bc +Author: Fredrik Adelöw +Date: Thu Dec 9 15:10:20 2021 +0100 + + fixed the browser behavior for BackstageProtocolResolverFetchMiddleware + + Signed-off-by: Fredrik Adelöw + +commit 7927005152203ac15b48645a9ca84536fe20ad58 +Author: Fredrik Adelöw +Date: Wed Jul 7 17:10:36 2021 +0200 + + Add `fetchApiRef` which implements fetch, plus Backstage token header when available. + + This intends to be the basis for other plugins' data fetching needs, so that they can transparently interact with the catalog and other parts of the Backstage ecosystem without explicitly having to deal with authenticating themselves. + + Signed-off-by: Fredrik Adelöw + +commit f5851c62ad1e1b1e7926db8ebf2821da342afa34 +Author: mufaddal motiwala +Date: Wed Dec 15 22:13:22 2021 +0530 + + validates yarn run diff --check + + Signed-off-by: mufaddal motiwala + +commit eb3fd85d3e558ec77999a3ee8012407617a672cd +Author: Hasan Ozdemir <21654050+nodify-at@users.noreply.github.com> +Date: Wed Dec 15 17:33:49 2021 +0100 + + feature: add crumbIssuer option to jenkins (optional) configuration, improve the UI to show a notification after executing the action: re-build + + Signed-off-by: Hasan Ozdemir <21654050+nodify-at@users.noreply.github.com> + +commit 68b2a31a0531f11c43e4db8a2de28bebd4ae399d +Author: Júlio Zynger +Date: Wed Dec 15 17:12:26 2021 +0100 + + Update Airflow plugin README + + Airflow v1 exposed an experimental API [that got dropped](https://airflow.apache.org/docs/apache-airflow/stable/deprecated-rest-api-ref.html) later on. Let's add a note to the README making explicit users of Airflow v1 won't be able to integrate with this plugin unless they update. + + Signed-off-by: Julio Zynger + +commit fc8fc025103310d1c0e4ab3ee0a7e9ae826d685b +Author: Rogerio Angeliski +Date: Wed Dec 15 13:05:39 2021 -0300 + + add more options to rails new + + Signed-off-by: Rogerio Angeliski + +commit 18d4f500afdf49c39afb62bfc0e3b038894c5253 +Author: Patrik Oldsberg +Date: Wed Dec 15 14:25:44 2021 +0100 + + core-plugin-api: mark AnalyticsApi as experimental + + Co-authored-by: Fredrik Adelöw + Signed-off-by: Patrik Oldsberg + +commit 8d9ab4d7c1da0a8ea123fbdc92fe8fc74340cc57 +Author: mufaddal motiwala +Date: Wed Dec 15 20:44:53 2021 +0530 + + removed test case + + Signed-off-by: mufaddal motiwala + +commit 6bd503c9c2e8985b7d5c64b6930ecfe24ec3a9c9 +Author: mufaddal motiwala +Date: Wed Dec 15 19:40:59 2021 +0530 + + replaced name with id + + Signed-off-by: mufaddal motiwala + +commit 060dd5d518849989f2a16e56c02ac909118e2346 +Author: mufaddal motiwala +Date: Wed Dec 15 19:40:33 2021 +0530 + + validation added + + Signed-off-by: mufaddal motiwala + +commit bb46214031e4ed6dd70015136aa85bc80ca05986 +Author: mufaddal motiwala +Date: Wed Dec 15 19:40:04 2021 +0530 + + createRoutableExtension name added + + Signed-off-by: mufaddal motiwala + +commit 11151655a014bbb4861a2007e22b4a7684e83e98 +Merge: 22354eef67 c47959856a +Author: Camila Belo +Date: Wed Dec 15 15:03:11 2021 +0100 + + Merge pull request #8147 from cowboyd/elastic-search-new-client + + Add ability to re-use search cluster configuration from ElasticSearchSearchEngine + +commit c47959856a033d1a36903199fbd9e60ef88ca4f4 +Author: Charles Lowell +Date: Wed Dec 15 15:29:14 2021 +0200 + + Don't use initializer syntax for instantiating client + + For some reason, the property initializer syntax stopped working. An + update to TypeScript? An update to Jest? Unknown, but sticking to the + less fancy constructor body to do property init seems to work. + + Signed-off-by: Charles Lowell + +commit 62915c368856695a46cb2166ee3a79c7191be861 +Author: Brian Fletcher +Date: Wed Dec 15 13:25:12 2021 +0000 + + add batch api group explanation + + Signed-off-by: Brian Fletcher + +commit 8b3f624aa50ba01f61aa61ffa8a0bb4a2746ebab +Author: Brian Fletcher +Date: Tue Dec 14 11:59:02 2021 +0000 + + adds cronjobs to vocab list + + Signed-off-by: Brian Fletcher + +commit 22354eef6701471ccac0561b28105433f396644d +Merge: 2a96b81692 6f0c850a86 +Author: Ben Lambert +Date: Wed Dec 15 13:57:08 2021 +0100 + + Merge pull request #8473 from brexhq/k8s-make-completed-green + + K8s Cronjob Style Change and UI Fix + +commit 7e5dcd96c7b3e13209a0ca13b07cef11c3a9a450 +Author: mufaddal motiwala +Date: Wed Dec 15 18:19:15 2021 +0530 + + changed major to patch + + Signed-off-by: mufaddal motiwala + +commit 2a96b8169271cdcfcbd8caed5240d5a5b40b9dca +Merge: 06403a0475 519198e273 +Author: Ben Lambert +Date: Wed Dec 15 13:42:30 2021 +0100 + + Merge pull request #8378 from hiba-aldalaty/patch/sidebar-submenu-fix + + Bug Fix: Sidebar Submenu Items should only be active when full path is active + +commit 651d1e7696f13ccba3178b2a6fb811acfdc6c116 +Author: Iain Billett +Date: Wed Dec 15 11:50:44 2021 +0000 + + Don't use discovery API + + Signed-off-by: Iain Billett + +commit 675578a4b344cf87726cbd90f3fb720fa896a6e5 +Author: Lykke Axlin +Date: Wed Dec 15 12:23:36 2021 +0100 + + update demo gif and decpendencies + + Signed-off-by: Lykke Axlin + + Co-authored-by: klaraab + +commit 58c7de3797804b903435537ac856cdbed36ac3e6 +Author: mufaddal motiwala +Date: Wed Dec 15 16:35:50 2021 +0530 + + deleted backstage.json + + Signed-off-by: mufaddal motiwala + +commit 8e5f1010df5536c5e4ba89cd42e5c7176f69ccce +Author: mufaddal motiwala +Date: Wed Dec 15 16:33:34 2021 +0530 + + edited the changeset + + Signed-off-by: mufaddal motiwala + +commit 5ad82708fd1dd7b38ae8bc4b18a7792bc3d524df +Author: mufaddal motiwala +Date: Wed Dec 15 16:28:26 2021 +0530 + + changed minor to patch + + Signed-off-by: mufaddal motiwala + +commit 1b6e709011f39206cdfc43f5ecdbf7d506ffa6fc +Merge: a9c3cc82ba 06403a0475 +Author: Lykke Axlin +Date: Wed Dec 15 11:22:13 2021 +0100 + + Merge branch 'master' of https://github.com/backstage/backstage into bazaar-workflow-changes + +commit a9c3cc82bad4706661beb4738bf8a151788924db +Author: Lykke Axlin +Date: Wed Dec 15 11:19:48 2021 +0100 + + update yarn.lock + + Signed-off-by: Lykke Axlin + + Co-authored-by: klaraab + +commit 06403a0475fcfdc1652f5b9c7a5d59877ea6e5d5 +Merge: 1acea02844 3368f27aef +Author: Ben Lambert +Date: Wed Dec 15 11:18:31 2021 +0100 + + Merge pull request #8343 from backstage/rugvip/presence + + catalog-backend: fix handling of optional locations + +commit 4ccbf8755733c2837ab1db4dc38b3077aa64381f +Merge: 26926bb7a7 1acea02844 +Author: Lykke Axlin +Date: Wed Dec 15 11:17:11 2021 +0100 + + Merge branch 'master' of https://github.com/backstage/backstage into bazaar-workflow-changes + +commit 26926bb7a7bac306c270fb910f93f7f615c6a9a3 +Author: Lykke Axlin +Date: Wed Dec 15 11:16:43 2021 +0100 + + add changeset + + Signed-off-by: Lykke Axlin + +commit 1acea028440d586f15028e032e3fda8d3a1654a8 +Merge: 9d03616a56 bd658a58b7 +Author: Ben Lambert +Date: Wed Dec 15 10:58:26 2021 +0100 + + Merge pull request #8384 from marleypowell/marley/7678-pull-request-custom-filters + + feat: Added ability to configure PR columns with parameters using filters. + +commit cafdecfc2fb54889e105254884572af40eaf2ca0 +Author: Johan Haals +Date: Wed Dec 15 10:58:15 2021 +0100 + + add packages/catalog + + Signed-off-by: Johan Haals + +commit cb65389b4804e0b6402876c93308f350e0c30f84 +Author: Johan Haals +Date: Wed Dec 15 10:54:38 2021 +0100 + + format + + Signed-off-by: Johan Haals + +commit 79ce347d0531a0d32aad864760d3ba74bc5fa071 +Merge: a7a8e05fd2 9d03616a56 +Author: Lykke Axlin +Date: Wed Dec 15 10:52:43 2021 +0100 + + Merge branch 'master' of https://github.com/backstage/backstage into bazaar-workflow-changes + +commit a6c72b0d2ce6b5a9964712d468ae40313db03670 +Author: Johan Haals +Date: Wed Dec 15 10:40:26 2021 +0100 + + Label PRs + + Signed-off-by: Johan Haals + +commit a7a8e05fd26147a8592bfcadfbbc59264954a349 +Author: Lykke Axlin +Date: Wed Dec 15 10:26:29 2021 +0100 + + cleanup + + Signed-off-by: Lykke Axlin + + Co-authored-by: klaraab + +commit 9d03616a564f8bcfb4e33307b80046d004c08534 +Merge: c3df6347f3 95284ba572 +Author: Ben Lambert +Date: Wed Dec 15 10:20:15 2021 +0100 + + Merge pull request #8456 from Oriflame/feature/ownershipcard-configurable-kind-and-type-7806 + + Ownershipcard filter configurable + +commit c3df6347f3962ffc2bfde60add4a16200f61d677 +Merge: f7fe2b3f58 5b54d63477 +Author: Ben Lambert +Date: Wed Dec 15 10:10:30 2021 +0100 + + Merge pull request #8484 from dehamzah/add-missing-overrideable-comp-sidebar + + Add Missing Overridable Components Type for SidebarSpace, SidebarSpacer, and SidebarDivider + +commit 95284ba57210aed75cf223bf96fc1bacc8b35e04 +Author: Jan Vilimek +Date: Wed Dec 15 09:45:15 2021 +0100 + + improved tests / comment + + Signed-off-by: Jan Vilimek + +commit f7fe2b3f5858a554a0890dc984729c6f259830be +Merge: 8c687e9bf5 813db5928b +Author: Patrik Oldsberg +Date: Wed Dec 15 09:33:39 2021 +0100 + + Merge pull request #8490 from backstage/mob/hidden-error-docs + + core-plugin-api: document ErrorApiErrorContext.hidden + +commit 8c687e9bf589c4fc593da21b4a4a14dc0347e877 +Merge: f8eb4d8a34 7b6b992e7a +Author: Patrik Oldsberg +Date: Wed Dec 15 09:33:19 2021 +0100 + + Merge pull request #8491 from backstage/rugvip/docfix + + docs/api-reference: fix missing content + bump to latest version of rushstack deps + +commit f8eb4d8a34ee6a816afd0836ffe6b528b2841e5f +Merge: 3a3797d858 0c09c969c7 +Author: Fredrik Adelöw +Date: Wed Dec 15 08:46:28 2021 +0100 + + Merge pull request #8492 from backstage/dependabot/npm_and_yarn/types/dagre-0.7.46 + + build(deps-dev): bump @types/dagre from 0.7.44 to 0.7.46 + +commit 0c09c969c7c4ca8b577620fc22dddd734de29441 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Wed Dec 15 04:12:30 2021 +0000 + + build(deps-dev): bump @types/dagre from 0.7.44 to 0.7.46 + + Bumps [@types/dagre](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/dagre) from 0.7.44 to 0.7.46. + - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) + - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/dagre) + + --- + updated-dependencies: + - dependency-name: "@types/dagre" + dependency-type: direct:development + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit 7b6b992e7ac40be54cd299921120b07e287deff0 +Author: Patrik Oldsberg +Date: Wed Dec 15 01:40:04 2021 +0100 + + scripts/api-extractor: remove workaround for duplicate install + + Signed-off-by: Patrik Oldsberg + +commit 12f674f60825aa2079bd756e895fc632e4742156 +Author: Patrik Oldsberg +Date: Wed Dec 15 01:39:47 2021 +0100 + + package.json: fix duplicate api-extractor installs + + Signed-off-by: Patrik Oldsberg + +commit 813db5928bf1bff5a4ee15fa63608c86c99292cc +Author: Patrik Oldsberg +Date: Wed Dec 15 01:17:58 2021 +0100 + + core-plugin-api: document ErrorApiErrorContext.hidden + + Co-authored-by: Fredrik Adelöw + Co-authored-by: Johan Haals + Signed-off-by: Patrik Oldsberg + +commit b040d62e8e2b5bb8efe2634fe1c1bb42a4f928e0 +Author: lukzerom +Date: Wed Dec 15 00:03:42 2021 +0100 + + docs update + + Signed-off-by: lukzerom + +commit 2d244da5c49903c50b91a5e49bb168daf21c4fc9 +Author: lukzerom +Date: Tue Dec 14 23:59:22 2021 +0100 + + public adnotation + + Signed-off-by: lukzerom + +commit aec8c678c8b111955af200d5d4ba584101b7fbab +Author: lukzerom +Date: Tue Dec 14 23:40:30 2021 +0100 + + selected items instead of selection + + Signed-off-by: lukzerom + +commit 8ecfac35fda4aa9bec329230cf06bd056cf05ede +Author: lukzerom +Date: Tue Dec 14 23:37:16 2021 +0100 + + patch instead of minor + + Signed-off-by: lukzerom + +commit baf39f45b52a7ece304d70c68233640aafe40077 +Author: Charles Lowell +Date: Tue Dec 14 20:49:27 2021 +0200 + + Add explainer for `newClient` to the search howto + + Signed-off-by: Charles Lowell + +commit 5515862338a5af8249d52e0e62ee2e230668d847 +Author: Charles Lowell +Date: Tue Dec 14 20:36:03 2021 +0200 + + Run api report and add minimal tsdoc. + + Signed-off-by: Charles Lowell + +commit a91c4dd05a4bd47cc72ddeab21c65b22a0a933ad +Author: Iain Billett +Date: Tue Dec 14 18:18:05 2021 +0000 + + Update create-app template + + Signed-off-by: Iain Billett + +commit 3491a36ab9bf2248e60cf10ed2436bd003ae2c5a +Author: mufaddal motiwala +Date: Tue Dec 14 23:45:33 2021 +0530 + + add useOwnedEntites to catalog-react + + Signed-off-by: mufaddal motiwala + +commit 60abfd536aaf070d4249f1c383a3719abb8f45ea +Author: Jan Vilimek +Date: Tue Dec 14 19:04:51 2021 +0100 + + Improved unit tests + + Signed-off-by: Jan Vilimek + +commit 801323b9230903d5de701483861e503f8f6996fe +Author: Iain Billett +Date: Tue Dec 14 17:47:48 2021 +0000 + + Api Report + + Signed-off-by: Iain Billett + +commit 3a3797d85880b29e008af3959eca5e66d0ee2d81 +Merge: 5bffa160cd 8ab8c30f1b +Author: Ben Lambert +Date: Tue Dec 14 18:41:07 2021 +0100 + + Merge pull request #8277 from Balasundaram/scaffolder-gitlab-mr-publish-v2 + + Scaffolder gitlab mr publish v2 + +commit b646a73fe048e81e21aa73c9d73ea96efa8b9032 +Author: lukzerom +Date: Tue Dec 14 18:22:52 2021 +0100 + + changeset fix + + Signed-off-by: lukzerom + +commit 14d0bc908104c7a9396859257102dbe585731643 +Author: lukzerom +Date: Tue Dec 14 18:14:11 2021 +0100 + + updated docs + + Signed-off-by: lukzerom + +commit 5c8fbcc7c06bd6e531075e566e6bd4ed05902754 +Author: lukzerom +Date: Tue Dec 14 18:09:02 2021 +0100 + + Delete old changeset + + Signed-off-by: lukzerom + +commit 31c0106a4e991f367637fba883897ce11168e902 +Author: lukzerom +Date: Tue Dec 14 17:51:02 2021 +0100 + + on change instead of on select in entitypicker + + Signed-off-by: lukzerom + +commit faaa7f009cb0645a793452710972441e3811faf1 +Author: lukzerom +Date: Tue Dec 14 17:49:16 2021 +0100 + + changed type name to select item + + Signed-off-by: lukzerom + +commit 0f15f775af22b4c8d223e92d31a682c1685d1141 +Author: Lykke Axlin +Date: Tue Dec 14 17:37:33 2021 +0100 + + updated call to get user id with new api + + Signed-off-by: Lykke Axlin + + Co-authored-by: klaraab + +commit 4ce74edaf6857a29126b10596862ecf6d98655ec +Author: Iain Billett +Date: Tue Dec 14 16:34:16 2021 +0000 + + Fix standalone server + + Signed-off-by: Iain Billett + +commit 6f263c2cbc0135f074280116e964b3dd88420e50 +Author: austinal +Date: Mon Dec 13 13:21:11 2021 -0500 + + Add changeset + + Signed-off-by: austinal + +commit 92066353970f856d437ee8f9da51f8f5cf8d032a +Author: austinal +Date: Mon Dec 13 10:49:53 2021 -0500 + + Fixed bug in OwnershipCard component where text wasn't correctly pluralized + + Signed-off-by: austinal + +commit bd658a58b7647f986a666ff85e9a193847d4de0d +Author: Marley Powell +Date: Tue Dec 14 15:40:51 2021 +0000 + + test: Added some unit test for pull request filters. + + Signed-off-by: Marley Powell + +commit cc519974963a521ea82bc89bc7b9cdf873cd596a +Author: Marley Powell +Date: Tue Dec 14 15:09:14 2021 +0000 + + chore: Updated API reports. + + Signed-off-by: Marley Powell + +commit 98e01d0f2b0677a56af39b0864d9c1545b1cad99 +Author: Marley Powell +Date: Tue Dec 14 15:04:52 2021 +0000 + + feat: Updated type exports. + + Signed-off-by: Marley Powell + +commit daf32e2c9bd184db43fd370918672ff66a1ad870 +Author: Marley Powell +Date: Tue Dec 14 15:04:09 2021 +0000 + + chore: Generated changeset. + + Signed-off-by: Marley Powell + +commit 71472b7bd8052f041f4ae78f8233757e730abe56 +Author: Charles Lowell +Date: Tue Dec 14 16:52:59 2021 +0200 + + Remove tsdoc since it is now in the guide + + Signed-off-by: Charles Lowell + +commit a41fbfe73973dc8a53f647966228a691d331d8b6 +Author: Iain Billett +Date: Tue Dec 14 09:39:27 2021 +0000 + + Search result location filtering + + Introduces filtering of unsafe search result locations. + + Signed-off-by: Iain Billett + +commit 35e3f6f52e36ca8411bd2052db8a13b964cfec36 +Author: Charles Lowell +Date: Mon Nov 22 23:50:47 2021 +0200 + + Add changes to API Report + + Signed-off-by: Charles Lowell + +commit 02e8f34c292275a803cc03471ab3e0b66a898b6b +Merge: e251bbd9a4 5bffa160cd +Author: Marley Powell +Date: Tue Dec 14 14:34:14 2021 +0000 + + Merge branch 'master' of https://github.com/backstage/backstage into marley/7678-pull-request-custom-filters + +commit 5bffa160cd3317386439ce8dfae7188aaaacd339 +Merge: 9b84f1228c 2e4bc16c4a +Author: Ben Lambert +Date: Tue Dec 14 14:49:40 2021 +0100 + + Merge pull request #8448 from Erog38/patch-1 + + containerRunner optional for createRouter + +commit 445a48e7ebca69e14599859252aaa89ca5916108 +Author: Charles Lowell +Date: Mon Nov 22 12:27:40 2021 +0200 + + 👍Use a separately maintained set of ElasticSearchClientOptions + + This completely decouples us from any particular point release of the + ElasticSearch Client + + Signed-off-by: Charles Lowell + +commit 29ca4a2b4c85effde27dcfd46bdd33b1c0c2d05c +Author: Charles Lowell +Date: Mon Nov 22 12:27:00 2021 +0200 + + 👍downgrade changset to a patch + + Signed-off-by: Charles Lowell + +commit 68512f51786d6b032ba8b4494a2f7a3c30bfa8b7 +Author: Charles Lowell +Date: Thu Nov 18 14:03:56 2021 +0200 + + Add ability to re-use search cluster configuration from engine + + Signed-off-by: Charles Lowell + +commit 5053de976c557b067c5bc30932817015ef696751 +Author: Brian Fletcher +Date: Tue Dec 14 11:43:03 2021 +0000 + + add cronjobs to list of required permissions + + Signed-off-by: Brian Fletcher + +commit 5b54d634778bc962a4e90c20d6b77aef3c9280cb +Author: Dede Hamzah +Date: Tue Dec 14 16:53:31 2021 +0700 + + Add missing api report + + Signed-off-by: Dede Hamzah + +commit 9c0265a6aa9827f0640c97c1c3ad845f4199e6d4 +Author: Dede Hamzah +Date: Tue Dec 14 16:37:13 2021 +0700 + + Update changeset to fix failed Vale + + Signed-off-by: Dede Hamzah + +commit 9b84f1228cdb67cec912dea9cc779de5db976784 +Merge: 18e22c6549 39553c1357 +Author: Johan Haals +Date: Tue Dec 14 09:32:11 2021 +0100 + + Merge pull request #8482 from backstage/dependabot/npm_and_yarn/eslint-plugin-import-2.25.3 + + build(deps): bump eslint-plugin-import from 2.22.1 to 2.25.3 + +commit 18e22c65494eaf1566499b46d396d98bbaf870fb +Merge: 2fc7ebe60c 201953b21e +Author: Johan Haals +Date: Tue Dec 14 09:31:55 2021 +0100 + + Merge pull request #8476 from backstage/Rugvip-patch-1 + + workflows/stale: bump PR close days to 5 + +commit 2fc7ebe60c5631ff769db42e1a8e9070e4910f73 +Merge: c207fdb81b b5fb3dbc9e +Author: Patrik Oldsberg +Date: Tue Dec 14 09:30:23 2021 +0100 + + Merge pull request #8481 from backstage/dependabot/npm_and_yarn/types/ldapjs-2.2.2 + + build(deps): bump @types/ldapjs from 2.2.0 to 2.2.2 + +commit cfb9f192a3b8bf8cb2615ff7a6b7581c84c79da6 +Merge: e193146c6e c207fdb81b +Author: Lykke Axlin +Date: Tue Dec 14 09:29:51 2021 +0100 + + Merge branch 'master' of https://github.com/backstage/backstage into bazaar-workflow-changes + +commit c207fdb81b18fef93dbaf3d3e0c772b9c37d7061 +Merge: 8bd3b6dbb9 2c9001fef1 +Author: Patrik Oldsberg +Date: Tue Dec 14 09:27:13 2021 +0100 + + Merge pull request #8480 from backstage/dependabot/npm_and_yarn/humanize-duration-3.27.1 + + build(deps): bump humanize-duration from 3.27.0 to 3.27.1 + +commit 1680a1c5ac061e58a0d1146310d4de10a00f33d1 +Author: Dede Hamzah +Date: Tue Dec 14 15:09:32 2021 +0700 + + Add Missing Overridable Components Type for SidebarSpace, SidebarSpacer, and SidebarDivider Components + + Signed-off-by: Dede Hamzah + +commit 09d30e5d967f38f309f999133ea6b73bb392b007 +Author: mufaddal motiwala +Date: Tue Dec 14 11:46:02 2021 +0530 + + add api-report + + Signed-off-by: mufaddal motiwala + +commit 39553c13576738a4c4de79ec92122b4db9ec6ee3 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Tue Dec 14 04:23:56 2021 +0000 + + build(deps): bump eslint-plugin-import from 2.22.1 to 2.25.3 + + Bumps [eslint-plugin-import](https://github.com/import-js/eslint-plugin-import) from 2.22.1 to 2.25.3. + - [Release notes](https://github.com/import-js/eslint-plugin-import/releases) + - [Changelog](https://github.com/import-js/eslint-plugin-import/blob/main/CHANGELOG.md) + - [Commits](https://github.com/import-js/eslint-plugin-import/compare/v2.22.1...v2.25.3) + + --- + updated-dependencies: + - dependency-name: eslint-plugin-import + dependency-type: direct:production + update-type: version-update:semver-minor + ... + + Signed-off-by: dependabot[bot] + +commit b5fb3dbc9e09ea85d4f01ca332cd6854d2177f68 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Tue Dec 14 04:23:04 2021 +0000 + + build(deps): bump @types/ldapjs from 2.2.0 to 2.2.2 + + Bumps [@types/ldapjs](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/ldapjs) from 2.2.0 to 2.2.2. + - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) + - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/ldapjs) + + --- + updated-dependencies: + - dependency-name: "@types/ldapjs" + dependency-type: direct:production + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit 2c9001fef1866365e3ef040ee672280cc8bf52e5 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Tue Dec 14 04:20:37 2021 +0000 + + build(deps): bump humanize-duration from 3.27.0 to 3.27.1 + + Bumps [humanize-duration](https://github.com/EvanHahn/HumanizeDuration.js) from 3.27.0 to 3.27.1. + - [Release notes](https://github.com/EvanHahn/HumanizeDuration.js/releases) + - [Changelog](https://github.com/EvanHahn/HumanizeDuration.js/blob/main/HISTORY.md) + - [Commits](https://github.com/EvanHahn/HumanizeDuration.js/commits) + + --- + updated-dependencies: + - dependency-name: humanize-duration + dependency-type: direct:production + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit 201953b21ebc7adc2ae5f282bcacdc84a67e0084 +Author: Patrik Oldsberg +Date: Mon Dec 13 23:26:06 2021 +0100 + + workflows/stale: bump PR close days to 5 + + Signed-off-by: Patrik Oldsberg + +commit 8bd3b6dbb975bdc67fa67cf27467a49d7f33e1e4 +Merge: ab1a69bcc3 4594ea2dab +Author: Patrik Oldsberg +Date: Mon Dec 13 23:24:55 2021 +0100 + + Merge pull request #8469 from backstage/mob/auth-renames + + core-plugin-api: rename OAuthRequest API types + +commit ab1a69bcc346f539b60fb7be4ba4b1ca2e3514fc +Merge: fa5b141de9 e7cce2b603 +Author: Camila Belo +Date: Mon Dec 13 22:46:36 2021 +0100 + + Merge pull request #8365 from kuangp/fix/techdocs + + fix(techdocsStorageClient): properly construct baseUrls + +commit 4594ea2dab62f033d288e7e8f7279438795adbdd +Author: Patrik Oldsberg +Date: Mon Dec 13 18:24:46 2021 +0100 + + catalog-react: weird api-report reordering + + Signed-off-by: Patrik Oldsberg + +commit fa5b141de94f7f1cd1ef45dcd8874e5ac09b3fdd +Merge: f0ed50adb0 fd9c1abd2c +Author: Patrik Oldsberg +Date: Mon Dec 13 18:22:41 2021 +0100 + + Merge pull request #8472 from backstage/Rugvip-patch-1 + + Delete cold-otters-prove.md + +commit bc1e2f20bd6a0f3a95aa2a755da0946bd041c1d5 +Author: Jan Vilimek +Date: Mon Dec 13 17:36:09 2021 +0100 + + unit test fixed + + Signed-off-by: Jan Vilimek + +commit 0be6cb1111b401b8171fa3342c0c9a3a45140f6d +Author: Jan Vilimek +Date: Mon Dec 13 16:17:52 2021 +0100 + + no bump for example-app + + Signed-off-by: Jan Vilimek + +commit 6f0c850a8683d461f6e19e196c74703a8537f58d +Author: Andrew Tran +Date: Mon Dec 13 10:19:07 2021 -0600 + + add changeset + + Signed-off-by: Andrew Tran + +commit a9c008780700fcb6b26f495815007afe7ea04280 +Author: Andrew Tran +Date: Mon Dec 13 10:07:59 2021 -0600 + + fix cronjobs accordion + + Signed-off-by: Andrew Tran + +commit 2321b89ad1401bcb603e7e7ed6a05afb13397b61 +Author: Andrew Tran +Date: Mon Dec 6 10:08:42 2021 -0600 + + make completed status green + + Signed-off-by: Andrew Tran + +commit 8ab8c30f1b67b720c09525500476eb21eb2cc4cf +Author: Balasundaram +Date: Mon Dec 13 11:10:20 2021 -0500 + + Adding fixes for changeset spelling + + Signed-off-by: Balasundaram + +commit f0ed50adb0d2471565ded8fdfc6b520078685737 +Merge: 23009fcb6a 63f5bc5f2c +Author: Fredrik Adelöw +Date: Mon Dec 13 16:56:56 2021 +0100 + + Merge pull request #8364 from backstage/sqlite-separate-files + + Overwrite sqlite filename per plugin + +commit fd9c1abd2c76e5a54dcaf63c25aa2604dc0d67a9 +Author: Patrik Oldsberg +Date: Mon Dec 13 16:41:49 2021 +0100 + + Delete cold-otters-prove.md + + Signed-off-by: Patrik Oldsberg + +commit 23009fcb6a04591b353a22ede141c60017a1888e +Merge: 8cf4cd928c 9b093a488a +Author: Ben Lambert +Date: Mon Dec 13 16:40:39 2021 +0100 + + Merge pull request #8323 from backstage/dependabot/npm_and_yarn/types/tar-6.1.1 + + chore(deps-dev): bump @types/tar from 4.0.5 to 6.1.1 + +commit 8cf4cd928c32f233badd97e3a1f8f919926ce542 +Merge: b3f572dd01 4f1a7d57df +Author: Ben Lambert +Date: Mon Dec 13 16:20:24 2021 +0100 + + Merge pull request #8470 from adamdmharvey/bump-action-checkout + + chore(actions): Update actions/checkout versions for FOSSA and Changeset + +commit e193146c6ea3475068823e720a683ed191c8cd81 +Merge: ad86729f5d b3f572dd01 +Author: Lykke Axlin +Date: Mon Dec 13 16:01:44 2021 +0100 + + Merge branch 'master' of https://github.com/backstage/backstage into bazaar-workflow-changes + +commit e7cce2b60385a09a57caaaae1f355cc967a7b01e +Author: Phil Kuang +Date: Fri Dec 3 15:49:52 2021 -0500 + + fix(techdocsStorageClient): properly construct baseUrls + + Signed-off-by: Phil Kuang + +commit ad86729f5db947cbb0bed65e253666ce0a850d73 +Author: Lykke Axlin +Date: Mon Dec 13 15:45:52 2021 +0100 + + made link to entity optional + + Signed-off-by: Lykke Axlin + + Co-authored-by: klaraab + +commit 9d6503e86c6e9cf07e79da82bf8f39bd141e7595 +Author: Patrik Oldsberg +Date: Mon Dec 13 15:21:09 2021 +0100 + + core-*: update usage of deprecated auth types + + Co-authored-by: Fredrik Adelöw + Co-authored-by: Johan Haals + Signed-off-by: Patrik Oldsberg + +commit 4f1a7d57df38af0ba8c07e023c511d5246d7bfd3 +Author: Adam Harvey +Date: Mon Dec 13 09:29:30 2021 -0500 + + Remove specific pin versioning + + Signed-off-by: Adam Harvey + +commit 2771d9016ed983ee38c822f3932db3d596b34dd9 +Author: Adam Harvey +Date: Mon Dec 13 09:28:56 2021 -0500 + + Bump checkout action to newest major release + + Signed-off-by: Adam Harvey + +commit b3f572dd017b449a1afd79937f43cc303ac4b524 +Merge: 90198342bc c11ce4f552 +Author: Johan Haals +Date: Mon Dec 13 15:21:18 2021 +0100 + + Merge pull request #8465 from backstage/mob/auth-apis + + core-plugin-api: deprecate some auth APIs and mark the rest experimental + +commit 760791a642e6f3b57ac6ef4dd3d43891633f0fa2 +Author: Patrik Oldsberg +Date: Mon Dec 13 14:54:27 2021 +0100 + + core-plugin-api: auth request type renames and deprecations + + Co-authored-by: Fredrik Adelöw + Co-authored-by: Johan Haals + Signed-off-by: Patrik Oldsberg + +commit dfc1110dc483bdbbafd50ef21888e6c559a20ed7 +Author: Ainhoa Larumbe +Date: Mon Dec 13 13:32:48 2021 +0000 + + add changeset + + Signed-off-by: Ainhoa Larumbe + +commit 90198342bca9996039acf1c2c561873eafcaf9fe +Merge: a223118d6a 3e92f22d2e +Author: Ben Lambert +Date: Mon Dec 13 13:35:24 2021 +0100 + + Merge pull request #8349 from backstage/rugvip/cjs + + add more explicit support for .mjs and .cjs extensions + +commit a223118d6a55fa37d979f7c11b6db010842ddb3e +Merge: 23a5e8f47a 133769ea84 +Author: Ben Lambert +Date: Mon Dec 13 13:30:57 2021 +0100 + + Merge pull request #8425 from nodify-at/master + + export typescript types for OIDC provider + +commit 9f5a08de13b0b8d925601b98e32bff49fd70b914 +Author: Jan Vilimek +Date: Mon Dec 13 13:29:33 2021 +0100 + + updated api-report + + Signed-off-by: Jan Vilimek + +commit 23a5e8f47af9a58197d574cce52c8f9f09c90168 +Merge: 7ba8e10b54 e0f5b46fcc +Author: Ben Lambert +Date: Mon Dec 13 13:27:09 2021 +0100 + + Merge pull request #8338 from backstage/rugvip/license + + snyk: ignore MPL and LGPL license warnings + +commit 7ba8e10b547c84fb0263c66524c9c4ffef2c2ec4 +Merge: 8c0f43a779 bc3544c1f2 +Author: Patrik Oldsberg +Date: Mon Dec 13 13:18:05 2021 +0100 + + Merge pull request #8460 from backstage/dependabot/npm_and_yarn/types/inquirer-8.1.3 + + build(deps-dev): bump @types/inquirer from 7.3.1 to 8.1.3 + +commit c11ce4f55256c10cf12053501645775b7c28184b +Author: Patrik Oldsberg +Date: Mon Dec 13 11:50:16 2021 +0100 + + core-app-api: deprecated Auth0Auth + + Co-authored-by: Johan Haals + Signed-off-by: Patrik Oldsberg + +commit 8a7372cfd53e74a0e5c7a2961f5e787c0d831e25 +Author: Patrik Oldsberg +Date: Mon Dec 13 11:49:08 2021 +0100 + + core-plugin-api: deprecated some auth api refs and marked the rest as experimental + + Co-authored-by: Johan Haals + Signed-off-by: Patrik Oldsberg + +commit 8c0f43a77946cf013bdee11f04b7331c5b3c6f3b +Merge: a3ec122170 6156fb8730 +Author: Ben Lambert +Date: Mon Dec 13 11:28:28 2021 +0100 + + Merge pull request #8450 from backstage/timbonicus/avoid-updating-types + + Skip updating selected types if they didn't change + +commit 8390fff862d6206f6b38bb6ad34b55f3a471fb2b +Author: Jan Vilimek +Date: Mon Dec 13 11:11:56 2021 +0100 + + entitypage: prettier + + Signed-off-by: Jan Vilimek + +commit 9ed3dfb4d5ff25c676c23a016a6901d812c4ee97 +Author: Jan Vilimek +Date: Mon Dec 13 11:11:42 2021 +0100 + + changelog:prettier + + Signed-off-by: Jan Vilimek + +commit 64dc7ed8c6568e29fb9e22c34febc2695b8172ca +Author: Jan Vilimek +Date: Mon Dec 13 11:11:20 2021 +0100 + + ownershipcard: prettier + + Signed-off-by: Jan Vilimek + +commit 54aac0c55ea51228ef7a65fea1e7be8f3d5baf5e +Author: Ainhoa Larumbe +Date: Mon Dec 13 09:52:17 2021 +0000 + + add peerPluginDependencies to install other necessary plugins + + Signed-off-by: Ainhoa Larumbe + +commit bc3544c1f298995b4487af77037b20ac182ddd40 +Author: Patrik Oldsberg +Date: Mon Dec 13 09:57:46 2021 +0100 + + Delete old-glasses-tease.md + + Signed-off-by: Patrik Oldsberg + +commit 5891a6155834ba98cb5e0ea6b74f0ce6ede473fb +Author: mufaddal motiwala +Date: Mon Dec 13 11:57:48 2021 +0530 + + add yarn.lock + + Signed-off-by: mufaddal motiwala + +commit f49c665bdae349521d2ee9ffc842e78648194bba +Merge: 5e86feaca0 a3ec122170 +Author: mufaddal motiwala +Date: Mon Dec 13 11:48:57 2021 +0530 + + Merge branch 'master' of https://github.com/mufaddal7/backstage-1 into plugin/new-relic-dashboard + +commit 4775a42c62a1dd27aa2a9026a7134c2eda2e362c +Merge: c0154e444b a3ec122170 +Author: mufaddal motiwala +Date: Mon Dec 13 11:48:37 2021 +0530 + + Merge branch 'master' of https://github.com/mufaddal7/backstage-1 into feature/OwnedEntityPicker + +commit c0154e444b1bd27ebe46e20d367101d5655aec57 +Author: mufaddal motiwala +Date: Mon Dec 13 11:31:23 2021 +0530 + + change API for fetching user owned entities + + Signed-off-by: mufaddal motiwala + +commit 88bd7ef966ede89bffde162343a886499b759f85 +Author: mufaddal motiwala +Date: Mon Dec 13 11:30:57 2021 +0530 + + add a function for fetching user owned entities + + Signed-off-by: mufaddal motiwala + +commit 157d4bf78ee9104b1c9b6ae0fe5d71c9d4c35e3d +Author: Himanshu Mishra +Date: Mon Dec 13 10:19:41 2021 +0530 + + add changeset + + Signed-off-by: Himanshu Mishra + +commit 7474124e87fe0fda42364343b74c60d598c0394d +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Mon Dec 13 04:14:45 2021 +0000 + + build(deps-dev): bump @types/inquirer from 7.3.1 to 8.1.3 + + Bumps [@types/inquirer](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/inquirer) from 7.3.1 to 8.1.3. + - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) + - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/inquirer) + + --- + updated-dependencies: + - dependency-name: "@types/inquirer" + dependency-type: direct:development + update-type: version-update:semver-major + ... + + Signed-off-by: dependabot[bot] + +commit 45ddfa099b1d5c18ce20860eceda09116d3b14e0 +Author: lukzerom +Date: Sun Dec 12 13:16:13 2021 +0100 + + added autoselect to vocab txt + + Signed-off-by: lukzerom + +commit 846773cf453aaf3e4c947f7b9dd6d03792f6b807 +Author: lukzerom +Date: Sun Dec 12 13:13:55 2021 +0100 + + added docs + + Signed-off-by: lukzerom + +commit 2fd0010a152fb1b0610e4d8c7bc0511c05a210cf +Author: Jan Vilimek +Date: Sat Dec 11 13:13:58 2021 +0100 + + revert package.json bump + + Signed-off-by: Jan Vilimek + +commit 75c47f4ee6724348260f03e74c279639e446348a +Author: Jan Vilimek +Date: Sat Dec 11 13:13:37 2021 +0100 + + revert plugin changelog + + Signed-off-by: Jan Vilimek + +commit fe86adbcd24282dfae4d4fcd9b2aeb8c4db8c390 +Author: Jan Vilimek +Date: Sat Dec 11 13:05:36 2021 +0100 + + root changelog + + Signed-off-by: Jan Vilimek + +commit 47755c2a60ffddcf94442fa3483f4c113b3eb176 +Author: Jan Vilimek +Date: Sat Dec 11 12:59:16 2021 +0100 + + package.json 0.3.31 bump + + Signed-off-by: Jan Vilimek + +commit fc2924b23e4a96c768f4234104b173261cfc0d3d +Author: Jan Vilimek +Date: Sat Dec 11 12:58:53 2021 +0100 + + org plugin changelog + + Signed-off-by: Jan Vilimek + +commit 5835456f6f52d784f778db4c919e40b6db1e645c +Author: Jan Vilimek +Date: Sat Dec 11 12:52:37 2021 +0100 + + Example for entityFilterKind + + Signed-off-by: Jan Vilimek + +commit 455da34c98ce6fc60e414ce4aec80ce1a3ac9cf6 +Author: Jan Vilimek +Date: Sat Dec 11 12:49:39 2021 +0100 + + jest tests for ownershipCard improved + + Signed-off-by: Jan Vilimek + +commit 26b04d2341739d65dc8145e8e0b3b08617757867 +Author: Jan Vilimek +Date: Sat Dec 11 12:48:14 2021 +0100 + + New arg entityFilterKind for ownershipcard + + Signed-off-by: Jan Vilimek + +commit da156f2831888a0a474f99899b11d7792b54b05d +Author: Jan Vilimek +Date: Sat Dec 11 12:46:17 2021 +0100 + + let's support also entities without spec.type + + Signed-off-by: Jan Vilimek + +commit 133769ea846331f1ce10b4f59801ce1b3842cbf8 +Author: Hasan Ozdemir <21654050+nodify-at@users.noreply.github.com> +Date: Sat Dec 11 01:45:39 2021 +0100 + + add links to docs for type BackstageSignInResult + + Signed-off-by: Hasan Ozdemir <21654050+nodify-at@users.noreply.github.com> + +commit 625240c4baa57eea9e82f3b147139edad0a9712c +Author: lukzerom +Date: Sat Dec 11 01:14:13 2021 +0100 + + clean + + Signed-off-by: lukzerom + +commit 7b5d40c2410556378abddf20e1cae0f367174e82 +Author: lukzerom +Date: Sat Dec 11 01:12:24 2021 +0100 + + changeset scaffolder + + Signed-off-by: lukzerom + +commit 16912db7b68259ffdb500be7803fbc198de11463 +Author: lukzerom +Date: Sat Dec 11 01:07:35 2021 +0100 + + Select changeset + + Signed-off-by: lukzerom + +commit 56a5466790e3b8d4cbe21e5ae861a23bcfa51d93 +Author: lukzerom +Date: Sat Dec 11 00:51:26 2021 +0100 + + eslint adjustments + + Signed-off-by: lukzerom + +commit 919ffa9b539b7f295ccea4a1217027a2e9e9f1a8 +Author: lukzerom +Date: Sat Dec 11 00:36:46 2021 +0100 + + click handler adjustment + + Signed-off-by: lukzerom + +commit 90fbd943deb1560bb9acff3c99aa217eecc0ef3c +Author: lukzerom +Date: Sat Dec 11 00:35:19 2021 +0100 + + Basic select api changes and adjustments ready + + Signed-off-by: lukzerom + +commit 6156fb87303d4a3f5f03e474d8de3ce214dc2bc8 +Author: Tim Hansen +Date: Fri Dec 10 14:38:32 2021 -0700 + + Skip updating selected types if they didn't change + + Signed-off-by: Tim Hansen + +commit 2e4bc16c4a640f5ab9e321eb11fbb2e02c04d74b +Author: Phil Gore +Date: Fri Dec 10 14:55:02 2021 -0600 + + adding scaffolder api report + + Signed-off-by: Phil Gore + +commit eec0750d8d85c2a1eaefc36c10763b5668d80561 +Author: Phil Gore +Date: Fri Dec 10 14:42:42 2021 -0600 + + making cookiecutter an optional action based on passing in containerRunner + + Signed-off-by: Phil Gore + +commit d614e1cd9a35d3289dbf8e8164a4b4c1283d11b3 +Author: Praveen Ranjan Keshri +Date: Fri Dec 10 22:53:31 2021 +0530 + + Updates post review by @Rugvip: + 1. Updated reloadIntervalSeconds example to 10 minutes + 2. Updated config load error message + 3. Fixed vocab error + + Signed-off-by: Praveen Ranjan Keshri + +commit 78fd1ffdb29511c4ac72573e1e39f91f2449d1a2 +Author: Philipp Hugenroth +Date: Fri Dec 10 15:50:00 2021 +0100 + + Revert changes breaking the tests + + Signed-off-by: Philipp Hugenroth + +commit e0f5b46fcc0343a9dd7bb48703373e91b1141d70 +Author: Patrik Oldsberg +Date: Thu Dec 2 16:37:30 2021 +0100 + + snyk: ignore MPL and LGPL license warnings + + Signed-off-by: Patrik Oldsberg + +commit 519198e2736fdb01bb07d80094bb4dc38ee28980 +Author: hiba-aldalaty +Date: Fri Dec 10 11:09:04 2021 +0000 + + Update type for parameter in isSidebarItemWithSubmenuActive function + + Signed-off-by: hiba-aldalaty + +commit 13f72c0910f39077089610f2f139c10d2eff81de +Author: Philipp Hugenroth +Date: Fri Dec 10 12:01:25 2021 +0100 + + Fix imports & api-reports + + Signed-off-by: Philipp Hugenroth + +commit 5bfb6827523a20c75c65c1a5d439e8d6eaf46167 +Author: Dede Hamzah +Date: Fri Dec 10 17:58:08 2021 +0700 + + Update changeset + + Signed-off-by: Dede Hamzah + +commit dd480029ecfcf0ad08b7949ed735f0e70842da7a +Author: Dede Hamzah +Date: Fri Dec 10 17:55:18 2021 +0700 + + Export icon props for SidebarSearchModal Component + + Signed-off-by: Dede Hamzah + +commit ce97576743ce754b563f37df62493aeff7c95b66 +Merge: 00f93d6a47 a3ec122170 +Author: Philipp Hugenroth +Date: Fri Dec 10 11:50:52 2021 +0100 + + Merge branch 'master' into mobile-sidebar + +commit 5e86feaca0d6921af2906f9f89390790261f6c43 +Author: mufaddal motiwala +Date: Fri Dec 10 16:18:55 2021 +0530 + + version bump + + Signed-off-by: mufaddal motiwala + +commit 00f93d6a47285182cc9244ab0e54a1312165284e +Author: Philipp Hugenroth +Date: Fri Dec 10 11:45:06 2021 +0100 + + Optimize & dedublicate SidebarItem + + Reduce log errors + + Signed-off-by: Philipp Hugenroth + +commit 71dc1bba1c0f50a561b06e78c10cfde01a4525eb +Author: Dede Hamzah +Date: Fri Dec 10 17:36:17 2021 +0700 + + export SidebarSearchProps + + Signed-off-by: Dede Hamzah + +commit 1050e4fd88037b44a713d644f5b397700d4dbe23 +Merge: c38a47cd08 d81b57f76c +Author: mufaddal motiwala +Date: Fri Dec 10 15:56:56 2021 +0530 + + Merge branch 'master' of https://github.com/mufaddal7/backstage-1 into plugin/new-relic-dashboard + + Signed-off-by: mufaddal motiwala + +commit a3ec122170e0205fd3f9c307b98b1c5e4f55bf5f (tag: v0.58.1, tag: release-2021-12-10) +Merge: aa7a73e947 e3d163d48f +Author: Patrik Oldsberg +Date: Fri Dec 10 11:25:47 2021 +0100 + + Merge pull request #8446 from backstage/rugvip/nodep + + catalog-react: remove core-app-api dependency + +commit 501eb4ea9f25c77d8bd7f4337cd76076abb3d525 +Author: hiba-aldalaty +Date: Fri Dec 10 10:24:59 2021 +0000 + + Undo changes to sidebar in Root.tsx used for testing + + Signed-off-by: hiba-aldalaty + +commit c13d0018ca20553e27afb90f2f59149bb4cc965d +Author: hiba-aldalaty +Date: Fri Dec 10 10:23:59 2021 +0000 + + Undo changes to sidebar in Root.tsx used for testing + + Signed-off-by: hiba-aldalaty + +commit f2b4b348e44c676bc1e8174de93fa5e67c63f259 +Author: hiba-aldalaty +Date: Fri Dec 10 10:20:59 2021 +0000 + + Add tests for isLocationMatch function + + Signed-off-by: hiba-aldalaty + +commit 121787e87ebd37d6ed218bf129399cb6c7573366 +Author: mufaddal motiwala +Date: Fri Dec 10 15:47:07 2021 +0530 + + added api report + + Signed-off-by: mufaddal motiwala + +commit 3e92f22d2ec39aeca54f27b67e9de940d39e6ed8 +Author: Ben Lambert +Date: Fri Dec 10 11:01:15 2021 +0100 + + Update .changeset/spicy-parents-fold.md + + Signed-off-by: Ben Lambert + + Co-authored-by: Fredrik Adelöw + +commit e3d163d48fbe14bca83160e4519244571f94c7d5 +Author: Patrik Oldsberg +Date: Fri Dec 10 10:52:26 2021 +0100 + + catalog-react: release core-app-api dependency removal + + Signed-off-by: Patrik Oldsberg + +commit 4c0f0b2003587b9e30c98d0daa98bf88c0dea695 +Author: Patrik Oldsberg +Date: Fri Dec 10 10:47:37 2021 +0100 + + catalog-react: removed core-app-api dependency + + Signed-off-by: Patrik Oldsberg + +commit aa7a73e947ac88b561e6454ef263a07f58927e41 +Author: Emma Indal +Date: Fri Dec 10 10:12:13 2021 +0100 + + [TechDocs] Add metadata to cli docs (#8445) + + Signed-off-by: Emma Indal + +commit e30420a125005ff1ea8dbf3fc3fa4e4e851e8b90 +Author: Dede Hamzah +Date: Fri Dec 10 13:38:58 2021 +0700 + + Update changeset + + Signed-off-by: Dede Hamzah + +commit 3d98955c8a9bfc35ec340f70e1cda450e3b4596a +Author: Dede Hamzah +Date: Fri Dec 10 11:00:01 2021 +0700 + + Add changeset + + Signed-off-by: Dede Hamzah + +commit 13d8c6c94b49a8b366e0d170c8831f36c132e9c7 +Author: Dede Hamzah +Date: Fri Dec 10 10:53:46 2021 +0700 + + Export icon props in SidebarSearch component + + Signed-off-by: Dede Hamzah + +commit 63f5bc5f2cf699b0a479237331ad823dadd54ff5 +Author: Joe Porpeglia +Date: Thu Dec 9 17:59:56 2021 -0500 + + Add connection.directory support for sqlite + + Signed-off-by: Joe Porpeglia + +commit 30e3fbb34b9679db783c24c9b238ba46c35178b3 +Author: djamaile +Date: Thu Dec 9 23:23:58 2021 +0100 + + chore: remove backstage.json + + Signed-off-by: djamaile + +commit d0b90c7eec364d202d3d41c89dcdcb055d03a929 +Merge: 95881167dc 3e70c671a1 +Author: djamaile +Date: Thu Dec 9 23:23:19 2021 +0100 + + Merge branch 'backstage:master' into master + +commit d9a286bd56e3dd15b27f0b44daa148746ce3eea3 +Author: Joe Porpeglia +Date: Wed Dec 8 13:49:26 2021 -0500 + + Use path.join for tests + + Signed-off-by: Joe Porpeglia + +commit cf192e1a724368230f97d4fa1a6b98cac6266638 +Author: Joe Porpeglia +Date: Mon Dec 6 12:18:50 2021 -0500 + + Check if sqlite filename was provided before making plugin-specific filename + + Signed-off-by: Joe Porpeglia + +commit e081edc783bd9da4594ae3619d2f5ad50ee0c4da +Author: Joe Porpeglia +Date: Mon Dec 6 11:34:31 2021 -0500 + + Fix changset typo + + Signed-off-by: Joe Porpeglia + +commit c2a478d7f948c63db8b2e3dc23e64090048eca4b +Author: Joe Porpeglia +Date: Mon Dec 6 11:26:10 2021 -0500 + + Update changeset + + Signed-off-by: Joe Porpeglia + +commit ef8392dab249014fe7a51e152bde8d4dc2e42e43 +Author: Joe Porpeglia +Date: Mon Dec 6 11:24:09 2021 -0500 + + Use path.join + + Signed-off-by: Joe Porpeglia + +commit fe24bc9a323afd69fb44ab410b910ea84a1be057 +Author: Joe Porpeglia +Date: Fri Dec 3 16:14:55 2021 -0500 + + Add changeset + + Signed-off-by: Joe Porpeglia + +commit e51369952ed91364d217ca560e113fe4b559a993 +Author: Joe Porpeglia +Date: Fri Dec 3 16:07:30 2021 -0500 + + Add suffix to plugin sqlite db file + + Signed-off-by: Joe Porpeglia + +commit 189ba4c340a910e127345e01b3221b6d1e7eaf77 +Author: Joe Porpeglia +Date: Fri Dec 3 15:50:09 2021 -0500 + + Overwrite sqlite filepath per plugin + + Signed-off-by: Joe Porpeglia + +commit 0f645a7947e42437349b35981c1f0d5636b2a485 +Author: mufaddal motiwala +Date: Fri Dec 10 02:47:21 2021 +0530 + + add OwnedEntityPicker field + + Signed-off-by: mufaddal motiwala + +commit 3e70c671a1fbe2dbda3cf6445f36292a219d7388 +Merge: d81b57f76c 89bd772b00 +Author: Tim Hansen +Date: Thu Dec 9 14:06:09 2021 -0700 + + Merge pull request #8436 from backstage/timbonicus/github-workflow-runs-fix + + [github-actions] Show empty state only when done loading + +commit e0c63b37db172ed75ddf88ec158e2de8f114758d +Author: Hasan Ozdemir <21654050+nodify-at@users.noreply.github.com> +Date: Thu Dec 9 21:37:57 2021 +0100 + + add missing documentation for OidcAuthResult + + Signed-off-by: Hasan Ozdemir <21654050+nodify-at@users.noreply.github.com> + +commit abd6ff3430bfb55aab65a420310bb45c25c76658 +Author: Hasan Ozdemir <21654050+nodify-at@users.noreply.github.com> +Date: Thu Dec 9 21:32:31 2021 +0100 + + improve exported type to include resolver and handlers for auth providers, add additional types to fix api-doc related warnings + + Signed-off-by: Hasan Ozdemir <21654050+nodify-at@users.noreply.github.com> + +commit 89bd772b00874e11ee7ae66da62fd6c6ff28c8ea +Author: Tim Hansen +Date: Thu Dec 9 13:05:51 2021 -0700 + + Show empty state only when done loading + + Signed-off-by: Tim Hansen + +commit a516412bb3777ea59af09a995cdb6fb4df0b8e33 +Author: Balasundaram +Date: Thu Dec 9 14:50:19 2021 -0500 + + Adding public api report + + Signed-off-by: Balasundaram + +commit ccf48de9ba82aa62d23b4e3f4aa0a4dcc66b660a +Author: Balasundaram +Date: Thu Dec 9 13:16:48 2021 -0500 + + Adding changes to remove comments + + Signed-off-by: Balasundaram + +commit 646e5d01d8baff61429be714451528bc0d7fa81d +Author: Balasundaram +Date: Thu Dec 9 13:13:04 2021 -0500 + + Changing minor to patch changeset for the #8277 + + Signed-off-by: Balasundaram + +commit 5c1b87d0442034f7f33b7b91e4197825d2af873f +Merge: ed52f74ab3 0dea6ea33b +Author: Balasundaram +Date: Thu Dec 9 13:07:16 2021 -0500 + + Merge branch 'scaffolder-gitlab-mr-publish-v2' of https://github.com/Balasundaram/backstage into scaffolder-gitlab-mr-publish-v2 + +commit ed52f74ab3c2dceb27f07bd0ba509fdcf732a673 +Author: Balasundaram +Date: Thu Dec 9 13:06:04 2021 -0500 + + Adding changeset for the #8277 + + Signed-off-by: Balasundaram + +commit 90f8f33355fd3a15fe68fcc08eb4d3c409dc1db8 +Author: Balasundaram +Date: Thu Dec 9 12:57:18 2021 -0500 + + Adding changes for PR review comments to add description for projectname + + Signed-off-by: Balasundaram + +commit e251bbd9a49ad970e789b6c602da9478accb5df2 +Merge: c0ac89d531 d81b57f76c +Author: Marley Powell +Date: Thu Dec 9 16:24:06 2021 +0000 + + Merge branch 'master' of https://github.com/backstage/backstage into marley/7678-pull-request-custom-filters + +commit d81b57f76c34f3c5245a0be37bd82c05e80cbc77 +Merge: 521b806109 d395d0fff0 +Author: Ben Lambert +Date: Thu Dec 9 17:17:40 2021 +0100 + + Merge pull request #8348 from cmpadden/plugin-apache-airflow + + Apache Airflow Plugin + +commit d395d0fff03424c5091c87493bb8426769cab7d3 +Author: Colton Padden +Date: Thu Dec 9 10:17:21 2021 -0500 + + bump backstage dependencies + + Signed-off-by: Colton Padden + +commit 6c376f2958c56c263452ce79537b7863f9f56afc +Author: Colton Padden +Date: Thu Dec 9 10:12:45 2021 -0500 + + make baseUrl required in client constructor as it is required in configSchema + + Signed-off-by: Colton Padden + +commit 01c1e2ed2b96e9c9d304530d13d28d0ade0e4914 +Author: Colton Padden +Date: Thu Dec 9 09:42:07 2021 -0500 + + move react to peerDependencies + + Signed-off-by: Colton Padden + +commit ace76c21caf17f01d0012523b7c5e2ac097e2b87 +Author: Colton Padden +Date: Wed Dec 8 11:10:10 2021 -0500 + + add section to README for feature requests + + Signed-off-by: Colton Padden + +commit ee20946df128141ec72e23d6ef2bbf09e4170721 +Author: Colton Padden +Date: Wed Dec 8 11:01:17 2021 -0500 + + remove unused dependencies from package.json + + Signed-off-by: Colton Padden + +commit 89b220ed73853c1d26d7fb167ea186a09241cf0a +Author: Colton Padden +Date: Wed Dec 8 10:40:27 2021 -0500 + + Instructions and default app configuration should use generic Airflow URLs + + Updated the instructions in the README, and the example entries in the + app-config.yml file to use `https://your.airflow.instance.com` instead of + `localhost:8080`. + + Signed-off-by: Colton Padden + +commit 6039eb507f306848eb457d42fb8efe6acaba98a0 +Author: Colton Padden +Date: Wed Dec 8 10:35:26 2021 -0500 + + Update installation instructions now that plugin is integrated in Backstage + + Existing instructions assumed that the plugin was sourced in a separate Git + repository. Instructions have been simplified now that the plugin is integrated + into the main Backstage repository. + + Signed-off-by: Colton Padden + +commit 051f9b1a232edb7de020235bbeffc0b1d2e5534d +Author: Colton Padden +Date: Mon Dec 6 21:31:26 2021 -0500 + + replace wildcard dependency versions for devDependencies in favor of explicit versions + + Signed-off-by: Colton Padden + +commit ff614360fc957cc28e2bc54c5d4135bedff1e930 +Author: Colton Padden +Date: Mon Dec 6 20:22:14 2021 -0500 + + move @types/node from dependencies to devDependencies + + Signed-off-by: Colton Padden + +commit 82c5af0df88d08c0d6e8e62fb2a1983549bd46a6 +Author: Colton Padden +Date: Mon Dec 6 10:12:41 2021 -0500 + + include generated API report file to version control + + Signed-off-by: Colton Padden + +commit eb36ce52fd1dc6cd8f167487da3a82bbdfda705e +Author: Colton Padden +Date: Mon Dec 6 09:37:23 2021 -0500 + + remove owner label from plugin header + + Signed-off-by: Colton Padden + +commit 5920236300d7f91bee10c9e70da722b007c12214 +Author: Colton Padden +Date: Mon Dec 6 09:33:54 2021 -0500 + + include @packageDocumentation for plugin and API + + Signed-off-by: Colton Padden + +commit 05fb511279cb9236880e2c804acb157a9e45dc6f +Author: Colton Padden +Date: Mon Dec 6 09:24:24 2021 -0500 + + bump dependencies to latest version + + Signed-off-by: Colton Padden + +commit 3699c951dc22d87c8b8eec046a4910d330ea5a6b +Author: Colton Padden +Date: Fri Dec 3 08:28:44 2021 -0500 + + resolve vale linter spelling warning + + Signed-off-by: Colton Padden + +commit 7988f99f18e79d3b079ac353bcc04c5a587c8369 +Author: Colton Padden +Date: Thu Dec 2 17:02:56 2021 -0500 + + include airflow configuration for baseurl and proxy + + Signed-off-by: Colton Padden + +commit 9aea3359113721c166a334c44abf9594c83d9c27 +Author: Colton Padden +Date: Thu Dec 2 17:00:11 2021 -0500 + + include minor changeset for introduction of apache airflow plugin + + Signed-off-by: Colton Padden + +commit 246a3bc283c5d42ab2f507cd0d4893df2ce36b4a +Author: Colton Padden +Date: Thu Dec 2 16:57:38 2021 -0500 + + remove package-lock.json + + Signed-off-by: Colton Padden + +commit 06f145c4bf6f0a49b26c7fbda6acf562f5944622 +Author: Colton Padden +Date: Thu Dec 2 15:44:21 2021 -0500 + + MVP of Apache Airflow Plugin + + Adds support for a new Backstage integration with the Apache Airflow workflow + management platform. This implementation has been tested with Apache Airflow v2 + API authenticating with basic auth through the Backstage proxy plugin. + + Supported functionality include: + - Information card of version information for the Airflow instance + - Information card of instance status (health) for metadatabase and scheduler + - Table of DAGs with meta information and status, along with a link to view + details in the Airflow UI + + Signed-off-by: Colton Padden + +commit 521b8061097ea0076fb32eabd5be37b4dd55b5e3 +Author: Tim Jacomb <21194782+timja@users.noreply.github.com> +Date: Thu Dec 9 14:38:48 2021 +0000 + + Update docs for techdocs runCommand (#8332) + +commit 3e6fe064c7fc8b77e12911296f6344171afef671 +Merge: 510a595397 562be0b430 +Author: Philipp Hugenroth +Date: Thu Dec 9 14:57:04 2021 +0100 + + Merge branch 'master' into mobile-sidebar + + Signed-off-by: Philipp Hugenroth + +commit 562be0b43016294e27af3ad024191bb86b13b1c1 (tag: v0.58.0, tag: release-2021-12-09) +Merge: 531f9777f0 9068128fd8 +Author: Ben Lambert +Date: Thu Dec 9 13:49:33 2021 +0100 + + Merge pull request #8335 from backstage/changeset-release/master + + Version Packages + +commit 9068128fd8889a7c7deb74c8fd9a127098eeb563 +Author: github-actions[bot] +Date: Thu Dec 9 12:02:28 2021 +0000 + + Version Packages + +commit 531f9777f06547073e124004e2337437425be9a8 +Merge: 945a4c7f5c 85ee184e68 +Author: Patrik Oldsberg +Date: Thu Dec 9 12:57:07 2021 +0100 + + Merge pull request #8426 from backstage/rugvip/classy + + core-components: LogViewer prop className -> classes + +commit 699c2e9ddcd78a07811aae8c31008019a689ca25 +Author: Hasan Ozdemir <21654050+nodify-at@users.noreply.github.com> +Date: Thu Dec 9 12:33:18 2021 +0100 + + added a changeset and generate api reports + + Signed-off-by: Hasan Ozdemir <21654050+nodify-at@users.noreply.github.com> + +commit 85ee184e689a80b5871bc03cb45b176fb5045e81 +Author: Patrik Oldsberg +Date: Thu Dec 9 12:02:09 2021 +0100 + + core-components: LogViewer prop className -> classes + + Signed-off-by: Patrik Oldsberg + +commit 945a4c7f5c257317438538ffc664d1742487fdf7 +Merge: 16ecdaa579 d4b36fd4d0 +Author: Ben Lambert +Date: Thu Dec 9 12:01:05 2021 +0100 + + Merge pull request #8423 from SDA-SE/fix/changeSdaAdaptors + + chore(adaptors): update SDA SE adaptors + +commit 8e3363a1d82940a53934737e02141382066afb94 +Author: Hasan Ozdemir <21654050+nodify-at@users.noreply.github.com> +Date: Thu Dec 9 11:46:36 2021 +0100 + + export typescript types for OIDC provider + + Signed-off-by: Hasan Ozdemir <21654050+nodify-at@users.noreply.github.com> + +commit d4b36fd4d04cb564834f53f34c5ebf4f07d51fae +Author: Peter Grauvogel +Date: Thu Dec 9 11:37:53 2021 +0100 + + chore(adaptors): update SDA SE adaptors + + Signed-off-by: Peter Grauvogel + +commit 16ecdaa57989ed358d4c52c38db8da22a2926a87 +Merge: 6ff2055519 b77baaf709 +Author: Ben Lambert +Date: Thu Dec 9 11:09:59 2021 +0100 + + Merge pull request #8422 from backstage/revert-8415-jhaals/tempfix-tests + + Revert "CI: Install build deps to workaround internet issues" + +commit 510a5953979db37e13461d145d34913b33dcfa20 +Author: Philipp Hugenroth +Date: Thu Dec 9 10:53:17 2021 +0100 + + Improve mobile submenu experience + + Signed-off-by: Philipp Hugenroth + +commit b77baaf7093983c335fec4521f4151db40fa65ff +Author: Ben Lambert +Date: Thu Dec 9 10:33:35 2021 +0100 + + Revert "CI: Install build deps to workaround internet issues" + + Signed-off-by: blam + +commit 0dea6ea33b77441a22a64ad8155ab5d4e682b4e9 +Merge: 8ee5b6f3dd 6ff2055519 +Author: Balasundaram Karthikeyan +Date: Wed Dec 8 16:38:08 2021 -0500 + + Merge branch 'master' into scaffolder-gitlab-mr-publish-v2 + +commit 8ee5b6f3dd7da14a8f0495a31ab7fe38cd4bad46 +Author: Balasundaram +Date: Wed Dec 8 16:34:09 2021 -0500 + + Adding changes for PR review comments III + + Signed-off-by: Balasundaram + +commit c38a47cd0833e43d4ee48aa725d3c3b13104539a +Author: mufaddal motiwala +Date: Wed Dec 8 22:35:28 2021 +0530 + + added changeset + + Signed-off-by: mufaddal motiwala + +commit 7dfa9564a99d312b37c72ad6171f746f908e17aa +Author: mufaddal motiwala +Date: Wed Dec 8 22:31:39 2021 +0530 + + changed the plugin name to newrelic-dashboard + + Signed-off-by: mufaddal motiwala + +commit 575e8ad0c79df8deaa05b603408e9f3f1ce8ab3d +Merge: 4d6bebad47 6ff2055519 +Author: mufaddal motiwala +Date: Wed Dec 8 21:20:15 2021 +0530 + + Merge branch 'master' of https://github.com/mufaddal7/backstage-1 into plugin/new-relic-dashboard + + Signed-off-by: mufaddal motiwala + +commit 6ff2055519f796e8468a5348f91121e74f3be9ea +Merge: 842e338efb aec2c96c88 +Author: Johan Haals +Date: Wed Dec 8 16:48:22 2021 +0100 + + Merge pull request #8383 from radoslaw-wielonski-nc/feat/add-custom-error-handler + + Feat/add custom error handler + +commit 842e338efbff8481391a6bdfab42638aac8a1e50 +Merge: 68d16ac123 1357ac30f1 +Author: Fredrik Adelöw +Date: Wed Dec 8 16:31:42 2021 +0100 + + Merge pull request #8416 from backstage/freben/classnames + + Standardize on classnames instead of both that and clsx + +commit 68d16ac12361efb5a4d2e2f47dab9cf33e9a0599 +Merge: 95ae1249a4 1e48c3de82 +Author: Ben Lambert +Date: Wed Dec 8 16:31:13 2021 +0100 + + Merge pull request #8417 from backstage/blam/last-of-the-lazy-log + + Remove the last occurence of `lazylog` + +commit 9b093a488adf4e9b556c9f0503c7642e1eef5cf1 +Author: Johan Haals +Date: Wed Dec 8 16:15:41 2021 +0100 + + Update .changeset/cold-otters-prove.md + + Signed-off-by: Johan Haals + + Co-authored-by: Ben Lambert + +commit c7930a7330bec25540642227e662de845d75831c +Author: Johan Haals +Date: Wed Dec 8 16:00:00 2021 +0100 + + add changeset + + Signed-off-by: Johan Haals + +commit 8f253285a1b37db4e253fe6f8a16259e596075a9 +Author: Johan Haals +Date: Wed Dec 8 15:56:36 2021 +0100 + + chore(deps-dev): bump @types/tar from 4.0.5 to 6.1.1 + + Signed-off-by: Johan Haals + +commit 1357ac30f159c5ae6b98bc5635bb1fc3060c3abb +Author: Fredrik Adelöw +Date: Wed Dec 8 15:23:28 2021 +0100 + + Standardize on classnames instead of both that and clsx + + Signed-off-by: Fredrik Adelöw + +commit 1e48c3de825e43b03b1924ff8d20279bd75e77b5 +Author: blam +Date: Wed Dec 8 15:30:32 2021 +0100 + + chore: fixing the last of the mpl violations + + Signed-off-by: blam + +commit 95ae1249a459c0b16df29cfe08e578da7c381984 +Merge: fd7393773b ed3a7567a0 +Author: Ben Lambert +Date: Wed Dec 8 15:24:45 2021 +0100 + + Merge pull request #8369 from backstage/rugvip/logs + + core-components: add new LogViewer component + use in plugins + +commit aec2c96c88ea39e5a1194ea44729ef951b1be287 +Author: Radoslaw Wielonski +Date: Wed Dec 8 15:13:37 2021 +0100 + + docs: update documentation of disableDefaultErrorHandler method + + Signed-off-by: Radoslaw Wielonski + +commit 0105e3cd6447d6b181b0e1362c98efd49b4e0fce +Author: Radoslaw Wielonski +Date: Wed Dec 8 15:11:07 2021 +0100 + + docs: update documentation of setErrorHandler method + + Signed-off-by: Radoslaw Wielonski + +commit d2ad94df9734340051ef53a9baffda2f1b39b81a +Author: radoslaw-wielonski-nc <86358570+radoslaw-wielonski-nc@users.noreply.github.com> +Date: Wed Dec 8 15:07:24 2021 +0100 + + Update packages/backend-common/src/service/types.ts + + Co-authored-by: Johan Haals + Signed-off-by: Radoslaw Wielonski + +commit fd7393773bdcdb34c92734ba9ab35f8ed16959fb +Merge: accabd5f1a bf736f8058 +Author: Ben Lambert +Date: Wed Dec 8 15:01:37 2021 +0100 + + Merge pull request #8415 from backstage/jhaals/tempfix-tests + + CI: Install build deps to workaround internet issues + +commit accabd5f1add35cfc01c2b9eb28c1ceff0598f2d +Merge: 5373bc7254 fa0b8ab6a8 +Author: Ben Lambert +Date: Wed Dec 8 14:55:17 2021 +0100 + + Merge pull request #7854 from awanlin/topic/add-build-by-definition-name + + Added getting builds by definition name + +commit 5373bc725450126b4f14d808f17babca6fe45d9d +Merge: dd77b5eb12 6bccc7d794 +Author: Johan Haals +Date: Wed Dec 8 14:48:16 2021 +0100 + + Merge pull request #8404 from minnsoe/feat/prepare-for-gitlab-org-and-add-tests + + Add tests for the GitLab client in catalog-backend and refactor + +commit bf736f80580f61f07e555c668790f03ab14aa3c8 +Author: Johan Haals +Date: Wed Dec 8 14:39:11 2021 +0100 + + CI: Install build deps to workaround internet issues + + Signed-off-by: Johan Haals + +commit dd77b5eb1285f77a2511d128811eaae12b94d922 +Merge: e3d21acf2a 11b7c39fb6 +Author: Johan Haals +Date: Wed Dec 8 14:29:03 2021 +0100 + + Merge pull request #8283 from backstage/mob/identity-api + + core-plugin-api: stabilize IdentityApi + +commit 6bccc7d794ebec402256de35021f95d7fea3b664 +Author: Minn Soe +Date: Wed Dec 8 13:21:53 2021 +0000 + + changesets: add gitlab changes in catalog-backend + + Signed-off-by: Minn Soe + +commit e3d21acf2a1e47ac8e9d09c56192859b5fd4c8f7 +Merge: 986a5d869e 285f7ec2e6 +Author: Johan Haals +Date: Wed Dec 8 14:13:41 2021 +0100 + + Merge pull request #8374 from backstage/orkohunter/docs-v1beta3-templates + + scaffolder: update docs with v1beta3 syntax + +commit 67688f46016c1435114d6d5ab81fb92b7d10b759 +Author: hiba-aldalaty +Date: Wed Dec 8 13:11:22 2021 +0000 + + fix generic type error + + Signed-off-by: hiba-aldalaty + +commit ed3a7567a0e1638cc372f1e167fc84ae08ba41a6 +Author: Patrik Oldsberg +Date: Mon Dec 6 00:59:31 2021 +0100 + + core-components: remove dead code in LogViewer + + Signed-off-by: Patrik Oldsberg + + chore: updating new yarn.lock changes + + Signed-off-by: blam + +commit 9d2b6e0c9cfa958f6098072403e304d85d4952af +Merge: b3de772e22 986a5d869e +Author: hiba-aldalaty +Date: Wed Dec 8 12:43:14 2021 +0000 + + Merge branch 'master' into patch/sidebar-submenu-fix + + Signed-off-by: hiba-aldalaty + +commit fa0b8ab6a89db893183f4de1bf27c654db0ea850 +Author: Fredrik Adelöw +Date: Wed Dec 8 13:47:04 2021 +0100 + + patch level + + Signed-off-by: Fredrik Adelöw + +commit b3de772e22eeba51cc85cf21056dd48f78f7cc18 +Author: hiba-aldalaty +Date: Wed Dec 8 12:42:59 2021 +0000 + + Create isLocationMatch function for location matching and setting active sidebar items + + Signed-off-by: hiba-aldalaty + +commit 85d54b888cefbab8e7d025d6ce558e3cc9106f73 +Author: Patrik Oldsberg +Date: Mon Dec 6 00:57:35 2021 +0100 + + core-components: update API report for LogViewer + fixes + + Signed-off-by: Patrik Oldsberg + +commit 1efed71f6018e2ba8f3e0418b0183be1f5a3308c +Author: Patrik Oldsberg +Date: Mon Dec 6 00:38:45 2021 +0100 + + core-components: make LogViewer styles overridable + + Signed-off-by: Patrik Oldsberg + +commit da0fdf9b5eade742dc452acbf53ea87092bb14f9 +Author: Patrik Oldsberg +Date: Mon Dec 6 00:32:25 2021 +0100 + + core-components: added test for LogViewer and fix copy + + Signed-off-by: Patrik Oldsberg + +commit 6078c7147a7911d6c5a49dd7fd030afb24ed807d +Author: Patrik Oldsberg +Date: Sun Dec 5 23:44:37 2021 +0100 + + core-components: tests + fix for LogViewer selection handling + + Signed-off-by: Patrik Oldsberg + +commit beed531a9d5f5619730d02a852cb3eb73ce6085b +Author: Patrik Oldsberg +Date: Sun Dec 5 23:14:50 2021 +0100 + + core-components: tests for LogViewer search state + refactor + + Signed-off-by: Patrik Oldsberg + +commit a6622d97046e171ec0eaa1803e22b1fdb1ed66b6 +Author: Patrik Oldsberg +Date: Sun Dec 5 21:47:01 2021 +0100 + + core-components: document LogViewer + restructure + + Signed-off-by: Patrik Oldsberg + +commit e83950028621608417542389b63003f97424a551 +Author: Patrik Oldsberg +Date: Sun Dec 5 21:29:55 2021 +0100 + + changesets: added changeset for LogViewer + + Signed-off-by: Patrik Oldsberg + +commit c77def982f3095a209fa2c9e3b2cabd2b348090f +Author: Patrik Oldsberg +Date: Sun Dec 5 21:05:59 2021 +0100 + + cloudbuild: remove unnecessary lazylog dependency + + Signed-off-by: Patrik Oldsberg + +commit 56d04330c499ae0f237885c32c999c1e046cc773 +Author: Patrik Oldsberg +Date: Sun Dec 5 21:01:00 2021 +0100 + + circleci: switch to use LogViewer + + Signed-off-by: Patrik Oldsberg + +commit cbd20c46f14f16ec73724454b1a524e220d9c4f9 +Author: Patrik Oldsberg +Date: Sun Dec 5 20:57:31 2021 +0100 + + github-actions: switch to using LogViewer + + Signed-off-by: Patrik Oldsberg + +commit ea8d73a7ed9b716cbd3545fd40a40f1dc7c0d529 +Author: Patrik Oldsberg +Date: Sun Dec 5 20:56:44 2021 +0100 + + core-components: reduce font size in LogViewer + + Signed-off-by: Patrik Oldsberg + +commit d90dad84b0cae18ce88c6706c04915503202e0eb +Author: Patrik Oldsberg +Date: Sun Dec 5 20:44:59 2021 +0100 + + techdocs: switch to using LogViewer + + Signed-off-by: Patrik Oldsberg + +commit 37d80d0a9d717b98b81cfc8fe3fe0a3c1b621c47 +Author: Patrik Oldsberg +Date: Sun Dec 5 20:40:44 2021 +0100 + + core-components: add className prop for LogViewer + + Signed-off-by: Patrik Oldsberg + +commit b291c3176ef66126d94135cef3f0813d1ebd4489 +Author: Patrik Oldsberg +Date: Sun Dec 5 19:51:51 2021 +0100 + + scaffolder: switch to using LogViewer + + Signed-off-by: Patrik Oldsberg + +commit d06c6a4cfe58a399c2a69cfe39450b4b773f54a7 +Author: Patrik Oldsberg +Date: Sun Dec 5 19:45:10 2021 +0100 + + core-components: proper LogViewer selection and copy + + Signed-off-by: Patrik Oldsberg + +commit cb3246ef89247d51c8d2b35c669da1b2061a7e8b +Author: Patrik Oldsberg +Date: Sun Dec 5 18:58:24 2021 +0100 + + core-components: lazy load log viewer + + Signed-off-by: Patrik Oldsberg + +commit e708a0109f23fbc9373880a04dae5e6b05119f9b +Author: Patrik Oldsberg +Date: Sun Dec 5 18:38:44 2021 +0100 + + core-components: refactor out LogViewer search + + Signed-off-by: Patrik Oldsberg + +commit ed042d205692b3327937c0f1fc4de3ac3a6559f5 +Author: Patrik Oldsberg +Date: Sun Dec 5 18:39:11 2021 +0100 + + core-components: memo LogViewer LogLines + + Signed-off-by: Patrik Oldsberg + +commit b38e4c636beebb0410097c8da6a451ca87b85b0f +Author: Patrik Oldsberg +Date: Sun Dec 5 18:01:20 2021 +0100 + + core-components: remove duplicate types from LogViewer + + Signed-off-by: Patrik Oldsberg + +commit 8a71f91bf270a240280bfd15991ea461fba52bcc +Author: Patrik Oldsberg +Date: Sun Dec 5 18:00:37 2021 +0100 + + core-components: split out LogViewerControls + + Signed-off-by: Patrik Oldsberg + +commit be8e706462ae7b169e78ec2eef615d3e69529cd9 +Author: Patrik Oldsberg +Date: Sun Dec 5 17:45:06 2021 +0100 + + core-components: highlight individual LogViewer search results + + Signed-off-by: Patrik Oldsberg + +commit 1407c0085a520eac3f68154aef81d58ccd27660f +Author: Patrik Oldsberg +Date: Sun Dec 5 17:27:33 2021 +0100 + + core-components: more advanced LogViewer filter controls + + Signed-off-by: Patrik Oldsberg + +commit 155da5097840d32266ccafea00f4466b9de2923a +Author: Patrik Oldsberg +Date: Sun Dec 5 15:59:12 2021 +0100 + + core-components: make LogViewer filter scroll to match instead of filter + + Signed-off-by: Patrik Oldsberg + +commit 563635a0f8decf17427ff8d61b6adf6f6562b420 +Author: Patrik Oldsberg +Date: Sun Dec 5 14:54:45 2021 +0100 + + core-components: add tests for LogLine highlighting + fix and refactor + + Signed-off-by: Patrik Oldsberg + +commit 4dd0511074566f61ae3bc94bc5c80dd48bf87a3e +Author: Patrik Oldsberg +Date: Sun Dec 5 12:42:37 2021 +0100 + + core-components: add tests for LogLine search results + + Signed-off-by: Patrik Oldsberg + +commit ef111abb56566f8d1d761d34f2a4935ec525bdd6 +Author: Patrik Oldsberg +Date: Sun Dec 5 12:32:52 2021 +0100 + + core-components: add tests for LogLine modifiers + + Signed-off-by: Patrik Oldsberg + +commit 1faae751b683aa1ea21598d4b864f749d5514443 +Author: Patrik Oldsberg +Date: Sun Dec 5 12:14:42 2021 +0100 + + core-components: refactor LogViewer LogLine into pieces of logic + + Signed-off-by: Patrik Oldsberg + +commit 439833d300c03dfa1e7d50ac715133e6969173db +Author: Patrik Oldsberg +Date: Sun Dec 5 11:29:09 2021 +0100 + + core-components: split up LogViewer + + Signed-off-by: Patrik Oldsberg + +commit 8884af06e8f0b4e7b077610aef0c0ade6116b71e +Author: Patrik Oldsberg +Date: Sat Dec 4 18:58:51 2021 +0100 + + core-components: highlight search matches in LogViewer + + Signed-off-by: Patrik Oldsberg + +commit 738a0b1b770a206dfb149dc0a618cc0723d216df +Author: Patrik Oldsberg +Date: Sat Dec 4 17:43:17 2021 +0100 + + core-components: basic line selection and filtering for LogViewer + + Signed-off-by: Patrik Oldsberg + +commit 8af6baa2d1df591a5113f41635f78faec77dd4b5 +Author: Patrik Oldsberg +Date: Sat Dec 4 17:12:38 2021 +0100 + + core-components: refactor AnsiProcessor to keep track of line numbers + + Signed-off-by: Patrik Oldsberg + +commit cef1f124f6e90b00b5f75f6946af678edca63863 +Author: Patrik Oldsberg +Date: Sat Dec 4 15:56:47 2021 +0100 + + core-components: added new LogViewer component + + Signed-off-by: Patrik Oldsberg + +commit d94abcab7d64076941449232e22715e0d5e84d0d +Author: Patrik Oldsberg +Date: Sat Dec 4 13:48:39 2021 +0100 + + core-components: added AnsiProcessor for LogViewer + + Signed-off-by: Patrik Oldsberg + +commit 5632fa9eb362035de013dea3d1e9889fb6d12a43 +Author: Patrik Oldsberg +Date: Fri Dec 3 16:58:16 2021 +0100 + + scaffolder: fix dev setup + + Signed-off-by: Patrik Oldsberg + +commit a07e0f5f06bdf835b0e7139592aa4abaaf3f2026 +Author: Radoslaw Wielonski +Date: Wed Dec 8 13:15:25 2021 +0100 + + docs: update documentation of setErrorHandler method + + Signed-off-by: Radoslaw Wielonski + +commit 986a5d869ea976fee71844c2aadd777907fde082 +Merge: 60ad732470 dcd1a0c3f4 +Author: Fredrik Adelöw +Date: Wed Dec 8 13:15:13 2021 +0100 + + Merge pull request #8405 from backstage/freben/nounpack + + Do not unpack arguments directly on exported items 🧹 + +commit 60ad73247062633f1d65e4f70492071556a4ec6d +Merge: 50920efc35 13ae212d21 +Author: Johan Haals +Date: Wed Dec 8 11:34:32 2021 +0100 + + Merge pull request #8397 from backstage/jhaals/oauth + + auth-backend(fix): Add basicAuth option to OAuth provider + +commit 50920efc353af7544eea82cbde0c000c45bb77f1 +Merge: 3b94f977fc b191e1737a +Author: Patrik Oldsberg +Date: Wed Dec 8 10:06:27 2021 +0100 + + Merge pull request #8361 from backstage/rugvip/r17 + + add support for React 17 in plugins + +commit 3b94f977fc0bd6bcf46d8d70c7e988354032be13 +Merge: 040241b061 64db0efffe +Author: Johan Haals +Date: Wed Dec 8 08:52:26 2021 +0100 + + Merge pull request #8385 from angeliski/change-rails-package-format + + chore: update build to use cjs format + +commit 95881167dcf1ab29b4f1dd803cb07d7949bd2800 +Author: djamaile +Date: Tue Dec 7 23:50:09 2021 +0100 + + chore: some clean up + + Signed-off-by: djamaile + +commit 1e7070443decf3004eaec10c8ba30e8fa15fd591 +Author: Praveen Ranjan Keshri +Date: Wed Dec 8 00:21:53 2021 +0530 + + Fixes post review by Rugvip: + 1. Ensuring that reloadIntervals, if present, is a valid positive number + 2. Remote config error message fix + 3. Removed remote config from example backend + 4. Lessened the writing.md + 5. Multiple changesets + + Signed-off-by: Praveen Ranjan Keshri + +commit dcd1a0c3f4d50bde823b098af4a68adf601c62cf +Author: Fredrik Adelöw +Date: Tue Dec 7 19:42:10 2021 +0100 + + Do not unpack arguments directly on exported items + + Signed-off-by: Fredrik Adelöw + +commit 040241b061592f0e5920c68da73da7db0cd5f4f0 +Merge: 3421826ca8 69034b4419 +Author: Fredrik Adelöw +Date: Tue Dec 7 18:49:57 2021 +0100 + + Merge pull request #8402 from backstage/catalog-react-directory-typo + + Fix directory typo in catalog-react + +commit d5d69f116923b82ef53bbf4743a1338a6c5666eb +Merge: 776180b740 3421826ca8 +Author: Praveen Ranjan Keshri +Date: Tue Dec 7 22:46:46 2021 +0530 + + Merge branch 'backstage:master' into 7340-remote-config-fix + +commit 69034b44191f47c10ee7b27b457c8eb2fc4b5dda +Author: Joon Park +Date: Tue Dec 7 16:53:38 2021 +0000 + + Add changeset + + Signed-off-by: Joon Park + +commit 2976a2b8e10c9555caf706038713de67221b1c63 +Author: Joon Park +Date: Tue Dec 7 16:24:54 2021 +0000 + + Fix directory typo in catalog-react + + Signed-off-by: Joon Park + +commit b191e1737ae56f7ab4ea9fadef40a53b05024977 +Author: Patrik Oldsberg +Date: Fri Dec 3 15:11:49 2021 +0100 + + packages,plugins: avoid usage of react-dom in tests + + Signed-off-by: Patrik Oldsberg + +commit cd450844f6471e7564d6514d1813f587eae4b21c +Author: Patrik Oldsberg +Date: Fri Dec 3 14:54:55 2021 +0100 + + changesets: added changesets for React 17 bump + + Signed-off-by: Patrik Oldsberg + +commit 777126a193fc8fcc07fd464b6c4491d5acdfa4f9 +Author: Patrik Oldsberg +Date: Fri Dec 3 14:48:10 2021 +0100 + + scripts: update type dependency checker to include peerDependencies + + Signed-off-by: Patrik Oldsberg + +commit 34490b75a699ff005478c2f5aa1530ec5c2dedad +Author: Patrik Oldsberg +Date: Fri Dec 3 14:40:09 2021 +0100 + + cli: update plugin template to use react peer dep + + Signed-off-by: Patrik Oldsberg + +commit 2d3af35de5786ab1e67ba77d1c7a8a4f37163cb2 +Author: Patrik Oldsberg +Date: Fri Dec 3 14:24:15 2021 +0100 + + packages: bump last few react deps to ^16.31.1 + + Signed-off-by: Patrik Oldsberg + +commit 39c64f50353315daf2fd156e9a1d5a3218d1cf6e +Author: Patrik Oldsberg +Date: Fri Dec 3 13:58:15 2021 +0100 + + packages,plugins: move @types/react to peer deps and sync query with react + + Signed-off-by: Patrik Oldsberg + +commit be32bc3edbe758dd864f829142023904ba65944a +Author: Patrik Oldsberg +Date: Fri Dec 3 13:57:02 2021 +0100 + + package,plugins: move react to peer deps and include v17 + + Signed-off-by: Patrik Oldsberg + +commit b61a5bbdf320ac2cb02506b55566f0704056f1fb +Author: Minn Soe +Date: Tue Dec 7 13:36:28 2021 +0000 + + feat: add gitlab self managed check method + + Signed-off-by: Minn Soe + +commit 91b3ad3553a43576a352d7c9598d834845736eb5 +Author: Minn Soe +Date: Fri Dec 3 13:32:01 2021 +0000 + + refactor: simplify by using GitLab apiBaseUrl + + Signed-off-by: Minn Soe + +commit d58e92a7f064a8a0c76eaf98fd35d727975cfd40 +Author: Minn Soe +Date: Tue Dec 7 13:46:12 2021 +0000 + + feat: allow types in gitlab client paginated reqs + + Signed-off-by: Minn Soe + +commit af80fb7a013c32c99070a5ed77dd8f17bbbadad7 +Author: Minn Soe +Date: Wed Dec 1 19:58:52 2021 +0000 + + test: add GitLabClient coverage in catalog-backend + + Signed-off-by: Minn Soe + +commit 32d733fbf10a7b411cb3aa56d1395080682d55bb +Author: Suzanne Daniels +Date: Tue Dec 7 17:17:35 2021 +0100 + + removing modifications + + Signed-off-by: Suzanne Daniels + +commit 7d9913fc43b24eb5afb9c0383fb1b80ad9af26d9 +Author: Philipp Hugenroth +Date: Tue Dec 7 16:49:24 2021 +0100 + + Add basic support for submenus to mobile sidebar + + Signed-off-by: Philipp Hugenroth + +commit 3421826ca872163b57a5cf6fd2f6e80b01e2227c +Author: Mert Can Bilgiç +Date: Tue Dec 7 18:29:06 2021 +0300 + + [TechDocs] Set entity triplets to lowercase if config is set on docs tab at entity page (#8394) + + * Fixes #8381, set entity triplets to lowercase if config is set on docs tab at entity page + + Co-authored-by: Mehmet Mallı + Signed-off-by: mertcbilgic + + * Changeset added + + Co-authored-by: Mehmet Mallı + Signed-off-by: mertcbilgic + + * fixes due to review + + Co-authored-by: Mehmet Mallı + Co-authored-by: Güven Altunsoy + Co-authored-by: Nilgün Canbaz + Co-authored-by: Burcu Karagöz + Co-authored-by: Murat Sökücü + Signed-off-by: mertcbilgic + + Co-authored-by: Mehmet Mallı + Co-authored-by: Güven Altunsoy + Co-authored-by: Nilgün Canbaz + Co-authored-by: Burcu Karagöz + Co-authored-by: Murat Sökücü + +commit c4f1509370697427f3035eb05440a99cc09daee3 (tag: v0.57.1, tag: release-2021-12-07) +Merge: c869f6dbbe 7ce4ea4079 +Author: Johan Haals +Date: Tue Dec 7 15:26:24 2021 +0100 + + Merge pull request #8395 from backstage/blam/fix-e2e + + chore: bumping this `graphiql` plugin to latest + +commit c869f6dbbe68e112e06dab8883bf4a2749bb9b5b +Merge: 6c1e8cb899 dac55f3cc7 +Author: Johan Haals +Date: Tue Dec 7 15:09:32 2021 +0100 + + Merge pull request #8303 from backstage/eide/run-migrations + + [backend-common]: Make it possible to skip database migrations + +commit 7ce4ea40795dfe834ed8f27d33e9b03d297c5427 +Author: blam +Date: Tue Dec 7 14:14:15 2021 +0100 + + chore: release new version of `api-docs` and `graphiql` to solve issues with `graphql` versions + + Signed-off-by: blam + +commit 9360b7fac60da6e6f64379cde8c1013f712448f2 +Author: blam +Date: Tue Dec 7 13:53:17 2021 +0100 + + chore: bumping graphql and graphiql versions to latest to solve broken `create-app` + + Signed-off-by: blam + +commit 6c1e8cb899e2044260ec763fda41b0cdfe5ca130 +Merge: 95ab7baba6 eb56221f52 +Author: Himanshu Mishra +Date: Tue Dec 7 18:20:02 2021 +0530 + + Merge pull request #8392 from backstage/dependabot/npm_and_yarn/rc-progress-3.1.4 + + chore(deps): bump rc-progress from 3.1.3 to 3.1.4 + +commit 285f7ec2e6276607f01814c2f7c6a56a5dc2edb2 +Author: Himanshu Mishra +Date: Tue Dec 7 18:13:06 2021 +0530 + + fix apiVersion for scaffolder.backstage.io/v1beta3 in docs + + Signed-off-by: Himanshu Mishra + +commit dac55f3cc76482c58ac61b994483a9397f0fef26 +Author: Marcus Eide +Date: Tue Dec 7 12:44:16 2021 +0100 + + Make optional + + Signed-off-by: Marcus Eide + +commit 6026ebb680ccae8306b7699c8b02564a60e5b37b +Author: Radoslaw Wielonski +Date: Tue Dec 7 12:24:14 2021 +0100 + + refactor: use prototype to access private properties and avoid // @ts-ignore + + Signed-off-by: Radoslaw Wielonski + +commit 06d80ac7a657b5fcf152a6e9a6d9673e92440c37 +Author: Radoslaw Wielonski +Date: Tue Dec 7 12:02:58 2021 +0100 + + refactor: remove ts-ignore comments from tests + + Signed-off-by: Radoslaw Wielonski + +commit 13ae212d21c137e3f1138a84f01fcf51cd904945 +Author: Johan Haals +Date: Tue Dec 7 11:55:04 2021 +0100 + + Rename option from basicAuth to includeBasicAuth + + Signed-off-by: Johan Haals + +commit af77b33895ad446820aaefbdd767b261e3aa0055 +Author: Radoslaw Wielonski +Date: Tue Dec 7 11:36:01 2021 +0100 + + docs: update api-report.md with error handler changes + + Signed-off-by: Radoslaw Wielonski + +commit 5a59f5507e2f6be0d61d1a68488007d6b4522e66 +Author: Radoslaw Wielonski +Date: Tue Dec 7 11:35:08 2021 +0100 + + feat: add flag for default error handler + + Signed-off-by: Radoslaw Wielonski + +commit 64db0efffe52cd5e64173fd8c6b74f141f9b157a +Author: Rogerio Angeliski +Date: Mon Dec 6 13:20:50 2021 -0300 + + chore: update build to use cjs format + + Signed-off-by: Rogerio Angeliski + +commit 856a6f5b6275e56b534cc697d4ebe17927aebac8 +Merge: 5f1db7a43a 95ab7baba6 +Author: Philipp Hugenroth +Date: Tue Dec 7 11:13:50 2021 +0100 + + Merge branch 'master' into mobile-sidebar + +commit 5f1db7a43a4c828857469c5dd8dea65d011af543 +Merge: 68f09dab37 48738962e7 +Author: Philipp Hugenroth +Date: Tue Dec 7 11:10:41 2021 +0100 + + Merge branch 'master' into mobile-sidebar + + Signed-off-by: Philipp Hugenroth + +commit 5c1840c16e2aff35d482d0d9801bce7f46c76bc1 +Author: Marcus Eide +Date: Tue Dec 7 10:06:26 2021 +0100 + + Rename to DatabaseManagerOptions and export + + Signed-off-by: Marcus Eide + +commit 8f461e6043288a3f5dc459de62bf1919c81e142c +Author: Johan Haals +Date: Tue Dec 7 10:59:52 2021 +0100 + + auth-backend(fix): Add basicAuth option to OAuth provider + + Signed-off-by: Johan Haals + +commit 11b7c39fb6c19a76d0b8d663013aadca05fa0814 +Author: blam +Date: Tue Dec 7 10:52:27 2021 +0100 + + chore: added caching for successful profile retrieval + + Signed-off-by: blam + +commit 95ab7baba6861f7dca10de066456ef86bab02492 +Merge: b0517904c4 e5976071ea +Author: Johan Haals +Date: Tue Dec 7 10:34:27 2021 +0100 + + Merge pull request #8350 from kuangp/fix/sidebar + + fix(sidebar): use ellipsis styling for overflowed text + +commit b0517904c44acba14142efd394c69300cd0096da +Merge: 92a9038b15 c401170b36 +Author: Johan Haals +Date: Tue Dec 7 09:38:03 2021 +0100 + + Merge pull request #8341 from adamdmharvey/update-create-app + + chore: Update create app template to align with example app + +commit 92a9038b15e722822cf5e22d3a4489e05e8f02a3 +Merge: 57f2bd9950 36bb4fb2e9 +Author: Johan Haals +Date: Tue Dec 7 09:35:27 2021 +0100 + + Merge pull request #8387 from backstage/scaffolder-config-cleanup + + More scaffolder config cleanup + +commit eb56221f522491438640f74844f6a03da29c37fd +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Tue Dec 7 04:10:23 2021 +0000 + + chore(deps): bump rc-progress from 3.1.3 to 3.1.4 + + Bumps [rc-progress](https://github.com/react-component/progress) from 3.1.3 to 3.1.4. + - [Release notes](https://github.com/react-component/progress/releases) + - [Changelog](https://github.com/react-component/progress/blob/master/CHANGELOG.md) + - [Commits](https://github.com/react-component/progress/compare/v3.1.3...v3.1.4) + + --- + updated-dependencies: + - dependency-name: rc-progress + dependency-type: direct:production + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit 36bb4fb2e95dcf76c856e5777482bdcc90118d5c +Author: Tim Hansen +Date: Mon Dec 6 13:13:03 2021 -0700 + + More scaffolder config cleanup + + Signed-off-by: Tim Hansen + +commit 18b7b795c102a3026abf0e472e0949e3aa2fc787 +Author: Patrik Oldsberg +Date: Mon Dec 6 17:14:18 2021 +0100 + + core-components: docs + fix API report warnings + + Co-authored-by: blam + Signed-off-by: Patrik Oldsberg + +commit 1154ec0017643d24fd40b0e301872659681255e5 +Author: Patrik Oldsberg +Date: Mon Dec 6 17:13:26 2021 +0100 + + auth-backend: decorateWithIdentity -> prepareBackstageIdentityResponse + API report fixes + + Co-authored-by: blam + Signed-off-by: Patrik Oldsberg + +commit a036b65c2f1a16553e9413b5f97629d0a610bce9 +Author: Patrik Oldsberg +Date: Mon Dec 6 14:53:16 2021 +0100 + + changesets: added changesets for sign-in and identity changes + + Co-authored-by: Fredrik Adelöw + Co-authored-by: blam + Signed-off-by: Patrik Oldsberg + +commit c0ac89d531a877da2f2654899dcfb0bcdda9c810 +Author: Marley Powell +Date: Mon Dec 6 15:12:15 2021 +0000 + + feat: Added additional types. + + Signed-off-by: Marley Powell + +commit 6c77a8ccf510807ae13814da06838621d1eec142 +Author: Marley Powell +Date: Mon Dec 6 14:58:09 2021 +0000 + + feat: Created `useFilterProcessor` hook for populating filter values. + + Signed-off-by: Marley Powell + +commit 949e73e125651ff629b8bf5c65a4940b158114b9 +Author: Marley Powell +Date: Mon Dec 6 14:56:37 2021 +0000 + + feat: Created new `getPullRequestGroupConfigs` function. + + Signed-off-by: Marley Powell + +commit ed133e68cbf14bff9a17410ab84000e9cf75e817 +Author: Marley Powell +Date: Mon Dec 6 14:55:23 2021 +0000 + + feat: Updated `PullRequestsPage` to use new column config approach. + + Signed-off-by: Marley Powell + +commit 57f2bd995017c079e58f7333a3f674fc6eac6996 +Merge: 594e73aa1c 089a6157ff +Author: Johan Haals +Date: Mon Dec 6 15:45:52 2021 +0100 + + Merge pull request #8088 from SDA-SE/feat/asyncapi-component-update + + Update AsyncAPI component to 1.0.0-x releases + +commit 362998f62eefadbe3744f39501f3d09cbefe6a88 +Author: Marley Powell +Date: Mon Dec 6 14:44:03 2021 +0000 + + feat: Created `equalsIgnoreCase` util function. + + Signed-off-by: Marley Powell + +commit 72bd5eb0753105e51459a71784891bbd435e69a2 +Author: Marley Powell +Date: Mon Dec 6 14:43:23 2021 +0000 + + feat: Created `arrayHas` and `stringArrayHas` util functions. + + Signed-off-by: Marley Powell + +commit f0064d4ee3b118f1d11860ce024be5d2298b43c3 +Author: Radoslaw Wielonski +Date: Mon Dec 6 15:40:02 2021 +0100 + + fix: fix tests for custom error handler + + Signed-off-by: Radoslaw Wielonski + +commit 5a008576c421ba16b6ab19fa29e122470969cfb7 +Author: Radoslaw Wielonski +Date: Mon Dec 6 10:56:14 2021 +0100 + + docs: add note to changeset + + Signed-off-by: Radoslaw Wielonski + +commit ad8ed6f91b2972a8374a0a84f0d926e0fd119552 +Author: Radoslaw Wielonski +Date: Mon Dec 6 10:48:06 2021 +0100 + + feat: add ability to set custom errorHandler + + Signed-off-by: Radoslaw Wielonski + +commit 4e50a33f8edd713ba78f93b0678d16f8e3ffe78b +Author: Marley Powell +Date: Mon Dec 6 14:21:45 2021 +0000 + + refactor: Update import references. + + Signed-off-by: Marley Powell + +commit 73c73b71d15f1a25ee07cdbbc7a6467cf1a7f445 +Author: Patrik Oldsberg +Date: Mon Dec 6 11:55:42 2021 +0100 + + auth: simplify types and reintroduce deprecated BackstageIdentity + + Co-authored-by: Fredrik Adelöw + Co-authored-by: blam + Signed-off-by: Patrik Oldsberg + +commit 594e73aa1c222820f7f96f0162076aea38adec25 +Author: Emma Indal +Date: Mon Dec 6 14:29:07 2021 +0100 + + use path.sep instead of / to accound for differnt platforms (#8380) + + Signed-off-by: Emma Indal + +commit f85fb5b140128e054d6afb30451ba6babe2f1288 +Author: hiba-aldalaty +Date: Mon Dec 6 12:40:53 2021 +0000 + + Update .changeset/eight-insects-kiss.md + + Signed-off-by: hiba-aldalaty + +commit 981f82983b613f26439eff2f755a8638618555f4 +Author: Suzanne Daniels +Date: Mon Dec 6 13:26:05 2021 +0100 + + Processing review comments - links, img, clarify + + Signed-off-by: Suzanne Daniels + +commit d76184a53a536a9115419cdcc7293377dc78fc93 +Author: hiba-aldalaty +Date: Mon Dec 6 11:49:23 2021 +0000 + + Fix changeset + + Signed-off-by: hiba-aldalaty + +commit ec20755eda86b91f59d0db1a893598f7f9a13911 +Author: hiba-aldalaty +Date: Mon Dec 6 11:45:14 2021 +0000 + + Remove unnecessary ternary operator + + Signed-off-by: hiba-aldalaty + +commit 2c17e5b073ad6fa65825fee105765b626b73ad50 +Author: hiba-aldalaty +Date: Mon Dec 6 11:33:00 2021 +0000 + + Fix active submenu items + + Signed-off-by: hiba-aldalaty + +commit 089a6157ffe21854fd5f7943fa6bc416202117d0 +Merge: ef64a444ca 884c451191 +Author: Kai Szybiak +Date: Mon Dec 6 12:08:54 2021 +0100 + + Merge backstage/master + + Signed-off-by: Kai Szybiak + +commit 884c451191480a0389e7e76744d08ba2aab7f09f +Merge: 731e9293bd f22299958f +Author: Himanshu Mishra +Date: Mon Dec 6 15:32:24 2021 +0530 + + Merge pull request #8376 from nick-laqua-dragon/patch-1 + + Update ADOPTERS.md + +commit 731e9293bd25e6b449d738e59b14b56b631bf16e +Merge: 963d69b30b e3e6e9a86d +Author: Otto Sichert +Date: Mon Dec 6 10:38:30 2021 +0100 + + Merge pull request #6335 from backstage/iameap/techdocs-cache + + [TechDocs] Optional static resource caching + +commit f22299958f46a33b15511ca1861e18361f3aff23 +Author: Nick Laqua <52642976+nick-laqua-dragon@users.noreply.github.com> +Date: Mon Dec 6 17:38:17 2021 +0800 + + Update ADOPTERS.md + + Adding Mox Bank as a public adopter + +commit 963d69b30b14f85a2c14011673001a3a70475454 +Merge: dd201b5fc1 e13f7e5605 +Author: Johan Haals +Date: Mon Dec 6 09:09:12 2021 +0100 + + Merge pull request #8371 from backstage/dependabot/npm_and_yarn/express-prom-bundle-6.4.1 + + chore(deps): bump express-prom-bundle from 6.3.6 to 6.4.1 + +commit dd201b5fc140e0b60f2521c6c25fb1259196c173 +Merge: 0d98f7a09c ef3a6977cf +Author: Johan Haals +Date: Mon Dec 6 09:08:44 2021 +0100 + + Merge pull request #8373 from backstage/dependabot/npm_and_yarn/types/compression-1.7.2 + + chore(deps-dev): bump @types/compression from 1.7.0 to 1.7.2 + +commit 94c3583f2b3478f9078cbde4ad73c81d0f6dfcf1 +Author: Himanshu Mishra +Date: Mon Dec 6 11:23:16 2021 +0530 + + scaffolder: update docs with v1beta3 syntax + + migration guide: https://backstage.io/docs/features/software-templates/migrating-from-v1beta2-to-v1beta3 + + Signed-off-by: Himanshu Mishra + +commit 0d98f7a09c000c95fe4105d8648a912b4853b6c1 +Merge: a2fbab1f07 b1da6c74d2 +Author: Himanshu Mishra +Date: Mon Dec 6 09:51:27 2021 +0530 + + Merge pull request #8370 from backstage/dependabot/npm_and_yarn/microsite/prettier-2.5.1 + +commit ef3a6977cfd8d7d84735e00e160cd5f1998200b3 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Mon Dec 6 04:16:45 2021 +0000 + + chore(deps-dev): bump @types/compression from 1.7.0 to 1.7.2 + + Bumps [@types/compression](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/compression) from 1.7.0 to 1.7.2. + - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) + - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/compression) + + --- + updated-dependencies: + - dependency-name: "@types/compression" + dependency-type: direct:development + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit e13f7e5605baf841d5bc4d1eda8eca3c218ae0ab +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Mon Dec 6 04:13:29 2021 +0000 + + chore(deps): bump express-prom-bundle from 6.3.6 to 6.4.1 + + Bumps [express-prom-bundle](https://github.com/jochen-schweizer/express-prom-bundle) from 6.3.6 to 6.4.1. + - [Release notes](https://github.com/jochen-schweizer/express-prom-bundle/releases) + - [Commits](https://github.com/jochen-schweizer/express-prom-bundle/compare/6.3.6...6.4.1) + + --- + updated-dependencies: + - dependency-name: express-prom-bundle + dependency-type: direct:production + update-type: version-update:semver-minor + ... + + Signed-off-by: dependabot[bot] + +commit b1da6c74d26c65803260f1e8d11a7373a4ae26e9 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Mon Dec 6 04:08:22 2021 +0000 + + chore(deps-dev): bump prettier from 2.5.0 to 2.5.1 in /microsite + + Bumps [prettier](https://github.com/prettier/prettier) from 2.5.0 to 2.5.1. + - [Release notes](https://github.com/prettier/prettier/releases) + - [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md) + - [Commits](https://github.com/prettier/prettier/compare/2.5.0...2.5.1) + + --- + updated-dependencies: + - dependency-name: prettier + dependency-type: direct:development + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit e3e6e9a86d2d654d1378e52adbf2f3ec03d00c2a +Author: Eric Peterson +Date: Sun Dec 5 17:05:07 2021 -0600 + + One last docs update to clarify new architecture. + + Signed-off-by: Eric Peterson + +commit ef600b3c8cfb84cb02fdfed6bb767b42257f96da +Author: Eric Peterson +Date: Sun Dec 5 16:50:09 2021 -0600 + + Review feedback. + + Signed-off-by: Eric Peterson + +commit a2fbab1f07ccd9fa1724fdc7e0bbc92bae54fc48 +Merge: e9f9947db2 dd19340ebc +Author: Fredrik Adelöw +Date: Sun Dec 5 13:02:11 2021 +0100 + + Merge pull request #8363 from Miltonjacomini/patch-1 + + Add Mosaico to ADOPTERS List + +commit dd19340ebc1ae91b5881aa14463678d79a67ab00 +Author: Fredrik Adelöw +Date: Sun Dec 5 12:37:12 2021 +0100 + + make prettier happy + + Signed-off-by: Fredrik Adelöw + +commit 07ac314fb2f891be0313d5d89ab3bd45f2b5b361 +Author: Andre Wanlin +Date: Sat Dec 4 11:50:38 2021 -0600 + + Improvements based on feedback + + Signed-off-by: Andre Wanlin + +commit 5b41684f6aca83d499dca3ff599cab2718b4873f +Author: Andre Wanlin +Date: Fri Nov 26 07:09:05 2021 -0600 + + Updated changeset to minor + + Signed-off-by: Andre Wanlin + +commit 868f1dae99086ebeb43f96282d746a41e6ad6664 +Author: Andre Wanlin +Date: Sat Nov 13 11:25:46 2021 -0600 + + Refactored to provide better API for Builds + + Signed-off-by: Andre Wanlin + +commit a77526afcdb23a019a6a925552bde4b02f9b2178 +Author: Andre Wanlin +Date: Sun Oct 31 16:54:08 2021 -0500 + + Added changeset and updated API Report + + Signed-off-by: Andre Wanlin + +commit 7d1a522abc464a53b6f8fd6d2a27392c5ff383cf +Author: Andre Wanlin +Date: Sun Oct 31 16:49:16 2021 -0500 + + Added getting builds by definition name + + Signed-off-by: Andre Wanlin + +commit 4a0292c67b420b55d69313c0830308a97b6aa8ac +Author: djamaile +Date: Sat Dec 4 16:59:33 2021 +0100 + + refactor: remove useEffect functionality + + Signed-off-by: djamaile + +commit e9f9947db2ebddc7d0bf0c09b2ee8be2c0ff1d05 +Merge: 7e726a10e9 2edcf7738f +Author: Natasha Issayeva <5281492+nissayeva@users.noreply.github.com> +Date: Fri Dec 3 14:23:57 2021 -0800 + + Merge pull request #8366 from backstage/natasha/fix-scaffolder-owner-bug + + Fix scaffolder repo owner bug + +commit 2edcf7738f01a6672ed1605da2eaab57246c02cc +Author: Nataliya Issayeva +Date: Fri Dec 3 16:48:53 2021 -0500 + + Add changeset + + Signed-off-by: Nataliya Issayeva + +commit 113a7442d8de8b5d916e1619cb87ffb2bce7cf6c +Author: Nataliya Issayeva +Date: Fri Dec 3 16:34:27 2021 -0500 + + Fix scaffolder repo owner bug + + Signed-off-by: Nataliya Issayeva + +commit 3ebc93120233a56a6df5d8b8e27853d0291cd5e4 +Author: Milton Jacomini Neto +Date: Fri Dec 3 17:37:52 2021 -0300 + + Add Mosaico to ADOPTERS List + +commit 7e726a10e9a2fc7ccd9d2f1658d20926789cd4e7 +Merge: 48738962e7 cfd01a2269 +Author: Fredrik Adelöw +Date: Fri Dec 3 19:39:39 2021 +0100 + + Merge pull request #8362 from ngranander/xcmetrics/bugfix + + [XCMetrics] Bugfix: Handle missing Xcode data + +commit cfd01a226956fde10c3a2d5b7f6b4fa3cdfcbe8a +Author: Niklas Granander +Date: Fri Dec 3 16:58:41 2021 +0100 + + Fix spelling in changeset + + Signed-off-by: Niklas Granander + +commit 343ef34599c642f8a26951da7c7839099f3f25c1 +Author: Niklas Granander +Date: Fri Dec 3 16:10:55 2021 +0100 + + Handle missing Xcode data from old versions of XCMetrics + + Signed-off-by: Niklas Granander + +commit 48738962e7cdeacad063755e2611f35f97c09331 +Merge: 1b8d3dd5c5 11673fe7b4 +Author: Johan Haals +Date: Fri Dec 3 15:45:35 2021 +0100 + + Merge pull request #8360 from backstage/jhaals/bump-cypress-request + + chore: bump @cypress/request + +commit 1b8d3dd5c5bac8575b3a200c4b5bc4f0a64ff123 +Merge: f046799197 ab4664e582 +Author: Ben Lambert +Date: Fri Dec 3 14:21:40 2021 +0100 + + Merge pull request #8207 from LucileDesfour/scaffolder-allowed-owner + + add allowed owner to scaffolder plugin (fix #8205) + +commit 11673fe7b452ec64503320eb4e4e7dd028ab4e7c +Author: Johan Haals +Date: Fri Dec 3 14:13:00 2021 +0100 + + chore: bump @cypress/request + + Signed-off-by: Johan Haals + +commit e847694fbbd3e5d4180056133c1dc75ad61c9265 +Author: blam +Date: Fri Dec 3 14:10:00 2021 +0100 + + chore: rebuild api-report now I fixed some issues + + Signed-off-by: blam + +commit f046799197daf646a23c573caa6e7a4a5ce51a6d +Merge: b84c49750d 972a047c43 +Author: Johan Haals +Date: Fri Dec 3 11:52:12 2021 +0100 + + Merge pull request #8356 from backstage/jhaals/microsite + + microsite: close html tags + +commit 972a047c432c6c0fe3b6393ac8a2cc1495e94bad +Author: Johan Haals +Date: Fri Dec 3 11:34:06 2021 +0100 + + microsite: close html tags + + Signed-off-by: Johan Haals + +commit b84c49750dafbd859df7e534ad8d10701c15d490 +Merge: d8bdd56534 8c84e4ef1f +Author: Fredrik Adelöw +Date: Fri Dec 3 11:26:54 2021 +0100 + + Merge pull request #8346 from backstage/additionalKnexConfig + + Additional knex config + +commit e0f5814037453d49e74a1804c7a7eae37cdf4345 +Author: blam +Date: Fri Dec 3 10:33:05 2021 +0100 + + chore: more code review comments + + Signed-off-by: blam + +commit d8bdd5653474ea66e140052455601366cfb0a6ca +Merge: 65c2ddd858 33a93b634e +Author: Johan Haals +Date: Fri Dec 3 10:32:29 2021 +0100 + + Merge pull request #8310 from kuangp/feat/gaAddress + + feat(analytics-module-ga): support self hosted analytics.js + +commit a76dacda24fe414f550e06d9b8efa84f1542e74a +Author: blam +Date: Fri Dec 3 10:24:01 2021 +0100 + + chore: fix up the api reports + + Signed-off-by: blam + +commit 388fd9bb7f1ec165ed938ab7abe314f97d404e32 +Author: blam +Date: Fri Dec 3 10:21:01 2021 +0100 + + chore: fixing some code review comments + + Signed-off-by: blam + +commit 65c2ddd8585412709a820b3eb5bf5e801bb30344 +Merge: 7e24dec644 210fcf63ee +Author: Fredrik Adelöw +Date: Fri Dec 3 10:15:02 2021 +0100 + + Merge pull request #8337 from backstage/freben/bazaar-default + + Fix Bazaar migration error + +commit acbb4cedd4c9b40f7392f6403641eda9aac74f7e +Author: blam +Date: Fri Dec 3 10:08:04 2021 +0100 + + chore: fix derpy merge conflicts + Signed-off-by: blam + +commit 7e24dec644d2540cc8a5404e3a2bf47fcc0151e3 +Merge: c010632f88 b0592c3809 +Author: Fredrik Adelöw +Date: Fri Dec 3 09:44:16 2021 +0100 + + Merge pull request #8354 from timja/add-timja-to-codeowners + + Add @timja to Jenkins CODEOWNERS + +commit b0592c38091dce1942b74fc652408bcb61927c4a +Author: Tim Jacomb +Date: Fri Dec 3 08:19:46 2021 +0000 + + Add @timja to Jenkins CODEOWNERS + + Signed-off-by: Tim Jacomb + +commit c010632f880761cc21d36118917c4e0af1fc6b4e +Author: Matthew Clarke +Date: Thu Dec 2 23:10:48 2021 +0000 + + kubernetes-plugin: integrate with top method from kubernetes client library (#8248) + + * kubernetes-plugin: integrate with top method from kubernetes client library + + Signed-off-by: mclarke + + * fix existing tests + + Signed-off-by: mclarke + + * prettier + + Signed-off-by: mclarke + + * add fetcher test + + Signed-off-by: mclarke + + * update api report + + Signed-off-by: mclarke + + * fix fe tests + + Signed-off-by: mclarke + + * fe tests + + Signed-off-by: mclarke + + * changeset + + Signed-off-by: mclarke + + * add skip metrics lookup flag + + Signed-off-by: mclarke + + * add skip metrics lookup to gke locator and docs + + Signed-off-by: mclarke + + * fix tests + + Signed-off-by: mclarke + + * minor change + + Signed-off-by: mclarke + + * missed prettier + + Signed-off-by: mclarke + + * missed file + + Signed-off-by: mclarke + + * more details to changeset + + Signed-off-by: mclarke + +commit e5976071eae1c2164d788832fb883762148cc54f +Author: Phil Kuang +Date: Thu Dec 2 17:10:00 2021 -0500 + + fix(sidebar): use ellipsis styling for overflowed text + + Signed-off-by: Phil Kuang + +commit 25dfc2d483bf46be57fa05b74dceab91f79cab0f +Author: Patrik Oldsberg +Date: Thu Dec 2 22:48:07 2021 +0100 + + add more explicit support for .mjs and .cjs extensions + + Signed-off-by: Patrik Oldsberg + +commit a6639021a629d93529d4b4495f3e7bc3b2d42f65 +Merge: 982daaf608 0e4daaa753 +Author: Patrik Oldsberg +Date: Thu Dec 2 22:06:08 2021 +0100 + + Merge pull request #8345 from backstage/rugvip/dups + + catalog-backend: disallow duplicate entity search keys + +commit 3368f27aef46b2e8198f3b8a2805f890c2f1aecc +Author: Patrik Oldsberg +Date: Thu Dec 2 19:53:59 2021 +0100 + + catalog-backend: fix handling of optional locations + + Signed-off-by: Patrik Oldsberg + +commit ad7338bb48703ce84b49b41f15363d71255f063a +Author: Patrik Oldsberg +Date: Thu Dec 2 19:33:22 2021 +0100 + + catalog-model: add presence field to locations + + Signed-off-by: Patrik Oldsberg + +commit 982daaf60810ab97ff9d07e7915ba64ecf1441e7 +Merge: c2da6492fb 9603827bb5 +Author: Fredrik Adelöw +Date: Thu Dec 2 21:09:48 2021 +0100 + + Merge pull request #8342 from backstage/freben/peer-deps + + Addressed some peer dependency warnings 🧹 + +commit 8c84e4ef1f8935a2a00fa840a65aacce97f7e7aa +Author: Fredrik Adelöw +Date: Thu Dec 2 21:06:48 2021 +0100 + + add test + + Signed-off-by: Fredrik Adelöw + +commit 0e4daaa753fb481a9ff10e6bbc565365aa9809dd +Author: Patrik Oldsberg +Date: Thu Dec 2 20:54:55 2021 +0100 + + catalog-backend: disallow duplicate entity search keys + + Signed-off-by: Patrik Oldsberg + +commit c401170b360d58d9295d4d7d6b940c5db423455f +Author: Adam Harvey +Date: Thu Dec 2 14:47:36 2021 -0500 + + Update changeset wording + + Signed-off-by: Adam Harvey + +commit 7d24709264d4a673ea77730ad7519138cb139754 +Author: Adam Harvey +Date: Thu Dec 2 14:30:44 2021 -0500 + + Fix URL typo + + Signed-off-by: Adam Harvey + +commit 6cecfbba7363b64be8dbea424295257027e0048a +Author: Fredrik Adelöw +Date: Thu Dec 2 19:53:44 2021 +0100 + + final tweaks + + Signed-off-by: Fredrik Adelöw + +commit 6298de32dd0a8e2bf61b022ef37ee3af4d788056 +Author: Andrew Shirley +Date: Thu Sep 2 14:39:17 2021 +0100 + + Add knexConfig sections to the config + + Signed-off-by: Andrew Shirley + +commit 9603827bb58ac671e1740430dd023a3541bf87e9 +Author: Fredrik Adelöw +Date: Thu Dec 2 19:32:42 2021 +0100 + + Addressed some peer dependency warnings + + Signed-off-by: Fredrik Adelöw + +commit 4862fbc64f5503a5f5944cb69a64d575c20339bc +Author: Adam Harvey +Date: Thu Dec 2 12:42:19 2021 -0500 + + Add changeset + + Signed-off-by: Adam Harvey + +commit bdf357956cd2dfd251f5c714ec93921bf2201462 +Author: Adam Harvey +Date: Thu Dec 2 12:33:38 2021 -0500 + + Align scripts order to monorepo + + Signed-off-by: Adam Harvey + +commit 2d3dd1e76fce11642314989f6e50bba758efa88e +Author: Adam Harvey +Date: Thu Dec 2 12:29:39 2021 -0500 + + Fix doco typo + + Signed-off-by: Adam Harvey + +commit cfd019b72114da5a536bfc41e08806d5cff900f8 +Author: Adam Harvey +Date: Thu Dec 2 12:29:16 2021 -0500 + + Update Backstage docs link + + Signed-off-by: Adam Harvey + +commit 2c503737550f0b14951f11e428160fbbdf2dd19d +Author: Adam Harvey +Date: Thu Dec 2 12:21:06 2021 -0500 + + Move test-utils to devDeps + + Signed-off-by: Adam Harvey + +commit 2c009db3b640deb31c1bd3dfcce72fba0d817792 +Author: Adam Harvey +Date: Thu Dec 2 12:20:44 2021 -0500 + + Bump Spotify's prettier + + Signed-off-by: Adam Harvey + +commit a955e16875ca60e4a8ffe954704528fb64909d7a +Author: Balasundaram +Date: Thu Dec 2 10:49:14 2021 -0500 + + Adding changes for PR review comments II + + Signed-off-by: Balasundaram + +commit c2da6492fb917002517a54638e1da6fa523f2a8f +Merge: 581288f670 ccec66ce16 +Author: Erik Engervall +Date: Thu Dec 2 16:26:00 2021 +0100 + + Merge pull request #8333 from backstage/erikengervall/assign-codeowner-grm-plugin + + Add @erikengervall as code owner for GRM plugin + +commit ccec66ce16646c23b20880e96e7ed5f367cb7740 +Author: Erik Engervall +Date: Thu Dec 2 13:33:38 2021 +0100 + + Add @erikengervall as code owner for GRM plugin + + Signed-off-by: Erik Engervall + +commit 210fcf63ee635ddfc4707a12195df5f844b380b7 +Author: Fredrik Adelöw +Date: Thu Dec 2 15:44:40 2021 +0100 + + Fix Bazaar migration error + + Signed-off-by: Fredrik Adelöw + +commit 98a9c35f0cdd668f23f652b94587e967494ac023 +Author: Marcus Eide +Date: Thu Dec 2 15:38:56 2021 +0100 + + Add changeset + + Signed-off-by: Marcus Eide + +commit 581288f6708bb4f3dd5fa21d05a4567817919acb +Merge: a05e7081b8 1a1756d538 +Author: Johan Haals +Date: Thu Dec 2 15:34:08 2021 +0100 + + Merge pull request #8325 from backstage/vinzscam/bump-esbuild-and-rollup + + Add cli option for minifying plugins and backend build + +commit ab4664e582468710bc8e0cf5e3246d2ad470a680 +Author: Lucile Desfour +Date: Thu Dec 2 14:56:00 2021 +0100 + + set change to patch + + Signed-off-by: Lucile Desfour + +commit 33a93b634e77de728527f631a0e8eb6d84c99181 +Author: Phil Kuang +Date: Thu Dec 2 08:54:00 2021 -0500 + + refactor(analytics-module-ga): rename gaAddress option to scriptSrc + + Signed-off-by: Phil Kuang + +commit 2a02690b1154a6484d275147b2f229a9ee2ac4b4 +Author: Marley Powell +Date: Thu Dec 2 13:34:14 2021 +0000 + + refactor: Moved around filter types. + + Signed-off-by: Marley Powell + +commit 259922bfb27c92d0f93e89ab7316b254cece2788 +Author: Marcus Eide +Date: Thu Dec 2 14:30:49 2021 +0100 + + Update api-reports + + Signed-off-by: Marcus Eide + +commit a05e7081b805006e3f0b2960a08a7753357f532f (tag: v0.57.0, tag: release-2021-12-02) +Merge: 382e3a94b3 29f2606ed9 +Author: Johan Haals +Date: Thu Dec 2 14:30:13 2021 +0100 + + Merge pull request #8247 from backstage/changeset-release/master + + Version Packages + +commit 382e3a94b35e1920f2eb16279ffef95cf40e77ff +Author: Emma Indal +Date: Thu Dec 2 14:26:32 2021 +0100 + + [Search] export search api interface (#8334) + + * export api interface from plugin + + Signed-off-by: Emma Indal + + * add changeset + + Signed-off-by: Emma Indal + + * export as type + + Signed-off-by: Emma Indal + + * update api reports + + Signed-off-by: Emma Indal + +commit 7b61f2c3b6d9dbe1c495b5dbe518412cb9937d31 +Author: Marcus Eide +Date: Thu Dec 2 14:19:02 2021 +0100 + + Make migrations object required + + Signed-off-by: Marcus Eide + +commit 29f2606ed911acedc18cf82adfc86dc3cb5c5a66 +Author: github-actions[bot] +Date: Thu Dec 2 12:35:24 2021 +0000 + + Version Packages + +commit 3b39323f2631862c690d5c1235395f9d389227a2 +Author: blam +Date: Thu Dec 2 11:04:33 2021 +0100 + + chore: revert some of the provider changes are they are handled in the OAuthAdapter now + + Signed-off-by: blam + +commit 11a90d6a79e82ea2028eabc6f1ffc4d081fe1b72 +Author: blam +Date: Wed Dec 1 16:29:14 2021 +0100 + + chore: revert some of the handling + + Signed-off-by: blam + +commit b3ac79d7c29f9eaecd3a2f78d9b22d57302af87d +Author: blam +Date: Wed Dec 1 16:19:24 2021 +0100 + + chore: updated the api-report for auth backend. probably need to make this a bit better. + + Signed-off-by: blam + +commit 39645e56ac32fe9dfedf5dac7a8114cf186eb35a +Author: blam +Date: Wed Dec 1 16:02:09 2021 +0100 + + chore: reworking the auth providers to decorate the identity from the token that is returned from the different providers + + Co-authored-by: Johan Haals + Signed-off-by: blam + +commit 29d0b45c6a660f604d5bc2fcc66ff669dacfdf3b +Author: blam +Date: Wed Dec 1 14:13:07 2021 +0100 + + chore: fixing issue with multi signin providers + + Co-authored-by: Johan Haals + Co-authored-by: Fredrik Adelöw + Signed-off-by: blam + +commit 64c3fc492e1956396019f5e6a67cd4d2fb3f639e +Author: blam +Date: Wed Dec 1 10:55:17 2021 +0100 + + chore: fix up api-reports and fix the export + + Co-authored-by: Johan Haals + Co-authored-by: Fredrik Adelöw + Signed-off-by: blam + +commit 0bb10226b8f618e9a932a283aeedace421ba9ebd +Author: blam +Date: Wed Dec 1 10:33:55 2021 +0100 + + chore: move some packges around so that we don't have bad imports + + Co-authored-by: Johan Haals + Co-authored-by: Fredrik Adelöw + Signed-off-by: blam + +commit 8c337a480f28b4eec6e991bb6c1d0575ef035655 +Author: Johan Haals +Date: Tue Nov 30 16:25:29 2021 +0100 + + chore: Update types and API reports + + Signed-off-by: Johan Haals + +commit 48e1d3bfca17449f202799df64ffb6ce75ff17fb +Author: Johan Haals +Date: Tue Nov 30 13:24:52 2021 +0100 + + chore: remove wip comments + + Signed-off-by: Johan Haals + +commit 15b98232d089f3b8b88e73bb86c7786aff8a34dd +Author: Johan Haals +Date: Tue Nov 30 13:19:21 2021 +0100 + + chore: drop wip comments + + Signed-off-by: Johan Haals + +commit e9471d274c244c13daa34250e242fa7ac3d164fe +Author: Johan Haals +Date: Tue Nov 30 13:14:48 2021 +0100 + + Use BackstageUserIdentity, fix tests + + Co-authored-by: blam + Co-authored-by: Fredrik Adelöw + Co-authored-by: Patrik Oldsberg + Signed-off-by: Johan Haals + +commit 5722e731aaa16aac7fc14bb6b29ee72ce713b19a +Merge: afa656ae6b 1925d1c5c6 +Author: Patrik Oldsberg +Date: Thu Dec 2 13:29:42 2021 +0100 + + Merge pull request #8292 from sonali-mishra-94/add-oauth2-header + + Add custom authorization header for OAuth2.0 strategy + +commit 32b04436608362c868a6fc9736f9124de5ec9b39 +Author: Johan Haals +Date: Fri Nov 26 16:05:32 2021 +0100 + + core-plugin-api: Use LegacyUserIdentity helper + + Co-authored-by: blam + Signed-off-by: Johan Haals + +commit 6304c8f94714b6fecb6759d831d5c1d2214b5aa2 +Author: Patrik Oldsberg +Date: Wed Nov 24 11:59:59 2021 +0100 + + core-plugin-api: Refactor IdentityApi + + Co-authored-by: Fredrik Adelöw + Co-authored-by: Johan Haals + Co-authored-by: blam + Signed-off-by: Patrik Oldsberg + +commit 50b3d1737dab6b17a0890d2144c991dc97758f39 +Author: Marley Powell +Date: Thu Dec 2 12:14:42 2021 +0000 + + feat: Created `createdByTeamFilter`, `createdByTeamsFilter` and `createdByUserFilter`. + + Signed-off-by: Marley Powell + +commit afa656ae6b7139df31086eac704ebd3445443836 +Merge: 90317d4dea d11fb7fe04 +Author: Ben Lambert +Date: Thu Dec 2 13:08:51 2021 +0100 + + Merge pull request #8302 from backstage/feat/search-modal-context + + [Search] Search Modal now relies on the Search Context + +commit 1925d1c5c666731625a3f2d1ca616543bd8dd9aa +Author: Patrik Oldsberg +Date: Thu Dec 2 13:08:41 2021 +0100 + + Update thin-poems-watch.md + + Signed-off-by: Patrik Oldsberg + +commit 90317d4deadfb678a517f8074072f6f9befc8aa3 +Merge: 019997dd4e e34f174fc5 +Author: Ben Lambert +Date: Thu Dec 2 13:08:35 2021 +0100 + + Merge pull request #7521 from hiba-aldalaty/scalable-sidebar-new-implementation + + New Scalable Side Nav design Implementation + +commit 70c46a708b626eb6b81a44280a59c22ed1a92fbc +Author: Marcus Eide +Date: Thu Dec 2 13:05:31 2021 +0100 + + Add options with migrations category + + Signed-off-by: Marcus Eide + +commit 019997dd4ef4e6330b1969f5b714f2869bc63b53 +Merge: 6276f4510d 4bf4111902 +Author: Patrik Oldsberg +Date: Thu Dec 2 13:03:55 2021 +0100 + + Merge pull request #8331 from backstage/rugvip/auth-fin + + auth-backend: migrate saml provider to sign-in resolver + +commit 8e2d3c9d548e1aada4decdb03fce784f7147fff5 +Author: Marley Powell +Date: Thu Dec 2 11:55:43 2021 +0000 + + feat: Created `assignedToTeamFilter`, `assignedToTeamsFilter` and `assignedToUserFilter`. + + Signed-off-by: Marley Powell + +commit 256d4983013ac3ada51ab03c6b9312e01ec20a2a +Author: Marley Powell +Date: Thu Dec 2 11:38:14 2021 +0000 + + feat: Created `allFilter`. + + Signed-off-by: Marley Powell + +commit d76ee63f8533ab0eecc129070b1175f4cb914d51 +Author: Marley Powell +Date: Thu Dec 2 11:37:43 2021 +0000 + + feat: Created types for filters. + + Signed-off-by: Marley Powell + +commit 6276f4510db9d66d4adb9bb9575b03638c820fe5 +Merge: 1f7c345191 2c4cda7506 +Author: Patrik Oldsberg +Date: Thu Dec 2 12:06:26 2021 +0100 + + Merge pull request #8318 from nodify-at/feature/auth_handler_and_sign-in_resolvers_oidc + + Auth handler and sign in resolvers for oidc provider + +commit 4bf4111902e215b6cb841b35a5ffd5a8e46cd6af +Author: Patrik Oldsberg +Date: Thu Dec 2 12:05:19 2021 +0100 + + auth-backend: migrate saml provider to sign-in resolver + + Signed-off-by: Patrik Oldsberg + +commit 1f7c3451913b932c525d619a2462409625fe403d +Merge: dfd26925ce f4d351d441 +Author: Patrik Oldsberg +Date: Thu Dec 2 12:04:27 2021 +0100 + + Merge pull request #8093 from RoadieHQ/scorecard-tech-insights + + Scorecard for tech insights + +commit e34f174fc5a29252d82307219331f899d325cda6 +Author: blam +Date: Thu Dec 2 11:38:25 2021 +0100 + + chore: added changeset + + Signed-off-by: blam + +commit d11fb7fe043183ce6f6d5e994dd7749ea609e938 +Author: Camila Belo +Date: Thu Dec 2 11:36:26 2021 +0100 + + refactor(search): use callback hook on the modal toggle + + Signed-off-by: Camila Belo + +commit f1efedc454f980bb20bf1ebe02ca1cdb44c12375 +Author: Camila Belo +Date: Thu Dec 2 11:35:08 2021 +0100 + + docs(search): change create-app semver to patch + + Signed-off-by: Camila Belo + +commit dfd26925cec1e25e9dc7c34fca4c61cfc4e7b2de +Merge: 41b056a2f1 c6c8b8e53e +Author: Fredrik Adelöw +Date: Thu Dec 2 11:34:13 2021 +0100 + + Merge pull request #8264 from jluk-box/tech-insights-readme-fixes + + Minor fixes in tech insights plugins readme + +commit 7877857b2d5e8c79edf435e02cf5e8e0cc61c22e +Author: blam +Date: Thu Dec 2 11:33:00 2021 +0100 + + chore: reset the ADOPTERS.md file + + Signed-off-by: blam + +commit 04305a3c599aebe4405cad7916aae882b51017dc +Author: blam +Date: Thu Dec 2 11:32:29 2021 +0100 + + chore: update the naming + + Signed-off-by: blam + +commit 2c4cda750608309d04b53c2931f71d17f18ad6b4 +Author: Hasan Ozdemir <21654050+nodify-at@users.noreply.github.com> +Date: Thu Dec 2 11:31:40 2021 +0100 + + define the profile in oidc provider without using makeProfile function + + Signed-off-by: Hasan Ozdemir <21654050+nodify-at@users.noreply.github.com> + +commit 41b056a2f1a17595c05df1e7eb7f3acc468fac49 +Merge: 74d786c322 73baf36ec8 +Author: Patrik Oldsberg +Date: Thu Dec 2 11:28:43 2021 +0100 + + Merge pull request #8327 from backstage/jhaals/fix-format + + chore: format ADOPTERS.md + +commit 74d786c322a2cbafd00ae4d63eedcb22be14f5d8 +Merge: 60cdac3b97 e3278ad900 +Author: Fredrik Adelöw +Date: Thu Dec 2 11:27:04 2021 +0100 + + Merge pull request #8321 from backstage/dependabot/npm_and_yarn/spotify/prettier-config-12.0.0 + + chore(deps-dev): bump @spotify/prettier-config from 11.0.0 to 12.0.0 + +commit 60cdac3b975c167a4b3cfd403506a30a1ed06509 +Merge: 197b10856b 4bea7b81d3 +Author: Patrik Oldsberg +Date: Thu Dec 2 11:26:48 2021 +0100 + + Merge pull request #8278 from dnsaoki2/config-loader-filtering + + config-loader(schema/filtering): uses key visibility as fallback + +commit 197b10856b35362455980db5362a15bf1bbf9859 +Merge: 39001c58fd 4b284fe9e5 +Author: Patrik Oldsberg +Date: Thu Dec 2 11:26:13 2021 +0100 + + Merge pull request #8269 from lorsatti/swagger-style + + Adapt Swagger style to the main theme + +commit 39001c58fd653d50946660b1d84bc15edfd45146 +Merge: 3cb775c9ea af09b1e059 +Author: Patrik Oldsberg +Date: Thu Dec 2 11:22:25 2021 +0100 + + Merge pull request #8313 from ngranander/xcmetrics/bugfix + + [XCMetrics] Handle invalid build statuses + +commit 4df3e7686c21854f1057c523aa272cf19e8bc2b3 +Author: Suzanne Daniels +Date: Thu Dec 2 11:05:03 2021 +0100 + + More capitalization fixes + + Signed-off-by: Suzanne Daniels + +commit 1a1756d5380af82eb55626b507433f950e1571bc +Author: Vincenzo Scamporlino +Date: Thu Dec 2 10:53:36 2021 +0100 + + Add minify option to backend:build + + Co-authored-by: Ainhoa Larumbe + Signed-off-by: Vincenzo Scamporlino + +commit 1c03759c47c0c7164aa417ff026367e5d5d34fc5 +Author: Suzanne Daniels +Date: Thu Dec 2 10:51:28 2021 +0100 + + Resolved feedback (links, capitalization, vale) + + Signed-off-by: Suzanne Daniels + +commit 73baf36ec8d9e48db668dc54d31c1958cdb41fa4 +Author: Johan Haals +Date: Thu Dec 2 10:50:10 2021 +0100 + + chore: format ADOPTERS.md + + with `--config docs/prettier.config.js --write ADOPTERS.md` + + Signed-off-by: Johan Haals + +commit 3edae6a3e858fb17a5b089fddcb8dbfc57ca5416 +Author: Vincenzo Scamporlino +Date: Thu Dec 2 10:47:08 2021 +0100 + + Add documentation + + Co-authored-by: Ainhoa Larumbe + Signed-off-by: Vincenzo Scamporlino + +commit 3cb775c9eaab5853b5900462d17d1ef2f7d05a8f +Merge: 2c7875fe3d 54989b671d +Author: Fredrik Adelöw +Date: Thu Dec 2 10:45:30 2021 +0100 + + Merge pull request #8326 from backstage/freben/redacting-undefined-huh + + Fix a potential crash in the log redaction code + +commit 2a3fb13718a68657859ecfb89f3fd4bfab648ffc +Author: Vincenzo Scamporlino +Date: Thu Dec 2 10:39:16 2021 +0100 + + Split changeset + + Co-authored-by: Ainhoa Larumbe + Signed-off-by: Vincenzo Scamporlino + +commit 2c7875fe3d3f5ebeca5bdf17601818f3f4abd49a +Merge: 3f275ae02c d8ce25f4aa +Author: Patrik Oldsberg +Date: Thu Dec 2 10:36:14 2021 +0100 + + Merge pull request #8324 from backstage/dependabot/npm_and_yarn/eslint-plugin-react-7.27.1 + + chore(deps): bump eslint-plugin-react from 7.22.0 to 7.27.1 + +commit 3f275ae02c44637fcda67ae9098e106f273fa25d +Merge: 7eae31aa3b f6e0dcb334 +Author: Patrik Oldsberg +Date: Thu Dec 2 10:35:55 2021 +0100 + + Merge pull request #8322 from backstage/dependabot/npm_and_yarn/history-5.1.0 + + chore(deps): bump history from 5.0.1 to 5.1.0 + +commit 7eae31aa3b3cd11e3dbe39ab95aad76513ac437a +Merge: 6ed24445a9 bacb94ea8f +Author: Patrik Oldsberg +Date: Thu Dec 2 10:35:07 2021 +0100 + + Merge pull request #8319 from backstage/rugvip/extdocs + + core-plugin-api: documented extension creator options + +commit 6ed24445a9b618ab48ac053f98ded1662604f3a8 +Author: Joon Park +Date: Thu Dec 2 03:30:56 2021 -0600 + + @backstage/plugin-permission-react (#8215) + + * Add @backstage/plugin-permission-react + + Signed-off-by: Joon Park + +commit 54989b671d0c85aed74ffc5d10b5254b2587980e +Author: Fredrik Adelöw +Date: Thu Dec 2 10:10:34 2021 +0100 + + Fix a potential crash in the log redaction code + + Signed-off-by: Fredrik Adelöw + +commit 0ebb05eee2c0b278dba11118918c7195fc77366c +Author: Vincenzo Scamporlino +Date: Thu Dec 2 10:05:08 2021 +0100 + + Add changeset + + Signed-off-by: Vincenzo Scamporlino + +commit 24d2ce03f389f311ab68df7d99de35ada35f78b1 +Author: Emma Indal +Date: Thu Dec 2 09:51:55 2021 +0100 + + separation of changesets + + Signed-off-by: Emma Indal + +commit bac29f1cde0c187db7d748bf1ec99214684cfd02 +Author: Emma Indal +Date: Thu Dec 2 09:47:48 2021 +0100 + + remove space + + Signed-off-by: Emma Indal + +commit 03eb26f8e86ddbb5b4d6cac6ef40a89348e6cf4b +Author: Emma Indal +Date: Thu Dec 2 09:46:37 2021 +0100 + + use markdown diff instead of two code blocks + + Signed-off-by: Emma Indal + +commit 57f15a25c75992d6fbb9152db4908b3b71ede3fc +Merge: fb997f9f70 59677fadb1 +Author: Johan Haals +Date: Thu Dec 2 09:44:48 2021 +0100 + + Merge pull request #8315 from adamdmharvey/update-api-ref + + chore(docs): Minor updates to improve the API Reference + +commit fb997f9f70576724ae71f4268b4223d1f2c96b77 +Merge: 2baf14dc7d 450ca92330 +Author: MT Lewis +Date: Thu Dec 2 08:42:19 2021 +0000 + + Merge pull request #8296 from backstage/permission-integration-well-known + + permissions: change permission integration route to use /.well-known prefix + +commit 4df32ebf2f0a08d303854a50c97856981c7227c9 +Author: Sonali Mishra +Date: Thu Dec 2 16:24:49 2021 +0800 + + Cleanup changeset + + Signed-off-by: Sonali Mishra + +commit 1b69ed44f2cb890d5b13f0336e38b014397eb530 +Author: Sonali Mishra +Date: Wed Dec 1 11:49:34 2021 +0800 + + Add custom authorization header for OAuth2.0 strategy + + Signed-off-by: Sonali Mishra + Signed-off-by: Sonali Mishra + +commit d8ce25f4aa6af73cf66e1f6879fe418986bb90a3 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Thu Dec 2 04:30:25 2021 +0000 + + chore(deps): bump eslint-plugin-react from 7.22.0 to 7.27.1 + + Bumps [eslint-plugin-react](https://github.com/yannickcr/eslint-plugin-react) from 7.22.0 to 7.27.1. + - [Release notes](https://github.com/yannickcr/eslint-plugin-react/releases) + - [Changelog](https://github.com/yannickcr/eslint-plugin-react/blob/master/CHANGELOG.md) + - [Commits](https://github.com/yannickcr/eslint-plugin-react/compare/v7.22.0...v7.27.1) + + --- + updated-dependencies: + - dependency-name: eslint-plugin-react + dependency-type: direct:production + update-type: version-update:semver-minor + ... + + Signed-off-by: dependabot[bot] + +commit f6e0dcb33402d8f8bc0dda5f8666ab7d189574c2 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Thu Dec 2 04:26:17 2021 +0000 + + chore(deps): bump history from 5.0.1 to 5.1.0 + + Bumps [history](https://github.com/ReactTraining/history) from 5.0.1 to 5.1.0. + - [Release notes](https://github.com/ReactTraining/history/releases) + - [Commits](https://github.com/ReactTraining/history/compare/v5.0.1...v5.1.0) + + --- + updated-dependencies: + - dependency-name: history + dependency-type: direct:production + update-type: version-update:semver-minor + ... + + Signed-off-by: dependabot[bot] + +commit e3278ad90097fe10134cacf5c183cb9769ee357b +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Thu Dec 2 04:18:10 2021 +0000 + + chore(deps-dev): bump @spotify/prettier-config from 11.0.0 to 12.0.0 + + Bumps [@spotify/prettier-config](https://github.com/spotify/web-scripts) from 11.0.0 to 12.0.0. + - [Release notes](https://github.com/spotify/web-scripts/releases) + - [Changelog](https://github.com/spotify/web-scripts/blob/master/CHANGELOG.md) + - [Commits](https://github.com/spotify/web-scripts/compare/v11.0.0...v12.0.0) + + --- + updated-dependencies: + - dependency-name: "@spotify/prettier-config" + dependency-type: direct:development + update-type: version-update:semver-major + ... + + Signed-off-by: dependabot[bot] + +commit 067ddb7abbd5b49fdaf3aa37924e23645110ccac +Author: Patrik Oldsberg +Date: Thu Dec 2 01:23:40 2021 +0100 + + auth-backend: switch saml config to use privateKey + + Signed-off-by: Patrik Oldsberg + +commit 59677fadb1d36002d7bc879cfe5b4cd20f1ee5f6 +Author: Adam Harvey +Date: Wed Dec 1 19:06:48 2021 -0500 + + Add changeset + + Signed-off-by: Adam Harvey + +commit f3238cd9c82cd2562195fd4f4baa1b012a4f9fb2 +Author: Adam Harvey +Date: Wed Dec 1 19:03:38 2021 -0500 + + Move MUI link to be more generic to avoid version specifics + + Signed-off-by: Adam Harvey + +commit dd144ef356ea752aed70b0591b99b764bcd5f169 +Author: Hasan Ozdemir <21654050+nodify-at@users.noreply.github.com> +Date: Thu Dec 2 00:47:55 2021 +0100 + + update the change set + + Signed-off-by: Hasan Ozdemir <21654050+nodify-at@users.noreply.github.com> + +commit 7d50123cd50711f7628fd9a8fb7e70465dd6921f +Author: Hasan Ozdemir <21654050+nodify-at@users.noreply.github.com> +Date: Thu Dec 2 00:41:38 2021 +0100 + + add access_type to issuer client to receive a refresh token + + Signed-off-by: Hasan Ozdemir <21654050+nodify-at@users.noreply.github.com> + +commit 36fa32216f08edf2610096ae06a078850b7a6cb3 +Author: Hasan Ozdemir <21654050+nodify-at@users.noreply.github.com> +Date: Wed Dec 1 23:54:12 2021 +0100 + + Auth handler and sign in resolvers for oidc provider + + Signed-off-by: Hasan Ozdemir <21654050+nodify-at@users.noreply.github.com> + +commit 7f30ca6e457ea5cdb0968fa89e9379d4242bd72e +Merge: 7c6cb5a12f 2baf14dc7d +Author: djamaile +Date: Thu Dec 2 00:25:31 2021 +0100 + + Merge branch 'backstage:master' into master + +commit bacb94ea8f1a566c5b4bf26c83cde949674b4819 +Author: Patrik Oldsberg +Date: Thu Dec 2 00:08:31 2021 +0100 + + core-plugin-api: documented extension creator options + + Signed-off-by: Patrik Oldsberg + +commit 2baf14dc7d9b62feb0ac4029c6019187463e1bec +Merge: 87aecc6fab 208ccc2ee2 +Author: Patrik Oldsberg +Date: Wed Dec 1 23:14:39 2021 +0100 + + Merge pull request #8314 from adamdmharvey/finish-test-utils-core + + chore: Finish removal of test-utils-core + +commit 7c6cb5a12fc92ad6ce27478da157f6c259f642c0 +Author: djamaile +Date: Wed Dec 1 22:46:23 2021 +0100 + + chore: remove callback function + + Signed-off-by: djamaile + +commit 87aecc6fab56be6a9fff15de21d4517fe4a78e71 +Merge: ae0f316397 2f682e8557 +Author: Tim Hansen +Date: Wed Dec 1 13:12:32 2021 -0700 + + Merge pull request #8316 from backstage/adamdmharvey-patch-1 + + chore: Add Adam to CircleCI CODEOWNER + +commit ae0f316397c2c9993aa4d27fe583d8fa833682b4 +Merge: 5c26fbf555 d2a87cba78 +Author: Tim Hansen +Date: Wed Dec 1 13:11:49 2021 -0700 + + Merge pull request #8307 from angeliski/add-rails-module-codeowner + + chore: CODEOWNERS for scaffolder module rails + +commit 5c26fbf555e2112400a24223a2218b4525f49dd3 +Merge: a972233f7d 0398ea25d3 +Author: Tim Hansen +Date: Wed Dec 1 13:10:27 2021 -0700 + + Merge pull request #8309 from backstage/deprecate-scaffolder-config + + Clean up scaffolder config + +commit 402f4cbf33bca22fcf74bca2655bcdb39dc93517 +Author: Suzanne Daniels +Date: Wed Dec 1 21:09:47 2021 +0100 + + Corrected markdown faults + + Signed-off-by: Suzanne Daniels + +commit 44c72988755127a6fb757f17ca5e0952e7a933e0 +Author: Suzanne Daniels +Date: Wed Dec 1 20:52:54 2021 +0100 + + Added screenshots, improving text + + Signed-off-by: Suzanne Daniels + +commit 2f682e85577a0d9ab298f52963d38e788a0d95ae +Author: Adam Harvey +Date: Wed Dec 1 14:46:23 2021 -0500 + + Add Adam to CircleCI + + Signed-off-by: Adam Harvey + +commit a949ecfa8236d7f5e3411d1fb368b09eb638c4ce +Author: Adam Harvey +Date: Wed Dec 1 14:17:49 2021 -0500 + + Update API report + + Signed-off-by: Adam Harvey + +commit 22bcaafa49539a9ba11858905ebf38a7e4dacc6c +Author: Adam Harvey +Date: Wed Dec 1 14:10:35 2021 -0500 + + Add packageDocumentation + + Signed-off-by: Adam Harvey + +commit b804a9abb795fc888f48a3b5b9d27b32a0ec0636 +Author: Adam Harvey +Date: Wed Dec 1 14:10:15 2021 -0500 + + Link to MUI theming + + Signed-off-by: Adam Harvey + +commit 9394bd396b8303ab8cabe10b29e58f1613e11f9a +Author: Adam Harvey +Date: Wed Dec 1 14:09:51 2021 -0500 + + Capitalize Kubernetes and code fence plugin names + + Signed-off-by: Adam Harvey + +commit 208ccc2ee24722cf0103efb45baa14fc7528fc1a +Author: Adam Harvey +Date: Wed Dec 1 13:57:29 2021 -0500 + + Remove legacy test-utils-core package + + Signed-off-by: Adam Harvey + +commit 7476c519ba7621367f9f14efbfd58e9eb1a02dc9 +Author: Adam Harvey +Date: Wed Dec 1 13:56:30 2021 -0500 + + Remove deprecated test-utils-core package + + Signed-off-by: Adam Harvey + +commit af09b1e059e10c63a7a78bb7ee04fa439e427c76 +Author: Niklas Granander +Date: Wed Dec 1 19:49:39 2021 +0100 + + Fix bug in XCMetrics plugin where invalid build statuses led to crashes + + Signed-off-by: Niklas Granander + +commit 89599a43c628b6b7004fe7aa8301b40f2597b744 +Author: Balasundaram +Date: Wed Dec 1 12:50:16 2021 -0500 + + Adding changes for PR review comments + + Signed-off-by: Balasundaram + +commit 602e637f4727c75395eb0a20f585935551708192 +Author: Suzanne Daniels +Date: Wed Dec 1 18:42:20 2021 +0100 + + initial + + Signed-off-by: Suzanne Daniels + +commit 4bea7b81d39516483a34a1aa9b9417b3387dfb44 +Author: dnsaoki2 +Date: Mon Nov 29 14:29:52 2021 -0300 + + config-loader(schema/filtering): uses key visibility as fallback + + Signed-off-by: dnsaoki2 + +commit a972233f7dd52eb10b85bc82b9ff8a276e742a59 +Merge: cec1a6ecc3 9a1c8e92eb +Author: Patrik Oldsberg +Date: Wed Dec 1 18:34:53 2021 +0100 + + Merge pull request #8298 from macripps/macripps/show-theme-title-in-card + + Use `theme.title` instead of `theme.variant` in the theme switcher + +commit 704235786ac813150a80b75367a816e33d2cf221 +Author: Phil Kuang +Date: Wed Dec 1 12:32:43 2021 -0500 + + feat(analytics-module-ga): support self hosted analytics.js + + Signed-off-by: Phil Kuang + +commit cec1a6ecc3838535f9752fa1329d83e7ceff869a +Merge: 8bcd49cfaf 6efe04485d +Author: Tim Hansen +Date: Wed Dec 1 10:32:19 2021 -0700 + + Merge pull request #8279 from Narayan-dasari/master + + fix(circleci): Mapping vcs-type dynamically instead of hardcoding to git + +commit 8bcd49cfaf60f38203420e29e5d0cbef84b5ae17 +Merge: 8d20ab40c6 6b500622d5 +Author: Fredrik Adelöw +Date: Wed Dec 1 18:26:28 2021 +0100 + + Merge pull request #8304 from backstage/freben/less-cross + + remove more cross-fetch usage in backends + +commit 0398ea25d3c08685f3c3f33aba32c5f1b4bfdec3 +Author: Tim Hansen +Date: Wed Dec 1 10:20:38 2021 -0700 + + Clean up scaffolder config + + Signed-off-by: Tim Hansen + +commit d2a87cba78fd70d55a1409a99ee12c921b89f373 +Author: Rogerio Angeliski +Date: Wed Dec 1 14:19:05 2021 -0300 + + chore: CODEOWNERS for scaffolder module rails + + Signed-off-by: Rogerio Angeliski + +commit 8d20ab40c6a4e0582c6b6ef0039b9cb4e1ce17e9 +Merge: b4846ae5dc a89ada59cf +Author: Patrik Oldsberg +Date: Wed Dec 1 18:11:16 2021 +0100 + + Merge pull request #8282 from marleypowell/marley/7678-pr-dashboard-backend + + feat: Added new backend endpoints for PR dashboard and implemented long polling for PRs + +commit b4846ae5dc55b327faa50381bfc50009d69735d9 +Merge: 25341777bc 3be6234592 +Author: Camila Belo +Date: Wed Dec 1 17:52:00 2021 +0100 + + Merge pull request #8305 from backstage/feat/new-default-result-item + + [Search] Add optional icon and secondaryAction properties + +commit 25341777bc3450fa070bff5fa1d5c00d06df3a2f +Merge: ab393eb0ee 391ba7df9b +Author: Ben Lambert +Date: Wed Dec 1 17:49:10 2021 +0100 + + Merge pull request #8301 from pawelmitka/codeowners_scaffolder-backend-module-yeoman + + chore: CODEOWNERS for scaffolder module yeoman + +commit 6130421aa2c53620b5a5969eb8f7557f15e93466 +Author: Emma Indal +Date: Wed Dec 1 17:40:05 2021 +0100 + + prettier fix + + Signed-off-by: Emma Indal + Co-authored-by: Camila Belo + Signed-off-by: Emma Indal + +commit 75bfbbbcb382dc0232803453ea7abb7a9ba1ff89 +Merge: 8836aef4a3 ab393eb0ee +Author: hiba-aldalaty +Date: Wed Dec 1 16:40:07 2021 +0000 + + Merge branch 'master' into scalable-sidebar-new-implementation + + Signed-off-by: hiba-aldalaty + +commit 873bb2618cbf8093b47c768745685c2d034b196b +Author: Camila Belo +Date: Wed Dec 1 16:21:00 2021 +0100 + + docs(search): build api reports + + Co-authored-by: Emma Indal + Signed-off-by: Camila Belo + +commit c5b6045f3613eba212f34edb9d5a028524155ff2 +Author: Camila Belo +Date: Wed Dec 1 16:15:35 2021 +0100 + + docs(search): add changeset file + + Co-authored-by: Emma Indal + Signed-off-by: Camila Belo + +commit 662636227b14dc8f9658f551962d2138e4f79339 +Author: Camila Belo +Date: Wed Dec 1 16:05:38 2021 +0100 + + feat(search): move the modal state to context + + Co-authored-by: Emma Indal + Signed-off-by: Camila Belo + +commit ab393eb0ee1132b7192afa60752145ded9d061b0 +Merge: 7ab46ae922 9bc88c24e7 +Author: Tim Hansen +Date: Wed Dec 1 09:24:06 2021 -0700 + + Merge pull request #8290 from nikkhn/patch-1 + + Update docker.md + +commit 6efe04485deea22c5bf6a3cad5f9da9ea8c663c1 +Author: Lakshmi Narayana +Date: Wed Dec 1 10:19:01 2021 -0600 + + Fixed the spellcheck and grammar issue + + Signed-off-by: Lakshmi Narayana + +commit 4adbda5162e9e5601a2e0127f6871afc2d2d61a1 +Author: Vincenzo Scamporlino +Date: Wed Dec 1 17:15:47 2021 +0100 + + Add minify option + + Signed-off-by: Vincenzo Scamporlino + +commit 7ab46ae92208685dfcfa6177d2ec755d33a748a3 +Merge: b7b33e0293 7c89e7028d +Author: Patrik Oldsberg +Date: Wed Dec 1 17:15:10 2021 +0100 + + Merge pull request #8245 from backstage/mob/deprecate-cli-comamnds + + Deprecate some CLI commands and options + +commit 3be6234592a0b800a0b02aa3cb433782af3b06b4 +Author: Camila Belo +Date: Wed Dec 1 17:14:54 2021 +0100 + + docs(search): build api reports + + Co-authored-by: Emma Indal + Signed-off-by: Camila Belo + +commit f06ecd09a74fb740c01aa7496264a1bfd9bfb5fe +Author: Camila Belo +Date: Wed Dec 1 17:07:34 2021 +0100 + + docs(search) add changeset file + + Co-authored-by: Emma Indal + Signed-off-by: Camila Belo + +commit 00da5bfca75b5158e2cffd7a9d3d191a69318e34 +Author: Camila Belo +Date: Wed Dec 1 17:03:33 2021 +0100 + + feat(search): add optional icon and secondary action for default result items + + Co-authored-by: Emma Indal + Signed-off-by: Camila Belo + +commit 450ca923306b95a07e29a0a106f89c890f9ccafb +Author: MT Lewis +Date: Wed Dec 1 11:40:44 2021 +0000 + + permissions: change permission integration route to use /.well-known prefix + + Signed-off-by: MT Lewis + +commit 6b500622d5dd0183b1a2b97f0c00c94b7f7ad53b +Author: Fredrik Adelöw +Date: Wed Dec 1 16:50:26 2021 +0100 + + remove more cross-fetch usage in backends + + Signed-off-by: Fredrik Adelöw + +commit 9bc88c24e7be3bff5b839cd6a5ec39fc0c7f2976 +Author: Nikki Nikkhoui +Date: Tue Nov 30 17:24:57 2021 -0800 + + run prettier + + Signed-off-by: Nikki Nikkhoui + +commit d391c33173567085b9336cbd1837f30cb54dd807 +Author: Nikki Nikkhoui +Date: Tue Nov 30 12:52:08 2021 -0800 + + Update docker.md + + add missing "to" + + Signed-off-by: Nikki Nikkhoui + +commit 2f45b2987573abb267c4bdfbbcdb5f7846cbe7f4 +Author: Marcus Eide +Date: Wed Dec 1 16:21:40 2021 +0100 + + Change runMigrations to only accept a boolean + + Signed-off-by: Marcus Eide + +commit 9a1c8e92eb2286e8beb6506e95add851cfbb6412 +Author: Mike Cripps +Date: Wed Dec 1 15:16:56 2021 +0000 + + Add changeset + + Signed-off-by: Mike Cripps + +commit 391ba7df9be4321fe1e8dd2f3992ab33ab6cf4f3 +Author: Paweł Mitka +Date: Wed Dec 1 15:56:05 2021 +0100 + + chore: CODEOWNERS for scaffolder module yeoman + + Setup scaffolder-backend-module-yeoman CODEOWNERS following #8294 + + Signed-off-by: @pawelmitka + +commit b7b33e02932ce60df7be43f85f252baf755aa509 +Merge: e8cded0d44 11e2673594 +Author: Camila Belo +Date: Wed Dec 1 16:01:19 2021 +0100 + + Merge pull request #8300 from backstage/feat/search-bar-clear-button + + [SearchBar] Add a new optional clear button prop + +commit c6c8b8e53e044eb2bc2588f1556255891a33fa51 +Author: jluk-box <77735420+jluk-box@users.noreply.github.com> +Date: Thu Nov 25 12:27:35 2021 +0100 + + Minor fixes in tech insights plugins readme + + Signed-off-by: Jarek Łukow + +commit 11e267359437dd23e82b9ec9b0efec4a79eed02c +Author: Camila Belo +Date: Wed Dec 1 15:30:33 2021 +0100 + + docs(search): build api reports + + Co-authored-by: Emma Indal + Signed-off-by: Camila Belo + +commit c5941d5c30538fb8f58f43c054f550f2be9d41cc +Author: Camila Belo +Date: Wed Dec 1 15:01:23 2021 +0100 + + chore(search): add changeset file + + Co-authored-by: Emma Indal + Signed-off-by: Camila Belo + +commit 9c19328da9d2cf2e607a829d34d899e99d3822b3 +Author: Camila Belo +Date: Wed Dec 1 14:56:12 2021 +0100 + + feat(search): Add optional clear button prop + + Co-authored-by: Emma Indal + Signed-off-by: Camila Belo + +commit a5a6cd5db781379c46c9e8e0b69be0976f7d557e +Author: Camila Belo +Date: Wed Dec 1 14:55:36 2021 +0100 + + docs(search): update the number of engines + + Co-authored-by: Emma Indal + Signed-off-by: Camila Belo + +commit 4cadc97a56f75ce4a3c2cb66d3d38411364bf786 +Author: Mike Cripps +Date: Wed Dec 1 13:30:21 2021 +0000 + + Use `theme.title` instead of `theme.variant` in the theme switcher + + Signed-off-by: Mike Cripps + +commit 5cb156ef3b0b6c23467d3980e58520a3d06b181e +Author: Marcus Eide +Date: Wed Dec 1 14:19:21 2021 +0100 + + Add tests for runMigrations argument when creating a database manager + + Signed-off-by: Marcus Eide + +commit b4588ffdb1db84762ea0d748931962ca23ae45a5 +Author: Marcus Eide +Date: Wed Dec 1 14:18:53 2021 +0100 + + Conditionally run db migrations in catalog backend + + Signed-off-by: Marcus Eide + +commit 86e1fbde1d73d1c10fac5271c42a8b9097ca01e1 +Author: Marcus Eide +Date: Wed Dec 1 14:17:49 2021 +0100 + + Add runMigrations argument to DatabaseManager + + Signed-off-by: Marcus Eide + +commit e8cded0d442d366356187f51e2459f3ba6186754 +Author: Deepak Bhardwaj <62239457+deepak-bhardwaj-ps@users.noreply.github.com> +Date: Wed Dec 1 18:45:06 2021 +0530 + + Allure plugin codeowner (#8295) + + * Add CodeSee architecture diagram workflow to repository + + * Added myself as Allure plugin codeowner + + Signed-off-by: Deepak Bhardwaj + + * Deleting unnecessary file + + Signed-off-by: Deepak Bhardwaj + + Co-authored-by: codesee-architecture-diagrams[bot] <86324825+codesee-architecture-diagrams[bot]@users.noreply.github.com> + +commit 15b0547541585112d4ece41a38025fcc4149c9c4 +Merge: 4d35309170 3469777312 +Author: Johan Haals +Date: Wed Dec 1 14:14:32 2021 +0100 + + Merge pull request #8297 from nirga/patch-1 + + Added myself as codeowner for Kafka plugin + +commit 3469777312dc7461f73eda629d1f4734c289a599 +Author: Nir Gazit +Date: Wed Dec 1 14:59:53 2021 +0200 + + Added explicit kafka directories + + Signed-off-by: Nir Gazit + +commit 4b284fe9e578a09d197819979e411ab5c247f7a9 +Author: Lorenzo Orsatti <49567430+lorsatti@users.noreply.github.com> +Date: Wed Dec 1 13:37:16 2021 +0100 + + apply review comments + + Signed-off-by: Lorenzo Orsatti <49567430+lorsatti@users.noreply.github.com> + +commit fb0d94ad2e549f60d2d5718cbefb7b85673c6b97 +Author: Nir Gazit +Date: Wed Dec 1 14:09:31 2021 +0200 + + Update CODEOWNERS + + Signed-off-by: Nir Gazit + +commit a416dbca4fdfb984f3495bb94111c2523b5a841e +Author: Nir Gazit +Date: Wed Dec 1 14:08:18 2021 +0200 + + Added myself as codeowner for Kafka plugin + + Signed-off-by: Nir Gazit + +commit 4d353091701f386069bbdadb438173e64b511256 +Merge: b82f15decc f6087fc8f8 +Author: Patrik Oldsberg +Date: Wed Dec 1 10:57:14 2021 +0100 + + Merge pull request #8284 from ccodreanu/cronjobs_batchv1beta1 + + Request CronJobs with older apiGroup + +commit 682eaa22e3820a90b4d40b93985b98a1f6a2e2aa +Author: Vincenzo Scamporlino +Date: Wed Dec 1 10:16:35 2021 +0100 + + Bump esbuild and rollup + + Signed-off-by: Vincenzo Scamporlino + +commit f4d351d441dda073e1650730e9e9af6421608454 +Author: irma12 +Date: Wed Dec 1 10:24:07 2021 +0100 + + Last fixes + + Signed-off-by: irma12 + +commit b82f15decc853d942cb6349cc62f7b44cc9df727 +Merge: ffc2797e29 8c6f4810c9 +Author: MT Lewis +Date: Wed Dec 1 09:20:22 2021 +0000 + + Merge pull request #8285 from backstage/permission-type-refactor + + permission-node: rename and adjust policy return type to reduce nesting + +commit a89ada59cf0573bfef4cb6e74c7e840df9e4a417 +Author: Marley Powell +Date: Wed Dec 1 08:28:53 2021 +0000 + + refactor: Converted `PolicyTypeId` from `const` to `enum`. + + Signed-off-by: Marley Powell + +commit ffc2797e292ab0d0e63297e34d7803e74b5ca316 +Merge: cde0ba242d 2b07b1cf34 +Author: Ben Lambert +Date: Wed Dec 1 09:24:45 2021 +0100 + + Merge pull request #8291 from kiranpatel11/master + + add Telstra to ADOPTERS list + +commit b2d87cc0a00bdc004a694cf9df2cda652f398303 +Author: Marley Powell +Date: Wed Dec 1 08:07:26 2021 +0000 + + refactor: Removed deprecated use of `path` for `createRouteRef`. + + Signed-off-by: Marley Powell + +commit f0c16fc82afe84cb51a41313d8d19584acf4e0bf +Merge: 82cd709fdb cde0ba242d +Author: Marley Powell +Date: Wed Dec 1 08:01:06 2021 +0000 + + Merge branch 'master' of https://github.com/backstage/backstage into marley/7678-pr-dashboard-backend + +commit 2b07b1cf3467f5b86ede767cdb328da5f0a07879 +Author: Kiran +Date: Wed Dec 1 14:13:28 2021 +1100 + + add Telstra to ADOPTERS list + +commit 5a46712a7d6e6d095f01bd73c2f6b5b279981d4c +Author: Lakshmi Narayana +Date: Tue Nov 30 19:42:20 2021 -0600 + + Patch-Changeset added for circleci plugin + + Signed-off-by: Lakshmi Narayana + +commit cde0ba242d45c7c73918dac350d03aa6c67b1909 +Merge: ed9347f1a8 1a792a7ef6 +Author: Patrik Oldsberg +Date: Wed Dec 1 01:37:27 2021 +0100 + + Merge pull request #8216 from brexhq/k8s-api-version-overrides + + K8s api version overrides + +commit ed9347f1a819b3e950d6e1b48b067f84581dcc2e +Merge: c63191abf3 cbc7408eea +Author: Patrik Oldsberg +Date: Wed Dec 1 00:25:13 2021 +0100 + + Merge pull request #8287 from backstage/more-auth-providers + + Add new auth providers to the doc index + +commit c63191abf3416af5889289aa1a8e2d71d4a0f658 +Merge: b3e1d1ccae c6b44d80ad +Author: Patrik Oldsberg +Date: Tue Nov 30 23:38:25 2021 +0100 + + Merge pull request #8272 from timja/add-options + + Add options to spawn in runCommand + +commit b3e1d1ccae6a3b6f29f798568d3000f9c480a1d5 +Merge: 960f7cf0d2 bccebd0884 +Author: Patrik Oldsberg +Date: Tue Nov 30 23:15:19 2021 +0100 + + Merge pull request #8217 from brexhq/k8s-cronjobs-frontend + + K8s Cronjobs frontend + +commit 1a792a7ef61196b5ae3f4d41b137709ba6016797 +Author: Andrew Tran +Date: Tue Nov 30 16:12:21 2021 -0600 + + update docs + + Signed-off-by: Andrew Tran + +commit 4dab6ffaad8663fcf1ac371d9d7770f0e115fd96 +Author: Andrew Tran +Date: Tue Nov 30 16:04:39 2021 -0600 + + update changeset, fix pr nits + + Signed-off-by: Andrew Tran + +commit 960f7cf0d2bd1f2e17d1b66b3644ab5cb924963b +Merge: 6e3c0b98a2 e66d33c1e8 +Author: Patrik Oldsberg +Date: Tue Nov 30 22:07:21 2021 +0100 + + Merge pull request #7897 from marleypowell/marley/7678-pull-request-dashboard + + feat: Created pull request card component and initial pull request dashboard page + +commit 6e3c0b98a26153571a5fd4b86d4b5246c469609c +Merge: 0d568fb4f1 f0adfda527 +Author: Patrik Oldsberg +Date: Tue Nov 30 22:06:06 2021 +0100 + + Merge pull request #7848 from PavelPolyakov/patch-1 + + Update README.md + +commit cbc7408eead4c15676fce8ee716e50e488fd4480 +Author: Tim Hansen +Date: Tue Nov 30 11:32:21 2021 -0700 + + Add new auth providers to the doc index + + Signed-off-by: Tim Hansen + +commit 517db130c4043cb19a23576e47c29a5f5ef9be9a +Author: irma12 +Date: Tue Nov 30 18:29:43 2021 +0100 + + Final fixes + + Signed-off-by: irma12 + +commit 8c6f4810c902b3f0aafd7bae01ecad611e35fcef +Author: MT Lewis +Date: Tue Nov 30 15:57:20 2021 +0000 + + permission-node: fix test suite name + + Co-authored-by: Joe Porpeglia + Signed-off-by: MT Lewis + +commit f6087fc8f8add60e1953e004547b2c7e2a288d67 +Author: Catalin Codreanu +Date: Tue Nov 30 13:48:09 2021 +0100 + + Request CronJobs with older apiGroup + + Signed-off-by: Catalin Codreanu + +commit e7851efa9efd7f5b054d9dd6b7e6e853c8b382ec +Author: MT Lewis +Date: Tue Nov 30 14:48:56 2021 +0000 + + permission-node: rename and adjust policy return type to reduce nesting + + Signed-off-by: MT Lewis + +commit e66d33c1e8d4dc3d1b4285f2681e10302271b79c +Author: Marley Powell +Date: Tue Nov 30 13:19:42 2021 +0000 + + refactor: Use named export for `AzurePullRequestsIcon`. + + Signed-off-by: Marley Powell + +commit 0d568fb4f1e8968d19204068420c3b76d3b7c0ff +Merge: 4d61dc97c6 416b68675d +Author: Ben Lambert +Date: Tue Nov 30 13:41:56 2021 +0100 + + Merge pull request #8254 from backstage/dependabot/npm_and_yarn/style-loader-3.3.1 + + build(deps): bump style-loader from 1.2.1 to 3.3.1 + +commit f0adfda52708d07147bcb72b387c82c91eadafd6 +Author: Patrik Oldsberg +Date: Tue Nov 30 13:41:37 2021 +0100 + + api-docs: use hardcoded script sha for oauth2-redirect.html CSP + + Signed-off-by: Patrik Oldsberg + +commit d9d2ff253d40098c8230d0509e67185a6a5f1f0e +Author: Balasundaram +Date: Tue Nov 30 06:44:27 2021 -0500 + + Adding prettier for index.ts + + Signed-off-by: Balasundaram + +commit 82cd709fdba9791807eeb72649cd2eab41fea772 +Author: Marley Powell +Date: Tue Nov 30 09:47:03 2021 +0000 + + chore: Generated new changeset. + + Signed-off-by: Marley Powell + +commit ce734226d24e6edbb6f8bfb2027e718319f7f9c9 +Author: Marley Powell +Date: Tue Nov 30 09:46:46 2021 +0000 + + chore: Updated API report. + + Signed-off-by: Marley Powell + +commit 77f36290e5a40b030d6f5e69e491303d15eab764 +Author: Marley Powell +Date: Tue Nov 30 09:37:08 2021 +0000 + + fix: Removed unnecessary `Object.values` for `/all-teams` endpoint. + + Signed-off-by: Marley Powell + +commit 34b3c98ae9a63f202eff75b061920ec46862e2b7 +Merge: 947acdf8b3 01bbafa6ed +Author: Marley Powell +Date: Tue Nov 30 09:19:18 2021 +0000 + + Merge branch 'marley/7678-pull-request-dashboard' into marley/7678-pr-dashboard-backend + +commit 01bbafa6eddc265c0011e8c90f3f3666862f2da8 +Merge: e8abb99a65 4d61dc97c6 +Author: Marley Powell +Date: Tue Nov 30 09:18:53 2021 +0000 + + Merge branch 'master' of https://github.com/backstage/backstage into marley/7678-pull-request-dashboard + +commit 947acdf8b3346eaa9e99a35c5383e46e004174dd +Author: Marley Powell +Date: Tue Nov 30 08:58:32 2021 +0000 + + feat: Added polling for pull requests and other small improvements. + + Signed-off-by: Marley Powell + +commit 1e30157a66fd6d7f92eb169c6e07ca41ef0e8e4d +Author: Lakshmi Narayana +Date: Mon Nov 29 15:05:01 2021 -0600 + + Mapping vcs-type dynamically instead of hardcoding to git + + Signed-off-by: Lakshmi Narayana + +commit 86ac8d6cdb6fe45b9f2f434bedcc96863288b014 +Author: Balasundaram +Date: Mon Nov 29 13:43:47 2021 -0500 + + Adding prettier changes + + Signed-off-by: Balasundaram + +commit 8183a407b07e79d7dd4595a14d4d8f89bae5bd63 +Author: Balasundaram +Date: Mon Nov 29 12:15:02 2021 -0500 + + Adding changes for creating action for gitlab MR request during component registration similar to github + + Signed-off-by: Balasundaram + +commit bccebd0884dac31489ab53288c0d1b3249f36ae3 +Author: Andrew Tran +Date: Mon Nov 29 12:14:45 2021 -0600 + + fix typo in test + + Signed-off-by: Andrew Tran + +commit 487647524ae656d0fb288548ca267a7a1d7e79b4 +Author: Andrew Tran +Date: Mon Nov 29 11:17:57 2021 -0600 + + update PodsTable tests + + Signed-off-by: Andrew Tran + +commit 24af47761bd41c28653a976c4876697e2904b748 +Author: Andrew Tran +Date: Mon Nov 29 11:05:10 2021 -0600 + + update docs + + Signed-off-by: Andrew Tran + +commit 4d61dc97c6507529867ca14afabc697ba10b8c92 +Merge: dd1faa49eb 57abdfc703 +Author: Suzanne Daniels +Date: Mon Nov 29 17:40:05 2021 +0100 + + Merge pull request #8275 from suuus/suuus/docs-2 + + Updating Getting-started to set expectations on database persistency + +commit a73df1532f1f874c2a88cb4d858142212d27cdb4 +Author: Andrew Tran +Date: Wed Nov 24 09:51:05 2021 -0600 + + fix spellings and update changeset + + Signed-off-by: Andrew Tran + +commit 86ed770308d110d964f654f25fbacd51ff5a533a +Author: Andrew Tran +Date: Tue Nov 23 14:55:15 2021 -0600 + + add changeset + + Signed-off-by: Andrew Tran + +commit ec25c346765cb97f9e446c00a940e67cbccd0eda +Author: Andrew Tran +Date: Tue Nov 23 11:29:22 2021 -0600 + + add a few tests + + Signed-off-by: Andrew Tran + +commit c8f72b29eb190524c1c0456db514b838a0fd847a +Author: Andrew Tran +Date: Tue Nov 23 09:32:59 2021 -0600 + + add cronjobs/jobs to k8s tab + + Signed-off-by: Andrew Tran + +commit 346c3a6516a210842c4f1d423dc04071d8b20c02 +Author: Andrew Tran +Date: Mon Nov 29 09:59:48 2021 -0600 + + update typing to be more easily extendible + + Signed-off-by: Andrew Tran + +commit 3a01096ddd472682d72890d21fce4f4f05f479ce +Author: Andrew Tran +Date: Mon Nov 29 09:48:49 2021 -0600 + + add doc comment, add cronjobs/jobs + + Signed-off-by: Andrew Tran + +commit 65ddccb5e83d9b41e62117a51ae8d5c7dd725978 +Author: Andrew Tran +Date: Tue Nov 23 14:23:04 2021 -0600 + + add changeset + + Signed-off-by: Andrew Tran + +commit bb6c03001de8ef9c5ab5fd7dc5c3168c18da5a58 +Author: Andrew Tran +Date: Mon Nov 22 12:55:25 2021 -0600 + + api version overrides + + Signed-off-by: Andrew Tran + +commit dd1faa49eb783d7c4011dee43dca7689e5c0b0e3 +Merge: 4add90deb3 0e7f256034 +Author: Patrik Oldsberg +Date: Mon Nov 29 16:02:35 2021 +0100 + + Merge pull request #8273 from backstage/rugvip/relrouteres + + core-app-api: remedy wrong relative route reference resolution + +commit 57abdfc70309be9a9afb045bfafec3787555a391 +Author: Suzanne Daniels +Date: Mon Nov 29 15:53:41 2021 +0100 + + Applying @adamdmharvey suggestions from #8275 + + Signed-off-by: Suzanne Daniels + +commit c6b44d80adbe996e09fef796b3cbfbeba3c076a1 +Author: Tim Jacomb +Date: Mon Nov 29 12:30:43 2021 +0000 + + Add options to spawn in runCommand + + Signed-off-by: Tim Jacomb + +commit e9c503638615bc3c66b31c1d0790619c868d88a4 +Author: Suzanne Daniels +Date: Mon Nov 29 15:11:11 2021 +0100 + + Editing port back to 7070 + + Signed-off-by: Suzanne Daniels + +commit 9200a2a858f417986cfe37b43deedbc6c89de716 +Author: Suzanne Daniels +Date: Mon Nov 29 14:41:49 2021 +0100 + + Set DB expectations(see #6811) + edits (#7499) + + Signed-off-by: Suzanne Daniels + +commit 416b68675d32ff4c926c3c9f978275a102179565 +Author: Ben Lambert +Date: Mon Nov 29 14:21:32 2021 +0100 + + Add changeset + + Signed-off-by: Ben Lambert + +commit 7c89e7028d6bde702184ddfeb7fbf0f79eac4fb8 +Author: blam +Date: Mon Nov 29 14:14:33 2021 +0100 + + chore: fixing formatting of the warning message + + Signed-off-by: blam + +commit e1aa50f9432da6313a16f814ab372d847ef2792f +Author: blam +Date: Mon Nov 29 14:11:56 2021 +0100 + + chore: don't deprecate lax on the config commands, and ammend the message that is logged in the console for the deprecations + + Signed-off-by: blam + +commit 0e7f256034d110cfc31d084bfa5d123d616ceb79 +Author: Patrik Oldsberg +Date: Mon Nov 29 13:53:10 2021 +0100 + + core-app-api: remedy wrong relative route reference resolution + + Signed-off-by: Patrik Oldsberg + +commit e8abb99a65a7fa8a06623b6c3a53c1417e4c0d98 +Merge: 2439a1acbd 4add90deb3 +Author: Marley Powell +Date: Mon Nov 29 10:15:43 2021 +0000 + + Merge branch 'master' of https://github.com/backstage/backstage into marley/7678-pull-request-dashboard + +commit aa2a3759cc37ac52532bceabfd48276541e2887d +Author: Marley Powell +Date: Mon Nov 29 10:07:22 2021 +0000 + + test: Added some unit tests for `azure-devops-utils`. + + Signed-off-by: Marley Powell + +commit 8836aef4a3a59f0c08039ed6250442c775d1f7ae +Author: hiba-aldalaty +Date: Mon Nov 29 09:49:50 2021 +0000 + + Remove icon svgs, replace with v4 mui icons. + + Signed-off-by: hiba-aldalaty + +commit 62b5167e5a13e85461d970045b8e815da36ad03c +Merge: 5d0c42a447 4add90deb3 +Author: Marley Powell +Date: Mon Nov 29 09:19:21 2021 +0000 + + Merge branch 'master' of https://github.com/backstage/backstage into marley/7678-pr-dashboard-backend + +commit 4d6bebad476423b29a2bbed9c051bf60508bc747 +Merge: 1c4dbf665f f2d5f5e29c +Author: mufaddal motiwala +Date: Mon Nov 29 14:07:23 2021 +0530 + + Merge branch 'plugin/new-relic-dashboard' of https://github.com/mufaddal7/backstage-1 into plugin/new-relic-dashboard + +commit 1c4dbf665f844886252226c3a5f303728627ca09 +Author: mufaddal motiwala +Date: Mon Nov 29 14:04:34 2021 +0530 + + empty yarn.lock file + + Signed-off-by: mufaddal motiwala + +commit 868a2c9ccbe5c0fd548cafca89e522aa12535c1f +Merge: eff6ff71ee 4add90deb3 +Author: mufaddal motiwala +Date: Mon Nov 29 13:48:13 2021 +0530 + + removed unused dependency react-router-dom + +commit f2d5f5e29ca4cdc5adfc234f593764e6a9650deb +Merge: eff6ff71ee 4add90deb3 +Author: mufaddal motiwala +Date: Mon Nov 29 13:48:13 2021 +0530 + + Merge branch 'master' of https://github.com/mufaddal7/backstage-1 into plugin/new-relic-dashboard + + Signed-off-by: mufaddal motiwala + +commit 4add90deb321a97f06e56d077ab09abeff6e0d8b +Merge: 32eb6303c5 f3bcd52216 +Author: Tim Hansen +Date: Sun Nov 28 20:31:43 2021 -0700 + + Merge pull request #8252 from brexhq/jrusso/add-template-swimlanes + + Add swimlanes to scaffolder page + +commit 5f44cf9fec6e2899ef4c9a64d3e1a82122f33ee7 +Author: djamaile +Date: Mon Nov 29 00:23:58 2021 +0100 + + feat: trying useCallback approach + + Signed-off-by: djamaile + +commit 26e8a1fc1d7f8f40c4dc4d5c8d297a36cd5783a3 +Author: djamaile +Date: Sun Nov 28 23:53:11 2021 +0100 + + feat: hide owned selector picker for user and groups and redirect to all of user owns nothing + + Signed-off-by: djamaile + +commit 752a53d94e8fcfae6dbfcaebed1f961bcdc8d032 +Author: Lorenzo Orsatti <49567430+lorsatti@users.noreply.github.com> +Date: Fri Nov 26 04:16:21 2021 +0100 + + adapt Swagger style to the main theme + + Signed-off-by: Lorenzo Orsatti <49567430+lorsatti@users.noreply.github.com> + +commit dcabc18f7edf7aca99f63c1e76c82f18d53f5e54 +Author: Eric Peterson +Date: Sun Nov 28 13:44:21 2021 -0700 + + Fix tests after rebase. + + Signed-off-by: Eric Peterson + +commit 6e9e82b99de658f610553df6913da60fc1154468 +Author: Eric Peterson +Date: Sun Nov 28 13:33:11 2021 -0700 + + Review feedback. + + Signed-off-by: Eric Peterson + +commit e0930f578e0c40a898b516bd1e5c63f78d13dce3 +Author: Eric Peterson +Date: Fri Nov 12 17:18:06 2021 +0100 + + en-US lowercase locale + + Signed-off-by: Eric Peterson + +commit e4adc768a5a4c7ea2c5d4ab987dad3d400cb4f5a +Author: Eric Peterson +Date: Fri Nov 12 15:07:39 2021 +0100 + + Update architecture diagram. + + Signed-off-by: Eric Peterson + +commit ef04b09f75058cce47e0b35eebef533e82772b2d +Author: Eric Peterson +Date: Fri Nov 12 15:01:37 2021 +0100 + + Make cache readTimeout configurable. + + Signed-off-by: Eric Peterson + +commit da0867f9526f7361848dd4b9ab1d57a187732da1 +Author: Eric Peterson +Date: Fri Nov 12 12:58:17 2021 +0100 + + Account for legacy path casing in cache invalidation. + + Signed-off-by: Eric Peterson + +commit 12157e8f5b2163931fc9eda45e34f1732aba9314 +Author: Eric Peterson +Date: Fri Nov 12 12:36:03 2021 +0100 + + Fix up tests after rebase. + + Signed-off-by: Eric Peterson + +commit 6e618bef06ca2c4150540b6f75914b00c38ab9a3 +Author: Eric Peterson +Date: Fri Nov 12 11:00:33 2021 +0100 + + Fix up types/tests/report. + Signed-off-by: Eric Peterson + +commit 8cf4684a4eae472abb9d060958c56a9b5fe02ac3 +Author: Eric Peterson +Date: Sat Aug 7 20:34:10 2021 +0200 + + Remove cache invalidation endpoint from middleware. + + Signed-off-by: Eric Peterson + +commit a3909d2c2fc67d12451cc8f3c800ac97fac5c695 +Author: Eric Peterson +Date: Sat Aug 7 20:33:49 2021 +0200 + + Invalidate stale cache entries on read for external builder config when cache is enabled. + + Signed-off-by: Eric Peterson + +commit e99606d3e66c16a1db6ba299f7908c6fc19efb38 +Author: Eric Peterson +Date: Fri Nov 12 10:49:50 2021 +0100 + + Add all generated files to techdocs_metadata.json + + Signed-off-by: Eric Peterson + +commit d011fd61ea16aacfcbd32716adc093117ea1c03d +Author: Eric Peterson +Date: Sat Jul 24 23:07:33 2021 +0200 + + Ensure DocsSynchronizer has access to cache client. + + Signed-off-by: Eric Peterson + +commit 74ccd66e26ab36612173ca4a1bb3914bfcdfca41 +Author: Eric Peterson +Date: Sat Jul 24 22:27:18 2021 +0200 + + Add tests for cache middleware. Do not cache non-200 responses. + + Signed-off-by: Eric Peterson + +commit a16dce0433c161dad036aec5a85dfeaad13e8fa6 +Author: Eric Peterson +Date: Sat Jul 24 18:46:28 2021 +0200 + + Tests for TechDocsCache class + + Signed-off-by: Eric Peterson + +commit 693db1da5487cc1c5d37ccfa495a4994eb3f30de +Author: Eric Peterson +Date: Sat Jul 24 17:45:48 2021 +0200 + + Review feedback. + + Signed-off-by: Eric Peterson + +commit 1bada775a9e15f6407d3bf0afcd779b9fc429dea +Author: Eric Peterson +Date: Tue Jul 6 13:13:46 2021 +0200 + + Changesets for affected packages. + + Signed-off-by: Eric Peterson + +commit d48aa5ca1c1669f8764ca45683e4b2e72505aa78 +Author: Eric Peterson +Date: Tue Jul 6 11:34:04 2021 +0200 + + Update create-app so that cache manager is passed through to router. + + Signed-off-by: Eric Peterson + +commit 12ce46b229ad440eac9c73647b06816d1536bc5a +Author: Eric Peterson +Date: Sat Jul 24 17:04:24 2021 +0200 + + Update TechDocs Backend API Report + + Signed-off-by: Eric Peterson + +commit 0a5278b92afcad9cb009c5e8e5f5760f5d791f2a +Author: Eric Peterson +Date: Fri Nov 12 10:46:53 2021 +0100 + + Update Backstage.io docs with config/recs + + Signed-off-by: Eric Peterson + +commit 790f02c898df9e053a302097d0992f58cb96d05a +Author: Eric Peterson +Date: Tue Jul 6 10:14:00 2021 +0200 + + Improve types/documentation. + + Signed-off-by: Eric Peterson + +commit 5fe0c2ce7879b961bd1fe2209f4603b2c8b23b87 +Author: Eric Peterson +Date: Sat Jul 3 20:07:13 2021 +0200 + + Wire up example backend to use in-memory cache. + + Signed-off-by: Eric Peterson + +commit 8b438c77176d2df962a85abbca1f98a096d02092 +Author: Eric Peterson +Date: Fri Nov 12 10:43:05 2021 +0100 + + Update all Publishers so that they resolve a list of objects on successful publish. + + Signed-off-by: Eric Peterson + +commit 0a44eb7d5297bd61a7f224505f4711b60e7a87a2 +Author: Eric Peterson +Date: Sat Jul 24 17:00:22 2021 +0200 + + Initial implementation of TechDocs cache in backend plugin + + Signed-off-by: Eric Peterson + +commit 3e443e8e31913e6de83568d5df2be5517c902287 +Author: Eric Peterson +Date: Sat Jul 3 20:03:24 2021 +0200 + + Express middleware for reading/writing data to cache. + + Signed-off-by: Eric Peterson + +commit d5699813f79e9ca142b0c79f4af20528e8c70e35 +Author: Eric Peterson +Date: Sat Jul 3 13:53:58 2021 +0200 + + Proposed architecture. + + Signed-off-by: Eric Peterson + +commit 32eb6303c5cec2021146f160482dd07c9ae3fce9 +Merge: 63f3b46b86 1505a8cd70 +Author: Patrik Oldsberg +Date: Sun Nov 28 20:54:31 2021 +0100 + + Merge pull request #8266 from backstage/rugvip/packageindex + + scripts/api-extractor: fix package index descriptions + +commit 1505a8cd7016927c22c02b7c2364627463dcff09 +Author: Patrik Oldsberg +Date: Sun Nov 28 13:27:55 2021 +0100 + + scripts/api-extractor: fix package index descriptions + + Signed-off-by: Patrik Oldsberg + +commit f3bcd522168154d9c345b7e9ad5c45af88465e10 +Author: jrusso1020 +Date: Sat Nov 27 12:31:59 2021 -0500 + + rename swimlane -> group + + Signed-off-by: jrusso1020 + +commit fa683cab7dbc5dde0c5d658e3374b5838a42afd2 +Author: jrusso1020 +Date: Fri Nov 26 10:50:13 2021 -0500 + + address comments + + Signed-off-by: jrusso1020 + +commit 63f3b46b8667962f174e951a77a9f9dfe44862de +Merge: 456bcce6ca 7071dce02d +Author: Patrik Oldsberg +Date: Fri Nov 26 16:57:20 2021 +0100 + + Merge pull request #8160 from adrianbarwicki/patch-1 + + feat: expose catalog lib in `plugin-auth-backend` + +commit 5d0c42a44751c04fd3a81adeac0fc04fd858428d +Author: Marley Powell +Date: Fri Nov 26 15:39:05 2021 +0000 + + chore: Updated api report. + + Signed-off-by: Marley Powell + +commit 5c3941970e64676f41f6690b1ce8f820a5ffa88e +Author: Marley Powell +Date: Fri Nov 26 15:32:37 2021 +0000 + + feat: Created new endpoints for getting dashboard PRs and all teams. + + Signed-off-by: Marley Powell + +commit 456bcce6caeb73082dcf6a15e97e7eb9d8abf5c6 +Merge: c8b698aac1 a8eeaa13b4 +Author: MT Lewis +Date: Fri Nov 26 15:31:52 2021 +0000 + + Merge pull request #7943 from backstage/natasha/b2b-auth + + Support backend to backend authentication + +commit a089a286b2e32856bfca5a5e714a4d2f557c0178 +Author: irma12 +Date: Fri Nov 26 15:19:51 2021 +0100 + + Update package.json + + Signed-off-by: irma12 + +commit 8b14c7146d2bbd0c6832b48d39783663cf0199d0 +Author: irma12 +Date: Fri Nov 26 15:00:04 2021 +0100 + + Add API Report + + Signed-off-by: irma12 + +commit a8eeaa13b434297b4e87442c76fedf08cab05b39 +Author: MT Lewis +Date: Fri Nov 26 13:38:32 2021 +0000 + + backend-common: refactor away namespace usage in ServerTokenManager + + Signed-off-by: MT Lewis + +commit c8b698aac156ff65b697515d6f1cdcdddfc42fbb +Merge: 017034d0d1 3f71f245f2 +Author: Johan Haals +Date: Fri Nov 26 14:34:05 2021 +0100 + + Merge pull request #8262 from backstage/jhaals/stalework + + stale: Increase operations, remove debug logging + +commit 017034d0d13dba48e4e610eca6e2f661b6595287 +Merge: c90732b13e 8bf026b16d +Author: Ben Lambert +Date: Fri Nov 26 14:29:33 2021 +0100 + + Merge pull request #8261 from backstage/jhaals/codeowners + + Add more code owners + +commit 3f71f245f24044f4a0e3743b64e61769c9f09dac +Author: Johan Haals +Date: Fri Nov 26 14:23:12 2021 +0100 + + stale: Increase operations, remove debug logging + + Signed-off-by: Johan Haals + +commit 2439a1acbdf2c55ba61d3c69fde4d2e8361d0bbe +Author: Marley Powell +Date: Fri Nov 26 13:22:02 2021 +0000 + + refactor: Small change to `PullRequestCard` subheader. + + Signed-off-by: Marley Powell + +commit c8b4a30d1d98e250c7d447110aac99156959a3e2 +Author: irma12 +Date: Fri Nov 26 14:01:39 2021 +0100 + + Small typo fix in changeset docs + + Signed-off-by: irma12 + +commit c90732b13e5f907d981db19b84f4a7ad8b1095e8 +Merge: de1f77b71c 139f9b3f36 +Author: Johan Haals +Date: Fri Nov 26 13:59:34 2021 +0100 + + Merge pull request #8259 from backstage/jhaals/stale + + Replace stalebot with stale workflow + +commit 8bf026b16dfc3e439204ed57c0e116750b79d62e +Author: Johan Haals +Date: Fri Nov 26 13:57:19 2021 +0100 + + Add more code owners + + Signed-off-by: Johan Haals + +commit 1f455f8abb675e7eb57ba6c49e78fc93b4648cc6 +Author: irma12 +Date: Fri Nov 26 13:51:43 2021 +0100 + + Rename scorecards plugin to tech-insights plugin + + Signed-off-by: irma12 + +commit f5c43945eb2b0251d7c18139cc740e1956c7b53c +Author: MT Lewis +Date: Fri Nov 26 12:35:09 2021 +0000 + + create-app: update backend-to-backend auth comment in app-config template + + Signed-off-by: MT Lewis + +commit e65d8b51745db2361530edfbbc6c2c745a8c7f0a +Author: MT Lewis +Date: Fri Nov 26 12:31:10 2021 +0000 + + docs: update backend-to-backend auth docs to reflect new TokenManager api + + Signed-off-by: MT Lewis + +commit 1cad4e54ca58d5e2aeaf4229eb7f8b4cb04e49be +Author: MT Lewis +Date: Fri Nov 26 12:24:48 2021 +0000 + + backend-common: additional api-report comments and tags + + Signed-off-by: MT Lewis + +commit 73bff921fdae1b44d5a02b99250c59983ca2752e +Author: MT Lewis +Date: Fri Nov 26 12:06:35 2021 +0000 + + backend-common: update api-report + + Signed-off-by: MT Lewis + +commit 54eaeddaf1c3215f3681fe6f802a19c34d1ccf5b +Author: MT Lewis +Date: Fri Nov 26 12:12:43 2021 +0000 + + backend-common: move NoopTokenManager into ServerTokenManager namespace + + Signed-off-by: MT Lewis + +commit 87f1b59ff94e9f8187dfd81dab0568bfa94e2ade +Author: MT Lewis +Date: Fri Nov 26 12:12:01 2021 +0000 + + techdocs-backend: update TokenManager mock in collator test suite + + Signed-off-by: MT Lewis + +commit e5b4256e70530e0700f0ab217d26ee6053882af0 +Author: MT Lewis +Date: Fri Nov 26 12:11:31 2021 +0000 + + catalog-backend: update TokenManager mock in collator test suite + + Signed-off-by: MT Lewis + +commit 10d0109d2e897c35b3664801c39e4ea8599da3ba +Author: MT Lewis +Date: Fri Nov 26 12:01:11 2021 +0000 + + backend-common: extract NoopTokenManager from ServerTokenManager + + Signed-off-by: MT Lewis + +commit 32cac6699185237aed3a40b21423f3518a9efa44 +Author: hiba-aldalaty +Date: Fri Nov 26 11:44:52 2021 +0000 + + Rename SidebarSubItemDropDownItem to SidebarSubmenuItemDropDownItem, update api-reports + + Signed-off-by: hiba-aldalaty + +commit de81ed2cd05e2d09ab7da4d60438c5ee772fc30e +Author: hiba-aldalaty +Date: Fri Nov 26 11:36:08 2021 +0000 + + Remove unnecessary code, Rename ItemWithSubmenu, Make style properties optional in pallette + + Signed-off-by: hiba-aldalaty + +commit 06878bf8108793261dc3976f2ee4a0b59f68f165 +Author: hiba-aldalaty +Date: Fri Nov 26 11:23:46 2021 +0000 + + Revert "Move styling from themes/palette and make optional" + + This reverts commit 04e1b87a894d0c4a7c28e13e89a0cba75159586d. + + Signed-off-by: hiba-aldalaty + +commit 6845cce53358fb7451ef0d7b434f48f5e52ec1aa +Author: Lucile Desfour +Date: Fri Nov 26 12:06:10 2021 +0100 + + add changeset + + Signed-off-by: Lucile Desfour + +commit 04e1b87a894d0c4a7c28e13e89a0cba75159586d +Author: hiba-aldalaty +Date: Fri Nov 26 10:25:10 2021 +0000 + + Move styling from themes/palette and make optional + + Signed-off-by: hiba-aldalaty + +commit 5510cee0397028d2ccaad5e58674a5634afb00c0 +Author: MT Lewis +Date: Fri Nov 26 10:21:11 2021 +0000 + + backend-common: stop accepting self-reported pluginId in ServerTokenManager + + Until we have a solution for assigning plugin/backend identities in a + way that's not open to impersonation, we can't build on top of this + information, so it's better to leave it out for now. + + Signed-off-by: MT Lewis + +commit 139f9b3f3691ab21422ef092fcdaad8392a9b25a +Author: Johan Haals +Date: Fri Nov 26 10:25:32 2021 +0100 + + Replace stalebot with stale workflow + + Signed-off-by: Johan Haals + +commit de1f77b71cf1a62f210a465a73516317fd618c3e +Merge: 5f01829180 37e373d649 +Author: Fredrik Adelöw +Date: Fri Nov 26 10:15:50 2021 +0100 + + Merge pull request #8233 from backstage/freben/less-cross + + 🧹 Align on usage of `cross-fetch` vs `node-fetch` in frontend vs backend packages + +commit 5f018291802304160e9a8414318b882120fdab6c +Merge: dea7b2fda1 6474ddd47d +Author: Patrik Oldsberg +Date: Fri Nov 26 09:37:48 2021 +0100 + + Merge pull request #8253 from backstage/dependabot/npm_and_yarn/microsite/prettier-2.5.0 + + build(deps-dev): bump prettier from 2.4.1 to 2.5.0 in /microsite + +commit dea7b2fda169e1ed615fefc9a941a18a08aace94 +Merge: acfc2c49b5 5f2c584d6e +Author: Johan Haals +Date: Fri Nov 26 08:24:45 2021 +0100 + + Merge pull request #8255 from backstage/dependabot/npm_and_yarn/immer-9.0.7 + + build(deps): bump immer from 9.0.6 to 9.0.7 + +commit acfc2c49b559dca23c573fe338608597fc29de12 +Merge: dc57a35ad5 79d4246407 +Author: Johan Haals +Date: Fri Nov 26 08:23:23 2021 +0100 + + Merge pull request #8246 from backstage/mob/stale + + Add stale workflow + +commit 5f2c584d6e1acb52502e1e0262d10eea35bc82b2 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Fri Nov 26 04:13:41 2021 +0000 + + build(deps): bump immer from 9.0.6 to 9.0.7 + + Bumps [immer](https://github.com/immerjs/immer) from 9.0.6 to 9.0.7. + - [Release notes](https://github.com/immerjs/immer/releases) + - [Commits](https://github.com/immerjs/immer/compare/v9.0.6...v9.0.7) + + --- + updated-dependencies: + - dependency-name: immer + dependency-type: direct:production + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit 797decb9fea3efffd8172c721097a9ef7339d9ab +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Fri Nov 26 04:07:58 2021 +0000 + + build(deps): bump style-loader from 1.2.1 to 3.3.1 + + Bumps [style-loader](https://github.com/webpack-contrib/style-loader) from 1.2.1 to 3.3.1. + - [Release notes](https://github.com/webpack-contrib/style-loader/releases) + - [Changelog](https://github.com/webpack-contrib/style-loader/blob/master/CHANGELOG.md) + - [Commits](https://github.com/webpack-contrib/style-loader/compare/v1.2.1...v3.3.1) + + --- + updated-dependencies: + - dependency-name: style-loader + dependency-type: direct:production + update-type: version-update:semver-major + ... + + Signed-off-by: dependabot[bot] + +commit 6474ddd47dbe65fcf7eafd57e02be43a2dcacddb +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Fri Nov 26 04:07:07 2021 +0000 + + build(deps-dev): bump prettier from 2.4.1 to 2.5.0 in /microsite + + Bumps [prettier](https://github.com/prettier/prettier) from 2.4.1 to 2.5.0. + - [Release notes](https://github.com/prettier/prettier/releases) + - [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md) + - [Commits](https://github.com/prettier/prettier/compare/2.4.1...2.5.0) + + --- + updated-dependencies: + - dependency-name: prettier + dependency-type: direct:development + update-type: version-update:semver-minor + ... + + Signed-off-by: dependabot[bot] + +commit ed5bef529e570c52c47a188d96d4b57a1c3a400d +Author: jrusso1020 +Date: Thu Nov 25 20:10:47 2021 -0500 + + Add swimlanes to scaffolder page + + Add swimlane filtering to the scaffolder page. This will allow + developers to surface specific templates ahead of others or group + templates together. This is just a first pass, in the future we can also + all developers to customize the listing component for fancier one + + Fixes https://github.com/backstage/backstage/issues/6661s + + Signed-off-by: jrusso1020 + +commit 4e6b2319a23e37546208777b60dfc20cee6131b8 +Author: MT Lewis +Date: Thu Nov 25 18:00:33 2021 +0000 + + backend-common: include self-reported pluginId in backend token + + Signed-off-by: MT Lewis + +commit dc57a35ad5eda6c22e5cbe532c3ded14b9250cb0 +Merge: 552a6795e4 b291d0ed7e +Author: Patrik Oldsberg +Date: Thu Nov 25 19:43:31 2021 +0100 + + Merge pull request #8249 from backstage/rugvip/korvspad + + core-plugin-api: bit clearer deprecation warning for createRouteRef + +commit 189f7f8a722ad94b466d494912aafd3a0418c04b +Author: MT Lewis +Date: Thu Nov 25 18:42:07 2021 +0000 + + backend-common: allow for multiple signing keys in ServerTokenManager + + Signed-off-by: MT Lewis + +commit 51608d2021fccc7e305e5ffcc26e2268f6e2d9e3 +Author: MT Lewis +Date: Thu Nov 25 18:16:37 2021 +0000 + + backend-common: bits->bytes in config schema comment + + Signed-off-by: MT Lewis + +commit c8445162356bef7008115722a474c88b1be84c98 +Author: MT Lewis +Date: Thu Nov 25 12:22:52 2021 +0000 + + docs: fix reference to backend-to-backend auth tutorial docs + + Signed-off-by: MT Lewis + +commit 422de86abe612d81367b0d8c0246d9cd8446ecb7 +Author: MT Lewis +Date: Thu Nov 25 12:20:28 2021 +0000 + + docs: split up backend-to-backend and api request authentication docs + + Signed-off-by: MT Lewis + +commit b291d0ed7eb8fa673ca7e07defc90b492440f90f +Author: Patrik Oldsberg +Date: Thu Nov 25 18:30:28 2021 +0100 + + core-plugin-api: bit clearer deprecation warning for createRouteRef + + Signed-off-by: Patrik Oldsberg + +commit 303503ab9e5154f471b381afa8925cd88042534d +Author: hiba-aldalaty +Date: Thu Nov 25 15:05:07 2021 +0000 + + SidebarItem no longer requires 'to' or 'onClick' props if children provided + + Signed-off-by: hiba-aldalaty + +commit 552a6795e463c1679ba5b318574fddcff8398d31 +Merge: 85c127e436 e7230ef814 +Author: Fredrik Adelöw +Date: Thu Nov 25 15:36:53 2021 +0100 + + Merge pull request #8097 from backstage/freben/react-dev-utils + + bump react-dev-utils + +commit 85c127e436a24140bb3606f17f034f82aa9c7c0d (tag: v0.56.0, tag: release-2021-11-25) +Merge: 781f91ab30 ef34f5de7b +Author: Ben Lambert +Date: Thu Nov 25 15:35:52 2021 +0100 + + Merge pull request #8145 from backstage/changeset-release/master + + Version Packages + +commit 79d424640792ae712039df62e994f4a9e1d19323 +Author: Johan Haals +Date: Thu Nov 25 15:31:53 2021 +0100 + + Add stale workflow + + Co-authored-by: blam + Signed-off-by: Johan Haals + +commit ea99ef519826278bcb2562b3d1e0a818af936024 +Author: blam +Date: Thu Nov 25 15:04:18 2021 +0100 + + chore: added deprecation warnings and removing build-image command that has been deprecated for 6 months. think it's fine to remove this now. + + Co-authored-by: Johan Haals + Signed-off-by: blam + +commit ef34f5de7b838a6da4d3a63a73937d064e7dc0b9 +Author: github-actions[bot] +Date: Thu Nov 25 12:40:52 2021 +0000 + + Version Packages + +commit 781f91ab30ced475bb88a7b8a631d67b37bd9f45 +Merge: 9e4c323593 dcaeaac174 +Author: Patrik Oldsberg +Date: Thu Nov 25 13:35:42 2021 +0100 + + Merge pull request #8231 from backstage/rugvip/create-app-pack + + create-app: add pack scripts that excludes peer depdencies during publish + +commit 37e373d649addfbdf354253722bcb15efd8b326a +Author: Fredrik Adelöw +Date: Thu Nov 25 11:34:56 2021 +0100 + + types too + + Signed-off-by: Fredrik Adelöw + +commit 47619da24cd120d7fcfb9a8713eee452f609dcb8 +Author: Fredrik Adelöw +Date: Wed Nov 24 19:24:33 2021 +0100 + + give the same treatment to catalog-backend too + + Signed-off-by: Fredrik Adelöw + +commit b055a6addc020ec86e547a32afb5b1f177436643 +Author: Fredrik Adelöw +Date: Wed Nov 24 19:01:46 2021 +0100 + + Align on usage of `cross-fetch` vs `node-fetch` in frontend vs backend packages + + Signed-off-by: Fredrik Adelöw + +commit 9e4c323593fef4eb81a5600244de6b2aa5d60354 +Merge: f1dcc54ac4 4f81bfd356 +Author: Fredrik Adelöw +Date: Thu Nov 25 13:03:30 2021 +0100 + + Merge pull request #8241 from gotson/patch-1 + + [DOC] Add ACL requirements for kafka-backend plugin + +commit f1dcc54ac47b80e4d129b08ae38a276fbab80ba4 +Merge: 5f7033c7bd 4149d74c10 +Author: Fredrik Adelöw +Date: Thu Nov 25 13:03:05 2021 +0100 + + Merge pull request #8243 from backstage/fix-badges-route-ref + + Fix routing for Badges plugin + +commit 4f81bfd356794ed08b858292990fd9e239ca8b93 +Author: Gauthier Roebroeck +Date: Thu Nov 25 19:22:38 2021 +0800 + + disable snyk workflow on forks + + Signed-off-by: Gauthier Roebroeck + +commit 4149d74c108fc8625f4d18a197fe40ddbd412985 +Author: blam +Date: Thu Nov 25 12:05:53 2021 +0100 + + chore: fix a small issue witih the badge url resolution + + Signed-off-by: blam + +commit 378a6a82a0bd824d4026188307b62fca75fc8d49 +Author: hiba-aldalaty +Date: Thu Nov 25 11:06:50 2021 +0000 + + Simplify code/extract some logic in Items.tsx + + Signed-off-by: hiba-aldalaty + +commit dcaeaac1747c4fa1ff78cc458aed768d0aca35f4 +Author: Patrik Oldsberg +Date: Wed Nov 24 15:20:47 2021 +0100 + + create-app: add pack scripts that excludes peer depdencies during publish + + Signed-off-by: Patrik Oldsberg + +commit 5f7033c7bdd0fb4c98a406cae86a497958cf162f +Merge: ff1ea41b23 452b86916a +Author: Johan Haals +Date: Thu Nov 25 11:51:22 2021 +0100 + + Merge pull request #8235 from backstage/mob/secure-templating + + scaffolder-backend: sandbox v1beta3 template execution + +commit e7230ef814681300ef73009e677cf51b074d62da +Author: Fredrik Adelöw +Date: Wed Nov 17 15:09:20 2021 +0100 + + bump react-dev-utils + + Signed-off-by: Fredrik Adelöw + +commit ff1ea41b237a40a53629a159d7e5581dcf801289 +Merge: bc3aacd8e7 2e5a67b77d +Author: Mike Lewis +Date: Thu Nov 25 10:43:35 2021 +0000 + + Merge pull request #8192 from backstage/permission-backend + + Add @backstage/plugin-permission-backend + +commit bc3aacd8e7124e135c23b62ac18177e9b6425cf4 +Merge: dadad693c3 fcfac818c8 +Author: Patrik Oldsberg +Date: Thu Nov 25 11:35:26 2021 +0100 + + Merge pull request #8209 from backstage/rugvip/snek + + package.json: add script for running snyk tests + +commit dadad693c3cc2957e14cfe4dd4ea7026026c2f8e +Merge: 57fbbe5714 32e0c41f2d +Author: Fredrik Adelöw +Date: Thu Nov 25 11:34:09 2021 +0100 + + Merge pull request #8115 from yousifalraheem/master + + Use email links instead of text in members list + +commit 57fbbe5714517d5d0351a191848acbf92eb5a422 +Merge: 53ad626bb0 1731dad0db +Author: Fredrik Adelöw +Date: Thu Nov 25 11:32:49 2021 +0100 + + Merge pull request #8197 from brexhq/k8s-backend-add-cronjobs-and-jobs + + add cronjobs and jobs as default objects for the kubernetes-backend + +commit 53ad626bb0fc81efa53d3d6dca9376723e1aecf4 +Merge: ca91769036 f9352ab606 +Author: Patrik Oldsberg +Date: Thu Nov 25 11:32:19 2021 +0100 + + Merge pull request #8234 from backstage/rugvip/noresolve + + scaffolder-backend: replace all usage and prevent new usage of path.resolve + +commit 452b86916a13f5649a7e9694b982e49ab6e20963 +Author: Johan Haals +Date: Thu Nov 25 11:04:35 2021 +0100 + + link in changeset + + Signed-off-by: Johan Haals + +commit 2e5a67b77d63cda79a2c1bfd929061d13d8144ad +Author: Mike Lewis +Date: Thu Nov 25 09:50:24 2021 +0000 + + permission-backend: replace cross-fetch with node-fetch + + Signed-off-by: Mike Lewis + +commit 07842fe7caaaef08c5ad65db8595f3f07aa759da +Author: Johan Haals +Date: Thu Nov 25 10:49:03 2021 +0100 + + chore: remove timeout + + Signed-off-by: Johan Haals + +commit 331cedd06fa37a688387c7ef678d9d6b560d69a7 +Author: Johan Haals +Date: Thu Nov 25 10:46:05 2021 +0100 + + fix build script + + Signed-off-by: Johan Haals + +commit 3f320fb922183bf16f59fbb0acc88bee4dcb1689 +Author: Patrik Oldsberg +Date: Wed Nov 24 22:20:30 2021 +0100 + + scaffolder-backend: more reliable error matching in SecureTemplater tests + + Signed-off-by: Patrik Oldsberg + +commit 0749dd0307384a1501609d0eaf20145e27aff562 +Author: Marley Powell +Date: Thu Nov 25 09:34:35 2021 +0000 + + chore: Generated changeset. + + Signed-off-by: Marley Powell + +commit 7a8312f126855bf2f779d6819024265662c84bd4 +Author: Mike Lewis +Date: Thu Nov 25 09:31:45 2021 +0000 + + permission-backend: add changeset + + Signed-off-by: Mike Lewis + +commit 1f22075a467c6602e233c01d41431ef50fd3d280 +Merge: 8b5034034f ca91769036 +Author: Marley Powell +Date: Thu Nov 25 09:21:03 2021 +0000 + + Merge branch 'master' of https://github.com/backstage/backstage into marley/7678-pull-request-dashboard + +commit 32e0c41f2db1c0c42454788105ea2261124885aa +Merge: 2f4a686411 afa9dfe405 +Author: Yousif Al-Raheem +Date: Thu Nov 25 10:05:03 2021 +0100 + + Merge branch 'master' of https://github.com/yousifalraheem/backstage + +commit 2f4a686411a0287065038821b67889a6d01e3f98 +Author: Yousif Al-Raheem +Date: Thu Nov 25 10:04:45 2021 +0100 + + changed minor to patch release + + Signed-off-by: Yousif Al-Raheem + +commit ca9176903623879d6c6cd41c6e5ea0c6ab083464 +Merge: 3210d8fdab ad433b346f +Author: Fredrik Adelöw +Date: Thu Nov 25 07:10:24 2021 +0100 + + Merge pull request #8240 from lorsatti/fix/jenkins-pagination + + Fix Jenkins table pagination + +commit f00498f57eaf55fa62aba0f9c43ecc51e6c816f0 +Author: Gauthier +Date: Thu Nov 25 10:18:27 2021 +0800 + + doc: acl requirements for kafka-backend + + Signed-off-by: Gauthier Roebroeck + +commit ad433b346ffea0fcc29cc76fddeac1ada63e106e +Author: Lorenzo Orsatti <49567430+lorsatti@users.noreply.github.com> +Date: Thu Nov 25 00:54:41 2021 +0100 + + add changeset + + Signed-off-by: Lorenzo Orsatti <49567430+lorsatti@users.noreply.github.com> + +commit 58e197947a18e6168fd839e4aea5134f5f50a7ea +Author: Lorenzo Orsatti <49567430+lorsatti@users.noreply.github.com> +Date: Thu Nov 25 00:50:59 2021 +0100 + + fix jenkins pagination + + Signed-off-by: Lorenzo Orsatti <49567430+lorsatti@users.noreply.github.com> + +commit 3210d8fdab805aecb755984af22b80cefec93ba1 +Merge: ffa3a4eef0 ddb60aa7c4 +Author: Patrik Oldsberg +Date: Thu Nov 25 00:49:24 2021 +0100 + + Merge pull request #8239 from backstage/switch-initial-permission-node-release-to-minor + + permission-node: switch initial release changeset to minor + +commit ddb60aa7c4283d47f2d43201e029645ea98233f9 +Author: Mike Lewis +Date: Wed Nov 24 23:37:11 2021 +0000 + + permission-node: switch initial release changeset to minor + + Signed-off-by: Mike Lewis + +commit ffa3a4eef0f95c77e4ab32fc373cd3eced266a2f +Merge: 7b124c2729 c59edf0415 +Author: Patrik Oldsberg +Date: Thu Nov 25 00:28:36 2021 +0100 + + Merge pull request #8238 from MrSecure/patch-1 + + fix: inconsistent time units + +commit c59edf0415b75df30a4f5dc4c0381e61ab3a7003 +Author: MrSecure +Date: Wed Nov 24 17:04:16 2021 -0600 + + fix: inconsistent time units + + The stability document had mixed use of "two days" and "two weeks" ... with "two weeks" seeming to be the intended value. + + Signed-off-by: Mr. Secure + +commit 7b124c272942e7fe0a0dd2d5e868464df0dd34c3 +Merge: 103ca7ec60 5970c1ecc2 +Author: Fredrik Adelöw +Date: Thu Nov 25 00:11:36 2021 +0100 + + Merge pull request #8182 from livetocode/feature/addOpenshiftUrlFormatter + + implement openshiftFormatter + +commit 5970c1ecc2dbb6746c220be4f8de2e43b3e6f7f2 +Author: Morgan Martinet +Date: Wed Nov 24 17:20:39 2021 -0500 + + fix spelling of OpenShift + + Signed-off-by: Morgan Martinet + +commit b5bd60fddc6d543b0ff0584e124a939f3c900a5c +Author: irma12 +Date: Wed Nov 24 23:11:50 2021 +0100 + + Changesets fixes + + Signed-off-by: irma12 + +commit 574e524fcd2300b6619a403b22271a56aa59dad1 +Merge: c39cf20e1f 103ca7ec60 +Author: irma12 +Date: Wed Nov 24 22:53:10 2021 +0100 + + Merge branch 'master' into scorecard-tech-insights + + Signed-off-by: irma12 + +commit 776180b7403de070415291362ceaea77a673148f +Author: Praveen Ranjan Keshri +Date: Thu Nov 25 01:59:54 2021 +0530 + + Fixed bug in backend-common to allow passing of remote option in order to enable passing remote url in --config option. The remote option should be passed along with reloadIntervalSeconds from packages/backend/src/index.ts (Updated the file as well) + + Signed-off-by: Praveen Ranjan Keshri + +commit f514044f8d7f0cfcaaf9f1e8b092fff14bf9ef79 +Author: Patrik Oldsberg +Date: Wed Nov 24 21:04:12 2021 +0100 + + scaffolder-backend: clarify purpose of nunjucks build script + + Signed-off-by: Patrik Oldsberg + +commit e7cc6bf28f94947e4e64acf0ad57856dd1a1283c +Author: Patrik Oldsberg +Date: Wed Nov 24 20:59:52 2021 +0100 + + scaffolder-backend: refactor SecureTemplater to use separate sandboxes + + Signed-off-by: Patrik Oldsberg + +commit 4f268b8ef17fda03fadf49c3d61e6445f84ce035 +Author: Patrik Oldsberg +Date: Wed Nov 24 20:37:03 2021 +0100 + + scaffolder-backend: use a const reference to helpers in the SecureTemplater + + Signed-off-by: Patrik Oldsberg + +commit f9352ab606367cd9efc6ff048915c70ed3013b7f +Author: Patrik Oldsberg +Date: Wed Nov 24 19:56:44 2021 +0100 + + scaffolder-backend: removed all usaged and prevent new usage of path.resolve + + Signed-off-by: Patrik Oldsberg + +commit dd62ca4bcd132031fa05cff38e6842ed10b9999e +Author: Patrik Oldsberg +Date: Wed Nov 24 18:53:35 2021 +0100 + + scaffolder-backend: fixes for mock-fs interfering with nunjucks loading + + Signed-off-by: Patrik Oldsberg + +commit 621e1a11be24b66d366b3533094563cee9c62f9f +Author: Patrik Oldsberg +Date: Wed Nov 24 01:53:25 2021 +0100 + + scaffolder-backend: fix SecureTemplater cookiecutter compat using wrong syntax + + Signed-off-by: Patrik Oldsberg + +commit a096e4c4d78bab2d392af5b768eb4f87b9f4401c +Author: Patrik Oldsberg +Date: Fri Nov 19 19:03:30 2021 +0100 + + changesets: add changeset for secure templating + + Signed-off-by: Patrik Oldsberg + +commit 7e8d5d953d77b06a63088bbd82cd7d3b6cf25098 +Author: Patrik Oldsberg +Date: Fri Nov 19 18:54:33 2021 +0100 + + scaffolder-backend: switch template action to use SecureTemplater + + Signed-off-by: Patrik Oldsberg + +commit 07daffed47d49ea290bee3bfd8f2d70af76865fd +Author: Patrik Oldsberg +Date: Fri Nov 19 18:53:34 2021 +0100 + + scaffolder-backend: switch jsonify flag for cookiecutter compat render option + + Signed-off-by: Patrik Oldsberg + +commit 7b5430fc82f921b4e5cec5895ae3c0d284ce2357 +Author: Patrik Oldsberg +Date: Fri Nov 19 18:32:49 2021 +0100 + + scaffolder-backend: switch nunjucks runner to use secure templater + + Signed-off-by: Patrik Oldsberg + +commit 0e016783b6b55198eabec706d1864147f882db83 +Author: Patrik Oldsberg +Date: Fri Nov 19 18:30:46 2021 +0100 + + scaffolder-backend: make SecureTemplater render sync + + Signed-off-by: Patrik Oldsberg + +commit 6facaab24c6d5ecde37a8a3192d0a41bb8dd0895 +Author: Patrik Oldsberg +Date: Fri Nov 19 18:23:04 2021 +0100 + + scaffolder-backend: jsonify + repoUrl helpers for SecureTemplater + error wrapping + + Signed-off-by: Patrik Oldsberg + +commit 0bb4be63d6db9f132fb23ec47a2ac1b804e782ba +Author: Patrik Oldsberg +Date: Fri Nov 19 18:06:40 2021 +0100 + + scaffolder-backend: added some basic tests for SecureTemplater + + Signed-off-by: Patrik Oldsberg + +commit 21b54689c6d54d1f560ef76ff499780782c00cec +Author: Patrik Oldsberg +Date: Fri Nov 19 17:50:25 2021 +0100 + + scaffolder-backend: add initial SecureTemplater implementation + + Co-authored-by: Johan Haals + Signed-off-by: Patrik Oldsberg + +commit d6da7d706d737f78576eeb345a9029dc9edba6da +Author: Patrik Oldsberg +Date: Fri Nov 19 15:55:24 2021 +0100 + + scaffolder-backend: generate nunjucks bundle + + Co-authored-by: Johan Haals + Signed-off-by: Patrik Oldsberg + +commit 547bf85a622176a9a5aa9979ac616dde9968ae67 +Author: Patrik Oldsberg +Date: Fri Nov 19 15:54:57 2021 +0100 + + scaffolder-backend: add build script for bundling nunjucks + + Co-authored-by: Johan Haals + Signed-off-by: Patrik Oldsberg + +commit 103ca7ec60db8175d847b463a4978728b7593b77 +Merge: b358cbc3be 370da15e7b +Author: Mike Lewis +Date: Wed Nov 24 17:19:35 2021 +0000 + + Merge pull request #8119 from backstage/permission-node + + Add @backstage/plugin-permission-node + +commit 2bacc8be347311f2ffe231b42e349a8ccf8410cb +Author: Mike Lewis +Date: Wed Nov 24 16:46:19 2021 +0000 + + permission-backend: expand router test suite + + Signed-off-by: Mike Lewis + +commit 1731dad0dbc251ef8b8b1b85f23b2567f226a98c +Author: Andrew Tran +Date: Wed Nov 24 09:54:36 2021 -0600 + + update api reports and changeset + + Signed-off-by: Andrew Tran + +commit c5d1baa1af3d72c9bad55e1b42d5c899e7c4ceb5 +Author: Andrew Tran +Date: Wed Nov 24 09:41:43 2021 -0600 + + update changeset + + Signed-off-by: Andrew Tran + +commit b358cbc3be7d40000f26d595a544bff23d78c1c9 +Merge: bce51e377b e634a47ce5 +Author: Ben Lambert +Date: Wed Nov 24 16:34:39 2021 +0100 + + Merge pull request #8226 from backstage/blam/relax-log-lines + + Fixing superfluous log lines by changing the check to see if it's a template string for Scaffolder v3 templates + +commit fafb482d730751ba07806ec8830c46bb2e872444 +Author: Mike Lewis +Date: Wed Nov 24 15:27:42 2021 +0000 + + permission-backend: add request validation + + Signed-off-by: Mike Lewis + +commit da9ecc18e462c4f46161c01f6939a58ca59edbff +Author: Andrew Tran +Date: Wed Nov 24 09:24:07 2021 -0600 + + prettier yaml + + Signed-off-by: Andrew Tran + +commit 12b0eebfb565990390ca41a864ca288c0b6e5570 +Author: Mike Lewis +Date: Wed Nov 24 15:18:50 2021 +0000 + + permission-backend: pass in identity client + + Signed-off-by: Mike Lewis + +commit 1ff5d10a6251aeb21d163494cae0b5e958054f6a +Author: Mike Lewis +Date: Wed Nov 24 14:53:20 2021 +0000 + + permission-backend: update dependency on permission-node to 0.0.0 to match unreleased version + + Signed-off-by: Mike Lewis + +commit bce51e377bae662fd7766b522f7dcfb59a6d8c52 +Merge: c007c371ed 6de3b8fb24 +Author: Fredrik Adelöw +Date: Wed Nov 24 15:51:24 2021 +0100 + + Merge pull request #8213 from jodybro/v1-api-version-for-ingress + + support v1 api for ingress object + +commit c007c371ede4c1cf8320faab276ab706d5e6a5cc +Merge: f7bf4eea21 740f958290 +Author: Fredrik Adelöw +Date: Wed Nov 24 15:49:10 2021 +0100 + + Merge pull request #8203 from backstage/joonp/entity-filter-empty-values + + Handle empty values array in EntityFilter + +commit b5e43875d5afe3e7feb21a1d1ae1556a975386bc +Author: Mike Lewis +Date: Wed Nov 24 14:47:51 2021 +0000 + + permission-backend: enumerate exports in service index + + Signed-off-by: Mike Lewis + +commit 8f835847061941a6aeff4ef8bf2bafb79170e371 +Author: Mike Lewis +Date: Wed Nov 24 14:35:10 2021 +0000 + + permission-backend: remove standaloneServer, run.ts and AllowAllPermissionPolicy + + The run.ts / standaloneServer.ts stuff is a hangover and expected to + be removed or heavily adjusted in the future, and since it's intended + to run from the command line, there's no neat way to pass in a + permission policy. As such it's not going to be useful in its current + form, so we're removing it for now. + + Signed-off-by: Mike Lewis + +commit dfd3b25c34383c123c1f02a8fa188300d836afdd +Author: Mike Lewis +Date: Wed Nov 24 14:32:31 2021 +0000 + + permission-backend: set version to 0.0.0 before initial release + + Signed-off-by: Mike Lewis + +commit f5c32111291dc3fa8941a6ac4e00297f95e2cd12 +Author: Mike Lewis +Date: Tue Nov 23 13:51:16 2021 +0000 + + permission-backend: 500 when policy returns incorrect resourceType + + Signed-off-by: Mike Lewis + +commit dbd89112a581053599927864ae3fd1d04db18b5c +Author: Mike Lewis +Date: Mon Nov 22 17:36:21 2021 +0000 + + permission-backend: add permission-node integration tests + + Signed-off-by: Mike Lewis + +commit 2335e0a01f6fce9aaff9733c8bf9ef86124f24f0 +Author: Mike Lewis +Date: Mon Nov 22 15:38:36 2021 +0000 + + permission-backend: update default port for standalone server + + Signed-off-by: Mike Lewis + +commit 7f4a77a884a70ece7862015c073819580e1d584b +Author: Mike Lewis +Date: Mon Nov 22 15:35:46 2021 +0000 + + permission-backend: add todo + + Signed-off-by: Mike Lewis + +commit cd77cbd48f487374fbfad985ecdd920b65b35e40 +Author: Mike Lewis +Date: Mon Nov 22 15:20:59 2021 +0000 + + permission-backend: clean up PermissionIntegrationClient applyConditions signature + + Signed-off-by: Mike Lewis + +commit 6de1e719d4bffad8e56fff03a12bfe5609575e87 +Author: Mike Lewis +Date: Mon Nov 22 15:13:27 2021 +0000 + + permission-backend: api docs + + Signed-off-by: Mike Lewis + +commit 0ce2bc41295ea473e16cc8a66e5940b767f0e5cb +Author: Mike Lewis +Date: Mon Nov 22 13:23:14 2021 +0000 + + permission-backend: remove manual construction of service discovery + + We shouldn't be constructing a service discovery implementation inside + the router, since it removes the ability to provide a different + discovery mechanism. + + Signed-off-by: Mike Lewis + +commit e9b6b7bf89a430265a890d351b19d43c67b01bdd +Author: Mike Lewis +Date: Mon Nov 22 13:19:48 2021 +0000 + + permission-backend: extract client for calling other plugins to apply conditions + + Also adds response validation + + Signed-off-by: Mike Lewis + +commit 671bf72ed6690e852538ff302fced84310d256f2 +Author: Mike Lewis +Date: Mon Nov 22 12:02:49 2021 +0000 + + permission-backend: fix initial test suite + + Signed-off-by: Mike Lewis + +commit 4ca6802b97d3e4dee8582c3eadbb219d3d426fec +Author: Mike Lewis +Date: Mon Nov 22 11:27:23 2021 +0000 + + permission-backend: bump @backstage/cli + + Signed-off-by: Mike Lewis + +commit be1f89d3835b4b072df9a734c34f101a791a7572 +Author: Mike Lewis +Date: Mon Nov 22 11:22:24 2021 +0000 + + permission-backend: extract AllowAllPermissionPolicy from standaloneServer in permission-backend + + Signed-off-by: Mike Lewis + +commit 806778d58e2d79d272ccf847a0a3d08cc19daa25 +Author: Mike Lewis +Date: Mon Nov 22 11:25:48 2021 +0000 + + permission-backend: fixup api-report + + Signed-off-by: Mike Lewis + +commit f028746410a472a63f45c9270e997f450bd23893 +Author: Tim Hansen +Date: Wed Nov 17 14:58:09 2021 -0700 + + Add permission-backend plugin + + Signed-off-by: Tim Hansen + +commit 370da15e7b225de270c8fc90f6cb8b817a02c859 +Author: Mike Lewis +Date: Wed Nov 24 14:30:21 2021 +0000 + + permission-node: separate doc comment summaries with @remarks tag + + Signed-off-by: Mike Lewis + +commit f7bf4eea215c7ec72dcf1133c8aa3d4834b4f2d7 +Merge: c1ae2b4dc1 42ebbc18c0 +Author: Fredrik Adelöw +Date: Wed Nov 24 15:25:29 2021 +0100 + + Merge pull request #7812 from backstage/dependabot/npm_and_yarn/gitbeaker/node-34.4.1 + + build(deps): bump @gitbeaker/node from 30.3.0 to 34.4.1 + +commit 44b46644d996c82aa1aa611e539db3844661fe5d +Author: Mike Lewis +Date: Wed Nov 24 14:22:32 2021 +0000 + + permission-node: add changeset for initial release + + Signed-off-by: Mike Lewis + +commit c1ae2b4dc1a1fa72c2875aa94301e4caec8337a3 +Merge: a7d3cbf79c 4be343d2dd +Author: Johan Haals +Date: Wed Nov 24 15:21:40 2021 +0100 + + Merge pull request #8230 from lorsatti/lorsatti/adopters + + Add LogMeIn as an adopter + +commit aded9bbc22444e1da75c0d60947096e49d7e8154 +Author: Mike Lewis +Date: Wed Nov 24 14:20:56 2021 +0000 + + permission-node: set version to 0.0.0 before initial release + + Signed-off-by: Mike Lewis + +commit f5a25ec8046dd40c05f258ae5f58a430b37a9039 +Author: Mike Lewis +Date: Wed Nov 24 14:19:32 2021 +0000 + + permission-node: fix typo in doc comment + + Co-authored-by: Fredrik Adelöw + Signed-off-by: Mike Lewis + +commit b08dbb103552ad16064c0c84bad975311152320d +Author: Mike Lewis +Date: Wed Nov 24 14:18:11 2021 +0000 + + permission-node: destructure options inside function to simplify api-report + + Signed-off-by: Mike Lewis + +commit 42ebbc18c0dc476baf1efa6322ce3b026a5a37c3 +Author: Fredrik Adelöw +Date: Wed Nov 24 14:21:45 2021 +0100 + + get both gitbeaker packages bumped, and add changeset + + Signed-off-by: Fredrik Adelöw + +commit e99db76f6ad95174c7b4d75ed556b7cae88de24b +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Fri Oct 29 14:48:41 2021 +0000 + + build(deps): bump @gitbeaker/node from 30.3.0 to 34.4.1 + + Bumps [@gitbeaker/node](https://github.com/jdalrymple/gitbeaker) from 30.3.0 to 34.4.1. + - [Release notes](https://github.com/jdalrymple/gitbeaker/releases) + - [Changelog](https://github.com/jdalrymple/gitbeaker/blob/master/CHANGELOG.md) + - [Commits](https://github.com/jdalrymple/gitbeaker/compare/30.3.0...34.4.1) + + --- + updated-dependencies: + - dependency-name: "@gitbeaker/node" + dependency-type: direct:production + update-type: version-update:semver-major + ... + + Signed-off-by: dependabot[bot] + +commit e634a47ce50236b65a73140f0c4b0c7fbd559c1f +Author: blam +Date: Wed Nov 24 14:03:22 2021 +0100 + + chore: added changeset + + Signed-off-by: blam + +commit 4be343d2dd464fd8e21fe2ea7dc9f45e4261ced4 +Author: Lorenzo Orsatti <49567430+lorsatti@users.noreply.github.com> +Date: Wed Nov 24 14:03:00 2021 +0100 + + add LogMeIn as an adopter + + Signed-off-by: Lorenzo Orsatti <49567430+lorsatti@users.noreply.github.com> + +commit 5fd0e077bc3e38cf98dfb172690b4fcdbab4a1d1 +Author: blam +Date: Wed Nov 24 14:01:26 2021 +0100 + + chore: adding test for this bug + + Signed-off-by: blam + +commit 92405f32bb0cf4acd0d860b354fca411281f62ee +Author: blam +Date: Wed Nov 24 13:55:28 2021 +0100 + + bug: should check the children of the first parse, not the root. + + Signed-off-by: blam + +commit a7d3cbf79ce7b40e975402d794ba9195dad4af77 +Merge: 138c559231 88f5378397 +Author: Johan Haals +Date: Wed Nov 24 13:23:44 2021 +0100 + + Merge pull request #8212 from backstage/mob/deprecate-register + + core-plugin-api: Deprecate Plugin register and output + +commit 138c559231a91d3408e0cd105c5e598aa165b7c2 +Merge: 22f96d7efc c982fc12cb +Author: Ben Lambert +Date: Wed Nov 24 13:19:30 2021 +0100 + + Merge pull request #8218 from lorsatti/fix/swagger-style + + Add missing styles to Swagger (dark mode) + +commit 22f96d7efc8455e18cf8d676df391f980509c0eb +Merge: 825787e6bd f1ba6dfb1d +Author: Fredrik Adelöw +Date: Wed Nov 24 13:07:13 2021 +0100 + + Merge pull request #8172 from goenning/go/azure-devops-discovery + + adding AzureDevOps Discovery Processor + +commit 34706291e7685c4d0fc4504de288e1755f677069 +Author: hiba-aldalaty +Date: Wed Nov 24 11:16:53 2021 +0000 + + Move destructuring of the props into function SidebarSubmenuItem + + Signed-off-by: hiba-aldalaty + +commit 9f8e9a04d17f0319eb4fe51dd61871979f0d96ca +Author: hiba-aldalaty +Date: Wed Nov 24 11:09:01 2021 +0000 + + Rename DropDownItem -> SidebarSubItemDropDownItem + + Signed-off-by: hiba-aldalaty + +commit 825787e6bda7fe8ee212c228c7bb9d97522b89a7 +Merge: 0ef5c9b8f4 f658a34178 +Author: Fredrik Adelöw +Date: Wed Nov 24 12:05:48 2021 +0100 + + Merge pull request #8164 from RoadieHQ/infinite-location-loop + + Fail when adding duplicate locations using the dry run flag + +commit fce9870fff91995ee792f4eee3d6bb9d01c59819 +Author: hiba-aldalaty +Date: Wed Nov 24 10:58:43 2021 +0000 + + Rename Submenu -> SidebarSubmenu, SidebarSubItem -> SidebarSubmenuItem + + Signed-off-by: hiba-aldalaty + +commit f658a341783ba4507b215c9dd77ffc3b75e90a02 +Author: Nicolas Arnold +Date: Wed Nov 24 09:31:12 2021 +0000 + + Using stringEntityRef for comparision + + Signed-off-by: Nicolas Arnold + +commit 949633623f11c6efbcffe144d73a2bb067898aa6 +Author: hiba-aldalaty +Date: Wed Nov 24 09:29:41 2021 +0000 + + Fix tSidebar ests and storybook after merging change caused isPinned to be true by default + + Signed-off-by: hiba-aldalaty + +commit 0ef5c9b8f4b4f46943312f4c9bccbca4961b223b +Merge: 0273d58bfd fb90b70de5 +Author: Himanshu Mishra +Date: Wed Nov 24 14:17:04 2021 +0530 + + Merge pull request #8223 from backstage/dependabot/npm_and_yarn/testing-library/cypress-8.0.2 + + chore(deps-dev): bump @testing-library/cypress from 7.0.6 to 8.0.2 + +commit 88f5378397dfe3b626ee492d34b78a0f6d93ea4d +Author: Johan Haals +Date: Wed Nov 24 09:36:40 2021 +0100 + + Add export, update API report + + Signed-off-by: Johan Haals + +commit 0273d58bfddca8b98a5ed0a0596fe0246ff111af +Merge: 68eddf88a0 b8f430eee0 +Author: Himanshu Mishra +Date: Wed Nov 24 10:57:16 2021 +0530 + + Merge pull request #8224 from backstage/dependabot/npm_and_yarn/storybook/addon-actions-6.3.12 + + chore(deps-dev): bump @storybook/addon-actions from 6.3.7 to 6.3.12 + +commit b8f430eee03b66dd3d50bd3e745abf56a54022e2 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Wed Nov 24 04:13:08 2021 +0000 + + chore(deps-dev): bump @storybook/addon-actions from 6.3.7 to 6.3.12 + + Bumps [@storybook/addon-actions](https://github.com/storybookjs/storybook/tree/HEAD/addons/actions) from 6.3.7 to 6.3.12. + - [Release notes](https://github.com/storybookjs/storybook/releases) + - [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md) + - [Commits](https://github.com/storybookjs/storybook/commits/v6.3.12/addons/actions) + + --- + updated-dependencies: + - dependency-name: "@storybook/addon-actions" + dependency-type: direct:development + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit fb90b70de501da7e481deb9749e4ec560140c65d +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Wed Nov 24 04:11:52 2021 +0000 + + chore(deps-dev): bump @testing-library/cypress from 7.0.6 to 8.0.2 + + Bumps [@testing-library/cypress](https://github.com/kentcdodds/cypress-testing-library) from 7.0.6 to 8.0.2. + - [Release notes](https://github.com/kentcdodds/cypress-testing-library/releases) + - [Changelog](https://github.com/testing-library/cypress-testing-library/blob/main/CHANGELOG.md) + - [Commits](https://github.com/kentcdodds/cypress-testing-library/compare/v7.0.6...v8.0.2) + + --- + updated-dependencies: + - dependency-name: "@testing-library/cypress" + dependency-type: direct:development + update-type: version-update:semver-major + ... + + Signed-off-by: dependabot[bot] + +commit eff6ff71ee77c55b9478c1dc93e9de707a8bed4a +Author: mufaddal motiwala +Date: Wed Nov 24 06:44:00 2021 +0530 + + Added Validations for better error tracking + + Signed-off-by: mufaddal motiwala + +commit 2c54173a3982928da5cc8ec13df71c82b6887a36 +Author: Morgan Martinet +Date: Tue Nov 23 18:01:30 2021 -0500 + + apply code review recommandations + + use encodeURIComponent on dynamic parts + ensure that we keep any dashboard path prefix when generating links + move URL hash exception for SPAs into the standardFormatter + + Signed-off-by: Morgan Martinet + +commit c6fdddec77341830a4ca04e90de255e6cba7fc37 +Author: djamaile +Date: Tue Nov 23 22:40:03 2021 +0100 + + feat: hide owned selector picker if user doesn't own an entity + + Signed-off-by: djamaile + +commit c982fc12cbf0798caefdebd7c36e8b35b809598e +Author: Lorenzo Orsatti <49567430+lorsatti@users.noreply.github.com> +Date: Tue Nov 23 22:03:03 2021 +0100 + + add changeset + + Signed-off-by: Lorenzo Orsatti <49567430+lorsatti@users.noreply.github.com> + +commit f803ac931e3cd6d0e29b7de32e9bd5eb81b40dc0 +Author: Lorenzo Orsatti <49567430+lorsatti@users.noreply.github.com> +Date: Tue Nov 23 21:41:06 2021 +0100 + + add missing styles to Swagger (dark mode) + + Signed-off-by: Lorenzo Orsatti <49567430+lorsatti@users.noreply.github.com> + +commit f1ba6dfb1d7fa1dec651d9330a1ea2c17f1b5be1 +Author: goenning +Date: Tue Nov 23 19:03:46 2021 +0000 + + fix comments, support onpremise and paging + + Signed-off-by: goenning + +commit 6de3b8fb24abadeb678e376fae3c7144cf3da954 +Author: jodybro +Date: Tue Nov 23 13:30:01 2021 -0500 + + support v1 api for ingress object + + Signed-off-by: jodybro + +commit 40ea710c145293f0e049d4c0a893ce6e2f26d49c +Author: Mike Lewis +Date: Tue Nov 23 18:22:53 2021 +0000 + + backend-common: add api doc comments + + Signed-off-by: Mike Lewis + +commit 4b6de2f87272423d5814655df2f248bbf13a597e +Author: Mike Lewis +Date: Tue Nov 23 18:12:28 2021 +0000 + + backend-common: remove 'Server' from TokenManager method names + + Signed-off-by: Mike Lewis + +commit 905dd952acaa5821a5bd016b71fad04fe10c23f3 +Author: Mike Lewis +Date: Tue Nov 23 17:49:02 2021 +0000 + + chore: split up backend-to-backend auth changeset to reduce changelog noise + + Signed-off-by: Mike Lewis + +commit 8a001f8202f2249a645a7f980b46d653dd075035 +Author: Mike Lewis +Date: Tue Nov 23 17:16:57 2021 +0000 + + backend-common: TokenManager throws for invalid tokens rather than returning boolean + + Signed-off-by: Mike Lewis + +commit 950b36393cc6bf94ab7d568e8149ddebdce3ecb7 +Author: Johan Haals +Date: Tue Nov 23 16:49:33 2021 +0100 + + core-plugin-api: Add tests and changesets + + Co-authored-by: blam + Co-authored-by: Patrik Oldsberg + Signed-off-by: Johan Haals + +commit a3c5b2f70b038ebccc0c31d61b9e52856fe098f1 +Author: Johan Haals +Date: Tue Nov 23 16:33:29 2021 +0100 + + core-plugin-api: Deprecate Plugin register and output + + Co-authored-by: blam + Co-authored-by: Patrik Oldsberg + Signed-off-by: Johan Haals + +commit f38dff408535dcc010fcc89e02312c343035b04f +Author: Mike Lewis +Date: Tue Nov 23 14:58:48 2021 +0000 + + backend-common: tests validating interop of multiple token managers + + Signed-off-by: Mike Lewis + +commit c39cf20e1f25ebe1f137e8a4fac0473623325596 +Author: irma12 +Date: Tue Nov 23 15:51:19 2021 +0100 + + Add API reports + + Signed-off-by: irma12 + +commit 8cb1c4d17c5b79cdb9e4ce664d300fc4d32fb931 +Author: Mike Lewis +Date: Tue Nov 23 14:41:33 2021 +0000 + + backend-common: rename config block from authorization to auth + + Signed-off-by: Mike Lewis + +commit 289de3ab347a85813cf46ed45509fa8e2383200f +Author: irma12 +Date: Tue Nov 23 15:37:16 2021 +0100 + + Update cli package + + Signed-off-by: irma12 + +commit 7071dce02d4ba11e6beb88fbd669217e2e2a2b44 +Author: Adrian Barwicki +Date: Fri Nov 19 10:06:20 2021 +0100 + + feat: expose catalog lib in `plugin-auth-backend` + + We are writing a custom OIDC provider plugin and need to use CatalogIdentityClient class in our provider. It is however not exported and we are not able to use it. + + It is not a problem for providers that are committed to backstage repo as they use the local path, e.g https://github.com/backstage/backstage/blob/master/plugins/auth-backend/src/providers/aws-alb/provider.ts#L31 - but only for the ones that are developed locally. + + Signed-off-by: Adrian Barwicki + +commit 42b01ee7250448788aec816e0afd14eaccb0d7ce +Author: Mike Lewis +Date: Tue Nov 23 13:57:38 2021 +0000 + + backend-common: import ConfigReader from @backstage/config + + Signed-off-by: Mike Lewis + +commit db1befcf3985668b2ec3f5edcd03c575b327cd5a +Author: Mike Lewis +Date: Tue Nov 23 13:56:07 2021 +0000 + + backend-common: make secret required if authorization config block is provided + + Signed-off-by: Mike Lewis + +commit ef9dfd34402f8a563c10b595e14fa524f3c66cac +Author: Mike Lewis +Date: Tue Nov 23 13:54:04 2021 +0000 + + backend-common: leave ConfigReader to throw errors when config is missing in ServerTokenManager + + Signed-off-by: Mike Lewis + +commit f5fe59f964328af868f0f887a99e774feec7800e +Author: mufaddal motiwala +Date: Tue Nov 23 19:07:36 2021 +0530 + + backstage-cli versions:bump + + Signed-off-by: mufaddal motiwala + +commit d48ebb02804a0db9a43fbcbfce4d3483fc82e533 +Merge: faf3a716b8 68eddf88a0 +Author: mufaddal motiwala +Date: Tue Nov 23 19:05:34 2021 +0530 + + Merge branch 'master' of https://github.com/mufaddal7/backstage-1 into plugin/new-relic-dashboard + + Signed-off-by: mufaddal motiwala + +commit 68eddf88a02a2244cf10e64a7dd969133ddd64a1 +Merge: a7085710d5 8a96019a39 +Author: Patrik Oldsberg +Date: Tue Nov 23 13:47:51 2021 +0100 + + Merge pull request #8118 from backstage/rugvip/test-port + + packages,plugins: migrate to using TestApiProvider and TestApiRegistry + +commit a7085710d5a70f27d3c5da2570c5c5f81c95107a +Merge: c0a624b03f b922d3be1b +Author: Patrik Oldsberg +Date: Tue Nov 23 13:10:51 2021 +0100 + + Merge pull request #8208 from backstage/rugvip/rollupup + + yarn.lock: bump rollup-plugin-postcss + +commit f6429efb828e4eff0abe4168777022647a81cdfb +Author: irma12 +Date: Tue Nov 23 13:06:55 2021 +0100 + + Fix type of check to JsonValue + + Signed-off-by: irma12 + +commit c0a624b03f19d03741d5060d757e495d79d5a2ef +Merge: 5573149d3a 5919df85d1 +Author: Camila Belo +Date: Tue Nov 23 13:03:00 2021 +0100 + + Merge pull request #8179 from cmpadden/snyk-ignore-techdocs-cli + + Add .snyk ignore file for @techdocs/cli + +commit 883fd2f3a58367e3e9437a24e82847a68dff1d3d +Author: irma12 +Date: Tue Nov 23 12:50:01 2021 +0100 + + Modifications based on PR comments + + Signed-off-by: irma12 + +commit 8928c0f7c2ddd13899c27e53e3843908155f9f85 +Merge: 3944b5e9b8 5573149d3a +Author: hiba-aldalaty +Date: Tue Nov 23 11:28:07 2021 +0000 + + Merge branch 'master' into scalable-sidebar-new-implementation + + Signed-off-by: hiba-aldalaty + +commit f4420c77679f30e65ac6b01b7f92180a7318f71d +Merge: 89622c6ae2 5573149d3a +Author: irma12 +Date: Tue Nov 23 12:15:21 2021 +0100 + + Merge branch 'master' into scorecard-tech-insights + + Signed-off-by: irma12 + +commit fcfac818c88f83fb8a2c5c1b7a8f82937cd7ddb7 +Author: Patrik Oldsberg +Date: Tue Nov 23 12:11:41 2021 +0100 + + package.json: add script for running snyk tests + + Signed-off-by: Patrik Oldsberg + +commit b922d3be1b9b07de70f8ed0e5789e24365fc2b51 +Author: Patrik Oldsberg +Date: Tue Nov 23 12:10:37 2021 +0100 + + yarn.lock: bump rollup-plugin-postcss + + Signed-off-by: Patrik Oldsberg + +commit 03962638a03b08f8f8943afc0ef0fc73b2691d5e +Author: Mike Lewis +Date: Tue Nov 23 10:49:40 2021 +0000 + + create-app: fix formatting in search.ts + + Signed-off-by: Mike Lewis + +commit 5573149d3ac951651d82ec62d6475dc7f2625ba2 +Merge: 0eee3d98b9 7e4a1ea4cb +Author: Patrik Oldsberg +Date: Tue Nov 23 11:39:36 2021 +0100 + + Merge pull request #8206 from backstage/rugvip/app-theme + + docs/deprecations: add note about working around AppTheme type + +commit 1af175b0bc4735b06b76e867a1846253fd0b9c8b +Author: Lucile Desfour +Date: Tue Nov 23 11:13:24 2021 +0100 + + add allowed owner to scaffolder plugin (fix #8205) + + Signed-off-by: Lucile Desfour + +commit 0eee3d98b9e6e6aa75662472698f23d7f333ad97 +Merge: a6b5becf0f c844898a73 +Author: Fredrik Adelöw +Date: Tue Nov 23 11:11:59 2021 +0100 + + Merge pull request #8117 from cbjjensen/add-headers + + Letting GraphiQL use headers + +commit a6b5becf0f63747677049aa761098cf816b5ac4c +Merge: e74daa5893 c9ddb070c2 +Author: Fredrik Adelöw +Date: Tue Nov 23 11:11:13 2021 +0100 + + Merge pull request #8202 from backstage/freben/bump-rjsf + + bump rjsf + +commit 7e4a1ea4cbdf8e9370762418f1bdc1a5871fa65f +Author: Patrik Oldsberg +Date: Tue Nov 23 10:05:07 2021 +0100 + + docs/deprecations: add note about working around AppTheme type + + Signed-off-by: Patrik Oldsberg + +commit c9ddb070c23201e9230ef88c512aced059f23e90 +Author: blam +Date: Tue Nov 23 09:42:08 2021 +0100 + + chore: fixing changeset formatting + + Signed-off-by: blam + +commit 740f9582905654276c7582bd0aa66e7117f4b47c +Author: Joon Park +Date: Mon Nov 22 21:01:51 2021 +0000 + + Handle empty values array in EntityFilter + + While an empty values array is not really a sensible input, if an empty array is provided, technically nothing should be returned as a matching value, thus the existing behavior was technically a bug. + + Signed-off-by: Joon Park + +commit e74daa58938b837c850f995dd525410cf08ee5d3 +Merge: 9f9ff42e28 52d3ca287e +Author: Fredrik Adelöw +Date: Mon Nov 22 20:20:54 2021 +0100 + + Merge pull request #8199 from timja/patch-1 + + Fix broken ssl postgres docs + +commit faf3a716b8afca06d1125e42b4ddcb3f92d3cc58 +Author: mufaddal motiwala +Date: Tue Nov 23 00:29:36 2021 +0530 + + api key app configuration + + Signed-off-by: mufaddal motiwala + +commit aeb640e0e49895e3a55ffd37cea5ca4566909538 +Author: mufaddalWh +Date: Tue Nov 23 00:10:34 2021 +0530 + + added changeset + + Signed-off-by: mufaddalWh + Signed-off-by: mufaddal motiwala + +commit 7a108d9bf92bdcf4bdab7aefcf71620a6f635438 +Author: mufaddalWh +Date: Tue Nov 23 00:09:53 2021 +0530 + + Added usage information + + Signed-off-by: mufaddalWh + Signed-off-by: mufaddal motiwala + +commit 670e8fdbe7a9fa23c153562afb147703fde33a34 +Author: mufaddalWh +Date: Mon Nov 22 13:40:01 2021 +0530 + + Design changes + + Signed-off-by: mufaddal motiwala + +commit 48b2289c3ed78ce00d34f988f454976ecbe727b8 +Author: mufaddalWh +Date: Fri Nov 19 11:48:56 2021 +0530 + + Added duration variable in API query + + Signed-off-by: mufaddal motiwala + +commit 5f35e289009e220a33b276d5f6bdcdd7ec4e1766 +Author: mufaddalWh +Date: Thu Nov 18 13:14:16 2021 +0530 + + Adding New Relic Dashboard + + Signed-off-by: mufaddal motiwala + +commit 2d7d165737bb36f4f26c81965308822c533d3024 +Author: Fredrik Adelöw +Date: Mon Nov 22 19:58:16 2021 +0100 + + bump rjsf + + Signed-off-by: Fredrik Adelöw + +commit 839e931d34f2b3e64ddeabf28f668fb74f1e1665 +Author: Mike Lewis +Date: Mon Nov 22 18:44:49 2021 +0000 + + create-app: pass tokenManager when constructing TechDocsCollator + + Signed-off-by: Mike Lewis + +commit 14a6c46dff828c9f75def71bfbbafecf048f84cd +Merge: 7f0d927d99 9f9ff42e28 +Author: Mike Lewis +Date: Mon Nov 22 18:22:57 2021 +0000 + + Merge remote-tracking branch 'origin/master' into natasha/b2b-auth + + Signed-off-by: Mike Lewis + +commit 8a96019a39f8bc7e6b5d4001b9daf7f1eea14ddb +Merge: 29ef695410 9f9ff42e28 +Author: Patrik Oldsberg +Date: Mon Nov 22 17:33:10 2021 +0100 + + Merge branch 'master' into rugvip/test-port + +commit 52d3ca287ea617a42b7083c1399ccc26def93f75 +Author: Tim Jacomb <21194782+timja@users.noreply.github.com> +Date: Mon Nov 22 16:28:48 2021 +0000 + + Fix broken ssl postgres docs + + Signed-off-by: Tim Jacomb + +commit 9f9ff42e288969d59dd0eaf2e7a53b0ac5247da8 +Merge: a2e1a008bf 9312572360 +Author: Patrik Oldsberg +Date: Mon Nov 22 17:28:52 2021 +0100 + + Merge pull request #8193 from backstage/mod/auth-responses + + auth-backend: use more standardized error responses + +commit 3944b5e9b88f056e6b39e1c6de6a4365e4e69d59 +Author: hiba-aldalaty +Date: Mon Nov 22 16:15:18 2021 +0000 + + Update tests + + Signed-off-by: hiba-aldalaty + +commit 5bff67aac43eb68ceece4704fa788959b9e07c73 +Author: Mike Lewis +Date: Mon Nov 22 13:06:39 2021 +0000 + + permission-node: expose ApplyConditionsResponse type + + This type will be shared with the backend. + + Signed-off-by: Mike Lewis + +commit 3254303a96937f9b346ae9259107a823c6d78b9e +Author: Mike Lewis +Date: Fri Nov 19 13:43:59 2021 +0000 + + permission-node: refactor and split createPermissionIntegration + + This refactor makes the createPermissionIntegration system much more + flexible by splitting it up into a few different helpers with different + responsibilities. This frees up plugin authors to connect together the + different parts of the permission integration in whatever way is + convenient for them, and makes the process of registering additional + permission rules a bit more explicit, by requiring them to be passed + in when constructing the systems for transforming or applying + conditions. + + Signed-off-by: Mike Lewis + Co-authored-by: Joon Park + Co-authored-by: Tim Hansen + +commit 70ce7c91e269d8ed84405daae49eed3096da6ff6 +Author: Mike Lewis +Date: Fri Nov 19 18:40:41 2021 +0000 + + permission-node: bump @backstage/cli version + + Signed-off-by: Mike Lewis + +commit 0eb339c3a482cab5ac323d9cd89e0db7d3bf8809 +Author: Mike Lewis +Date: Thu Nov 18 13:54:28 2021 +0000 + + permission-node: more visible condition transform in mapCriteria test + + Signed-off-by: Mike Lewis + +commit 27d5f5fed3e4343f2f2389fa5ba57ebf9e496550 +Author: Tim Hansen +Date: Wed Nov 17 11:17:50 2021 -0700 + + Improve api-report + + Signed-off-by: Tim Hansen + +commit 5c5a1d16e41ee5e1baddba44bcaa7d95e5fcaa07 +Author: Mike Lewis +Date: Fri Nov 12 13:43:59 2021 +0000 + + authz: remove superfluous union type + + PermissionCriteria is a union type which already includes + TQuery itself, so we don't need a second union here. + + Signed-off-by: Mike Lewis + +commit 75dd00c8b627b4d80e1b1c0ca714897ff6a9af5e +Author: Mike Lewis +Date: Fri Nov 12 12:37:23 2021 +0000 + + authz: add missing fields to permission-node package.json + + Signed-off-by: Mike Lewis + +commit e2088541ddc81dbeff9331ae7711ed452233021f +Author: Mike Lewis +Date: Fri Nov 12 12:30:04 2021 +0000 + + authz: update references to permission-common after move to plugins + + Signed-off-by: Mike Lewis + +commit f72d7bba0e1a93343b76568b351220c0a608e040 +Author: Mike Lewis +Date: Thu Nov 11 18:27:46 2021 +0000 + + authz: add testsuite for createPermissionIntegration + + Signed-off-by: Mike Lewis + +commit 5c75c89106f824ae2d202cc2ee3eaef396160d28 +Author: Mike Lewis +Date: Thu Nov 11 18:27:27 2021 +0000 + + authz: improve error handling in permission-node apply-conditions route + + Signed-off-by: Mike Lewis + +commit 2b668f2eb886970a73b7f9498d5641a5fbe5d45b +Author: Mike Lewis +Date: Thu Nov 11 18:26:46 2021 +0000 + + build(deps): add dependency on zod in permission-node + + Signed-off-by: Mike Lewis + +commit 22f5de984007ecd6a4d24316e816a64b9c092d4b +Author: Mike Lewis +Date: Thu Nov 11 14:13:26 2021 +0000 + + authz: update createPermissionIntegration to work with new PermissionCriteria type + + Signed-off-by: Mike Lewis + +commit d0a99e3219e67fb1b81e205d2cf864c61fc8a81c +Author: Mike Lewis +Date: Thu Nov 11 14:12:38 2021 +0000 + + authz: update permission-node api-report + + Signed-off-by: Mike Lewis + +commit 64b6ff368f1e5081a8739cbad6c162c8bb402ce7 +Author: Mike Lewis +Date: Thu Nov 11 13:58:28 2021 +0000 + + authz: fix expected response type for /apply-conditions route + + Signed-off-by: Mike Lewis + +commit 652af0834ae886da9310bf60b9e84be0bb0f46ba +Author: Mike Lewis +Date: Thu Nov 11 13:58:05 2021 +0000 + + authz: add test suite for conditionFor + + Signed-off-by: Mike Lewis + +commit f3d2ccfeb883b6e79dc9e3177e4ca9a6b36a7082 +Author: Mike Lewis +Date: Thu Nov 11 13:56:07 2021 +0000 + + authz: switch to unknown[] in PermissionRule type parameter + + Signed-off-by: Mike Lewis + +commit 4083fcdb5e5dfd1bf7712c8e3c75204d3da1d859 +Author: Mike Lewis +Date: Thu Nov 11 13:54:29 2021 +0000 + + authz: fix PermissionCondition type parameter + + `unknown` doesn't satisfy the (recently added) `extends unknown[]` + constraint. In these two cases, we can remove the parameter entirely and + rely instead on the default of `unknown[]`. + + Signed-off-by: Mike Lewis + +commit a82709c38f4225331fd8f6fc91e81f91fd64a5d3 +Author: Mike Lewis +Date: Thu Nov 11 09:53:50 2021 +0000 + + authz: update unused type params in conditionFor to unknown + + Signed-off-by: Mike Lewis + +commit a1e2972ddaf6bc2fec733d53c6fdc453510bbd0c +Author: Tim Hansen +Date: Wed Nov 10 16:00:21 2021 -0700 + + Add permission-node package + + Signed-off-by: Tim Hansen + Co-authored-by: Mike Lewis + Co-authored-by: Himanshu Mishra + Co-authored-by: Joe Porpeglia + Co-authored-by: Vincenzo Scamporlino + +commit e72e908e3f5a0b1c6a87c0e381a3dce8e9426c14 +Author: Andrew Tran +Date: Mon Nov 22 09:32:52 2021 -0600 + + update example readme + + Signed-off-by: Andrew Tran + +commit a2e1a008bf5b0c9b74b3322efcf42181a078f311 +Merge: 87cd8ca64b 4167f6ed7e +Author: Ainhoa +Date: Mon Nov 22 15:32:26 2021 +0000 + + Merge pull request #8116 from ainhoaL/user-search-displayname + + Add User entities displayName to default catalog collator to be able to search by user's full name + +commit 87cd8ca64b3d4be4172d04ef80c0494340b6df31 +Merge: d413156a2a 4f3f55f15f +Author: Patrik Oldsberg +Date: Mon Nov 22 16:31:12 2021 +0100 + + Merge pull request #8186 from backstage/freben/bump-serialize-javascript + + bump terser-webpack-plugin and therefore serialize-javascript + +commit 5f864eceedbded76800c29ad6e7382fe81c3b2b2 +Author: Andrew Tran +Date: Mon Nov 22 09:26:19 2021 -0600 + + add example cronjob + + Signed-off-by: Andrew Tran + +commit d413156a2a029fc3d65f7bddc7872e6af3ee9103 +Merge: 1d6f337916 84ea8bf566 +Author: Ben Lambert +Date: Mon Nov 22 16:24:27 2021 +0100 + + Merge pull request #8187 from backstage/freben/remove-is-svg + + make sure to get rid of is-svg + +commit 1d6f337916f34a319ad4b77282322845eb5b6d9d +Merge: 1e57d1c23e 7b4db0d1aa +Author: Ben Lambert +Date: Mon Nov 22 16:24:01 2021 +0100 + + Merge pull request #8195 from adamdmharvey/adr-title-bug + + fix(docs): Missing ADR number in title + +commit 1ea036426c31f30205007db91d04c09322900c13 +Author: hiba-aldalaty +Date: Mon Nov 22 15:07:28 2021 +0000 + + Change fontsize of dropdown items + + Signed-off-by: hiba-aldalaty + +commit 1e57d1c23e5cc236796d7166aaf7b84c86e9b6e0 +Merge: e62bf29c1d 97b8c8c8fc +Author: Fredrik Adelöw +Date: Mon Nov 22 15:58:48 2021 +0100 + + Merge pull request #8071 from backstage/feat/change-default-port + + Change default port of backend from 7000 to 7007 + +commit 10376e33c49889a439f7cbe99c6c4c4e3542331b +Author: hiba-aldalaty +Date: Mon Nov 22 14:57:20 2021 +0000 + + Improve use of conditional classes + + Signed-off-by: hiba-aldalaty + +commit 1caf4c2d726543a12fa7383d52768fbdb81923bd +Author: Andrew Tran +Date: Mon Nov 22 08:52:00 2021 -0600 + + update schema.d.ts + + Signed-off-by: Andrew Tran + +commit 305901cbe6ce412d1349381fd58ce082c3cd710a +Author: hiba-aldalaty +Date: Mon Nov 22 14:43:18 2021 +0000 + + Modify SidebarContextType to reduce api surface + update api-report + + Signed-off-by: hiba-aldalaty + +commit c844898a73fae11dffef7a311495ae4f3962e22c +Author: Chad Jensen +Date: Mon Nov 22 08:22:36 2021 -0600 + + fixing another prettier issue + + Signed-off-by: Chad Jensen + +commit 7b4db0d1aa2d6e7d102a85c5c956241e33add840 +Author: Adam Harvey +Date: Mon Nov 22 09:17:19 2021 -0500 + + Fix missing ADR number in title + + Signed-off-by: Adam Harvey + +commit 90ad18e1a7da230bb673f7df056a482a62134d68 +Author: Morgan Martinet +Date: Mon Nov 22 09:06:20 2021 -0500 + + switch to patch release + + Signed-off-by: Morgan Martinet + +commit 18b089cdccaeeeea015080de5889e3892bc5d192 +Author: hiba-aldalaty +Date: Mon Nov 22 13:50:32 2021 +0000 + + Refactor: remove hasSubmenu prop and move submenuTitle prop to submenu component + + Signed-off-by: hiba-aldalaty + +commit e62bf29c1d598b2ef809c00079b33170d9d15374 +Merge: cd3aac016f 2017de90da +Author: Fredrik Adelöw +Date: Mon Nov 22 14:41:26 2021 +0100 + + Merge pull request #8069 from goenning/fix-techinsights-docs + + Fix techinsights docs: replaced DefaultTechInsightsBuilder with buildTechInsightsContext + +commit afa9dfe4057638013954c28e524fe282ac53e0f9 +Merge: db7227e659 cd3aac016f +Author: Yousif Al-Raheem +Date: Mon Nov 22 13:56:56 2021 +0100 + + Merge branch 'backstage:master' into master + +commit cd3aac016f4895d0a9b91d7c7c77c9a553d2be6c +Merge: 3487a35ee4 7f82ce9f51 +Author: Fredrik Adelöw +Date: Mon Nov 22 13:48:38 2021 +0100 + + Merge pull request #7817 from backstage/joonp/entitiessearchfilter-refactor + + [Mini PRFC] EntitiesSearchFilter type refactor + +commit 4167f6ed7ec80e0b34da2aee78aa537e5a4b4232 +Author: Ainhoa Larumbe +Date: Mon Nov 22 12:42:22 2021 +0000 + + change uppercase method + + Signed-off-by: Ainhoa Larumbe + +commit 3487a35ee41f56860ac11bc4ec437f4ba993576c +Merge: c8dac3c3b8 7673d7b2b3 +Author: Patrik Oldsberg +Date: Mon Nov 22 13:23:04 2021 +0100 + + Merge pull request #8175 from backstage/rugvip/release-flow + + Tweak release process to require changesets for new packages + +commit c8dac3c3b83fd87210ac3d295c7f4f430592add5 +Merge: b9af54d431 08dc0d6788 +Author: Patrik Oldsberg +Date: Mon Nov 22 13:22:49 2021 +0100 + + Merge pull request #8174 from backstage/rugvip/deprecations + + scripts: add script for listing deprecations + +commit b9af54d431d8e0db2d63dba89e5b036da807ed95 +Merge: 030ef22639 910c2674b5 +Author: Patrik Oldsberg +Date: Mon Nov 22 13:22:33 2021 +0100 + + Merge pull request #8089 from backstage/rugvip/test-api + + core,test-utils: deprecate ApiRegistry, add new TestApiProvider and TestApiRegistry + +commit 9312572360b69d65bcc2165a1f3c157a60c1eb54 +Author: Patrik Oldsberg +Date: Mon Nov 22 13:17:26 2021 +0100 + + auth-backend: use more standardized error responses + + Co-authored-by: Johan Haals + Signed-off-by: Patrik Oldsberg + +commit 030ef22639313b859bd9035f0ce420116867e755 +Merge: 979879d970 45dbf26094 +Author: Ben Lambert +Date: Mon Nov 22 13:04:12 2021 +0100 + + Merge pull request #8188 from backstage/freben/bump-mixme + + bump mixme + +commit e5bff80f786841550d024968d7182d14d8bbdfdd +Author: Ainhoa Larumbe +Date: Mon Nov 22 11:44:54 2021 +0000 + + uppercase kind + + Signed-off-by: Ainhoa Larumbe + +commit 979879d9707f5c7a6ce9d0b2f277bcf2a629a703 +Merge: 54fe58b85b 776cb9c1c5 +Author: Himanshu Mishra +Date: Mon Nov 22 16:53:24 2021 +0530 + + Merge pull request #8191 from petejespersqbe/feature/fix-qbe-name + + Fix QBE name in adopters list + +commit 776cb9c1c592c7ddbaf0bd7336899a145405b50c +Author: Pete Jespers +Date: Mon Nov 22 11:04:11 2021 +0000 + + Fix QBE name in adopters list + +commit db7227e659a32509306d3b233517116efb3dafa1 +Author: Yousif Al-Raheem +Date: Mon Nov 22 11:19:54 2021 +0100 + + use backstage link instead of react router link in memberslistcard + + Signed-off-by: Yousif Al-Raheem + +commit 45dbf26094e0fdc721b1f977cc643225f899005c +Author: Fredrik Adelöw +Date: Mon Nov 22 11:15:18 2021 +0100 + + bump mixme + + Signed-off-by: Fredrik Adelöw + +commit 84ea8bf56676b25adca67e5489b1cd11857d4221 +Author: Fredrik Adelöw +Date: Mon Nov 22 11:09:46 2021 +0100 + + make sure to get rid of is-svg + + Signed-off-by: Fredrik Adelöw + +commit 4f3f55f15feddead13e29e940192bdb6ea48fa54 +Author: Fredrik Adelöw +Date: Mon Nov 22 10:57:56 2021 +0100 + + bump terser-webpack-plugin and therefore serialize-javascript + + Signed-off-by: Fredrik Adelöw + +commit 73438d1ff10b751701e948d5be01b800916cd7fc +Author: Ainhoa Larumbe +Date: Mon Nov 22 09:41:00 2021 +0000 + + change methods to private + + Signed-off-by: Ainhoa Larumbe + +commit 54fe58b85bea9c7bf60e7f3b95292dbf7034c71e +Merge: 2c35a28386 dde216acf4 +Author: Patrik Oldsberg +Date: Mon Nov 22 10:24:11 2021 +0100 + + Merge pull request #8173 from backstage/rugvip/best + + cli: test coverage and speed improvements + +commit f9c0ad85d9741cb90b57d668577bb93a69a7f171 +Author: Nicolas Arnold +Date: Mon Nov 22 09:12:38 2021 +0000 + + Addressing comments + + Signed-off-by: Nicolas Arnold + +commit 2c35a28386db2cf39d35870c60e9430669350206 +Merge: 1adba3011d 07699d303f +Author: Fredrik Adelöw +Date: Mon Nov 22 07:30:41 2021 +0100 + + Merge pull request #8180 from backstage/freben/frontmattersalot + + Fix broken frontmatter on blog entries + +commit 1adba3011d899b5ced0f10608a1b67a572a0a9a0 +Merge: acd0b2b939 3c15ad9a55 +Author: Himanshu Mishra +Date: Mon Nov 22 11:31:00 2021 +0530 + + Merge pull request #8184 from backstage/dependabot/npm_and_yarn/octokit/webhooks-9.18.0 + + chore(deps): bump @octokit/webhooks from 9.17.0 to 9.18.0 + +commit 3739d3f7735ed5ecb5aaf7a0a343a58f0e27cd66 +Author: Morgan Martinet +Date: Mon Nov 22 00:05:55 2021 -0500 + + implement openshiftFormatter + + Signed-off-by: Morgan Martinet + +commit 3c15ad9a55bd83d2bd135081fa91e48b7c6568b8 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Mon Nov 22 04:13:50 2021 +0000 + + chore(deps): bump @octokit/webhooks from 9.17.0 to 9.18.0 + + Bumps [@octokit/webhooks](https://github.com/octokit/webhooks.js) from 9.17.0 to 9.18.0. + - [Release notes](https://github.com/octokit/webhooks.js/releases) + - [Commits](https://github.com/octokit/webhooks.js/compare/v9.17.0...v9.18.0) + + --- + updated-dependencies: + - dependency-name: "@octokit/webhooks" + dependency-type: direct:production + update-type: version-update:semver-minor + ... + + Signed-off-by: dependabot[bot] + +commit acd0b2b939fb5926f6175fd96efc74498c322b55 +Merge: 2b00e00f18 58aaad546e +Author: Tim Hansen +Date: Sun Nov 21 20:44:32 2021 -0700 + + Merge pull request #8183 from adamdmharvey/script-var-typo + + chore(utility): Refactor script var typo + +commit 58aaad546e6c2f081aa79c33af2f4e07a29ec2cc +Author: Adam Harvey +Date: Sun Nov 21 22:01:33 2021 -0500 + + Refactor script var typo + + Signed-off-by: Adam Harvey + +commit 07699d303fc2b7b3e10b5c4d4d769393b7c451a2 +Author: Fredrik Adelöw +Date: Sun Nov 21 21:15:01 2021 +0100 + + Fix broken frontmatter on blog entries + + Signed-off-by: Fredrik Adelöw + +commit 563b039f0b6ea67ef7adc04912ef728af8117fd9 +Author: goenning +Date: Sun Nov 21 14:51:33 2021 +0000 + + add api-report and changeset + + Signed-off-by: goenning + +commit ac724ea8aee28c2deec0099fa46347853113be5a +Author: goenning +Date: Sun Nov 21 14:45:41 2021 +0000 + + adding tests + + Signed-off-by: goenning + +commit 5919df85d15832fbba75122f5fa624a13399c9ec +Author: Colton Padden +Date: Sun Nov 21 09:39:02 2021 -0500 + + Add .snyk ignore file for @techdocs/cli + + Ignores with 6-month duration for vulnerabilities that have also been ignored + for @backstage/cli: + + - SNYK-JS-BROWSERSLIST-1090194 + - SNYK-JS-IMMER-1540542 + + Signed-off-by: Colton Padden + +commit 08dc0d6788472521fa6863032d36cf99b101cb76 +Author: Patrik Oldsberg +Date: Sun Nov 21 15:09:42 2021 +0100 + + scripts/list-deprecations: allow args to be passed to filter packages + + Signed-off-by: Patrik Oldsberg + +commit 05ccc8276c4db381bd0390b646fc4213863ea73f +Author: Patrik Oldsberg +Date: Sun Nov 21 13:53:33 2021 +0100 + + scripts/list-deprecations: improve release lookup to check for actual release + + Signed-off-by: Patrik Oldsberg + +commit 51e42bc2c81846765b11ca9288259225a0b4346e +Author: goenning +Date: Sat Nov 20 21:20:47 2021 +0000 + + add support for search queries + + Signed-off-by: goenning + +commit 910c2674b501f3070cb3c817fad7d855021dd60b +Author: Patrik Oldsberg +Date: Sat Nov 20 15:52:01 2021 +0100 + + test-utils: review fixes + + Signed-off-by: Patrik Oldsberg + +commit 2cd2bab86af08901a9b9193da6a2fa6f788709f2 +Author: Patrik Oldsberg +Date: Sat Nov 20 13:54:34 2021 +0100 + + scripts: add script for listing deprecations + + Signed-off-by: Patrik Oldsberg + +commit 7673d7b2b3c955a9d5b7e4f7f4bffaec5e9828a8 +Author: Patrik Oldsberg +Date: Sat Nov 20 14:54:49 2021 +0100 + + set initial version of packages to 0.0.0 + + Signed-off-by: Patrik Oldsberg + +commit ab31a2c2869dcaafc8e1bb61cf1e6419f6334704 +Author: Patrik Oldsberg +Date: Sat Nov 20 14:50:10 2021 +0100 + + updated release process to not release new packages immediately + + Signed-off-by: Patrik Oldsberg + +commit dde216acf4317c13f3a21fbed5483d068391d565 +Author: Patrik Oldsberg +Date: Sat Nov 20 11:32:22 2021 +0100 + + cli: switch to v8 coverage provider + + Signed-off-by: Patrik Oldsberg + +commit 719cc87d2f2183a6595c60fe8d14b30a50e44188 +Author: Patrik Oldsberg +Date: Sat Nov 20 11:24:08 2021 +0100 + + cli: disable ES transform in tests + + Signed-off-by: Patrik Oldsberg + +commit 0179bd1f139b9e7383a965b0adf53075ad0eaf7a +Author: goenning +Date: Sat Nov 20 09:37:57 2021 +0000 + + draft implementation for AzureDevOps Discovery + + Signed-off-by: goenning + +commit 0f7665a10bc28e13d15fc77418338aaa1cb8cf54 +Author: Chad Jensen +Date: Fri Nov 19 22:13:16 2021 -0600 + + fixing other prettier issue + + Signed-off-by: Chad Jensen + +commit 2b00e00f18a8fd289d7915c691c817e2de795ae1 +Merge: c4328a1274 92439056fb +Author: Tim Hansen +Date: Fri Nov 19 20:18:32 2021 -0700 + + Merge pull request #8151 from backstage/permission-client-pass-config + + permission-common: accept configApi in PermissionClient constructor + +commit 37dc8447287eaf04ec6e66f7009b8dee42e689e9 +Author: Andrew Tran +Date: Fri Nov 19 17:11:11 2021 -0600 + + add changeset + + Signed-off-by: Andrew Tran + +commit 361aad1a0ff1192a864683a7b0b501e1ae8b718c +Author: Andrew Tran +Date: Fri Nov 19 11:29:11 2021 -0600 + + add cronjobs and jobs to k8s backend + + Signed-off-by: Andrew Tran + +commit 142ae64a58c4461cc3bd1c985851c6d78643260e +Author: Chad Jensen +Date: Fri Nov 19 15:51:06 2021 -0600 + + fixing prettier issue + + Signed-off-by: Chad Jensen + +commit 4894049dfed0de4b0b0ba55fdac734695ad542e2 +Author: hiba-aldalaty +Date: Fri Nov 19 15:00:11 2021 +0000 + + Change SubmenuItem to SidebarSubItem + + Signed-off-by: hiba-aldalaty + +commit c4328a12749541891abbecc2d69dcfbd91050fb2 +Merge: 5bfead02ec a519640e67 +Author: Himanshu Mishra +Date: Fri Nov 19 20:29:05 2021 +0530 + + Merge pull request #8167 from awanlin/bug/fix-azure-devops-readme-missed-naming-change + + Fixed missed naming and typos in Azure DevOps README + +commit 5bfead02ecdf77f79df0e954fc6ff3986afbab45 +Merge: d0ced15700 860254207c +Author: Eric Peterson +Date: Fri Nov 19 15:56:41 2021 +0100 + + Merge pull request #8141 from backstage/emmaindal/techdocs-search-default-app + + Add techdocs search to default app + +commit a519640e6742e78d2f0d6da811c71002c1ef455b +Author: Andre Wanlin +Date: Fri Nov 19 07:34:56 2021 -0600 + + Rushing, this is the correct change + + Signed-off-by: Andre Wanlin + +commit ab7f280cb491ce2dee52773e52d609978c2927ac +Author: Andre Wanlin +Date: Fri Nov 19 07:31:10 2021 -0600 + + Fixed missed naming and typos + + Signed-off-by: Andre Wanlin + +commit adfc0c0a06db74ffe992672cd0c11a0dc79cab87 +Author: hiba-aldalaty +Date: Fri Nov 19 13:16:44 2021 +0000 + + Export SubmenuItemProps and DropdownItemProps in index & remove hasDropDown boolean- fix ae-forgotten-export warnings in api-report + + Signed-off-by: hiba-aldalaty + +commit d0ced157003a5ad344c4532a7914d72f474f3ad4 +Merge: a2d82ed3dc 157530187a +Author: Himanshu Mishra +Date: Fri Nov 19 17:24:06 2021 +0530 + + Merge pull request #8152 from RoadieHQ/sidebar-pin-default + + Pin Sidebar by default + +commit a9d85516e67a2b0ba221f353d69a81d9cdc78c54 +Author: hiba-aldalaty +Date: Fri Nov 19 11:33:43 2021 +0000 + + Add jsdoc documents - fix some ae-missing-release-tag warnings in api-report + + Signed-off-by: hiba-aldalaty + +commit 3c6141c37ab0af1cba9d7a803b0d058b33370f9d +Author: Nicolas Arnold +Date: Fri Nov 19 11:09:37 2021 +0000 + + Fix return type + + Signed-off-by: Nicolas Arnold + +commit 8866b62f3ddb2a9e1cd842feea7002b30b5276bb +Author: Nicolas Arnold +Date: Thu Nov 18 17:42:17 2021 +0000 + + Fail when adding duplicate locations using the dry run flag + + This change here adds in logic to the DefaultLocationService that will prematurely terminate the dry run addition of locations if there is a duplicate entity in the unprocessed entities. + Adding this logic here will avoid an infinite loop if a monorepo arch is used (for example if a target references itself). It will also enforce some best practices. + I have also added tests. + + You can test this out using this catalog-info.yaml: https://github.com/RoadieHQ/monorepo-infinte-loop/blob/main/catalog-info.yaml + + Signed-off-by: Nicolas Arnold + +commit a2d82ed3dc4581e2e3f4a18cca77af57ccb8f2f0 +Merge: 7c4ae26d71 8c4397730c +Author: Himanshu Mishra +Date: Fri Nov 19 16:33:36 2021 +0530 + + Merge pull request #8161 from petejespersqbe/feature/add-qbe-adopter + + Add QBE as a Backstage adopter + +commit 7c4ae26d71c338c5fe79d29056a2f4492dd08f84 +Merge: 2d03529828 20900440a3 +Author: Himanshu Mishra +Date: Fri Nov 19 16:33:24 2021 +0530 + + Merge pull request #8159 from gotson/disable-snyk-workflow-on-forks + + disable snyk workflow on forks + +commit 3805cd7d368b0dc41d2846031afc59835288fadb +Author: hiba-aldalaty +Date: Fri Nov 19 10:32:06 2021 +0000 + + Make dropdown items full height & width - make hit slop bigger + + Signed-off-by: hiba-aldalaty + +commit 8c4397730c13f3cdcba55abbb6faa82eaffd72c5 +Author: Pete Jespers +Date: Fri Nov 19 10:11:30 2021 +0000 + + Add QBE as a Backstage adopter + + Signed-off-by: Pete Jespers + +commit 92439056fbe089749f123d52b0de07bf150ff100 +Author: Mike Lewis +Date: Fri Nov 19 09:35:47 2021 +0000 + + add changeset for new PermissionClient constructor signature + + Signed-off-by: Mike Lewis + +commit d1dcd7e309486570627baaf4801d19d9b250ce77 +Author: Mike Lewis +Date: Fri Nov 19 09:34:21 2021 +0000 + + permission-common: make permission.enabled config optional + + Signed-off-by: Mike Lewis + +commit 430b3f7a8f88e965587b292971b7008ff8bc8a67 +Author: Mike Lewis +Date: Fri Nov 19 09:35:09 2021 +0000 + + permission-common: accept configApi in PermissionClient constructor + + Moving the responsibility of pulling the right configuration key inside + the PermissionClient keeps it as the responsibility of + permission-common, whereas putting it on the outside means anyone + constructing a PermissionClient has to know which key to use. + + Signed-off-by: Mike Lewis + +commit 2d03529828ec063b738bebdd04731e0d2528dc28 +Merge: d83ce65d5b 4d97ec07fa +Author: Patrik Oldsberg +Date: Fri Nov 19 09:49:39 2021 +0100 + + Merge pull request #8144 from backstage/jhaals/errorz + + errors: rework error response naming + +commit 20900440a33dff1d9a1df11affa72db4fc34b865 +Author: Gauthier Roebroeck +Date: Fri Nov 19 16:43:10 2021 +0800 + + disable snyk workflow on forks + + Signed-off-by: Gauthier Roebroeck + +commit d83ce65d5b92d9df3d1f30a119346c97b594552c +Merge: 784cfe482d ee055cf6db +Author: Fredrik Adelöw +Date: Fri Nov 19 09:38:24 2021 +0100 + + Merge pull request #8148 from backstage/freben/notitle + + use id instead of title in the default plugin routes + +commit 784cfe482d76b8e11f5fa1c709f1fdd3e9b52e7e +Merge: db8d694229 0496f6497c +Author: Patrik Oldsberg +Date: Fri Nov 19 09:24:43 2021 +0100 + + Merge pull request #8157 from backstage/dependabot/npm_and_yarn/types/diff-5.0.1 + + chore(deps-dev): bump @types/diff from 5.0.0 to 5.0.1 + +commit 0496f6497c5daf34d30c3a6474fd2db7c45ccb9e +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Fri Nov 19 04:07:58 2021 +0000 + + chore(deps-dev): bump @types/diff from 5.0.0 to 5.0.1 + + Bumps [@types/diff](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/diff) from 5.0.0 to 5.0.1. + - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) + - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/diff) + + --- + updated-dependencies: + - dependency-name: "@types/diff" + dependency-type: direct:development + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit db8d69422904f2c4becd3c08d82b1a841ccc3a89 (tag: v0.55.1, tag: release-2021-11-19) +Merge: eb780ea9e7 0fae9f2c0b +Author: Patrik Oldsberg +Date: Fri Nov 19 00:09:22 2021 +0100 + + Merge pull request #8153 from backstage/rugvip/typfix + + core-app-api: fix and release accidental createApp type breakage + +commit 0fae9f2c0b0e943b089e020661ed345765b50ad8 +Author: Patrik Oldsberg +Date: Thu Nov 18 21:46:16 2021 +0100 + + core-app-api: fix and release accidental createApp type breakage + + Signed-off-by: Patrik Oldsberg + +commit eb780ea9e7fead1f1409982ee409827704221dae +Merge: fb03c47c8b 478c4e180a +Author: Fredrik Adelöw +Date: Thu Nov 18 22:44:38 2021 +0100 + + Merge pull request #8155 from caeugusmao/master + + Add Globo as a Backstage Developer Portal adapter + +commit 478c4e180abb5b4060b79eb3be656afcf70840c3 +Author: Carlos Eugenio Rodrigues Gusmão +Date: Thu Nov 18 18:12:41 2021 -0300 + + Add Globo as a Backstage Developer Portal adapter + +commit 157530187ac221beae04921619d063304e833abd +Author: sblausten +Date: Thu Nov 18 19:00:28 2021 +0100 + + Add Changeset + + Signed-off-by: sblausten + +commit bfa59576696f7d82bb8e6ea7485e261377eb3382 +Author: sblausten +Date: Thu Nov 18 18:25:43 2021 +0100 + + Change sidebar to be pinned by default + + Signed-off-by: sblausten + +commit 7f0d927d99fd00b18ce449c1cf329d655a699551 +Author: Nataliya Issayeva +Date: Thu Nov 18 08:44:28 2021 -0800 + + Move authing API requests tutorial to main docs + + Signed-off-by: Nataliya Issayeva + +commit 97b8c8c8fc6a44bc19ad9850ae0ef8890f66c890 +Author: Otto Sichert +Date: Thu Nov 18 17:23:43 2021 +0100 + + Ensure all relevant port references are updated and document changes + + Signed-off-by: Otto Sichert + +commit ee055cf6db4d04c6fa090a37cf005cb25bad74f4 +Author: Fredrik Adelöw +Date: Thu Nov 18 16:59:38 2021 +0100 + + use id instead of title in the default plugin routes + + Signed-off-by: Fredrik Adelöw + +commit 6968b52b9d3614ac564a3a96b22dcc39c89b8fcb +Author: Nataliya Issayeva +Date: Wed Nov 17 08:52:29 2021 -0800 + + Update changeset + + Signed-off-by: Nataliya Issayeva + +commit 98bad1b7d881e177fabf384308aad78970f6ce3c +Author: Nataliya Issayeva +Date: Tue Nov 16 10:30:59 2021 -0800 + + Update changeset and docs + + Signed-off-by: Nataliya Issayeva + +commit 96bf8661b8b8cae358b8b95802a1768a83b09f6b +Author: Nataliya Issayeva +Date: Mon Nov 15 11:04:21 2021 -0500 + + Add changeset + + Signed-off-by: Nataliya Issayeva + +commit c149a56f79888ff725d4694416ae2b1e1da65ce5 +Author: Nataliya Issayeva +Date: Mon Nov 15 10:03:56 2021 -0500 + + Fix prettier error maybe + + Signed-off-by: Nataliya Issayeva + +commit 0f5744a5a2576316edd682fc81322164abfcd0c5 +Author: Nataliya Issayeva +Date: Mon Nov 15 09:44:44 2021 -0500 + + Mark auth secret as secret + + Signed-off-by: Nataliya Issayeva + +commit 8e77f47119f6ccd5dbd5218efd68fc30b69bc6a1 +Author: Nataliya Issayeva +Date: Fri Nov 12 16:48:09 2021 -0500 + + Add missing tokenManager in default app backend + + Signed-off-by: Nataliya Issayeva + +commit 640ba82ca67b0e41270f5672b8a573ed01f673cf +Author: Nataliya Issayeva +Date: Fri Nov 12 16:25:12 2021 -0500 + + Update api reports + + Signed-off-by: Nataliya Issayeva + +commit f04f38dbcd0bf873a97643d7b7e6e1832937d5d4 +Author: Nataliya Issayeva +Date: Fri Nov 12 16:09:08 2021 -0500 + + Fix collator tests + + Signed-off-by: Nataliya Issayeva + +commit 83aa387b626b8f40f01743ba5713d6168522adbf +Author: Nataliya Issayeva +Date: Fri Nov 12 15:41:21 2021 -0500 + + Default to noop tokenManager and no backend secret + + Signed-off-by: Nataliya Issayeva + +commit c35abaadee02f5dfcd7d75bb2069415c7b801c77 +Author: Nataliya Issayeva +Date: Wed Nov 10 16:12:36 2021 -0500 + + Clean up tests a bit + + Signed-off-by: Nataliya Issayeva + +commit 74801b176bae4b34faef9bce97f586a1817239d9 +Author: Nataliya Issayeva +Date: Wed Nov 10 16:05:52 2021 -0500 + + Update authenticate api request tutorial doc + + Signed-off-by: Nataliya Issayeva + +commit 9cbb3cf908cfe1565afc4f65acf7cfb6815ed8ce +Author: Nataliya Issayeva +Date: Wed Nov 10 15:14:40 2021 -0500 + + Remove auth middleware + + Signed-off-by: Nataliya Issayeva + +commit fca908a7d64480645f52999c08da1b22accda802 +Author: Nataliya Issayeva +Date: Tue Nov 9 18:02:35 2021 -0500 + + Move IdentityClient back to auth-backend + + Signed-off-by: Nataliya Issayeva + +commit b38d77f4f0f9ebc2cda7a43bc1031549d7458cd3 +Author: Nataliya Issayeva +Date: Tue Nov 9 17:57:03 2021 -0500 + + Change AuthIdentityTokenManager to ServerTokenManager + + Co-authored-by: Joe Porpeglia + Co-authored-by: Tim Hansen + Signed-off-by: Nataliya Issayeva + +commit fa6a9b797f00a786fffef6353a68a5abba0c608d +Author: Nataliya Issayeva +Date: Mon Nov 8 17:09:50 2021 -0500 + + Update AuthIdentityTokenManager tests + + Signed-off-by: Nataliya Issayeva + +commit 8fa1098cd575ea89eab20c413c37077bbf2a6c32 +Author: Nataliya Issayeva +Date: Mon Nov 8 16:49:46 2021 -0500 + + Handle optionally set backend auth secret + + Signed-off-by: Nataliya Issayeva + +commit 8ceffe5f98f32f1bbc2f4ca9996309f314613842 +Author: Nataliya Issayeva +Date: Mon Nov 8 16:11:01 2021 -0500 + + Use backend secret from config + + Signed-off-by: Nataliya Issayeva + +commit 75897957984ca807a6b437c60f4705f4044ff63b +Author: Nataliya Issayeva +Date: Mon Nov 8 13:55:01 2021 -0500 + + Use correct JWT type and algorithm + + Signed-off-by: Nataliya Issayeva + +commit 2533294ec11b32c2e4e1e73929adef796226ed19 +Author: Nataliya Issayeva +Date: Fri Oct 29 16:43:32 2021 -0400 + + Static create and private constructor not really needed + + Signed-off-by: Nataliya Issayeva + +commit 1b2bd0ec015d9266fe3ff3d5d7aafea8141b2b1b +Author: Nataliya Issayeva +Date: Fri Oct 29 16:22:27 2021 -0400 + + Add basic tests + + Signed-off-by: Nataliya Issayeva + +commit f3d9de436f5df72b6ef0094e5c635bb4bdb0ecdc +Author: Nataliya Issayeva +Date: Fri Oct 29 16:21:51 2021 -0400 + + Make tokenManager constructor private and add static create method + + Signed-off-by: Nataliya Issayeva + +commit c4bdd0451579531773e24f5b4124b5d038c080d7 +Author: Nataliya Issayeva +Date: Fri Oct 29 15:37:10 2021 -0400 + + Use and validate JWT for servers + + Signed-off-by: Nataliya Issayeva + +commit 2a320c21b4aadd1b7739d76da8d783b62b48f585 +Author: Joe Porpeglia +Date: Thu Oct 28 15:51:20 2021 -0400 + + Pass auth token from document collators + + Co-authored-by: Nataliya Issayeva + Co-authored-by: Tim Hansen + Signed-off-by: Joe Porpeglia + +commit 657a6a0b8e5301e82703b4f31c6ea6db3bafdaf0 +Author: Nataliya Issayeva +Date: Wed Oct 27 16:59:36 2021 -0400 + + Add code to enable authorization + + Signed-off-by: Nataliya Issayeva + +commit 2017de90da1d5bf37d8834d93ee1d479ab9e85d0 +Author: goenning +Date: Thu Nov 18 15:53:50 2021 +0000 + + add changeset + + Signed-off-by: goenning + +commit 7b4f1ed0b9b82bd965f29509f5a03b05a8e50d78 +Author: Nataliya Issayeva +Date: Wed Oct 27 16:49:56 2021 -0400 + + Add TODOs + + Signed-off-by: Nataliya Issayeva + +commit 4f066c3be6a24e4195c97082957c7c7908a66847 +Author: Nataliya Issayeva +Date: Tue Oct 26 15:50:40 2021 -0400 + + Inject tokenManager into plugin environment + + Signed-off-by: Nataliya Issayeva + +commit 883b9ad29fce8535d7614fd2b3da7f1bb153533d +Author: Nataliya Issayeva +Date: Tue Oct 26 15:49:48 2021 -0400 + + Use IdentityClient to validate frontend tokens + + Signed-off-by: Nataliya Issayeva + +commit f96679d0e6770889d3ee71e4efecdca00fcdbdc6 +Author: Nataliya Issayeva +Date: Tue Oct 26 15:47:41 2021 -0400 + + Move IdentityClient to backend-common + + Signed-off-by: Nataliya Issayeva + +commit e7e55cdce19529a617e58463fcf5bc3d8a2d5171 +Author: Nataliya Issayeva +Date: Tue Oct 26 14:48:51 2021 -0400 + + Add TokenManager interface and basic implementation + + Signed-off-by: Nataliya Issayeva + +commit bab752e2b3ed7c120143b715098d34195d8a8ebd +Author: Otto Sichert +Date: Tue Nov 16 15:11:40 2021 +0100 + + Add changeset + + Signed-off-by: Otto Sichert + +commit b23bc7f9c3437ff95641292e323950ae36c80ae2 +Author: Otto Sichert +Date: Tue Nov 16 14:58:56 2021 +0100 + + Change default port of backend to 7007 due to MacOS Control Center update + + Signed-off-by: Otto Sichert + +commit ef64a444caa88b7e20c417d50466065fb281c9a4 +Author: Kai Szybiak +Date: Thu Nov 18 15:46:07 2021 +0100 + + Add changeset + + Signed-off-by: Kai Szybiak + +commit b6a2c1f255858848afcce01001b5c48067148e47 +Author: Kai Szybiak +Date: Thu Nov 18 15:43:37 2021 +0100 + + Update AsyncAPI component to 1.0.0-x releases + + Signed-off-by: Kai Szybiak + +commit fb03c47c8b1e6d37bfe182e88d675e7b330615d9 +Merge: 153eac4252 6a2cc4cfa7 +Author: Fredrik Adelöw +Date: Thu Nov 18 15:40:13 2021 +0100 + + Merge pull request #8142 from gotson/patch-1 + + [Doc] fix typos in todo plugin Readme + +commit 153eac4252f2b47d246cdfff3f567644761af201 +Merge: ddfdcd2b44 9f21236a29 +Author: Ben Lambert +Date: Thu Nov 18 15:17:36 2021 +0100 + + Merge pull request #8143 from backstage/freben/await-error + + Fixed missing `await` when throwing server side errors + +commit 4d97ec07fa44540ea3a99f4e5ec73c279ad73626 +Author: Johan Haals +Date: Thu Nov 18 14:56:32 2021 +0100 + + Update tests + + Signed-off-by: Johan Haals + +commit 4d09c602561c38501a3be0b8c7f0daf645db983a +Author: Johan Haals +Date: Thu Nov 18 14:50:56 2021 +0100 + + errors: rework error response naming + + Co-authored-by: Patrik Oldsberg + Co-authored-by: Fredrik Adelöw + Co-authored-by: blam + Signed-off-by: Johan Haals + +commit 860254207c7e85dcbc62486f60f018c4dcb42fbe +Author: Emma Indal +Date: Thu Nov 18 14:45:06 2021 +0100 + + prettier + + Signed-off-by: Emma Indal + +commit 9f21236a294afa9755673599cc0cb9435a773676 +Author: Fredrik Adelöw +Date: Thu Nov 18 14:19:28 2021 +0100 + + Fixed a missing `await` when throwing server side errors + + Signed-off-by: Fredrik Adelöw + +commit ddfdcd2b44dc9848cf550cea5346d5f9916a36d9 (tag: v0.55.0, tag: release-2021-11-18) +Merge: 70e4b222be 99bf179ccf +Author: Fredrik Adelöw +Date: Thu Nov 18 13:45:44 2021 +0100 + + Merge pull request #7991 from backstage/changeset-release/master + + Version Packages + +commit 6a2cc4cfa787eb3598c8b1da8e5beb87f4dfb182 +Author: Gauthier +Date: Thu Nov 18 20:22:38 2021 +0800 + + Update README.md + + Signed-off-by: Gauthier Roebroeck + +commit 587265a4891eccbbbc3346494e3209f41885d62c +Author: Gauthier +Date: Thu Nov 18 20:21:08 2021 +0800 + + Update README.md + + Signed-off-by: Gauthier Roebroeck + +commit 99bf179ccfe13b2c91e890c683443ea2a1c1773f +Author: github-actions[bot] +Date: Thu Nov 18 11:52:08 2021 +0000 + + Version Packages + +commit 70e4b222be4a7e2641a0ebd109cfc4663c934bf6 +Merge: e72b1b83c8 475edb5bc5 +Author: Fredrik Adelöw +Date: Thu Nov 18 12:46:39 2021 +0100 + + Merge pull request #8132 from backstage/freben/behavior-init-constructor + + move the BehaviorSubject init into the constructor + +commit a5a5d7e1f1769127b95168dfe9f6923e7d28f625 +Author: Emma Indal +Date: Thu Nov 18 12:39:48 2021 +0100 + + add changeset + + Signed-off-by: Emma Indal + +commit 8b5034034fa94e0c928e5188d34ed3af2bb2ca13 +Merge: fa6c26f68d 30477dbd59 +Author: Marley Powell +Date: Thu Nov 18 11:25:35 2021 +0000 + + Merge branch 'master' of https://github.com/backstage/backstage into marley/7678-pull-request-dashboard + + Signed-off-by: Marley Powell + +commit e72b1b83c8d72e287636664e74ad6b957a221c69 +Merge: 30477dbd59 92f87a9a16 +Author: Ben Lambert +Date: Thu Nov 18 12:18:17 2021 +0100 + + Merge pull request #8122 from backstage/blam/sec/dockerode + + Bumping testcontainers + dockerode + +commit d3248fb8c9577f3ad4268d206c8ad5555171eddd +Author: Emma Indal +Date: Thu Nov 18 11:52:40 2021 +0100 + + add techdocs search capabilities to default app + + Signed-off-by: Emma Indal + +commit 30477dbd59d7c9594d0ea1c5ff913fd0c3cdb5be +Merge: ae381d0156 3b06282579 +Author: Ben Lambert +Date: Thu Nov 18 12:10:31 2021 +0100 + + Merge pull request #8139 from backstage/dependabot/npm_and_yarn/microsite/hosted-git-info-2.8.9 + + chore(deps): bump hosted-git-info from 2.8.8 to 2.8.9 in /microsite + +commit ae381d0156a1c63a74ff01d0cbbd2142b88b626e +Merge: 23678544ee 08dc441019 +Author: Fredrik Adelöw +Date: Thu Nov 18 11:57:24 2021 +0100 + + Merge pull request #8138 from backstage/dependabot/npm_and_yarn/microsite/postcss-7.0.39 + + chore(deps): bump postcss from 7.0.35 to 7.0.39 in /microsite + +commit 23678544eee5dd3864ae39bf4424e4debb989c9b +Merge: 684af3dd81 325be576ea +Author: Fredrik Adelöw +Date: Thu Nov 18 11:57:01 2021 +0100 + + Merge pull request #8057 from RoadieHQ/entity-fact-retriever + + Catalog fact retriever + +commit 3b06282579a83909694088a611c4b989bc75c77d +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Thu Nov 18 10:48:52 2021 +0000 + + chore(deps): bump hosted-git-info from 2.8.8 to 2.8.9 in /microsite + + Bumps [hosted-git-info](https://github.com/npm/hosted-git-info) from 2.8.8 to 2.8.9. + - [Release notes](https://github.com/npm/hosted-git-info/releases) + - [Changelog](https://github.com/npm/hosted-git-info/blob/v2.8.9/CHANGELOG.md) + - [Commits](https://github.com/npm/hosted-git-info/compare/v2.8.8...v2.8.9) + + --- + updated-dependencies: + - dependency-name: hosted-git-info + dependency-type: indirect + ... + + Signed-off-by: dependabot[bot] + +commit 684af3dd812d96605079d9a16ed50303e4a79a98 +Merge: eaf85fd456 5ca190c431 +Author: Fredrik Adelöw +Date: Thu Nov 18 11:48:19 2021 +0100 + + Merge pull request #8137 from backstage/dependabot/npm_and_yarn/microsite/set-getter-0.1.1 + + chore(deps): bump set-getter from 0.1.0 to 0.1.1 in /microsite + +commit eaf85fd45698cbe8ea3f404cc36100b41d324ae2 +Merge: 60f77cc971 6c15c54818 +Author: Fredrik Adelöw +Date: Thu Nov 18 11:38:06 2021 +0100 + + Merge pull request #8134 from backstage/dependabot/npm_and_yarn/microsite/path-parse-1.0.7 + + chore(deps): bump path-parse from 1.0.6 to 1.0.7 in /microsite + +commit 08dc441019ac2ae9054595341327c88f47b1f2de +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Thu Nov 18 10:37:27 2021 +0000 + + chore(deps): bump postcss from 7.0.35 to 7.0.39 in /microsite + + Bumps [postcss](https://github.com/postcss/postcss) from 7.0.35 to 7.0.39. + - [Release notes](https://github.com/postcss/postcss/releases) + - [Changelog](https://github.com/postcss/postcss/blob/7.0.39/CHANGELOG.md) + - [Commits](https://github.com/postcss/postcss/compare/7.0.35...7.0.39) + + --- + updated-dependencies: + - dependency-name: postcss + dependency-type: indirect + ... + + Signed-off-by: dependabot[bot] + +commit 60f77cc9718d2ad4020c72e18b4a94ad24f73883 +Merge: 0f651094b7 0b8032bd3d +Author: Ben Lambert +Date: Thu Nov 18 11:37:22 2021 +0100 + + Merge pull request #8135 from backstage/dependabot/npm_and_yarn/microsite/color-string-1.6.0 + + chore(deps): bump color-string from 1.5.4 to 1.6.0 in /microsite + +commit 0f651094b734151c4c876bd7cf9c7d71eb25cfa6 +Merge: 10ebe95c81 4147f45b3e +Author: Ben Lambert +Date: Thu Nov 18 11:36:51 2021 +0100 + + Merge pull request #8136 from backstage/dependabot/npm_and_yarn/microsite/prismjs-1.25.0 + + chore(deps): bump prismjs from 1.23.0 to 1.25.0 in /microsite + +commit 5ca190c4314a7cb7b03931024f678dd35523dd52 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Thu Nov 18 10:36:19 2021 +0000 + + chore(deps): bump set-getter from 0.1.0 to 0.1.1 in /microsite + + Bumps [set-getter](https://github.com/doowb/set-getter) from 0.1.0 to 0.1.1. + - [Release notes](https://github.com/doowb/set-getter/releases) + - [Commits](https://github.com/doowb/set-getter/commits/0.1.1) + + --- + updated-dependencies: + - dependency-name: set-getter + dependency-type: indirect + ... + + Signed-off-by: dependabot[bot] + +commit 10ebe95c810b133cb2b015bd5820cf31119478a7 +Merge: 0ebc659c17 69f294623e +Author: Fredrik Adelöw +Date: Thu Nov 18 11:35:43 2021 +0100 + + Merge pull request #8133 from backstage/dependabot/npm_and_yarn/microsite/url-parse-1.5.3 + + chore(deps): bump url-parse from 1.4.7 to 1.5.3 in /microsite + +commit 29ef695410e42a7ffc7af79369a0f9717a27a8ec +Author: Patrik Oldsberg +Date: Wed Nov 17 18:56:22 2021 +0100 + + packages,plugins: migrate to using TestApiProvider and Registry + + Signed-off-by: Patrik Oldsberg + +commit 7ff56c23309ae0da66f3561aa425615ba27e3dee +Author: Patrik Oldsberg +Date: Thu Nov 18 11:28:26 2021 +0100 + + test-utils: doc + API report fixup + + Signed-off-by: Patrik Oldsberg + +commit 4147f45b3e7d6d438685e5f51c90a319256a80c8 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Thu Nov 18 10:27:14 2021 +0000 + + chore(deps): bump prismjs from 1.23.0 to 1.25.0 in /microsite + + Bumps [prismjs](https://github.com/PrismJS/prism) from 1.23.0 to 1.25.0. + - [Release notes](https://github.com/PrismJS/prism/releases) + - [Changelog](https://github.com/PrismJS/prism/blob/master/CHANGELOG.md) + - [Commits](https://github.com/PrismJS/prism/compare/v1.23.0...v1.25.0) + + --- + updated-dependencies: + - dependency-name: prismjs + dependency-type: indirect + ... + + Signed-off-by: dependabot[bot] + +commit 0b8032bd3d3c3a14fb16870a3815176db7f7366a +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Thu Nov 18 10:27:13 2021 +0000 + + chore(deps): bump color-string from 1.5.4 to 1.6.0 in /microsite + + Bumps [color-string](https://github.com/Qix-/color-string) from 1.5.4 to 1.6.0. + - [Release notes](https://github.com/Qix-/color-string/releases) + - [Changelog](https://github.com/Qix-/color-string/blob/master/CHANGELOG.md) + - [Commits](https://github.com/Qix-/color-string/compare/1.5.4...1.6.0) + + --- + updated-dependencies: + - dependency-name: color-string + dependency-type: indirect + ... + + Signed-off-by: dependabot[bot] + +commit 475edb5bc593f609d94587ffc4f448c2ef989020 +Author: Fredrik Adelöw +Date: Thu Nov 18 10:58:42 2021 +0100 + + move the BehaviorSubject init into the constructor + + Signed-off-by: Fredrik Adelöw + +commit 6c15c54818c09b2c3939dd10ca98d6886b14c44a +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Thu Nov 18 10:26:06 2021 +0000 + + chore(deps): bump path-parse from 1.0.6 to 1.0.7 in /microsite + + Bumps [path-parse](https://github.com/jbgutierrez/path-parse) from 1.0.6 to 1.0.7. + - [Release notes](https://github.com/jbgutierrez/path-parse/releases) + - [Commits](https://github.com/jbgutierrez/path-parse/commits/v1.0.7) + + --- + updated-dependencies: + - dependency-name: path-parse + dependency-type: indirect + ... + + Signed-off-by: dependabot[bot] + +commit 69f294623e20751be93ad1d9901287acaad5352f +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Thu Nov 18 10:26:01 2021 +0000 + + chore(deps): bump url-parse from 1.4.7 to 1.5.3 in /microsite + + Bumps [url-parse](https://github.com/unshiftio/url-parse) from 1.4.7 to 1.5.3. + - [Release notes](https://github.com/unshiftio/url-parse/releases) + - [Commits](https://github.com/unshiftio/url-parse/compare/1.4.7...1.5.3) + + --- + updated-dependencies: + - dependency-name: url-parse + dependency-type: indirect + ... + + Signed-off-by: dependabot[bot] + +commit 0ebc659c17d49b33bd60f4517141f0830f16aee2 +Merge: 8d815522db e605194868 +Author: Fredrik Adelöw +Date: Thu Nov 18 11:23:21 2021 +0100 + + Merge pull request #7822 from bomkamp/add-global-pg-plugin-schema-flag + + Adding config prop `usePluginSchemas` to allow plugins using the `pg`… + +commit 8d815522db5ff4a2647b8d614249de8dbe02921c +Merge: 0106ec25d3 17b143c873 +Author: Ben Lambert +Date: Thu Nov 18 11:22:29 2021 +0100 + + Merge pull request #8131 from backstage/blam/fixing-changeset-pr + + chore: fixing bad dependency ref + +commit 0106ec25d38737b56b02c8443530677c73c14e5e +Merge: 0f56a644c1 d266c30243 +Author: Fredrik Adelöw +Date: Thu Nov 18 11:16:45 2021 +0100 + + Merge pull request #8126 from gotson/todo-documentation + + [Doc] add missing installation steps for the todo plugin + +commit 0f56a644c17e7cb614aa408c31b27367ac25fdb6 +Merge: 35b606102b 610e3c979d +Author: Fredrik Adelöw +Date: Thu Nov 18 11:09:31 2021 +0100 + + Merge pull request #8129 from backstage/blam/fix-up-use-of-hooks + + chore: remove occurrences of the rule of hooks to favour wrapping the components instead + +commit 35b606102bcbbbe29e65b220fb9fdf1b3b558075 +Merge: 770b5eda87 d73ae57163 +Author: Ben Lambert +Date: Thu Nov 18 10:57:29 2021 +0100 + + Merge pull request #8130 from backstage/blam/docsupdate + + docs: Link out to Custom Field Extensions + +commit 17b143c87377d096dc185f9ce279980ade98df14 +Author: blam +Date: Thu Nov 18 10:54:01 2021 +0100 + + chore: fixing bad dependency ref + + Signed-off-by: blam + +commit 92f87a9a16acd865097677c2c203c8cd5fab8d0c +Author: blam +Date: Thu Nov 18 10:52:37 2021 +0100 + + chore: fixing dockerode + + Signed-off-by: blam + +commit 000c12384e83726d0cac3bf24424b0dc3be34a2b +Author: Ainhoa Larumbe +Date: Thu Nov 18 09:46:09 2021 +0000 + + update api-report + + Signed-off-by: Ainhoa Larumbe + +commit 0c92f73a111b3c3d40ddbc3d1a0e28fca0324f4a +Author: Patrik Oldsberg +Date: Thu Nov 18 10:37:12 2021 +0100 + + test-utils: TestApiRegistry.with -> .from + + Signed-off-by: Patrik Oldsberg + +commit 610e3c979dee3ed9017019c5d1b4772f804a7579 +Author: blam +Date: Thu Nov 18 10:35:49 2021 +0100 + + chore: remove occurrences of FC + + Signed-off-by: blam + +commit 770b5eda87b99d28c7fa985c24dccca84337d521 +Merge: 8a99888d70 a648d763d7 +Author: Ben Lambert +Date: Thu Nov 18 10:27:31 2021 +0100 + + Merge pull request #7908 from anthonyikeda/master + + Placed the Custom Actions pre-requisites at the top of the document i… + +commit d73ae571634056bb21728ec6bd833b89b508b781 +Author: blam +Date: Thu Nov 18 10:24:04 2021 +0100 + + docs: updating the docs saying that it is now possible to provide your own Field Extensions + + Signed-off-by: blam + +commit f029733d1312418631c9e8b672d6b62efa822256 +Author: blam +Date: Thu Nov 18 10:17:15 2021 +0100 + + chore: remove occurrences of the rule of hooks to favour wrapping the components instead + + Signed-off-by: blam + +commit 8a99888d704c46739602a2b5b7e589b534b6ec20 +Merge: f50966e025 8cc6a92593 +Author: Johan Haals +Date: Thu Nov 18 10:00:13 2021 +0100 + + Merge pull request #8128 from backstage/freben/vale + + appease vale + +commit f50966e025eb994c56179cbe9fa98fcc8bdae4e4 +Merge: 2ab7e0f688 f93e56ae3a +Author: Philipp Hugenroth +Date: Thu Nov 18 09:55:22 2021 +0100 + + Merge pull request #8100 from tudi2d/plugin-shortcut-tooltips + + [Shortcuts] Show tooltips on hover + +commit 8cc6a92593382ce2a667c6b5bbcb4800471d6bec +Author: Fredrik Adelöw +Date: Thu Nov 18 09:45:28 2021 +0100 + + appease vale + + Signed-off-by: Fredrik Adelöw + +commit 2ab7e0f688764b24351ca82fe10981bcfc5dbe35 +Merge: 7d39f66606 f2694e3750 +Author: Eric Peterson +Date: Thu Nov 18 09:30:17 2021 +0100 + + Merge pull request #8121 from therynamo/techdocs-cli/awss3-encrypted-buckets + + feat: Allow SSE For S3 Buckets + +commit 7d39f666066661ad0ac9243c64732585956852f0 +Merge: 0144c5ef36 19768ee289 +Author: Johan Haals +Date: Thu Nov 18 08:09:31 2021 +0100 + + Merge pull request #8095 from backstage/jhaals/catalog-api-only + + catalog-backend: refactor entityProviders connect + +commit d266c30243f4b239775fd2322b89526d9ee9aa0a +Author: Gauthier Roebroeck +Date: Thu Nov 18 14:12:31 2021 +0800 + + add missing installation steps for the todo plugin + + Signed-off-by: Gauthier Roebroeck + +commit 0144c5ef361ffa7501f46a63667635eeab58fd71 +Merge: b574cab1f6 c736fe24d0 +Author: Patrik Oldsberg +Date: Thu Nov 18 00:22:40 2021 +0100 + + Merge pull request #8085 from backstage/Rugvip-patch-1 + + Update splunk-on-call.yaml + +commit b574cab1f6bed5219a798cff397d1e7536d9be87 +Merge: 7eda73d8c0 4d6d2012d1 +Author: Ben Lambert +Date: Wed Nov 17 21:45:43 2021 +0100 + + Merge pull request #8120 from backstage/blam/fix-changeset-issue + + Remove package from changeset + +commit 7eda73d8c0753ef11b7330327d829398f83554c2 +Merge: a4faa290b8 06065c6003 +Author: Ben Lambert +Date: Wed Nov 17 21:37:58 2021 +0100 + + Merge pull request #7702 from backstage/blam/route-ref-deprecation + + core-plugin-api: add deprecation warnings around `routeRefs` + +commit e21e3c6102c620205b37e11dff0b217caa101fc5 +Author: blam +Date: Wed Nov 17 21:33:55 2021 +0100 + + chore: add changeset + + Signed-off-by: blam + +commit fb4377ac53c8abc829f86cb680c877efd27564a9 +Author: blam +Date: Wed Nov 17 21:32:43 2021 +0100 + + chore: updating the bump in package.jsons too as it a security risk for the ssh2 packages + + Signed-off-by: blam + +commit e9ad91717e21dde1614fac74c161ede54601a9ce +Author: blam +Date: Wed Nov 17 21:28:40 2021 +0100 + + chore: bumping dockerode and testcontainers dependency to fix ssh2 + + Signed-off-by: blam + +commit f2694e3750e6ce73f32d639eafc9720e160894b4 +Author: therynamo +Date: Wed Nov 17 14:08:14 2021 -0600 + + changeset + + Signed-off-by: therynamo + +commit 3f7931bedce241f9d304cf0a55083fb3e772a106 +Author: therynamo +Date: Wed Nov 17 14:05:57 2021 -0600 + + feat: Allow SSE For S3 Buckets + + Signed-off-by: therynamo + +commit 4d6d2012d1d99f59fd6dc8e7fe8731d470811fe3 +Author: blam +Date: Wed Nov 17 21:01:03 2021 +0100 + + chore: this package wasn't affected with the change from the PR + + Signed-off-by: blam + +commit a4faa290b810011219f842d43ab9a754d20a7f89 +Merge: 79f56f1553 ecdcbd08ee +Author: Ben Lambert +Date: Wed Nov 17 20:59:11 2021 +0100 + + Merge pull request #7780 from backstage/joonp/provide-scaffolder-template-metadata + + Expose template metadata to custom action handler + +commit 79f56f15532ce7256bedb9756732d44c348725e5 +Merge: e29fb1a5d0 d63e5dcfdd +Author: Ben Lambert +Date: Wed Nov 17 20:57:27 2021 +0100 + + Merge pull request #7712 from backstage/vinzscam/create-app-add-bsversion-file + + Include backstage.json file on new backstage applications + +commit 06065c6003d64bd02a6203e9907cfd36de9e1b44 +Author: blam +Date: Wed Nov 17 20:43:14 2021 +0100 + + chore: fixed better namespacing for the routeRefs + + Signed-off-by: blam + +commit 7c55fae20872d74e65fcaf3ad8909f6c53665105 +Author: blam +Date: Wed Nov 17 20:34:46 2021 +0100 + + chore: code review comments and renaming some ids for routeRefs + + Signed-off-by: blam + +commit 2e3e2c2cbeacef987ec759cc395ebc0b4ef4242e +Author: blam +Date: Fri Nov 12 00:29:18 2021 +0100 + + chore: fixing tests for cloudbuild plugins + + Signed-off-by: blam + +commit b94af61a2497118cccf60249bf7e113bf7652518 +Author: blam +Date: Tue Nov 9 09:49:22 2021 +0100 + + chore: remove core-plugin-api from this changeset as it's covered in another + + Signed-off-by: blam + +commit a125278b81f9b3f6066951626505e827b9dc3922 +Author: blam +Date: Tue Nov 9 09:18:04 2021 +0100 + + chore: added changeset + + Signed-off-by: blam + +commit 54310852ad22ccaa4da99fa385340160618c87b7 +Author: blam +Date: Tue Nov 9 09:16:47 2021 +0100 + + chore: updating api RouteRef + + Signed-off-by: blam + +commit f4477bc907b4bc1f00551e35dbd9ee28f717bd58 +Author: blam +Date: Mon Nov 8 17:44:28 2021 +0100 + + chore: fix the return type I missed + + Signed-off-by: blam + +commit c67e023eae1dc6e37c9a551c1fd040258f81a2e6 +Author: blam +Date: Fri Oct 29 11:12:57 2021 +0200 + + chore: putting the deprecations back and fixing last occurence + + Signed-off-by: blam + +commit bd98d4f457b8132f9fbe348d9cb0a3ee3a0ba126 +Author: blam +Date: Wed Oct 27 11:52:28 2021 +0200 + + chore: more deprecations and reworking more routeRefs to subRouteRefs + + Signed-off-by: blam + +commit 8b21788e96ea5744b1ffd5c2394e144452e96d87 +Author: blam +Date: Thu Oct 21 14:11:42 2021 +0200 + + chore: added some more deprecation fixes for the routeRefs + + Signed-off-by: blam + +commit 1332a98a01e59490b29dfa3935cd54e3923c1013 +Author: blam +Date: Wed Oct 20 15:53:42 2021 +0200 + + chore: fixing deprecation warnings for all the things that are in the monorepo + + Signed-off-by: blam + +commit 37ebea2d6813053f0600734ea94d0844f056d9aa +Author: blam +Date: Wed Oct 20 15:09:39 2021 +0200 + + chore: add changeset + + Signed-off-by: blam + +commit 6b28fa1312fc9e0d6d1bb67cc2fe062c4ea790c1 +Author: blam +Date: Wed Oct 20 14:58:41 2021 +0200 + + chore: adding deprecation warnings for routeRef deprecated options + + Signed-off-by: blam + +commit a648d763d77ed7d35b0b4ce0fcb5e2a9056efea0 +Author: blam +Date: Wed Nov 17 20:17:08 2021 +0100 + + chore: fixing pr comments + + Signed-off-by: blam + +commit 2dc6eb8fdd671b68298279672dc260bdb2177442 +Author: goenning +Date: Wed Nov 17 18:52:57 2021 +0000 + + factRefs to factIds + + Signed-off-by: goenning + +commit e29fb1a5d0993e954a3d49e294d6aceb04f89668 +Merge: 1c2961bc0b bafa085a2a +Author: Fredrik Adelöw +Date: Wed Nov 17 19:20:27 2021 +0100 + + Merge pull request #7852 from awanlin/topic/add-entity-pull-requests + + Added entity view for Azure Repo Pull Requests + +commit 1c2961bc0beeec6127e59aca88e132c21f02f590 +Merge: 86db169be1 28b34419e4 +Author: Eric Peterson +Date: Wed Nov 17 19:07:34 2021 +0100 + + Merge pull request #7946 from backstage/emmaindal/search-modal-storybook + +commit 325be576eadd1be19de3bbf10c22bbe0407eb68e +Author: Iain Billett +Date: Wed Nov 17 17:37:18 2021 +0000 + + Actually use the entity filters + + Signed-off-by: Iain Billett + +commit cd398cd4ab0b3599118923a49103a5bd186bb54e +Author: Chad Jensen +Date: Wed Nov 17 11:31:05 2021 -0600 + + Create young-sheep-impress.md + + Signed-off-by: Chad Jensen + +commit c4ed75622bf01d08d0b67a7d03a0e43d74fbedaa +Author: Chad Jensen +Date: Wed Nov 17 11:29:21 2021 -0600 + + Letting GraphiQL use headers + + Letting GraphiQL use headers in browser + + Signed-off-by: Chad Jensen + Signed-off-by: Chad Jensen + +commit b26d33a9be374982658b525db5e276df0599b19d +Author: Iain Billett +Date: Wed Nov 17 17:09:33 2021 +0000 + + Update changeset + + Signed-off-by: Iain Billett + +commit eddb82ab7cb8143ccc91c1cb4b48d6989fb398cc +Author: Ainhoa Larumbe +Date: Wed Nov 17 16:51:07 2021 +0000 + + add changeset + + Signed-off-by: Ainhoa Larumbe + +commit 68f09dab3723aecaf50ae9a2e57fe9030bd3b2f5 +Merge: 4ac8d400ca 86db169be1 +Author: Philipp Hugenroth +Date: Wed Nov 17 17:50:31 2021 +0100 + + Merge branch 'master' into mobile-sidebar + + Signed-off-by: Philipp Hugenroth + +commit 8cb41885f5836e041fb8b5fa22fd386788d477f4 +Author: Iain Billett +Date: Wed Nov 17 16:49:19 2021 +0000 + + Pass entityFilter to fact retriever handler context + + Signed-off-by: Iain Billett + +commit efe1eab1ecf870946c3152be1e897c243d1a3da5 +Author: Ainhoa Larumbe +Date: Wed Nov 17 16:46:10 2021 +0000 + + add displayName to text in indexed document for user entities + + Signed-off-by: Ainhoa Larumbe + +commit 28b34419e454c25b0d01a0f77d636afd863e4a65 +Author: Emma Indal +Date: Wed Nov 17 17:43:18 2021 +0100 + + api reports and changeset update + + Signed-off-by: Emma Indal + +commit b02a6989471a018f41d2a5a4059d9fc23238e74f +Author: Emma Indal +Date: Wed Nov 17 17:16:40 2021 +0100 + + use material-uis autoFocus prop as an option, not default + + Signed-off-by: Emma Indal + +commit 847bd2c2ff6d4fd205b6b9d8be7223a68199c554 +Author: Yousif Al-Raheem +Date: Wed Nov 17 17:06:54 2021 +0100 + + use email links instead of text in members list + + Signed-off-by: Yousif Al-Raheem + +commit 86db169be1d0146186b539b123835d1d7d6d5c18 +Merge: 0e1f3b1ce5 1578ad341b +Author: Eric Peterson +Date: Wed Nov 17 17:02:58 2021 +0100 + + Merge pull request #8096 from cmpadden/techdocs-cli-bucketrootpath + + Support bucketRootPath for AWS and GCS in `techdocs-cli` publish command + +commit 0e1f3b1ce5e922e67ce9288b570f471b25838a5f +Merge: 1db337ea59 4264d92f43 +Author: Ben Lambert +Date: Wed Nov 17 16:49:10 2021 +0100 + + Merge pull request #7922 from lykkeaxlin/bazaar-columns + + [Bazaar] Added more fields to a Bazaar project + +commit 1db337ea593cfaf5659cc44859a5a994fb1f1089 (tag: v0.54.4, tag: release-2021-11-17.1) +Merge: 85a65ff98a bd1d8b1757 +Author: Ben Lambert +Date: Wed Nov 17 16:48:55 2021 +0100 + + Merge pull request #7942 from backstage/permission-common + + Add permission-common package + +commit 85a65ff98a7fa685e4164e165cd2eabab5404d61 +Merge: 8317edc83d 19ab827222 +Author: Ben Lambert +Date: Wed Nov 17 16:29:52 2021 +0100 + + Merge pull request #8060 from backstage/dependabot/npm_and_yarn/types/unzipper-0.10.4 + + build(deps-dev): bump @types/unzipper from 0.10.3 to 0.10.4 + +commit 1578ad341b2105faed1acdf860ee7902ee56dcb2 +Author: Colton Padden +Date: Wed Nov 17 10:29:39 2021 -0500 + + rename famous-donuts-warn.md to techdocs-famous-donuts-warn.md + + Signed-off-by: Colton Padden + +commit ccc8a7ff5d8c4d0d06e5b032ac8c64c1e680a155 +Author: Iain Billett +Date: Wed Nov 17 15:21:18 2021 +0000 + + Split fact retrievers + + Split fact retriever into severeal more specialised retrievers. + Ditch the dynamic addition of annotation facts in favour of + explicit annotation facts. Having dynamic facts makes the + versioning system somewhat meaningless. + + Signed-off-by: Iain Billett + +commit 8317edc83d74a7ff5be6a9ceeeea9258530d9c8c +Merge: 727efc3c69 a45bd50c34 +Author: Fredrik Adelöw +Date: Wed Nov 17 16:13:34 2021 +0100 + + Merge pull request #8098 from brian-at-epic/patch-1 + + Adding Epic Games as an adopter + +commit 19768ee28938e7e728d87e9b8726a74c43236ed4 +Author: Johan Haals +Date: Wed Nov 17 16:07:16 2021 +0100 + + update tests + + Signed-off-by: Johan Haals + +commit bd1d8b1757e466883fb3a7cf77d7c0e83f04a59c +Author: Tim Hansen +Date: Wed Nov 17 07:55:10 2021 -0700 + + package.json module + + Signed-off-by: Tim Hansen + +commit f93e56ae3a55a1cc29e072fbc27de99f6725e711 +Author: Philipp Hugenroth +Date: Wed Nov 17 15:52:40 2021 +0100 + + Add tooltips to shortcuts + + Signed-off-by: Philipp Hugenroth + +commit 727efc3c692dd562923c9efe867c7b7c42328116 +Merge: d701630972 ffff194cb6 +Author: Fredrik Adelöw +Date: Wed Nov 17 15:39:05 2021 +0100 + + Merge pull request #8094 from backstage/freben/browserslist + + update browserslist and some of its deps + +commit a45bd50c341ea859b1754705b7fed279482fa3b4 +Author: Brian Jung <92050065+brian-at-epic@users.noreply.github.com> +Date: Wed Nov 17 09:24:23 2021 -0500 + + Adding Epic Games as an adopter + +commit 89622c6ae292d7f3c2beff73e5abe3e4f543a0dd +Author: irma12 +Date: Wed Nov 17 15:16:02 2021 +0100 + + update packages + + Signed-off-by: irma12 + +commit 5d2a7303bd9d4b1f92eae2c25998f8bf2edcd9c3 +Author: Johan Haals +Date: Wed Nov 17 14:55:13 2021 +0100 + + catalog-backend: refactor entityProviders connect + + Signed-off-by: Johan Haals + +commit ffff194cb6055677efbec126e3cdd5f1ad07de35 +Author: Fredrik Adelöw +Date: Wed Nov 17 14:47:37 2021 +0100 + + update browserslist and some of its deps + + Signed-off-by: Fredrik Adelöw + +commit b41e8f158cf79dc9c1ff02b754109892dfe5fc39 +Author: Colton Padden +Date: Wed Nov 17 08:48:28 2021 -0500 + + Support bucketRootPath configuration for AWS and GCS in publish commands + + Introduces command options `--awsBucketRootPath` and `--gcsBucketRootPath` which + map to respective publisher configurations, allowing users to upload files to S3 + and GCS in a non-root directory. + + Signed-off-by: Colton Padden + +commit 7f82ce9f511878b98946c59e97e1c64c3168be73 +Author: Joon Park +Date: Tue Nov 16 13:54:55 2021 +0000 + + API reports and Changelog + + Signed-off-by: Joon Park + +commit b5c54795047f90cf407e92c59e560705c94b0ae4 +Author: Joon Park +Date: Tue Nov 16 13:06:31 2021 +0000 + + Fix tests + + Signed-off-by: Joon Park + +commit 8d1309bf7d567752acb21da5f48cda5abfcba19c +Author: Joon Park +Date: Tue Nov 16 12:53:37 2021 +0000 + + Fix complex negation bug + + Signed-off-by: Joon Park + +commit 5f1de0fc60a07fd258d83d6eb1e07dd993374b1b +Author: Joon Park +Date: Tue Nov 9 15:11:07 2021 +0000 + + Allow negation through nesting a "not" object. + + Signed-off-by: Joon Park + +commit 154c77bf7f02b11c3480fcb1194902d8495073a1 +Author: Joon Park +Date: Wed Oct 27 13:09:04 2021 +0100 + + EntitiesSearchFilter type refactor + + The current EntitiesSearchFilter's matchValueExists field is a bit confusing - it's not immediately clear the nuances of its behavior until you closely examine the implementation in NextEntitiesCatalog. By splitting the filter into to distinct types (one for key and another for key + value) as well as renaming the fields, I think this expresses the intent of the filters more cleanly. This also allows filtering by negation for key + value filters, which is not possible with the current implementation). + + Signed-off-by: Joon Park + +commit 19ab827222adad38bf3c71dbd0448a451486857c +Author: blam +Date: Wed Nov 17 14:43:09 2021 +0100 + + chore: update deps properly + + Signed-off-by: blam + +commit b8d536df8c386de9e547b6863693ca871b60a75e +Author: irma12 +Date: Wed Nov 17 14:38:20 2021 +0100 + + fix spelling in changeset + + Signed-off-by: irma12 + +commit bafa085a2aa9ad4905c27a47451f74a89f47e1f3 +Author: Andre Wanlin +Date: Wed Nov 17 07:37:36 2021 -0600 + + Improvements from review feedback + + Signed-off-by: Andre Wanlin + +commit d8e598adc1d2cd5a90a06336a07449be801b8b30 +Author: irma12 +Date: Wed Nov 17 14:33:11 2021 +0100 + + Small fix + + Signed-off-by: irma12 + +commit dc62dcab12e72f447ef1241df7e4a718b2bf476c +Author: irma12 +Date: Wed Nov 17 14:28:54 2021 +0100 + + Introduce scorecards + + Signed-off-by: irma12 + +commit 2ab905acf6a7265f5eafac73bc7ebfb7afcb0ff7 +Merge: 48fe020c05 d701630972 +Author: Andre Wanlin <67169551+awanlin@users.noreply.github.com> +Date: Wed Nov 17 06:36:49 2021 -0600 + + Merge branch 'backstage:master' into topic/add-entity-pull-requests + +commit d7016309725f2dd738441123620470fa1e847c32 +Merge: d0a8bdb179 01f74aa878 +Author: Fredrik Adelöw +Date: Wed Nov 17 13:16:04 2021 +0100 + + Merge pull request #8083 from backstage/freben/abort-urlreader + + Add `AbortSignal` support to `UrlReader` + +commit d0a8bdb179bd67d85766ff6481ad3c2314a1d222 +Merge: 0d07225e70 1e99c73c75 +Author: Johan Haals +Date: Wed Nov 17 13:05:09 2021 +0100 + + Merge pull request #8087 from backstage/jhaals/loadconfig + + config-loader: Change loadConfig return type to object + +commit 0d07225e706dbdd587080b159c05eecff783e37c +Merge: ec2c835afc a4c46863d5 +Author: Patrik Oldsberg +Date: Wed Nov 17 13:03:21 2021 +0100 + + Merge pull request #8078 from backstage/rugvip/ignorapp + + core-app-api: explicitly do not export TargetRouteMap and friends + +commit ec2c835afc22dc6f468084a15b5e3e3e14d7aca2 (tag: v0.54.3, tag: release-2021-11-17) +Merge: 937189f15a c0e64a685f +Author: Eric Peterson +Date: Wed Nov 17 13:00:48 2021 +0100 + + Merge pull request #8007 from backstage/refactor/merge-back-techdocs-cli + + Tech Docs Command Line Reunification + +commit 000190de69035e5cd92eb7f20c70c2401bb52f54 +Author: Patrik Oldsberg +Date: Wed Nov 17 11:48:42 2021 +0100 + + changesets: add changeset for ApiRegistry deprecation + + Signed-off-by: Patrik Oldsberg + +commit b811fadaec2976b977960c483db95a2c1bc94a1b +Author: Patrik Oldsberg +Date: Wed Nov 17 10:45:39 2021 +0100 + + core-*: migrate to using TestApiProvider + + Signed-off-by: Patrik Oldsberg + +commit 417f80c0c8b3704a3cdebc74a53b42cb41ef889d +Author: Patrik Oldsberg +Date: Wed Nov 17 10:44:02 2021 +0100 + + test-utils: add tests for TestApiProvider & Registry + + Signed-off-by: Patrik Oldsberg + +commit 5f6d97d044bb0c8e802e4e002b01bd43f32ce6de +Author: Patrik Oldsberg +Date: Tue Nov 16 21:26:29 2021 +0100 + + test-utils: add TestApiRegistry + + Signed-off-by: Patrik Oldsberg + +commit 57591f57547143d73a70e5a52e94267a9ccc200b +Author: Patrik Oldsberg +Date: Tue Nov 16 18:47:50 2021 +0100 + + test-utils: add TestApiProvider + + Signed-off-by: Patrik Oldsberg + +commit 1c37c3c26cbdeded48b9a033d39ba3ee29266e12 +Author: Patrik Oldsberg +Date: Tue Nov 16 18:35:00 2021 +0100 + + core-app-api: deprecate ApiRegistry + + Signed-off-by: Patrik Oldsberg + +commit a4c46863d58d828eed76fe321091824765b2f162 +Author: Patrik Oldsberg +Date: Tue Nov 16 18:27:24 2021 +0100 + + core-app-api: explicitly do not export TargetRouteMap and friends + + Signed-off-by: Patrik Oldsberg + +commit 937189f15af8a2c1c6d03da9097f9882b1de2bb5 +Merge: f1a8e3a819 c9e19092a7 +Author: Patrik Oldsberg +Date: Wed Nov 17 12:22:08 2021 +0100 + + Merge pull request #8077 from backstage/rugvip/ignore + + api-extractor: add support for @ignore + +commit f1a8e3a819b86a5e3cb8ac9e247b8c58cbb5216a +Merge: 33c7d6522a e266687580 +Author: Eric Peterson +Date: Wed Nov 17 12:09:33 2021 +0100 + + Merge pull request #8068 from stephane-mori/fix-reader + + Set doc reader configurable + +commit c9e19092a7dc6caf9801d3245fcdc3ab2b84adfb +Author: Patrik Oldsberg +Date: Tue Nov 16 17:26:41 2021 +0100 + + api-extractor: add support for @ignore + + Signed-off-by: Patrik Oldsberg + +commit e2666875801e132b27ebd1d8cbf18d5994fe7125 +Author: Stéphane MORI +Date: Wed Nov 17 11:45:02 2021 +0100 + + Update changeset to switch from minor to patch + + Signed-off-by: Stéphane MORI + +commit 33c7d6522a978ee85c51ac7a88e491ecb6f1c47c +Merge: 107dc83c15 06934f2f52 +Author: Ben Lambert +Date: Wed Nov 17 11:26:40 2021 +0100 + + Merge pull request #8027 from backstage/catalog-query-isolation + + catalog-backend: ensure subqueries are isolated from one another + +commit 1e99c73c7570095c1cbaa561aa58a5fb5737dcda +Author: Johan Haals +Date: Wed Nov 17 11:26:35 2021 +0100 + + config-loader: Change loadConfig return type to object + + Signed-off-by: Johan Haals + +commit c736fe24d0fa31d72f82e58bdff49d4ad5305c8a +Author: Patrik Oldsberg +Date: Wed Nov 17 11:15:20 2021 +0100 + + Update splunk-on-call.yaml + + Signed-off-by: Patrik Oldsberg + +commit 01f74aa87885b1dbc0fdd7a318e35f4a075deb5f +Author: Fredrik Adelöw +Date: Wed Nov 17 10:39:28 2021 +0100 + + Add `AbortSignal` support to `UrlReader` + + Signed-off-by: Fredrik Adelöw + +commit 107dc83c1525f7f18633cd1a3782ade108ac13e9 +Merge: 7439368ce5 f8db7c3988 +Author: Fredrik Adelöw +Date: Wed Nov 17 10:15:40 2021 +0100 + + Merge pull request #8063 from gotson/patch-1 + + Update Kafka configuration types + +commit 4264d92f432eca2875aefd53812599dbf57718e0 +Merge: c28534610b 7439368ce5 +Author: Lykke Axlin +Date: Wed Nov 17 09:54:56 2021 +0100 + + Merge branch 'master' of https://github.com/backstage/backstage into bazaar-columns + +commit 7439368ce532e98bea8994b2be1899c9af9626ca +Merge: 39a8cbfd33 c1858c4cf9 +Author: Eric Peterson +Date: Wed Nov 17 08:44:42 2021 +0100 + + Merge pull request #7917 from mertcb/migrate/oss + +commit f8db7c3988e3424660e1f1428e0ef5e76d6c75d3 +Author: Gauthier Roebroeck +Date: Wed Nov 17 09:42:36 2021 +0800 + + remove untouched package from changeset + + Signed-off-by: Gauthier Roebroeck + +commit db299e05ef8728308edc24268f951eb666ce5080 +Author: Tim Hansen +Date: Tue Nov 16 13:21:17 2021 -0700 + + Add config, type fixes + + Signed-off-by: Tim Hansen + +commit 39a8cbfd33d487f3c68be1b6cf1833ff96bcf8b5 +Merge: 8530bf6b91 c10bb22343 +Author: Patrik Oldsberg +Date: Tue Nov 16 21:40:41 2021 +0100 + + Merge pull request #8080 from lcsbaroni/add-picpay + + Add PicPay as adopter + +commit c10bb2234334415fac77022fcd4ae5dca4e4ce67 +Author: Luís Baroni +Date: Tue Nov 16 16:15:41 2021 -0300 + + Add PicPay as adopter + + Signed-off-by: Luís Baroni + +commit c0e64a685f79cdf9b2a46951abe001e0d076b2c6 +Author: Camila Belo +Date: Tue Nov 16 19:45:22 2021 +0100 + + test(techdocs-cli): kill detached child process + + Signed-off-by: Camila Belo + +commit 8530bf6b91381ab4add5e3aa9ad2b3c5580ad900 +Merge: 461d79e0d8 59387f7593 +Author: Eric Peterson +Date: Tue Nov 16 18:58:41 2021 +0100 + + Merge pull request #8076 from backstage/rugvip/changefix + +commit 4ac8d400caabe9ad974de3797fa907ad31b2d53e +Merge: 439b07e3e4 461d79e0d8 +Author: Philipp Hugenroth +Date: Tue Nov 16 18:01:55 2021 +0100 + + Merge branch 'master' into mobile-sidebar + + Signed-off-by: Philipp Hugenroth + +commit 59387f759385bc39f3a659a90b966b5dd33f81f5 +Author: Patrik Oldsberg +Date: Tue Nov 16 17:46:53 2021 +0100 + + changesets: fix reference to missing package + + Signed-off-by: Patrik Oldsberg + +commit 461d79e0d8ed7db4a961f545bc835fef1a0575f5 +Merge: c6a92ba406 f7703981a9 +Author: Eric Peterson +Date: Tue Nov 16 17:07:16 2021 +0100 + + Merge pull request #8067 from SDA-SE/feat/techdocs-tasklist-icons + + [TechDocs] Use a better checkbox rendering in a task list + +commit c6a92ba40648168e89a03872b13c2ef943a36fda +Merge: c2f3502ad7 4576f82858 +Author: Tim Hansen +Date: Tue Nov 16 09:00:19 2021 -0700 + + Merge pull request #8075 from backstage/timbonicus/cost-insights-days + + Fix sample data in example Cost Insights client + +commit 4576f82858210146123d0378a91fb006c14f69c0 +Author: Tim Hansen +Date: Tue Nov 16 08:31:45 2021 -0700 + + Fix sample data in example Cost Insights client + + Signed-off-by: Tim Hansen + +commit c2f3502ad79611ecbd9324790d43d0b0f9cc6ada +Merge: cd28bbcf13 f14ac64f2e +Author: Fredrik Adelöw +Date: Tue Nov 16 16:29:33 2021 +0100 + + Merge pull request #7892 from gmambro/allow-prefix + + Optional paths in backend.reading.allow to restrict allowed targets + +commit cd28bbcf133a9620a08fab0da1d570322ebfe953 +Merge: 4754315ee3 51029633af +Author: Himanshu Mishra +Date: Tue Nov 16 20:57:16 2021 +0530 + + Merge pull request #8073 from backstage/orkohunter/fix-adopters-file + + fix formatting of the adopters file + +commit 51029633af38b36571c1ace492231da4366b0501 +Author: Himanshu Mishra +Date: Tue Nov 16 20:32:42 2021 +0530 + + fix formatting of the adopters file + + Signed-off-by: Himanshu Mishra + +commit 4754315ee3e26e2ff53d8687e09d0e19583a8d19 +Merge: e76f8875ea 32bfbafb0f +Author: Johan Haals +Date: Tue Nov 16 15:49:22 2021 +0100 + + Merge pull request #8070 from backstage/jhaals/core-api-api-cleanup + + core-app-api: Add missing exports and API annotations + +commit e76f8875ea89f51daeda7d441f8158ffeb58099f +Merge: 59dc704631 33741318d5 +Author: Ben Lambert +Date: Tue Nov 16 15:46:59 2021 +0100 + + Merge pull request #8072 from backstage/orkohunter/add-unity-as-adopter + + Add Unity as adopter + +commit 33741318d5f0aaf1695bf02b433a74b8f6118df4 +Author: Himanshu Mishra +Date: Tue Nov 16 19:52:05 2021 +0530 + + Add unity as adopter + + Signed-off-by: Himanshu Mishra + +commit 59dc70463134b7c7aab0aaeb05a1838882e6ab07 +Merge: d17e27f54a 50154fb792 +Author: Fredrik Adelöw +Date: Tue Nov 16 14:46:27 2021 +0100 + + Merge pull request #8066 from backstage/freben/do-not-redact-empty-strings + + Do not redact empty/one-character secrets + +commit d17e27f54a8c7d5e489b6d6704d60be771608885 +Merge: 71acc3a887 469a47250e +Author: Fredrik Adelöw +Date: Tue Nov 16 14:46:11 2021 +0100 + + Merge pull request #8055 from tudi2d/tudi2d/header-styles + + Small adjustments to the Header typography to use theme variables + +commit 32bfbafb0fdf1b8be0599c641cea70a295b844f7 +Author: Johan Haals +Date: Tue Nov 16 14:38:47 2021 +0100 + + Add changeset + + Signed-off-by: Johan Haals + +commit 10a5e819ddd6f844132c3f3bd09cded5b3861c1c +Author: Johan Haals +Date: Tue Nov 16 14:36:13 2021 +0100 + + Unexport internal utility types + + Signed-off-by: Johan Haals + +commit 0da0143e85ab83d6ee0bd783001a3de496cbe4c1 +Author: Johan Haals +Date: Tue Nov 16 14:16:55 2021 +0100 + + core-app-api: Add missing exports and API annotations + + Signed-off-by: Johan Haals + +commit 469a47250e5fcbb084ea847bd1893d65e152c8f2 +Author: Philipp Hugenroth +Date: Tue Nov 16 13:45:16 2021 +0100 + + Remove comment + + Signed-off-by: Philipp Hugenroth + +commit 50154fb792222551a0530846505fd10d810f04d1 +Author: Fredrik Adelöw +Date: Tue Nov 16 13:37:28 2021 +0100 + + exclude one-character secrets as well + + Signed-off-by: Fredrik Adelöw + +commit 682945e23312b8cadfd2600fb8964bc900a2b400 +Author: Philipp Hugenroth +Date: Tue Nov 16 13:29:58 2021 +0100 + + Add changeset + + Signed-off-by: Philipp Hugenroth + +commit 71acc3a887a4d523795a4eccd35401d6b2c6f115 +Merge: 19a400b3d9 ecd1fcb80a +Author: Patrik Oldsberg +Date: Tue Nov 16 13:25:58 2021 +0100 + + Merge pull request #8064 from backstage/rugvip/lesstyping + + core-app-api: deprecate the BackstagePluginWithAnyOutput type + +commit 7b3bb89e3c269172f4d6d68d91b90b83a8aaa7d6 +Author: Stéphane MORI +Date: Mon Nov 15 16:47:05 2021 +0100 + + Set doc reader parametable + + Signed-off-by: Stéphane MORI + +commit 2a0703d212d6a544d3a9ed894e94e029b18ef623 +Author: Guilherme Oenning +Date: Tue Nov 16 11:35:17 2021 +0000 + + fix incorrect class name on backend + + Signed-off-by: goenning + +commit d0c47ec505bbfa4e77ec546fffd4b201d0463cb3 +Author: Guilherme Oenning +Date: Tue Nov 16 11:34:52 2021 +0000 + + fix incorrect class name on module-jsonfc + + Signed-off-by: goenning + +commit 9145449220cded4a633fb339d0d9dfec880eea12 +Author: Gauthier +Date: Tue Nov 16 19:11:46 2021 +0800 + + Create fresh-zebras-hug.md + + Signed-off-by: Gauthier Roebroeck + +commit f7703981a96b539f9f04b74362baf9805a2db15c +Author: Dominik Henneke +Date: Tue Nov 16 11:35:30 2021 +0100 + + Use a better checkbox rendering in a task list + + Signed-off-by: Dominik Henneke + +commit f9daf056e52cf9632b250b87a08f1493eaa8dab3 +Author: Fredrik Adelöw +Date: Tue Nov 16 11:47:51 2021 +0100 + + add test + + Signed-off-by: Fredrik Adelöw + +commit 26b5da1c1aadabe65c741c0d6ee0a2610f9acae4 +Author: Fredrik Adelöw +Date: Tue Nov 16 11:42:10 2021 +0100 + + Do not redact the empty string + + Signed-off-by: Fredrik Adelöw + +commit 19a400b3d931f60571eaaf716e7c0b177a49c448 +Merge: eaeac8fdac b0c7748ab5 +Author: Eric Peterson +Date: Tue Nov 16 11:01:11 2021 +0100 + + Merge pull request #7882 from therynamo/aws-encryption-s3 + + feat: Allow SSE on AWS S3 Buckets + +commit ecd1fcb80a8a0b05a78507cee9f76e8ef076c1a5 +Author: Patrik Oldsberg +Date: Tue Nov 16 10:57:05 2021 +0100 + + core-app-api: deprecate the BackstagePluginWithAnyOutput type + + Signed-off-by: Patrik Oldsberg + +commit f4fe544f73230f142fcaf84531f49b86f77b3e58 +Author: Gauthier +Date: Tue Nov 16 17:45:35 2021 +0800 + + Update config.d.ts + + Signed-off-by: Gauthier Roebroeck + +commit fe20e6f4a8fa3bb990ca186188a28e70283a1105 +Author: Gauthier +Date: Tue Nov 16 17:18:40 2021 +0800 + + Update Kafka configuration types + + According to https://nodejs.org/dist/latest-v8.x/docs/api/tls.html#tls_tls_createsecurecontext_options the `ssl` options `ca`, `key`, and `cert` are all optional. In my case, i need to pass `rejectUnauthorized`, but I can't do so as the backend expects a `key`. Passing an empty string works, but everything becomes redacted in my log because of that. + + Signed-off-by: Gauthier Roebroeck + +commit d63e5dcfddff7080b68f780fb7185e3769533cb4 +Merge: 677bfc2dd0 eaeac8fdac +Author: Vincenzo Scamporlino +Date: Tue Nov 16 10:51:25 2021 +0100 + + Merge branch 'master' into vinzscam/create-app-add-bsversion-file + +commit 560c7c0cfe254ec1c6416bf8b69bded8092a2a73 +Merge: ea3d207a95 eaeac8fdac +Author: hiba-aldalaty +Date: Tue Nov 16 09:37:43 2021 +0000 + + Merge branch 'master' into scalable-sidebar-new-implementation + +commit b0c7748ab5cc2d124dd03dd87155d19c588f128f +Author: Eric Peterson +Date: Tue Nov 16 10:34:56 2021 +0100 + + Ensure sse config is optional; pass through sse from constructor. + + Signed-off-by: Eric Peterson + +commit c1858c4cf95031c9ec11fa9daa87b70f94250a68 +Author: Eric Peterson +Date: Tue Nov 16 10:25:01 2021 +0100 + + Break apart changesets and clear yarn.lock diff + + Signed-off-by: Eric Peterson + +commit 8cf89aab389fb5ffd6a5b1adc6dd01580b06e63c +Author: Iain Billett +Date: Mon Nov 15 19:40:22 2021 +0000 + + Api docs + + Signed-off-by: Iain Billett + +commit eaeac8fdac1ee550847ad948fe2b9c68e31c701e +Merge: 84013f3dec 51d0fb3a02 +Author: Johan Haals +Date: Tue Nov 16 09:03:04 2021 +0100 + + Merge pull request #7936 from backstage/jhaals/remove-route-export + + core-plugin-api: Remove exports of unused types + +commit 35acef993113ca7dd084d162b2f7cb072191e6da +Merge: 0b60a051c9 84013f3dec +Author: Mert Can Bilgiç +Date: Tue Nov 16 10:27:39 2021 +0300 + + Merge branch 'master' into migrate/oss + +commit 84013f3dec32493d7592301002613c691fd88675 +Merge: e7e6ee2ff8 6f279f9b8e +Author: Fredrik Adelöw +Date: Tue Nov 16 07:48:27 2021 +0100 + + Merge pull request #8059 from backstage/rugvip/clifail + + cli: fix failing create tests on windows + +commit e7e6ee2ff882d6a345cd7634ce138577899618fb +Merge: 957dc5588c 6c1348591e +Author: Fredrik Adelöw +Date: Tue Nov 16 07:46:33 2021 +0100 + + Merge pull request #8061 from backstage/dependabot/npm_and_yarn/prettier-2.4.1 + + build(deps-dev): bump prettier from 2.4.0 to 2.4.1 + +commit 6c1348591e513137442f6d539fae3d905f72e442 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Tue Nov 16 04:22:02 2021 +0000 + + build(deps-dev): bump prettier from 2.4.0 to 2.4.1 + + Bumps [prettier](https://github.com/prettier/prettier) from 2.4.0 to 2.4.1. + - [Release notes](https://github.com/prettier/prettier/releases) + - [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md) + - [Commits](https://github.com/prettier/prettier/compare/2.4.0...2.4.1) + + --- + updated-dependencies: + - dependency-name: prettier + dependency-type: direct:development + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit 6f279f9b8eebf4cea506baea2c6bca733de290c6 +Author: Patrik Oldsberg +Date: Tue Nov 16 01:52:56 2021 +0100 + + cli: fix failing create tests on windows + + Signed-off-by: Patrik Oldsberg + +commit ad3afc5ad63ced76ab81d2c07607023ad5a9d705 +Author: Patrik Oldsberg +Date: Tue Nov 16 00:22:37 2021 +0100 + + cli: trim away non-ascii in stream mock testing util + + Signed-off-by: Patrik Oldsberg + +commit 957dc5588cd47a4ea1924bdeaa007334616c4dbb +Merge: af9fe3c5e4 2345b318fb +Author: Patrik Oldsberg +Date: Mon Nov 15 23:38:09 2021 +0100 + + Merge pull request #8058 from backstage/rugvip/cba-fix + + create-app: fix windows file copy and mocking + +commit af9fe3c5e4f9eccb8068a622e52e0b5d5df16d5f +Merge: 6b54e9d2d2 6dcfe227a2 +Author: Patrik Oldsberg +Date: Mon Nov 15 22:55:17 2021 +0100 + + Merge pull request #8040 from backstage/rugvip/scaffodlermod + + cli: add create factory for scaffolder modules + +commit 2345b318fb49fb79c19e4ba087bffca279b3fd55 +Author: Patrik Oldsberg +Date: Mon Nov 15 22:36:41 2021 +0100 + + create-app: fix windows file copy and mocking + + Signed-off-by: Patrik Oldsberg + +commit 6b54e9d2d25bca0112db38eb3705b59199e667a4 +Merge: 6da79e77af edaaf2dccb +Author: Patrik Oldsberg +Date: Mon Nov 15 21:59:10 2021 +0100 + + Merge pull request #8039 from backstage/rugvip/create + + cli: add create command to replace create-plugin + +commit 6da79e77af2461904779ade3cf28c1ebaf471fd0 +Merge: cdd86450c9 0b1de52732 +Author: Patrik Oldsberg +Date: Mon Nov 15 21:57:48 2021 +0100 + + Merge pull request #8053 from backstage/rugvip/errapi + + core-plugin-api: added ErrorApi* prefix to Error and ErrorContext types + +commit 5c00e450458805513a4bfe035bf53e37d1bf21ea +Author: Iain Billett +Date: Mon Nov 15 18:48:45 2021 +0000 + + Changeset + + Signed-off-by: Iain Billett + +commit cdd86450c9e3c9c18d3049d6a25ee7f3fe49cd23 +Merge: 3e6762ba3f dee1db5f8a +Author: Fredrik Adelöw +Date: Mon Nov 15 19:52:30 2021 +0100 + + Merge pull request #8056 from sorenmat/tradeshift + + Adding Tradeshift as adopters + +commit d4a3dbb75b448137cda3578b7c90e99f4e3b2f89 +Author: Iain Billett +Date: Mon Nov 15 18:27:48 2021 +0000 + + Expose catalogFactRetriever & configure in backend + + Signed-off-by: Iain Billett + +commit 5b31874a768921ee5c4407957240fbf3333c8191 +Author: Iain Billett +Date: Mon Nov 15 12:20:01 2021 +0000 + + Add hasTags schema + + Signed-off-by: Iain Billett + +commit 2d4593254fcfe625001ad025bf9250aaa0572d16 +Author: Iain Billett +Date: Fri Nov 12 10:20:25 2021 +0000 + + Dynamic annotations + + Signed-off-by: Iain Billett + +commit 9d2d1bd00cedafc52db4c90dbf72c36f9d2aca5e +Author: Iain Billett +Date: Mon Nov 8 12:42:21 2021 +0000 + + Add some more test cases + + Signed-off-by: Iain Billett + +commit 23195a4494fdb37eebf2796ea16f1ddb330227cb +Author: Iain Billett +Date: Tue Nov 2 18:26:36 2021 +0000 + + Add some more test cases + + Signed-off-by: Iain Billett + +commit f091863f038b7606033f35216ef45834c75b956f +Author: Iain Billett +Date: Tue Nov 2 17:47:09 2021 +0000 + + Add an entity fact retriever + + Signed-off-by: Iain Billett + +commit dee1db5f8ac526a58fc66c56cdd4da2654389839 +Author: Soren Mathiasen +Date: Mon Nov 15 18:30:55 2021 +0100 + + Adding Tradeshift as adopters + + Signed-off-by: Soren Mathiasen + +commit 9e64a7ac1e0823fdef7304ce06d9e18960f8dfa7 +Author: therynamo +Date: Mon Nov 15 10:51:36 2021 -0600 + + pr suggestions + + Signed-off-by: therynamo + +commit 16f7180fa2a34cb70925b941b9762e730b50266a +Author: Theryn Groetken +Date: Thu Nov 4 06:38:13 2021 -0500 + + Update orange-cougars-relax.md + + Signed-off-by: therynamo + +commit 7acc18e21a7911b668e201abc7dfe2acc29087f6 +Author: therynamo +Date: Wed Nov 3 14:38:57 2021 -0500 + + feat: Allow SSE on AWS S3 Buckets + + Signed-off-by: therynamo + +commit b504cec62f31ec608891a9f4d12ef4c47ba75397 +Author: Philipp Hugenroth +Date: Mon Nov 15 17:55:02 2021 +0100 + + Small adjustments to the Header typography to use theme variables + + Signed-off-by: Philipp Hugenroth + +commit 677bfc2dd00ef382abb8025d3e3632aaa08615f8 +Author: Vincenzo Scamporlino +Date: Mon Nov 15 16:32:46 2021 +0100 + + fix comments + + Signed-off-by: Vincenzo Scamporlino + +commit 51d0fb3a02d73d4888b002501e895368b14af57a +Author: Johan Haals +Date: Mon Nov 15 14:56:06 2021 +0100 + + Fix API report + + Signed-off-by: Johan Haals + +commit 7df99cdb77d795b7fd30482b5be4bdc45177f1a6 +Author: Johan Haals +Date: Wed Nov 10 15:10:17 2021 +0100 + + core-plugin-api: Remove exports of unused types + + Signed-off-by: Johan Haals + +commit b6b4d4b73fdefde1ddf3dc3acb1f204e677b7a60 +Author: Vincenzo Scamporlino +Date: Wed Nov 10 23:51:42 2021 +0100 + + Bump .backstage.json version + + Signed-off-by: Vincenzo Scamporlino + +commit 085edcfc5fa3756eb2a6d6744ea1276ee4c770cb +Author: Vincenzo Scamporlino +Date: Wed Oct 20 20:36:35 2021 +0200 + + fix comments + + Signed-off-by: Vincenzo Scamporlino + +commit 4ebc9fd277fad6f14ada6d2570d2cdbf017778e6 +Author: Vincenzo Scamporlino +Date: Wed Oct 20 14:12:02 2021 +0200 + + Create .backstage-version file + + Signed-off-by: Vincenzo Scamporlino + +commit 776c8924691e9d3b7412a87cfbfeff29483963fa +Author: Eric Peterson +Date: Mon Nov 15 16:28:08 2021 +0100 + + Prepare package versions and changelog for release. + + Signed-off-by: Eric Peterson + +commit 0b1de527326325aedbf0488c454a922cc03e8b01 +Author: Patrik Oldsberg +Date: Mon Nov 15 16:21:02 2021 +0100 + + core-app-api,test-utils: migrated to using new ErrorApi* names + + Signed-off-by: Patrik Oldsberg + +commit b6a4bacdc4f35e1d5071f61224811213cb26a2af +Author: Patrik Oldsberg +Date: Mon Nov 15 16:14:48 2021 +0100 + + core-plugin-api: added ErrorApi* prefix to Error and ErrorContext types + + Signed-off-by: Patrik Oldsberg + +commit 439b07e3e4fa607c8db7eae42a1875231dbf7cf8 +Merge: 9a0e4ffe88 3e6762ba3f +Author: Philipp Hugenroth +Date: Mon Nov 15 15:50:14 2021 +0100 + + Merge branch 'master' into mobile-sidebar + + Signed-off-by: Philipp Hugenroth + +commit 3e6762ba3fd2daef83b36f9c18b7a140c6eb0331 +Merge: 880ad8ce2a a08022254b +Author: Johan Haals +Date: Mon Nov 15 15:43:52 2021 +0100 + + Merge pull request #8052 from backstage/jhaals/bump-yarn + + Add missing yarn.lock changes and reports + +commit 0b60a051c9512e7586579f1051a1233164300567 +Author: Mert Can Bilgiç +Date: Mon Nov 15 17:15:39 2021 +0300 + + changeset name and type change + + Signed-off-by: Mert Can Bilgiç + +commit a08022254b3ea835df565431ec4dc4d5d46b8353 +Author: Johan Haals +Date: Mon Nov 15 14:59:23 2021 +0100 + + Add missing yarn.lock changes and reports + + Signed-off-by: Johan Haals + +commit 880ad8ce2a6b8d5667709216031dd20a4de1e02d +Merge: ca0e663f63 26eb174ce8 +Author: Ben Lambert +Date: Mon Nov 15 14:13:33 2021 +0100 + + Merge pull request #8028 from timja/skip-empty-file-name-scaffolder + + Skip empty file names during scaffolder + +commit 9a0e4ffe88c1b42a5aae37d0e44d39248e19293c +Author: Philipp Hugenroth +Date: Mon Nov 15 13:28:35 2021 +0100 + + Update app-config.yaml + + Signed-off-by: Philipp Hugenroth + +commit 066805f9995a5a85a131ee12b7302b3f48c48ad2 +Author: Philipp Hugenroth +Date: Mon Nov 15 13:12:39 2021 +0100 + + Spellchecking for changesets + + Signed-off-by: Philipp Hugenroth + +commit ea3d207a95414bf2352353342d77950b00e5f264 +Author: hiba-aldalaty +Date: Mon Nov 15 11:47:13 2021 +0000 + + Fix yarn tsc + + Signed-off-by: hiba-aldalaty + +commit 1e0bd76077e3d87393ed1c6184ff1c2887633ec6 +Merge: 01529de535 ca0e663f63 +Author: hiba-aldalaty +Date: Mon Nov 15 11:13:28 2021 +0000 + + Merge branch 'master' into scalable-sidebar-new-implementation + + Signed-off-by: hiba-aldalaty + +commit 01529de5351f7d494de9fef08252242be5e23223 +Author: hiba-aldalaty +Date: Mon Nov 15 11:06:50 2021 +0000 + + Update items.tsx - remove unnecessary code/comments + + Signed-off-by: hiba-aldalaty + +commit ca0e663f638e7295f23bc0cc8c12b32f7383d165 +Merge: 5bba60055e b565119196 +Author: Patrik Oldsberg +Date: Mon Nov 15 11:55:44 2021 +0100 + + Merge pull request #7874 from dehamzah/override-icons + + Add Props Icon for Sidebar Item SidebarSearchField and Settings + +commit 4b8cefcf05d5bf125cf6607eb016502df7d6757a +Author: Philipp Hugenroth +Date: Mon Nov 15 11:55:17 2021 +0100 + + Update changeset & documentation + + Signed-off-by: Philipp Hugenroth + +commit 5bba60055e5f832888a59c23977189f4a9f3073d +Merge: 8f06c19ba2 38d6df6bb9 +Author: Patrik Oldsberg +Date: Mon Nov 15 11:55:07 2021 +0100 + + Merge pull request #7886 from SDA-SE/feat/about-api-component-only + + feat(catalog): remove "View Api" from AboutCard + +commit 8f06c19ba2de5a5174a4a8a3c28d0a41c908dc0e +Merge: 3257ef23e9 1b3fab7193 +Author: Patrik Oldsberg +Date: Mon Nov 15 11:54:11 2021 +0100 + + Merge pull request #7844 from cmpadden/create-app-task-test + + Create App Refactoring and Unit Testing + +commit 3257ef23e94facfedaf7fd35439d049f7671c0ba +Merge: 5d918f9c16 867ea81d15 +Author: Patrik Oldsberg +Date: Mon Nov 15 11:52:33 2021 +0100 + + Merge pull request #7944 from backstage/dependabot/npm_and_yarn/rollup/plugin-commonjs-21.0.1 + + build(deps): bump @rollup/plugin-commonjs from 17.1.0 to 21.0.1 + +commit 5d918f9c165ff487ed793eb95d140ae04768c030 +Merge: 539aaf2c7a 7d6ab03ebb +Author: Patrik Oldsberg +Date: Mon Nov 15 11:50:17 2021 +0100 + + Merge pull request #8035 from zfalen-deloitte/bugfix/duplicate-backstage-token + + Bugfix/duplicate backstage token + +commit 539aaf2c7aa2eb368f5183608a19197dc2934f0f +Merge: f17692544e 23348dd586 +Author: Johan Haals +Date: Mon Nov 15 11:48:56 2021 +0100 + + Merge pull request #7885 from bryce-od/defaultProcessors + + feat: Add getDefaultProcessors to CatalogBuilder + +commit f17692544ebf4cdddae638d18ce2ee3a2d2cbc39 +Merge: d1d445e8cc 8809b6c0dd +Author: Johan Haals +Date: Mon Nov 15 11:40:18 2021 +0100 + + Merge pull request #8048 from RoadieHQ/update-json-schema + + update versions of json-schema + +commit 8809b6c0ddeb0d4cde5fc571786e4876abded8be +Author: Brian Fletcher +Date: Mon Nov 15 09:56:47 2021 +0000 + + update versions of json-schema + + Signed-off-by: Brian Fletcher + +commit d1d445e8cceb6600789bbc4adce9e554ecfbfe23 +Merge: 68e29fbc0d b5eec9e044 +Author: Johan Haals +Date: Mon Nov 15 09:43:55 2021 +0100 + + Merge pull request #8044 from backstage/dependabot/npm_and_yarn/eslint-plugin-cypress-2.12.1 + + build(deps-dev): bump eslint-plugin-cypress from 2.11.3 to 2.12.1 + +commit 04fdd489f652c31c7de93415f774e2e7d2394493 +Author: Camila Belo +Date: Mon Nov 15 00:33:41 2021 +0100 + + test(techdocs-cli): fix errors on windows + + Signed-off-by: Camila Belo + +commit 68e29fbc0d0a1277c15c707b6472c213ed69709a +Merge: 4d37ad5e20 34a604b34c +Author: Fredrik Adelöw +Date: Mon Nov 15 08:28:01 2021 +0100 + + Merge pull request #8045 from backstage/dependabot/npm_and_yarn/js-base64-3.7.2 + + build(deps): bump js-base64 from 3.6.1 to 3.7.2 + +commit 4d37ad5e20109f2e5f000f9d60dbe41220b7746d +Merge: 77f4da448f 872a547dd6 +Author: Fredrik Adelöw +Date: Mon Nov 15 08:27:32 2021 +0100 + + Merge pull request #8046 from tbenade/faq-correction + + small grammatical error + +commit b565119196897ad86fcf67d1899b96ce87514399 +Author: Dede Hamzah +Date: Mon Nov 15 14:19:28 2021 +0700 + + update api report docs + + Signed-off-by: Dede Hamzah + +commit c28534610b3347432de730a1a48ef86dcd71ede5 +Merge: f6ba309d9e 77f4da448f +Author: Lykke Axlin +Date: Mon Nov 15 08:13:00 2021 +0100 + + Merge branch 'master' of https://github.com/backstage/backstage into bazaar-columns + +commit 872a547dd6c3abeeb1eda41573fdee1023dc9e5f +Author: Terrence Benade +Date: Mon Nov 15 16:57:43 2021 +1100 + + small grammatical error + + Signed-off-by: Terrence Benade + +commit 34a604b34ce70c3ac21fce7ec0174be3f9b061e1 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Mon Nov 15 04:15:32 2021 +0000 + + build(deps): bump js-base64 from 3.6.1 to 3.7.2 + + Bumps [js-base64](https://github.com/dankogai/js-base64) from 3.6.1 to 3.7.2. + - [Release notes](https://github.com/dankogai/js-base64/releases) + - [Commits](https://github.com/dankogai/js-base64/compare/3.6.1...3.7.2) + + --- + updated-dependencies: + - dependency-name: js-base64 + dependency-type: direct:production + update-type: version-update:semver-minor + ... + + Signed-off-by: dependabot[bot] + +commit b5eec9e04410493ceb3548286ce1c1bc9230f532 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Mon Nov 15 04:13:26 2021 +0000 + + build(deps-dev): bump eslint-plugin-cypress from 2.11.3 to 2.12.1 + + Bumps [eslint-plugin-cypress](https://github.com/cypress-io/eslint-plugin-cypress) from 2.11.3 to 2.12.1. + - [Release notes](https://github.com/cypress-io/eslint-plugin-cypress/releases) + - [Commits](https://github.com/cypress-io/eslint-plugin-cypress/compare/v2.11.3...v2.12.1) + + --- + updated-dependencies: + - dependency-name: eslint-plugin-cypress + dependency-type: direct:development + update-type: version-update:semver-minor + ... + + Signed-off-by: dependabot[bot] + +commit ecdcbd08eebf11672f5fe748028f1a5e35e636fe +Author: Joon Park +Date: Thu Oct 21 17:54:20 2021 +0100 + + Expose template metadata to custom action handler + + Currently, we only expose the template name to satisfy the requirement from the issue, but more can be added easily (as long as the type is expanded accordingly). + + Signed-off-by: Joon Park + +commit 59a3b58805569426bc114bac30d50713a98aa38b +Author: Camila Belo +Date: Fri Nov 12 17:25:24 2021 +0100 + + fix(techdocs-cli): cross-platform build script + + Co-authored-by: Emma Indal + Signed-off-by: Camila Belo + +commit 77f4da448f6966707951f74616a68db55a9a8734 +Merge: af855da49f 4ca3542fdd +Author: Patrik Oldsberg +Date: Sat Nov 13 18:26:22 2021 +0100 + + Merge pull request #8041 from backstage/rugvip/ALL-THE-PACKAGES + + cli: fix for backend bundle building all packages + +commit 4ca3542fdd0f14da90416ae19310757ce19bb8c3 +Author: Patrik Oldsberg +Date: Sat Nov 13 17:38:38 2021 +0100 + + cli: fix for backend bundle building all packages + + Signed-off-by: Patrik Oldsberg + +commit 6dcfe227a29006a43763bf2c1d5e345a4bfc0cb3 +Author: Patrik Oldsberg +Date: Sat Nov 13 16:32:20 2021 +0100 + + cli: add create factory for scaffolder modules + + Signed-off-by: Patrik Oldsberg + +commit edaaf2dccb8a20f26a26c20b912bc90234350f74 +Author: Patrik Oldsberg +Date: Sat Nov 13 15:32:20 2021 +0100 + + cli: fix non-monorepo package naming for create + + Signed-off-by: Patrik Oldsberg + +commit 103d9e2f53e97f93ef742715a88be15f9941bb3d +Author: Patrik Oldsberg +Date: Sat Nov 13 15:29:33 2021 +0100 + + cli: fix create monorepo check + + Signed-off-by: Patrik Oldsberg + +commit bd3ae04de9e990ed9bad2c8051cb491721f18d94 +Author: Patrik Oldsberg +Date: Sat Nov 13 15:26:23 2021 +0100 + + cli: fixes for common package factory + + Signed-off-by: Patrik Oldsberg + +commit 069934c62760d3bc00c1713ba183ee084c5386fc +Author: Patrik Oldsberg +Date: Sat Nov 13 15:02:08 2021 +0100 + + cli: some more docs for create types + + Signed-off-by: Patrik Oldsberg + +commit 6a46eb2693223fce4f08bb3b707397a0bd7c2a82 +Author: Patrik Oldsberg +Date: Sat Nov 13 15:01:50 2021 +0100 + + cli: refactor inquirer prompt message transforms for clarity + + Signed-off-by: Patrik Oldsberg + +commit 16d06f6ac3ec8fd1553c4b847b96e692d9dc8125 +Author: Patrik Oldsberg +Date: Sat Nov 13 13:20:48 2021 +0100 + + changesets: add changeset for CLI create command + + Signed-off-by: Patrik Oldsberg + +commit 9bbc2da04ee00711983284cf4955c05769623ca4 +Author: Patrik Oldsberg +Date: Sat Nov 13 13:18:07 2021 +0100 + + docs/local-dev: add cli create command docs + + Signed-off-by: Patrik Oldsberg + +commit 823a097b3b5a87205eefc8c086cf13e0ae0aa8c6 +Author: Patrik Oldsberg +Date: Sat Nov 13 12:36:47 2021 +0100 + + cli: use common testing utils for create factory tests + + Signed-off-by: Patrik Oldsberg + +commit 7b8f19492edfea021cc4681c392e3e43f79d5b74 +Author: Patrik Oldsberg +Date: Sat Nov 13 12:30:04 2021 +0100 + + cli: add test for plugin package template execution + fix + + Signed-off-by: Patrik Oldsberg + +commit 8c83ce8084df178556d60752bf3f0f0c50db4473 +Author: Patrik Oldsberg +Date: Sat Nov 13 10:38:49 2021 +0100 + + cli: leave initial create logging to the factories + + Signed-off-by: Patrik Oldsberg + +commit 1c291cb66f2d61467b7a0eeb1c967dc5675456ac +Author: Patrik Oldsberg +Date: Sat Nov 13 10:32:25 2021 +0100 + + package.json: add backstage-create script + + Signed-off-by: Patrik Oldsberg + +commit a9f8363b5d66bc55830ad9f90e1367c74efb5f15 +Author: Patrik Oldsberg +Date: Fri Nov 12 18:46:25 2021 +0100 + + cli: format package.json after creation to simplify template + + Signed-off-by: Patrik Oldsberg + +commit 827fb840b46c59b4322d11e5400a2e6364aadcb8 +Author: Patrik Oldsberg +Date: Fri Nov 12 18:45:51 2021 +0100 + + cli: fix for create crashing if no scope is specified + + Signed-off-by: Patrik Oldsberg + +commit 8f2a7184386e1fdbb43b3d35d1bf90bbf681fdf4 +Author: Patrik Oldsberg +Date: Fri Nov 12 18:38:47 2021 +0100 + + cli: added create factory and template for plugin common package + + Signed-off-by: Patrik Oldsberg + +commit af855da49fa280ed55e77335df432da662037460 +Merge: d0ea59bee8 dd75158865 +Author: Fredrik Adelöw +Date: Sat Nov 13 08:01:18 2021 +0100 + + Merge pull request #8037 from backstage/rugvip/issuefix + + scripts: tweak snyk issue script to catch existing license issues + +commit dd751588657de1ed2b787fa86a5c4aed37db14f0 +Author: Patrik Oldsberg +Date: Fri Nov 12 21:39:26 2021 +0100 + + scripts: tweak snyk script to match license issues + + Signed-off-by: Patrik Oldsberg + +commit 46a161a023fcca6d2130f12fc88cbd7befff0a57 +Author: Patrik Oldsberg +Date: Fri Nov 12 21:35:40 2021 +0100 + + scripts: make snyk issue script executable + + Signed-off-by: Patrik Oldsberg + +commit 7d6ab03ebbfc14ec4f1c8d0ebf9fa7957a200457 +Author: Zach Falen +Date: Fri Nov 12 13:32:48 2021 -0700 + + update test + + Signed-off-by: Zach Falen + +commit 892c1d9202f42856e7585d670abb75f1d7059eaf +Author: Zach Falen +Date: Fri Nov 12 12:56:33 2021 -0700 + + add changeset + + Signed-off-by: Zach Falen + +commit 8a60033962c0e529c81f12c1695225377c59242b +Author: Zach Falen +Date: Fri Nov 12 12:53:13 2021 -0700 + + hotfix for Backstage token generation, prefer .token over .idToken + + Signed-off-by: Zach Falen + +commit 48fe020c05788e6feb02b720a68f3fc0361649b7 +Author: Andre Wanlin +Date: Fri Nov 12 13:52:29 2021 -0600 + + Updated to handle dates nicely with tests + + Signed-off-by: Andre Wanlin + +commit 70b96a8d652e62c317f59980be6be3d89085e57a +Merge: a06242e5cc d0ea59bee8 +Author: Andre Wanlin <67169551+awanlin@users.noreply.github.com> +Date: Fri Nov 12 13:25:26 2021 -0600 + + Merge branch 'backstage:master' into topic/add-entity-pull-requests + +commit 1cf00cbe334488b62f4c36f1f59170bea8ab0382 +Author: Patrik Oldsberg +Date: Fri Nov 12 18:19:33 2021 +0100 + + cli: added test for backendPlugin create factory + + Signed-off-by: Patrik Oldsberg + +commit 033f6abfcebc0b7ae1c276b412fcb306efe2443d +Author: Patrik Oldsberg +Date: Fri Nov 12 18:15:03 2021 +0100 + + cli: add tests for frontendPlugin create factory + minor fixes + + Signed-off-by: Patrik Oldsberg + +commit 7ba416be786ea708c01e8a8d302def41e3f79c01 +Author: Philipp Hugenroth +Date: Fri Nov 12 18:05:55 2021 +0100 + + Split & improve changesets + + Fix & cleanup changes related to review + + Signed-off-by: Philipp Hugenroth + +commit 26eb174ce8f9ecd163738cc919aa8e27f51057c1 +Author: Tim Jacomb +Date: Fri Nov 12 15:33:22 2021 +0000 + + Skip empty file names during scaffolder + + Signed-off-by: Tim Jacomb + +commit 367e09e31fd828561f94024bf90355576774a295 +Author: Patrik Oldsberg +Date: Fri Nov 12 16:45:56 2021 +0100 + + cli: refactor to simplify codeowners logic + + Signed-off-by: Patrik Oldsberg + +commit 0ebcf168d25d04a7ba39b75929fbca273ae6446d +Author: Patrik Oldsberg +Date: Fri Nov 12 16:36:57 2021 +0100 + + cli: common helper for executing plugin package templates + + Signed-off-by: Patrik Oldsberg + +commit 06934f2f5275ad11882d1b060c3da874ff6df17e +Author: Mike Lewis +Date: Fri Nov 12 15:10:26 2021 +0000 + + catalog-backend: ensure subqueries are isolated from one another + + Ensures that independent calls to `parseFilter` are isolated from one + another, by always wrapping additional clauses to the query in + `andWhere`. I think that the bug in the previous incarnation is strictly + theoretical, as long as parseFilters is only called once for a given + filter (which today, it is). When authorization lands in catalog-backend + though, we'll need to call it multiple times - once to add the authz + filters, and once to add the filters requested by the caller, which + would expose this bug. + + Signed-off-by: Mike Lewis + +commit 142cd41b7e351c20f23a6a9f611586b28bcf81ce +Author: Patrik Oldsberg +Date: Fri Nov 12 16:08:32 2021 +0100 + + cli: refactor create factories to use common prompts + + Signed-off-by: Patrik Oldsberg + +commit 1c0ac6291cdaa278aa58cf00592e6ab7b562e92d +Author: Patrik Oldsberg +Date: Fri Nov 12 16:00:54 2021 +0100 + + cli: added create backend plugin factory + + Signed-off-by: Patrik Oldsberg + +commit d0ea59bee87e9b0fbd56f7c34d99322630f8d099 +Merge: 6f8e995145 8b5bd7e0d5 +Author: Ben Lambert +Date: Fri Nov 12 16:02:49 2021 +0100 + + Merge pull request #7998 from awanlin/topic/improve-azure-devops-date-handling + + Improved Azure DevOps Date Handling + +commit 7b8d432de5842a420ca711e5895462118176ed12 +Author: Patrik Oldsberg +Date: Fri Nov 12 15:39:17 2021 +0100 + + cli: complete frontendPlugin create factory implementation + + Signed-off-by: Patrik Oldsberg + +commit 248c8eaa25af0f4147fc383fe553765068530f44 +Author: Patrik Oldsberg +Date: Fri Nov 12 15:33:45 2021 +0100 + + cli: allow empty create option values + + Signed-off-by: Patrik Oldsberg + +commit 602cf4d80dabe6a24e4585da37b9a0af09a3b320 +Author: Patrik Oldsberg +Date: Fri Nov 12 15:24:08 2021 +0100 + + cli: run templating tasks in strict mode + + Signed-off-by: Patrik Oldsberg + +commit f8adebde77b0a6c299f1463f4a759942fab7be55 +Author: Patrik Oldsberg +Date: Fri Nov 12 15:23:32 2021 +0100 + + cli: build out task lib a bit with command execution, adding deps + + Signed-off-by: Patrik Oldsberg + +commit e04cce9cdb5cf02e7c9748c5bb95d9b59391e421 +Author: Patrik Oldsberg +Date: Fri Nov 12 15:22:11 2021 +0100 + + cli: wrap create factories up in a bit more built-in logging + + Signed-off-by: Patrik Oldsberg + +commit e84abaccafcbf2c3d1b163285c8abdf8f310edf3 +Author: Mike Lewis +Date: Fri Nov 12 12:16:31 2021 +0000 + + authz: move permission-common to plugins + + Signed-off-by: Mike Lewis + +commit f816f68bbedd568486f9ef46dc4d33e8882aee47 +Author: Mike Lewis +Date: Fri Nov 12 12:13:48 2021 +0000 + + authz: add PermissionClient TODO for better type-safety + + Signed-off-by: Mike Lewis + +commit f0124d29a9e673d102bfbc5f2d08d6ca12461292 +Author: Mike Lewis +Date: Fri Nov 12 11:44:24 2021 +0000 + + authz: use zod to validate responses in PermissionClient + + Signed-off-by: Mike Lewis + +commit 0c0cf0ddaf781dd1cea2efe4d6a8acebb80d1f32 +Author: Mike Lewis +Date: Fri Nov 12 11:43:40 2021 +0000 + + build(deps): add dependency on zod in permission-common + + Signed-off-by: Mike Lewis + +commit 20d3ef45e252b2252ad46feb3be7dfa27c325587 +Author: Mike Lewis +Date: Thu Nov 11 16:53:14 2021 +0000 + + authz: further relaxation of PermissionCriteria type + + The PermissionCriteria type is actually intended to be the type used to + represent criteria for arbitrary queries, whether they are expressed as + PermissionConditions or plugin-specific query fragments. As such we + don't need to refer to the PermissionCondition type at all - we can + stick with the TQuery type parameter as the type for the unwrapped + query fragment. + + Signed-off-by: Mike Lewis + +commit ea77555fe33163470d7d1890a699f01396ec3255 +Author: Mike Lewis +Date: Thu Nov 11 13:32:18 2021 +0000 + + authz: restrict type of PermissionCondition params + + We need a guarantee that we'll be able to spread permission condition + params when applying the condition via the `apply` or `toQuery` methods + on the corresponding rule. As such, we need to enforce that the TParams + type parameter is an array. + + This commit also supplies a default value of unknown[] for this type + param to make it a bit more convenient to use the type in situations + where the type of the params is not important. + + Signed-off-by: Mike Lewis + +commit 00448f02e68a5a12562bce23fb285b6ad2f60bbd +Author: Mike Lewis +Date: Thu Nov 11 13:28:25 2021 +0000 + + authz: fix PermissionCondition type parameter + + The type parameter for PermissionCondition refers to the type of the + condition params, not the type of the leaf entries in a + PermissionCriteria object. + + It should be safe to always set this type parameter to `unknown[]` in + this case. Each PermissionCondition is will have different parameters, + therefore we just need to enforce that the params is always an array of + unknown. + + Signed-off-by: Mike Lewis + +commit 59702b2bded6657fc975617390e30e719e3f3563 +Author: Mike Lewis +Date: Thu Nov 11 13:26:17 2021 +0000 + + authz: do not export AuthorizeResult as type + + Since AuthorizeResult is an enum, exporting it via `export type` is + incorrect - it means we can refer to the AuthorizeResult type, but not + use it or its members as values. + + Signed-off-by: Mike Lewis + +commit dce7237d46e604f5b6681c638693859d27d7488d +Author: Tim Hansen +Date: Wed Nov 10 14:42:56 2021 -0700 + + PermissionCriteria generic + + Signed-off-by: Tim Hansen + +commit c00b4d38290ab91e317ac5999a45c74f8ba50272 +Author: Tim Hansen +Date: Wed Nov 10 13:38:04 2021 -0700 + + Remove enum, package fixes + + Signed-off-by: Tim Hansen + +commit e6805978d8a8e2d8bf8b682b7b4f48c0f83ae7d6 +Author: Tim Hansen +Date: Wed Nov 10 13:26:34 2021 -0700 + + Remove JSON types, add not criteria + + Signed-off-by: Tim Hansen + +commit 7bba7a89987b1538cc175215ab05d999169e7c08 +Author: Tim Hansen +Date: Wed Nov 10 11:58:05 2021 -0700 + + Add permission-common package + + Signed-off-by: Tim Hansen + +commit 8b5bd7e0d5278e28779d3479bc619795b21b6bc2 +Author: Andre Wanlin +Date: Fri Nov 12 08:06:45 2021 -0600 + + Updated changeset to minor for common + + Signed-off-by: Andre Wanlin + +commit e60519486868f6b4e2dbd900c34ead6eb94099f7 +Merge: 7715cadf2d 6f8e995145 +Author: Greg Bomkamp +Date: Fri Nov 12 09:05:15 2021 -0500 + + Merge branch 'master' into add-global-pg-plugin-schema-flag + +commit 6f8e9951453c6e55c75200336fe2f839460eb7a6 +Merge: b46cd73035 f3bd8f4757 +Author: Mike Lewis +Date: Fri Nov 12 14:04:11 2021 +0000 + + Merge pull request #8023 from backstage/bump-api-documenter + + build(deps): bump @microsoft/api-documenter to v7.13.68 + +commit a06242e5ccc2c54f3aac7255faa137ecea3ddaf9 +Author: Andre Wanlin +Date: Fri Nov 12 08:03:19 2021 -0600 + + Refactored route names + + Signed-off-by: Andre Wanlin + +commit 867ea81d15f7a6bb8b5e05b55e432eb3c932b7ec +Author: Ben Lambert +Date: Fri Nov 12 14:47:31 2021 +0100 + + Add changeset + + Signed-off-by: Ben Lambert + +commit f5a5657d9a0b76b25abad304929dbd8beb055d0d +Merge: 2b5ccd2964 b46cd73035 +Author: Andre Wanlin <67169551+awanlin@users.noreply.github.com> +Date: Fri Nov 12 07:38:59 2021 -0600 + + Merge branch 'backstage:master' into topic/improve-azure-devops-date-handling + +commit 7c3297c71a0b9730c0dba05bfee0207165d50e5b +Merge: 486b0251b7 b46cd73035 +Author: Andre Wanlin <67169551+awanlin@users.noreply.github.com> +Date: Fri Nov 12 07:38:47 2021 -0600 + + Merge branch 'backstage:master' into topic/add-entity-pull-requests + +commit b46cd730357cdbaa7d65382ed62c92f7643be166 (tag: v0.54.2, tag: release-2021-11-12) +Merge: 7f839ddbb6 5f606617dd +Author: Fredrik Adelöw +Date: Fri Nov 12 14:32:30 2021 +0100 + + Merge pull request #7612 from backstage/freben/recurring-tasks + + Add support for distributed tasks + +commit 7f839ddbb64ba31cf7ddedd17e4b4319cdce4984 +Merge: 0a66597793 58a4e67ded +Author: Ben Lambert +Date: Fri Nov 12 14:29:45 2021 +0100 + + Merge pull request #8021 from SDA-SE/feat/dev-switch-theme + + Add theme switcher to sidebar of dev app + +commit f3bd8f47578ef7a80bd2c28da0f8517aef200bf7 +Author: Mike Lewis +Date: Fri Nov 12 11:56:31 2021 +0000 + + build(deps): bump @microsoft/api-documenter to v7.13.68 + + Signed-off-by: Mike Lewis + +commit 14e8162d199cbf80dd1e4dfcce6006758e6c89ea +Author: Patrik Oldsberg +Date: Fri Nov 12 13:08:25 2021 +0100 + + cli: added temp dir utility to create context + + Signed-off-by: Patrik Oldsberg + +commit c1017c8138532ba35330d79dc84438c3b6a3adf4 +Author: Emma Indal +Date: Fri Nov 12 12:43:03 2021 +0100 + + update changeset + + Signed-off-by: Emma Indal + +commit 45f3a67c4c174fa9cf7f65038ac7f374cccb5c6a +Author: Emma Indal +Date: Fri Nov 12 12:39:31 2021 +0100 + + add focused prop to both SearchBar and SearchBarBase components + storybook example + + Signed-off-by: Emma Indal + +commit fa6c26f68d010ce6c5acecf155162145e92baadc +Author: Marley Powell +Date: Fri Nov 12 11:23:45 2021 +0000 + + refactor: Renamed `azurePrsRootRouteRef` to `azurePullRequestDashboardRouteRef`. + + Signed-off-by: Marley Powell + +commit caa2bc31f152d2d23681f426ec2aff0692b011a7 +Author: Marley Powell +Date: Fri Nov 12 11:19:06 2021 +0000 + + refactor: Updated `PullRequestCard` to use `Link` from `@backstage/core-components`. + + Signed-off-by: Marley Powell + +commit 330872df37a9bcec9f69bb8af8ee51d3aaf91c51 +Merge: 9a84e7f4e9 0a66597793 +Author: Marley Powell +Date: Fri Nov 12 11:05:04 2021 +0000 + + Merge branch 'master' of https://github.com/backstage/backstage into marley/7678-pull-request-dashboard + +commit 84936dbcbe9fac0244c71ca90da7404a5e5d2a78 +Author: Patrik Oldsberg +Date: Fri Nov 12 12:03:23 2021 +0100 + + cli: cmd options and discovery for additional creation context + + Signed-off-by: Patrik Oldsberg + +commit eec57229eb79fd3ba4004fcbca4b557401e6ea34 +Author: Camila Belo +Date: Fri Nov 12 11:36:22 2021 +0100 + + fix(techdocs-cli): remove quote from volume + + Ref: https://github.com/backstage/techdocs-cli/pull/162 + Co-authored-by: Emma Indal + Signed-off-by: Camila Belo + +commit 3ca0d3368eb6ec86690941ef7300b312bdfcbd5e +Author: Patrik Oldsberg +Date: Fri Nov 12 11:28:54 2021 +0100 + + cli: display create prompt messages in blue and errors in red + + Signed-off-by: Patrik Oldsberg + +commit 55e58c55684109303b8559db2ea578bf88e72c5d +Author: Patrik Oldsberg +Date: Fri Nov 12 11:24:40 2021 +0100 + + cli: moved bulk of create implementation over to lib + + Signed-off-by: Patrik Oldsberg + +commit 2ca3f5ff4c3585505a72fdd285382c44451b51d6 +Author: Patrik Oldsberg +Date: Fri Nov 12 11:22:30 2021 +0100 + + cli: added support for dynamically discovering create options + + Signed-off-by: Patrik Oldsberg + +commit 58a4e67ded6ac591f8429f71bf49a6a4d934c71d +Author: Oliver Sand +Date: Fri Nov 12 11:10:27 2021 +0100 + + Add theme switcher to sidebar of dev app + + Signed-off-by: Oliver Sand + +commit 0a665977939750d012cc4058b271901d136fd0b7 +Merge: 96e9afce25 f8ebdd571c +Author: Patrik Oldsberg +Date: Fri Nov 12 11:04:23 2021 +0100 + + Merge pull request #8000 from marleypowell/marley/7999-storybook-fix + + fix: Fixed issue with running a subset of stories caused by incorrectly resolved paths. + +commit e607456dbcb77d779ee28af8c1980ca4f9e713be +Author: Patrik Oldsberg +Date: Sun Oct 17 16:59:59 2021 +0200 + + cli: create command factory foundations + + Signed-off-by: Patrik Oldsberg + +commit 8acb23b29f72e29913069386783985bab262d0bf +Author: Patrik Oldsberg +Date: Sun Oct 17 13:45:36 2021 +0200 + + cli: initial create command + + Signed-off-by: Patrik Oldsberg + +commit 96e9afce2578deeaf329a4e8dd726ae6429f8d6f +Merge: f3bf71b925 72e0e17fb5 +Author: Johan Haals +Date: Fri Nov 12 10:56:45 2021 +0100 + + Merge pull request #8016 from backstage/dependabot/npm_and_yarn/types/nunjucks-3.2.0 + + build(deps-dev): bump @types/nunjucks from 3.1.5 to 3.2.0 + +commit f3bf71b92530d9a6ca74d5d047398c9a21392aca +Merge: c3ffbd615f 0cc1fa949b +Author: Johan Haals +Date: Fri Nov 12 10:56:21 2021 +0100 + + Merge pull request #8015 from backstage/dependabot/npm_and_yarn/types/jquery-3.5.8 + + build(deps-dev): bump @types/jquery from 3.5.5 to 3.5.8 + +commit c3ffbd615f1e09d1d3df6482d7f18025cd95f366 +Merge: 2375361400 6f276707e3 +Author: Fredrik Adelöw +Date: Fri Nov 12 09:42:46 2021 +0100 + + Merge pull request #7947 from backstage/freben/service-builder-errors + + Make sure that the server builder propagates init errors properly + +commit f8ebdd571c1e148f983784b5e4e341c2aabad500 +Author: Marley Powell +Date: Fri Nov 12 08:33:39 2021 +0000 + + refactor: Reworked how subset story paths are created. + + Signed-off-by: Marley Powell + +commit cdca117d58b0e828cfe420f1f525ac4081477a63 +Merge: 0a7a2eba76 2375361400 +Author: Marley Powell +Date: Fri Nov 12 08:13:33 2021 +0000 + + Merge branch 'master' of https://github.com/backstage/backstage into marley/7999-storybook-fix + +commit 72e0e17fb5b4065ccbf532d6d62ff1f7c27522fa +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Fri Nov 12 04:13:37 2021 +0000 + + build(deps-dev): bump @types/nunjucks from 3.1.5 to 3.2.0 + + Bumps [@types/nunjucks](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/nunjucks) from 3.1.5 to 3.2.0. + - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) + - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/nunjucks) + + --- + updated-dependencies: + - dependency-name: "@types/nunjucks" + dependency-type: direct:development + update-type: version-update:semver-minor + ... + + Signed-off-by: dependabot[bot] + +commit 0cc1fa949b2abda881d7796ec703d35680b05acf +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Fri Nov 12 04:11:27 2021 +0000 + + build(deps-dev): bump @types/jquery from 3.5.5 to 3.5.8 + + Bumps [@types/jquery](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jquery) from 3.5.5 to 3.5.8. + - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) + - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jquery) + + --- + updated-dependencies: + - dependency-name: "@types/jquery" + dependency-type: direct:development + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit 23753614008d62981c927c56d085b0b46fba031c +Merge: 510f16a435 25f637f39f +Author: Patrik Oldsberg +Date: Fri Nov 12 01:05:15 2021 +0100 + + Merge pull request #8001 from backstage/rugvip/oda + + cli: make sure JSS styles receive the highest priority + +commit 510f16a435c46a5cc24c1c359b73351032031e7f +Merge: 333e3c21e5 4f3ba47bf3 +Author: Patrik Oldsberg +Date: Fri Nov 12 01:02:24 2021 +0100 + + Merge pull request #7845 from jeremyguarini/gcp-plugin-ui-updates + + UI updates to GCP-projects plugin + +commit 4f3ba47bf362446f47ec29c05507d351724dee84 +Author: Jeremy Guarini +Date: Thu Nov 11 14:49:40 2021 -0800 + + ran yarn install to clear out data-grid dependency + + Signed-off-by: Jeremy Guarini + +commit 1e33ce7407ce162bf706cc805aa3cd87173feded +Author: Jeremy Guarini +Date: Thu Nov 11 12:41:30 2021 -0800 + + swapout material-table for backstage table + + Signed-off-by: Jeremy Guarini + +commit c2f387880fa31d26a0c620906f21f84665e75397 +Author: Camila Belo +Date: Thu Nov 11 20:38:18 2021 +0100 + + chore(techdocs-cli): add backstage app defaults + + Signed-off-by: Camila Belo + +commit 333e3c21e505a3a2a9c9ce26d9e29c10544e4b83 +Merge: 01a0a39521 9010cdc4d7 +Author: Fredrik Adelöw +Date: Thu Nov 11 20:32:04 2021 +0100 + + Merge pull request #7990 from backstage/freben/tar2 + + add snyk ignores for the node-gyp tar vuln + +commit 5f606617dd73e60deeae9669c3afbeea985b2c78 +Author: Fredrik Adelöw +Date: Thu Nov 11 20:28:07 2021 +0100 + + fixup yarn.lock + + Signed-off-by: Fredrik Adelöw + +commit 3f447ec3e12dd10e3763d228597c2accb1cb2837 +Author: Fredrik Adelöw +Date: Sat Nov 6 09:58:15 2021 +0100 + + use lodash.once instead of memoize, and skip unnecessary PK index + + Signed-off-by: Fredrik Adelöw + +commit e72d9ba9f624ef5430ebe9807f726a8f710302b9 +Author: Fredrik Adelöw +Date: Fri Oct 29 16:23:08 2021 +0200 + + remove unnecessary dep on backend-test-utils + + Signed-off-by: Fredrik Adelöw + +commit 3bf223818726c7d60da54dd6059940ca1c66e70e +Author: Fredrik Adelöw +Date: Fri Oct 29 15:25:17 2021 +0200 + + update to the right version of the errors package + + Signed-off-by: Fredrik Adelöw + +commit fdfd2f8a6285abb6692adff8f208c7a949cf5c46 +Author: Fredrik Adelöw +Date: Fri Oct 29 15:08:19 2021 +0200 + + remove double config dep in cli + + Signed-off-by: Fredrik Adelöw + +commit 06b035d120d72d6b37887fa79c87fec44e2ec1bf +Author: Fredrik Adelöw +Date: Fri Oct 29 14:11:15 2021 +0200 + + bump to the latest versions of backstage packages + + Signed-off-by: Fredrik Adelöw + +commit 41009bb3a5cd17e14c88778d90d6f7d766252d67 +Author: Fredrik Adelöw +Date: Thu Oct 28 21:47:29 2021 +0200 + + fix missing link in api report + + Signed-off-by: Fredrik Adelöw + +commit 85cc6bd6aaac7524e7d62d1463c80ecde7b9eaca +Author: Fredrik Adelöw +Date: Thu Oct 28 15:25:37 2021 +0200 + + rename to TaskScheduler to reduce collision risk with other concepts + + Signed-off-by: Fredrik Adelöw + +commit 92d85b80e92edaba95732aac8b64993f2f6290f4 +Author: Fredrik Adelöw +Date: Thu Oct 28 11:08:19 2021 +0200 + + more tests and a review comment + + Signed-off-by: Fredrik Adelöw + +commit b5c106ac4cdbe141c25b7ba6782f5ea32a7f96e1 +Author: Fredrik Adelöw +Date: Wed Oct 27 22:49:23 2021 +0200 + + fix api export and test timeouts + + Signed-off-by: Fredrik Adelöw + +commit 26cf7f631d7a61004c76806b762b624555c80be7 +Author: Fredrik Adelöw +Date: Wed Oct 27 22:40:52 2021 +0200 + + final cleanup, removing unschedule + + Signed-off-by: Fredrik Adelöw + +commit 9bee0b9f719abb758cf58107aecbe1738edaa5c7 +Author: Fredrik Adelöw +Date: Wed Oct 27 21:55:55 2021 +0200 + + make it possible to abort tasks + + Signed-off-by: Fredrik Adelöw + +commit d8c28d99cf597a45ad757b1bf40ba3077b514753 +Author: Fredrik Adelöw +Date: Wed Oct 27 21:11:19 2021 +0200 + + make the original task definition into just one object + + Signed-off-by: Fredrik Adelöw + +commit b91fe07309954fa6a18fa1934e3a5e9d9dffd233 +Author: Fredrik Adelöw +Date: Wed Oct 27 21:00:07 2021 +0200 + + use a proper AbortController instead of the home baked one + + Signed-off-by: Fredrik Adelöw + +commit cc3b6c25aa60e1ea6bee1cc20a456e581d944ee4 +Author: Fredrik Adelöw +Date: Wed Oct 27 19:08:59 2021 +0200 + + make timeout and frequency mandatory + + Signed-off-by: Fredrik Adelöw + +commit aeaa2fe3e6fe7b29334c54d8a4e27c708b18a844 +Author: Fredrik Adelöw +Date: Wed Oct 27 17:01:24 2021 +0200 + + log the task id as well when unable to parse settings + + Signed-off-by: Fredrik Adelöw + +commit d252c983b575e7e8808b16ac2b39cfa9389dd2b6 +Author: Fredrik Adelöw +Date: Wed Oct 27 16:59:20 2021 +0200 + + use dashes in not-ready-yet + + Signed-off-by: Fredrik Adelöw + +commit 5d602f8e292e8717dafecfccefc2ea4377f72c94 +Author: Fredrik Adelöw +Date: Wed Oct 27 16:56:26 2021 +0200 + + get rid of the ts-ignore + + Signed-off-by: Fredrik Adelöw + +commit 3f1237147fbf5cfb33f931403ac657de8eeb37f1 +Author: Fredrik Adelöw +Date: Wed Oct 27 16:54:36 2021 +0200 + + remove the lock functionality + + Signed-off-by: Fredrik Adelöw + +commit 67456f7fc9994894b1ae231fa09d4d438d307bfd +Author: Fredrik Adelöw +Date: Wed Oct 27 16:46:10 2021 +0200 + + remove knexfile + + Signed-off-by: Fredrik Adelöw + +commit c1ac8dd174c25fb15245420813506f72a29d2c05 +Author: Fredrik Adelöw +Date: Sun Oct 24 19:22:41 2021 +0200 + + log on failed release + + Signed-off-by: Fredrik Adelöw + +commit e09bf604cd6989a463a326bbae228ccc736b3ad7 +Author: Fredrik Adelöw +Date: Sun Oct 24 19:08:50 2021 +0200 + + move to a separate package instead and address comments + + Signed-off-by: Fredrik Adelöw + +commit 222793c849958e613f2fcae3a482e05368e20a2d +Author: Fredrik Adelöw +Date: Fri Oct 15 11:23:05 2021 +0200 + + do not modify the backend yet + + Signed-off-by: Fredrik Adelöw + +commit d7c1e0e34acf52172e879dce7a81c95ec8baf435 +Author: Fredrik Adelöw +Date: Fri Oct 15 10:42:59 2021 +0200 + + docs + + Signed-off-by: Fredrik Adelöw + +commit 751317dbf3faccb05188f480773a1702b8b9da37 +Author: Fredrik Adelöw +Date: Thu Oct 14 17:04:24 2021 +0200 + + finishing touches + + Signed-off-by: Fredrik Adelöw + +commit d4f412fcd3fbef498eeebfd2ea1647da56d5ced2 +Author: Fredrik Adelöw +Date: Thu Sep 30 09:35:49 2021 +0200 + + Get most of the task worker code into place + + Signed-off-by: Fredrik Adelöw + +commit d088c7f0a3d98ead6101f27d1c017e639e0c3c9d +Author: Fredrik Adelöw +Date: Mon Aug 23 15:29:03 2021 +0200 + + Implement the locks part of the task manager + + Signed-off-by: Fredrik Adelöw + +commit 6f276707e37187a45a875709f349369e3ce7aa16 +Author: Fredrik Adelöw +Date: Thu Nov 11 20:06:45 2021 +0100 + + review comments + + Signed-off-by: Fredrik Adelöw + +commit a8732a1200bc4dfa90de84841f98e7a0d057fd2b +Author: Fredrik Adelöw +Date: Thu Nov 11 11:58:33 2021 +0100 + + Make sure that the server builder propagates init errors properly + + Signed-off-by: Fredrik Adelöw + +commit 9010cdc4d718f6ab46c88681b9e8e5188117a08d +Author: Fredrik Adelöw +Date: Thu Nov 11 15:48:26 2021 +0100 + + add snyk ignores for the node-gyp tar vuln + + Signed-off-by: Fredrik Adelöw + +commit 0456b73da8a73e26036c16d029ea2dda40a21a5f +Author: Camila Belo +Date: Thu Nov 11 19:09:30 2021 +0100 + + fix(techdocs-cli): config file for development build + + Signed-off-by: Camila Belo + +commit 7a3c2f930118dcc990fe94a1ac3f2dca0bf44d54 +Author: Camila Belo +Date: Thu Nov 11 16:13:31 2021 +0100 + + fix(techdocs-cli): wait for child process to finish + + Signed-off-by: Camila Belo + +commit 71e7b0ee92cd8ab27288f8e550810d0f48b147c6 +Author: Andrew Thauer +Date: Thu Oct 28 10:08:08 2021 -0400 + + refactor: reunification of techdocs-cli and backstage repos + + Signed-off-by: Andrew Thauer + +commit 1b3fab7193b7b6c7bda547c12ed763ac144f210b +Author: Colton Padden +Date: Fri Oct 29 11:45:01 2021 -0400 + + Use mock-fs during createApp to prevent filesystem modifications + + Signed-off-by: Colton Padden + +commit bd90ded8b7d93c140ade4802cdacda9ccc22a465 +Author: Colton Padden +Date: Fri Oct 29 11:32:23 2021 -0400 + + Add type annotations for mocked child_process.exec + + Signed-off-by: Colton Padden + +commit 1d666cb67e28900c3ada3d1937708df7cdd1f1df +Author: Colton Padden +Date: Fri Oct 29 10:44:32 2021 -0400 + + Add regression tests to createApp entrypoint + + Ensure that appropriate tasks are called depending on inquirer prompt answers, + and command-line argument options (--path, and --skip-install). + + Signed-off-by: Colton Padden + +commit 2163e83fa22e12b2f1727b6b9cbc49c6bd42028e +Author: Colton Padden +Date: Thu Oct 28 19:57:23 2021 -0400 + + Refactor create-app tasks and introduce regression tests + + - Tasks were moved from the script entrypoint to the lib directory + - Doc comments were added for each task function defined in `src/lib/tasks.ts` + - The `yarn test` script was added to package.json + - Unit tests were written for each task -- verying file operations using fs-mock + + Signed-off-by: Colton Padden + +commit 4ead01ef5ab6a05015dd329ae58172ebd8647159 +Author: Philipp Hugenroth +Date: Thu Nov 11 19:02:09 2021 +0100 + + Fix overlapping content for expandable sidebar + + Signed-off-by: Philipp Hugenroth + +commit 882adc942efb62dcd6298704c10027809c3e6843 +Author: Philipp Hugenroth +Date: Thu Nov 11 18:33:08 2021 +0100 + + Add padding to SidebarPage to avoid MobileSidebar overlapping content + + Signed-off-by: Philipp Hugenroth + +commit 01a0a39521ab1c2132e972b8263d519e1a553a77 (tag: v0.54.1, tag: release-2021-11-11.1) +Merge: f979fcf519 b85ccce84d +Author: Patrik Oldsberg +Date: Thu Nov 11 18:31:24 2021 +0100 + + Merge pull request #7790 from backstage/mob/decouple-core + + core-app-api: deprecate dependency on core-components, theme, and MUI + +commit 25f637f39f5066b2c7d3bc21118f712b7ac2a974 +Author: Patrik Oldsberg +Date: Thu Nov 11 18:15:39 2021 +0100 + + cli: make sure JSS styles receive the highest priority + + Signed-off-by: Patrik Oldsberg + +commit 69f06b7db5ee87498ae2dc9bba0047418b8875b3 +Author: Anthony Ikeda +Date: Tue Nov 9 11:58:58 2021 -0800 + + Ran Prettier and reformatted the file + + Signed-off-by: Anthony Ikeda + +commit b85ccce84df919c10d01cacce536211bb3e46a02 +Author: Patrik Oldsberg +Date: Thu Nov 11 17:28:52 2021 +0100 + + app-defaults: update internal deps + + Signed-off-by: Patrik Oldsberg + +commit 46570fecbc1076cf9b2d1c13241c05924e2c20d6 +Author: Patrik Oldsberg +Date: Wed Nov 10 18:50:22 2021 +0100 + + test-utils: migrate theme usage and switch to actual MUI icons + + Signed-off-by: Patrik Oldsberg + +commit 1be02e09dc73fe1e747101d9bf802816cd9e762c +Author: Patrik Oldsberg +Date: Wed Nov 10 18:20:47 2021 +0100 + + core-app-api: fix AppManager tests + + Signed-off-by: Patrik Oldsberg + +commit eb489db0c1169dcc356d39683eb096fcbe888535 +Author: Patrik Oldsberg +Date: Wed Nov 10 17:31:15 2021 +0100 + + app-defaults: lazier api initialization to work around import cycle + + Signed-off-by: Patrik Oldsberg + +commit 6d790f0f637c9c12e1f0ab4a38dc675aeaeefc14 +Author: Patrik Oldsberg +Date: Wed Nov 10 15:21:08 2021 +0100 + + test-utils: reintroduce defaultApis + + Signed-off-by: Patrik Oldsberg + +commit 569acdb8f8bd7b352d02274466390044c4085725 +Author: Patrik Oldsberg +Date: Wed Nov 10 15:19:45 2021 +0100 + + core-app-api: fix fix docs docs + + Signed-off-by: Patrik Oldsberg + +commit 29eb8d7dbee876056be94268ea68ff152a083612 +Author: Patrik Oldsberg +Date: Wed Nov 10 15:08:32 2021 +0100 + + test-utils: switch mock icons to be plain svg elements + + Signed-off-by: Patrik Oldsberg + +commit 2dd2a7b2ccc2cd063d086b93ae2b7b8d68661104 +Author: Patrik Oldsberg +Date: Wed Nov 10 12:04:27 2021 +0100 + + changesets: add changesets for test-utils createApp and AppTheme deprecation + + Signed-off-by: Patrik Oldsberg + +commit cdbddf196f6ac9e4aeca2bc854ffc425b8ff937d +Author: Patrik Oldsberg +Date: Wed Nov 10 11:56:29 2021 +0100 + + app-defaults: clean up dependencies + + Signed-off-by: Patrik Oldsberg + +commit 465dffb05c704d8922acd2ea58383b357be93a41 +Author: Patrik Oldsberg +Date: Wed Nov 10 11:48:52 2021 +0100 + + core-app-api,app-defaults: API report and doc fixups + + Signed-off-by: Patrik Oldsberg + +commit f2bd2419726a0025b1af699f437f628556bb1e3b +Author: Patrik Oldsberg +Date: Wed Nov 10 11:41:31 2021 +0100 + + docs: introduce deprecation docs + app-theme deprecation + + Signed-off-by: Patrik Oldsberg + +commit 03da4c09469ddf94760925d5b9d20f233eedfa78 +Author: Patrik Oldsberg +Date: Wed Nov 10 11:23:46 2021 +0100 + + create-app: add app-defaults dependency to app + notice in changeset + + Signed-off-by: Patrik Oldsberg + +commit c98c5c3d000ad5452a85b8054afca1e1fd3b0f1d +Author: Patrik Oldsberg +Date: Wed Nov 10 10:40:41 2021 +0100 + + core-app-api: switch auth provider icons to be empty by default + + Signed-off-by: Patrik Oldsberg + +commit 7ca03b85ab02792e2af5c5909c01610de0166123 +Author: Patrik Oldsberg +Date: Wed Nov 10 10:25:53 2021 +0100 + + core-app-api: createSpecializedApp returns a BackstageApp + + Signed-off-by: Patrik Oldsberg + +commit a3b6707eb2f6a6e793ccd27906ebd62c2beba800 +Author: Patrik Oldsberg +Date: Wed Nov 10 10:25:29 2021 +0100 + + app-defaults: bump internal deps + + Signed-off-by: Patrik Oldsberg + +commit 60e5d356cbab4f5049111cacd57e374bca1ec74f +Author: Patrik Oldsberg +Date: Wed Nov 10 01:30:07 2021 +0100 + + core-app-api: add missing core feature icons + move icon things around a bit + + Signed-off-by: Patrik Oldsberg + +commit c1578d609b1daf42f3aaece1eb69a9fbdf391f15 +Author: Patrik Oldsberg +Date: Fri Oct 29 16:49:45 2021 +0200 + + update API reports for createApp split + + Signed-off-by: Patrik Oldsberg + +commit b7958c36dbc2608fb18c75b2f87ed7823b064b7f +Author: Patrik Oldsberg +Date: Fri Oct 29 16:46:37 2021 +0200 + + core-components: wrap page stories in test app + + Signed-off-by: Patrik Oldsberg + +commit 687fca4ff76d9a7bf8fb9edf20f3ce39d421ee0b +Author: Patrik Oldsberg +Date: Fri Oct 29 16:06:42 2021 +0200 + + changesets,create-app: update for createApp split + + Signed-off-by: Patrik Oldsberg + +commit 0fb57d28e36d6c26be419e431c61665daf4eb944 +Author: Patrik Oldsberg +Date: Thu Oct 28 15:31:59 2021 +0200 + + dev-utils,test-utils,app: update to use app-defaults + + Signed-off-by: Patrik Oldsberg + +commit 1c3413bab07bdb45ea8ddca78aaf2a3f9c4e074c +Author: Patrik Oldsberg +Date: Thu Oct 28 13:49:25 2021 +0200 + + app-defaults,core-app-api: refactor into createApp/createSpecializedApp split + + Signed-off-by: Patrik Oldsberg + +commit 42175496486ed1f79bb4f1a0adf5eba4a1f484ef +Author: Patrik Oldsberg +Date: Wed Oct 27 21:26:32 2021 +0200 + + core-app-api: rename PrivateAppImpl to AppManager + + Signed-off-by: Patrik Oldsberg + +commit 3fb98cfcbf63d7b71dba14df33513dd20ca319ec +Author: Patrik Oldsberg +Date: Wed Oct 27 21:21:58 2021 +0200 + + app-defaults: move defaultConfigLoader back to core-app-api + + Signed-off-by: Patrik Oldsberg + +commit 5bfe8917c79531f2f1ab7f969390819f7ad6e48b +Author: Patrik Oldsberg +Date: Wed Oct 27 21:20:57 2021 +0200 + + app-defaults: move AppThemeProvider back to core-app-api + + Signed-off-by: Patrik Oldsberg + +commit 60d1b30c215d6a0e7843447b7833229d7a7769e2 +Author: Patrik Oldsberg +Date: Wed Oct 27 19:35:39 2021 +0200 + + app-defaults: refactor things into folders and move things closer to home + + Signed-off-by: Patrik Oldsberg + +commit a82aa54e272b03fb8b8d713909d5895f2b45e5f0 +Author: Patrik Oldsberg +Date: Wed Oct 27 19:10:40 2021 +0200 + + packages: new app-defaults package + move over withDefaults + + Signed-off-by: Patrik Oldsberg + +commit 8921944da11d2f1d90c480c0e62a4d96455a6f1a +Author: Patrik Oldsberg +Date: Tue Oct 26 21:31:28 2021 +0200 + + core-components: tweak exports and update api reports + + Signed-off-by: Patrik Oldsberg + +commit 7e0b26dec09f87b535406b9e99c8a082fc5b60b3 +Author: Patrik Oldsberg +Date: Tue Oct 26 21:02:52 2021 +0200 + + core-app-api: remove duplicate AppThemeProvider + + Signed-off-by: Patrik Oldsberg + +commit ab73a5216796a7ee62ca8af078b8b79a34292208 +Author: Patrik Oldsberg +Date: Tue Oct 26 19:59:47 2021 +0200 + + core-*: update API reports + + Signed-off-by: Patrik Oldsberg + +commit 2db99234966ab3e7c964de3d8acb4f21241ed350 +Author: Patrik Oldsberg +Date: Tue Oct 26 19:45:52 2021 +0200 + + changesets: updated changesets to use withDefaults + + Signed-off-by: Patrik Oldsberg + +commit 44976c138cc491d577386a551ccd58e747e112ab +Author: Patrik Oldsberg +Date: Tue Oct 26 19:46:26 2021 +0200 + + core-app-api, create-app, dev-utils: updates to use withDefaults + + Signed-off-by: Patrik Oldsberg + +commit e551a44c65bb06a2e45c08706850925ba2e50de1 +Author: Patrik Oldsberg +Date: Tue Oct 26 19:08:50 2021 +0200 + + core-components: provide withDefaults and work around type duplication + + Co-authored-by: Johan Haals + Signed-off-by: Patrik Oldsberg + +commit 9ddec7eaf14cfc77bc8244fd93023efecf25a86d +Author: Patrik Oldsberg +Date: Fri Oct 22 14:46:33 2021 +0200 + + core-{app,plugin}-api: refactor AppTheme to use provider + defaultAppThemes + + Co-authored-by: Johan Haals + Signed-off-by: Patrik Oldsberg + +commit cb77f4599a2f9433bf0e87cc4350d912913ba216 +Author: Patrik Oldsberg +Date: Fri Oct 22 13:59:41 2021 +0200 + + core-app-api: deprecate not passing in icons + add defaultAppIcons() + + Co-authored-by: Johan Haals + Signed-off-by: Patrik Oldsberg + +commit 014cbf8cb9f91bbf5961aca0a5b4839c806729dd +Author: Patrik Oldsberg +Date: Mon Oct 11 22:10:47 2021 +0200 + + core-app-api: deprecate dependency on core-components + + Signed-off-by: Patrik Oldsberg + +commit 0a7a2eba76febb07a613fb76ccf4ef6a8208ed02 +Author: Marley Powell +Date: Thu Nov 11 16:22:25 2021 +0000 + + fix: Fixed issue with running a subset of stories caused by incorrectly resolved paths. + + Signed-off-by: Marley Powell + +commit 2b5ccd2964ec271f68bc618bc75e4d09372ee95a +Author: Andre Wanlin +Date: Thu Nov 11 10:02:29 2021 -0600 + + Aded API Report and changeset + + Signed-off-by: Andre Wanlin + +commit 6275236aab0f896ed0f2266a3492efb3e7abb5ec +Author: Andre Wanlin +Date: Thu Nov 11 10:01:58 2021 -0600 + + Updated story to handle date changes + + Signed-off-by: Andre Wanlin + +commit e3ca78b5a601dc51f2b2cc086e284d34d1fba9c3 +Author: Philipp Hugenroth +Date: Thu Nov 11 16:48:03 2021 +0100 + + Run prettier on default-app + + Signed-off-by: Philipp Hugenroth + +commit 7715cadf2daa5c7f8065c96795c7baf3a8c19999 +Author: Greg Bomkamp +Date: Thu Nov 11 10:37:27 2021 -0500 + + Update config option from usePluginSchemas to pluginDivisionMode, Clean up Var names for clarify, fix tests + + Signed-off-by: Greg Bomkamp + +commit 94dc1fedee26f05583697d54c14f7c8a025372f0 +Author: Andre Wanlin +Date: Thu Nov 11 09:31:40 2021 -0600 + + Improved readability and used DateTime consistently + + Signed-off-by: Andre Wanlin + +commit a2637ce8936b92e48275502b37c88dd6e82de0ec +Author: Andre Wanlin +Date: Thu Nov 11 09:18:50 2021 -0600 + + Cleaned up tests + + Signed-off-by: Andre Wanlin + +commit f979fcf519289c313df53c66ade9304ae11ff654 +Merge: 4adcd21fbb a1c4c8de3d +Author: Patrik Oldsberg +Date: Thu Nov 11 16:18:08 2021 +0100 + + Merge pull request #7986 from backstage/hhogg/fix-snyk-github-issue-script + + Fixes a minor markdown foobar in the body output + +commit aa2e6117070ec5ba4539849709a5ddd308d1ab42 +Author: Philipp Hugenroth +Date: Thu Nov 11 16:03:50 2021 +0100 + + Update api report after merge + + Signed-off-by: Philipp Hugenroth + +commit 24f5f29174743c4d4d5dc797c992ace56a73905b +Merge: 2e2cc6ba54 4adcd21fbb +Author: Andre Wanlin <67169551+awanlin@users.noreply.github.com> +Date: Thu Nov 11 09:01:07 2021 -0600 + + Merge branch 'backstage:master' into topic/improve-azure-devops-date-handling + +commit 17430b083c5cdc6d23b02e20b8594a8a422031c4 +Merge: 39f1c06325 600e14ef29 +Author: Philipp Hugenroth +Date: Thu Nov 11 15:58:37 2021 +0100 + + Merge branch 'master' into mobile-sidebar + + Signed-off-by: Philipp Hugenroth + +commit 4adcd21fbb7aac2e47204dc335a5b1ab04d17f88 +Merge: 600e14ef29 7e18ed7f29 +Author: Fredrik Adelöw +Date: Thu Nov 11 15:52:26 2021 +0100 + + Merge pull request #7935 from backstage/freben/userflags + + Remove the unused UserFlags type + +commit 600e14ef290534db2c48bb5a714febf20afbc0ee +Merge: 23287deaa8 ec78607541 +Author: Fredrik Adelöw +Date: Thu Nov 11 15:25:03 2021 +0100 + + Merge pull request #7988 from backstage/freben/bump-prompts + + bump prompts + +commit 9a84e7f4e967fd880c20b51ed85c6da4102fb176 +Author: Marley Powell +Date: Thu Nov 11 14:19:26 2021 +0000 + + chore: Updated `api-report`. + + Signed-off-by: Marley Powell + +commit 23287deaa8bd0f2bbc9dcb5856d775ed79c990df +Merge: ac8af4bd6f 03fdccacb7 +Author: Fredrik Adelöw +Date: Thu Nov 11 15:18:15 2021 +0100 + + Merge pull request #7987 from backstage/freben/bump-nth-check + + partially bump nth-check + +commit d75972b3525b465afb28cf65538599784bd6a093 +Author: Marley Powell +Date: Thu Nov 11 14:09:01 2021 +0000 + + chore: Updated `api-report`. + + Signed-off-by: Marley Powell + +commit ac8af4bd6f4346918010f477b83fe15b0d2fe33d +Merge: c619adc19e c416ae1851 +Author: Fredrik Adelöw +Date: Thu Nov 11 15:05:49 2021 +0100 + + Merge pull request #7985 from backstage/freben/bump-npmcli-git + + bump @npmcli/git + +commit d3f3e3dc7bc26a540eae9df7d77ecbe38db9f0c7 +Author: Marley Powell +Date: Thu Nov 11 14:04:50 2021 +0000 + + fix: Fixed issue with `AutoCompleteIcon` component props. + + Signed-off-by: Marley Powell + +commit cfa98e33f93f30504446d13a77d432e8b1f9ceeb +Author: Marley Powell +Date: Thu Nov 11 13:58:00 2021 +0000 + + fix: Added `key` properties to list items. + + Signed-off-by: Marley Powell + +commit b585da59e1361fc215a4ef8db92e900b7b282e39 +Author: Marley Powell +Date: Thu Nov 11 13:56:14 2021 +0000 + + refactor: Reworked policy icon logic. + + Signed-off-by: Marley Powell + +commit c619adc19e4610861dbad5111484fd94b6a1edfb +Merge: 018f5a4b80 71264599e1 +Author: Fredrik Adelöw +Date: Thu Nov 11 14:48:51 2021 +0100 + + Merge pull request #7983 from backstage/freben/bump-xss + + bump xss + +commit 051561b635b7bee85a1af15202269cf486be2527 +Author: Marley Powell +Date: Thu Nov 11 13:41:55 2021 +0000 + + feat: Added initial logic to `PullRequestsPage` for displaying pull request groups. + + Signed-off-by: Marley Powell + +commit 39f1c063258c9e1ba124711a2f99cbf94211b15c +Author: Philipp Hugenroth +Date: Thu Nov 11 14:35:39 2021 +0100 + + Adjust mobile-sidebar to updated code base + + Remove to deep changes + + Signed-off-by: Philipp Hugenroth + +commit ec786075419e200d7b8e37b7aeebc51919e8d184 +Author: Fredrik Adelöw +Date: Thu Nov 11 14:34:42 2021 +0100 + + bump prompts + + Signed-off-by: Fredrik Adelöw + +commit 03fdccacb7825955f8fd79b3d164968f62de60d2 +Author: Fredrik Adelöw +Date: Thu Nov 11 14:26:49 2021 +0100 + + partially bump nth-check + + Signed-off-by: Fredrik Adelöw + +commit 018f5a4b80a862f5e54f569d5607ccfea3a068fb +Merge: 34a04fb886 33fa4487e6 +Author: Fredrik Adelöw +Date: Thu Nov 11 14:25:57 2021 +0100 + + Merge pull request #7982 from backstage/freben/bump-prismjs + + bump refractor and, hence, prismjs + +commit 34a04fb8865f708a526d461314aaf76040b51ba2 +Merge: 5bdaccc40b aae27a554e +Author: Fredrik Adelöw +Date: Thu Nov 11 14:25:51 2021 +0100 + + Merge pull request #7981 from backstage/freben/bump-uglify-js + + bump uglify-js + +commit a1c4c8de3df2cd2987bafc5dcd3fb0cd7a130c7a +Author: Harry Hogg +Date: Thu Nov 11 13:25:38 2021 +0000 + + Fixes a minor markdown foobar in the body output + + Signed-off-by: Harry Hogg + +commit c416ae18517795d97bc870118bd70cf5864f043a +Author: Fredrik Adelöw +Date: Thu Nov 11 14:14:44 2021 +0100 + + bump @npmcli/git + + Signed-off-by: Fredrik Adelöw + +commit 5bdaccc40b4a814cf0b45d429f15a3afacc2f60b (tag: v0.54.0, tag: release-2021-11-11) +Merge: ac511f98c4 3369ade8c0 +Author: Patrik Oldsberg +Date: Thu Nov 11 14:14:11 2021 +0100 + + Merge pull request #7823 from backstage/changeset-release/master + + Version Packages + +commit 71264599e142516b7b35b83a8867e29417007bbb +Author: Fredrik Adelöw +Date: Thu Nov 11 14:05:45 2021 +0100 + + bump xss + + Signed-off-by: Fredrik Adelöw + +commit 33fa4487e6201fac5449100a0a10e7a4b3e04bdf +Author: Fredrik Adelöw +Date: Thu Nov 11 13:46:34 2021 +0100 + + bump refractor and, hence, prismjs + + Signed-off-by: Fredrik Adelöw + +commit aae27a554e4a56b02a05c9905786e4424e3eb3a0 +Author: Fredrik Adelöw +Date: Thu Nov 11 13:38:56 2021 +0100 + + bump uglify-js + + Signed-off-by: Fredrik Adelöw + +commit 367cd7a2ac562957749b82c273f9365fb10e465d +Author: Marley Powell +Date: Thu Nov 11 12:22:59 2021 +0000 + + refactor: Updated type properties to be optional instead of undefined union. + + Signed-off-by: Marley Powell + +commit 4e0fc8f8a4f292fc41e1c6fd8990be18c493e671 +Author: Marley Powell +Date: Thu Nov 11 12:20:17 2021 +0000 + + test: Added unit tests for `utils`. + + Signed-off-by: Marley Powell + +commit 6ba700165964b79ceb2ea7ccca4a805046bdc610 +Author: Marley Powell +Date: Thu Nov 11 12:19:01 2021 +0000 + + feat: Created `utils` file for util functions. + + Signed-off-by: Marley Powell + +commit 3369ade8c09b3000a723ae40fa37eca8e924db00 +Author: github-actions[bot] +Date: Thu Nov 11 11:07:58 2021 +0000 + + Version Packages + +commit ac511f98c433f0ed8483a6713e5110333ce11738 +Merge: 53c9ad7e04 54c5be2d6d +Author: Oliver Sand +Date: Thu Nov 11 12:03:00 2021 +0100 + + Merge pull request #7865 from SDA-SE/feat/api-docs-customization + + Lazy load API definition widgets + +commit 53c9ad7e04ae49bd17a0ef86f18b6c31cf6cec3b +Author: Kim Jin <28945404+kim5566@users.noreply.github.com> +Date: Thu Nov 11 21:45:40 2021 +1100 + + Update TechDocs Headings css font weight (#7931) + + * update headings style + + Signed-off-by: kim5566 <28945404+kim5566@users.noreply.github.com> + + * add changeset + + Signed-off-by: kim5566 <28945404+kim5566@users.noreply.github.com> + + * update changeset + + Signed-off-by: kim5566 <28945404+kim5566@users.noreply.github.com> + + * rename changeset + + Signed-off-by: kim5566 <28945404+kim5566@users.noreply.github.com> + +commit 704b267e1c794e81bb5eed09dd24301b920c6928 +Author: Emma Indal +Date: Thu Nov 11 11:43:25 2021 +0100 + + add changeset + + Signed-off-by: Emma Indal + +commit abe2cc4b00f00c441e677e04692c743709432b8b +Author: Emma Indal +Date: Thu Nov 11 11:34:32 2021 +0100 + + add search modal to storybook + + Signed-off-by: Emma Indal + +commit 54c5be2d6d89d068010bcf3a8c0a6eeaae4298b9 +Author: Oliver Sand +Date: Thu Nov 11 11:33:12 2021 +0100 + + Fix styling issues of swagger-ui + + Signed-off-by: Oliver Sand + +commit b0efce13becbb8e46115c4bc02b8a00124dcb066 +Author: Emma Indal +Date: Thu Nov 11 10:44:11 2021 +0100 + + update terminology of pager buttons, update size and margin + + Signed-off-by: Emma Indal + +commit e44d62dfe76a4ed7da742d803eccfa87668bb290 +Author: Emma Indal +Date: Thu Nov 11 10:43:05 2021 +0100 + + close modal on view all results + + Signed-off-by: Emma Indal + +commit 3323bd8a9d489c11f6d437e7c59f06e139c16cc4 +Author: Emma Indal +Date: Thu Nov 11 10:41:58 2021 +0100 + + decrease debounce time + + Signed-off-by: Emma Indal + +commit 110166bc8a33607833ad0ebbff12e6a1465e04cc +Author: Emma Indal +Date: Thu Nov 11 10:39:53 2021 +0100 + + focus search input field on mount + + Signed-off-by: Emma Indal + +commit 87d38d61e50a63ef6042b2e3b55248164b32af77 +Merge: 62a1c7417d 8af66229e7 +Author: Patrik Oldsberg +Date: Thu Nov 11 10:25:00 2021 +0100 + + Merge pull request #7911 from backstage/dependabot/npm_and_yarn/spotify/eslint-config-react-12.0.0 + + build(deps): bump @spotify/eslint-config-react from 10.0.0 to 12.0.0 + +commit 62a1c7417dd4cc4cadca90e05572aedf825b2c3c +Merge: 6fab898841 79dc3f9a29 +Author: Patrik Oldsberg +Date: Thu Nov 11 10:11:50 2021 +0100 + + Merge pull request #7945 from backstage/hhogg/fix-snyk-github-issue-workflow-5 + + Pass the GH token as an ENV to the Github step of the Snyk workflow + +commit 6fab898841046ba8f6ab54d4edde828803ea8fa9 +Merge: 5dcea2586c f1403fac64 +Author: Fredrik Adelöw +Date: Thu Nov 11 10:11:30 2021 +0100 + + Merge pull request #7932 from backstage/jhaals/core-plugin-api-no-name + + core-plugin-api: Deprecate use of extensions without name + +commit e849f9cc0a4a7794c02c80bfede693dbe51d756d +Author: Oliver Sand +Date: Tue Nov 2 10:00:10 2021 +0100 + + Use `` instead of `` in combination with `Suspense` + + Signed-off-by: Oliver Sand + +commit 7e5bd18cf7774f07eb54c072d2e48de73ebee899 +Author: Oliver Sand +Date: Tue Nov 2 09:58:11 2021 +0100 + + Adjust to review comments + + Signed-off-by: Oliver Sand + +commit fe5738fe1c8dd286f374bb0fe8f81e2009210e56 +Author: Oliver Sand +Date: Mon Nov 1 16:25:46 2021 +0100 + + Lazy load `LazyLog` as it is rarely used + + Signed-off-by: Oliver Sand + +commit 5dcea2586c79f1d41609d70c9139fdc204fdc2d1 +Author: Rod Machen +Date: Thu Nov 11 02:26:15 2021 -0600 + + Add Search Modal component (#7316) + + Signed-off-by: rodmachen + +commit 79dc3f9a29603dc7866a2907acb8f01bc0e55564 +Author: Harry Hogg +Date: Thu Nov 11 08:09:01 2021 +0000 + + Pass the GH token as an ENV to the Github step of the Snyk workflow + + Signed-off-by: Harry Hogg + +commit ac4eeb710259b9216c19e48ee5fb3faa7aa7c122 +Author: Anthony Ikeda +Date: Tue Nov 9 11:07:14 2021 -0800 + + More consistent formatting of the Note block + + Signed-off-by: Anthony Ikeda + +commit 02ebae6ffd559a5a2ceb82fcf678f97ddf76fc98 +Author: Anthony Ikeda +Date: Tue Nov 9 11:58:58 2021 -0800 + + Removed code block at top and altered the main registration code block to include the builtInActions registration + + Signed-off-by: Anthony Ikeda + +commit 677da179d83a014573062230c54768449320cd46 +Author: Anthony Ikeda +Date: Tue Nov 9 11:07:14 2021 -0800 + + More consistent formatting of the Note block + + Signed-off-by: Anthony Ikeda + +commit 55ced4d6288ff08919882846adf79a9700a746e4 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Thu Nov 11 04:08:39 2021 +0000 + + build(deps): bump @rollup/plugin-commonjs from 17.1.0 to 21.0.1 + + Bumps [@rollup/plugin-commonjs](https://github.com/rollup/plugins/tree/HEAD/packages/commonjs) from 17.1.0 to 21.0.1. + - [Release notes](https://github.com/rollup/plugins/releases) + - [Changelog](https://github.com/rollup/plugins/blob/master/packages/commonjs/CHANGELOG.md) + - [Commits](https://github.com/rollup/plugins/commits/commonjs-v21.0.1/packages/commonjs) + + --- + updated-dependencies: + - dependency-name: "@rollup/plugin-commonjs" + dependency-type: direct:production + update-type: version-update:semver-major + ... + + Signed-off-by: dependabot[bot] + +commit 2e2cc6ba540c56a4f88959b9fb52c87617323a76 +Merge: 7e966461d0 f085a4fb67 +Author: Andre Wanlin <67169551+awanlin@users.noreply.github.com> +Date: Wed Nov 10 12:18:42 2021 -0600 + + Merge branch 'backstage:master' into topic/improve-azure-devops-date-handling + +commit 7e966461d09980b11cc634767b12cbc88eebb23c +Author: Andre Wanlin +Date: Wed Nov 10 12:17:58 2021 -0600 + + Use string for Date and let client handle display + + Signed-off-by: Andre Wanlin + +commit f085a4fb67b0d26e6d617846c9f1c44729dae57b +Merge: 88fe804460 36099bf941 +Author: Patrik Oldsberg +Date: Wed Nov 10 19:07:41 2021 +0100 + + Merge pull request #7732 from tragiclifestories/gauge-color + + Allow overriding colour in Gauge components + +commit 88fe804460f4bf10eb4ee545a519fc13d4e16155 +Merge: a51e11c30d b393c4d4be +Author: Patrik Oldsberg +Date: Wed Nov 10 18:40:30 2021 +0100 + + Merge pull request #7937 from backstage/rugvip/configcheck + + cli: fix for config:check only validating frontend config + +commit 38d6df6bb9ecdce798ea9033f5b68490dcfe9823 +Author: Dominik Schwank +Date: Thu Nov 4 16:05:15 2021 +0100 + + feat(catalog): remove 'View Api' link from AboutCard + + Signed-off-by: Dominik Schwank + +commit 8af66229e7535daa0269f8bf979d942163b457b1 +Author: Patrik Oldsberg +Date: Tue Nov 9 19:38:12 2021 +0100 + + add changeset for @spotify/eslint-config-react bump + + Signed-off-by: Patrik Oldsberg + +commit 88677aee18aeb59b2b2e1665bc61aa08a57bf20a +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Tue Nov 9 04:09:19 2021 +0000 + + build(deps): bump @spotify/eslint-config-react from 10.0.0 to 12.0.0 + + Bumps [@spotify/eslint-config-react](https://github.com/spotify/web-scripts) from 10.0.0 to 12.0.0. + - [Release notes](https://github.com/spotify/web-scripts/releases) + - [Changelog](https://github.com/spotify/web-scripts/blob/master/CHANGELOG.md) + - [Commits](https://github.com/spotify/web-scripts/compare/v10.0.0...v12.0.0) + + --- + updated-dependencies: + - dependency-name: "@spotify/eslint-config-react" + dependency-type: direct:production + update-type: version-update:semver-major + ... + + Signed-off-by: dependabot[bot] + +commit 7e7e98f8f2de6396e5bbb9505c19a3cf5552d5a7 +Author: Marley Powell +Date: Wed Nov 10 16:37:03 2021 +0000 + + feat: Created new hooks for loading API data. + + Signed-off-by: Marley Powell + +commit 486b0251b70eb13392988f9c1633cff1611db29a +Author: Andre Wanlin +Date: Wed Nov 10 10:25:07 2021 -0600 + + Provided proper type + + Signed-off-by: Andre Wanlin + +commit 36099bf941649d26b591007978337a7d15a7b7f3 +Author: James Turley +Date: Wed Nov 10 16:18:34 2021 +0000 + + Update API report + + Signed-off-by: James Turley + +commit a51e11c30d718ea7c995b6b1ab15fcefa6bb6226 +Merge: f323afc5da 145913e6a0 +Author: Tim Hansen +Date: Wed Nov 10 09:07:27 2021 -0700 + + Merge pull request #7938 from backstage/timbonicus/missing-gitlab-link + + Add missing link to Gitlab discovery + +commit 145913e6a0bfe4cf4df7f955b262d65b0aac5d7c +Author: Tim Hansen +Date: Wed Nov 10 08:25:58 2021 -0700 + + Add missing link to Gitlab discovery + + Signed-off-by: Tim Hansen + +commit b393c4d4be0ddbf4ce8c343ea95b8a57479b07c6 +Author: Patrik Oldsberg +Date: Wed Nov 10 14:57:56 2021 +0100 + + cli: fix for config:check only validating frontend config + + Signed-off-by: Patrik Oldsberg + +commit f5e5c297ceb396cb87a3ad0fba734d461da225fb +Author: James Turley +Date: Wed Nov 10 15:19:58 2021 +0000 + + Update changeset to reflect naming changes + + Signed-off-by: James Turley + +commit 14856682398b4214864b30aec366c6a4c2a1b260 +Author: Philipp Hugenroth +Date: Wed Nov 10 16:04:32 2021 +0100 + + Cleanup after rebase & adjust components to use class keys + + Signed-off-by: Philipp Hugenroth + +commit 135d2abcf2b3e75e20558baf638383627c7b9b30 +Author: Marley Powell +Date: Wed Nov 10 15:16:16 2021 +0000 + + feat: Created `getDashboardPullRequests` and `getAllTeams` methods in `AzureDevOpsClient`. + + Signed-off-by: Marley Powell + +commit 1e3388a0f47843fabbb1b80515514145f5879845 +Author: James Turley +Date: Wed Nov 10 15:13:03 2021 +0000 + + Fixup and rename Gauge color getter function types + + Signed-off-by: James Turley + +commit 96c562bb22f32ac3a8ae1336e250071430128752 +Author: Marley Powell +Date: Wed Nov 10 14:53:40 2021 +0000 + + refactored: Improved types and small code improvements. + + Signed-off-by: Marley Powell + +commit 2e641b622b02b256240f5664a782a820e20cc617 +Author: James Turley +Date: Wed Nov 10 14:49:15 2021 +0000 + + Only return string from color getter type + + Signed-off-by: James Turley + +commit 60f5d96953210a320934c8b248b0f0f41a02a42e +Author: James Turley +Date: Wed Nov 10 14:43:24 2021 +0000 + + Rename gauge props to GaugeProps and export + + Signed-off-by: James Turley + +commit 6df5e58f7b86ce476a768794492f482fff5c72fe +Author: James Turley +Date: Fri Nov 5 12:46:49 2021 +0000 + + Modify exported getProgressColor to accept arguments object + + Signed-off-by: James Turley + +commit e0861b92ffd3435deb02288e1cf3d34ea309a121 +Author: James Turley +Date: Thu Nov 4 16:35:15 2021 +0000 + + Add prop to override color selection in gauge components + + Signed-off-by: James Turley + +commit df996334277022afffefaa4fc216f45614e27e4e +Author: Andre Wanlin +Date: Wed Nov 10 08:19:47 2021 -0600 + + Updated to import from azure-devops-common + + Signed-off-by: Andre Wanlin + +commit f323afc5daadcf7c06fc0dd73404ac4eff49244b +Merge: 056c85aa72 1d0e5c55f8 +Author: Fredrik Adelöw +Date: Wed Nov 10 15:10:03 2021 +0100 + + Merge pull request #7934 from backstage/fix-snyk-github-issue-workflow-4 + + Install dependeices before trying to use them in the Snyk github issu… + +commit 8671e8e9f9e7fef7e473921361aaa8749beba534 +Author: Andre Wanlin +Date: Wed Nov 10 08:05:53 2021 -0600 + + Ran prettier to fix CI failure + + Signed-off-by: Andre Wanlin + +commit 80cfeaec664482aaa05c076e8832dde0f4f1f05b +Author: Philipp Hugenroth +Date: Tue Nov 9 15:45:38 2021 +0100 + + Update imports & api-reports + + Signed-off-by: Philipp Hugenroth + +commit e6fd475243037ab474630e41f8808a3894c926b1 +Author: tudi2d +Date: Wed Sep 29 13:49:36 2021 +0200 + + Fix api-report... + + Signed-off-by: tudi2d + +commit 84865c1e1c474cb43650d0dc21329f190c569c92 +Author: tudi2d +Date: Thu Sep 23 23:45:41 2021 +0200 + + Fix linting error + + Signed-off-by: tudi2d + +commit 7e18ed7f29d1dfb4dbc8a290386ecb806619db40 +Author: Fredrik Adelöw +Date: Wed Nov 10 14:29:35 2021 +0100 + + Remove the unused UserFlags type + + Signed-off-by: Fredrik Adelöw + +commit 5885ac0f7d0dd9fc47d0efb7fec76e093c0ca032 +Author: tudi2d +Date: Mon Sep 6 12:34:00 2021 +0200 + + Fix SearchPage imports + + Signed-off-by: tudi2d + +commit c260b564351848d6b792460172a165b1fe468513 +Author: Philipp Hugenroth +Date: Thu Aug 26 16:06:35 2021 +0200 + + Fix hidden text for mobile sidebar + + Signed-off-by: Philipp Hugenroth + +commit 5707087ba7d2f6985577cdbae870a7ad35a09315 +Author: Philipp Hugenroth +Date: Wed Aug 25 14:23:59 2021 +0200 + + Improve Sidebar Storybook + + Signed-off-by: Philipp Hugenroth + +commit 19c9fdc2584a9e24d9501fe55a99a91c740676cc +Author: Philipp Hugenroth +Date: Wed Aug 25 10:07:49 2021 +0200 + + Cleanup before review + + Signed-off-by: Philipp Hugenroth + +commit 8a08a9e7af3b5b908a0bb9d4fc22b0cd6c855187 +Author: Philipp Hugenroth +Date: Wed Aug 25 00:26:48 2021 +0200 + + Add tests for MobileSidebar & SidebarGroup + + Signed-off-by: Philipp Hugenroth + +commit 29715dd22bd7778f63b45074cbd00973493d799f +Author: Philipp Hugenroth +Date: Mon Aug 23 14:04:10 2021 +0200 + + Generate api-report + + Signed-off-by: Philipp Hugenroth + +commit aa0d73424a86408a5aa236a4fe3cab49b5360c1e +Author: Philipp Hugenroth +Date: Mon Aug 23 13:18:52 2021 +0200 + + Add priority prop to add possibility for rearranging SidebarGroups for the mobile sidebar + + Signed-off-by: Philipp Hugenroth + +commit 5efa7bc8509f083ee2688aac681da3f424e71ba8 +Author: Philipp Hugenroth +Date: Mon Aug 23 10:14:06 2021 +0200 + + Prettier + + Signed-off-by: Philipp Hugenroth + +commit 4313e9167af56f875e7791c83bd0ed3fc569b541 +Author: Philipp Hugenroth +Date: Mon Aug 23 10:00:17 2021 +0200 + + Prettier fix create-app templates + + Signed-off-by: Philipp Hugenroth + +commit 958e0b46479aa28f58497450a983868852637897 +Author: Philipp Hugenroth +Date: Fri Aug 20 11:28:47 2021 +0200 + + Adjust create-app & api-report + + Signed-off-by: Philipp Hugenroth + +commit 5985135e250b1d9e405ae5716a8a062d012014ca +Author: Andre Wanlin +Date: Wed Nov 10 07:53:32 2021 -0600 + + Moved box to be inside row,isDraft condition + + Signed-off-by: Andre Wanlin + +commit 6d56f20ae6e5184d00aa89a149bdde9ce532ba4b +Author: Andre Wanlin +Date: Wed Nov 10 07:46:29 2021 -0600 + + Improved naming based on feedback and a few other improvements + + Signed-off-by: Andre Wanlin + +commit 65e1a35c0fa05c295f84bed6292d22f2e9103365 +Author: Philipp Hugenroth +Date: Fri Aug 20 11:00:21 2021 +0200 + + Update documentation & add changeset + + Signed-off-by: Philipp Hugenroth + +commit 9ae9f6cf75a95846a39882d7921fbd6f7d6cb2b3 +Author: Andre Wanlin +Date: Wed Nov 10 07:31:11 2021 -0600 + + Minor changes after rebase to latest master + + Signed-off-by: Andre Wanlin + +commit 746af79164987d94d7ac891580fd974f5b379859 +Author: Philipp Hugenroth +Date: Thu Aug 19 13:56:04 2021 +0200 + + Align to current screen size + + Signed-off-by: Philipp Hugenroth + +commit d5f08f4b03505702bdc291742a7026c437f05821 +Author: Philipp Hugenroth +Date: Thu Aug 19 12:33:34 2021 +0200 + + Adjust display style & selected behaviour + + Signed-off-by: Philipp Hugenroth + +commit cbebaa841bd6bce99011cd17469205af58815a90 +Author: Philipp Hugenroth +Date: Wed Aug 18 10:38:55 2021 +0200 + + Refactored select behaviour to be better readable + + - Remove header from Search & Settings on mobile + + Co-authored-by: Tejas Kumar + Signed-off-by: Philipp Hugenroth + +commit 772995ac5e3199901fcd9625f6e8f5afcbb68b7d +Author: Philipp Hugenroth +Date: Mon Aug 16 11:23:56 2021 +0200 + + Implement a grouping for mobile sidebar + + Signed-off-by: Philipp Hugenroth + +commit b7c1a5a040bb2151aea39b68e9815d67bcb46e7f +Author: Philipp Hugenroth +Date: Wed Aug 11 20:11:22 2021 +0200 + + Add SidebarGroup & BottomNavigation components + + Signed-off-by: Philipp Hugenroth + +commit aff67e97eb83802872789552c6052dd53fcf26a2 +Author: Andre Wanlin +Date: Mon Nov 8 11:41:52 2021 -0600 + + Small refactor based on feedback + + Signed-off-by: Andre Wanlin + +commit 7468647b37542d29df4bdbf083d7d4f098d1a1ed +Author: Andre Wanlin +Date: Wed Nov 3 09:28:34 2021 -0500 + + Extracted duration function and related tests + + Signed-off-by: Andre Wanlin + +commit a9b7481cd3a08e0b0bb1ae4594e55b9cbb47b039 +Author: Andre Wanlin +Date: Wed Nov 3 08:52:42 2021 -0500 + + Refactored icons based on feedback + + Signed-off-by: Andre Wanlin + +commit 12d43328eabed039dd0f07b077af4c8446db7e0f +Author: Andre Wanlin +Date: Wed Nov 3 08:11:36 2021 -0500 + + Clean up based on feedback + + Signed-off-by: Andre Wanlin + +commit 920fcd7fadb82893ac671a002a36a8459e8c5d25 +Author: Andre Wanlin +Date: Sun Oct 31 13:54:09 2021 -0500 + + Reverted accidental change + + Signed-off-by: Andre Wanlin + +commit b5eac957f22fa5e76ac16cd9ec463d3e14e156e6 +Author: Andre Wanlin +Date: Sun Oct 31 12:23:49 2021 -0500 + + Added changeset + + Signed-off-by: Andre Wanlin + +commit adcb1fa7a2ffc231ad0eda3bd739d427cc013395 +Author: Andre Wanlin +Date: Sun Oct 31 12:18:33 2021 -0500 + + Added entity pull requests + + Signed-off-by: Andre Wanlin + +commit 1d0e5c55f828d25395ad44a14f0428af8ffe06ca +Author: Harry Hogg +Date: Wed Nov 10 12:36:50 2021 +0000 + + Install dependeices before trying to use them in the Snyk github issue workflow + + Signed-off-by: Harry Hogg + +commit 740e06ca28eeb7ca66828d61af6565fb8843b597 +Author: Mert Can Bilgiç +Date: Wed Nov 10 13:41:46 2021 +0300 + + yarn lock update + + Signed-off-by: Mert Can Bilgiç + +commit 884c6d0bc5c3e2cca96a7f46671b3ccc16bc50c1 +Author: Mert Can Bilgiç +Date: Tue Nov 9 13:08:34 2021 +0300 + + prettier runned + + Signed-off-by: Mert Can Bilgiç + +commit c5e5b7815588a986d4232103b112f6a7542b3f9c +Author: Mert Can Bilgiç +Date: Tue Nov 9 12:51:40 2021 +0300 + + changeset added + + Signed-off-by: Mert Can Bilgiç + +commit c79b30420b462cb39bf8ef1a412072d53aeb13a5 +Author: Mert Can Bilgiç +Date: Tue Nov 9 12:36:47 2021 +0300 + + lowercase routing issue fixed + + Signed-off-by: Mert Can Bilgiç + +commit 41e5f28ab77b8f0b60d2e8d6aba62bcfccc4dd72 +Author: Mert Can Bilgiç +Date: Tue Nov 9 12:36:18 2021 +0300 + + OSS lowercase migration added + + Signed-off-by: Mert Can Bilgiç + +commit f1403fac6437a2726d226d8ebe4eedcba93e0d14 +Author: Johan Haals +Date: Wed Nov 10 11:01:16 2021 +0100 + + Update .changeset/quiet-clocks-push.md + + Signed-off-by: Johan Haals + + Co-authored-by: Fredrik Adelöw + +commit 598057f348028332f2d55dcd59a9f4ac42bdd557 +Author: Johan Haals +Date: Wed Nov 10 10:59:38 2021 +0100 + + Update docs/features/software-catalog/catalog-customization.md + + Signed-off-by: Johan Haals + + Co-authored-by: Fredrik Adelöw + +commit 056c85aa7280245323c2dd97fa3bd32435efc299 +Merge: 12eaaaba28 c41b6ef904 +Author: Fredrik Adelöw +Date: Wed Nov 10 10:25:49 2021 +0100 + + Merge pull request #7933 from backstage/fix-snyk-github-issue-workflow-3 + + Added ts-node as a dependency for the Snyk Github issues sync script + +commit f14ac64f2e8446844a99f639727c3dd3feae125c +Author: Gabriele Mambrini +Date: Mon Nov 8 18:06:53 2021 +0100 + + Use posix normaliser for URL paths + + Signed-off-by: Gabriele Mambrini + +commit 3487920e5e7b705ae96365052ff2b6ff8144b4b5 +Author: Johan Haals +Date: Wed Nov 10 09:49:44 2021 +0100 + + api report + + Signed-off-by: Johan Haals + +commit c41b6ef904650a7880f064a887ca0deb56b15a25 +Author: Harry Hogg +Date: Wed Nov 10 08:36:58 2021 +0000 + + Added ts-node as a dependency for the Snyk Github issues sync script + + Signed-off-by: Harry Hogg + +commit 4a336fd292944b642f57e891cc8e9fbb5a48a5ee +Author: Johan Haals +Date: Wed Nov 10 09:21:02 2021 +0100 + + core-plugin-api: Deprecate use of extensions without name + + Signed-off-by: Johan Haals + +commit f6ba309d9e537f15a2e703702a338b89e294a9cb +Author: Lykke Axlin +Date: Wed Nov 10 08:48:05 2021 +0100 + + add changeset + + Signed-off-by: Lykke Axlin + + Co-authored-by: klaraab + +commit 9391f359d157a94cfcf6bc9d762732ba29a13763 +Merge: 8380792557 12eaaaba28 +Author: Lykke Axlin +Date: Wed Nov 10 08:40:32 2021 +0100 + + Merge branch 'master' of https://github.com/backstage/backstage into bazaar-columns + +commit fdc35dbff7e2226b9230ec8a52552ddb36f2bb73 +Author: Jeremy Guarini +Date: Tue Nov 9 14:18:54 2021 -0800 + + swap out data-grid for material-table + + Signed-off-by: Jeremy Guarini + +commit 12eaaaba28ee9dc316874c318aa7a94ae7d51525 +Merge: 5338468d6c 6d4f06699b +Author: Patrik Oldsberg +Date: Tue Nov 9 20:38:37 2021 +0100 + + Merge pull request #7851 from cmpadden/publisher-object-pattern + + Use Parameter Objects for Publisher Constructors + +commit 6d4f06699b977a7a91bbe95916177b70459a78cd +Author: Colton Padden +Date: Tue Nov 9 13:45:26 2021 -0500 + + note internal refactor of LocalPublish changes and impact on usage + + Signed-off-by: Colton Padden + +commit 5338468d6c4f0fc063eef90d7806c4d4320b1134 +Merge: 02bf9ec142 5826c17b7d +Author: Patrik Oldsberg +Date: Tue Nov 9 19:40:17 2021 +0100 + + Merge pull request #7921 from egnwd/core-table-cellStyle-fn + + [core-components] Allow for material-table cellStyle function from the backstage Table component + +commit 02bf9ec1420e08a5a97e8251c1ab8857f753f76b +Merge: 66912cb80a a197708da9 +Author: Patrik Oldsberg +Date: Tue Nov 9 19:38:33 2021 +0100 + + Merge pull request #7833 from backstage/dependabot/npm_and_yarn/spotify/eslint-config-typescript-12.0.0 + + build(deps): bump @spotify/eslint-config-typescript from 10.0.0 to 12.0.0 + +commit 66912cb80ac4aca504092df20476a6e350c56bad +Merge: f08d90f444 9f3dd76bc7 +Author: Patrik Oldsberg +Date: Tue Nov 9 19:36:25 2021 +0100 + + Merge pull request #7912 from RodionGork/fix/kuber-plugin-pass-id-token-on-getclusters + + fix: kuber plugin pass id token on getClusters req + +commit f08d90f444f88592809fb181d9dbb1d785076938 +Merge: e4989dec38 9df71040e3 +Author: Patrik Oldsberg +Date: Tue Nov 9 19:30:14 2021 +0100 + + Merge pull request #7890 from timja/adjust-graph-processor + + Tweak logic for msgraph catalog ingesting for display names with security groups + +commit a197708da96d8db13fbb45df5f1f99b2854feb91 +Author: Patrik Oldsberg +Date: Tue Nov 9 18:20:26 2021 +0100 + + add changeset for @spotify/eslint-config-typescript bump + + Signed-off-by: Patrik Oldsberg + +commit e4989dec38b95f1ae15fb43cf8177301186f52b2 +Merge: 45b89fed1e 3e0e2f09d5 +Author: Patrik Oldsberg +Date: Tue Nov 9 18:13:10 2021 +0100 + + Merge pull request #7924 from backstage/rugvip/audience + + auth-backend: add forwarding of the SAML audience option + +commit 5b9d1291f73366af41cc5494a693d41f3ed07f86 +Author: Anthony Ikeda +Date: Mon Nov 8 14:21:44 2021 -0800 + + Placed the Custom Actions pre-requisites at the top of the document instead of the middle. These **pre-requisites** are easily missed if developers are writing custom actions. + + Signed-off-by: Anthony Ikeda + +commit 1bd69aa3f3029f3b940e8b20484ea6aea53390fa +Merge: 0d26566f70 45b89fed1e +Author: Marley Powell +Date: Tue Nov 9 15:42:45 2021 +0000 + + Merge branch 'master' of https://github.com/backstage/backstage into marley/7678-pull-request-dashboard + +commit 45b89fed1e2748e9a7d5ad1991201e9576b53eb4 +Merge: db44318508 5ee31f860b +Author: Fredrik Adelöw +Date: Tue Nov 9 16:27:01 2021 +0100 + + Merge pull request #7916 from backstage/eide/firestore-clean-settings + + [auth-backend] Only use settings that have a value when creating a FirestoreKeyStore + +commit 3e0e2f09d516022e8c510bed36baa4a6f8652679 +Author: Patrik Oldsberg +Date: Tue Nov 9 16:25:34 2021 +0100 + + auth-backend: add forwarding of the SAML audience option + + Signed-off-by: Patrik Oldsberg + +commit db44318508900e9e4ce81620afd8910368e6d408 +Merge: c90e5727d4 b152c2a1e4 +Author: Fredrik Adelöw +Date: Tue Nov 9 16:22:41 2021 +0100 + + Merge pull request #7923 from JoThomsen/patch-1 + + Added Signal Iduna to ADOPTERS.md + +commit c90e5727d4ac57cc0d403d5cef6ba6bb0f7519bc +Merge: 9072244108 1921f70aa7 +Author: Ben Lambert +Date: Tue Nov 9 15:37:12 2021 +0100 + + Merge pull request #7920 from backstage/freben/drop-overrides + + revert the graphql package pinning + +commit 907224410817884b070c1cfde4620eec8f59ed28 +Merge: 2dbfa5698e 910a6a435e +Author: Ben Lambert +Date: Tue Nov 9 15:33:45 2021 +0100 + + Merge pull request #7672 from marleypowell/marley/7641-consume-exported-ado-types + + refactor(`@backstage/plugin-azure-devops`): Consume re-exported types from `@backstage/plugin-azure-devops-common`. + +commit b152c2a1e4233a2f1ddc1ad7fef0f7f1c6fe29d9 +Author: Jonas Thomsen +Date: Tue Nov 9 15:25:48 2021 +0100 + + Update ADOPTERS.md + +commit 8380792557d680b9024d957d8714c83e79bebf43 +Author: Lykke Axlin +Date: Tue Nov 9 15:21:06 2021 +0100 + + made responsible field mandatory + + Signed-off-by: Lykke Axlin + + Co-authored-by: klaraab + +commit 71ab8de0494a5001dfd725486f8da2b7f7b2688c +Merge: 57c24468ba 2dbfa5698e +Author: Lykke Axlin +Date: Tue Nov 9 15:11:57 2021 +0100 + + Merge branch 'master' of https://github.com/backstage/backstage into bazaar-columns + +commit 57c24468ba1538ffd16c0de3d64401a692f4f49d +Author: Lykke Axlin +Date: Tue Nov 9 15:08:22 2021 +0100 + + added more fields to a bazaar project + + Signed-off-by: Lykke Axlin + + Co-authored-by: klaraab + +commit 2dbfa5698e0c4f31ca5dbeabe7a83df18734bab0 +Merge: ad4f2bcc11 5725f87e4c +Author: Patrik Oldsberg +Date: Tue Nov 9 14:55:32 2021 +0100 + + Merge pull request #7907 from backstage/rugvip/nonoprivate + + create-app: default to making new plugins private + +commit 1921f70aa744b386b45eb53862f21efbe2c222cb +Author: Fredrik Adelöw +Date: Tue Nov 9 14:50:21 2021 +0100 + + revert the graphql package pinning + + Signed-off-by: Fredrik Adelöw + +commit ad4f2bcc11845e75185cd1940ec5f37e7c78a8dd +Merge: 18e87343ad 39e92897e4 +Author: Ben Lambert +Date: Tue Nov 9 14:46:01 2021 +0100 + + Merge pull request #7825 from alexcurtin/catalog-client-api-ref + + Adding API documentation for catalog-client + +commit 5826c17b7d769e2a499dcff9b5dd7dc05ffcfcfc +Author: Elliot Greenwood +Date: Tue Nov 9 13:44:15 2021 +0000 + + Add changeset + + Signed-off-by: Elliot Greenwood + +commit cf090d25e7da6d180b437888c5dcfdb9fa6e6a49 +Author: Elliot Greenwood +Date: Tue Nov 9 13:27:07 2021 +0000 + + Add StyledTable to the Table stories + + Signed-off-by: Elliot Greenwood + +commit 327e79c2b85718f1dbc38b1292e2fa9c1b04d173 +Author: Elliot Greenwood +Date: Tue Nov 9 13:26:28 2021 +0000 + + Allow for material UI cellStyle function from the backstage Table component + + Signed-off-by: Elliot Greenwood + +commit 18e87343adc66818fd461da9e501f16c7fa1a71e +Merge: fc84dda0b6 d393a3bd2a +Author: Ben Lambert +Date: Tue Nov 9 14:42:52 2021 +0100 + + Merge pull request #7883 from GoFightNguyen/patch-1 + + [docs] clarify example showing that parameters types propagate + +commit fc84dda0b60ba9c7173bd18ccf8a501c58873769 +Merge: 3400c91b46 ce4457bb30 +Author: Johan Haals +Date: Tue Nov 9 14:32:17 2021 +0100 + + Merge pull request #7919 from backstage/fix-snyk-github-issue-workflow-2 + + Fixes the Snyk github issue workflow to continue when the Snyk CLI ex… + +commit 3400c91b465c2edf4c5fe7d4be9af2e044de783a +Merge: 6bfacd97f7 de527c6e33 +Author: Johan Haals +Date: Tue Nov 9 14:31:18 2021 +0100 + + Merge pull request #7913 from backstage/jhaals/core-plugin-deps + + core-plugin-api: Deprecate unused types + +commit 6bfacd97f73fbcab3f6e0d19592bd9eaba9af668 +Merge: a4b86485a3 a794c341ca +Author: Patrik Oldsberg +Date: Tue Nov 9 14:14:26 2021 +0100 + + Merge pull request #7830 from kennethzfeng/kfeng.is-execute + + plugins/scaffolder-backend: Fix a bug where only file mode 775 is con… + +commit ce4457bb305088eca9700c03bb4fd04cfcbbc93d +Author: Harry Hogg +Date: Tue Nov 9 12:36:01 2021 +0000 + + Fixes the Snyk github issue workflow to continue when the Snyk CLI exits with an error + + Signed-off-by: Harry Hogg + +commit a4b86485a3aac3fa511bb349cdbbea09c0e42fd5 +Merge: d2a44fd436 5a85b802f3 +Author: Fredrik Adelöw +Date: Tue Nov 9 13:14:10 2021 +0100 + + Merge pull request #7910 from jeremyguarini/fix_code_coverage_chart_xaxis + + display X-axis in ascending order + +commit d2a44fd436b19b7c36dffd92cef08aaa6b3edf1c +Merge: 2fabfd42ac d44f3414e8 +Author: Fredrik Adelöw +Date: Tue Nov 9 13:13:01 2021 +0100 + + Merge pull request #7906 from backstage/dependabot/npm_and_yarn/apollo-server-2.25.3 + + build(deps): bump apollo-server from 2.21.0 to 2.25.3 + +commit 2fabfd42acd3011a0046e1b1260a76996370bd91 +Merge: ad06db6393 4fa7934710 +Author: Fredrik Adelöw +Date: Tue Nov 9 11:24:24 2021 +0100 + + Merge pull request #7918 from backstage/fix-snyk-github-issue-workflow + + Added runson command to fix the snyk github issue sync workflow config + +commit ad06db6393ef8886f580cb5d3bd3bdd142bc6919 +Merge: c7659d9649 afe864b872 +Author: Fredrik Adelöw +Date: Tue Nov 9 11:05:21 2021 +0100 + + Merge pull request #7915 from backstage/freben/kubernetes-config-test + + get rid of config loading here too + +commit 4fa7934710a162b24e730a2655d60fee52c4418e (origin/fix-snyk-github-issue-workflow) +Author: Harry Hogg +Date: Tue Nov 9 10:02:36 2021 +0000 + + Added runson command to fix the workflow config + + Signed-off-by: Harry Hogg + +commit 5ee31f860b412566ffaddd1c49115cb47ffe34ff +Author: Marcus Eide +Date: Tue Nov 9 10:44:26 2021 +0100 + + Add changeset + + Signed-off-by: Marcus Eide + +commit 00af71a8fc924d603b93ce91387e53cbc1cffff9 +Author: Marcus Eide +Date: Tue Nov 9 10:42:21 2021 +0100 + + Filter out undefined keys from settings + + Signed-off-by: Marcus Eide + +commit c7659d9649c7f8a1973c40c9f1d66b7b63f26ea0 +Merge: a91b08045a 6160f89865 +Author: Fredrik Adelöw +Date: Tue Nov 9 10:35:40 2021 +0100 + + Merge pull request #7914 from backstage/freben/proxy-router-test + + fake the test config to get rid of the timeouts + +commit afe864b872f3d93654639b44d2f1a652e001c843 +Author: Fredrik Adelöw +Date: Tue Nov 9 10:35:13 2021 +0100 + + get rid of config loading here too + + Signed-off-by: Fredrik Adelöw + +commit 9df71040e347bb13ead3f54a600db9af6ab2a41c +Author: Tim Jacomb +Date: Tue Nov 9 09:20:49 2021 +0000 + + Remove mailEnabled filter + + Signed-off-by: Tim Jacomb + +commit 6160f89865d19005b6a59531c0e8b098b1f69300 +Author: Fredrik Adelöw +Date: Tue Nov 9 10:10:13 2021 +0100 + + fake the test config to get rid of the timeouts + + Signed-off-by: Fredrik Adelöw + +commit de527c6e33f1a7ddb9d12a3c280fdbf62c86c48e +Author: Johan Haals +Date: Tue Nov 9 09:49:55 2021 +0100 + + api report + + Signed-off-by: Johan Haals + +commit e059aea7b9b5a93616b35216cefadfb7f35e5c79 +Author: Johan Haals +Date: Tue Nov 9 09:36:42 2021 +0100 + + core-plugin-api: Deprecate unused types + + Signed-off-by: Johan Haals + +commit a91b08045a7af193aab0d22d3424ad1a1967d44c +Merge: 58d0c50d5d 8b4284cd5c +Author: Johan Haals +Date: Tue Nov 9 09:18:16 2021 +0100 + + Merge pull request #7861 from jluk-box/core-plugin-api-docs + + Improve API documentation for @backstage/core-plugin-api + +commit 0d26566f70a94f14056970a9e869cbaf81277010 +Merge: b280d08a07 58d0c50d5d +Author: Marley Powell +Date: Tue Nov 9 08:12:37 2021 +0000 + + Merge branch 'master' of https://github.com/backstage/backstage into marley/7678-pull-request-dashboard + +commit 910a6a435e4226474fab557120e8c70b06281aef +Author: Marley Powell +Date: Tue Nov 9 08:04:51 2021 +0000 + + feat: Added new types to `@backstage/plugin-azure-devops-common`. + + Signed-off-by: Marley Powell + +commit ed3feb178b787d1de419c0061f9cfe580f51b64e +Merge: 18b6c1543c 58d0c50d5d +Author: Marley Powell +Date: Tue Nov 9 07:59:38 2021 +0000 + + Merge branch 'master' of https://github.com/backstage/backstage into marley/7641-consume-exported-ado-types + +commit 9f3dd76bc7ba5a5db8305f952f1c4d7f1921a24c +Author: rgorkovenko +Date: Tue Nov 9 10:07:22 2021 +0300 + + fix: kuber plugin pass id token on getClusters req + + Signed-off-by: rgorkovenko + +commit 5a85b802f33c5575453cf3fd1740102bc8d114b7 +Author: Jeremy Guarini +Date: Mon Nov 8 15:18:32 2021 -0800 + + display X-axis in ascending order + + Signed-off-by: Jeremy Guarini + +commit d44f3414e8a876af2f07f350107dda79417b6ef6 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Mon Nov 8 21:51:52 2021 +0000 + + build(deps): bump apollo-server from 2.21.0 to 2.25.3 + + Bumps [apollo-server](https://github.com/apollographql/apollo-server/tree/HEAD/packages/apollo-server) from 2.21.0 to 2.25.3. + - [Release notes](https://github.com/apollographql/apollo-server/releases) + - [Changelog](https://github.com/apollographql/apollo-server/blob/main/CHANGELOG.md) + - [Commits](https://github.com/apollographql/apollo-server/commits/apollo-server@2.25.3/packages/apollo-server) + + --- + updated-dependencies: + - dependency-name: apollo-server + dependency-type: direct:production + ... + + Signed-off-by: dependabot[bot] + +commit 58d0c50d5d90e3e2ec95975e82a1c7cdfb3369ed +Merge: 72832b983f 0ef78fcd75 +Author: Patrik Oldsberg +Date: Mon Nov 8 22:49:06 2021 +0100 + + Merge pull request #7905 from backstage/dependabot/npm_and_yarn/graphiql-1.4.7 + + build(deps): bump graphiql from 1.4.2 to 1.4.7 + +commit d393a3bd2a190daba0dedc7c4c62beba961a6646 +Author: Jason Nguyen +Date: Wed Nov 3 14:16:19 2021 -0600 + + [docs] clarify example showing that parameters types propagate + + Signed-off-by: Jason Nguyen + +commit 72832b983f98b0c8ddb47530c4fae092a1f5b4fd +Merge: 44e97144bf a39a2105ef +Author: Patrik Oldsberg +Date: Mon Nov 8 21:56:31 2021 +0100 + + Merge pull request #7873 from dehamzah/add-overrides-ui-name + + Add Theme Overrides for Sidebar + +commit 01df5bc4362b3ddc96e88d6070994ecdb9bf825c +Author: Tim Jacomb +Date: Fri Nov 5 14:24:43 2021 +0000 + + Additional normalisation + + Signed-off-by: Tim Jacomb + +commit 44e97144bf352ddc126273548766f1b86c01d034 +Merge: 93999aa972 1a915b49d4 +Author: Fredrik Adelöw +Date: Mon Nov 8 21:04:15 2021 +0100 + + Merge pull request #7889 from jeremyguarini/code_coverage_ui_updates + + Minor UI updates to make numbers and dates a bit more human friendly + +commit 5725f87e4c7a138e95758ee913f12f3db623759c +Author: Patrik Oldsberg +Date: Mon Nov 8 20:56:03 2021 +0100 + + create-app: default to making new plugins private + + Signed-off-by: Patrik Oldsberg + +commit 1b8efd52f0b1aab5c7860c0ef71675bdd49ce95e +Author: Jeremy Guarini +Date: Mon Nov 8 10:33:40 2021 -0800 + + address vale issue with href + + Signed-off-by: Jeremy Guarini + +commit 93999aa9720e1aeaefac3ae23d25c9a9f1e166bf +Merge: c0a7f95c87 564d392580 +Author: Tim Hansen +Date: Mon Nov 8 11:25:12 2021 -0700 + + Merge pull request #7904 from jeremyguarini/adopters_update + + Add Palo Alto Networks to Adopters page + +commit 0ef78fcd750df361f64d780a43df0c16b2837e51 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Mon Nov 8 18:09:15 2021 +0000 + + build(deps): bump graphiql from 1.4.2 to 1.4.7 + + Bumps [graphiql](https://github.com/graphql/graphiql) from 1.4.2 to 1.4.7. + - [Release notes](https://github.com/graphql/graphiql/releases) + - [Changelog](https://github.com/graphql/graphiql/blob/main/CHANGELOG.md) + - [Commits](https://github.com/graphql/graphiql/compare/graphiql@1.4.2...graphiql@1.4.7) + + --- + updated-dependencies: + - dependency-name: graphiql + dependency-type: direct:production + ... + + Signed-off-by: dependabot[bot] + +commit 1a915b49d44d04f73792d2c60f9820d5c98b26ba +Author: Jeremy Guarini +Date: Mon Nov 8 09:58:17 2021 -0800 + + change luxon version to match others + + Signed-off-by: Jeremy Guarini + +commit c0a7f95c8797bdf2d77ea1caf804c63f3f6380ab +Merge: 76b9945796 c74834a62d +Author: Fredrik Adelöw +Date: Mon Nov 8 18:49:43 2021 +0100 + + Merge pull request #7843 from backstage/joonp/nested-entity-search-filter + + Allow singleton and flexibly nested EntityFilters + +commit 564d392580b6d629788951cd458ec3bdd380960d +Author: Jeremy Guarini +Date: Mon Nov 8 09:40:10 2021 -0800 + + Add Palo Alto Networks to Adopters page + + Signed-off-by: Jeremy Guarini + +commit 367e3bf130a5cfa9ee0c31de32d5440250636113 +Author: Jeremy Guarini +Date: Mon Nov 8 09:29:21 2021 -0800 + + updated timestamp conversion to use Luxon and adrs-adr012 guideline, added luxon as dependency + + Signed-off-by: Jeremy Guarini + +commit 76b9945796255f3dec32744946e8ddd52b0de66d +Merge: 8aca452b0c e9803242ac +Author: Fredrik Adelöw +Date: Mon Nov 8 18:21:05 2021 +0100 + + Merge pull request #7895 from backstage/dependabot/npm_and_yarn/passport-oauth2-1.6.1 + + build(deps): bump passport-oauth2 from 1.6.0 to 1.6.1 + +commit 0514f55ff1a12000c2f29014bd98f5ab8bcf1780 +Author: Gabriele Mambrini +Date: Mon Nov 8 17:56:07 2021 +0100 + + Update config schema + + Signed-off-by: Gabriele Mambrini + +commit 8aca452b0c3aefdbd303563c43af62d5ad92c262 (tag: v0.53.3, tag: release-2021-11-08) +Merge: aadc38fddd 0c9dd8df51 +Author: Ben Lambert +Date: Mon Nov 8 17:02:29 2021 +0100 + + Merge pull request #7875 from marleypowell/marley/7641-build-table-story + + docs: Created stories for BuildTable component to document different component states. + +commit aadc38fddd88f9c343483153b21134497de64383 +Merge: 278563b988 bd74a61eaa +Author: Patrik Oldsberg +Date: Mon Nov 8 16:49:13 2021 +0100 + + Merge pull request #7746 from backstage/mob/snyk-issue-creation-workflow + + Opening Github issues for Snyk vulnerabilities + +commit 4de24185c85304fcb57a4142f4c61d4a7c4eb4c3 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Mon Nov 8 15:38:21 2021 +0000 + + build(deps): bump @spotify/eslint-config-typescript + + Bumps [@spotify/eslint-config-typescript](https://github.com/spotify/web-scripts) from 10.0.0 to 12.0.0. + - [Release notes](https://github.com/spotify/web-scripts/releases) + - [Changelog](https://github.com/spotify/web-scripts/blob/master/CHANGELOG.md) + - [Commits](https://github.com/spotify/web-scripts/compare/v10.0.0...v12.0.0) + + --- + updated-dependencies: + - dependency-name: "@spotify/eslint-config-typescript" + dependency-type: direct:production + update-type: version-update:semver-major + ... + + Signed-off-by: dependabot[bot] + +commit e9803242acc5d8ee555dc21eca8f0f7dabc44559 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Mon Nov 8 15:29:23 2021 +0000 + + build(deps): bump passport-oauth2 from 1.6.0 to 1.6.1 + + Bumps [passport-oauth2](https://github.com/jaredhanson/passport-oauth2) from 1.6.0 to 1.6.1. + - [Release notes](https://github.com/jaredhanson/passport-oauth2/releases) + - [Changelog](https://github.com/jaredhanson/passport-oauth2/blob/master/CHANGELOG.md) + - [Commits](https://github.com/jaredhanson/passport-oauth2/compare/v1.6.0...v1.6.1) + + --- + updated-dependencies: + - dependency-name: passport-oauth2 + dependency-type: direct:production + ... + + Signed-off-by: dependabot[bot] + +commit 278563b988a82fc1551888c77320fbadb10e8bc3 +Merge: 5d2cf5c890 26c5659c97 +Author: Fredrik Adelöw +Date: Mon Nov 8 16:26:14 2021 +0100 + + Merge pull request #7898 from backstage/freben/msw + + Bump msw to the same version as the rest + +commit c74834a62d9e5208d16754eaaf42df3c228f97e4 +Author: Joon Park +Date: Mon Nov 8 12:31:28 2021 +0000 + + Allow singleton and flexible EntityFilters. + + Signed-off-by: Joon Park + +commit 86bef79ad1eaa499c0cd9afe443d4cd1029f22f4 +Author: Joon Park +Date: Fri Oct 29 15:31:46 2021 +0100 + + Allow nested EntityFilters + + This makes the format of EntityFilters more flexible, and paves the way for the permissions system, which requires composing multiple _collections_ of filters. + + Signed-off-by: Joon Park + +commit 5d2cf5c89002406f0f4fd17785e879dcff775224 +Merge: 31f00e8015 36350bf8b3 +Author: Fredrik Adelöw +Date: Mon Nov 8 16:16:56 2021 +0100 + + Merge pull request #7878 from RoadieHQ/pin-elastic + + Pin version of ElasticSearch client to 7.13.0 + +commit 97eed9f67f12359429e260e74cbe32adc35e6815 +Author: Colton Padden +Date: Mon Nov 8 10:16:55 2021 -0500 + + use diff codeblock in changeset markdown + + Signed-off-by: Colton Padden + +commit 18b6c1543ce003d5e3839374b12706370df0323e +Author: Marley Powell +Date: Mon Nov 8 14:58:31 2021 +0000 + + fix: Fixed merge issue in `package.json`. + + Signed-off-by: Marley Powell + +commit 31f00e8015ef5eabbc586a5ef28e4e4871b61194 +Merge: f391b79f2a 4c780d8651 +Author: Ben Lambert +Date: Mon Nov 8 15:57:14 2021 +0100 + + Merge pull request #7777 from backstage/orkohunter/export-entity-ref-hooks + + catalog-react: export loadIdentityOwnerRefs and loadCatalogOwnerRefs all the way + +commit 0c9dd8df5143f3ee906de63a6b351fe3b0d3be40 +Author: Marley Powell +Date: Mon Nov 8 14:56:16 2021 +0000 + + fix: Added `--passWithNoTests` flag to `package.json`. + + Signed-off-by: Marley Powell + +commit b4ab81cad9ed51d6fe5f985c3a467b5312374c6a +Author: Marley Powell +Date: Mon Nov 8 14:55:07 2021 +0000 + + refactor: Stop re-exporting types from `@backstage/plugin-azure-devops-backend`. + + Signed-off-by: Marley Powell + +commit f391b79f2a22b1a23ee7fd654b5d65e03cea3b75 +Merge: 44f4059d6a 0557332ec6 +Author: Ben Lambert +Date: Mon Nov 8 15:35:12 2021 +0100 + + Merge pull request #7899 from backstage/blam/missing-adr-in-sidebar + + chore: missing ADR in sidebars + +commit 4634588de330ca63e68ff8af136a423bc03b3303 +Author: Marley Powell +Date: Mon Nov 8 14:29:50 2021 +0000 + + chore: generated API report. + + Signed-off-by: Marley Powell + +commit 236756d0f204eb55cd3fd4e40a480e38f720ca99 +Author: Marley Powell +Date: Mon Nov 8 14:21:39 2021 +0000 + + refactor: Consume types from `@backstage/plugin-azure-devops-common`. + + Signed-off-by: Marley Powell + +commit 44f4059d6a885d547640e70e53f13fdb949774f4 +Merge: 43f900430c 5846833175 +Author: Patrik Oldsberg +Date: Mon Nov 8 15:18:08 2021 +0100 + + Merge pull request #7798 from alexrybch/route-sort + + fixed route resolving in EntityLayout and TabbedLayout + +commit f8f24e1ceed14e0e8204048cf4af76f7473b07df +Merge: b4398e968d 43f900430c +Author: Marley Powell +Date: Mon Nov 8 14:17:31 2021 +0000 + + Merge branch 'master' of https://github.com/backstage/backstage into marley/7641-consume-exported-ado-types + +commit 43f900430c3bbde6316e7e070a5fd995eca90617 +Merge: fa43705a2f 311d604bea +Author: Patrik Oldsberg +Date: Mon Nov 8 15:15:09 2021 +0100 + + Merge pull request #7791 from RodionGork/fix/sentry-plugin-pass-id-token + + fix: sentry plugin can pass id token + +commit 4c780d86514c0b4354357cda21ffead175202a4b +Author: blam +Date: Mon Nov 8 15:14:38 2021 +0100 + + chore: use named exports instead + Signed-off-by: blam + +commit a209473de859a5d58a28f7da5dc665fec56d6dca +Author: Marley Powell +Date: Mon Nov 8 14:08:25 2021 +0000 + + revert: Removed unnecessary changes in changeset. + + Signed-off-by: Marley Powell + +commit 9c76bf58b7c31f632700f8033f7b4bf10bf88c97 +Author: Marley Powell +Date: Mon Nov 8 14:06:44 2021 +0000 + + feat: Created new `@backstage/plugin-azure-devops-common` package for common types. + + Signed-off-by: Marley Powell + +commit 0557332ec60fb9a8a322768fddb20e6385561106 +Author: blam +Date: Mon Nov 8 15:05:56 2021 +0100 + + chore: missing ADR in sidebars + + Signed-off-by: blam + +commit 26c5659c97b6d57859f8e3fca68f66c1663a76d9 +Author: Fredrik Adelöw +Date: Mon Nov 8 15:02:07 2021 +0100 + + Bump msw to the same version as the rest + + Signed-off-by: Fredrik Adelöw + +commit fa43705a2ffa1c5ae4b02dfd4bae91933fff9c02 +Merge: 2bc202bc52 44308cc80d +Author: Ben Lambert +Date: Mon Nov 8 14:55:52 2021 +0100 + + Merge pull request #7858 from backstage/dependabot/npm_and_yarn/storybook/addons-6.3.12 + + build(deps-dev): bump @storybook/addons from 6.3.11 to 6.3.12 + +commit 2bc202bc5293bc02e58e112c4e6d5dd5a8606225 +Merge: bc30f37af0 42e97f4708 +Author: Johan Haals +Date: Mon Nov 8 14:04:28 2021 +0100 + + Merge pull request #7887 from lykkeaxlin/ilert-luxon-version + + ilert date-io/luxon version change from 2.x to 1.x + +commit b280d08a070ca2c6feb795709a1ae4c544160a89 +Author: Marley Powell +Date: Mon Nov 8 13:00:40 2021 +0000 + + docs: Created initial stories for `PullRequestCard` component. + + Signed-off-by: Marley Powell + +commit 60cafe772736805f9f1be5532f224aa7b3dff078 +Author: Marley Powell +Date: Mon Nov 8 12:52:09 2021 +0000 + + feat: Added subheader to `PullRequestCard` component. + + Signed-off-by: Marley Powell + +commit 504a600cae7b81b7e52c392ea362b3e25d82ead2 +Author: Marley Powell +Date: Mon Nov 8 12:40:02 2021 +0000 + + feat: Created `PullRequestCardPolicies` and `PullRequestCardReviewers` components. + + Signed-off-by: Marley Powell + +commit fdb2eb0b963c5c289b82b93b3e9c9a59d1dd4860 +Author: Marley Powell +Date: Mon Nov 8 12:22:09 2021 +0000 + + feat: Created `AutoCompleteIcon` component for `PullRequestCard`. + + Signed-off-by: Marley Powell + +commit cf9d60ff60c21602ef978b6161382f1df6c053b9 +Author: Marley Powell +Date: Mon Nov 8 12:02:40 2021 +0000 + + feat: Created intial display components for `PullRequestsPage`. + + Signed-off-by: Marley Powell + +commit bd74a61eaabca24e8cdcedefe70beb21e6bff135 +Author: Harry Hogg +Date: Mon Nov 8 11:03:58 2021 +0000 + + Updated to run on a separate workflow every 4 hours. + + Signed-off-by: Harry Hogg + +commit bc30f37af0ff909bc53553ab45dbe765f260e0fe +Merge: 093cd594c3 ec64d9590c +Author: Fredrik Adelöw +Date: Mon Nov 8 12:02:41 2021 +0100 + + Merge pull request #7894 from backstage/freben/early-super + + Call the super constructor early + +commit 093cd594c3ded740d46a5d352e7ec0cf85740187 +Merge: 3d8f70f5de e7e4626fc9 +Author: Johan Haals +Date: Mon Nov 8 11:54:00 2021 +0100 + + Merge pull request #7896 from backstage/blam/readme + + remove maintainer warning + +commit 3d8f70f5de1a684633c0575f8f3db6448bc887a2 +Merge: 5b6797a20e 290fbb3ec2 +Author: Ben Lambert +Date: Mon Nov 8 11:46:14 2021 +0100 + + Merge pull request #7862 from jluk-box/scaffolder-backend-modules-api-docs + + Improve API docs in Scaffolder action plugins + +commit 44308cc80daeafd9ae5debc148d724f1e06cbeae +Author: blam +Date: Mon Nov 8 11:40:31 2021 +0100 + + chore: remove some duplicate dependencies + + Signed-off-by: blam + +commit 0c97cb0eb4edf1f58ffcb911535ad01dbdebad73 +Author: Marley Powell +Date: Mon Nov 8 10:04:20 2021 +0000 + + feat: Created initial `PullRequestsPage` component. + + Signed-off-by: Marley Powell + +commit 0aec087ee6422bc896b9c33c4b6a9cff6b26e9e9 +Author: blam +Date: Mon Nov 8 11:00:30 2021 +0100 + + chore: updating API report + + Signed-off-by: blam + +commit 064297ea19eeecb12e8a54ac6d8d503bcd85379a +Author: blam +Date: Mon Nov 8 10:57:58 2021 +0100 + + chore: adding some documentation for exported things + + Signed-off-by: blam + +commit 94d942a14720cdbb3faad13e9ec26e236b61d691 +Author: Marley Powell +Date: Mon Nov 8 09:52:13 2021 +0000 + + feat: Added Azure Pull Requests route and sidebar link. + + Signed-off-by: Marley Powell + +commit 5b6797a20eadda461af385113d9eef3202cd2b4e +Merge: 4c9f570e1e e8a1c1afe2 +Author: Patrik Oldsberg +Date: Mon Nov 8 10:41:11 2021 +0100 + + Merge pull request #7587 from SDA-SE/feat/jenkins-pattern + + Don't require a validation pattern for the jenkins base URL + +commit e7e4626fc9308f63375cd8b07b9196fd57d14079 +Author: blam +Date: Mon Nov 8 10:38:42 2021 +0100 + + chore: remove warning + + Signed-off-by: blam + +commit 4c9f570e1efaf0e6008d05321c9d5924f9b03911 +Merge: 204989227d 89e9f486f1 +Author: Patrik Oldsberg +Date: Mon Nov 8 10:35:55 2021 +0100 + + Merge pull request #7340 from Sandpip3rs/read-remote-config + + Read config from remote config server + +commit 50520d60553c335a0f3ad9486d227d6a515a3900 +Merge: 41af265872 204989227d +Author: Marley Powell +Date: Mon Nov 8 09:32:09 2021 +0000 + + Merge branch 'master' of https://github.com/backstage/backstage into marley/7678-pull-request-dashboard + +commit 23348dd5864a2427c40288b6cf30a103bb267556 +Author: Bryce Larson <85923137+bryce-od@users.noreply.github.com> +Date: Fri Nov 5 10:25:28 2021 +1100 + + Update plugins/catalog-backend/src/service/NextCatalogBuilder.ts + + Co-authored-by: Jussi Hallila + Signed-off-by: Bryce Larson + +commit fb7a0bdeac53d15c02e472e3eaebeb9b16c2aad3 +Author: Pavel +Date: Thu Oct 28 10:48:51 2021 +0200 + + Update README.md + + This is needed, otherwise, after you're redirected back there is an error from browser and nothing works. + + Signed-off-by: Pavlo Poliakov + +commit 204989227d470e2b5c3654265fe0b0bcd632b8e8 +Merge: b52637dacc 8c4cad0bf2 +Author: Fredrik Adelöw +Date: Sat Nov 6 10:37:45 2021 +0100 + + Merge pull request #7838 from egnwd/fix-s3-integration-etags + + Fix: [backstage-common] AWSS3UrlReader should throw NotModifiedError when etag matches + +commit ec64d9590cbb4dad0f8832da7f41e7a02e8115bd +Author: Fredrik Adelöw +Date: Sat Nov 6 10:25:17 2021 +0100 + + Call the super constructor early + + Signed-off-by: Fredrik Adelöw + +commit b52637daccc0cf2d503397d3fd1daf19b43841fd +Merge: a62bca43f8 f3c7eec64b +Author: Eric Peterson +Date: Fri Nov 5 21:31:49 2021 +0100 + + Merge pull request #7857 from awanlin/bug/fix-s3-path-join + +commit f3c7eec64be17a50c38d7f13270773e14fd50386 +Author: Andre Wanlin +Date: Fri Nov 5 14:48:44 2021 -0500 + + Updated changeset to reflect changes made + + Signed-off-by: Andre Wanlin + +commit 1daada3a06f511ee31614822e7d00cd4f88fd0fe +Author: Gabriele Mambrini +Date: Fri Nov 5 10:00:17 2021 +0100 + + Added changeset + + Signed-off-by: Gabriele Mambrini + +commit bfc837a97b5cd16916ac241067df90e62a149479 +Author: Gabriele Mambrini +Date: Fri Nov 5 09:53:45 2021 +0100 + + Update docs for allowed paths in backend.reading.allow + + Signed-off-by: Gabriele Mambrini + +commit b8b67b574011074720b9f7d252b9ee2005b9a97b +Author: Gabriele Mambrini +Date: Fri Nov 5 09:52:50 2021 +0100 + + Add allowed paths to backend.reading.allow + + Signed-off-by: Gabriele Mambrini + +commit 42e97f470890daa4cefda0fc239a9c3084d0f1b9 +Author: Lykke Axlin +Date: Fri Nov 5 08:09:36 2021 +0100 + + update yarn.lock and fixed typo + + Signed-off-by: Lykke Axlin + +commit 4fbbae382361f4a9b5b9faba3f5079d010360500 +Merge: fa325fd89d a62bca43f8 +Author: Lykke Axlin +Date: Fri Nov 5 08:07:55 2021 +0100 + + Merge branch 'master' of https://github.com/backstage/backstage into ilert-luxon-version + +commit 89e9f486f1f925684741d0f81391f73c5c89977e +Author: Matto +Date: Fri Nov 5 12:45:14 2021 +1100 + + api-report fix + + Signed-off-by: Matto + +commit 26462c0d0c2f8af7ebd5a8fc26414eb3cf6163a6 +Merge: e37a840856 e5b69a2f50 +Author: Matto +Date: Fri Nov 5 11:33:54 2021 +1100 + + Merge remote-tracking branch 'origin/master' into read-remote-config + + # Conflicts: + # ADOPTERS.md + +commit e5b69a2f50b68e686a6b55732e88b3266d9d56f7 +Merge: 98b8ef555f a2624fd878 +Author: Muhammad Hamadto +Date: Fri Nov 5 11:26:42 2021 +1100 + + Merge pull request #2 from Sandpip3rs/backstage-master + + Backstage master + +commit a2624fd878b7868843569b8dfc728182e4e2be2e +Merge: 98b8ef555f a62bca43f8 +Author: Matto +Date: Fri Nov 5 11:23:52 2021 +1100 + + sync + + Signed-off-by: Matto + +commit e37a84085624703018b48746fad5337883317a97 +Author: Matto +Date: Fri Nov 5 11:17:01 2021 +1100 + + Re-ran prettier on all files + + Signed-off-by: Matto + +commit 98b8ef555fbeb8d41141360307b21ef7546d6092 +Author: Matto +Date: Fri Nov 5 11:03:35 2021 +1100 + + Re-ran prettier on all files + + Signed-off-by: Matto + +commit 779d7a230442fe1abc70f2359c02f3d1902767ee +Author: Tim Jacomb +Date: Thu Nov 4 17:07:18 2021 +0000 + + Tweak logic for msgraph catalog ingesting for display names with + security groups + + Signed-off-by: Tim Jacomb + +commit a5512851a0991ec27f3eea530bc223a99013f1ed +Author: Jeremy Guarini +Date: Thu Nov 4 10:02:11 2021 -0700 + + add changeset + + Signed-off-by: Jeremy Guarini + +commit ab27aa313c98987d0d66dd63e0984f1ffebcb149 +Author: Jeremy Guarini +Date: Thu Nov 4 09:52:59 2021 -0700 + + Minor UI updates to make numbers and dates a bit more human friendly + + Signed-off-by: Jeremy Guarini + +commit fa325fd89dcbc40f610a70e946107835df073b15 +Author: Lykke Axlin +Date: Thu Nov 4 17:06:08 2021 +0100 + + added changeset + + Signed-off-by: Lykke Axlin + +commit a62bca43f8f826670c7104175d2b6f1624aaffe1 +Merge: 4a0b9695f8 ade04904d5 +Author: Himanshu Mishra +Date: Thu Nov 4 21:31:54 2021 +0530 + + Merge pull request #7847 from backstage/timbonicus/non-breaking-dismissable-warning + +commit bd93a7811b8b5511488f50a0d782005366f055b1 +Author: Lykke Axlin +Date: Thu Nov 4 16:48:30 2021 +0100 + + changed @date-io/luxon from 2.x to 1.0 to be compatible with material-ui-pickers + + Signed-off-by: Lykke Axlin + +commit f0fcdbfed1ccf68f27c305ab9301f8904a37a446 +Author: hiba-aldalaty +Date: Thu Nov 4 14:10:03 2021 +0000 + + Update api-report.md in @backstage/theme + + Signed-off-by: hiba-aldalaty + +commit ee69cdbd656cc1a6c838949c227760545e65a1be +Author: hiba-aldalaty +Date: Thu Nov 4 14:09:34 2021 +0000 + + Update api-report.md in @backstage/core-components + + Signed-off-by: hiba-aldalaty + +commit ddf46171113e1c4e927b80a194d2be110e147602 +Author: hiba-aldalaty +Date: Thu Nov 4 14:08:29 2021 +0000 + + Update context passed in Shortcuts.test.tsx and ShortcutItem.test.tsx + + Signed-off-by: hiba-aldalaty + +commit a6cf7598a15f8a409bb3dd8d7cc65555b09b4363 +Author: hiba-aldalaty +Date: Thu Nov 4 13:59:55 2021 +0000 + + Make sidebar expand on hover by default to prevent adopter impact + + Signed-off-by: hiba-aldalaty + +commit 4a0b9695f84bb8e79204c706bc6952d1ab772f2a +Merge: 7d64e37afa 7c7b0b27cb +Author: Dominik Henneke +Date: Thu Nov 4 10:09:21 2021 +0100 + + Merge pull request #7758 from SDA-SE/feat/scaffolder-long-polling + + Add a new endpoint for consuming logs from the Scaffolder that uses long polling instead of Server Sent Events + +commit b90fc74d7099b815d8a22eab4f04bbf106a65b33 +Author: Bryce Larson +Date: Thu Nov 4 20:08:58 2021 +1100 + + feat: Add getDefaultProcessors to CatalogBuilder + + Signed-off-by: Bryce Larson + +commit b4398e968d4ec3fd31e1ad7b4e44ad715e8e3932 +Merge: b374a9803a 7d64e37afa +Author: Marley Powell +Date: Thu Nov 4 08:19:08 2021 +0000 + + Merge branch 'master' of https://github.com/backstage/backstage into marley/7641-consume-exported-ado-types + + Signed-off-by: Marley Powell + +commit ade04904d5f66278e85095692b32baf8b03b4a38 +Author: Himanshu Mishra +Date: Thu Nov 4 13:37:34 2021 +0530 + + fix api reports + + Signed-off-by: Himanshu Mishra + +commit 7d64e37afa2ff8a98b9e9c44a096a36d652b9c99 +Merge: f669d062bd bc4cc0d2bf +Author: Himanshu Mishra +Date: Thu Nov 4 13:10:44 2021 +0530 + + Merge pull request #7877 from timja/patch-1 + + Add yarn command for installing jenkins-backend plugin + +commit 36350bf8b37f5d2cd8457423cdf1429d7b9015cb +Author: Jussi Hallila +Date: Wed Nov 3 15:45:34 2021 +0100 + + Pin version of ElasticSearch client to 7.13.0 + + Signed-off-by: Jussi Hallila + +commit bc4cc0d2bf73e9cf869d00604a13f18c754a6e34 +Author: Tim Jacomb +Date: Wed Nov 3 14:56:18 2021 +0000 + + Add index.ts changes + + Signed-off-by: Tim Jacomb + +commit ddf7325869f60b628b57cd8f22bda58c4303108f +Author: hiba-aldalaty +Date: Tue Nov 2 13:07:05 2021 +0000 + + Update api-report.md for themes + + Signed-off-by: hiba-aldalaty + +commit 7d95e98682ded152061973a1a336048f4ce97977 +Author: Tim Jacomb <21194782+timja@users.noreply.github.com> +Date: Wed Nov 3 14:33:43 2021 +0000 + + Add yarn command for installing jenkins-backend plugin + + Signed-off-by: Tim Jacomb + +commit 4b861d3b199af04f298f1b04ff4e773f85a203de +Merge: 7240d33df3 28dbf6cf8a +Author: Andre Wanlin +Date: Wed Nov 3 07:31:08 2021 -0500 + + Merge branch 'bug/fix-s3-path-join' of https://github.com/awanlin/backstage into bug/fix-s3-path-join + +commit 7240d33df360b4f4ac67f74e803eec71da8561c6 +Author: Andre Wanlin +Date: Wed Nov 3 07:30:56 2021 -0500 + + Also fixing for Google Storage + + Signed-off-by: Andre Wanlin + +commit 28dbf6cf8a02d94b1faca67a351a7178c91dc307 +Merge: 4848c9cb20 f669d062bd +Author: Andre Wanlin <67169551+awanlin@users.noreply.github.com> +Date: Wed Nov 3 07:30:05 2021 -0500 + + Merge branch 'backstage:master' into bug/fix-s3-path-join + +commit 58468331751e52832dff5da225b40b5791588172 +Author: Alex Rybchenko +Date: Tue Nov 2 09:28:15 2021 +0100 + + used regex instead of slice + + Signed-off-by: Alex Rybchenko + +commit 84ace9a29c03e556c4f0d2be7dad7d6e5b3e22fd +Author: Marley Powell +Date: Wed Nov 3 09:41:20 2021 +0000 + + docs: Created stories for BuildTable component to document different component states. + + Signed-off-by: Marley Powell + +commit a39a2105efc929d7184e6ccfc55d0fa92bd94d46 +Author: Dede Hamzah +Date: Wed Nov 3 15:40:25 2021 +0700 + + add changeset + + Signed-off-by: Dede Hamzah + +commit 274a4fc6335eff6091e995254636c98b7650d79e +Author: Dede Hamzah +Date: Wed Nov 3 16:11:23 2021 +0700 + + add changeset + + Signed-off-by: Dede Hamzah + +commit 4891a8f2e6f8e3c0993b6826676ea97bf0592895 +Author: Dede Hamzah +Date: Wed Nov 3 16:08:27 2021 +0700 + + Add Props Icon for Sidebar Item SidebarSearchField and Settings + + Signed-off-by: Dede Hamzah + +commit e3f665804974a122bed8eb19393a0dad145f9d37 +Author: Dede Hamzah +Date: Wed Nov 3 14:38:52 2021 +0700 + + Add overrides ui name for sidebar + + Signed-off-by: Dede Hamzah + +commit f669d062bda7f5bcf6d71588c94504469381db5a +Merge: cd646b55a9 0f4619cb4d +Author: Tim Hansen +Date: Tue Nov 2 20:52:04 2021 -0600 + + Merge pull request #7864 from volvofinans/add-volvofinans-adopter + + Add Volvofinans + +commit 7c7b0b27cb3fcc3a8a7bfefaee9fb51d9d03babc +Author: Dominik Henneke +Date: Tue Nov 2 13:51:17 2021 +0100 + + Adapt code to the refactored classes and types + + Signed-off-by: Dominik Henneke + +commit 471b9243dead0d1fa0fe027137307096f30d2e91 +Author: Dominik Henneke +Date: Thu Oct 28 15:46:16 2021 +0200 + + Rename endpoint to /events + + Signed-off-by: Dominik Henneke + +commit b45a34fb15e50593470afc73c14647d4d78a9ed2 +Author: Dominik Henneke +Date: Mon Oct 25 11:27:28 2021 +0200 + + Adds a new endpoint for consuming logs from the Scaffolder that uses long polling instead of Server Sent Events + + Signed-off-by: Dominik Henneke + +commit 95a48698bc5d64195076790d00baaebf07ee01e6 +Author: Dominik Henneke +Date: Mon Oct 25 14:17:37 2021 +0200 + + Add tests for the scaffolder eventstream frontend client + + Signed-off-by: Dominik Henneke + +commit 9587f6f7d26ad9cff89ed0f2fb9f310d86b8cf36 +Author: Dominik Henneke +Date: Mon Oct 25 11:26:13 2021 +0200 + + Add tests for the scaffolder eventstream + + Signed-off-by: Dominik Henneke + +commit f0f2bfea6e2a085a26abccd4905dd42bb2130058 +Author: hiba-aldalaty +Date: Tue Nov 2 11:39:27 2021 +0000 + + Reattempt building api-report.md for @backstage/theme + + Signed-off-by: hiba-aldalaty + +commit 663463adbd4a024f15a5f96e97d94b575cc69fbd +Author: hiba-aldalaty +Date: Tue Nov 2 09:54:42 2021 +0000 + + Reattempt building api-report.md for @backstage/core-components + + Signed-off-by: hiba-aldalaty + +commit ffb343cd6abe6f7a730d3db6de1e7766d8a3f95b +Merge: d396d8c7dc cd646b55a9 +Author: hiba-aldalaty +Date: Tue Nov 2 09:39:49 2021 +0000 + + Merge branch 'master' into scalable-sidebar-new-implementation + +commit d396d8c7dc6fe8b476a391bca41ecd521c3f4812 +Author: hiba-aldalaty +Date: Tue Nov 2 09:20:48 2021 +0000 + + Revert "Update api-report.md" + + This reverts commit cf43248673884b5b388f0d1d1d156fc523a72f69. + + Signed-off-by: hiba-aldalaty + +commit 8666b7bc903b55810632f2239caadb929616d660 +Author: Alex Rybchenko +Date: Tue Nov 2 09:26:45 2021 +0100 + + updated changeset + + Signed-off-by: Alex Rybchenko + +commit 044c38e73982d0793686b203d9dd356397c9a544 +Author: Oliver Sand +Date: Mon Nov 1 13:10:54 2021 +0100 + + Lazy load all API definition widgets + + Signed-off-by: Oliver Sand + +commit 0f4619cb4db7f4ee4e50087521db7a1399dcb287 +Author: Hammar Johan +Date: Mon Nov 1 12:50:42 2021 +0100 + + Add Volvofinans + + Signed-off-by: Hammar Johan + +commit 290fbb3ec2c6fbd4a1425e6eb906a35e4d879999 +Author: Jarek Łukow +Date: Mon Nov 1 11:17:00 2021 +0100 + + Improve API docs in Scaffolder action plugins + + Signed-off-by: Jarek Łukow + +commit 8b4284cd5cb1bf071a07d3247e529e12787fbde7 +Author: Jarek Łukow +Date: Mon Nov 1 10:16:54 2021 +0100 + + Improve API documentation for @backstage/core-plugin-api + + Signed-off-by: Jarek Łukow + +commit ca58eeffc0f48687325264c8716298581a7151bd +Merge: f7cd672c7f e527120f74 +Author: Matto +Date: Mon Nov 1 19:14:32 2021 +1100 + + Merge remote-tracking branch 'origin/master' into read-remote-config + + # Conflicts: + # yarn.lock + +commit ef01b7c7a7a22623c3fd5e7f85d274842b1cb8db +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Mon Nov 1 04:15:34 2021 +0000 + + build(deps-dev): bump @storybook/addons from 6.3.11 to 6.3.12 + + Bumps [@storybook/addons](https://github.com/storybookjs/storybook/tree/HEAD/lib/addons) from 6.3.11 to 6.3.12. + - [Release notes](https://github.com/storybookjs/storybook/releases) + - [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md) + - [Commits](https://github.com/storybookjs/storybook/commits/v6.3.12/lib/addons) + + --- + updated-dependencies: + - dependency-name: "@storybook/addons" + dependency-type: direct:development + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit 4848c9cb2094e9691340c9e68ed65e4688b47753 +Author: Andre Wanlin +Date: Sun Oct 31 19:58:51 2021 -0500 + + Fixed other instances of same issue + + Signed-off-by: Andre Wanlin + +commit 777daa10ad6896b5cfe161721120d4d7e00c3d32 +Author: Andre Wanlin +Date: Sun Oct 31 19:56:06 2021 -0500 + + Fixed s3 path join to work under any os + + Signed-off-by: Andre Wanlin + +commit 311d604bea6d5a7885942ca1adfbec15f7a4cf72 +Author: rodion +Date: Sun Oct 31 22:43:24 2021 +0300 + + fix: plugin sentry id token / private method + + Signed-off-by: rodion + +commit cd646b55a92b4eefb35e25d94fab4626ed15d1c9 +Merge: e527120f74 78c512ce8f +Author: Fredrik Adelöw +Date: Sun Oct 31 18:49:30 2021 +0100 + + Merge pull request #7850 from hrithiksawhney/master + + Added 'Blessed' icons for core plugins + +commit a2d4389587b5bf0893b820cb18d3f89434993349 +Author: Colton Padden +Date: Sun Oct 31 11:15:47 2021 -0400 + + Use Parameter Objects for Publisher Constructors + + Refactored Techdocs publishers to use a single parameter object as the + constructor argument to ease extendability as more options are introduced. + + Updated local publisher to use `.fromConfig` for instantiation so that it + follows the same design pattern as the other publishers. + + Signed-off-by: Colton Padden + +commit 78c512ce8f78b206001df6571be8f9a2bcf534bb +Author: hrithiksawhney +Date: Sat Oct 30 22:39:59 2021 +0530 + + added 'Blessed' icons for core plugins + + Signed-off-by: hrithiksawhney + +commit e527120f740f74b643f22d418db14e49fa56cf84 +Merge: 69ed2d590e 5b43ae3b5e +Author: Fredrik Adelöw +Date: Sat Oct 30 15:35:08 2021 +0200 + + Merge pull request #7820 from backstage/blam/e2e-test-with-puppeteer + + e2e tests with puppeteer? + +commit 5b43ae3b5e8557f4cd6cf5612789b440df51662d +Author: blam +Date: Fri Oct 29 18:23:41 2021 +0200 + + chore: finally got it working now right? + + Signed-off-by: blam + +commit 08724f0bc710b1639d91f164e56724f8af393347 +Author: blam +Date: Fri Oct 29 18:06:14 2021 +0200 + + chore: actually check the text in stderr to make sure that it's something that we don't expect + + Signed-off-by: blam + +commit fbbc73ac7dc385f5c7b2dfecaa48c93ab490fd41 +Author: blam +Date: Fri Oct 29 11:42:22 2021 +0200 + + chore: fixing prettier + + Signed-off-by: blam + +commit 0f254f45a5489cef9fc38e0584e6ce26dd83db3c +Author: blam +Date: Fri Oct 29 11:04:42 2021 +0200 + + chore: removing postgres env for now + + Signed-off-by: blam + +commit 8535bbd53c1061adf145b562b08e7bbd7408dc55 +Author: Ben Lambert +Date: Thu Oct 28 21:30:52 2021 +0200 + + Update run.ts + + Signed-off-by: Ben Lambert + +commit 9e3b76f86a1208837a9363015256447c396beb6c +Author: blam +Date: Thu Oct 28 21:01:08 2021 +0200 + + chore: revert some accidental additions + + Signed-off-by: blam + i + +commit 614fd12ad0eeb20b130433e726e8e2264f903602 +Author: blam +Date: Thu Oct 28 20:49:47 2021 +0200 + + chore: wrap up the killTree? + + Signed-off-by: blam + +commit fc6c990cc9c9ccb34c2438ce33243243d5966c06 +Author: blam +Date: Thu Oct 28 19:31:53 2021 +0200 + + chore: this time, I promise. I fixed it. Sorted out all the scoping stuff for the hacky stuff that evaluate does with .toString + Signed-off-by: blam + +commit bb5fe02de3d3b08b6eda6ee403248358fe3ead66 +Author: blam +Date: Thu Oct 28 18:57:42 2021 +0200 + + chore: don't need escaped text now as it's actually a function call like all good javascripts + + Signed-off-by: blam + +commit 03f368f740a3a5e1c25c721f43d5ba799c67318b +Author: blam +Date: Thu Oct 28 18:30:33 2021 +0200 + + chore: finally made it work + + Signed-off-by: blam + +commit 4b2740332c127ba245df6341ea4e68b9f1f5c6dc +Author: blam +Date: Thu Oct 28 18:06:47 2021 +0200 + + chore: now we have puppeteer! + + Signed-off-by: blam + +commit e3ef16366edf6f1a9cb47f6472d84b38d4799103 +Author: blam +Date: Thu Oct 28 16:23:43 2021 +0200 + + chore: setup chrome in the e2e containers + + Signed-off-by: blam + +commit 1078543bc128b2f875e0b0a77bcf621e499ab095 +Author: blam +Date: Thu Oct 28 16:20:39 2021 +0200 + + chore: run the lock! + + Signed-off-by: blam + +commit 15a205a804d1d4de26f1409d191192f3eb27f57f +Author: blam +Date: Thu Oct 28 16:18:15 2021 +0200 + + chore: puppeteer! + + Signed-off-by: blam + +commit 69ed2d590ec1c0c5a8a311705776ea85c91e59ea +Merge: c3cb126a9d dd355bca46 +Author: Patrik Oldsberg +Date: Sat Oct 30 12:46:18 2021 +0200 + + Merge pull request #7841 from backstage/rugvip/packsafe + + cli: dynamically determine which packages are unsafe to repack + +commit 741bcb168e875e537d7851f32195d9d30102d806 +Author: Jeremy Guarini +Date: Fri Oct 29 16:55:03 2021 -0700 + + add changeset + + Signed-off-by: Jeremy Guarini + +commit c01e26327efc80555add4bc87171308006116d1a +Author: Tim Hansen +Date: Fri Oct 29 13:43:28 2021 -0600 + + update changeset + + Signed-off-by: Tim Hansen + +commit e9206f437c8b4262d8c959546947fac046ca52ec +Author: Tim Hansen +Date: Fri Oct 29 13:39:35 2021 -0600 + + Make theme banner warning color optional + + Signed-off-by: Tim Hansen + +commit c3cb126a9d8f442c7af6e8bf8999d8f3d619f1c3 +Merge: 8cb04b438d 2406f82644 +Author: Fredrik Adelöw +Date: Fri Oct 29 21:09:11 2021 +0200 + + Merge pull request #7835 from djamaile/master + + docs(#7768): include dependsOn to depict a relation between a component a resource + +commit 8cb04b438dfa8e93c63eb01dcce0a71e5ef8fe4c +Merge: 03b0e9eda0 91f8644f17 +Author: Fredrik Adelöw +Date: Fri Oct 29 19:50:02 2021 +0200 + + Merge pull request #7816 from zombispormedio/kafka-authenticate-calls + + Add auth token to KafkaBackendClient via IdentityApi + +commit 0287b186135431c67ddb01834b12e65bd599aaf3 +Author: Jeremy Guarini +Date: Fri Oct 29 10:20:14 2021 -0700 + + UI updates to GCP-projects plugin + + Adds the following to the project list page: + * pagination + * filtering + * sorting + * rows per page + * show/hide columns + + Makes breadcrumb a link back to project list for the project details and new project views. + + In project list page, updates New project button to use RouterLink instead of href to avoid login prompt. + + In project details view, links to project details and logs now work, clicking on these will open the project or logs in GCP in new tab. + + Signed-off-by: Jeremy Guarini + +commit 03b0e9eda07353b352c458c23f2994f7ae2cef42 +Merge: 970e1f37fa a300f19a93 +Author: samiramkr +Date: Fri Oct 29 18:51:52 2021 +0200 + + Merge pull request #7842 from backstage/samiramkr/add-warning + + add warning to dismissableBanner + +commit a300f19a933b83a0a30e6b8279786eba94499719 +Author: Samira Mokaram +Date: Fri Oct 29 17:45:54 2021 +0200 + + add api-report + + Signed-off-by: Samira Mokaram + +commit c493f261e2b48c3cbbacd4ecc1303859b919d4be +Author: Samira Mokaram +Date: Fri Oct 29 17:32:36 2021 +0200 + + fix changeset + + Signed-off-by: Samira Mokaram + +commit 83cc72f6cbddce7a46b35353c9545081e2498d42 +Author: Samira Mokaram +Date: Fri Oct 29 17:02:48 2021 +0200 + + fix + + Signed-off-by: Samira Mokaram + +commit 970e1f37fae9781a092500f6e2447b244a0ce600 +Merge: 142e0458e6 1bbaa719ff +Author: Patrik Oldsberg +Date: Fri Oct 29 16:51:53 2021 +0200 + + Merge pull request #7840 from backstage/rugvip/dedup + + user-settings: remove duplicate core-plugin-api dependency + +commit c11a37710afb2d653d44a82ae9d6072923beabb7 +Author: Samira Mokaram +Date: Fri Oct 29 16:51:32 2021 +0200 + + add changeset + + Signed-off-by: Samira Mokaram + +commit f1903c71676b0c36ef448958d78720c18d2716b2 +Author: Samira Mokaram +Date: Fri Oct 29 16:47:02 2021 +0200 + + add warning to dismissableBanner + + Signed-off-by: Samira Mokaram + +commit 142e0458e61595353fb95b68c6b7d960aaf27673 +Merge: f9ef0eae16 8796c00de8 +Author: Ben Lambert +Date: Fri Oct 29 16:41:14 2021 +0200 + + Merge pull request #7426 from RoadieHQ/scaffolder-improvement + + changes to allow the task workers run outside the backend process + +commit f9ef0eae165539fe61926f05a572c637b50b1205 (tag: v0.53.2, tag: release-2021-10-29.1) +Merge: bb1539a89f b863feefbb +Author: Fredrik Adelöw +Date: Fri Oct 29 16:24:57 2021 +0200 + + Merge pull request #7679 from RoadieHQ/tech-insights-backend + + Implement Tech Insights backend + +commit a0a66000607f14dfd4571b86ea80115e47b9e766 +Author: Alex Rybchenko +Date: Fri Oct 29 16:17:47 2021 +0200 + + fix typo + + Signed-off-by: Alex Rybchenko + +commit dd355bca467bbcfa88fe7fec69a3f17abd70626f +Author: Patrik Oldsberg +Date: Fri Oct 29 16:14:25 2021 +0200 + + cli: dynamically determine which packages are unsafe to repack + + Signed-off-by: Patrik Oldsberg + +commit 7c5f6a0400c069f44aa8d2d3827dcbf6a8d74932 +Author: Alex Rybchenko +Date: Fri Oct 29 16:15:07 2021 +0200 + + added comments + + Signed-off-by: Alex Rybchenko + +commit 1bbaa719ff2d254571df03d870e1319029d46176 +Author: Patrik Oldsberg +Date: Fri Oct 29 16:10:13 2021 +0200 + + user-settings: remove duplicate core-plugin-api dependency + + Signed-off-by: Patrik Oldsberg + +commit b863feefbb48466b39cfecb023ef5112df60d753 +Author: Jussi Hallila +Date: Fri Oct 29 15:14:51 2021 +0200 + + Address warnings within api-docs + Move extra info on doc to be under remarks block + + Signed-off-by: Jussi Hallila + +commit 9c19d6ad0179834ebc3a9b34f1eac5f792dd36e5 +Author: Jussi Hallila +Date: Fri Oct 29 12:42:31 2021 +0200 + + Tweak formatting of snippets on README.md files. + + Signed-off-by: Jussi Hallila + +commit 5ebfedd9c2bf8f1acc6f3613b27abef9a331c8fd +Author: Jussi Hallila +Date: Fri Oct 29 12:29:27 2021 +0200 + + Add new api-report + Update persistence context to not be wrapped into a useless class. Modify the way test databases are created. + + Signed-off-by: Jussi Hallila + +commit 29faa2ace2149abbc782ce5f3c2f80db2eb87d99 +Author: Jussi Hallila +Date: Fri Oct 29 10:09:34 2021 +0200 + + Update cli version + + Signed-off-by: Jussi Hallila + +commit da4577d73183d641607e87a7102335aea8d6f680 +Author: Jussi Hallila +Date: Thu Oct 28 16:25:53 2021 +0200 + + Un-yikesify example FactRetriever cron to not pollute the DB + + Signed-off-by: Jussi Hallila + +commit 2b3e959ef47e37b2e944356e4c26bb12ae451e97 +Author: Jussi Hallila +Date: Thu Oct 28 16:20:44 2021 +0200 + + Modifications after PR review + + * Change entity filter to be an actual entity filter instead of a list of kinds or types + * Modify/simplify types a little bit + * Split common type libs to one for node and one isomorphic + * Remove unnecessary items from FactChecker interface to simplify execution loop. + + Needs still matching README.md changes. + + Signed-off-by: Jussi Hallila + +commit df000b95969d74b8d264543110989283650e05d6 +Author: Jussi Hallila +Date: Mon Oct 25 17:04:33 2021 +0200 + + Address various code review comments. + + Signed-off-by: Jussi Hallila + +commit a1afbe0498aa4a0982efe9b448d94a59d9f419aa +Author: Jussi Hallila +Date: Thu Oct 21 14:37:55 2021 +0200 + + Use a direct custom Error since backstage/errors seems unusable. + + Signed-off-by: Jussi Hallila + +commit b427f4ba0b4b05f167f2cb261d9e83c789043207 +Author: Jussi Hallila +Date: Thu Oct 21 11:48:00 2021 +0200 + + Modify validation to have a more user friendly API + + * Adding a container type to be returned from validate function + * Modifying JsonRulesEngineFactChecker to throw with error information if check addition fails on validation + + Signed-off-by: Jussi Hallila + +commit b2363f3e3b4a54968bc76c1b5429a8fb32ce4d5d +Author: Jussi Hallila +Date: Thu Oct 21 09:25:26 2021 +0200 + + Add explicit type information to checks + + Types can be used to: + * Determine which check logic to run + * Determine the correct persistence option to use + * Choose correct ser/deser logic for the check + * Determine correct components to render on the frontend + + Modify router API to be post for better usability. The API might end up doing writes if caching etc. is added in later as well. + + Modify CheckRegistry & FactChecker to return persisted check when it is registered. + + Signed-off-by: Jussi Hallila + +commit 75fc6ac85bbc3a6f73ef0cac9838ea17f9e23591 +Author: Jussi Hallila +Date: Tue Sep 14 12:54:52 2021 +0200 + + Implement Tech Insights backend + + * Add common types and interfaces for Tech Insights. Exposing components needed to use and modify tech-insights-backend module and to implement individual Fact Retrievers, Fact Checkers and their persistence options. + + * Implement a framework to run fact retrievers and store fact data into the database. Add migration scripts to create a new database for `tech_insights`. + + * Create a default implementation of a FactChecker enabling users to construct checks and run them and generate scorecards based on checks. + + * To be able to use tech insights in your application you need to implement `FactRetriever`s to retrieve and return data for facts and register them to the tech-insights-backend. If you want to use fact checking functionality, you need to create `check`s and register them to an implementation of a `FactChecker`. + + For more information see documentation on the README.md files of the respective packages. + + Signed-off-by: Jussi Hallila + +commit bb1539a89f811c8a317a6c318288d9bcf1bcc5ef +Merge: cf686e366d 6129c89a47 +Author: Eric Peterson +Date: Fri Oct 29 12:20:43 2021 +0200 + + Merge pull request #7837 from backstage/techdocs/bump-container-v035 + + [TechDocs] Bump container to v0.3.5 + +commit 8c4cad0bf2e51533109fe6f5147fde33cac16618 +Author: Elliot Greenwood +Date: Wed Oct 27 14:33:08 2021 +0100 + + Add changeset for backstage common + + Signed-off-by: Elliot Greenwood + +commit 7e6186cf6b522c0130d683a8cd6dcaa5cde2f018 +Author: Elliot Greenwood +Date: Wed Oct 27 13:35:00 2021 +0100 + + Add NotModifiedError for the AWSS3UrlReader + + Signed-off-by: Elliot Greenwood + +commit cf686e366d6770d0b478e17de821ca343c85749e (tag: v0.53.1, tag: release-2021-10-29) +Merge: 09217edd88 4eb087ccdc +Author: Patrik Oldsberg +Date: Fri Oct 29 11:51:19 2021 +0200 + + Merge pull request #7836 from backstage/rugvip/hotfix + + techdocs-backend: release schema hotfix + +commit 6129c89a47ef0df51b58708b2f0ad4604bcc2f6b +Author: Eric Peterson +Date: Fri Oct 29 11:48:39 2021 +0200 + + Bump TechDocs container to v0.3.5. + + Signed-off-by: Eric Peterson + +commit 4eb087ccdcce9d81786e0ca4b2433f21f8d8b5a8 +Author: Patrik Oldsberg +Date: Fri Oct 29 11:03:53 2021 +0200 + + techdocs-backend: release schema hotfix + + Signed-off-by: Patrik Oldsberg + +commit 09217edd88f3457e477035fa4e70f984476b1c88 +Merge: e3d9a4b380 b45607a2ec +Author: Patrik Oldsberg +Date: Fri Oct 29 10:50:30 2021 +0200 + + Merge pull request #7827 from andrewthauer/optional-techdocs-aws-config + + fix: make techdocs s3 credentials optional in config schema + +commit 2406f82644610745be3e3b8a15e5d6e09f3a59a8 +Author: djamaile +Date: Fri Oct 29 10:32:04 2021 +0200 + + docs(#7768): include dependsOn to depict a relation between a component and resource + + Signed-off-by: djamaile + +commit e3d9a4b380941a6ba7a1f06dee261f3959bf9fdc +Merge: dfa73c5701 547b902b68 +Author: Johan Haals +Date: Fri Oct 29 09:34:40 2021 +0200 + + Merge pull request #7832 from backstage/dependabot/npm_and_yarn/roadiehq/backstage-plugin-github-insights-1.2.2 + + build(deps): bump @roadiehq/backstage-plugin-github-insights from 1.1.23 to 1.2.2 + +commit dfa73c57016a24c7621b5e1e4b2268dab75f6488 +Merge: 411540af6f 71fd5cd735 +Author: Johan Haals +Date: Fri Oct 29 08:37:18 2021 +0200 + + Merge pull request #7814 from backstage/remove-keyboardjs-usage + + Remove usage of deprecated Keyboard class + +commit 411540af6f9c3f59af96a85d2d05cb09ae0f9b9c +Merge: 3db0cb3683 4316c9632e +Author: Fredrik Adelöw +Date: Fri Oct 29 08:11:35 2021 +0200 + + Merge pull request #7831 from backstage/dependabot/npm_and_yarn/azure/msal-node-1.3.2 + + build(deps): bump @azure/msal-node from 1.2.0 to 1.3.2 + +commit f7cd672c7f655427162a7ca0260e3438742537d8 +Author: Matto +Date: Fri Oct 29 16:39:13 2021 +1100 + + Updated error message + + Signed-off-by: Matto + +commit d86a5734fd6e3afe04b0a9c0aa5f18d83a165c83 +Merge: 5cce78f968 3db0cb3683 +Author: Muhammad Hamadto +Date: Fri Oct 29 15:26:03 2021 +1100 + + Merge branch 'master' into read-remote-config + +commit 5cce78f968099c3701303fbb035918c8914e50c0 +Author: Matto +Date: Fri Oct 29 15:11:54 2021 +1100 + + Resolved conflicts + + Signed-off-by: Matto + +commit 547b902b68909cdfdbe1f9d403fa79828727e6cc +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Fri Oct 29 04:12:33 2021 +0000 + + build(deps): bump @roadiehq/backstage-plugin-github-insights + + Bumps [@roadiehq/backstage-plugin-github-insights](https://github.com/RoadieHQ/roadie-backstage-plugins/tree/HEAD/plugins/frontend/backstage-plugin-github-insights) from 1.1.23 to 1.2.2. + - [Release notes](https://github.com/RoadieHQ/roadie-backstage-plugins/releases) + - [Changelog](https://github.com/RoadieHQ/roadie-backstage-plugins/blob/main/plugins/frontend/backstage-plugin-github-insights/docs/releases-widget.png) + - [Commits](https://github.com/RoadieHQ/roadie-backstage-plugins/commits/HEAD/plugins/frontend/backstage-plugin-github-insights) + + --- + updated-dependencies: + - dependency-name: "@roadiehq/backstage-plugin-github-insights" + dependency-type: direct:production + update-type: version-update:semver-minor + ... + + Signed-off-by: dependabot[bot] + +commit 4316c9632eb8dd65389bc9ab5ee01c91569fa4fc +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Fri Oct 29 04:09:55 2021 +0000 + + build(deps): bump @azure/msal-node from 1.2.0 to 1.3.2 + + Bumps [@azure/msal-node](https://github.com/AzureAD/microsoft-authentication-library-for-js) from 1.2.0 to 1.3.2. + - [Release notes](https://github.com/AzureAD/microsoft-authentication-library-for-js/releases) + - [Commits](https://github.com/AzureAD/microsoft-authentication-library-for-js/compare/v1.2.0...v1.3.2) + + --- + updated-dependencies: + - dependency-name: "@azure/msal-node" + dependency-type: direct:production + update-type: version-update:semver-minor + ... + + Signed-off-by: dependabot[bot] + +commit e7f4718b40adbf8ba48a70910e07995866af22db +Merge: a57927f5d5 5b51907cbf +Author: Matto +Date: Fri Oct 29 15:00:30 2021 +1100 + + Merge branch 'resoved-conflicts' into read-remote-config + + # Conflicts: + # packages/backend-common/package.json + # packages/backend-common/src/config.ts + # packages/config-loader/api-report.md + # packages/config-loader/package.json + # packages/config-loader/src/loader.ts + # yarn.lock + +commit 5b51907cbf2da15f03a9e9fccd4ec381b80fd9f9 +Author: Matto +Date: Fri Oct 29 14:56:31 2021 +1100 + + resolved conflicts + + Signed-off-by: Matto + +commit a794c341ca7f9207affccd06d75f7d530fa27c30 +Author: Kenneth Feng +Date: Thu Oct 28 22:20:34 2021 -0400 + + add changeset + + Signed-off-by: Kenneth Feng + +commit 83e462c0be0c43179cfb17e07b8361b5cbce5909 +Author: Kenneth Feng +Date: Thu Oct 28 21:39:43 2021 -0400 + + plugins/scaffolder-backend: Fix a bug where only file mode 775 is considered executable. + + Due to the default umask 002 on Ubuntu, the executable files checked out by Git + have file mode 100775 (33277), which by mistake, was assumed to be the only possible file mode + produced by Git. This bug was introduced in https://github.com/backstage/backstage/pull/7738. + + There are other possible file modes, such as 100700, 100755, which + should be considered executable. This behavior is consistent with how + Git behaves. Git only tracks whether a file is executable. + + This pull request considers a file to be executable as long as there is + an execute bit in owner, group, or everyone. + + Signed-off-by: Kenneth Feng + +commit 1cecd737f98cc0fca824073af9e0edd9cd75410d +Author: Matto +Date: Wed Oct 27 20:33:33 2021 +1100 + + Removed dependency, introduced isValidUrl, and reinstated `configPaths` + + Signed-off-by: Matto + +commit 8e85a0bca056f8ea245405a7555911e2a001ca66 +Author: Matto +Date: Tue Oct 26 21:50:49 2021 +1100 + + Change variable name + + Signed-off-by: Matto + +commit ce843364f09c59a32f3d4ba8c178d33e73c51d9b +Author: Matto +Date: Thu Oct 21 18:20:36 2021 +1100 + + Remove the dependency on Etag headers for reloading config + + Signed-off-by: Matto + +commit e51740f9c96cb51c3e742df3289b56ce92264925 +Author: Matto +Date: Tue Oct 19 23:18:19 2021 +1100 + + Added documentation + + Signed-off-by: Matto + +commit 5d4053c827ffc307bbeb3dc2ded8da137aee3b58 +Author: Matto +Date: Mon Sep 27 23:41:24 2021 +1000 + + Read config from remote config server + + Signed-off-by: Matto + +commit b45607a2ec899c7afba39f7d5987f1e064651b5a +Author: Andrew Thauer +Date: Thu Oct 28 17:56:59 2021 -0400 + + fix: make techdocs s3 credentials optional in config schema + + Signed-off-by: Andrew Thauer + +commit 39e92897e4de9ff3c89276ebeda138241f8f0bae +Author: alexcurtin +Date: Thu Oct 28 12:14:45 2021 -0700 + + Adding API documentation for catalog-client + + Signed-off-by: alexcurtin + +commit 3db0cb3683d3000666802af90a465ba4fb0d1e8d (tag: v0.53.0, tag: release-2021-10-28) +Merge: 9d862c6b9f d66c5f1282 +Author: Fredrik Adelöw +Date: Thu Oct 28 17:57:04 2021 +0200 + + Merge pull request #7736 from backstage/changeset-release/master + + Version Packages + +commit 9d862c6b9f5fcb8ca956c7c28f2944f7c08d8356 +Merge: c9143d2abe 26f758ded5 +Author: Ben Lambert +Date: Thu Oct 28 17:53:46 2021 +0200 + + Merge pull request #7819 from backstage/blam/notice + + chore: notice for down time + +commit 7ad9a07b2789e27792b0bb14b0dbf7b6d4ad1554 +Author: Greg Bomkamp +Date: Thu Oct 28 10:43:22 2021 -0400 + + Adding config prop `usePluginSchemas` to allow plugins using the `pg` client to create their own management schemas in the db. This allows `pg` client plugins to work in separate schemas in the same db. + + Signed-off-by: Greg Bomkamp + +commit 8796c00de828f81c478f2fcf0a66b6530a00804a +Author: Brian Fletcher +Date: Thu Oct 28 15:09:51 2021 +0100 + + change return object for broker observe function + + Signed-off-by: Brian Fletcher + +commit d66c5f12826b0499c914d276710b40a121a89aca +Author: github-actions[bot] +Date: Thu Oct 28 14:06:43 2021 +0000 + + Version Packages + +commit c9143d2abee72ef07c038db79601ffcea3bdb155 +Merge: e45e6e7ca9 f18755ee49 +Author: Patrik Oldsberg +Date: Thu Oct 28 16:01:48 2021 +0200 + + Merge pull request #7409 from RoadieHQ/ch3367 + + Adopt extra field for OAuth state + +commit 26f758ded514b2285c3c45384af8b435abe923af +Author: blam +Date: Thu Oct 28 16:00:15 2021 +0200 + + chore: notice for down time + + Signed-off-by: blam + +commit 71fd5cd735fe79a3182ae9de4a8b6f2f33918804 +Author: Johan Haals +Date: Thu Oct 28 14:58:08 2021 +0200 + + add changeset + + Signed-off-by: Johan Haals + +commit f808392183bbe32adf2c61fa4dba8ba85c4e8f8a +Author: Johan Haals +Date: Thu Oct 28 13:38:41 2021 +0200 + + reference library function + + Signed-off-by: Johan Haals + +commit 419054c97a98bcb93097c8c5585d483f69e7542e +Author: Johan Haals +Date: Thu Oct 28 10:50:35 2021 +0200 + + Remove usage of deprecated Keyboard class + + Signed-off-by: Johan Haals + +commit 91f8644f17651c5e780aff0f5f33b7c4d8d67e5d +Author: Xavier Serrano +Date: Wed Oct 27 19:15:13 2021 +0200 + + Add auth token to KafkaBackendClient via IdentityApi + + Signed-off-by: Xavier Serrano + Signed-off-by: Xavier Serrano + +commit 7205d37a142e5814518feee3cfb7046342e194f3 +Author: Harry Hogg +Date: Thu Oct 28 13:04:14 2021 +0100 + + Updated script to create, update and close github issues + + Signed-off-by: Harry Hogg + +commit 66b5024b7c1eb4a944d79271a30d007405941c08 +Author: Brian Fletcher +Date: Thu Oct 28 13:02:07 2021 +0100 + + only create datastore if needed for the broker + + Signed-off-by: Brian Fletcher + +commit e45e6e7ca9bd29104531c8746ba6e605690405ac +Merge: bb970cf258 f879e8b2b8 +Author: Fredrik Adelöw +Date: Thu Oct 28 13:46:50 2021 +0200 + + Merge pull request #7156 from backstage/mob/redact-secrets-from-logs + + backend: redact secret configs from logs + +commit bb970cf258a209148778003266c0110137752fb8 +Merge: b08e0bcd14 767fe912b2 +Author: Fredrik Adelöw +Date: Thu Oct 28 13:41:35 2021 +0200 + + Merge pull request #7444 from N-Shar-ma/file-path-split-bug-fix + + Fix FileExplorer Path Splitting Bug + +commit b08e0bcd1418213aeb0f60ab32d7f24bac014c9b +Merge: 303543eeb2 224e545a75 +Author: Fredrik Adelöw +Date: Thu Oct 28 13:19:57 2021 +0200 + + Merge pull request #7805 from tviaud/patch_scaffolder_field_extension_doc + + fix: Adding corrected code for custom field extension documentation + +commit 303543eeb2766d5bd72fd0f21f223a6e10dae5c8 +Merge: 5d5cac5b80 b9ce1ce2c1 +Author: Fredrik Adelöw +Date: Thu Oct 28 13:19:22 2021 +0200 + + Merge pull request #7807 from andrewthauer/custom-location-analyzer + + feat: allow custom location analyzer in next catalog builder + +commit 5d5cac5b809297715782273de00d0e2328d7be3a +Merge: aeca02990b c9e843547e +Author: Patrik Oldsberg +Date: Thu Oct 28 13:17:47 2021 +0200 + + Merge pull request #7439 from cmpadden/create-app-path-option + + Support optional [path] argument in create-app command-line utility + +commit aeca02990b0a1e6e421659d8e82b50cb47c73599 +Merge: 0b00ea6e03 12aac2d0f5 +Author: Patrik Oldsberg +Date: Thu Oct 28 12:33:22 2021 +0200 + + Merge pull request #7811 from backstage/dependabot/npm_and_yarn/core-js-3.19.0 + + build(deps): bump core-js from 3.15.0 to 3.19.0 + +commit 0b00ea6e0344979fedeeb04ed9a93bf5b049b8fa +Merge: 513d5c78b7 203665b99b +Author: Patrik Oldsberg +Date: Thu Oct 28 12:33:01 2021 +0200 + + Merge pull request #7810 from backstage/dependabot/npm_and_yarn/webpack-5.60.0 + + build(deps): bump webpack from 5.48.0 to 5.60.0 + +commit 513d5c78b763d827d114f4c3e9a2e5f815c062b3 +Merge: d3459f581b 328f77f76b +Author: Patrik Oldsberg +Date: Thu Oct 28 12:32:47 2021 +0200 + + Merge pull request #7809 from backstage/dependabot/npm_and_yarn/rjsf/core-3.2.0 + + build(deps): bump @rjsf/core from 3.1.0 to 3.2.0 + +commit cf43248673884b5b388f0d1d1d156fc523a72f69 +Author: hiba-aldalaty +Date: Thu Oct 28 11:27:12 2021 +0100 + + Update api-report.md + + Signed-off-by: hiba-aldalaty + +commit 61644f021c7b8d798b09a960a588a7ba7926ed50 +Author: hiba-aldalaty +Date: Thu Oct 28 10:59:08 2021 +0100 + + Fix lint errors + + Signed-off-by: hiba-aldalaty + +commit ea5509382f984f668b0f984124ee9c88fb198639 +Author: hiba-aldalaty +Date: Thu Oct 28 10:48:31 2021 +0100 + + Fix items test + + Signed-off-by: hiba-aldalaty + +commit d3459f581ba1a2ce635ce120068b721896deb580 +Merge: f5e45f8bf7 106a5dc3ad +Author: Eric Peterson +Date: Thu Oct 28 11:40:43 2021 +0200 + + Merge pull request #7800 from SDA-SE/feat/techdocs-casing-kind + + Restore original casing for `kind`, `namespace` and `name` in `DefaultTechDocsCollator` + +commit 91de276f6e3547a6975b9e7a0635aa87cdb3c94c +Author: hiba-aldalaty +Date: Thu Oct 28 10:25:24 2021 +0100 + + Fix yarn tsc errors + + Signed-off-by: hiba-aldalaty + +commit f51bea930f5bce87bbafed0de5c30a83ad50fd96 +Merge: 582a7964b7 f5e45f8bf7 +Author: hiba-aldalaty +Date: Thu Oct 28 10:04:25 2021 +0100 + + Merge branch 'master' into scalable-sidebar-new-implementation + +commit 582a7964b7849681adb5bf8b4e0357d84a075a31 +Author: hiba-aldalaty +Date: Thu Oct 28 10:02:09 2021 +0100 + + Add tests for scalable sidebar + + Signed-off-by: hiba-aldalaty + +commit f5e45f8bf714dc59cb0066888b5f0f019f6d32cb +Merge: 0ab984ee9e 96cfa561eb +Author: Fredrik Adelöw +Date: Thu Oct 28 09:53:21 2021 +0200 + + Merge pull request #7804 from backstage/freben/api-backend-common + + Just some random improvements in backend-common too + +commit 0ab984ee9e4225ed405d1856e009b991982bc93c +Merge: 3eb32aab01 36e2b548cb +Author: Fredrik Adelöw +Date: Thu Oct 28 09:51:19 2021 +0200 + + Merge pull request #7797 from backstage/freben/api-integration-react + + Fixing up integration-react as well + +commit 12aac2d0f5c40b107656768fd7ce0acbcca233f5 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Thu Oct 28 04:15:13 2021 +0000 + + build(deps): bump core-js from 3.15.0 to 3.19.0 + + Bumps [core-js](https://github.com/zloirock/core-js) from 3.15.0 to 3.19.0. + - [Release notes](https://github.com/zloirock/core-js/releases) + - [Changelog](https://github.com/zloirock/core-js/blob/master/CHANGELOG.md) + - [Commits](https://github.com/zloirock/core-js/compare/v3.15.0...v3.19.0) + + --- + updated-dependencies: + - dependency-name: core-js + dependency-type: direct:production + update-type: version-update:semver-minor + ... + + Signed-off-by: dependabot[bot] + +commit 203665b99b29f5fc1b56a9982bd5824b8e887583 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Thu Oct 28 04:12:29 2021 +0000 + + build(deps): bump webpack from 5.48.0 to 5.60.0 + + Bumps [webpack](https://github.com/webpack/webpack) from 5.48.0 to 5.60.0. + - [Release notes](https://github.com/webpack/webpack/releases) + - [Commits](https://github.com/webpack/webpack/compare/v5.48.0...v5.60.0) + + --- + updated-dependencies: + - dependency-name: webpack + dependency-type: direct:production + update-type: version-update:semver-minor + ... + + Signed-off-by: dependabot[bot] + +commit 328f77f76bf625085269a7e63e1131ec6712e2a6 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Thu Oct 28 04:11:31 2021 +0000 + + build(deps): bump @rjsf/core from 3.1.0 to 3.2.0 + + Bumps [@rjsf/core](https://github.com/rjsf-team/react-jsonschema-form) from 3.1.0 to 3.2.0. + - [Release notes](https://github.com/rjsf-team/react-jsonschema-form/releases) + - [Changelog](https://github.com/rjsf-team/react-jsonschema-form/blob/master/CHANGELOG.md) + - [Commits](https://github.com/rjsf-team/react-jsonschema-form/compare/v3.1.0...v3.2.0) + + --- + updated-dependencies: + - dependency-name: "@rjsf/core" + dependency-type: direct:production + update-type: version-update:semver-minor + ... + + Signed-off-by: dependabot[bot] + +commit b9ce1ce2c17bb66eac24738617ccf75cba5b5367 +Author: Andrew Thauer +Date: Wed Oct 27 15:00:40 2021 -0400 + + feat: allow custom location analyzer in next catalog builder + + Signed-off-by: Andrew Thauer + +commit 3eb32aab013aedee16430f476e32302f0ed47712 +Merge: dedd14b7b3 54dac6d2d1 +Author: Patrik Oldsberg +Date: Wed Oct 27 20:42:27 2021 +0200 + + Merge pull request #7802 from RoadieHQ/remove-unused-dep + + update d3 dependencies + +commit c9e843547efbf73320f01aa7c3c3115dc30d4322 +Author: Colton Padden +Date: Wed Oct 27 14:03:28 2021 -0400 + + Create `--path` directory if it does not already exist + + Instead of failing when the specified path does not exist, create it using + `mkdirs`. This ensures that that either the directory already exists, or it's + created. + + Signed-off-by: Colton Padden + +commit dedd14b7b3fde12b217555eb60ec819bc601b2c6 +Merge: 88a01d9320 134a12dfa6 +Author: Tim Hansen +Date: Wed Oct 27 11:57:37 2021 -0600 + + Merge pull request #7801 from RemonSinnema/patch-1 + + Fix typo in name + +commit 224e545a755733eda489b07b5627c3a522d5498e +Author: Thomas Viaud +Date: Wed Oct 27 17:53:46 2021 +0100 + + fix: run prettier + + Signed-off-by: Thomas Viaud + +commit 08de4fa957b9e18c37b5817c3a4324a78e8eb2e2 +Author: Thomas Viaud +Date: Wed Oct 27 17:38:37 2021 +0100 + + fix: Adding corrected code documentation for custom field extension + + Signed-off-by: Thomas Viaud + +commit 767fe912b2be3ef2ec3fccfa7c68820b17de3bd1 +Author: Jeremy Guarini +Date: Wed Oct 27 09:47:30 2021 -0700 + + add changeset + + Signed-off-by: Jeremy Guarini + +commit 72e7a876840642ad8ae7295abcd86e46a537fe3a +Author: Jeremy Guarini +Date: Wed Oct 27 09:36:30 2021 -0700 + + add more testing for FileExplorer tests + + Signed-off-by: Jeremy Guarini + +commit 134a12dfa6fcfa4cf8fbdaa7f5de02377002a931 +Merge: 494003b68e 88a01d9320 +Author: Ray Sinnema +Date: Wed Oct 27 18:35:20 2021 +0200 + + Fix typo + + Signed-off-by: Ray Sinnema + +commit ab451ef2274fc5ea56124d4f08870d0f3990a832 +Author: Alex Rybchenko +Date: Wed Oct 27 15:20:48 2021 +0200 + + updated RoutedTabs.test + + Signed-off-by: Alex Rybchenko + +commit 54dac6d2d153ef3b867b03b73d0f08542750d695 +Author: Brian Fletcher +Date: Wed Oct 27 15:38:38 2021 +0100 + + re-introduce updated version of d3 libs + + Signed-off-by: Brian Fletcher + +commit 96cfa561ebd00de4739ca7a6a6c9adc612497f0b +Author: Fredrik Adelöw +Date: Wed Oct 27 16:25:23 2021 +0200 + + Just some random improvements in backend-common too + + Signed-off-by: Fredrik Adelöw + +commit 88a01d9320b1ad60f5c6a7ace784c64e43926d62 +Merge: e31a4b5fd2 139f4b1f39 +Author: Ben Lambert +Date: Wed Oct 27 16:15:50 2021 +0200 + + Merge pull request #7771 from backstage/dependabot/npm_and_yarn/types/dockerode-3.3.0 + + build(deps): bump @types/dockerode from 3.2.7 to 3.3.0 + +commit e31a4b5fd2c5b99e8c46ae08a172bef049f76d0c +Merge: 0f68dfc195 ea21f7f567 +Author: Ben Lambert +Date: Wed Oct 27 16:15:24 2021 +0200 + + Merge pull request #7770 from backstage/dependabot/npm_and_yarn/typescript-json-schema-0.51.0 + + build(deps): bump typescript-json-schema from 0.50.1 to 0.51.0 + +commit afd5c82ce1e4d25a7e2692266e1d8525ccd9b35b +Author: Brian Fletcher +Date: Wed Oct 27 15:14:45 2021 +0100 + + adds a changeset file + + Signed-off-by: Brian Fletcher + +commit 0f68dfc1956e6c5fd52c24f93dbb10e438ab8c65 +Merge: 1f98ecd43c b0dc1fd241 +Author: Ben Lambert +Date: Wed Oct 27 16:14:23 2021 +0200 + + Merge pull request #7794 from backstage/dependabot/npm_and_yarn/spotify/eslint-config-base-12.0.0 + + build(deps): bump @spotify/eslint-config-base from 9.0.2 to 12.0.0 + +commit 494003b68e41481cfa42515055680c5b8cb1cd74 +Author: Ray Sinnema +Date: Tue Oct 26 18:16:05 2021 +0200 + + Reduce diff + + Signed-off-by: Ray Sinnema + +commit 806c2a7568d0ef02e0968861454b99b25b3554a6 +Author: Brian Fletcher +Date: Wed Oct 27 15:08:03 2021 +0100 + + removes unused d3-zoom dep + + Signed-off-by: Brian Fletcher + +commit b0dc1fd241f519101bd9a6262eef21460dab541c +Author: Ben Lambert +Date: Wed Oct 27 15:32:09 2021 +0200 + + add changeset + + Signed-off-by: Ben Lambert + +commit ea21f7f567f1652898c90bb63c55f5776822b821 +Author: blam +Date: Wed Oct 27 15:27:40 2021 +0200 + + chore: add changeset + + Signed-off-by: blam + +commit 4a8a1a8bbe7e9446cb8bc0e9e142896a69c12dc9 +Author: blam +Date: Wed Oct 27 15:25:40 2021 +0200 + + chore: fix up the types for this dependabot bump + + Signed-off-by: blam + +commit 2fdf3119d33a39f6d963477e7f548eb751efa03f +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Tue Oct 26 14:32:49 2021 +0000 + + build(deps): bump typescript-json-schema from 0.50.1 to 0.51.0 + + Bumps [typescript-json-schema](https://github.com/YousefED/typescript-json-schema) from 0.50.1 to 0.51.0. + - [Release notes](https://github.com/YousefED/typescript-json-schema/releases) + - [Commits](https://github.com/YousefED/typescript-json-schema/compare/v0.50.1...v0.51.0) + + --- + updated-dependencies: + - dependency-name: typescript-json-schema + dependency-type: direct:production + update-type: version-update:semver-minor + ... + + Signed-off-by: dependabot[bot] + +commit 139f4b1f39e5d6409287fa617796954ed3ce36b7 +Author: blam +Date: Wed Oct 27 15:14:37 2021 +0200 + + chore: revert the e2e + + Signed-off-by: blam + +commit ef9dd217b6e7fac534340fa209fed055d24c99a8 +Author: blam +Date: Wed Oct 27 15:14:02 2021 +0200 + + chore: reverting the node types + + Signed-off-by: blam + +commit 1abc9bab308eb108b099dd04f2efb9a983d68e91 +Author: blam +Date: Wed Oct 27 14:48:56 2021 +0200 + + chore: updating to work with the new @types/node + + Signed-off-by: blam + +commit 563212e5dd8e52ace7c84fb9e66bd347ddcc5c61 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Wed Oct 27 07:44:09 2021 +0000 + + build(deps): bump @types/dockerode from 3.2.7 to 3.3.0 + + Bumps [@types/dockerode](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/dockerode) from 3.2.7 to 3.3.0. + - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) + - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/dockerode) + + --- + updated-dependencies: + - dependency-name: "@types/dockerode" + dependency-type: direct:production + update-type: version-update:semver-minor + ... + + Signed-off-by: dependabot[bot] + +commit 1f98ecd43c5b76e8a819e41499ece7bbbe4c2f97 +Merge: 52ebd2d3a0 5f3460089e +Author: Ben Lambert +Date: Wed Oct 27 14:53:06 2021 +0200 + + Merge pull request #7756 from backstage/dependabot/npm_and_yarn/keyv-memcache-1.2.7 + + build(deps): bump keyv-memcache from 1.2.5 to 1.2.7 + +commit 965117dab87e2314765450b113296f8fe5429f7f +Author: Alex Rybchenko +Date: Wed Oct 27 14:48:24 2021 +0200 + + remove wrong sorting + + Signed-off-by: Alex Rybchenko + +commit 6364c3d6ffd438eb899a438e88c89dd104f942f1 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Wed Oct 27 12:43:19 2021 +0000 + + build(deps): bump @spotify/eslint-config-base from 9.0.2 to 12.0.0 + + Bumps [@spotify/eslint-config-base](https://github.com/spotify/web-scripts) from 9.0.2 to 12.0.0. + - [Release notes](https://github.com/spotify/web-scripts/releases) + - [Changelog](https://github.com/spotify/web-scripts/blob/master/CHANGELOG.md) + - [Commits](https://github.com/spotify/web-scripts/compare/v9.0.2...v12.0.0) + + --- + updated-dependencies: + - dependency-name: "@spotify/eslint-config-base" + dependency-type: direct:production + update-type: version-update:semver-major + ... + + Signed-off-by: dependabot[bot] + +commit 106a5dc3ad6efc9ecf212f9b5dd3cee080aba463 +Author: Oliver Sand +Date: Wed Oct 27 14:29:26 2021 +0200 + + Restore original casing for `kind`, `namespace` and `name` in `DefaultTechDocsCollator` + + Signed-off-by: Oliver Sand + +commit 93d0ea461258ffe09070ef7088cbf9baf2bee0bd +Author: Brian Fletcher +Date: Wed Oct 27 13:18:12 2021 +0100 + + add api reports changes + + Signed-off-by: Brian Fletcher + +commit ab6b7191c55a144dedf6b94448314bf4d672b882 +Author: Brian Fletcher +Date: Wed Oct 27 13:08:13 2021 +0100 + + change test to await the task worker create + + Signed-off-by: Brian Fletcher + +commit 3236071136feb402a2b6fa107677e90d4176860c +Author: Brian Fletcher +Date: Wed Oct 27 12:46:47 2021 +0100 + + change name of task worker builder function + + also makes it async + + Signed-off-by: Brian Fletcher + +commit 021986e8a3f164fece31eaa38b7f2cc9d312252a +Author: Alex Rybchenko +Date: Wed Oct 27 13:08:57 2021 +0200 + + fixed route resolving + + Signed-off-by: Alex Rybchenko + +commit 2223b6de60bccd7e85048727762bfcdba08590d8 +Author: Brian Fletcher +Date: Wed Oct 27 10:54:32 2021 +0100 + + adds a todo message to the router import + + Signed-off-by: Brian Fletcher + +commit 36e2b548cbf5e9a793d47f1d3212c9f45e14b4dd +Author: Fredrik Adelöw +Date: Wed Oct 27 11:51:43 2021 +0200 + + Fixing up integration-react as well + + Signed-off-by: Fredrik Adelöw + +commit 5a98c405f52b070918afb44f7116ecbaa6a6432a +Author: Brian Fletcher +Date: Wed Oct 27 10:48:17 2021 +0100 + + rename task agent to task manager + + Signed-off-by: Brian Fletcher + +commit a57927f5d5a41b70b2d90f4f889c65a6f22003a1 +Author: Matto +Date: Wed Oct 27 20:33:33 2021 +1100 + + Removed dependency, introduced isValidUrl, and reinstated `configPaths` + + Signed-off-by: Matto + +commit 52ebd2d3a0903ea7b066a8dd417c945e1c524646 +Merge: a3540dd9c2 40cfec8b3f +Author: Fredrik Adelöw +Date: Wed Oct 27 10:41:13 2021 +0200 + + Merge pull request #7796 from backstage/freben/api-more-theme + + More theme API cleanup + +commit 197601f21c2f307132f4f0038821e50301ce10de +Author: rodion +Date: Wed Oct 27 11:28:58 2021 +0300 + + fix: sentry-plugin passing token - no need for catch + + Signed-off-by: rodion + +commit 50eba2374b4d4ce2033714a94b0fe6b056adde9f +Author: Brian Fletcher +Date: Wed Oct 27 09:16:23 2021 +0100 + + revert prettier change to scaffolder examples + + Signed-off-by: Brian Fletcher + +commit a3540dd9c20959657941571573f2eee10262746b +Merge: baa03d72e9 8eedc159ae +Author: Fredrik Adelöw +Date: Wed Oct 27 09:52:23 2021 +0200 + + Merge pull request #7782 from backstage/freben/api-integration-etc + + more api fixes, in integration and theme + +commit baa03d72e90cb7121b568b38b057d83227df6e97 +Merge: 40681b867d 1a705377ff +Author: Johan Haals +Date: Wed Oct 27 09:41:33 2021 +0200 + + Merge pull request #7788 from RoadieHQ/custom-actions + + List custom scaffolder action packages + +commit 40681b867dd43c5027c4da5770e3723b7dc09a85 +Merge: 174e615e8f 004a23b5fc +Author: Ben Lambert +Date: Wed Oct 27 09:30:53 2021 +0200 + + Merge pull request #7738 from kennethzfeng/kfeng.fix-file-mode + + plugin/scaffolder: set the file mode in publish:github:pull-request. + +commit 40cfec8b3fecb85f8403afd1b0ba52b1336c60d4 +Author: Fredrik Adelöw +Date: Wed Oct 27 09:22:42 2021 +0200 + + More theme API cleanup + + Signed-off-by: Fredrik Adelöw + +commit 174e615e8f15ca28bde9a3b0537e36d6ab9578e9 +Merge: 082a6513f7 80afaa8929 +Author: Ben Lambert +Date: Wed Oct 27 09:19:49 2021 +0200 + + Merge pull request #7793 from backstage/dependabot/npm_and_yarn/microsoft/microsoft-graph-types-2.8.0 + + build(deps): bump @microsoft/microsoft-graph-types from 2.6.0 to 2.8.0 + +commit 082a6513f703501716c3b74fbabea5b272a50546 +Merge: 851ad240bb 640c21f0b1 +Author: Ben Lambert +Date: Wed Oct 27 09:19:20 2021 +0200 + + Merge pull request #7767 from ellisio/chore-deps-msw + + chore(deps): bump msw to v0.35.0 + +commit 851ad240bb118177ed296b53a0b2145262a32eac +Merge: 70b825d757 9dcad0bdad +Author: Johan Haals +Date: Wed Oct 27 09:06:18 2021 +0200 + + Merge pull request #7795 from julioz/patch-1 + + Add SoundCloud as adopter + +commit 9dcad0bdad6d8325741290c40695f66a96e740a3 +Author: Júlio Zynger +Date: Wed Oct 27 08:32:24 2021 +0200 + + Add SoundCloud + + Signed-off-by: Julio Zynger + +commit 80afaa8929eeff939784712d869e82896e8e2f94 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Wed Oct 27 04:10:16 2021 +0000 + + build(deps): bump @microsoft/microsoft-graph-types from 2.6.0 to 2.8.0 + + Bumps [@microsoft/microsoft-graph-types](https://github.com/microsoftgraph/msgraph-typescript-typings) from 2.6.0 to 2.8.0. + - [Release notes](https://github.com/microsoftgraph/msgraph-typescript-typings/releases) + - [Commits](https://github.com/microsoftgraph/msgraph-typescript-typings/compare/2.6.0...2.8.0) + + --- + updated-dependencies: + - dependency-name: "@microsoft/microsoft-graph-types" + dependency-type: direct:production + update-type: version-update:semver-minor + ... + + Signed-off-by: dependabot[bot] + +commit 70b825d7570b1e92470418bdd1e3983e9b1b12fc +Merge: 5d12e5aed7 bd7f1e506c +Author: Tim Hansen +Date: Tue Oct 26 21:46:46 2021 -0600 + + Merge pull request #7524 from GunnerStraiker1/entity-type-picker-hidden + + EntityTypePicker can be hidden and initially set + +commit 5d12e5aed75809ce26d944e06a117dd613381ee2 +Merge: bce30f0c94 6f8afb401b +Author: Tim Hansen +Date: Tue Oct 26 21:19:39 2021 -0600 + + Merge pull request #7763 from tonytamsf/splunk-adopters + + added Splunk + +commit 6f8afb401b6962832426e770c5f087f28a6be3ff +Author: Tony Tam +Date: Mon Oct 25 08:15:43 2021 -0700 + + added Splunk + + Signed-off-by: Tony Tam + +commit 7ea444c78d28af004a9c11bf2f8db0af9234c028 +Author: Jeremy Guarini +Date: Tue Oct 26 10:26:23 2021 -0700 + + update filexplorer test + + Signed-off-by: Jeremy Guarini + +commit b3fb448e7bd22db2da17be0eae1feab2c8d4026a +Author: Jeremy Guarini +Date: Mon Oct 25 08:53:56 2021 -0700 + + removed extra line in imports + + Signed-off-by: Jeremy Guarini + +commit f7a7fdc2afcf16541036b92e88d00d85d66406ba +Author: Jeremy Guarini +Date: Thu Oct 21 12:28:43 2021 -0700 + + fixed prettier issues with FileExplorer files + + Signed-off-by: Jeremy Guarini + +commit bd7f1e506ca30468b64a5943d0c2bd1fa2b8a370 +Author: Victor Perera +Date: Tue Oct 26 16:43:45 2021 -0500 + + Tests fixed + + Signed-off-by: Victor Perera + +commit 33d7bd0baaac3fa2d3b0b34d27b270f109953578 +Author: rodion +Date: Tue Oct 26 21:57:04 2021 +0300 + + fix: sentry plugin can pass id token + + Signed-off-by: rodion + +commit bce30f0c949ad91caec9caf77c3e46971e97a49b +Merge: cad56f4794 10d267a1b7 +Author: Fredrik Adelöw +Date: Tue Oct 26 20:56:55 2021 +0200 + + Merge pull request #7789 from backstage/freben/api-config + + Minor fix for the config package too + +commit 10d267a1b7124c7cdeddc61abbeea37fff140a64 +Author: Fredrik Adelöw +Date: Tue Oct 26 19:36:17 2021 +0200 + + Minor fix for the config package too + + Signed-off-by: Fredrik Adelöw + +commit cad56f47941f4773e5d887215726053fdff1342a +Merge: 7e3398518e 3e64184259 +Author: Tim Hansen +Date: Tue Oct 26 11:21:13 2021 -0600 + + Merge pull request #7787 from RemonSinnema/adevinta + + Add Adevinta + +commit 1a705377ffb6ce2f19307d97dcecba9d86cd60a7 +Author: Nicolas Arnold +Date: Tue Oct 26 17:23:44 2021 +0100 + + List custom scaffolder action packages + + This here adds a table with a list of opensource scaffolder actions that can be used by anyone in the community. + + Signed-off-by: Nicolas Arnold + +commit 3e641842598b5aec809c7e15c1ca608f4cb99eb1 +Author: Ray Sinnema +Date: Tue Oct 26 18:23:17 2021 +0200 + + Add Adevinta + + Signed-off-by: Ray Sinnema + +commit d898d29746f7fd916962af344956b3e3e89573fb +Author: Rémon (Ray) Sinnema +Date: Tue Oct 26 17:42:59 2021 +0200 + + Add Adevinta + + Signed-off-by: Ray Sinnema + +commit 7e3398518e26725a305406c150d295ba89049b38 +Merge: 3b163f7d92 cfd54b9af4 +Author: Eric Peterson +Date: Tue Oct 26 18:09:52 2021 +0200 + + Merge pull request #7786 from backstage/techdocs/fix-windows-builds + + [TechDocs] Fix TechDocs common bug (and tests) on windows + +commit cfd54b9af4ce3ca1000cbcfb385cc8dfc4edbe60 +Author: Eric Peterson +Date: Tue Oct 26 17:41:53 2021 +0200 + + Fix TechDocs common bug (and tests) on windows. + + Signed-off-by: Eric Peterson + +commit f49099fc13ea584f8d6807c4b6734ebc7d08db75 +Author: Brian Fletcher +Date: Tue Oct 26 15:42:02 2021 +0100 + + fix more imports to follow convention + + Signed-off-by: Brian Fletcher + +commit 640c21f0b1685c32f8580c6326b31b2c56a0107d +Author: blam +Date: Tue Oct 26 17:24:44 2021 +0200 + + chore: updating packages for release + + Signed-off-by: blam + +commit 112a21ae94c047cc0d482ebfb2fb322998d83aa7 +Author: blam +Date: Tue Oct 26 10:59:26 2021 +0200 + + chore: reworking changeset + + Signed-off-by: blam + +commit c5bb1df55d549ad14b6930df1c73871ba786a180 +Author: blam +Date: Tue Oct 26 10:58:25 2021 +0200 + + chore: added changeset + + Signed-off-by: blam + +commit d465f2e0afd1850ca4e4b6029ad97e59721704f5 +Author: blam +Date: Tue Oct 26 10:57:13 2021 +0200 + + chore: bump the msw package and remove it from test-utils as it's not even needed + + Signed-off-by: blam + +commit 034031ec6879bd84f35f574b12c6a3c56294ea9e +Author: Andrew Ellis +Date: Mon Oct 25 15:07:52 2021 -0600 + + chore(deps): bump msw to v0.35.0 + + Signed-off-by: Andrew Ellis + +commit 3b163f7d92c3f333a2caca7ef66c65ccf724734f +Merge: db300059a0 d895c61ebb +Author: Ben Lambert +Date: Tue Oct 26 17:13:08 2021 +0200 + + Merge pull request #7772 from backstage/dependabot/npm_and_yarn/types/minimist-1.2.2 + + build(deps-dev): bump @types/minimist from 1.2.0 to 1.2.2 + +commit db300059a0feeb53866c2d8e3303486a9c0c983a +Merge: cba0a0382f dc6d2eb2a3 +Author: Ben Lambert +Date: Tue Oct 26 17:12:35 2021 +0200 + + Merge pull request #7539 from backstage/dependabot/npm_and_yarn/webpack-dev-server-4.3.1 + + build(deps): bump webpack-dev-server from 4.0.0-rc.0 to 4.3.1 + +commit cba0a0382f096461c4a7a949be20bce1fb295500 +Merge: e33d8313ad 38e3fbe655 +Author: Ben Lambert +Date: Tue Oct 26 17:11:29 2021 +0200 + + Merge pull request #7783 from backstage/blam/e2e-test2 + + Windows E2E tests - to hell with you + +commit 8eedc159ae5c96cbb8b23a792e4dbe1a08c12250 +Author: Fredrik Adelöw +Date: Tue Oct 26 16:55:36 2021 +0200 + + fix up errors too + + Signed-off-by: Fredrik Adelöw + +commit 38e3fbe655da2c893abe06aa744ab2d65bced21a +Author: blam +Date: Tue Oct 26 16:36:19 2021 +0200 + + chore: bump old space size again? + + Signed-off-by: blam + +commit d895c61ebb7b0bffa4fb7f27d01293de581bea7e +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Tue Oct 26 14:35:45 2021 +0000 + + build(deps-dev): bump @types/minimist from 1.2.0 to 1.2.2 + + Bumps [@types/minimist](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/minimist) from 1.2.0 to 1.2.2. + - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) + - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/minimist) + + --- + updated-dependencies: + - dependency-name: "@types/minimist" + dependency-type: direct:development + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit dc6d2eb2a3835c8a39e6249ce851935b58f0a1fe +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Tue Oct 26 14:32:56 2021 +0000 + + build(deps): bump webpack-dev-server from 4.0.0-rc.0 to 4.3.1 + + Bumps [webpack-dev-server](https://github.com/webpack/webpack-dev-server) from 4.0.0-rc.0 to 4.3.1. + - [Release notes](https://github.com/webpack/webpack-dev-server/releases) + - [Changelog](https://github.com/webpack/webpack-dev-server/blob/master/CHANGELOG.md) + - [Commits](https://github.com/webpack/webpack-dev-server/compare/v4.0.0-rc.0...v4.3.1) + + --- + updated-dependencies: + - dependency-name: webpack-dev-server + dependency-type: direct:production + update-type: version-update:semver-minor + ... + + Signed-off-by: dependabot[bot] + +commit e33d8313adef0a8bfa2c578e8c7738c21efb43f8 +Merge: d5fb02775a 6c1a26a8d2 +Author: Ben Lambert +Date: Tue Oct 26 16:29:35 2021 +0200 + + Merge pull request #7781 from backstage/blam/fixing-dependabot-react + + chore: goodbye old core versions 👋 + +commit a15d02851747791d6e2fde8f82d18b12cb990b85 +Author: Fredrik Adelöw +Date: Tue Oct 26 16:07:59 2021 +0200 + + more api fixes, in integration and theme + + Signed-off-by: Fredrik Adelöw + +commit d5fb02775a229c5097ca3a1907fd039e55f52ada +Merge: dd028ea861 f1e96dc5b1 +Author: Johan Haals +Date: Tue Oct 26 15:56:35 2021 +0200 + + Merge pull request #7774 from backstage/msw/usages + + chore/cli: Replace msw with setupRequestMockHandlers + +commit 6c1a26a8d2bec9ad293608e0be353cc8bf9cb5f2 +Author: blam +Date: Tue Oct 26 15:40:47 2021 +0200 + + chore: goodbye old core versions 👋 + + Signed-off-by: blam + +commit dd028ea86110a4c5829a16c3b21382613bb959ee +Merge: a34bf5b330 65bf24bc1d +Author: Ben Lambert +Date: Tue Oct 26 15:04:40 2021 +0200 + + Merge pull request #7775 from backstage/blam/e2e-tests + + windows e2e build + +commit a34bf5b330edd55c18546402aed9066503d4990a +Merge: 7ad5ed685f c2d50a0073 +Author: Fredrik Adelöw +Date: Tue Oct 26 14:51:11 2021 +0200 + + Merge pull request #7779 from backstage/freben/yah-cli-small-one + + Add docs to the last export of cli-common + +commit bf76bb7a1d88762307353dc623de86ab84eb1a34 +Author: Himanshu Mishra +Date: Tue Oct 26 14:43:30 2021 +0200 + + create github issue with a formatted body + + Co-authored-by: Harry Hogg + Signed-off-by: Himanshu Mishra + +commit 7ad5ed685fdf04409fe1846851429f6e54285853 +Merge: 18d73ecc9d 6b615e92c8 +Author: Ben Lambert +Date: Tue Oct 26 14:38:51 2021 +0200 + + Merge pull request #7778 from backstage/freben/more-publicalities + + clean up exports in core-app-api + +commit 65bf24bc1db2873a72bfcfa97b0b33a6a4572958 +Author: blam +Date: Tue Oct 26 14:27:33 2021 +0200 + + chore: removing the log10 and just do linear backoff + + Signed-off-by: blam + +commit 3cb1e8e6ee5f7561905c639b98427fc9bd109e71 +Author: Himanshu Mishra +Date: Tue Oct 26 14:16:29 2021 +0200 + + fix types/react version + + Co-authored-by: Harry Hogg + Signed-off-by: Himanshu Mishra + +commit c2d50a0073f8941ccd4ead9711606bfaec36250b +Author: Fredrik Adelöw +Date: Tue Oct 26 14:13:17 2021 +0200 + + Add docs to the last export of cli-common + + Signed-off-by: Fredrik Adelöw + +commit 6e1a523f86b362f4a05ad478bc09c2581e18cc98 +Author: Harry Hogg +Date: Mon Oct 25 13:04:56 2021 +0100 + + chore(Snyk): Added scripts for syncing Snyk vulnerabilities to Github issues. + + Signed-off-by: Harry Hogg + +commit 48bd2e2be206e76db903f7ded79dbcfca31d80b5 +Author: Harry Hogg +Date: Fri Oct 22 14:57:02 2021 +0100 + + chore(Snyk): Added workflow for outputting the Snyk report as JSON + + Signed-off-by: Harry Hogg + Co-Authored-By: Himanshu Mishra +Date: Tue Oct 26 14:01:32 2021 +0200 + + catalog-react: export loadIdentityOwnerRefs and loadCatalogOwnerRefs all the way + + Signed-off-by: Himanshu Mishra + +commit 6b615e92c8fbf8e5b1b97a838e95b35a38f9f489 +Author: Fredrik Adelöw +Date: Tue Oct 26 12:22:28 2021 +0200 + + clean up exports in core-app-api + + Signed-off-by: Fredrik Adelöw + +commit 38ad8746c0ac4247c64c3cdbf438ad0853384635 +Author: blam +Date: Tue Oct 26 13:45:04 2021 +0200 + + chore: fixing typescript EXPECTED_LOAD_ERRORS + + Signed-off-by: blam + +commit 1af1f76cb8cda4936d341f3c88909d23947e4cad +Author: blam +Date: Tue Oct 26 13:40:45 2021 +0200 + + chore: add another exponential delay to wait for the page to load too + + Signed-off-by: blam + +commit f733a19f8519d962ebecaf8bbb3043d0711abfc2 +Author: blam +Date: Tue Oct 26 13:38:30 2021 +0200 + + chore: exponential backoff for all errors not just timeouts + + Signed-off-by: blam + +commit c754c390ee16c4a89a6609fc057772ae9ffd9217 +Author: Brian Fletcher +Date: Tue Oct 26 12:09:54 2021 +0100 + + fix up exports to follow covention + + Signed-off-by: Brian Fletcher + +commit 0235260c9f0809111c7d9a282189455bbd4bd955 +Author: blam +Date: Tue Oct 26 12:56:51 2021 +0200 + + chore: added env + + Signed-off-by: blam + +commit 855d460611216a54d045df5b269c65f8641e94f9 +Author: Matto +Date: Tue Oct 26 21:50:49 2021 +1100 + + Change variable name + + Signed-off-by: Matto + +commit d781df18437df3eb15149ce292158b0527f637ac +Author: Brian Fletcher +Date: Tue Oct 26 11:34:13 2021 +0100 + + hide workflow runners behind createWorker + + Also renames legacy and default workflow runners. + + Signed-off-by: Brian Fletcher + +commit b92b436efcc922c474492fd14b7381f072fad830 +Author: blam +Date: Tue Oct 26 12:33:19 2021 +0200 + + chore: use the debug module + + Signed-off-by: blam + +commit 82a79983753224790fe2d376816123e972ab151d +Author: blam +Date: Tue Oct 26 12:15:33 2021 +0200 + + chore: run the e2e-tests when the correct path changes + + Signed-off-by: blam + +commit 6f923c9e1d5ea2c0ceec745e6c61be5f3e3e51e1 +Author: blam +Date: Tue Oct 26 12:00:26 2021 +0200 + + chore: increase the attempts + + Signed-off-by: blam + +commit fbedcebe7cf3ed8713e4e7e215b29d7402d38643 +Author: blam +Date: Tue Oct 26 11:59:00 2021 +0200 + + chore: turn on some debug logging + + Signed-off-by: blam + +commit 9c996ec4e2bb8ca788305cc382423ccc9cbd7a0a +Merge: ea0f921cd3 18d73ecc9d +Author: hiba-aldalaty +Date: Tue Oct 26 10:57:20 2021 +0100 + + Merge branch 'master' into scalable-sidebar-new-implementation + +commit f18755ee497a7489fcb5a3f28425b51580f90bfb +Author: Nicolas Arnold +Date: Tue Oct 26 09:57:26 2021 +0100 + + Using req instead of state + + Signed-off-by: Nicolas Arnold + +commit f1e96dc5b11d28c93e971ead275f0e0daefb4183 +Author: Johan Haals +Date: Tue Oct 26 10:38:13 2021 +0200 + + chore/cli: Replace msw with setupRequestMockHandlers + + Signed-off-by: Johan Haals + +commit 45a2a91a3165aca21aed793f7744326c9a55e29b +Author: Brian Fletcher +Date: Tue Oct 26 09:48:56 2021 +0100 + + update api reports after merge + + Signed-off-by: Brian Fletcher + +commit 118df0f94d9e2bb6c56f8334ca047f8ef69d56df +Merge: 8c93478a4e 18d73ecc9d +Author: Nicolas Arnold +Date: Tue Oct 26 09:48:31 2021 +0100 + + Merge branch 'backstage:master' into ch3367 + +commit 18d73ecc9d38612947e9d1a01c3c18f05c7b325a +Merge: ce695c62fb c6c2942daa +Author: Fredrik Adelöw +Date: Tue Oct 26 10:40:14 2021 +0200 + + Merge pull request #7749 from backstage/freben/very-public + + fix some of the ae-missing-release-tag warnings in core-components + +commit ce695c62fb298d9045620ccd502c038088d685bb +Merge: 2ba4a2caef 59a7e369a9 +Author: Ben Lambert +Date: Tue Oct 26 10:38:51 2021 +0200 + + Merge pull request #7744 from OscarDHdz/scaffolder/EnableActionButtonsIfTemplateFails + + Scaffolder: Enable buttons if template fails to execute + +commit c1d186858f40f4129a4b7073852968c43d4817d2 +Merge: e85f494939 2ba4a2caef +Author: Brian Fletcher +Date: Tue Oct 26 08:55:33 2021 +0100 + + Merge branch 'master' into scaffolder-improvement + +commit 2ba4a2caefd68f16d5e20742132e5dee23636de4 +Merge: 5d3253f7b6 61fe752dad +Author: Tim Hansen +Date: Mon Oct 25 20:20:25 2021 -0600 + + Merge pull request #7765 from RodionGork/fix/sentry-plugin-period-values + + fix: sentry plugin corrected allowed period values + +commit 5d3253f7b61f3dcb28e8f3a292e761e067fe9021 +Merge: d066399739 5e10974af6 +Author: Tim Hansen +Date: Mon Oct 25 13:57:46 2021 -0600 + + Merge pull request #7755 from jrusso1020/jrusso/export-components-for-custom-scaffolderpage + + Export components so developers can customize the scaffolder page + +commit 61fe752dadfb5499e2ca6e225f551450f742eb68 +Author: rodion +Date: Mon Oct 25 22:48:14 2021 +0300 + + fix: sentry plugin corrected allowed period values + according https://docs.sentry.io/api/events/list-a-projects-issues/ + + Signed-off-by: rodion + +commit c6c2942daa1eab026362853afa9bf82363a6c536 +Author: Fredrik Adelöw +Date: Mon Oct 25 19:11:14 2021 +0200 + + address review comments + + Signed-off-by: Fredrik Adelöw + +commit 59a7e369a9cc50933fde0df29b96c21984ac37ea +Author: OscarDHdz +Date: Mon Oct 25 11:31:24 2021 -0500 + + Scaffolder: update template execution error handling + + Signed-off-by: OscarDHdz + +commit f879e8b2b8f5736dc10e42d4aa36bcad95094a7c +Author: Harry Hogg +Date: Mon Oct 18 11:43:22 2021 +0100 + + fix(backend): Load all schemas from monorepo packages + + Signed-off-by: Harry Hogg + +commit 4b92638259ff7a4a0a39f3e51a81254f151609b1 +Author: Harry Hogg +Date: Mon Oct 18 11:00:01 2021 +0100 + + test(escapeRegExp): Just an extra test to make sure non-regexy strings don't get escaped + + Signed-off-by: Harry Hogg + +commit deaec1ee3fe5c55b8fdc0b4a7a3c248416d700ac +Author: Harry Hogg +Date: Mon Oct 18 10:59:21 2021 +0100 + + fix(rootLogger): Only set a regex if there are redactions given, otherwise everything gets redacted + + Signed-off-by: Harry Hogg + +commit 488e6145cbe04ac0a7ec8708b26615a0fe9a6ff0 +Author: Harry Hogg +Date: Thu Oct 14 13:33:46 2021 +0100 + + fix(rootLogger): Renamed to setRootLoggerRedactionList and do not expose publically + + Signed-off-by: Harry Hogg + +commit a9025f70ba765fc85a4af0c4d50b925d594ef898 +Author: Harry Hogg +Date: Thu Oct 14 13:30:43 2021 +0100 + + fix(rootLogger): Added util for escaping a regular expression + + Signed-off-by: Harry Hogg + +commit 3c10980ec5a4052ad15b771395fafb4ef1e7253d +Author: Harry Hogg +Date: Tue Oct 5 15:17:32 2021 +0100 + + test(rootLogger): Redaction formatting + + Signed-off-by: Harry Hogg + +commit f8a7f5723a849195ad5946dfabe18dac7fcc33d0 +Author: Harry Hogg +Date: Tue Oct 5 12:34:27 2021 +0100 + + Removed added dependency + + Signed-off-by: Harry Hogg + +commit 18d14d655eba82c981698d0f4f94b96afd739312 +Author: Harry Hogg +Date: Thu Sep 30 13:32:03 2021 +0100 + + fix(config): Subscribe to config changes instead of piggy backing off the loader watch. + + Signed-off-by: Harry Hogg + +commit 12428bf338deeaa1e32e9bb68092e2f8cf762645 +Author: Harry Hogg +Date: Thu Sep 30 13:31:07 2021 +0100 + + fix(config): Use config get() and find secrets using one big RegExp instead + + Signed-off-by: Harry Hogg + +commit 54decb6266b644b932fe6e91bca7ef6f7b703d6c +Author: Harry Hogg +Date: Wed Sep 29 13:47:13 2021 +0100 + + docs(api-report): Updated API documentation + + Signed-off-by: Harry Hogg + +commit 1be8d2abdbfb0c12ef1dcb199cc2e410b8d9ac5a +Author: Harry Hogg +Date: Wed Sep 29 12:04:09 2021 +0100 + + docs(changeset): Addded changeset for the sercret redaction + + Signed-off-by: Harry Hogg + +commit 94929707e93f5a7be1f05b1138704deda96be2cf +Author: Harry Hogg +Date: Wed Sep 29 12:00:25 2021 +0100 + + feat(backend-common): Pass the redaction map from the backend config-loader to the logger + + Signed-off-by: Harry Hogg + +commit a2b66f2f4d12fde3e8d2d89fcb1d1f4ead1b6c65 +Author: Harry Hogg +Date: Wed Sep 29 11:52:34 2021 +0100 + + feat(logger): Added redaction filter to the rootLogger + + Signed-off-by: Harry Hogg + +commit ee801b5c2b1e207be84baf5d538c88ca957e2168 +Author: Harry Hogg +Date: Wed Sep 29 11:51:21 2021 +0100 + + feat(config): Added a getMap method to return a flattened map of the loaded config + + Signed-off-by: Harry Hogg + +commit 3e61a4da9e6849773319f4acf8e745c7eb3cd0dc +Author: Himanshu Mishra +Date: Mon Sep 13 12:21:29 2021 +0200 + + backend: add some todos for redacting secrets from logs + + Co-authored-by: Harry Hogg + Signed-off-by: Himanshu Mishra + +commit 5f3460089e12f2c5e7bc05f4dc5369f910bce378 +Author: blam +Date: Mon Oct 25 17:41:36 2021 +0200 + + chore: revert yarn.lock changes for @types/react packages + + Signed-off-by: blam + +commit 004a23b5fcb88a645a7ad0c06cbba53b9cd96c4b +Author: Kenneth Feng +Date: Mon Oct 25 10:18:56 2021 -0400 + + update octokit-plugin-create-pull-request in yarn.lock + + Signed-off-by: Kenneth Feng + +commit ce024e93ce042faedd4ff238c8bb111fa4107166 +Author: Kenneth Feng +Date: Mon Oct 25 10:16:44 2021 -0400 + + Cast string 'base64' to the compatible Encoding type. + + Signed-off-by: Kenneth Feng + +commit 5e10974af6c614df6f4828c5c97a2846d340e081 +Author: jrusso1020 +Date: Sun Oct 24 13:28:15 2021 -0400 + + Export components so developers can customize the scaffolder page + + This is the first step to allow developers to customize the scaffolder + page. With this work all the scaffolder page is now available to + backstage developers and they can customize the current scaffolder + page how they like similar to what is available for the catalog page + and other plugin pages. + + Future work that has been discussed is possibly allowing for SwimLane + components that will allow developers to surface specific templates + or organize templates in specific ways + + Signed-off-by: jrusso1020 + +commit d066399739857fb45db448ded185b684b34de7e3 +Merge: 96a2a23167 e571311f8a +Author: Eric Peterson +Date: Mon Oct 25 15:34:10 2021 +0200 + + Merge pull request #7554 from cmpadden/techdocs-storage-subfolder + + Support optional bucketRootPath in GCS and S3 techdocs publishers + +commit 96a2a231674cc9b6e854cf5469eb0e42ec4338b4 +Merge: 0ad4e5dab0 bf5dfa2708 +Author: Ben Lambert +Date: Mon Oct 25 15:16:59 2021 +0200 + + Merge pull request #7729 from stoiev/update-datadog-rum-version + + update datatogRum browser agent version + +commit e571311f8ade8607736a4feda7f05841cad7ffc4 +Author: Colton Padden +Date: Mon Oct 25 09:11:22 2021 -0400 + + downgrade changeset impact to patch for bucketRootPath implementation + + Signed-off-by: Colton Padden + +commit 0ad4e5dab0c2f182d1f61fb0be6553db33cbde73 +Merge: 874150c602 7359623e87 +Author: Ben Lambert +Date: Mon Oct 25 15:00:32 2021 +0200 + + Merge pull request #7753 from awanlin/topic/azure-devops-frontend-refactoring + + Azure DevOps Frontend Refactoring + +commit 874150c60204687d0d314892e2c4a0b1f4348a27 +Merge: 2e66c49c25 43b77e1e5e +Author: Ben Lambert +Date: Mon Oct 25 14:56:29 2021 +0200 + + Merge pull request #7737 from RodionGork/feat/sentry-plugin-allows-search-query + + fix: sentry plugin allows search query parameter + +commit 2e66c49c25541dd74aed3ba746b0575294892779 +Merge: d99c49b6dc 1695c17b2e +Author: Ben Lambert +Date: Mon Oct 25 14:54:00 2021 +0200 + + Merge pull request #7731 from backstage/rugvip/storybewk + + storybook: support args for selecting a subset of packages + +commit 1695c17b2e45a42288b695ef704c5e5e7a56096a +Author: Patrik Oldsberg +Date: Thu Oct 21 15:18:18 2021 +0200 + + storybook: support args for selecting a subset of packages + + Signed-off-by: Patrik Oldsberg + +commit 43b77e1e5e855335da997f74562c9fd13b924697 +Author: rodion +Date: Mon Oct 25 15:05:07 2021 +0300 + + fix: sentry-plugin query parameter is optional + + Signed-off-by: rodion + +commit d99c49b6dcec14b83ce82c4663ae62998a0b1cb5 +Merge: 49252f0d6d b34a8365b1 +Author: Suzanne Daniels +Date: Mon Oct 25 13:33:01 2021 +0200 + + Merge pull request #7499 from suuus/suuus/docs + + Revamp of getting started guide - part 1 + +commit 49252f0d6d3bf4339217645921555310ffa631bb +Merge: a1b042b508 76a85113bc +Author: Johan Haals +Date: Mon Oct 25 11:09:16 2021 +0200 + + Merge pull request #7727 from backstage/test-utils-core + + Move test-utils-core into test-utils + +commit a1b042b50870863ca2d328f49e9f0a9f1339dcc2 +Merge: a22ebf3da6 2eebc9bac3 +Author: Ben Lambert +Date: Mon Oct 25 11:00:46 2021 +0200 + + Merge pull request #7752 from awanlin/topic/add-duration-and-identity-to-azure-devops-backend + + Added duration and identity as well as minor refactoring + +commit 4289ac5322f5316655360352d70f845a5ff6fc13 +Author: blam +Date: Mon Oct 25 10:34:01 2021 +0200 + + chore: export the types properly and update the api-report + + Signed-off-by: blam + +commit a22ebf3da643818ad458d2faa27e7082922b6ee1 +Merge: 6a4e6e3898 9a9c630ad8 +Author: Ben Lambert +Date: Mon Oct 25 10:23:00 2021 +0200 + + Merge pull request #7681 from mclarke47/refresh-kubernetes-plugin-at-interval + + Refresh k8s plugin at interval + +commit d184e50c50937f00e971b2513e35f64273d18a14 +Author: blam +Date: Mon Oct 25 10:21:17 2021 +0200 + + chore: updating api report + + Signed-off-by: blam + +commit 6a4e6e38983d24f2a8eb51bb5ba7cfe7cf0fb5a8 +Merge: 4b243fbb96 a9a8c6f7c5 +Author: Ben Lambert +Date: Mon Oct 25 10:04:04 2021 +0200 + + Merge pull request #7733 from cmpadden/tech-docs-scroll-restoration + + Scroll to Top of TechDocs Reader During Page Navigation + +commit 3c4bbd7ad6f8ece322f607a8acfc56fcc4af1d96 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Mon Oct 25 04:12:29 2021 +0000 + + build(deps): bump keyv-memcache from 1.2.5 to 1.2.7 + + Bumps [keyv-memcache](https://github.com/jaredwray/keyv-memcache) from 1.2.5 to 1.2.7. + - [Release notes](https://github.com/jaredwray/keyv-memcache/releases) + - [Commits](https://github.com/jaredwray/keyv-memcache/compare/v1.2.5...v1.2.7) + + --- + updated-dependencies: + - dependency-name: keyv-memcache + dependency-type: direct:production + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit 7359623e8775a58479e79717a4cc470497f3cbd4 +Author: Andre Wanlin +Date: Sun Oct 24 10:13:28 2021 -0500 + + Added changeset + + Signed-off-by: Andre Wanlin + +commit 91e7f2eda8c8d168109c51b6643d4281940e4c29 +Author: Andre Wanlin +Date: Sun Oct 24 10:04:11 2021 -0500 + + Added tests for state and result functions + + Signed-off-by: Andre Wanlin + +commit 7adcfb4f764a3dc066f6f84cca3528fe4c40f8b6 +Author: Andre Wanlin +Date: Sun Oct 24 08:45:22 2021 -0500 + + Refactored README + + Signed-off-by: Andre Wanlin + +commit e1ebaff47a1f6e73437495eb1d6da6d015431012 +Author: Andre Wanlin +Date: Sun Oct 24 08:09:00 2021 -0500 + + Removed router + + Signed-off-by: Andre Wanlin + +commit 2eebc9bac3d71ec387cf352b3b679fb0961c29af +Author: Andre Wanlin +Date: Sat Oct 23 11:50:43 2021 -0500 + + Added changeset + + Signed-off-by: Andre Wanlin + +commit 75a865215cd70a1bd41e136d56ea5240b749e464 +Author: Andre Wanlin +Date: Sat Oct 23 11:47:54 2021 -0500 + + Added duration and identity as well as minor refactoring + + Signed-off-by: Andre Wanlin + +commit 7a5cb137b599094a019904ad6053031829dfb18c +Author: Kenneth Feng +Date: Fri Oct 22 21:45:04 2021 -0400 + + Always use base64 encoding to prevent interpreting binary files as utf-8 text files + + Signed-off-by: Kenneth Feng + +commit 4b243fbb966cc3126274237de53826bd8b186aaf +Merge: 73aff6c039 10615525f3 +Author: Fredrik Adelöw +Date: Fri Oct 22 20:40:48 2021 +0200 + + Merge pull request #7747 from backstage/freben/stop-it-with-the-config + + Remove all internal usage of the deprecated json and observable types + +commit 2a0ad49da095cbc471ca54e0e8a05d9ad66e7b65 +Author: Fredrik Adelöw +Date: Fri Oct 22 16:59:54 2021 +0200 + + fix some of the ae-missing-release-tag warnings in core-components + + Signed-off-by: Fredrik Adelöw + +commit 8c93478a4eb4d2849a8123d07cc8e0f381b397e2 +Author: Nicolas Arnold +Date: Fri Oct 22 10:22:54 2021 +0100 + + Update api docs + + Signed-off-by: Nicolas Arnold + +commit 10615525f364e7b91820334e5787226c9f5a9283 +Author: Fredrik Adelöw +Date: Fri Oct 22 16:11:23 2021 +0200 + + Do Observable too + + Signed-off-by: Fredrik Adelöw + +commit 56f182dde2767d8e700d5ed0c16c052891f54626 +Author: Fredrik Adelöw +Date: Fri Oct 22 15:52:51 2021 +0200 + + Remove all internal usage of the Json types + + Signed-off-by: Fredrik Adelöw + +commit b9602099765c3063cbcfef6374c5f6735033db98 +Author: Kenneth Feng +Date: Fri Oct 22 10:01:55 2021 -0400 + + fix style issues + + Signed-off-by: Kenneth Feng + +commit 73aff6c0394b73b8a86e11aafb9e53fabb50c8f9 (tag: v0.52.1, tag: release-2021-10-22) +Merge: 86086e36c9 89950060ef +Author: Fredrik Adelöw +Date: Fri Oct 22 15:54:06 2021 +0200 + + Merge pull request #7743 from backstage/freben/release-types + + release @backstage/types + +commit 5df2435892d4961a844637bb611e5f9a8710e75d +Author: OscarDHdz +Date: Fri Oct 22 08:23:43 2021 -0500 + + Scaffolder: Enable buttons if template fails to execute + + Signed-off-by: OscarDHdz + +commit 89950060ef0282bf70f9eec80a4f6e77c4c4012e +Author: Fredrik Adelöw +Date: Fri Oct 22 15:02:34 2021 +0200 + + release @backstage/types + + Signed-off-by: Fredrik Adelöw + +commit e85f494939b548a3a5e6b38d3c4ddfbb09c8ab2e +Merge: 33d99f7cdd 86086e36c9 +Author: Brian Fletcher +Date: Fri Oct 22 10:44:33 2021 +0100 + + Merge branch 'master' into scaffolder-improvement + +commit 33d99f7cdd963da3421b4570446641dd0dc890dd +Author: Brian Fletcher +Date: Fri Oct 22 08:12:29 2021 +0100 + + data store options type added + + Signed-off-by: Brian Fletcher + +commit 7714547af59367d96f96a5807d38bb65fae6207d +Author: Nicolas Arnold +Date: Thu Oct 21 10:27:19 2021 +0100 + + Fixing types + + Signed-off-by: Nicolas Arnold + +commit f86173221c5929057e50f5aa91909e0a433652f2 +Author: Nicolas Arnold +Date: Wed Oct 13 17:49:04 2021 +0100 + + Add callback to allow users to override state + + This is a slightly different implementation. It allows the user to pass in a reference to a callback so that the state + can be set. It was a suggestion from @Rugvip on a discussion we had offline. + + The callback is an async function that returns a Promise + + Note: due to the way the OAuthAdapter works, this callback must include an env + nonce. Without them, your oauth request will fail. + + Signed-off-by: Nicolas Arnold + +commit 86086e36c93de667387e5c919fef34f3eee52ae3 +Merge: 0ede1cebca d4d07abec0 +Author: Patrik Oldsberg +Date: Fri Oct 22 11:27:59 2021 +0200 + + Merge pull request #7742 from backstage/rugvip/fixup + + types: fix cli dep version query + +commit 3b767f19c97ecfa436f3e578121d69d3207890c9 +Author: Nicolas Arnold +Date: Fri Oct 1 09:39:55 2021 +0100 + + Adopt extra field for OAuth state + + Currently, the OAuth state is very limited. It only accepts three field: + * env + * nonce + * origin + + This does not give the user much flexibility when passing in other fields to the state. Origin is set based on the window location. + Env determined by the running environment of backstage. Nonce, randomly generated every time. + + If a user wanted to verify other fields in the state, they would be unable to do so. + For example, let's say you have a GitHub app that serves multiple installations. In order for this to work you need a middle service between github and backstage. + This service needs to programaticaly determine where to redirect the requests to (GitHub apps only allow one redirect url). + Your intermediate service requires you to redirect to other paths on backstage based on the type of request the Github ap + p receives. + By adding in the `extraState` to the Github Provider Options, this can now be achieved. You can set the field to `{'redirect_url': '/some/path/to/redirect/to'}` to complete + the OAuth flow. + + Although this is a very specific use case, I believe this will be useful across all the providers. + + Signed-off-by: Nicolas Arnold + +commit d4d07abec09d7a4ca04456dc94464a7fe8edc7b2 +Author: Patrik Oldsberg +Date: Fri Oct 22 10:39:13 2021 +0200 + + types: fix cli dep version query + + Signed-off-by: Patrik Oldsberg + +commit 0ede1cebcaa631d278997cae61b117f7b46b66f8 +Merge: 27c2a740e5 66bcc31ec4 +Author: Fredrik Adelöw +Date: Fri Oct 22 10:25:32 2021 +0200 + + Merge pull request #7724 from backstage/freben/core-types + + introduce `@backstage/types` + +commit 76a85113bc91eb29b8c117cb14ffc020ce40f06f +Author: Johan Haals +Date: Thu Oct 21 15:55:46 2021 +0200 + + pass with no tests + + Signed-off-by: Johan Haals + +commit 1ed3eb452774ba2ceaeac97b4a1dddf9575cce62 +Author: Johan Haals +Date: Thu Oct 21 15:28:26 2021 +0200 + + remove unused dependencies + + Signed-off-by: Johan Haals + +commit adb27441e6be45f7fb60feab3f1f245151da6ae5 +Author: Johan Haals +Date: Thu Oct 21 14:59:57 2021 +0200 + + use setupRequestMockHandlers inside msw + + Signed-off-by: Johan Haals + +commit c976066b05017b472fc09fb98b916cd0c5a3889e +Author: Johan Haals +Date: Thu Oct 21 14:59:42 2021 +0200 + + Update wording in changeset + + Signed-off-by: Johan Haals + +commit 379e1863323fdcb93049946449d465a34e4ba24a +Author: Johan Haals +Date: Thu Oct 21 14:59:19 2021 +0200 + + Remove all exports from test-utils-core + + Signed-off-by: Johan Haals + +commit 925a967f363df311287eeb495adfe1cd145d3034 +Author: Johan Haals +Date: Thu Oct 21 14:49:42 2021 +0200 + + Replace usage of test-utils-core with test-utils + + Signed-off-by: Johan Haals + +commit bb12aae352eacd818a906511c50f7f89388026ea +Author: Johan Haals +Date: Thu Oct 21 14:31:54 2021 +0200 + + Add changeset + + Signed-off-by: Johan Haals + +commit 60a75ae833acfce424040e8f1f7f3df4834a9766 +Author: Johan Haals +Date: Thu Oct 21 14:31:42 2021 +0200 + + chore: fix import + + Signed-off-by: Johan Haals + +commit 87a7cbdb6833cdd38b712eb7caaf52979f1e3e0f +Author: Johan Haals +Date: Thu Oct 21 14:14:35 2021 +0200 + + replace msw with setupRequestMockHandlers + + Signed-off-by: Johan Haals + +commit 4f14d881c4972757e36a241317f06a0bc7cce984 +Author: Johan Haals +Date: Thu Oct 21 13:56:45 2021 +0200 + + Move test-utils-core into test-utils + + - Deprecates methods in test-utils-core + - Migrates code intotest-utils + - Updates documentation + - Export missing types + + Signed-off-by: Johan Haals + +commit 27c2a740e535134e6f3e7dea3623586756aeb718 +Merge: 3fcc9894f8 a369f19e7e +Author: Camila Belo +Date: Fri Oct 22 08:32:17 2021 +0200 + + Merge pull request #7726 from szubster/lunr-filter-single-item-array + + Handle single-item array filter in Lunr search engine + +commit 9a9c630ad87e042b77b55616d0fedcceb61d60f8 +Author: mclarke47 +Date: Thu Oct 21 22:01:27 2021 +0100 + + better changeset message + + Signed-off-by: mclarke47 + +commit 41af2658723b4ffe8763ce4116827a4945a41500 +Merge: a35b6459d5 3fcc9894f8 +Author: Marley Powell +Date: Thu Oct 21 21:55:36 2021 +0100 + + Merge branch 'master' of https://github.com/backstage/backstage into marley/7678-pull-request-dashboard + +commit a35b6459d50b3979509365c532a51932f7c53ca9 +Author: Marley Powell +Date: Thu Oct 21 21:53:51 2021 +0100 + + feat: Created `AzurePullRequestsIcon` component. + + Signed-off-by: Marley Powell + +commit d8396253187c0062d3d3fe88edddbf47996f5eb2 +Author: Victor Perera +Date: Thu Oct 21 14:21:03 2021 -0500 + + Update api-report + + Signed-off-by: Victor Perera + +commit c671c3827939e6ffd51addac9650d98f540bf8d3 +Author: Colton Padden +Date: Thu Oct 21 14:53:29 2021 -0400 + + Template directly to specified path otherwise use temp dir + + When the `--path` argument is specified, then perform the create-app templating + directly to that path. Otherwise, template to a temporary directory, and move + the files to a directory based on the project name. + + Removed the `cleanUp` method in favor of removing temporary files directly in + the `moveApp` method in a `finally` block. + + Reverted `moveApp` method to use the move operation instead ofe recursively + copying files. + + Signed-off-by: Colton Padden + +commit 97dc10706f9a8d9f2a42c562880f9f831d16631e +Author: Victor Perera +Date: Thu Oct 21 13:50:52 2021 -0500 + + Changes requested fixed + + Signed-off-by: Victor Perera + +commit 97231f55816098607dd5d68823bf830568839bee +Author: rodion +Date: Thu Oct 21 21:39:47 2021 +0300 + + fix: sentry plugin allows search query parameter + specified by documentation https://docs.sentry.io/api/events/list-a-projects-issues/ + + Signed-off-by: rodion + +commit e55a5dea094b75318b6d5222924c29166900bb9f +Author: Kenneth Feng +Date: Tue Oct 19 21:49:41 2021 -0400 + + plugin/scaffolder: set the file mode in publish:github:pull-request. + + The ability to set file mode was introduced in octokit-plugin-create-pull-request:v3.10. + This PR updates the underlying octokit-plugin-create-pull-request + version to 3.10, and sets the file mode when creating the pull request. + + Signed-off-by: Kenneth Feng + +commit 3fcc9894f85e40e4c8b19d00429a8bad00e8515c +Merge: 017a47e585 8c30ae8902 +Author: Fredrik Adelöw +Date: Thu Oct 21 19:08:50 2021 +0200 + + Merge pull request #7714 from backstage/freben/stringify-error + + Add `stringifyError` + +commit 5a58092168be995a31d9d49bb26b7e70caec068c +Author: Brian Fletcher +Date: Thu Oct 21 16:32:45 2021 +0100 + + no longer expose the storage task broker + + We can implement the task broker completely, so it is not neccessary + to export it. + + This commit also addresses some review comments. + + Signed-off-by: Brian Fletcher + +commit 017a47e585642733ac3b4b294cd00fc517d3ba08 (tag: v0.52.0, tag: release-2021-10-21) +Merge: b61c50a12f bf5090e59d +Author: Ben Lambert +Date: Thu Oct 21 16:50:00 2021 +0200 + + Merge pull request #7618 from backstage/changeset-release/master + + Version Packages + +commit 8c30ae89025d054c8ec1afc8ea80eee11ee4e6a5 +Author: Fredrik Adelöw +Date: Wed Oct 20 21:16:35 2021 +0200 + + Add `stringifyError` that is useful for logging e.g. `Something went wrong, ${stringifyError(e)}` + + Signed-off-by: Fredrik Adelöw + +commit a9a8c6f7c51793fbc4727ca409ae52d89ea7e8ca +Author: Colton Padden +Date: Thu Oct 21 10:36:59 2021 -0400 + + Scroll to the top of reader content when primary navigation link is clicked + + When navigating between pages using the primary sidebar navigation menu, + scroll to the top of the generated markdown content via + `.scrollIntoView()`. + + Signed-off-by: Colton Padden + +commit 66bcc31ec42d91d40b5a46ccbe1652ee7056b208 +Author: Fredrik Adelöw +Date: Thu Oct 21 16:36:41 2021 +0200 + + some more fixup + + Signed-off-by: Fredrik Adelöw + +commit 7c5cf5a4a443dd20f26bf2142ac4f5cc15195689 +Author: Fredrik Adelöw +Date: Thu Oct 21 16:07:35 2021 +0200 + + add test + + Signed-off-by: Fredrik Adelöw + +commit 109a66a7c7d549cedc128e4e73541e9dad185952 +Author: Colton Padden +Date: Thu Oct 21 09:42:52 2021 -0400 + + make bucketRootPath the last argument to publish constructors + + Signed-off-by: Colton Padden + +commit bf5090e59dc64bbea40b74b12b2ef0cfe5291432 +Author: github-actions[bot] +Date: Thu Oct 21 13:28:13 2021 +0000 + + Version Packages + +commit b61c50a12fa7b6ba1785556906172b74ea7f3660 +Author: Matthew Clarke +Date: Thu Oct 21 14:21:35 2021 +0100 + + fix k8s crd regression (#7728) + + Signed-off-by: mclarke47 + +commit 447c514899c84dc4a53439e8ae121b37831f6607 +Author: Fredrik Adelöw +Date: Thu Oct 21 15:05:07 2021 +0200 + + rename to just types + + Signed-off-by: Fredrik Adelöw + +commit f207c39e419612e55a5739b97777bbff74f33271 +Merge: 803c5550c5 b149e94290 +Author: Ben Lambert +Date: Thu Oct 21 15:16:52 2021 +0200 + + Merge pull request #7642 from kuangp/fix/catalog-register + + fix(catalog:register): support optional locations + +commit a369f19e7eed5b40bff1b225cbe475c5ad170b0b +Author: Tomasz Szuba +Date: Thu Oct 21 15:13:30 2021 +0200 + + Rename changeset + + Signed-off-by: Tomasz Szuba + +commit bf5dfa2708f685b56e11c14c449d5a2ba5413e24 +Author: Ivan Stoiev +Date: Thu Oct 21 09:38:28 2021 -0300 + + update datatogRum browser agent version + + Signed-off-by: Ivan Stoiev + Signed-off-by: Ivan Stoiev + +commit 803c5550c5056b57ea39be4af8acc4d3b85b5c44 +Merge: 09dea877bb 34da1574a3 +Author: Patrik Oldsberg +Date: Thu Oct 21 14:43:05 2021 +0200 + + Merge pull request #7568 from backstage/firestore-keystore + + auth-backend: Add Firestore as new key-store provider + +commit b374a9803abbf55642bab19fe615cb889c2cc97a +Merge: b23f048545 09dea877bb +Author: Marley Powell +Date: Thu Oct 21 13:17:36 2021 +0100 + + Merge branch 'master' of https://github.com/backstage/backstage into marley/7641-consume-exported-ado-types + + Signed-off-by: Marley Powell + +commit 09dea877bb7c229be886479da215368e2f227461 +Merge: b42d0506bb 5e43a73dd4 +Author: Ben Lambert +Date: Thu Oct 21 14:16:30 2021 +0200 + + Merge pull request #7703 from lykkeaxlin/bump-version + + bump bazaar plugin-catalog-react version + +commit 5e43a73dd49382f16d69a4eaa94c2dd3ee9f830f +Author: blam +Date: Thu Oct 21 14:15:46 2021 +0200 + + chore: fix up the changeset for the bazaar plugins + Signed-off-by: blam + +commit b42d0506bbb5416418f6f4f501d317652e524d19 +Merge: 9809e4093a 727554274e +Author: Patrik Oldsberg +Date: Thu Oct 21 14:11:38 2021 +0200 + + Merge pull request #7570 from rv-ddeloff/atlassian-auth + + Atlassian auth provider + +commit b23f048545e442ef8ddcf7bda230cca7048f3ff0 +Author: Marley Powell +Date: Thu Oct 21 13:09:57 2021 +0100 + + chore: Updated changeset + + Signed-off-by: Marley Powell + +commit 428061d7e56451750d02a9f8fcb2f6101338f347 +Author: Tomasz Szuba +Date: Thu Oct 21 14:04:58 2021 +0200 + + Add tests + + Signed-off-by: Tomasz Szuba + +commit 9809e4093a085a186f727e55442dd4b0ae55476c +Merge: 9eefb77ca2 e823146635 +Author: Patrik Oldsberg +Date: Thu Oct 21 13:55:24 2021 +0200 + + Merge pull request #7643 from marleypowell/marley/7641-export-ado-types + + refactor(`@backstage/plugin-azure-devops-backend`): re-exported types from `azure-devops-node-api` + +commit 0de67c4d2ae21fb7ed891b93ea43dcef28946e32 +Author: Tomasz Szuba +Date: Thu Oct 21 13:54:44 2021 +0200 + + Handle single-item array filter in Lunr search engine + + Signed-off-by: Tomasz Szuba + +commit 34da1574a3d768e7076ee2160e882e9b1d010d6b +Author: Patrik Oldsberg +Date: Thu Oct 21 13:48:49 2021 +0200 + + auth-backend: rename postgres keystore provider to database + + Signed-off-by: Patrik Oldsberg + +commit 727554274e2b038be822c948b6d1aedf9156d3e8 +Author: Daniel Deloff <44780793+rv-ddeloff@users.noreply.github.com> +Date: Thu Oct 21 07:22:09 2021 -0400 + + updated api report, adds Atlassian to vocab + + Signed-off-by: Daniel Deloff <44780793+rv-ddeloff@users.noreply.github.com> + +commit 9eefb77ca271f359f454ccbee70e279f62abb6e7 +Merge: b45020a548 1bd9548cee +Author: Patrik Oldsberg +Date: Thu Oct 21 13:21:41 2021 +0200 + + Merge pull request #7721 from backstage/dependabot/npm_and_yarn/passport-saml-3.2.0 + + build(deps): bump passport-saml from 3.1.2 to 3.2.0 + +commit 1bd9548cee3e8b5302185d3114f66248fb327c0a +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Thu Oct 21 10:39:22 2021 +0000 + + build(deps): bump passport-saml from 3.1.2 to 3.2.0 + + Bumps [passport-saml](https://github.com/node-saml/passport-saml) from 3.1.2 to 3.2.0. + - [Release notes](https://github.com/node-saml/passport-saml/releases) + - [Changelog](https://github.com/node-saml/passport-saml/blob/master/CHANGELOG.md) + - [Commits](https://github.com/node-saml/passport-saml/compare/v3.1.2...v3.2.0) + + --- + updated-dependencies: + - dependency-name: passport-saml + dependency-type: direct:production + update-type: version-update:semver-minor + ... + + Signed-off-by: dependabot[bot] + +commit b45020a54883beca7ea249c2a1251c9c83ef5a85 +Merge: 2fe737798e edf89c179e +Author: Ben Lambert +Date: Thu Oct 21 11:35:30 2021 +0200 + + Merge pull request #7555 from dirathea/plugins-k8s-caData-support + + Plugins k8s ca data support + +commit 2fe737798ef4470aa35d9d5a6d0e4b2b0217ed9f +Merge: a75e8147a0 e4387a7132 +Author: Patrik Oldsberg +Date: Thu Oct 21 11:30:17 2021 +0200 + + Merge pull request #7722 from backstage/dependabot/npm_and_yarn/octokit/webhooks-9.17.0 + + build(deps): bump @octokit/webhooks from 9.15.0 to 9.17.0 + +commit a75e8147a083ffb4b7c1cf98d38ec90cc7d520f1 +Merge: d27263153b 20b84f6fd3 +Author: Ben Lambert +Date: Thu Oct 21 11:15:55 2021 +0200 + + Merge pull request #7704 from maurosala/patch-1 + + Update ADOPTERS.md + +commit e4387a7132dfe1d8ce45026e5c168b3fd6b4ee42 +Author: Patrik Oldsberg +Date: Thu Oct 21 10:56:59 2021 +0200 + + yarn.lock: dedup @types/react + + Signed-off-by: Patrik Oldsberg + +commit d27263153b3943e90e22f47d625c395aaf96e2f1 +Merge: 93dbdc4538 8ba7481eb8 +Author: Oliver Sand +Date: Thu Oct 21 10:45:44 2021 +0200 + + Merge pull request #7606 from SDA-SE/feat/msgraphorgentityprovider + + Add `MicrosoftGraphOrgEntityProvider` + +commit 93dbdc4538d34acead6ff460e8c3d72f5ce4c034 +Merge: 6b387980af 665cfed096 +Author: Oliver Sand +Date: Thu Oct 21 10:44:36 2021 +0200 + + Merge pull request #7627 from SDA-SE/feat/githuborgentityprovider + + Add `GitHubOrgEntityProvider` + +commit e823146635760e559e68a1a6b74df636a7722d69 +Author: Marley Powell +Date: Thu Oct 21 09:31:20 2021 +0100 + + refactor: Code review improvements. + + Signed-off-by: Marley Powell + +commit 6237e636eb3f4cab189b6503298f0f45a878b31b +Author: Marcus Eide +Date: Thu Oct 21 10:30:29 2021 +0200 + + Be more specific when accessing firestore provider config + + Signed-off-by: Marcus Eide + +commit 8ba7481eb8ac7ff28aab2ec89c917d6fd6462e3a +Author: Oliver Sand +Date: Wed Oct 20 15:16:12 2021 +0200 + + Add more tests + + Signed-off-by: Oliver Sand + +commit 665cfed0969a94606fe19e552e0803cb0e6a4349 +Author: Oliver Sand +Date: Tue Oct 19 18:04:49 2021 +0200 + + Add tests + + Signed-off-by: Oliver Sand + +commit 6b387980aff0e9c1142d0d88ace690472009571e +Merge: 94a9e16a31 579bbd6286 +Author: Patrik Oldsberg +Date: Thu Oct 21 10:21:11 2021 +0200 + + Merge pull request #7658 from awanlin/topic/azure-devops-backend-documentation + + Improved setup documentation for Azure DevOps backend plugin + +commit 7e707db187c94d66570c0a36215726a145412e93 +Author: Marcus Eide +Date: Thu Oct 21 10:01:12 2021 +0200 + + Undo making database optional + + Signed-off-by: Marcus Eide + +commit db58c2e879745a9401f1c7a4ab6d1a1e03ffdb0a +Author: Fredrik Adelöw +Date: Thu Oct 21 09:52:17 2021 +0200 + + mark the observable types public + + Signed-off-by: Fredrik Adelöw + +commit 41c49884d29ad5392dd909341be101aec9f942e5 +Author: Fredrik Adelöw +Date: Thu Oct 21 09:45:32 2021 +0200 + + introduce core-types + + Signed-off-by: Fredrik Adelöw + +commit 988c5b8421a82a733cebafc7afcaf01683149a5c +Author: Matto +Date: Thu Oct 21 18:26:08 2021 +1100 + + Removed unused dependency + + Signed-off-by: Matto + +commit 74ceaa64175d5eecd33577a735ce447081b7f0bc +Author: Matto +Date: Thu Oct 21 18:20:36 2021 +1100 + + Remove the dependency on Etag headers for reloading config + + Signed-off-by: Matto + +commit 94a9e16a31ffafb584fb316371724cdbe6e6a388 +Merge: 00da5e919f 1455f4e693 +Author: Camila Belo +Date: Thu Oct 21 09:12:41 2021 +0200 + + Merge pull request #7717 from backstage/rugvip/winfix2 + + techdocs-common: fix helper tests on windows + +commit 00da5e919fb0698bd74f3d2c074608d8c5e14c82 +Merge: e3ebb03833 7e97d0b8c1 +Author: Fredrik Adelöw +Date: Thu Oct 21 08:07:43 2021 +0200 + + Merge pull request #7715 from backstage/freben/reports1 + + Add public tags and documentation in the `error` and `config-loader` packages + +commit b146c4bbdd3352c37629875ddddb15ffed0e30b8 +Author: Klara +Date: Thu Oct 21 08:06:29 2021 +0200 + + add changeset for version bump and newline in yarn.lock + + Signed-off-by: Klara + + Co-authored-by: lykkeaxlin + +commit 5e7eb3edd5c194e42a99f71d5bfac12a3731264d +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Thu Oct 21 04:47:33 2021 +0000 + + build(deps): bump @octokit/webhooks from 9.15.0 to 9.17.0 + + Bumps [@octokit/webhooks](https://github.com/octokit/webhooks.js) from 9.15.0 to 9.17.0. + - [Release notes](https://github.com/octokit/webhooks.js/releases) + - [Commits](https://github.com/octokit/webhooks.js/compare/v9.15.0...v9.17.0) + + --- + updated-dependencies: + - dependency-name: "@octokit/webhooks" + dependency-type: direct:production + update-type: version-update:semver-minor + ... + + Signed-off-by: dependabot[bot] + +commit cfbe1b97f68e1f02a3812657fdc28734ad3236f2 +Merge: 32cd8e740d e3ebb03833 +Author: Daniel Deloff <44780793+rv-ddeloff@users.noreply.github.com> +Date: Wed Oct 20 22:07:38 2021 -0400 + + Merge branch 'master' into atlassian-auth + + Signed-off-by: Daniel Deloff <44780793+rv-ddeloff@users.noreply.github.com> + +commit 32cd8e740d7c44e7d342762bfe7c98c3a40496f5 +Author: Daniel Deloff <44780793+rv-ddeloff@users.noreply.github.com> +Date: Wed Oct 20 21:17:29 2021 -0400 + + attempting to restore adopters + + Signed-off-by: Daniel Deloff <44780793+rv-ddeloff@users.noreply.github.com> + +commit b851a640027fb1e1385171ee7a836693fd9ed65a +Author: Daniel Deloff <44780793+rv-ddeloff@users.noreply.github.com> +Date: Wed Oct 20 21:11:29 2021 -0400 + + attempting to fix adopters + + Signed-off-by: Daniel Deloff <44780793+rv-ddeloff@users.noreply.github.com> + +commit b72364d9eecc6293b93584facfc72eadd253e17b +Author: Daniel Deloff <44780793+rv-ddeloff@users.noreply.github.com> +Date: Wed Oct 20 21:09:37 2021 -0400 + + remove signin from identity providers + + Signed-off-by: Daniel Deloff <44780793+rv-ddeloff@users.noreply.github.com> + +commit deda608b2eeb55c755e13eda7d7b030dc0a24e9e +Author: Daniel Deloff <44780793+rv-ddeloff@users.noreply.github.com> +Date: Wed Oct 20 20:53:54 2021 -0400 + + removes default signin resolver, updates tests + + Signed-off-by: Daniel Deloff <44780793+rv-ddeloff@users.noreply.github.com> + +commit e3ebb03833cfe2e8bdfa5cefaba706f14f969f65 +Merge: ec562bc86b 2023a9683f +Author: Patrik Oldsberg +Date: Thu Oct 21 00:36:23 2021 +0200 + + Merge pull request #7701 from yousifalraheem/master + + fixed invalid wrap in dismissablebanner component + +commit ec562bc86b70e95edca0f53eccea819f94347c11 +Merge: 4552206702 f93e4349e5 +Author: Patrik Oldsberg +Date: Thu Oct 21 00:35:48 2021 +0200 + + Merge pull request #7680 from RodionGork/patch-1 + + fix: sentry-plugin API parameter name corrected + +commit 4552206702106bce79f452ecdc29a961a5fcf780 +Merge: 82a7349d29 bf9d10ba5f +Author: Patrik Oldsberg +Date: Thu Oct 21 00:35:19 2021 +0200 + + Merge pull request #7657 from SDA-SE/feat/techdocs-grid + + Add `` and extend `` to display the entity title + +commit 82a7349d290c27fe604bd8da252a94a4a0d21625 +Merge: 5abca9201a 177401b571 +Author: Patrik Oldsberg +Date: Thu Oct 21 00:21:34 2021 +0200 + + Merge pull request #7640 from kuangp/refactor/searchResultTitles + + refactor(search): display entity title for result items if defined + +commit 5abca9201afeaa8ede6a1f55b7811490f9ceef6d +Merge: 41b1b795c0 ab2df3be33 +Author: Patrik Oldsberg +Date: Wed Oct 20 23:58:05 2021 +0200 + + Merge pull request #7610 from jluk-box/catalog-model-doc + + Improve API docs in @backstage/catalog-model + +commit 1455f4e693368a9206128487f6a085afacd8f0fb +Author: Patrik Oldsberg +Date: Wed Oct 20 23:52:42 2021 +0200 + + techdocs-common: fix helper tests on windows + + Signed-off-by: Patrik Oldsberg + +commit 6e4ae4de40beca2c98e1dc7b53098e0fdff3bfbb +Author: Daniel Deloff <44780793+rv-ddeloff@users.noreply.github.com> +Date: Wed Oct 20 17:20:32 2021 -0400 + + fix ADOPTERS + + Signed-off-by: Daniel Deloff <44780793+rv-ddeloff@users.noreply.github.com> + +commit ce038268c196af2b21c48ba73cc7ce7311f740fd +Author: Daniel Deloff <44780793+rv-ddeloff@users.noreply.github.com> +Date: Wed Oct 20 17:15:00 2021 -0400 + + feedback fixes + + Signed-off-by: Daniel Deloff <44780793+rv-ddeloff@users.noreply.github.com> + +commit 7e97d0b8c16b5376544c18a2cc1ed3b38cca8bec +Author: Fredrik Adelöw +Date: Wed Oct 20 22:01:33 2021 +0200 + + Add public tags and documentation in the `error` and `config-loader` packages + + Part of #7688 + + Signed-off-by: Fredrik Adelöw + +commit 41b1b795c0d544d901001618d5d3c33f4b86deb4 +Merge: 6000894446 c238e38596 +Author: Patrik Oldsberg +Date: Wed Oct 20 22:14:06 2021 +0200 + + Merge pull request #7575 from backstage/dependabot/npm_and_yarn/storybook/react-6.3.11 + + build(deps-dev): bump @storybook/react from 6.3.7 to 6.3.11 + +commit 6000894446a2eb6d443b2fb4f51b33f15b8db8c5 +Merge: 5df6b4ad8b 01ea7f71cb +Author: Patrik Oldsberg +Date: Wed Oct 20 22:13:07 2021 +0200 + + Merge pull request #7667 from backstage/dependabot/npm_and_yarn/history-5.0.1 + + chore(deps): bump history from 5.0.0 to 5.0.1 + +commit 5df6b4ad8bdd0fae76975ca2c4121774782d454d +Merge: 4a7d47c020 065c12e1c4 +Author: Patrik Oldsberg +Date: Wed Oct 20 22:11:05 2021 +0200 + + Merge pull request #7666 from backstage/dependabot/npm_and_yarn/types/express-session-1.17.4 + + chore(deps-dev): bump @types/express-session from 1.17.3 to 1.17.4 + +commit 4a7d47c02086bbaa1a86c6c05d8713cfff74af62 +Merge: e7e61d1def 87f5b9db13 +Author: Camila Belo +Date: Wed Oct 20 22:04:46 2021 +0200 + + Merge pull request #7080 from backstage/vinzscam/techdocs-use-readme-as-fallback + + techdocs: use README.md as index fallback + +commit e7e61d1defcf4613bb938f7b435192c51ab15689 +Merge: 7c95a556c4 1f62d1cbe9 +Author: Fredrik Adelöw +Date: Wed Oct 20 22:00:58 2021 +0200 + + Merge pull request #7713 from backstage/freben/stitch-one + + Minor rearrangement of `Stitcher` to clarify the scope of one stitch round + +commit 1f62d1cbe9185b0253427ab5602b2530b87a369b +Author: Fredrik Adelöw +Date: Wed Oct 20 20:30:27 2021 +0200 + + Minor rearrangement of `Stitcher` to clarify the scope of one stitch round + + Signed-off-by: Fredrik Adelöw + +commit c238e385960c0f0cf8f1bd4f08868926dd3c1bca +Author: Patrik Oldsberg +Date: Wed Oct 20 19:39:38 2021 +0200 + + yarn.lock: dedup @types/react + + Signed-off-by: Patrik Oldsberg + +commit 3c33a998a21aeebb60f3d13712cfb790950c4122 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Wed Oct 13 04:08:51 2021 +0000 + + build(deps-dev): bump @storybook/react from 6.3.7 to 6.3.11 + + Bumps [@storybook/react](https://github.com/storybookjs/storybook/tree/HEAD/app/react) from 6.3.7 to 6.3.11. + - [Release notes](https://github.com/storybookjs/storybook/releases) + - [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md) + - [Commits](https://github.com/storybookjs/storybook/commits/v6.3.11/app/react) + + --- + updated-dependencies: + - dependency-name: "@storybook/react" + dependency-type: direct:development + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit 01ea7f71cba6eaf74e3c59122d2ca0f8461c55af +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Wed Oct 20 18:13:08 2021 +0000 + + chore(deps): bump history from 5.0.0 to 5.0.1 + + Bumps [history](https://github.com/ReactTraining/history) from 5.0.0 to 5.0.1. + - [Release notes](https://github.com/ReactTraining/history/releases) + - [Commits](https://github.com/ReactTraining/history/compare/v5.0.0...v5.0.1) + + --- + updated-dependencies: + - dependency-name: history + dependency-type: direct:production + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit 065c12e1c4cc71825c00b0381aa001122629d3af +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Wed Oct 20 18:07:20 2021 +0000 + + chore(deps-dev): bump @types/express-session from 1.17.3 to 1.17.4 + + Bumps [@types/express-session](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/express-session) from 1.17.3 to 1.17.4. + - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) + - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/express-session) + + --- + updated-dependencies: + - dependency-name: "@types/express-session" + dependency-type: direct:development + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit 7c95a556c4c94fa2afbe9d164799e5795f7d2fea +Merge: 127d7071b8 0aed60102e +Author: Patrik Oldsberg +Date: Wed Oct 20 20:00:47 2021 +0200 + + Merge pull request #7620 from backstage/dependabot/npm_and_yarn/selfsigned-1.10.11 + + chore(deps): bump selfsigned from 1.10.8 to 1.10.11 + +commit 127d7071b8d0be2b1c44529b1436481c19a66501 +Merge: 0b8bc5ea21 74e1fc1e7d +Author: Patrik Oldsberg +Date: Wed Oct 20 19:49:52 2021 +0200 + + Merge pull request #7709 from backstage/rugvip/doublewarn + + scripts/api-extractor: show instructions both before and after file contents + +commit 0b8bc5ea211948bf7facb4ad7f285e3c6a398803 +Merge: b2687344d8 a7217649ac +Author: Patrik Oldsberg +Date: Wed Oct 20 19:49:38 2021 +0200 + + Merge pull request #7708 from julioz/file-location-custom-parser + + Use CatalogProcessorParser to read file location + +commit b2687344d89c07a959b5e37df43d03d9757eb107 +Merge: 8238c8998f e2039ef99a +Author: Patrik Oldsberg +Date: Wed Oct 20 18:50:57 2021 +0200 + + Merge pull request #7534 from akrantz01/6284/okta-https-audience + + Require https audience for Okta authentication + +commit a7217649ac52777c5771554a0e72c67dadf94c94 +Author: Julio Zynger +Date: Wed Oct 20 18:47:23 2021 +0200 + + Update api-report.md changes + + Signed-off-by: Julio Zynger + +commit 74e1fc1e7d76b676bad44086259dd0fdd56c9969 +Author: Patrik Oldsberg +Date: Wed Oct 20 18:46:55 2021 +0200 + + scripts/api-extractor: show instructions both before and after file contents + + Signed-off-by: Patrik Oldsberg + +commit 3adaf88db203f6293af07ef4f33f8a4203d6e970 +Author: Julio Zynger +Date: Wed Oct 20 18:19:32 2021 +0200 + + Use parser to read files + + Fix https://github.com/backstage/backstage/issues/7706 + + Signed-off-by: Julio Zynger + +commit 20b84f6fd3a93f7f333d5520d86283724b26cf94 +Author: mauro sala +Date: Wed Oct 20 16:55:34 2021 +0200 + + Update ADOPTERS.md + +commit 328c049ae50a2b827ea5cd166344c32778b64de4 +Author: Klara +Date: Wed Oct 20 16:53:37 2021 +0200 + + bump plugin-catalog-react version + + Signed-off-by: Klara + + Co-authored-by: lykkeaxlin + +commit bf9d10ba5f6c2ddc304d13ca84cd38fd300db680 +Author: Oliver Sand +Date: Wed Oct 20 16:44:58 2021 +0200 + + Mention in the docs + + Signed-off-by: Oliver Sand + +commit 2023a9683f96692021e6db6ac80c1c096b73e860 +Author: Yousif Al-Raheem +Date: Wed Oct 20 14:46:51 2021 +0200 + + fixed invalid wrap in dismissablebanner component + + Signed-off-by: Yousif Al-Raheem + +commit 8238c8998f2bb2107598c37ddb73f8fc0741749b +Merge: 434a1c37d5 a10ff21d59 +Author: Patrik Oldsberg +Date: Wed Oct 20 14:01:08 2021 +0200 + + Merge pull request #7685 from backstage/rugvip/backability + + cli: add in a redirect for jestEsmTransform for compatibility + +commit 87f5b9db13a0641bd07f4d4aaba07311579eb702 +Author: Vincenzo Scamporlino +Date: Wed Oct 20 13:26:25 2021 +0200 + + Add changeset + + Signed-off-by: Vincenzo Scamporlino + +commit 59b45a4396e66ff64b0daf65dbf3e7055f6ef892 +Author: Vincenzo Scamporlino +Date: Wed Oct 20 13:22:34 2021 +0200 + + Add checks for warnings + + Signed-off-by: Vincenzo Scamporlino + +commit 2bc10af8a48844c935e5c79848056e5a4dc3eecd +Author: Vincenzo Scamporlino +Date: Wed Oct 20 13:12:31 2021 +0200 + + fix comments + + Signed-off-by: Vincenzo Scamporlino + +commit 434a1c37d5ac13d382966ebe5a40ad4650fd6ce0 +Merge: de48939447 ff63d65363 +Author: Patrik Oldsberg +Date: Wed Oct 20 13:08:15 2021 +0200 + + Merge pull request #7228 from backstage/samiramkr/equal-grid-height + + Samiramkr/equal grid height + +commit de489394473a6facc12f2acbd4d3ebab1860d2cb +Merge: 8674bbd009 59714af079 +Author: Patrik Oldsberg +Date: Wed Oct 20 13:07:49 2021 +0200 + + Merge pull request #7461 from backstage/rugvip/errors + + [PRFC] errors: add isError, assertError and ErrorLike type + +commit a10ff21d59192c0873da0d7662bdf12063a085d2 +Author: Patrik Oldsberg +Date: Wed Oct 20 10:44:07 2021 +0200 + + cli: add in a redirect for jestEsmTransform for compatibility + + Signed-off-by: Patrik Oldsberg + +commit f93e4349e5dec46b708dcf61da67e042a0863f91 +Author: rodion +Date: Wed Oct 20 11:39:57 2021 +0300 + + fix: sentry-plugin corrected api parameter name + according to documentation https://docs.sentry.io/api/events/list-a-projects-issues/ + + Signed-off-by: rodion + +commit edf89c179e23e768441ce003a120242ec3bcee3b +Author: Aldira Putra Raharja +Date: Wed Oct 20 09:56:15 2021 +0700 + + Add TODO on GKE to pass caData into the object + + Signed-off-by: Aldira Putra Raharja + +commit 4c08c30178e24c0dac5092d2310c04cd402b85bf +Author: mclarke47 +Date: Tue Oct 19 19:59:16 2021 +0100 + + add refresh test + + Signed-off-by: mclarke47 + +commit 14df942bae7c2087493ce7346fc15856020c84ad +Author: mclarke47 +Date: Tue Oct 19 19:51:18 2021 +0100 + + add changeset + + Signed-off-by: mclarke47 + +commit eaa78edcbc304370836a3cc5dbca792a20ce869d +Author: mclarke47 +Date: Tue Oct 19 19:49:45 2021 +0100 + + refactor and refresh k8s plugin at interval + + Signed-off-by: mclarke47 + +commit 8674bbd0090485976bb9c92f63837c0ac636196d +Merge: af64518bbe be59619212 +Author: Patrik Oldsberg +Date: Tue Oct 19 17:00:44 2021 +0200 + + Merge pull request #7676 from lunarway/feature/github-ratelimit + + Detect GitHub rate limits in GithubUrlReader + +commit af64518bbe9e443f44210338c04709cb3d8aee09 +Author: Fidel Coria +Date: Tue Oct 19 09:50:38 2021 -0500 + + fix typo in techdocs documentation (#7677) + + * fix typo + + Signed-off-by: Fidel Coria + + * fix another typo + + Signed-off-by: Fidel Coria + + * fix tiny typo + + Signed-off-by: Fidel Coria + +commit b294f6056f6ca835eb4f71bd22b03b2d5c6b8b28 +Author: Marcus Eide +Date: Tue Oct 19 16:42:40 2021 +0200 + + Wrap operations in a configurable timeout and add method to verify the database connection + + Signed-off-by: Marcus Eide + +commit be59619212b56845d75dc579d4b49a0fccafe0c9 +Author: Crevil +Date: Tue Oct 19 15:34:39 2021 +0200 + + Detect GitHub rate limits in GithubUrlReader + + Currently there is no way of knowing whether a 403 error from the + GithubUrlReader is due to bad credentials or GitHub rate limits. + + This change appends the text " (rate limit exceeded)" to the thrown error to + help operators understand that this is the case. + + Signed-off-by: Crevil + +commit befe7d122f5095122740d0878058ad684219c182 +Author: Matto +Date: Tue Oct 19 23:18:19 2021 +1100 + + Added documentation + + Signed-off-by: Matto + +commit 0611f3b3e2d5e4e742abbf17d6e17c1bd0c95541 +Author: Matto +Date: Mon Sep 27 23:41:24 2021 +1000 + + Read config from remote config server + + Signed-off-by: Matto + +commit 6c49901f6e2afe8e416d2d64142703437abf1f20 +Author: Emma Indal +Date: Tue Oct 19 13:31:03 2021 +0200 + + [TechDocs] fix link to how-to guide (#7673) + + Signed-off-by: Emma Indal + +commit f316d05889295abb4b63c2a6705f04601b17abf0 +Merge: eece5e6597 b81299a332 +Author: Patrik Oldsberg +Date: Tue Oct 19 12:53:46 2021 +0200 + + Merge pull request #7649 from backstage/rugvip/noglobals + + techdocs-common: avoid global type declarations + +commit eece5e6597588ceea54b433f08bb25e6d548dc62 +Merge: 76140a40f8 d1b8691719 +Author: Patrik Oldsberg +Date: Tue Oct 19 12:52:14 2021 +0200 + + Merge pull request #7670 from backstage/freben/bazaar-win + + fix the bazaar test on windows + +commit b85acc8c3539777d73501ec922e65bbf8dbadfe3 +Author: Marley Powell +Date: Tue Oct 19 10:21:21 2021 +0100 + + chore: Created changeset. + + Signed-off-by: Marley Powell + +commit 9c0d5a607d59d71dfe0bba313d7be5de83c6d125 +Author: Marley Powell +Date: Tue Oct 19 10:19:48 2021 +0100 + + refactor(`@backstage/plugin-azure-devops`): Consume re-exported types from `@backstage/plugin-azure-devops-backend`. + + Signed-off-by: Marley Powell + +commit e4eda2da9ba47659adf5640b695efdf08adccb88 +Author: Marley Powell +Date: Tue Oct 19 10:16:30 2021 +0100 + + chore: Updated changeset. + + Signed-off-by: Marley Powell + +commit 664ff12559d99f8c43649494c4660286727a3ba3 +Merge: fce70720f3 e69af19788 +Author: Marley Powell +Date: Tue Oct 19 10:15:37 2021 +0100 + + Merge branch 'marley/7641-export-ado-types' of https://github.com/marleypowell/backstage into marley/7641-export-ado-types + +commit fce70720f35c5b06bfb5e1ad2ccd76374d6bb313 +Author: Marley Powell +Date: Tue Oct 19 10:15:00 2021 +0100 + + fix: Reverted changes to `@backstage/plugin-azure-devops`. + + Signed-off-by: Marley Powell + +commit 76140a40f89077e2412f9711aca2dba53fe8645f +Merge: fbb6becdd4 7120f21d76 +Author: Oliver Sand +Date: Tue Oct 19 11:14:09 2021 +0200 + + Merge pull request #7660 from backstage/feat/fix-windows-tests + + Fix tests on Windows + +commit 3e9ce7e952006a9b1b7be8938b58c5364c5a87c9 +Author: Aldira Putra Raharja +Date: Tue Oct 19 16:12:03 2021 +0700 + + fix docs accordingly + + Signed-off-by: Aldira Putra Raharja + +commit bca27b366253f7cfd632d65e4bf402d04d14f414 +Author: Vincenzo Scamporlino +Date: Thu Sep 2 14:56:30 2021 +0200 + + techdocs: use README.md as index fallback + + Signed-off-by: Vincenzo Scamporlino + +commit e69af19788f0c1e13a7713bbc4bfe8a7cc2b48bf +Merge: f1b4cdce00 fbb6becdd4 +Author: Marley <55280588+marleypowell@users.noreply.github.com> +Date: Tue Oct 19 10:19:42 2021 +0200 + + Merge branch 'backstage:master' into marley/7641-export-ado-types + +commit d1b8691719c8cac7bc8d7597c3bf32cacbdec735 +Author: Fredrik Adelöw +Date: Tue Oct 19 10:16:37 2021 +0200 + + fix the bazaar test on windows + + Signed-off-by: Fredrik Adelöw + +commit fbb6becdd469c75b4bda8f13b3b67464fe5363ed (tag: v0.51.2, tag: release-2021-10-19) +Merge: 47e1642ab4 83897af225 +Author: Fredrik Adelöw +Date: Tue Oct 19 09:24:03 2021 +0200 + + Merge pull request #7174 from lykkeaxlin/pr-draft + + [Plugin] Bazaar + +commit f1b4cdce0044d850815a8c0b1e4bc20d863029df +Author: Marley Powell +Date: Tue Oct 19 08:00:21 2021 +0100 + + chore: Re-generated API report. + + Signed-off-by: Marley Powell + +commit 6bfa59e323ca61db813130191a1ed247d5cd33d7 +Author: N-Shar-ma +Date: Tue Oct 19 02:13:37 2021 +0530 + + Minor tsc check passing fixes + + Signed-off-by: N-Shar-ma + +commit 47e1642ab4591cbf8f0a873f89bf1af18bac9c14 +Merge: 9d1a9612c5 ce0aef1841 +Author: Oliver Sand +Date: Mon Oct 18 20:44:46 2021 +0200 + + Merge pull request #7598 from SDA-SE/feat/graph-analytics + + Catalog graph analytics + +commit cb87427c0ed2752e20646ab0c516d913fff488cb +Author: N-Shar-ma +Date: Tue Oct 19 00:07:35 2021 +0530 + + Fixed call stack bug, added a test + + Signed-off-by: N-Shar-ma + +commit fe1b8ea378f75dc224eeda3a1528d487d678515b +Author: Nehal Sharma <68962290+N-Shar-ma@users.noreply.github.com> +Date: Mon Oct 4 23:15:51 2021 -0700 + + Fix FileExplorer Path Splitting Bug + + Signed-off-by: N-Shar-ma + +commit 9d1a9612c574ccb60b4e26988d2a68c207623e3a +Merge: 405dbc80e7 7f7057eb6a +Author: Camila Belo +Date: Mon Oct 18 20:09:54 2021 +0200 + + Merge pull request #7662 from backstage/bump-generator-default-docker-image + + [TechDocs Common] Bump generator's default docker image + +commit 7f7057eb6afba4fc15e834deae81dbd7d8216b26 +Author: Camila Belo +Date: Mon Oct 18 19:39:38 2021 +0200 + + docs(techdocs-common): update api reports + + Signed-off-by: Camila Belo + +commit dfd03b5aa63e00a078e32c460566c6899335674a +Author: Camila Belo +Date: Mon Oct 18 18:16:48 2021 +0200 + + chore(techdocs-common): bump default docker image + + A new release of `techdocs-container` has been published and as recommended [here](https://github.com/backstage/techdocs-container#release) the default container image used by the Techdocs Generator has been changed. + + Signed-off-by: Camila Belo + +commit 405dbc80e71dbbe0094dfdbb47a31a8562d005be +Author: Emma Indal +Date: Mon Oct 18 18:19:38 2021 +0200 + + [Techdocs] Improve create publish docs (#7626) + +commit 931ca6686789290751d5a1c58d5a0012f2bba60c +Merge: 14cbd5be40 d2e24b3f44 +Author: Patrik Oldsberg +Date: Mon Oct 18 16:52:30 2021 +0200 + + Merge pull request #6898 from backstage/dependabot/npm_and_yarn/remark-gfm-2.0.0 + + chore(deps): bump remark-gfm from 1.0.0 to 2.0.0 + +commit 7120f21d767301b41f46adf54ac7e2807e7e0d03 +Author: Oliver Sand +Date: Mon Oct 18 16:47:31 2021 +0200 + + Fix tests on Windows + + Signed-off-by: Oliver Sand + +commit 579bbd6286c0b38ff16c28d12a542aba19b9a39b +Author: Andre Wanlin +Date: Mon Oct 18 08:05:11 2021 -0500 + + Fixed typos + + Signed-off-by: Andre Wanlin + +commit 78d0f24aa386466e1a41c0ee67569e4e07c9b9bd +Author: Andre Wanlin +Date: Mon Oct 18 07:53:31 2021 -0500 + + Removed changeset as it's not needed for documentation changes + + Signed-off-by: Andre Wanlin + +commit e5a4595f4ba42083bfb3f3fcccafb31243808e90 +Author: Andre Wanlin +Date: Mon Oct 18 07:29:56 2021 -0500 + + Improved setup documentation for backend + + Signed-off-by: Andre Wanlin + +commit d2e24b3f444a08102264678715bc9352fdf25c1e +Author: Patrik Oldsberg +Date: Mon Oct 18 14:07:25 2021 +0200 + + yarn.lock: bump @types/hast + + Signed-off-by: Patrik Oldsberg + +commit ff63d65363a3be8d456c84bc9b75a3d59056e7c7 +Author: Juan Pablo Garcia Ripa +Date: Mon Oct 18 13:31:41 2021 +0200 + + use InfoCard Variant instead of styles + + Signed-off-by: Juan Pablo Garcia Ripa + +commit 63602a1753da664388d6fdccb602ac8ae0297b23 +Author: Samira Mokaram +Date: Fri Sep 17 12:25:05 2021 +0200 + + add changeset + + Signed-off-by: Samira Mokaram + +commit ab94b6e1dcdfb195fa5add70ca9fb567614e6fb2 +Author: Samira Mokaram +Date: Fri Sep 17 12:23:01 2021 +0200 + + align grid height + + Signed-off-by: Samira Mokaram + +commit f4f8139db3197eafd8e0ebddfaaa32a5053efcc2 +Author: Patrik Oldsberg +Date: Mon Oct 18 13:11:15 2021 +0200 + + yarn.lock: bump @types/unist + + Signed-off-by: Patrik Oldsberg + +commit 14cbd5be40df4044731bb4f917b83ccb57c34dc7 +Merge: 36bc98d16f e669320508 +Author: Patrik Oldsberg +Date: Mon Oct 18 12:14:54 2021 +0200 + + Merge pull request #7654 from backstage/rugvip/fail + + workflows: fall back to running windows tests with workers for now + +commit 36bc98d16f369fbb1b69e6df5e9e2489262cf01f +Merge: d519464d16 5914668655 +Author: Oliver Sand +Date: Mon Oct 18 12:08:21 2021 +0200 + + Merge pull request #7572 from SDA-SE/feat/remove-welcome + + Remove @backstage/plugin-welcome + +commit d519464d16d0493c3ecac089dcef69ba95049495 +Merge: 8a5c9ffa8a a6a283d760 +Author: Oliver Sand +Date: Mon Oct 18 12:06:57 2021 +0200 + + Merge pull request #7631 from SDA-SE/feat/fossa-overview-filter + + Add `entitiesFilter` option to `FossaPage` + +commit 315539e3f36716c841471721cf436a34e219eec8 +Author: Fredrik Adelöw +Date: Mon Aug 30 13:46:44 2021 +0200 + + fix api changes + + Signed-off-by: Fredrik Adelöw + +commit 0344015f4cf05122c3395c74c1a57502b0440164 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Sat Aug 21 10:09:15 2021 +0000 + + chore(deps): bump remark-gfm from 1.0.0 to 2.0.0 + + Bumps [remark-gfm](https://github.com/remarkjs/remark-gfm) from 1.0.0 to 2.0.0. + - [Release notes](https://github.com/remarkjs/remark-gfm/releases) + - [Commits](https://github.com/remarkjs/remark-gfm/compare/1.0.0...2.0.0) + + --- + updated-dependencies: + - dependency-name: remark-gfm + dependency-type: direct:production + update-type: version-update:semver-major + ... + + Signed-off-by: dependabot[bot] + +commit 59146686550088f7c345162fefa8155a7aaa3ad2 +Author: Oliver Sand +Date: Tue Oct 12 17:52:42 2021 +0200 + + Remove @backstage/plugin-welcome + + Signed-off-by: Oliver Sand + +commit ba5b75ed2f2b2bf8b0b68d3b3d445739ab28df73 +Author: Oliver Sand +Date: Mon Oct 18 10:49:53 2021 +0200 + + Add `` and extend `` to display the entity title + + Signed-off-by: Oliver Sand + +commit 0aed60102eb96a2addb82bf041f0f6645d00bd58 +Author: Patrik Oldsberg +Date: Mon Oct 18 11:13:30 2021 +0200 + + yarn.lock: dedup @types/react + + Signed-off-by: Patrik Oldsberg + +commit 8a5c9ffa8abf662a44291e1b68ed1a8b5a9a0ab2 +Merge: cc362494e3 f39e3b9050 +Author: Patrik Oldsberg +Date: Mon Oct 18 11:11:12 2021 +0200 + + Merge pull request #7621 from backstage/dependabot/npm_and_yarn/changesets/cli-2.17.0 + + chore(deps-dev): bump @changesets/cli from 2.16.0 to 2.17.0 + +commit cc362494e3ccecd59bd16a8a07a1452afd8f074b +Merge: 9aff244708 c4914b63c9 +Author: Patrik Oldsberg +Date: Mon Oct 18 11:10:19 2021 +0200 + + Merge pull request #7590 from KnechtionsCoding/fix/resources + + fix: resources for frontend + +commit e6693205082d4e60eede0a98951696a82b038627 +Author: Patrik Oldsberg +Date: Mon Oct 18 10:27:41 2021 +0200 + + workflows: fall back to running tests with workers for now + + Signed-off-by: Patrik Oldsberg + +commit 9aff244708e5676b6a581e8a88b1c91c685d145a +Merge: 2af244341d f94c535853 +Author: Patrik Oldsberg +Date: Mon Oct 18 10:05:50 2021 +0200 + + Merge pull request #7648 from backstage/rugvip/win + + workflows: fix windows test run + +commit 2af244341dbbbaf276586c4bae0fd6507c51a436 +Merge: 1f1b762619 028938b73e +Author: Patrik Oldsberg +Date: Mon Oct 18 10:05:34 2021 +0200 + + Merge pull request #7647 from backstage/rugvip/async + + core-components: use built-in async react-syntax-highlighter component + +commit a6a283d760b208e1f3ba398cb0b127408193799e +Author: Oliver Sand +Date: Mon Oct 18 09:54:13 2021 +0200 + + Export `FossaPageProps` + + Signed-off-by: Oliver Sand + +commit 1f1b762619c2f89d14e1ea03116eef99cbd405ab +Merge: a827d88ffb 82ea1f2bed +Author: Fredrik Adelöw +Date: Mon Oct 18 08:23:04 2021 +0200 + + Merge pull request #7651 from backstage/erikengervall/grm-minor-improvements + + [plugin] GRM: Minor type & error message improvements + +commit a827d88ffb659545293d0f657be2812574590916 +Merge: be5eb6c313 d87aab0e65 +Author: Fredrik Adelöw +Date: Mon Oct 18 08:21:06 2021 +0200 + + Merge pull request #7607 from Gaardsholt/master + + fixing incorrect authorUrl + +commit 3842901ddadc72de7748471bc25c37129913236f +Author: Tim Hansen +Date: Sun Oct 17 21:22:42 2021 -0600 + + api-reports + + Signed-off-by: Tim Hansen + +commit be5eb6c3135d7fc33b42ea9c9b9f1675c02a9777 +Merge: 92a08f9fef a496fa3fa6 +Author: Tim Hansen +Date: Sun Oct 17 20:59:29 2021 -0600 + + Merge pull request #7594 from manucirne/fix/issue/7155 + + Sort Jenkins biuld by timestemp in CITable + +commit 92a08f9fef0927fdb92eb2b7774cf6d54db5b8fa +Merge: 99563aacb3 04c5f927b8 +Author: Tim Hansen +Date: Sun Oct 17 20:46:52 2021 -0600 + + Merge pull request #7623 from marleypowell/marley/helm-chart-improvements-1 + + chore: updated `app-config.development.yaml.tpl` to use new config format for `techdocs`. (Helm Chart) + +commit a496fa3fa6d45d3a5fdbb81191cdd9bf7a93731b +Author: Tim Hansen +Date: Sun Oct 17 20:37:59 2021 -0600 + + Fix changeset + + Signed-off-by: Tim Hansen + +commit 82ea1f2beda9190ab790fba942af2d3a7eed5857 +Author: Erik Engervall +Date: Sun Oct 17 22:24:19 2021 +0200 + + Minor type improvement & changeset + + Signed-off-by: Erik Engervall + +commit b81299a332b0e1554d368bdd30d46d7a7b67819e +Author: Patrik Oldsberg +Date: Sun Oct 17 15:25:57 2021 +0200 + + techdocs-common: avoid global type declarations + + Signed-off-by: Patrik Oldsberg + +commit 59714af079aad0b6c1602b03782b9143172dfe5c +Author: Patrik Oldsberg +Date: Sat Oct 16 18:01:55 2021 +0200 + + errors: document and update API report for new assertion helpers + + Signed-off-by: Patrik Oldsberg + +commit 381381bd2b7ea6d9f24e85692ce092155267f7b0 +Author: Patrik Oldsberg +Date: Sat Oct 16 15:12:18 2021 +0200 + + errors: avoid [object Object] as cause + fix ForwardedError name + + Signed-off-by: Patrik Oldsberg + +commit 36e67d2f24027f795f277a72e710870e7308360e +Author: Patrik Oldsberg +Date: Fri Oct 8 17:41:29 2021 +0200 + + more strict error type checking in most packages and backend plugins + + Signed-off-by: Patrik Oldsberg + +commit 028938b73e130375a3e0ed62e37dda05ffaae7da +Author: Patrik Oldsberg +Date: Sun Oct 17 13:57:55 2021 +0200 + + core-components: fix MardownContent test + + Signed-off-by: Patrik Oldsberg + +commit f94c53585303273d8739133f17577d73a914ddce +Author: Patrik Oldsberg +Date: Sun Oct 17 13:21:44 2021 +0200 + + workflows: fix windows test run + + Signed-off-by: Patrik Oldsberg + +commit ef3adaf8d635b5ef50e094bf841de83cc40baeb0 +Author: Patrik Oldsberg +Date: Sun Oct 17 13:16:29 2021 +0200 + + catalog-import: switch tests back to sync to be sure it works + + Signed-off-by: Patrik Oldsberg + +commit e535ea766a257f1bb8635b833c601d64d91deb39 +Author: Patrik Oldsberg +Date: Sun Oct 17 13:07:37 2021 +0200 + + core-components: use built-in async react-syntax-highlighter component + + Signed-off-by: Patrik Oldsberg + +commit 99563aacb3b63994c03d0861858dd3a3f62009e2 +Merge: c9858922d0 cdf8ca6111 +Author: Eric Peterson +Date: Sun Oct 17 12:14:12 2021 +0200 + + Merge pull request #7635 from SDA-SE/feat/fix-techdocs-flickering + +commit c9858922d075c92bde7eb6bb754ea5b2f1801826 +Merge: 0995c9cc5b a45682be4e +Author: Patrik Oldsberg +Date: Sat Oct 16 17:38:23 2021 +0200 + + Merge pull request #7645 from backstage/rugvip/scaffoodlin + + scaffolder-backend: use mock-fs in workflow runner tests + +commit 9d18bc8ba46c7ed5583544f8d0ca587d37c79eb9 +Author: Patrik Oldsberg +Date: Thu Oct 7 23:54:24 2021 +0200 + + errors: added ForwardedError, unknown cause, and unknown fields in ErrorLike + + Signed-off-by: Patrik Oldsberg + +commit 6077d61e735e7dbfda2919be090fb30e28034c76 +Author: Patrik Oldsberg +Date: Thu Oct 7 12:17:33 2021 +0200 + + errors: added changeset for new assertion helpers + + Signed-off-by: Patrik Oldsberg + +commit 93c537f40a6b238ef8776310ac4d8688989131e6 +Author: Patrik Oldsberg +Date: Tue Oct 5 22:39:16 2021 +0200 + + catalog-backend: use assertError + + Signed-off-by: Patrik Oldsberg + +commit afb67603b390368dc8a8db4e24f45aa663f2ed9e +Author: Patrik Oldsberg +Date: Tue Oct 5 18:58:23 2021 +0200 + + errors: added new assertion APIs + + Signed-off-by: Patrik Oldsberg + +commit 0995c9cc5bb68ff8b847a08dd46a20cf39048213 (tag: v0.51.1, tag: release-2021-10-16) +Merge: 1bcd771342 6968962c92 +Author: Patrik Oldsberg +Date: Sat Oct 16 14:59:27 2021 +0200 + + Merge pull request #7644 from backstage/rugvip/scafoodler-fixes + + scaffolder-backend: release sourcePath fix from #7588 + +commit a45682be4e175a5867f2e537d0a4a63545b03d06 +Author: Patrik Oldsberg +Date: Sat Oct 16 14:58:14 2021 +0200 + + scaffolder-backend: use mock-fs in workflow runner tests + + Signed-off-by: Patrik Oldsberg + +commit 6968962c920508eae19a4c1c200fa2c8980a4006 +Author: Patrik Oldsberg +Date: Sat Oct 16 14:00:24 2021 +0200 + + scaffolder-backend: release path traversal fix + + Signed-off-by: Patrik Oldsberg + +commit 5ea950075d6bce2b44fa18948b5b2113a1a4298c +Author: Patrik Oldsberg +Date: Sat Oct 16 13:39:56 2021 +0200 + + scaffolder-backend: extra safety around resolving source paths + + Signed-off-by: Patrik Oldsberg + +commit 1bcd771342eb0c35cb0949a74ca11560b8dd1dad +Merge: 639d48566a 853bbfe302 +Author: Patrik Oldsberg +Date: Sat Oct 16 13:16:12 2021 +0200 + + Merge pull request #7588 from SDA-SE/feat/githubpraction + + Make sure `sourcePath` of `publish:github:pull-request` can only be used to retrieve files from the workspace. + +commit 639d48566ad5de8c7e4a8ad364ef9b0c0489f735 +Author: Bodil Björklund +Date: Fri Oct 15 23:50:51 2021 +0200 + + Update how-to-guides.md (#7639) + +commit f67dff0d2095acc9e799fb24600de6a79a9272eb +Author: Marley Powell +Date: Fri Oct 15 21:43:53 2021 +0100 + + chore: updated changeset + + Signed-off-by: Marley Powell + +commit 8a92dc3155001bec1ba9d2f8358e0069aab46841 +Author: Marley Powell +Date: Fri Oct 15 21:38:20 2021 +0100 + + refactor(`@backstage/plugin-azure-devops-backend`): re-exported types from `azure-devops-node-api` + + rexported types from `azure-devops-node-api` and consume those re-exported in `@backstage/plugin-azure-devops-frontend`. + + Signed-off-by: Marley Powell + +commit b149e9429030ac8aa53d939390faccc8272e7d03 +Author: Phil Kuang +Date: Fri Oct 15 16:08:06 2021 -0400 + + fix(catalog:register): support optional locations + + Signed-off-by: Phil Kuang + +commit 177401b571501c576fa5ae9f8c1380821fb524eb +Author: Phil Kuang +Date: Fri Oct 15 14:44:50 2021 -0400 + + refactor(search): display entity title for result items if defined + + Signed-off-by: Phil Kuang + +commit 367a6e44da190e3c4a988d40f868ca05ea3fb7cd +Author: Gabriel Noal +Date: Fri Oct 15 12:45:09 2021 -0300 + + replace minor to patch + + Signed-off-by: Gabriel Noal + +commit cdf8ca61118dfadd79b3af2d95adf682a0ba0922 +Author: Dominik Henneke +Date: Fri Oct 15 17:14:12 2021 +0200 + + Only replace the shadow dom if the content is changed to avoid a flickering UI + + Signed-off-by: Dominik Henneke + +commit 83897af22558b5508f5ab22bcbbd4c6965aa3173 +Author: Lykke Axlin +Date: Fri Oct 15 16:01:29 2021 +0200 + + removed export + + Signed-off-by: Lykke Axlin + + Co-authored-by: klaraab + +commit 59e822b43c39f1128188a8a0f7df053bd708f4dd +Merge: c5664a1307 223e8de6b4 +Author: Patrik Oldsberg +Date: Fri Oct 15 15:39:06 2021 +0200 + + Merge pull request #7634 from backstage/rugvip/filters + + config-loader: apply visibility filter to configuration schema validation errors + +commit 41c28ef488a723fce255759836020f6eb04e6c63 +Author: Lykke Axlin +Date: Fri Oct 15 15:12:43 2021 +0200 + + update packages + + Signed-off-by: Lykke Axlin + + Co-authored-by: klaraab + +commit 97841e2499a1d60cff36070f095472b7c58a2501 +Merge: 49511f5081 c5664a1307 +Author: Lykke Axlin +Date: Fri Oct 15 14:54:59 2021 +0200 + + Merge branch 'master' of https://github.com/backstage/backstage into pr-draft + +commit 223e8de6b4813c48ef13650caf9ea22343aaf459 +Author: Patrik Oldsberg +Date: Fri Oct 15 14:27:52 2021 +0200 + + changesets: added changeset for schema error filtering + + Signed-off-by: Patrik Oldsberg + +commit 3e2b3e99e4893acf309db0d949e4b97a55225857 +Author: Patrik Oldsberg +Date: Fri Oct 15 14:20:12 2021 +0200 + + config-loader: unit tests for error visibility filtering + fixes + + Signed-off-by: Patrik Oldsberg + +commit 8f30ac386bffb7169688928737ddac2756a44bf1 +Author: Patrik Oldsberg +Date: Fri Oct 15 13:59:42 2021 +0200 + + config-loader: filter out schema errors that aren't visible + + Signed-off-by: Patrik Oldsberg + +commit b31daba201b555b2fa522043602c8ac691266a8a +Author: Patrik Oldsberg +Date: Fri Oct 15 13:58:54 2021 +0200 + + config-loader: collect visibility paths both by data and schema path + + Signed-off-by: Patrik Oldsberg + +commit c5664a1307244af4a0ac00c195c3977f9a529374 +Merge: 157843e5aa 7015078ffe +Author: Himanshu Mishra +Date: Fri Oct 15 14:48:55 2021 +0200 + + Merge pull request #7629 from niallmccullagh/bv-adopters + + docs(adopters): add Bazaarvoice to adopters + +commit 09c106b96cc07dbfb6cce54997ed4fea84cdbcfb +Author: Oliver Sand +Date: Fri Oct 15 12:22:44 2021 +0200 + + Add `entitiesFilter` option to `FossaPage` + + Signed-off-by: Oliver Sand + +commit 3ba87f514e224393c94cd71f9d8ed674fc3b206f +Author: Oliver Sand +Date: Fri Oct 15 11:16:21 2021 +0200 + + Add `GitHubOrgEntityProvider` + + Signed-off-by: Oliver Sand + +commit 7015078ffe02a1e270122c009fde33243c1239c6 +Author: Niall McCullagh +Date: Fri Oct 15 10:47:52 2021 +0100 + + docs(adopters): add Bazaarvoice to adopters + + Signed-off-by: Niall McCullagh + +commit 157843e5aa7f569089fe5d47243e3768c4d14692 +Author: Emma Indal +Date: Fri Oct 15 11:46:34 2021 +0200 + + [Search] add how to guide for indexing TechDocs documents (#7625) + + * add how to guide for indexing techdocs documents + + Signed-off-by: Emma Indal + + * add step of how to add techdocs to search type filter + + Signed-off-by: Emma Indal + +commit 01a4c5f9987937746b45dc2c98c35890d343e8ca +Author: Brian Fletcher +Date: Fri Oct 15 10:36:49 2021 +0100 + + fixes tests + + Signed-off-by: Brian Fletcher + +commit fc5150de4152cd0157cd6f99885c5748b7cb7a3a +Author: Oliver Sand +Date: Thu Oct 14 14:46:17 2021 +0200 + + Fix typo + + Signed-off-by: Oliver Sand + +commit 49511f508196e47d4d2107a37412ae47442e8ad9 +Author: Lykke Axlin +Date: Fri Oct 15 10:41:48 2021 +0200 + + added support for sqlite + + Signed-off-by: Lykke Axlin + + Co-authored-by: klaraab + +commit 33b9694f5ce8c920daae2d9370bfb29d085ad0fc +Author: Marcus Eide +Date: Thu Oct 14 14:43:56 2021 +0200 + + Add support for more settings + + Signed-off-by: Marcus Eide + +commit 5ad1f523d569e020548fe17713165775d53995b8 +Author: Marcus Eide +Date: Wed Oct 13 14:25:06 2021 +0200 + + Make the create function async + + Signed-off-by: Marcus Eide + +commit ab9b4a6ea6a441e96e429def3bf43548ac089a98 +Author: Marcus Eide +Date: Wed Oct 13 09:59:00 2021 +0200 + + Add changeset + + Signed-off-by: Marcus Eide + +commit bf259c989020210b4879aa8bec6e6024d3292814 +Author: Marcus Eide +Date: Wed Oct 13 09:58:47 2021 +0200 + + Add Firestore to vale vocab + + Signed-off-by: Marcus Eide + +commit d2f755fa732b6d777f51a35630cb1110b5b9ba54 +Author: Marcus Eide +Date: Wed Oct 13 09:21:30 2021 +0200 + + Update api-reports + + Signed-off-by: Marcus Eide + +commit 4f4e22d176d12195eb0ee007a0f25423e01d0387 +Author: Marcus Eide +Date: Tue Oct 12 16:19:45 2021 +0200 + + Use KeyStores.fromConfig() in router + + Signed-off-by: Marcus Eide + +commit 12d4abe7b25319a085e2cfeab73f52e60004f747 +Author: Marcus Eide +Date: Tue Oct 12 16:18:30 2021 +0200 + + Add project dependency to package.json + + Signed-off-by: Marcus Eide + +commit 16288b6580c8701ba0d3bdac26e04f597916a3ae +Author: Marcus Eide +Date: Tue Oct 12 16:16:15 2021 +0200 + + Add class that will return a key-store based on application config + + Signed-off-by: Marcus Eide + +commit 3a62f7619a9a915dec5bfb22ce3164c3a1e947c8 +Author: Marcus Eide +Date: Tue Oct 12 16:14:30 2021 +0200 + + Add class to use Firestore as a key-store + + Signed-off-by: Marcus Eide + +commit d8ea1edcdbead3460d1cbfbfc56d067b5b476c87 +Author: Marcus Eide +Date: Tue Oct 12 16:11:29 2021 +0200 + + Add support for auth.keyStore in application config + + Signed-off-by: Marcus Eide + +commit 35b7a0bbd5896571eba7bd9f187fd9e91066d751 +Merge: 74b6b5cfc2 4050e33f03 +Author: Patrik Oldsberg +Date: Fri Oct 15 10:28:53 2021 +0200 + + Merge pull request #7569 from backstage/rugvip/transformers + + cli: rework how we handle ESM transforms for tests + +commit 04c5f927b820b5a0d9f395745f387db5fbc51b23 +Author: Marley Powell +Date: Fri Oct 15 08:19:45 2021 +0100 + + chore: updated `app-config.development.yaml.tpl` to use new config format for `techdocs`. + + The 'techdocs.generators.techdocs' configuration key is deprecated and will be removed in the future. Please use 'techdocs.generator' instead. See here https://backstage.io/docs/features/techdocs/configuration + + Signed-off-by: Marley Powell + +commit f39e3b90506d70eb6b4f2768256644edfd1f72e5 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Fri Oct 15 04:23:38 2021 +0000 + + chore(deps-dev): bump @changesets/cli from 2.16.0 to 2.17.0 + + Bumps [@changesets/cli](https://github.com/changesets/changesets) from 2.16.0 to 2.17.0. + - [Release notes](https://github.com/changesets/changesets/releases) + - [Changelog](https://github.com/atlassian/changesets/blob/main/docs/modifying-changelog-format.md) + - [Commits](https://github.com/changesets/changesets/compare/@changesets/cli@2.16.0...@changesets/cli@2.17.0) + + --- + updated-dependencies: + - dependency-name: "@changesets/cli" + dependency-type: direct:development + update-type: version-update:semver-minor + ... + + Signed-off-by: dependabot[bot] + +commit 74df0b1e2b0fa7aca9cba075ad1abe7a1ba2e924 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Fri Oct 15 04:10:55 2021 +0000 + + chore(deps): bump selfsigned from 1.10.8 to 1.10.11 + + Bumps [selfsigned](https://github.com/jfromaniello/selfsigned) from 1.10.8 to 1.10.11. + - [Release notes](https://github.com/jfromaniello/selfsigned/releases) + - [Commits](https://github.com/jfromaniello/selfsigned/compare/v1.10.8...v1.10.11) + + --- + updated-dependencies: + - dependency-name: selfsigned + dependency-type: direct:production + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit 9990df8a1f5811e2c0f1163b685cfa1f2d46ba63 +Author: Brian Fletcher +Date: Thu Oct 14 17:38:51 2021 +0100 + + Exports required to implement scaffolder broker + + Signed-off-by: Brian Fletcher + +commit 3c756657b8127f7796786eb672b07e6ede88d620 +Author: Gabriel Noal +Date: Wed Oct 13 17:31:32 2021 -0300 + + Sort Jenkins biuld by timestemp in CITable + + Signed-off-by: Gabriel Noal + +commit 74b6b5cfc230e6294d2726d86e453ec4b9596ebb +Merge: 72be1cf988 de3e26aecc +Author: Patrik Oldsberg +Date: Thu Oct 14 21:55:53 2021 +0200 + + Merge pull request #7617 from lunarway/fix/github-refresh + + Fix refresh token reuse bug in Github provider + +commit de3e26aeccd11a15333d5ead4a398904fbefb554 +Author: Crevil +Date: Thu Oct 14 21:26:43 2021 +0200 + + Fix refresh reuse bug in Github provider + + Currently when the Github provider refreshes an access token it doesn't forward + the new refresh token to the caller. As Github only allows refresh tokens to be + used once, the next refresh call will fail. + + This change fixes the bug by returning the new refresh token upon refresh. + + This change is similar to 25a613bdd775b984a236944d6d97ff30b65ef4d8 (#7110) for + the GitLab provider. + + Signed-off-by: Crevil + +commit 72be1cf98824128478c9fbe3fd33d424f5aef0d5 +Merge: 1b02df9f46 6a7e90c6ca +Author: Patrik Oldsberg +Date: Thu Oct 14 19:33:58 2021 +0200 + + Merge pull request #7614 from backstage/rugvip/e2e-fix + + e2e-test: improve page content checking resilience + +commit 6a7e90c6cadad80d71497b69598e236c3b19277a +Author: Patrik Oldsberg +Date: Thu Oct 14 19:01:29 2021 +0200 + + e2e-test: improve page content checking resilience + + Signed-off-by: Patrik Oldsberg + +commit 1b02df9f467ea11a4571df46faabe655c3ee10c8 (tag: v0.51.0, tag: release-2021-10-14) +Merge: efdefe673f 4c840cebfa +Author: Patrik Oldsberg +Date: Thu Oct 14 18:04:07 2021 +0200 + + Merge pull request #7514 from backstage/changeset-release/master + + Version Packages + +commit ab2df3be333952daf9c91085f976597f13281733 +Author: Jarek Łukow +Date: Wed Oct 13 19:09:24 2021 +0200 + + Improve API docs in @backstage/catalog-model + + Signed-off-by: Jarek Łukow + +commit 4c840cebfa625304adfef6de557015dc4d74f05e +Author: github-actions[bot] +Date: Thu Oct 14 12:45:08 2021 +0000 + + Version Packages + +commit efdefe673fc0b62da96d778940bb3b833622f1cd +Merge: dc93d20204 5b57ba36f0 +Author: Patrik Oldsberg +Date: Thu Oct 14 14:39:19 2021 +0200 + + Merge pull request #7410 from SDA-SE/feat/starredentitiesapi + + Introduce a new `StarredEntitiesApi` that is used in the `useStarredEntities` hook + +commit dc93d202043ac376e316d0d4dedf06774e3a505d +Merge: 34c6043600 f71fda7600 +Author: Ben Lambert +Date: Thu Oct 14 13:52:25 2021 +0200 + + Merge pull request #7355 from backstage/feat/blam/nunjucks-template + + Add support for `scaffolder.backstage.io/v1beta3` Software Templates + +commit d87aab0e65772ff9f6f7b57d67b8fa1178424b9e +Author: Lasse Gaardsholt +Date: Thu Oct 14 13:26:06 2021 +0200 + + fixing incorrect authorUrl + + Signed-off-by: Gaardsholt + +commit e2b842a08111b6cd5e1fd42b30c78c7b4ee65aa8 +Author: Himanshu Mishra +Date: Thu Oct 14 12:31:15 2021 +0200 + + chore: sync yarn.lock on master branch + + Signed-off-by: Himanshu Mishra + Signed-off-by: Gaardsholt + +commit 34c60436007e22b7a72c1e4805fe1acdf9396106 +Merge: 03d306945e 34f9036a5f +Author: Ben Lambert +Date: Thu Oct 14 13:23:25 2021 +0200 + + Merge pull request #7605 from backstage/orkohunter/yarn-lock-sync + + chore: sync yarn.lock + +commit 4630d393813af22884d0c48a29ebb7ae63ed4f3b +Author: Oliver Sand +Date: Thu Oct 14 12:56:54 2021 +0200 + + Add docs + + Signed-off-by: Oliver Sand + +commit 406dcf06e5fe3ce5d2c4abd74c6a7359605f55f3 +Author: Oliver Sand +Date: Thu Oct 14 12:31:12 2021 +0200 + + Add `MicrosoftGraphOrgEntityProvider` + + Signed-off-by: Oliver Sand + +commit 34f9036a5ff418ee36efa03cb257d805388bc7a6 +Author: Himanshu Mishra +Date: Thu Oct 14 12:31:15 2021 +0200 + + chore: sync yarn.lock on master branch + + Signed-off-by: Himanshu Mishra + +commit 03d306945ee91239b6d859a24a7e7a3d8632cd08 +Merge: d3578a2e70 42c618abf6 +Author: Fredrik Adelöw +Date: Thu Oct 14 12:18:34 2021 +0200 + + Merge pull request #7584 from SDA-SE/feat/fetch-resolvesafe + + Use `resolveSafeChildPath` in the `fetchContents` function + +commit 5b57ba36f034765bd9f0fe14172f8b108cadd50d +Author: Dominik Henneke +Date: Thu Oct 14 11:21:45 2021 +0200 + + Provide a migration from the old storage location and format to the new one + + Signed-off-by: Dominik Henneke + +commit 4ec21812bbd2ed199e23519f63f9a5abf6e73691 +Author: Dominik Henneke +Date: Wed Oct 13 16:07:27 2021 +0200 + + Fix import + + Signed-off-by: Dominik Henneke + +commit 0366c9b6671430c97efa5927286c5f9ba247bc72 +Author: Dominik Henneke +Date: Wed Oct 13 13:25:15 2021 +0200 + + Introduce a `useStarredEntity` hook to check if a single entity is starred + + Signed-off-by: Dominik Henneke + +commit 1dbaaf7801070c208bcad17ef531c85dbad753f2 +Author: Dominik Henneke +Date: Wed Oct 13 12:14:10 2021 +0200 + + Simplify the StarredEntitiesApi interface + + Signed-off-by: Dominik Henneke + +commit bd924fece8b82161dc2e84b079dced5223aa81de +Author: Dominik Henneke +Date: Tue Oct 12 11:09:51 2021 +0200 + + Add additional docs + + Signed-off-by: Dominik Henneke + +commit c1d50273de5674f1e211cd148c15366eb323741d +Author: Dominik Henneke +Date: Tue Oct 12 10:54:49 2021 +0200 + + Use entity references in the StarredEntitiesApi + + Signed-off-by: Dominik Henneke + +commit 78fcb898c492001e1ebbabe2b8e2f7fe9a67c2e5 +Author: Dominik Henneke +Date: Tue Oct 12 10:37:07 2021 +0200 + + Rename the storage location of the starred entities from `/settings/starredEntities` to `/starredEntitites/entitifyRefs` + + Signed-off-by: Dominik Henneke + +commit 615f668d317afbce4466f98cc811afa218e31c06 +Author: Dominik Henneke +Date: Tue Oct 12 11:02:30 2021 +0200 + + Use entity refs as a storage format instead of the custom one + + Signed-off-by: Dominik Henneke + +commit 56f0ef983e6bcaa1221beaa9cdfd1a94d51db1ee +Author: Dominik Henneke +Date: Tue Oct 12 10:16:30 2021 +0200 + + Remove the star and unstar method from DefaultStarredEntitiesApi + + Signed-off-by: Dominik Henneke + +commit 8f55fb815b5e9ba8d75c96b1b9bf504c40a0ff3d +Author: Dominik Henneke +Date: Tue Oct 12 10:37:50 2021 +0200 + + Fix test + + Signed-off-by: Dominik Henneke + +commit 126daa5ec34391b4e2a4389981a188b30425b53d +Author: Dominik Henneke +Date: Mon Oct 11 11:22:13 2021 +0200 + + Resolve PR comments + + * rename starredEntities$ to starredEntitie$ + * delete star and unstar from the public interface + + Signed-off-by: Dominik Henneke + +commit 82fbda923e16a028a68fac9eb888ec7113a1636d +Author: Dominik Henneke +Date: Thu Sep 30 15:09:38 2021 +0200 + + Introduce a new `StarredEntitiesApi` that is used in the `useStarredEntities` hook + + Signed-off-by: Dominik Henneke + +commit 54bbe25c344606dcc28a64e72774e705bc9b04d3 +Author: Dominik Henneke +Date: Mon Sep 27 11:32:24 2021 +0200 + + Store the namespaced bucket storage for each instance that was created with `MockStorage.create()` instead of global variable + + Signed-off-by: Dominik Henneke + +commit f71fda7600dbaba982b0aeda6b7ce739c0e5ca2f +Author: blam +Date: Thu Oct 14 10:39:00 2021 +0200 + + chore: removing double log Lines + + Signed-off-by: blam + +commit 7fe6c0bb70232818e74d5bcd1845ab2627cbe6a5 +Author: blam +Date: Tue Oct 12 16:48:56 2021 +0200 + + chore: reworking the docs a little bit + + Signed-off-by: blam + +commit ca16be0611964b9e5e74c43b7f030929f13812e6 +Author: blam +Date: Mon Oct 11 15:23:29 2021 +0200 + + chore: removing the older json schema not required anymore + + Signed-off-by: blam + +commit ac29021b53c5730404c9aba291214683ed799151 +Author: blam +Date: Mon Oct 11 14:55:16 2021 +0200 + + chore: re-running things + + Signed-off-by: blam + +commit 17d7f5bc57dfb5d57db11927694de2d6dfcb9f25 +Author: blam +Date: Mon Oct 11 14:51:43 2021 +0200 + + feat: removing the older stuff and updating to work with the new common packages + + Signed-off-by: blam + +commit b1d5d584e57d2f5f2551020fe47a03dacdf69288 +Author: blam +Date: Mon Oct 11 14:43:05 2021 +0200 + + chore: updating the version string + + Signed-off-by: blam + +commit 5118da771f7fbfc77a20c41e847db7c9e55f1f94 +Author: blam +Date: Mon Oct 11 14:34:55 2021 +0200 + + chore: remove the changes for catalog-backend too + + Signed-off-by: blam + +commit 18404c795b11013613399c31d3aef96cf66cb6aa +Author: blam +Date: Mon Oct 11 14:31:53 2021 +0200 + + chore: reset the changes to the catalog-model + + Signed-off-by: blam + + Signed-off-by: blam + +commit 8893feca7306facecee44ca5737619a41442c45f +Author: blam +Date: Fri Oct 1 11:21:59 2021 +0200 + + chore: docs updates + + Signed-off-by: blam + +commit ca9c69f3a88463474abafe91cfdc7848b46235e8 +Author: blam +Date: Thu Sep 30 17:16:08 2021 +0200 + + chore: fix code review comments + + Signed-off-by: blam + +commit a61204bc4ba1f8cb14d743fb3557b914b6364948 +Author: blam +Date: Wed Sep 29 10:53:34 2021 +0200 + + chore: remove the link to the legacy docs + + Signed-off-by: blam + +commit 808d30cc307bb2ec5118153718d99e9f508ad520 +Author: blam +Date: Tue Sep 28 20:29:19 2021 +0200 + + docs: removing older documentation for now + + Signed-off-by: blam + +commit f39de106b5677e3dbb71047f52f9ab5fdc6930f0 +Author: blam +Date: Tue Sep 28 17:51:25 2021 +0200 + + chore: only dump when there's only one param ref + + Signed-off-by: blam + +commit cbe2803100e1d4d00037db77e40a8e2051c0b02b +Author: blam +Date: Tue Sep 28 15:39:31 2021 +0200 + + chore: remove the hackery and wrap up the template stringify + + Signed-off-by: blam + +commit 18083d18213fbe8d70e10e5d5036ee3ef9061df1 +Author: blam +Date: Tue Sep 28 14:08:35 2021 +0200 + + chore: add changeset + + Signed-off-by: blam + +commit 5a0d2e9fa55addf41ded8258138bf8b2cdf40cf6 +Author: blam +Date: Tue Sep 28 14:01:51 2021 +0200 + + feat(catalog-model/docs): Updating `api-report` for `catalog-model` + Signed-off-by: blam + + Signed-off-by: blam + +commit f8355c99cb649d286354a83e07da0f77c542d536 +Author: blam +Date: Tue Sep 28 13:58:31 2021 +0200 + + chore: remove all tracked temp directories and make sure to emit the processing and skipped events + + Signed-off-by: blam + +commit 5bdbb6caec21c6ce2e09ecb7d57f15346b2aab44 +Author: blam +Date: Tue Sep 28 04:56:34 2021 +0200 + + chore: fix up some types + + Signed-off-by: blam + +commit 154b86e1da0bb1eb2f4773f32c4c4eec9c430f97 +Author: blam +Date: Tue Sep 28 04:45:09 2021 +0200 + + feat: think we're at feature parity + + Signed-off-by: blam + +commit fe2324e63007b50e5be1c885c9de406c6df8415a +Author: blam +Date: Tue Sep 28 04:29:19 2021 +0200 + + chore: added validation for schemas for actions + Signed-off-by: blam + + Signed-off-by: blam + +commit c7b089a5aeb2817e91543dee1db571fe7e66d7d3 +Author: blam +Date: Tue Sep 28 04:10:33 2021 +0200 + + chore: adding the new if syntax and using the power of nunjucks + + Signed-off-by: blam + +commit 1ec5ef3699ec198f4089abb836cc34d9bbd254ba +Author: blam +Date: Tue Sep 28 03:43:26 2021 +0200 + + chore: acutally make the scaffolder backend run the v3 template + + Signed-off-by: blam + +commit 34b1278929753161cfae704843016141c9523d02 +Author: blam +Date: Tue Sep 28 02:56:37 2021 +0200 + + chore: worked out a niceish way to template objects and stuff as first class citizens + + Signed-off-by: blam + +commit 6ab1202fc8ec684b058b2f3cac548b4986460f37 +Author: blam +Date: Mon Sep 27 17:09:34 2021 +0200 + + feat: rework the TaskWorker to just be concerned with the task delegation + + Signed-off-by: blam + +commit 4e005b13cfc09a0ca5c227367794ab1664beb500 +Author: blam +Date: Mon Sep 27 14:26:23 2021 +0200 + + feat: moving all the legacy tests over to the new LegacyWorkflowRunner tests + + Signed-off-by: blam + +commit edb04593ff85eb77c335809ff993a813728321e8 +Author: blam +Date: Fri Sep 24 14:01:23 2021 +0200 + + feat(TaskWorker): move out the logic into the `WorkflowRunner` implementations + + Signed-off-by: blam + +commit e3dbdf66797fb332897cd93950e51a610782d84f +Author: blam +Date: Thu Sep 23 15:20:43 2021 +0200 + + feat(TaskWorker): split the parsing of the templates with the new syntax + + Signed-off-by: blam + +commit ccea0b8271b3cd054297383b15b11e85ddc4bfcb +Author: blam +Date: Wed Sep 22 18:08:21 2021 +0200 + + feat(catalog-backend): add the new kind to the validation workflow + + Signed-off-by: blam + +commit b2113723d0192f24014c01c6cc72db3a8e3d8d2b +Author: blam +Date: Wed Sep 22 17:47:09 2021 +0200 + + feat(catalog-model): adding `TemplateEntityV1Beta3` as a kind in `catalog-model` + + Signed-off-by: blam + +commit d3578a2e707f31f77bcc954e2df2bd3cfde954a0 +Merge: 1c29559eb7 6ed423c139 +Author: Ben Lambert +Date: Thu Oct 14 12:03:55 2021 +0200 + + Merge pull request #7602 from backstage/blam/fix-swagger-depedenency + + blam/fix swagger depedenency + +commit 6ed423c139ae54c7e48d6e1a517173b8ce4a911e +Author: blam +Date: Thu Oct 14 11:46:53 2021 +0200 + + chore: added changeset + + Signed-off-by: blam + +commit 88faa29c76ed024c5ff49ff309795a31b43cf3cd +Author: blam +Date: Thu Oct 14 11:44:19 2021 +0200 + + chore: force `swagger-client` to `3.16.1` because of removal of dependency + + Signed-off-by: blam + +commit 1c29559eb7417a295fca2c5a35a4d08fcfea418b +Merge: 2d3c7ab291 06c894f7d9 +Author: Fredrik Adelöw +Date: Thu Oct 14 10:10:15 2021 +0200 + + Merge pull request #7596 from backstage/dependabot/npm_and_yarn/types/body-parser-1.19.1 + + Bump @types/body-parser from 1.19.0 to 1.19.1 + +commit ce0aef18417a4df705470fde41cc26064f3bf1b2 +Author: Oliver Sand +Date: Thu Oct 14 09:43:13 2021 +0200 + + Capture analytics events for clicks in the graph + + Signed-off-by: Oliver Sand + +commit 0c17901e457679857cdc1c1e2cbf411cbc37d40a +Author: Oliver Sand +Date: Thu Oct 14 09:26:45 2021 +0200 + + Fix typo in docs + + Signed-off-by: Oliver Sand + +commit 06c894f7d9691e6f9aa2b4bc4272bdf2993a9612 +Author: Fredrik Adelöw +Date: Thu Oct 14 09:25:58 2021 +0200 + + fixup + + Signed-off-by: Fredrik Adelöw + +commit 2d3c7ab291441ab10f6d774d0092384b6ad1595d +Merge: 87e6a88418 eab072161e +Author: Fredrik Adelöw +Date: Thu Oct 14 09:21:35 2021 +0200 + + Merge pull request #7591 from ConnorDY/replace-backslash-n-with-newline + + Replace `\n` with newline for GitHub App private key to allow storing private key as an environment variable + +commit e63a74563a760f6c9388f2cf0ddd73289052c894 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Thu Oct 14 04:09:59 2021 +0000 + + Bump @types/body-parser from 1.19.0 to 1.19.1 + + Bumps [@types/body-parser](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/body-parser) from 1.19.0 to 1.19.1. + - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) + - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/body-parser) + + --- + updated-dependencies: + - dependency-name: "@types/body-parser" + dependency-type: direct:development + update-type: version-update:semver-patch + ... + + Signed-off-by: dependabot[bot] + +commit eab072161e36cd0a8457212f8d1f21e3671894e6 +Author: Connor Younglund +Date: Wed Oct 13 13:30:09 2021 -0400 + + generate changeset + + Signed-off-by: Connor Younglund + +commit dd9cf64dd5e28264a1f1484f2fe17e69268c1cad +Author: Connor Younglund +Date: Wed Oct 13 13:10:15 2021 -0400 + + replace `\n` with newline for GitHub App private key + + Signed-off-by: Connor Younglund + +commit 4050e33f039c984be6d0a6edccb8f5d2fbcbadbd +Author: Patrik Oldsberg +Date: Tue Oct 12 18:01:56 2021 +0200 + + cli: remove old jest ESM transform + + Signed-off-by: Patrik Oldsberg + +commit b486adb8c6707e010044178ba3f19557ac4ee6a7 +Author: Patrik Oldsberg +Date: Sat Oct 9 14:24:01 2021 +0200 + + cli: rework jest ESM handling by transforming by default + + Signed-off-by: Patrik Oldsberg + +commit c4914b63c9ed2051224d66159c50dfa0baba3a8b +Author: Hans Knecht +Date: Wed Oct 13 11:27:44 2021 -0400 + + fix: resources for frontend + + Signed-off-by: Hans Knecht + +commit 87e6a8841854ee0789502a91ca0a7f334c4fdeff +Merge: 76fef740fe 9f6c4233ac +Author: Fredrik Adelöw +Date: Wed Oct 13 16:48:36 2021 +0200 + + Merge pull request #7585 from backstage/freben/async-test + + made more tests async + +commit e5679eb27c55836e18b7eab24a3a2ab6c2e77ec8 +Author: Lykke Axlin +Date: Wed Oct 13 16:35:43 2021 +0200 + + add url regex to community link + + Signed-off-by: Lykke Axlin + + Co-authored-by: klaraab + +commit 853bbfe302e422d321cdef0644135eccf3119ad6 +Author: Oliver Sand +Date: Wed Oct 13 16:34:59 2021 +0200 + + Add tests for getRepoSourceDirectory + + Signed-off-by: Oliver Sand + +commit 0f99f1170e314c7370767564dd81417146e074dc +Author: Oliver Sand +Date: Wed Oct 13 16:34:40 2021 +0200 + + Make sure `sourcePath` of `publish:github:pull-request` can only be used to retrieve files from the workspace + + Signed-off-by: Oliver Sand + +commit e8a1c1afe21b78a8b299e1135af99cc766248479 +Author: Dominik Henneke +Date: Wed Oct 13 16:24:07 2021 +0200 + + Don't require a validation pattern for the jenkins base URL + + Signed-off-by: Dominik Henneke + +commit 9f6c4233ac7aa37e019dd1b61f6b80d538d84c7e +Author: Fredrik Adelöw +Date: Wed Oct 13 16:18:59 2021 +0200 + + made more tests async + + Signed-off-by: Fredrik Adelöw + +commit 76fef740fe6f67bf03b7bf26239528c24c53bb0c +Author: Camila Belo +Date: Wed Oct 13 16:15:27 2021 +0200 + + [TechDocs] Experimental useTechDocsReaderDom hook (#7476) + + * WIP! + + Co-authored-by: Camila Belo + Signed-off-by: Eric Peterson + + * fix: use dom when updating sidebar + + Signed-off-by: Camila Belo + + * fix: extract small components and transformers + + Signed-off-by: Camila Belo + + * docs: describe the useTechDocsReaderDom + + Signed-off-by: Camila Belo + + * docs: update api report + + Signed-off-by: Camila Belo + + * docs: make the hook internal + + Signed-off-by: Camila Belo + + * fix: remove circular progress from the alert + + Signed-off-by: Camila Belo + + * Fix test + + Signed-off-by: Eric Peterson + + * Mark new exports as @internal, add a text string to make it easy to find in the future + + Signed-off-by: Eric Peterson + + * Changeset + + Signed-off-by: Eric Peterson + + * Do not show progress bar during checking; prevent jumpy site on navigation + + Signed-off-by: Eric Peterson + + * Combine progress/alert into a state indicator component and clarify vars. + + Signed-off-by: Eric Peterson + + * fix: documentation state updates + + Co-authored-by: Eric Peterson + Signed-off-by: Camila Belo + + * fix: use circular progress again + + Co-authored-by: Eric Peterson + Signed-off-by: Camila Belo + + * docs: update reader exports + + Co-authored-by: Eric Peterson + Signed-off-by: Camila Belo + + * refactor: using provider instead of HOC + + Co-authored-by: Eric Peterson + Signed-off-by: Camila Belo + + * refactor: update the changeset file + + Co-authored-by: Eric Peterson + Signed-off-by: Camila Belo + + Co-authored-by: Eric Peterson + +commit 42c618abf607abab92bcac80a657578524a34fc4 +Author: Dominik Henneke +Date: Wed Oct 13 16:00:51 2021 +0200 + + Use `resolveSafeChildPath` in the `fetchContents` function + + Signed-off-by: Dominik Henneke + +commit 809b6d85c694be1d4fb5ca6acdcad124fdbf1773 +Author: Lykke Axlin +Date: Wed Oct 13 15:43:35 2021 +0200 + + update yarn.lock + + Signed-off-by: Lykke Axlin + + Co-authored-by: klaraab + +commit 60f417850179ee678da3edfab73e2df40bee9bcd +Merge: 96f8bd673b 7c00725471 +Author: Lykke Axlin +Date: Wed Oct 13 15:19:13 2021 +0200 + + Merge branch 'master' of https://github.com/backstage/backstage into pr-draft + +commit 26b7943660c11b4cd5724e9a4434f1142986ba2b +Author: Aldira Putra Raharja +Date: Wed Oct 13 20:16:55 2021 +0700 + + update api-report and update docs around caData + + Signed-off-by: Aldira Putra Raharja + +commit 6c03f1b1378510b9de5d6f6a22fd318d1346c4b0 +Author: Daniel Deloff <44780793+rv-ddeloff@users.noreply.github.com> +Date: Wed Oct 13 08:57:27 2021 -0400 + + adds sidebar link + + Signed-off-by: Daniel Deloff <44780793+rv-ddeloff@users.noreply.github.com> + +commit 93f6d19f7fd5db370294668f2cd86dc6fea0ae27 +Author: Daniel Deloff <44780793+rv-ddeloff@users.noreply.github.com> +Date: Wed Oct 13 08:23:29 2021 -0400 + + updates api reports + + Signed-off-by: Daniel Deloff <44780793+rv-ddeloff@users.noreply.github.com> + +commit 0be1a7e75cb17457ec9f7eacfe46cad93a414313 +Merge: 471b212f85 7c00725471 +Author: Daniel Deloff <44780793+rv-ddeloff@users.noreply.github.com> +Date: Wed Oct 13 08:08:13 2021 -0400 + + merged in master + + Signed-off-by: Daniel Deloff <44780793+rv-ddeloff@users.noreply.github.com> + +commit 7c00725471596305bbf3dd72ae6d0185abb79ea9 +Merge: 6e870cd1b8 b488d8b69f +Author: Fredrik Adelöw +Date: Wed Oct 13 13:26:39 2021 +0200 + + Merge pull request #7567 from RoadieHQ/set-catalog-table-search-placeholder + + Set catalog table search field placeholder to "Filter" + +commit 6e870cd1b8867e5d63e179a46f9fa939d9f16753 +Merge: 22722f3cb2 9ee25fedf6 +Author: Johan Haals +Date: Wed Oct 13 13:22:17 2021 +0200 + + Merge pull request #7580 from ptychu/master + + Add Box as an adopter + +commit 22722f3cb2db9a8e9efde20cd964dad2c4313f12 +Merge: d2bf8ca90d 80ab0ccaa8 +Author: Johan Haals +Date: Wed Oct 13 12:48:32 2021 +0200 + + Merge pull request #7582 from backstage/mob/fix-orphan + + Catalog: Fix entity orphaning + +commit b488d8b69fa70e6081effa214e4e1f771f1dfaa9 +Author: Iain Billett +Date: Wed Oct 13 11:03:01 2021 +0100 + + Set catalog table search field placeholder to "Filter" + + Full reasoning is in the changeset but in short this is to avoid + confusion with the search plugin. The icon is also updated. + + Signed-off-by: Iain Billett + +commit 28afbcd45ac9bf1dd281869da9adcdc25d1a9350 +Author: Iain Billett +Date: Wed Oct 13 10:48:59 2021 +0100 + + Revert "Set catalog table search field placeholder to "Filter"" + + This reverts commit c9940ec5c5d515888c7f5cd2ee14a3672f9f02ac. + + Signed-off-by: Iain Billett + +commit efb0c6bf15dc707cda4924d8aa2c4e5be6f9aca4 +Author: Iain Billett +Date: Tue Oct 12 13:56:31 2021 +0100 + + Set catalog table search field placeholder to "Filter" + + Full reasoning is in the changeset but in short this is to avoid + confusion with the search plugin. + + Signed-off-by: Iain Billett + +commit d2bf8ca90dbdce3bf6882bc3e6491f97a471c233 (tag: v0.50.2, tag: release-2021-10-13) +Merge: 8c754968d9 3135d711d8 +Author: Fredrik Adelöw +Date: Wed Oct 13 12:30:39 2021 +0200 + + Merge pull request #7484 from awanlin/awanlin/azure-devops-frontend-plugin + + Adding Azure DevOps frontend plugin + +commit 96f8bd673b63f164925326434791cd5797f7a895 +Author: Lykke Axlin +Date: Wed Oct 13 12:29:00 2021 +0200 + + added autocomplete when selecting a project + + Signed-off-by: Lykke Axlin + + Co-authored-by: klaraab + +commit 80ab0ccaa83f77ff760877cfcfb56d0f7b296dd0 +Author: Johan Haals +Date: Wed Oct 13 11:34:58 2021 +0200 + + fix test names + + Signed-off-by: Johan Haals + +commit 3b59bb915e9e7363ecbda3439c4e2e591ed0b850 +Author: Johan Haals +Date: Wed Oct 13 11:30:56 2021 +0200 + + Catalog: Fix entity orphaning + + Co-authored-by: Patrik Oldsberg + Signed-off-by: Johan Haals + +commit 9ee25fedf65f4c42d3b0b8f957c7e5aae8b0a831 +Author: Michal Partyka +Date: Wed Oct 13 09:49:27 2021 +0200 + + Add Box as an adopter + + Signed-off-by: Michal Partyka + +commit c0041ca9c3026f0ee0294cf49a6af5c6c62a3a7d +Author: Lykke Axlin +Date: Wed Oct 13 08:17:06 2021 +0200 + + changed dependencies to match plugin template + + Signed-off-by: Lykke Axlin + + Co-authored-by: klaraab + +commit f9cc2509f85bf062e4996335d2bee73b5deaa50f +Author: Victor Perera +Date: Tue Oct 12 17:30:32 2021 -0500 + + Changes done + + Signed-off-by: Victor Perera + +commit 8c754968d9b8d87b19c1b52c00937c33b5cd5dbb +Merge: 273014dd10 f969089a18 +Author: Fredrik Adelöw +Date: Tue Oct 12 22:21:13 2021 +0200 + + Merge pull request #7373 from livetocode/feature/k8s-add-factory + + Add a factory class for customizing the services used by the kubernetes backend plugin + +commit f969089a184e1771dd18d9d8c255fc520cd4016b +Author: Morgan Martinet +Date: Tue Oct 12 15:35:32 2021 -0400 + + regen API docs + + Signed-off-by: Morgan Martinet + +commit 3135d711d899f986fbe4b0ddb167a84df1ade761 +Author: Andre Wanlin +Date: Tue Oct 12 14:23:36 2021 -0500 + + Fixed this missed item + + Signed-off-by: Andre Wanlin + +commit 273014dd10e8abbc8ab95ddbb4d3042d506e15e5 +Merge: d71b42ceb5 9e5005a4cf +Author: Fredrik Adelöw +Date: Tue Oct 12 21:20:55 2021 +0200 + + Merge pull request #7537 from backstage/dependabot/npm_and_yarn/mini-css-extract-plugin-2.4.2 + + build(deps): bump mini-css-extract-plugin from 1.4.1 to 2.4.2 + +commit d71b42ceb559436f7096c3e871d17df9ddf6356e +Merge: 2435d7a49b 7e4e97c23b +Author: Fredrik Adelöw +Date: Tue Oct 12 21:19:58 2021 +0200 + + Merge pull request #7518 from Madebymaurice/add-props-to-apiexplorerpage + + Add actions props to the ApiExplorerPage + +commit 9cfbf27f6d074dcdaf7824e35a1ae54bd374032c +Author: Andre Wanlin +Date: Tue Oct 12 14:17:07 2021 -0500 + + Updated screenshot + + Signed-off-by: Andre Wanlin + +commit 9e86cce0851393c8be8a62b8ad5cfe918e27ed28 +Author: Andre Wanlin +Date: Tue Oct 12 14:09:31 2021 -0500 + + Updated API Report + + Signed-off-by: Andre Wanlin + +commit 0a47212b423eae9830ecb77970c8d88d24b2c5c9 +Author: Andre Wanlin +Date: Tue Oct 12 14:06:04 2021 -0500 + + Another round of improvements + + Signed-off-by: Andre Wanlin + +commit 2435d7a49bdba351355e6a8e3b0d39a9088d71ed +Author: Andre Wanlin <67169551+awanlin@users.noreply.github.com> +Date: Tue Oct 12 12:54:44 2021 -0500 + + Move HomepageTimer and use props over config (#7533) + +commit e1f5307ae308f95e524ec8d389db78136863115a +Merge: 148d9d22c8 a79f0f879d +Author: Andre Wanlin <67169551+awanlin@users.noreply.github.com> +Date: Tue Oct 12 12:44:13 2021 -0500 + + Merge branch 'backstage:master' into awanlin/azure-devops-frontend-plugin + +commit e2039ef99a0391bf01b9fd5be9fdccc1a04a9fa5 +Author: Alex Krantz +Date: Tue Oct 12 10:28:42 2021 -0700 + + fix: add comment for clarification and require full scheme + + Signed-off-by: Alex Krantz + +commit 7e4e97c23bd0aa71f663a4bc5b081cc894af572a +Author: Tim Hansen +Date: Tue Oct 12 10:47:46 2021 -0600 + + Fix tests + + Signed-off-by: Tim Hansen + +commit 471b212f854109d97e81e957491a7cb8ac1de78d +Merge: 1f58e63bcc a79f0f879d +Author: Daniel Deloff <44780793+rv-ddeloff@users.noreply.github.com> +Date: Tue Oct 12 11:53:56 2021 -0400 + + merged in master + + Signed-off-by: Daniel Deloff <44780793+rv-ddeloff@users.noreply.github.com> + +commit a79f0f879d36328aac6fd4fe42802dec3e682564 +Merge: bcdee188db 87b2d5ad88 +Author: Eric Peterson +Date: Tue Oct 12 17:51:23 2021 +0200 + + Merge pull request #7541 from SDA-SE/feat/the-missing-key + + Fix `` to display only the selected tab, not the other way around + +commit 1f58e63bcc089788c9123f38ee144a909ecb610f +Author: Daniel Deloff <44780793+rv-ddeloff@users.noreply.github.com> +Date: Tue Oct 12 11:35:31 2021 -0400 + + updates test + + Signed-off-by: Daniel Deloff <44780793+rv-ddeloff@users.noreply.github.com> + +commit 8ae4208c93f5f41ac8b3004d25dc7c551c9f9b15 +Author: Patrik Oldsberg +Date: Tue Oct 12 17:32:29 2021 +0200 + + workflows/ci: run tests in a band as they are already parallelized by lerna + + Signed-off-by: Patrik Oldsberg + +commit 044a4511eb1dd1c7dc646bb0dd6650c62d6bb812 +Author: Daniel Deloff <44780793+rv-ddeloff@users.noreply.github.com> +Date: Tue Oct 12 11:30:02 2021 -0400 + + adds docs, fixes plugin + + Signed-off-by: Daniel Deloff <44780793+rv-ddeloff@users.noreply.github.com> + +commit bcdee188db1b20a638900f2bb0ea2bb04b76b204 +Merge: e4ab91cf57 3cc66fd087 +Author: Eric Peterson +Date: Tue Oct 12 17:23:10 2021 +0200 + + Merge pull request #7501 from backstage/docs/analytics + + [Documentation] Document the Analytics API + +commit af4fd48b0be05266847ea71e924fb19aee0b329d +Author: Lykke Axlin +Date: Tue Oct 12 16:35:35 2021 +0200 + + add picture to avatar, lint fixes + + Signed-off-by: Lykke Axlin + + Co-authored-by: klaraab + +commit 5ac5afe7cc68c0780e37ed02e867e1e689b272aa +Author: Morgan Martinet +Date: Tue Oct 12 10:11:07 2021 -0400 + + remove unused type KubernetesFactory + + Signed-off-by: Morgan Martinet + +commit e4ab91cf571277c636e3e112cd82069cdd6fca1f +Merge: a5d7f1ca77 3539f88c6d +Author: Fredrik Adelöw +Date: Tue Oct 12 15:59:06 2021 +0200 + + Merge pull request #7416 from johanhammar/firefox-search + + Fix handling of search term when performing searches from the sidebar + +commit a5d7f1ca773647888f5337c25596f0d88d6e0b13 +Merge: e6c904f21d ac7edbb437 +Author: Fredrik Adelöw +Date: Tue Oct 12 15:55:36 2021 +0200 + + Merge pull request #7532 from awanlin/topic/add-pull-requests-to-backend + + Add pull requests to Azure DevOps backend plugin + +commit 1fb1f8d758137792015f00a59d6f1a972d26d660 +Author: Lykke Axlin +Date: Tue Oct 12 15:34:07 2021 +0200 + + move entity_ref from request header to params + + Signed-off-by: Lykke Axlin + + Co-authored-by: klaraab + +commit bc14419fab6a4c0d9df7a66b19b48cf3215e46a7 +Merge: a196ce90e6 e6c904f21d +Author: Lykke Axlin +Date: Tue Oct 12 15:23:12 2021 +0200 + + Merge branch 'master' of https://github.com/backstage/backstage into pr-draft + +commit e6c904f21d6cce59056fffc1c28d8000a12ec428 +Merge: 8e3e9e2182 4aca84f86b +Author: Fredrik Adelöw +Date: Tue Oct 12 15:07:17 2021 +0200 + + Merge pull request #7492 from alexrybch/react-catalog-style-overrides + + added support for material-ui overrides in react-catalog + +commit 8e3e9e2182195edf5e1ffdfa990cafa48c17380c +Merge: ccfb94fc88 55ff928d50 +Author: Johan Haals +Date: Tue Oct 12 14:51:25 2021 +0200 + + Merge pull request #7566 from backstage/mob/catalog-cleaning + + Catalog: Remove next folder from catalog internals + +commit ccfb94fc881e087f76dd72109a2085b2d1de8c13 +Merge: 22bd35917b f9001cefb6 +Author: Dominik Henneke +Date: Tue Oct 12 14:18:57 2021 +0200 + + Merge pull request #7549 from SDA-SE/feat/update-swagger-ui-react + + Bump `swagger-ui-react` to `^4.0.0-rc.3` + +commit 22bd35917bb465ee5413ff3ee2a0bf8fbbddd89c +Merge: cd4e8003ee 805970befe +Author: Johan Haals +Date: Tue Oct 12 13:59:54 2021 +0200 + + Merge pull request #7561 from anisorigin/patch-1 + + change appId: 1 to appId: app id in the docs + +commit 55ff928d5017c832e2203f4fc5197ff8157436b4 +Author: Johan Haals +Date: Tue Oct 12 13:45:04 2021 +0200 + + Add changeset + + Signed-off-by: Johan Haals + +commit 9a6ad82fbae03a668c1cb86f667b0c28a917e9dc +Author: Johan Haals +Date: Tue Oct 12 13:41:33 2021 +0200 + + Restructure NextcatalogBuilder, util and NextEntitiesCatalog + + Signed-off-by: Johan Haals + +commit ccbcab2a42ee582eb896b20f7bf1d586ee497553 +Author: Johan Haals +Date: Tue Oct 12 13:24:29 2021 +0200 + + Move refresh to processing + + Signed-off-by: Johan Haals + +commit 9d3ff6680f2fe0cf26da2bcb16d3436cba6331a4 +Author: Johan Haals +Date: Tue Oct 12 11:49:21 2021 +0200 + + Move router and *Service to service folder + + Signed-off-by: Johan Haals + +commit ee8d55e02b507098c4a9382faa892171c7c9a96b +Author: Johan Haals +Date: Tue Oct 12 11:21:40 2021 +0200 + + Move providers and processing to separate folders + + Signed-off-by: Johan Haals + +commit 54e5cd14aced55f6d92ce207fce6dcf9aef653be +Author: Johan Haals +Date: Tue Oct 12 10:46:45 2021 +0200 + + Move EntityProviders to providers + + Signed-off-by: Johan Haals + +commit 37d131ab2f3a7ee4b60f021db23f70b906125d6c +Author: Johan Haals +Date: Tue Oct 12 10:33:00 2021 +0200 + + Remove unused context package + + Signed-off-by: Johan Haals + +commit ac7f177291a7169c4e4de9be242146d227cde6ad +Author: Johan Haals +Date: Tue Oct 12 10:27:28 2021 +0200 + + catalog: Move database, processing and stitching out of next + + Signed-off-by: Johan Haals + +commit cd4e8003ee139efeb1cc382ac863a03dd517440c +Merge: 6ba78b765f a6767ed289 +Author: Fredrik Adelöw +Date: Tue Oct 12 13:02:46 2021 +0200 + + Merge pull request #7565 from tragiclifestories/master + + Add GoCardless to ADOPTERS.md + +commit 9e5005a4cf3d44ae55acf5813a91bd0b2dc8cc36 +Author: Fredrik Adelöw +Date: Tue Oct 12 12:19:51 2021 +0200 + + fix build error + + Signed-off-by: Fredrik Adelöw + +commit a6767ed28942e7f4f2d1cea55f242e3fad7a5a01 +Author: James Turley +Date: Tue Oct 12 11:19:32 2021 +0100 + + Add GoCardless to ADOPTERS.md + +commit 6ba78b765f72ab4591db19388b051b204d62de65 +Merge: fe975842c2 75bc878221 +Author: Patrik Oldsberg +Date: Tue Oct 12 11:14:03 2021 +0200 + + Merge pull request #7547 from backstage/rugvip/testspeed-2 + + core-components,theme: avoid importing all of @mui/core + +commit b34a8365b1e4610a8c4f204e9c3520fa07f02439 +Author: Suzanne Daniels +Date: Tue Oct 12 10:53:41 2021 +0200 + + Prettier changes + +commit fe975842c275ee217f7ea2350b146f008368b173 +Merge: 78d1acc433 668df8d33f +Author: Patrik Oldsberg +Date: Tue Oct 12 10:51:56 2021 +0200 + + Merge pull request #7528 from backstage/rugvip/root-tests + + cli: allow __dirname usage in backend tests and fix test runs from root + +commit 75bc878221fa77a8bcec678c90079a39c1dfdcb0 +Author: Patrik Oldsberg +Date: Mon Oct 11 14:13:43 2021 +0200 + + core-components,core-app-api,theme: avoid importing all of @mui/core + + Signed-off-by: Patrik Oldsberg + +commit 78d1acc433f3c7f17f4f47b78e6d203f244b85c6 +Merge: 137a94f606 3ea4a8f832 +Author: Patrik Oldsberg +Date: Tue Oct 12 10:36:23 2021 +0200 + + Merge pull request #7546 from backstage/rugvip/testspeed + + core-components: lazy load syntax highlighter + +commit f9001cefb691a0f832806db9c8dfde00c52afdb3 +Author: Dominik Henneke +Date: Tue Oct 12 09:58:36 2021 +0200 + + Fix the dev page and add a new example + + Signed-off-by: Dominik Henneke + +commit 3ea4a8f8320b58cb8e39229d72e8fce482fd550f +Author: Patrik Oldsberg +Date: Tue Oct 12 10:07:00 2021 +0200 + + catalog-import: fix test + bump CodeSnippet change to minor + + Signed-off-by: Patrik Oldsberg + +commit d03ee85ff83f3480c79162372b50a22658f77297 +Author: Dominik Henneke +Date: Mon Oct 11 14:45:42 2021 +0200 + + Bump `swagger-ui-react` to `^4.0.0-rc.3` + + Signed-off-by: Dominik Henneke + +commit 137a94f6065e6f8c48f6a3a7766d44ca67ae10ea +Merge: e588f12b32 395020b17c +Author: Johan Haals +Date: Tue Oct 12 09:57:53 2021 +0200 + + Merge pull request #7560 from K-Phoen/grafana-plugin + + Add Grafana plugin to the marketplace + +commit e588f12b322a0f453143a11b77085050fca6d5a0 +Merge: 55bd7fd0e9 e2e1620bb5 +Author: Johan Haals +Date: Tue Oct 12 09:55:40 2021 +0200 + + Merge pull request #7548 from backstage/jhaals/cleanupdeps + + Remove unused dependency on @octokit/openapi-types + +commit 55bd7fd0e9cc56f0c470d2e21e1df388d7da8ca1 +Merge: a239f67c7f d0dba0a448 +Author: Johan Haals +Date: Tue Oct 12 09:30:39 2021 +0200 + + Merge pull request #7495 from backstage/jhaals/changesets + + Add changeset best practices + +commit b6ab93c4214100a29232af53f73aa8c83d3fa7ce +Author: Fanny Gaudin +Date: Tue Oct 12 09:28:13 2021 +0200 + + change version from minor to patch + + Signed-off-by: Fanny Gaudin + +commit a239f67c7f4c9b64675f77a864dc55502a4b74aa +Merge: 56ba9293fa b4bdb1f1fa +Author: Fredrik Adelöw +Date: Tue Oct 12 09:16:11 2021 +0200 + + Merge pull request #7402 from danielortizlira/plugins-catalog-overrides + + Plugins catalog component styles overrides + +commit a982e166c581c8b9038748bb96d28d22ae2b099a +Author: Morgan Martinet +Date: Fri Oct 1 00:37:18 2021 -0400 + + Enable customization of services used by the kubernetes backend plugin + + Signed-off-by: Morgan Martinet + +commit 805970befeb2be056cb14ac7ac3ee619d97f9afe +Author: anisorigin <89754895+anisorigin@users.noreply.github.com> +Date: Tue Oct 12 12:45:20 2021 +1000 + + change appId: 1 to app id. + +commit b4bdb1f1fa94b87a261bf7b40fcf1ae0b9d5d5e7 +Author: Daniel Ortiz Lira +Date: Mon Oct 11 18:30:32 2021 -0500 + + Fix api-reports warnings + + Signed-off-by: Daniel Ortiz Lira + +commit 93a13dfb422705fca0946182bb9e7ede9ff5609c +Author: Daniel Ortiz Lira +Date: Mon Oct 11 16:30:50 2021 -0500 + + Add changeset for @backstage/plugin-catalog package + + Signed-off-by: Daniel Ortiz Lira + +commit 3ddb4d93532b2b38af97f5a83af000e1ef593d29 +Author: Daniel Ortiz Lira +Date: Tue Oct 5 10:58:12 2021 -0500 + + Build api reports + + Signed-off-by: Daniel Ortiz Lira + +commit 241a9fe67a895fbf07da3303d8bb53b2a7de30b8 +Author: Daniel Ortiz Lira +Date: Tue Oct 5 10:54:24 2021 -0500 + + Expose overridableComponents type from the package root + + Signed-off-by: Daniel Ortiz Lira + +commit a4bb6dc73b0e5f26af3ba72264c68408dd51d6f3 +Author: Daniel Ortiz Lira +Date: Thu Sep 30 18:40:54 2021 -0500 + + Expose EntityLinksEmptyState to material-ui overrides + + Signed-off-by: Daniel Ortiz Lira + +commit 5091a36ca623e74b44585471ed7c75dead3c8e34 +Author: Daniel Ortiz Lira +Date: Thu Sep 30 18:40:14 2021 -0500 + + Expose SystemDiagramCard to material-ui overrides + + Signed-off-by: Daniel Ortiz Lira + +commit 56ba9293fa329ea1bbd3bb30553bf1c6fe86f0ce +Merge: 56bd537256 a593c5feb4 +Author: Fredrik Adelöw +Date: Tue Oct 12 00:09:47 2021 +0200 + + Merge pull request #7540 from SDA-SE/feat/welcome + + Feat/welcome + +commit 148d9d22c825ea8f841cfee9013f2969d75bdf7f +Author: Andre Wanlin +Date: Mon Oct 11 16:48:10 2021 -0500 + + More improvements + + Signed-off-by: Andre Wanlin + +commit 202f3229277f51adfab919db94cdf1bc1351f40f +Author: Daniel Deloff <44780793+rv-ddeloff@users.noreply.github.com> +Date: Mon Oct 11 17:06:50 2021 -0400 + + chore: adds changeset + + Signed-off-by: Daniel Deloff <44780793+rv-ddeloff@users.noreply.github.com> + +commit 5cb4d2eabce3be7ccd2ac356f46fd97bdace6d4e +Author: Daniel Deloff <44780793+rv-ddeloff@users.noreply.github.com> +Date: Mon Oct 11 16:45:50 2021 -0400 + + updates scope configuration + + Signed-off-by: Daniel Deloff <44780793+rv-ddeloff@users.noreply.github.com> + +commit 395020b17c6b91ea0a1a6ad28464ea48cae2fb05 +Author: Kévin Gomez +Date: Mon Oct 11 22:31:45 2021 +0200 + + Add Grafana plugin to the marketplace + + Signed-off-by: Kévin Gomez + +commit eed36accea22e0e67a013d523f4c8a0d9745a7f8 +Merge: 652d1ad510 c20b0056e6 +Author: Andre Wanlin +Date: Mon Oct 11 15:13:06 2021 -0500 + + Merge branch 'awanlin/azure-devops-frontend-plugin' of https://github.com/awanlin/backstage into awanlin/azure-devops-frontend-plugin + +commit 652d1ad5108dea61fe59a6acac69f8b606e30c4a +Author: Andre Wanlin +Date: Fri Oct 8 14:03:16 2021 -0500 + + Combined the Status and Result columns into a single State + + Signed-off-by: Andre Wanlin + +commit e290590517a7141102b4e7a4f325ceb7d871ef59 +Author: Andre Wanlin +Date: Fri Oct 8 11:11:10 2021 -0500 + + Applied suggested async and await changes + + Signed-off-by: Andre Wanlin + +commit 0b0876b0da3e5a97e9d9ca6e2e17d0f815251e39 +Author: Andre Wanlin +Date: Fri Oct 8 10:06:05 2021 -0500 + + Another set of feedback improvements + + Signed-off-by: Andre Wanlin + +commit a9d460dd1cd3e1006dc4b9e06e3016e61b5774bf +Author: Andre Wanlin +Date: Fri Oct 8 08:20:49 2021 -0500 + + Further refactoring based on feedback + + Signed-off-by: Andre Wanlin + +commit 9cc89f753042c6ad47b7dba165fe8d450d90fcf7 +Author: Andre Wanlin +Date: Thu Oct 7 20:31:31 2021 -0500 + + Regenerated API Report + + Signed-off-by: Andre Wanlin + +commit 9953dc1b44f01a66a372a896bf6ff43fd7d2ea7b +Author: Andre Wanlin +Date: Thu Oct 7 19:55:26 2021 -0500 + + Start of refactoring based on feedback + + Signed-off-by: Andre Wanlin + +commit a44d32d46c3da76aacbbb265e7202c1865686f10 +Author: Andre Wanlin +Date: Thu Oct 7 08:57:16 2021 -0500 + + Fixed formatting of README + + Signed-off-by: Andre Wanlin + +commit d1b0a7345383c638d495add074bb135971e6b93b +Author: Andre Wanlin +Date: Thu Oct 7 06:59:24 2021 -0500 + + Updated devDependencies causing CI to fail + + Signed-off-by: Andre Wanlin + +commit 38b014a5f5700bcb54908fce1291b0cf249273af +Author: Andre Wanlin +Date: Wed Oct 6 14:32:58 2021 -0500 + + Adding Azure DevOps frontend plugin + + Signed-off-by: Andre Wanlin + +commit c20b0056e62a508ecdde3b992631152f358ff379 +Merge: ff09af35ce 56bd537256 +Author: Andre Wanlin <67169551+awanlin@users.noreply.github.com> +Date: Mon Oct 11 15:12:13 2021 -0500 + + Merge branch 'backstage:master' into awanlin/azure-devops-frontend-plugin + +commit ac7edbb437ad3af875a843a15360b4a6cadea54f +Author: Andre Wanlin +Date: Mon Oct 11 15:08:53 2021 -0500 + + Refactoring based on feedback + + Signed-off-by: Andre Wanlin + +commit 56bd5372563a863c824e25b3515475edeb7bcdc5 +Author: Emma Indal +Date: Mon Oct 11 21:55:42 2021 +0200 + + [Search] add search api how to guide + search bar custom placeholder (#7535) + +commit 55323faa4441c56cd36b8b598951a57e287ee0df +Merge: c1acc47357 a9564f20a9 +Author: Andre Wanlin <67169551+awanlin@users.noreply.github.com> +Date: Mon Oct 11 14:46:41 2021 -0500 + + Merge branch 'backstage:master' into topic/add-pull-requests-to-backend + +commit 0a788da8731cf795d27660833edf5d822d4f9936 +Author: colton +Date: Mon Oct 11 15:01:16 2021 -0400 + + Use standard error message in catch of copy file call + + Co-authored-by: Fredrik Adelöw + Signed-off-by: Colton Padden + +commit 037447efd3272693bf3a834c6342eb2de3cf2565 +Author: Daniel Deloff <44780793+rv-ddeloff@users.noreply.github.com> +Date: Mon Oct 11 15:04:59 2021 -0400 + + adds atlassian auth provider + + Signed-off-by: Daniel Deloff <44780793+rv-ddeloff@users.noreply.github.com> + +commit a9564f20a9ce1657ca712dcfb96216eba7743168 +Merge: 5a59731fcc f29ad9fe6d +Author: Fredrik Adelöw +Date: Mon Oct 11 20:58:19 2021 +0200 + + Merge pull request #7380 from mfrinnstrom/aws-alb-auth-backend + + Update aws-alb auth provider + +commit 5a59731fcc521db90c9fe7a7216fb4c73a48dab3 +Merge: bd78b74f41 19681e1c99 +Author: Fredrik Adelöw +Date: Mon Oct 11 20:41:31 2021 +0200 + + Merge pull request #7431 from szubster/dependency-graph-type-safety + + Documentation and better type safety of DependencyGraph + +commit 10f513dd8c2bb154fadb0d552828a480e89f7a1c +Author: colton +Date: Mon Oct 11 13:48:40 2021 -0400 + + Use standard error message in temporary app file copy catch + + Co-authored-by: Fredrik Adelöw + Signed-off-by: Colton Padden + +commit bd78b74f41af41b41987db13a0b7f1055ed3c368 +Merge: 89bcf90b66 af092b0884 +Author: Fredrik Adelöw +Date: Mon Oct 11 19:34:46 2021 +0200 + + Merge pull request #7531 from PhakornKiong/fix/sideBarArrow + + fix sidebar from being pushed out of alignment + +commit 2bacec55312dc55a98a47e6a24a9015440c6e7e2 +Author: Aldira Putra Raharja +Date: Mon Oct 11 22:16:02 2021 +0700 + + Rephrase docs to match descriptions from the official docs + + Signed-off-by: Aldira Putra Raharja + +commit 17fdd3aea4c1861381d78f527afd35a427540f9e +Author: Aldira Putra Raharja +Date: Mon Oct 11 22:05:04 2021 +0700 + + Update docs regarding caData config + + Signed-off-by: Aldira Putra Raharja + +commit d9f3cbe0340b5abbab7d7cb3657ba94087fe50cc +Author: Fanny Gaudin +Date: Mon Oct 11 17:04:32 2021 +0200 + + update api-report + + Signed-off-by: Fanny Gaudin + +commit c57b075d18fd39aee83d30c914e3a9aabac0175e +Author: Aldira Putra Raharja +Date: Mon Oct 11 21:54:40 2021 +0700 + + include changeset + + Signed-off-by: Aldira Putra Raharja + +commit bb8cea4a75bf350d03eb15eb072b85321e031954 +Author: Aldira Putra Raharja +Date: Mon Oct 11 21:51:01 2021 +0700 + + Add `caData` support for kubernetes config + + Signed-off-by: Aldira Putra Raharja + +commit d207f6ee9ed84e421a9ff78294ec81df9a25ae9e +Author: Colton Padden +Date: Mon Oct 11 10:49:40 2021 -0400 + + Support optional bucketRootPath in GCS and S3 techdocs publishers + + - Updated app-config.yaml with additional configuration parameters: + - techdocs.publisher.awsS3.bucketRootPath + - techdocs.publisher.googleGcs.bucketRootPath + - Updated `fromConfig` and constructors to support additional `bucketRootPath` + parameters. + - Updated publish method to support `bucketRootPath` in constructing destination + file path + - Updated `fetchTechDocsMetadata` to use `bucketRootPath` + - Updated `docsRouter` to use `docsRouter` when retrieving files + - When using both legacy casing, and a bucket root path, additional logic + was added to prevent the root path's case from being modified as + previously legacy casing would be applied to the first three entities of + the URI + - Updated `hasDocsBeenGenerated` to use `bucketRootPath` + - Added additional unit tests for new configurations to updated, and new methods + + Signed-off-by: Colton Padden + +commit 89bcf90b66afcc2036065408a55c004f063de007 +Author: Matthew Clarke +Date: Mon Oct 11 15:38:37 2021 +0100 + + refactor kubernetes fetcher (#7504) + + * refactor kubernetes fetcher + + Signed-off-by: mclarke47 + + * typo + + Signed-off-by: mclarke47 + + * tsc errors + + Signed-off-by: mclarke47 + + * Create unlucky-laws-doubt.md + + Signed-off-by: mclarke47 + + * missed prettier + + Signed-off-by: mclarke47 + + * api report + + Signed-off-by: mclarke47 + + * fix tests + + Signed-off-by: mclarke47 + +commit adf3c687b3abd6179d683e0e8d39cc726f5a4728 +Merge: c537ff3d11 ff984d4aea +Author: Tim Hansen +Date: Mon Oct 11 08:26:15 2021 -0600 + + Merge pull request #7550 from backstage/orkohunter/missing-bitbucket-in-auth-docs + + docs: add missing bitbucket sidebar link + +commit ff984d4aea62cb0af86cbbe85b79183782a5a012 +Author: Himanshu Mishra +Date: Mon Oct 11 15:58:29 2021 +0200 + + docs: add missing bitbucket sidebar link + + Signed-off-by: Himanshu Mishra + +commit e2e1620bb51c3566f58d98bc933eac4f0cbbbbdc +Author: Johan Haals +Date: Mon Oct 11 14:52:43 2021 +0200 + + Remove unused dependencies + + Signed-off-by: Johan Haals + +commit c537ff3d116d1cf551573b807de7dc45c65766ef +Merge: 7331bd7d5e 3c50c86604 +Author: Johan Haals +Date: Mon Oct 11 14:54:23 2021 +0200 + + Merge pull request #7545 from backstage/jhaals/nuke-icons + + api-docs: remove unused font dependency + +commit 7331bd7d5efe773fbdd5520c63f59752982046cf +Merge: 25a593234b 3ac664f7f2 +Author: Johan Haals +Date: Mon Oct 11 14:48:44 2021 +0200 + + Merge pull request #7544 from dmitry-makarenko-gelato/patch-1 + + docs: add Gelato to adopters list + +commit 25a593234bda2682dd2728461328bc3bcca0cded +Author: Emma Indal +Date: Mon Oct 11 14:42:54 2021 +0200 + + [Search] Update search readme (#7536) + + * update list of supported search engines + + Signed-off-by: Emma Indal + + * update list of supported plugins integrated to search + + Signed-off-by: Emma Indal + + * update feedback link + + Signed-off-by: Emma Indal + + * fix links + + Signed-off-by: Emma Indal + +commit ce487aef24b2c031f747abeb8930d8e1fb6753bd +Author: Johan Haals +Date: Mon Oct 11 14:38:18 2021 +0200 + + Remove unused dependency on @octokit/openapi-types + + Signed-off-by: Johan Haals + +commit a20cbf00d2774df64edb892e97c276d29acd6263 +Author: Patrik Oldsberg +Date: Mon Oct 11 11:10:31 2021 +0200 + + core-components: lazy load syntax highlighter + + Signed-off-by: Patrik Oldsberg + +commit 3c50c86604327e75dcb0fb92ecd8775eacd28b4e +Author: Johan Haals +Date: Mon Oct 11 14:17:57 2021 +0200 + + api-docs: remove unused font dependency + + Signed-off-by: Johan Haals + +commit 1ce5fc9269fa4b9d26127f587d44bcc02ca2e916 +Merge: 023be930da 8506422acd +Author: Fredrik Adelöw +Date: Mon Oct 11 14:12:07 2021 +0200 + + Merge pull request #7538 from backstage/dependabot/npm_and_yarn/material-icons/font-1.0.16 + + build(deps): bump @material-icons/font from 1.0.3 to 1.0.16 + +commit 023be930da7073a099c394f8d76f712e09596f56 +Merge: 4673d96094 6583c6ac40 +Author: Fredrik Adelöw +Date: Mon Oct 11 14:11:59 2021 +0200 + + Merge pull request #7542 from julioz/patch-1 + + Make prettier happy when generating plugins + +commit 4673d960949a0f9ce0e3c70d0ce9b1f22c083934 (tag: v0.50.1, tag: release-2021-10-11) +Merge: a05cdf6721 e23831dffb +Author: Patrik Oldsberg +Date: Mon Oct 11 13:58:07 2021 +0200 + + Merge pull request #7469 from backstage/mob/scaffodler + + scaffolder: separate out the Template entity kind from the core catalog-model + +commit df0ba2bb026974f655c86668bd827f2b08209960 +Author: Suzanne Daniels +Date: Sat Oct 9 07:56:37 2021 +0200 + + Update docs/getting-started/index.md + + Co-authored-by: Tim Hansen + Signed-off-by: Suzanne Daniels + +commit 6859c42db992b434a309f97fe310d3f2032a79db +Author: Suzanne Daniels +Date: Sat Oct 9 07:56:10 2021 +0200 + + Update docs/getting-started/index.md + + Co-authored-by: Tim Hansen + Signed-off-by: Suzanne Daniels + +commit a05cdf672150f9ec151e0e11b7f8094563000ce4 +Merge: dbd20b7342 81c2a1af86 +Author: Oliver Sand +Date: Mon Oct 11 13:50:52 2021 +0200 + + Merge pull request #7543 from SDA-SE/feat/muiref + + Resolve a warning in `
stories deterministic for snapshot testing + +commit 9dd563e3a9c90d4558010d91571bcc48362e86c5 +Author: nikek +Date: Tue May 19 10:04:58 2020 +0200 + + Make
stories deterministic for snapshot testing + +commit f8cdfdb1aa8f1206f01b7feced61576c2558e2ab +Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> +Date: Tue May 19 09:05:36 2020 +0200 + + build(deps-dev): bump tsc-watch from 4.2.5 to 4.2.6 (#911) + + Bumps [tsc-watch](https://github.com/gilamran/tsc-watch) from 4.2.5 to 4.2.6. + - [Release notes](https://github.com/gilamran/tsc-watch/releases) + - [Changelog](https://github.com/gilamran/tsc-watch/blob/master/CHANGELOG.md) + - [Commits](https://github.com/gilamran/tsc-watch/commits) + + Signed-off-by: dependabot-preview[bot] + + Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> + +commit bbcdeea91f9b3952593b59bc9e5fb5f5c2efbd49 +Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> +Date: Tue May 19 09:05:08 2020 +0200 + + build(deps-dev): bump @types/webpack from 4.41.12 to 4.41.13 (#910) + + Bumps [@types/webpack](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/webpack) from 4.41.12 to 4.41.13. + - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) + - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/webpack) + + Signed-off-by: dependabot-preview[bot] + + Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> + +commit 10ee5eb5b47064cb6791d8a1bd174e0d36faf44a +Author: Nikita Nek Dudnik +Date: Mon May 18 20:17:49 2020 +0200 + + fix: remove obsolete package and fix tests + +commit 8bd06d9882ef932f95fc094b7710300b47afa03e +Author: Patrik Oldsberg +Date: Mon May 18 20:09:35 2020 +0200 + + packages/core: add unimplemented auth api definitions + +commit 5a67b901424447d264d39922cb005375c0aa97ff +Author: Nikita Nek Dudnik +Date: Mon May 18 20:01:07 2020 +0200 + + fix: remove obsolete package + +commit 7359d2f67943f4847734e1edf70f94d9a051d7b5 +Merge: 9c75999701 7dd484d4df +Author: Nikita Nek Dudnik +Date: Mon May 18 19:56:27 2020 +0200 + + Merge remote-tracking branch 'origin/master' + +commit 7dd484d4df3190b9f615e63a201c62fd22f2e276 +Author: Ivan Shmidt +Date: Mon May 18 19:50:45 2020 +0200 + + fix: pr edits + +commit 9c7599970125bfd9e6016b4b14b264ba1e9f4e8e +Author: Ivan Shmidt +Date: Mon May 18 19:50:45 2020 +0200 + + fix: pr edits + +commit 860bf5172834685229ccd5724d1134daf5aa07a4 +Author: Ivan Shmidt +Date: Mon May 18 19:44:05 2020 +0200 + + fix: navTarget, remove assets + +commit 2c2d10b08937284e7700b97b634b36c6fc779894 +Merge: 931342c92f 89a4f6a31b +Author: Nikita Nek Dudnik +Date: Mon May 18 19:35:23 2020 +0200 + + Merge branch 'master' of github.com:Nek/backstage + +commit 931342c92f3309798fdd845e5b0733f2c16d8bfd +Author: Nikita Nek Dudnik +Date: Mon May 18 19:33:10 2020 +0200 + + feat: navtarget and explore card + +commit 89a4f6a31b487f2e4ae2d64300208843ff88399d +Author: Ivan Shmidt +Date: Mon May 18 19:30:39 2020 +0200 + + fix: quick fix + +commit 3565d13f91e8dc997a5f5f0d182081c7599f4cc2 +Merge: c90110f6ab 8428d95791 +Author: Ivan Shmidt +Date: Mon May 18 19:27:03 2020 +0200 + + Merge branch 'master' of github.com:Nek/backstage + +commit c90110f6ab0b2a472c60eee45a5d94870260ddb8 +Author: Ivan Shmidt +Date: Mon May 18 19:26:52 2020 +0200 + + feat: export as a widget + +commit 8428d957918fe29bd967a9873ed2ea95890e009e +Author: Nikita Nek Dudnik +Date: Mon May 18 19:11:42 2020 +0200 + + fix: tests + +commit d06d35fec0685eb6ad9586aa9b8fb70f69a493ce +Merge: 1d428128f0 f3da9cd7ef +Author: Nikita Nek Dudnik +Date: Mon May 18 18:52:55 2020 +0200 + + Merge branch 'master' of github.com:Nek/backstage + +commit f3da9cd7eff33d3f1b6810606773e52c838d8ffe +Author: Ivan Shmidt +Date: Mon May 18 18:52:41 2020 +0200 + + fix: type imports + +commit 1d428128f04ec865e06409b4ee71dc0662a8e135 +Author: Nikita Nek Dudnik +Date: Mon May 18 18:52:10 2020 +0200 + + fix: remove logo from plugin header + +commit aa1eaf4b33ce3e4eff5031a5a806351ec1dd0949 +Merge: e78eaa9bb6 a6c3256ad7 +Author: Ivan Shmidt +Date: Mon May 18 18:50:08 2020 +0200 + + Merge branch 'master' of github.com:spotify/backstage + +commit a6c3256ad754ad1b92018d2aa938081447f22463 +Merge: d15789ea4a aef288b6cb +Author: Patrik Oldsberg +Date: Mon May 18 18:48:24 2020 +0200 + + Merge pull request #908 from shmidt-i/feat/proxy + + Use proxy package.json field for app:serve and plugin:serve + +commit e78eaa9bb630bb05d42ffda7ab910fc082208ecd +Author: Ivan Shmidt +Date: Mon May 18 18:44:19 2020 +0200 + + fix: lint + +commit aef288b6cbd27c3c70287dce2ea6bbc032017f4b +Author: Ivan Shmidt +Date: Mon May 18 18:19:56 2020 +0200 + + refactor: move to serveBundle + +commit 3d019401910f7da3f8ea9613716bf60bca9c2078 +Author: Ivan Shmidt +Date: Mon May 18 18:06:19 2020 +0200 + + fix: tsc + +commit 0a592af4dedbb8a9660960a7080aa7c77daf0fe2 +Author: Ivan Shmidt +Date: Mon May 18 17:59:12 2020 +0200 + + feat: settings -> dialog + +commit dd93bc9ced36525599b12247a56ead66d51701b8 +Author: Ivan Shmidt +Date: Mon May 18 17:56:36 2020 +0200 + + feat: proxy + + Allowing to put a proxy field into a package.json for both app and + plugin to use it with a wds build-in proxy + +commit 6084eeeb4343b05d638cddca269358c1c0461329 +Author: Ivan Shmidt +Date: Mon May 18 17:52:51 2020 +0200 + + fix: leftovers + +commit 93b76b2ef06853415360e1fb2f1a387fd699de02 +Merge: 4ca8e3370e d15789ea4a +Author: Ivan Shmidt +Date: Mon May 18 17:42:14 2020 +0200 + + Merge branch 'master' of github.com:spotify/backstage into catalog/deduplicate-locations + +commit d15789ea4a2e5824027c050a90e805e7a0889a99 +Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> +Date: Mon May 18 17:27:22 2020 +0200 + + build(deps-dev): bump ts-node from 8.8.1 to 8.10.1 (#896) + + Bumps [ts-node](https://github.com/TypeStrong/ts-node) from 8.8.1 to 8.10.1. + - [Release notes](https://github.com/TypeStrong/ts-node/releases) + - [Commits](https://github.com/TypeStrong/ts-node/compare/v8.8.1...v8.10.1) + + Signed-off-by: dependabot-preview[bot] + + Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> + +commit 4ec6890b111f5d9efe30dd1fc813fdbab82574cb +Merge: 9c9250faf0 3e459857cf +Author: Ivan Shmidt +Date: Mon May 18 17:19:45 2020 +0200 + + Merge branch 'master' of github.com:Nek/backstage + +commit 9c9250faf0c97aeb9fe99089639f655f705adc9c +Author: Ivan Shmidt +Date: Mon May 18 17:18:25 2020 +0200 + + feat: remove polling, add pagination, refactor + +commit 3e459857cfabff3cb3e1372c2010a85af52fde04 +Merge: cfd6508e98 3c075c3093 +Author: Nikita Nek Dudnik +Date: Mon May 18 16:03:04 2020 +0200 + + Merge remote-tracking branch 'upstream/master' + +commit cfd6508e98341d52237bd55f276b6ebb9e81b645 +Author: Nikita Nek Dudnik +Date: Mon May 18 15:54:55 2020 +0200 + + Fix merge conflicts + +commit 3c075c3093eb867f4811031744ce005bfa6132b9 +Merge: cd83f5a43f 324245586f +Author: Patrik Oldsberg +Date: Mon May 18 15:08:17 2020 +0200 + + Merge pull request #900 from spotify/eide/bump-tl-jest-dom-5-7-0 + + Manually bump @testing-library/jest-dom from 4.2.4 to 5.7.0 + +commit adee4e29873adc5b556b533c44e6d485d67f090f +Merge: 44389c61b8 cd83f5a43f +Author: Nikita Nek Dudnik +Date: Mon May 18 14:41:45 2020 +0200 + + Merge remote-tracking branch 'upstream/master' + +commit 44389c61b866929807a60580c173ddc46ba0ef49 +Author: Nikita Nek Dudnik +Date: Mon May 18 14:14:03 2020 +0200 + + Fix functions crossreference + +commit 86bb6cc6a8d3424a7f75393a05ebe225f9f68d55 +Author: Fredrik Adelöw +Date: Sun May 17 20:21:17 2020 +0200 + + ADR002: Default Software Catalog File Format + +commit cd83f5a43f4615e5c563474805f3980447c65a86 +Merge: 3189871c26 98816d648a +Author: Patrik Oldsberg +Date: Mon May 18 13:53:27 2020 +0200 + + Merge pull request #885 from spotify/rugvip/subjects + + packages/core: add behavior and publish subjects to make it easier to produce observables + +commit 3189871c26e4cce2ef9c7afbec55838965e4325d +Merge: 8a53a43424 fb3e003272 +Author: Marcus Eide +Date: Mon May 18 13:36:53 2020 +0200 + + Merge pull request #905 from spotify/eide/bump-tl-user-event-10-2-4 + + Manually bump @testing-library/user-event from 7.2.1 to 10.2.4 + +commit 8a53a4342407cff4b7f8a1ca9d38b54377a1ff99 +Merge: 792220a9da 9b3e7b345d +Author: Patrik Oldsberg +Date: Mon May 18 13:33:26 2020 +0200 + + Merge pull request #901 from spotify/rugvip/cleanup + + build setup cleanup / PR feedback + +commit 98816d648af41c423be4feb28adcd8801c9f2792 +Author: Patrik Oldsberg +Date: Fri May 15 14:55:32 2020 +0200 + + packages/core: use BehaviorSubject in OAuthRequestManager + +commit df8aac9739d2be6b123281baf974878992593c8a +Author: Patrik Oldsberg +Date: Fri May 15 14:19:12 2020 +0200 + + packages/core: use BehavorSubject in OAuthRequestManager + +commit 73f478380cb1fb5e5884bb2ec728e435698594a6 +Author: Patrik Oldsberg +Date: Fri May 15 13:39:47 2020 +0200 + + packages/core: use BehavorSubject in AppThemeSelector + +commit 06bf6fa6aa81e9c024092984ce5b49a7c5de7df6 +Author: Patrik Oldsberg +Date: Fri May 15 13:36:49 2020 +0200 + + packages/core: add basic implementations of bahavior and publish RX subjects + +commit 792220a9da607f47772feb7a27583227ea2a6575 +Merge: cefdc422ac e8f2b88990 +Author: Patrik Oldsberg +Date: Mon May 18 13:29:25 2020 +0200 + + Merge pull request #904 from spotify/rugvip/nodecls + + packages/cli: remove redundant type declarations for rollup-plugin-esbuild + +commit 4ca8e3370e079592b8cd8506c735b5b96a2ab805 +Author: Ivan Shmidt +Date: Mon May 18 13:10:10 2020 +0200 + + fix: moved into transaction for atomicity + +commit 9b3e7b345d665a4caa3e5977f2d758823551fe35 +Author: Patrik Oldsberg +Date: Mon May 18 11:44:52 2020 +0200 + + packages/cli: clarify jest module mapper config + +commit 26e259d7bd793cc7bda229dcd32ebb38c8e2b286 +Author: Patrik Oldsberg +Date: Mon May 18 11:41:38 2020 +0200 + + packages/cli: remove old comment in packager + +commit 0242c8a3442f3a74f48569dbcdb7a864516afef1 +Author: Patrik Oldsberg +Date: Mon May 18 11:35:08 2020 +0200 + + packages/cli: add more explanations to installWithLocalDeps + remove console.log + +commit a1efd0d76db620dd41dd1d56012dcd74f89df847 +Author: Patrik Oldsberg +Date: Mon May 18 11:29:54 2020 +0200 + + packages/cli: nicer handling of waiting for bundler to exit + +commit e8f2b8899081bd4e93b4622d0b50b51d29073cfe +Author: Patrik Oldsberg +Date: Mon May 18 12:48:59 2020 +0200 + + packages/cli: remove redundant type declarations for rollup-plugin-esbuild + +commit cefdc422ac1d94617f739a5c37c7687a190689be +Merge: 5da07d5bbf 1362820792 +Author: Patrik Oldsberg +Date: Mon May 18 13:05:24 2020 +0200 + + Merge pull request #903 from spotify/rugvip/buildfix + + github/workflows: fix build step to include dependencies as well + +commit fb3e003272a7db2b8a714756e8221e11d79b9317 +Author: Marcus Eide +Date: Mon May 18 12:59:58 2020 +0200 + + Bump testing-library/user-event to 10.2.4 + +commit 1362820792cd705b87555d15b182259a756a8e78 +Author: Patrik Oldsberg +Date: Mon May 18 12:39:30 2020 +0200 + + packages/core: export sidebar context type + +commit 33c412d961de540e3e1eaf303f1b57b416218317 +Author: Patrik Oldsberg +Date: Mon May 18 12:25:55 2020 +0200 + + packages/core: fix type issues in sidebar + +commit 74d25d1550ca1517366a95bcb8fa65343e8ea38e +Author: Patrik Oldsberg +Date: Mon May 18 12:10:56 2020 +0200 + + github/workflows: fix build step to include dependencies as well + +commit 5da07d5bbf03f6f86e1c5a496fb1815f6623555e +Author: Victor Viale +Date: Mon May 18 11:56:11 2020 +0200 + + Improve side navigation (#589) + + * Implement sidebar items + + * Add intro component + + * Add user badge component + + * Add Sidebar simple story component + + Co-authored-by: Victor Viale + Co-authored-by: Stefan Ålund + +commit 7db02e5e58d96cfac784ecbd34df887d5495f778 +Merge: ee176324d2 b49e6a9a4b +Author: Marcus Eide +Date: Mon May 18 11:52:16 2020 +0200 + + Merge pull request #897 from spotify/dependabot/npm_and_yarn/rollup/plugin-commonjs-11.1.0 + + build(deps): bump @rollup/plugin-commonjs from 11.0.2 to 11.1.0 + +commit 324245586f5e86f55df85f8d442a7685bb6d81c1 +Author: Marcus Eide +Date: Mon May 18 11:11:58 2020 +0200 + + Change import of jest-dom in setupTests.ts according to change in api + +commit 84297107604bcb4d768c1f5419422c5c61eb73de +Author: Marcus Eide +Date: Mon May 18 11:11:26 2020 +0200 + + Bump testing-library/jest-dom to 5.7.0 + +commit ee176324d2cbf32a1cdace5e675d3404c8ffe9ae +Merge: 55e45500fe af934d4173 +Author: Patrik Oldsberg +Date: Mon May 18 11:11:05 2020 +0200 + + Merge pull request #890 from spotify/rugvip/themedocs + + docs: add docs for how to create and use custom themes + +commit b49e6a9a4b982c84c5be3620fe31fd6fe73e15af +Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> +Date: Mon May 18 09:04:42 2020 +0000 + + build(deps): bump @rollup/plugin-commonjs from 11.0.2 to 11.1.0 + + Bumps [@rollup/plugin-commonjs](https://github.com/rollup/plugins) from 11.0.2 to 11.1.0. + - [Release notes](https://github.com/rollup/plugins/releases) + - [Commits](https://github.com/rollup/plugins/compare/commonjs-v11.0.2...commonjs-v11.1.0) + + Signed-off-by: dependabot-preview[bot] + +commit 55e45500fe8c23aa9f36af8deab553fbf6a39fe1 +Merge: b5e2d9a1e8 9977724144 +Author: Patrik Oldsberg +Date: Mon May 18 10:59:29 2020 +0200 + + Merge pull request #895 from spotify/rugvip/build + + New Build Setup + +commit 2d5787214aa9f548722cdfbb46660608cf0b1cee +Author: Nikita Nek Dudnik +Date: Mon May 18 10:52:56 2020 +0200 + + Fix linting + +commit cce9e9ad73cfc442e4218ad693cb330593d9f328 +Merge: 95f1500866 b5e2d9a1e8 +Author: Nikita Nek Dudnik +Date: Mon May 18 09:20:07 2020 +0200 + + Merge remote-tracking branch 'upstream/master' + +commit b5e2d9a1e87c28a91ee2d48c518b873218a0064e +Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> +Date: Mon May 18 08:53:30 2020 +0200 + + build(deps-dev): bump @types/react-router-dom from 5.1.3 to 5.1.5 (#899) + + Bumps [@types/react-router-dom](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-router-dom) from 5.1.3 to 5.1.5. + - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) + - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react-router-dom) + + Signed-off-by: dependabot-preview[bot] + + Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> + +commit 9977724144225f2792354dbc48041e65055d127e +Author: Patrik Oldsberg +Date: Mon May 18 01:15:00 2020 +0200 + + packages/cli: disabled bundler performance hints + +commit fe28a4ccf8749072a2d9256c5614dfc67659f710 +Author: Patrik Oldsberg +Date: Mon May 18 01:04:03 2020 +0200 + + packages/cli: bump sucrase and revert re-export syntax changes + +commit 8232b0931f1383eb9106873c82cda41bf6e7731d +Author: Patrik Oldsberg +Date: Mon May 18 00:59:33 2020 +0200 + + plugins/graphiql: fix src-relative mock in test + +commit 5649632bde4559f506451acd54f3d8f6997db737 +Author: Patrik Oldsberg +Date: Mon May 18 00:51:16 2020 +0200 + + github/workflows: no --coverage flag for build + +commit 53211aa6d57af87a63265488fc74cd77798b12ea +Author: Patrik Oldsberg +Date: Mon May 18 00:46:44 2020 +0200 + + github/workflows: run tsc in cli build + +commit 296a7871602c59fdbfc4bc9e3fd94f31210f3c04 +Author: Patrik Oldsberg +Date: Mon May 18 00:45:57 2020 +0200 + + plugins/auth-,catalog-backend: point types to src + +commit 5d11dba5dba32370ae54f0a668db7aefe844a8af +Author: Patrik Oldsberg +Date: Mon May 18 00:19:27 2020 +0200 + + packages/cli: keep comments in ts declarations + +commit 78a75669270bef8e8783c85a684ed76db59fbb02 +Author: Patrik Oldsberg +Date: Mon May 18 00:14:56 2020 +0200 + + docs: added more docs explaining the build setup + +commit 738704f1d18141a53aa8533ccb7fec0f50389825 +Author: Patrik Oldsberg +Date: Mon May 18 00:05:32 2020 +0200 + + packages/cli: fix for bundler looking for tsconfig in the wrong place + +commit d1d7c564e76333cab848fa6ba2f53f25e70e6757 +Author: Patrik Oldsberg +Date: Sun May 17 23:26:13 2020 +0200 + + github/workflows: update to new build setup + +commit 1d6b9564b3db0358698d98953d884342f3c22598 +Author: Patrik Oldsberg +Date: Sun May 17 21:13:13 2020 +0200 + + packages/cli: common yarn install for e2e tests + point to dist + +commit 5d61636f7f85734d2afd0a2b1eaf1ab754c82538 +Author: Patrik Oldsberg +Date: Sun May 17 20:59:50 2020 +0200 + + packages/cli: update app template for new build system + +commit 281f7d512e33f776e4b3781cfb7e0438121e5983 +Author: Patrik Oldsberg +Date: Sun May 17 17:42:33 2020 +0200 + + packages/core: list types as dependencies + +commit 12ef5f6764380107d0af094e5dad986174f583e4 +Author: Patrik Oldsberg +Date: Sun May 17 17:42:18 2020 +0200 + + packages/cli: make create-app patch entrypoints of local deps + +commit 65805ca70bec0d330fa6d23ae78f44c55aac132f +Author: Patrik Oldsberg +Date: Sun May 17 17:41:51 2020 +0200 + + packages: update root package.json and template tsconfig + +commit 7cb0bdb282979d6ef17a5d01a24afecc9c182b56 +Author: Patrik Oldsberg +Date: Sun May 17 16:56:17 2020 +0200 + + packages/cli: fix bad bundler loader options + +commit 176085e7a1c907318a305668025b6d819009847d +Author: Patrik Oldsberg +Date: Sun May 17 16:53:23 2020 +0200 + + packages/cli: skip caching of plugin builds + +commit 1dd33e8e33345157c91101e9376b4ab4644d35bd +Author: Patrik Oldsberg +Date: Sun May 17 16:44:47 2020 +0200 + + packages,plugins: remove extra tsconfig files + +commit 8cee042e13a685ed02b4e9ed67c08e2c974a68ce +Author: Patrik Oldsberg +Date: Sun May 17 16:23:23 2020 +0200 + + packages/storybook: point to src/ and use sucrase + +commit 04c66c14df94f26277ac74c62c048776e130e315 +Author: Patrik Oldsberg +Date: Sun May 17 16:13:20 2020 +0200 + + packages/cli: revert jest tranform to use ts-jest, as sucrase doesn't hoist mocks + +commit 1595bf11ddc85fe76cee9a6251a8f80c30527577 +Author: Patrik Oldsberg +Date: Sun May 17 15:15:24 2020 +0200 + + packages/cli: update jest config to point to src and use sucrase + +commit 7170a8c174432c9126238e2d09ab8ea6c0162a28 +Author: Patrik Oldsberg +Date: Sun May 17 13:25:17 2020 +0200 + + packages/cli: added d.ts rollup build to packager + +commit a2db7ff37d46c70bc0991bc3a2e95ba968086e44 +Author: Patrik Oldsberg +Date: Sun May 17 13:05:13 2020 +0200 + + packages/cli: support multiple packager configs + +commit 07cb8ed190c4515486c833049fa5edffcaf47f64 +Author: Patrik Oldsberg +Date: Sun May 17 12:50:30 2020 +0200 + + packages/cli: rename lib/bundle to bundler + serveBundle + +commit c0336122c05a1e751737d467c0f948c19af51205 +Author: Patrik Oldsberg +Date: Sun May 17 12:48:38 2020 +0200 + + tsconfig: switch to top-level type checking + +commit c9f435638ae5d3a878d498fd6eddc3d406d5a672 +Author: Patrik Oldsberg +Date: Sun May 17 12:46:57 2020 +0200 + + plugins/graphiql: add missing codemirror types + +commit 3445778b2b4b501fc048c23099e650f39c7f2664 +Author: Patrik Oldsberg +Date: Sun May 17 12:46:41 2020 +0200 + + plugins/{auth,catalog}-backend: type fix + +commit 0ccff561c0c997612e458a3c4c835e0a645102bb +Author: Patrik Oldsberg +Date: Sun May 17 12:45:58 2020 +0200 + + added patches for bad types in dependencies + +commit 1f159c0f99a4d1ecb08bbf711197c4e9e814c747 +Author: Patrik Oldsberg +Date: Sun May 17 11:48:42 2020 +0200 + + packages/cli: switch rollup to use esbuild + +commit b071dc0e9440be4883f8c3c0a5cabb8c8f18718b +Author: Patrik Oldsberg +Date: Sun May 17 11:12:52 2020 +0200 + + packages/cli: throw error message in packages instead of exit + +commit 590276c67779ed9df8d7ec9aa97a2530c115f8dc +Author: Patrik Oldsberg +Date: Sun May 17 11:06:39 2020 +0200 + + packages/cli: move rollup build to lib/packager + +commit f202e30c2c01ed74a0ca244a6e63499e28df17d9 +Author: Patrik Oldsberg +Date: Sun May 17 10:57:32 2020 +0200 + + packages/cli: removed plugin:build watch mode + +commit d1939be66417825245be519937a530ce628e91a2 +Author: Patrik Oldsberg +Date: Sat May 16 23:45:53 2020 +0200 + + packages/cli: extract css in bundle prod builds + +commit d911db4105d9f599406ef43c7b4048c67a09f678 +Author: Patrik Oldsberg +Date: Sat May 16 22:59:11 2020 +0200 + + packages/cli: rename bundle loaders to transforms and include plugins + +commit 33df212ae7f939a9188ebf0028f72ae6da9ef065 +Author: Patrik Oldsberg +Date: Sat May 16 20:25:49 2020 +0200 + + packages/cli: remove react-scripts dependency + +commit f3b54ae6180419951f927098ff9b044a852b503b +Author: Patrik Oldsberg +Date: Sat May 16 19:04:51 2020 +0200 + + packages/cli: pick up bundle html template from next to index + +commit 65220f3ef0334348857f10f111e0c41035f6e87b +Author: Patrik Oldsberg +Date: Sat May 16 19:01:20 2020 +0200 + + packages/cli: nicer bundle and chunk names for bundler + +commit 1694bbd7ccd35ea07b52d48a76cc6f219a4b0f2e +Author: Patrik Oldsberg +Date: Sat May 16 18:53:33 2020 +0200 + + packages/cli: separate dev and prod config + +commit 0de24c3ce946afcc2631166b20694670dbbba138 +Author: Patrik Oldsberg +Date: Sat May 16 18:50:38 2020 +0200 + + packages/cli: add basic bundle build and use for app:build + +commit 0fb2440d972c1298db2f047c796edc9df9129a3d +Author: Patrik Oldsberg +Date: Sat May 16 18:04:26 2020 +0200 + + packages/cli: add flag for toggling type checking as a part of plugin and app serve + +commit 5cb37b504a08551a924c54ac2ba2dabc0c04dca5 +Author: Patrik Oldsberg +Date: Sat May 16 17:50:32 2020 +0200 + + packages/cli: use bundle instead of react-scripts for app:start + +commit afae83ba8d3a536ccc6e32cfb9d0071684f3d211 +Author: Patrik Oldsberg +Date: Sat May 16 17:49:04 2020 +0200 + + packages/cli: make it possible to configure bundle entrypoint + +commit 989b13ca75bbf8e40a49a9d2eaa547921696efc9 +Author: Patrik Oldsberg +Date: Sat May 16 17:36:23 2020 +0200 + + packages/cli: tweak bundle dev server setup + +commit c744f5e4a38b58d48420aa135dc7ff8915b61e6c +Author: Patrik Oldsberg +Date: Sat May 16 17:23:39 2020 +0200 + + packages/cli: better HTTPS switch for bundle + +commit 9a123ac0a905944df2e646fcf924233f1daa4a36 +Author: Patrik Oldsberg +Date: Sat May 16 16:47:22 2020 +0200 + + packages/cli: add bundle chunk splitting optimization + +commit 8e8808993c4c7a6b65250fbd543d5d31af58d127 +Author: Patrik Oldsberg +Date: Sat May 16 16:41:03 2020 +0200 + + packages/cli: split bundle loaders into separate module + +commit 0f718ca55878ac8aa9b4866f4d87a8cc8a883b95 +Author: Patrik Oldsberg +Date: Sat May 16 16:36:14 2020 +0200 + + packages/cli: use asset loader for bundling all assets + +commit 9c3de313fcc2e4d45faf487bfd96a8a8618b337e +Author: Patrik Oldsberg +Date: Sat May 16 16:08:12 2020 +0200 + + packages/cli: remove redundant eslint-loader from bundle config + +commit 90aee3b1aa628b5af5ca788763af862b596b5e1a +Author: Patrik Oldsberg +Date: Sat May 16 16:07:18 2020 +0200 + + packages/cli,dev-utils: add react hot loading support + +commit 3643faf3d47d445fc0961b1e6c77435edcbefe29 +Author: Patrik Oldsberg +Date: Sat May 16 15:56:32 2020 +0200 + + packages/cli: switch bundling config to use sucrase + +commit a6376ee7f506b6e9537e88f60a1514921673c145 +Author: Patrik Oldsberg +Date: Sat May 16 12:33:14 2020 +0200 + + packages/cli: make plugin:serve point to src of deps + +commit fb78fb2da45c42373b4f43872a59e87a515a6c98 +Author: Patrik Oldsberg +Date: Sat May 16 12:15:07 2020 +0200 + + packages,plugins: add main:src package.json field to all built packages + +commit 34ad05575e73025694510f2e17cfa9b4112edbc6 +Author: Patrik Oldsberg +Date: Sat May 16 12:07:30 2020 +0200 + + packages/cli: move plugin serve config into lib + +commit 05941b7c5ac7728cfb7c5df97bea7fb0a5e7f18b +Merge: 5517a11a89 91c395830d +Author: Patrik Oldsberg +Date: Sun May 17 16:47:14 2020 +0200 + + Merge pull request #892 from spotify/rugvip/icons + + packages/cli: disallow importing all of @material-ui/icons + +commit 5517a11a89ec0ccc6f1539afa3958f3bb34c3aa6 +Author: Nick Noble +Date: Sat May 16 13:05:44 2020 -0400 + + Fix a typo (#893) + +commit 91c395830de32cd16779b096a0b3bd488c30eec4 +Author: Patrik Oldsberg +Date: Sat May 16 16:21:00 2020 +0200 + + packages/cli: disallow importing all of @material-ui/icons + +commit f4f687019bf0fa6d70d88c2e6d1cfe3a919d3511 +Merge: 75fc0fa706 a8a373bdad +Author: Patrik Oldsberg +Date: Sat May 16 11:29:20 2020 +0200 + + Merge pull request #877 from spotify/rugvip/toggle + + packages/app: move theme toggle sidebar item to core + +commit 75fc0fa706741d865d0dd6053ce1159baa4605ef +Merge: a3be133979 0563fde3b6 +Author: Patrik Oldsberg +Date: Fri May 15 19:08:34 2020 +0200 + + Merge pull request #876 from spotify/rugvip/theme + + package/core: make themes configurable as a part of app creation, and add API for switching themes + +commit 0563fde3b6f8380da922f7d795e9675e7e20ce8b +Author: Patrik Oldsberg +Date: Fri May 15 14:14:07 2020 +0200 + + packages/core: clearer naming in AppThemeProvider + +commit af934d41736d463aae1aa58f6449ae9d1e1f9099 +Author: Patrik Oldsberg +Date: Fri May 15 17:58:15 2020 +0200 + + docs: add docs for how to create and use custom themes + +commit a3be13397977f368cb88283101d80563c548d1f8 +Merge: 9fc9f972fc d17b62cd31 +Author: Patrik Oldsberg +Date: Fri May 15 15:43:17 2020 +0200 + + Merge pull request #888 from spotify/rugvip/themeoptions + + packages/theme: make it easier no override default font + +commit 9fc9f972fc31e05a31826513f3e731faca568c05 +Author: Wojciech Adaszyński +Date: Fri May 15 15:40:15 2020 +0200 + + Add component page with unregister button (#866) + + * Add component page with unregister button + + * Use errorApi and redirect on ComponentPage + + Co-authored-by: Wojciech Adaszynski + +commit d17b62cd31d93ef1dc09a1a70cda9d1229d79e0d +Author: Patrik Oldsberg +Date: Fri May 15 15:27:30 2020 +0200 + + packages/theme: make it easier no override default font + +commit 95f1500866bcae707973da9f93c723664bccdf87 +Author: Ivan Shmidt +Date: Fri May 15 15:23:03 2020 +0200 + + feat: external link + +commit e7c8369c32c81b412115d9466ca3fb3aad521976 +Merge: de7c553a0a 7cbd6f5b20 +Author: Raghunandan Balachandran +Date: Fri May 15 15:16:25 2020 +0200 + + Merge pull request #879 from spotify/auth-backend-skeleton + + Auth Backend: add a skeleton service + +commit 7cbd6f5b20ad567d4033d4345cc0f4315088dbda +Author: Raghunandan +Date: Fri May 15 13:02:25 2020 +0200 + + add a skeleton service for auth + +commit 360be6f9357999f82e9176d017c6a55cd20f4f05 +Merge: 6bee3ce985 de7c553a0a +Author: Ivan Shmidt +Date: Fri May 15 14:36:52 2020 +0200 + + Merge branch 'master' of github.com:spotify/backstage into catalog/deduplicate-locations + +commit 6bee3ce985a5de59dd87d6d230e997bafb40822c +Author: Ivan Shmidt +Date: Fri May 15 14:25:07 2020 +0200 + + feat: deduplicate locations on insert + +commit 1720b5ea8eeb4187e3ebd7bce0739a51c50ea933 +Merge: b4ef484e85 de7c553a0a +Author: Nikita Nek Dudnik +Date: Fri May 15 14:18:45 2020 +0200 + + Merge remote-tracking branch 'upstream/master' + +commit f3abf95f7f33d9f62f32037bd14f55a25f83f456 +Author: Patrik Oldsberg +Date: Fri May 15 14:13:24 2020 +0200 + + packages/core: fix localStorage check in AppThemeSelector + +commit de7c553a0adb4d5f0eca7032f7beb5da113a2022 +Merge: 16df7e9ce0 303fd521da +Author: Fredrik Adelöw +Date: Fri May 15 13:01:41 2020 +0200 + + Merge pull request #869 from spotify/freben/refresh-split + + Separate out and generalise concerns of reading and parsing + +commit b4ef484e8591c7b8be0d06d8e741d9f452d62487 +Author: Nikita Nek Dudnik +Date: Fri May 15 11:49:38 2020 +0200 + + fix: replace missing icons + +commit 28f71fb0d98d25d032b5a9f9076abf77f93151a2 +Merge: 9949ee6880 e3972a527e +Author: Nikita Nek Dudnik +Date: Fri May 15 11:37:02 2020 +0200 + + Merge remote-tracking branch 'upstream/master' + +commit 303fd521da3aaa42eb31ebe62e41d48f47115e05 +Author: Fredrik Adelöw +Date: Thu May 14 16:07:41 2020 +0200 + + Separate out and generalize concerns of reading and parsing + +commit a8a373bdad258c480493d629cd5cf2ef1b2553e6 +Author: Patrik Oldsberg +Date: Fri May 15 10:47:36 2020 +0200 + + packages/app: move theme toggle sidebar item to core + +commit 16df7e9ce06f6567162f33267b4ec58d3e150446 +Merge: e3972a527e 4a0f37b98a +Author: Patrik Oldsberg +Date: Fri May 15 10:38:30 2020 +0200 + + Merge pull request #867 from spotify/rugvip/createApp + + packages/core: refactor createApp to just take options + separate out AppContext + +commit e3972a527e6dfeb8e5466a6c5ce5cb46494dfdc7 +Merge: b16ad78bee 75395ecff1 +Author: Patrik Oldsberg +Date: Fri May 15 10:13:32 2020 +0200 + + Merge pull request #862 from spotify/rugvip/pc + + packages/cli: add publish config sync to plugin:diff + +commit a386750b7da8ea7e58106593ecbe847613f08872 +Author: Patrik Oldsberg +Date: Fri May 15 10:03:33 2020 +0200 + + packages/cli: remove reduntant theme provider from app template + +commit 6b5ac0a8e102adf90bfc4154e07276002d4e18ba +Author: Patrik Oldsberg +Date: Fri May 15 09:37:04 2020 +0200 + + packages/dev-utils: remove redundant theme wrapping + +commit 30c082bc40ae815c93349d696749bf6fac4c74b2 +Author: Patrik Oldsberg +Date: Fri May 15 09:29:03 2020 +0200 + + packages/app: switch to using theme config + +commit 77d989f3835d79889f800874b7cf472ebb547af1 +Author: Patrik Oldsberg +Date: Fri May 15 09:28:37 2020 +0200 + + packages/core: fix for AppThemeProvider and use it in App Provider + +commit d9f0d734cfeedfc132a8f516aa0575c4a82369ec +Author: Patrik Oldsberg +Date: Fri May 15 09:25:18 2020 +0200 + + packages/core: simplify app theme configuration + +commit 75733e2857c75c866c9cc0884cee112ef5eb2ca3 +Author: Patrik Oldsberg +Date: Fri May 15 01:18:56 2020 +0200 + + packages/core: make AppThemeProvider listen for media query changes + +commit 152aa51a2821816eaabb232ba7316286f7c86435 +Author: Patrik Oldsberg +Date: Fri May 15 01:03:56 2020 +0200 + + packages/core: added localStorage support for AppThemeSelector + +commit 05ac0bef26d88a73d6c0dbde38f0737e7c6cf1db +Author: Patrik Oldsberg +Date: Fri May 15 00:46:59 2020 +0200 + + packages/core: added AppThemeSelector + +commit b8e3f9736ee4d2d6271c28460340b88ec22d74b6 +Author: Patrik Oldsberg +Date: Fri May 15 00:09:23 2020 +0200 + + packages/core: added ApiAggregator class + +commit 5de9517d2cfed1a9e1c5d52cc3a9af02f08e8dc0 +Author: Patrik Oldsberg +Date: Thu May 14 21:32:31 2020 +0200 + + packages/core: tweak AppThemeApi and add AppThemeProvider + +commit 66adb0dfe7ae277039033cbcee82dce94db24dc6 +Author: Patrik Oldsberg +Date: Thu May 14 17:30:56 2020 +0200 + + packages/core: added theme options to createApp + +commit 2d365809f1c965817e2e99b92e45a59001b9a175 +Author: Patrik Oldsberg +Date: Thu May 14 16:53:03 2020 +0200 + + packages/core: added initial AppThemeApi + +commit 4a0f37b98a5cdba4527536bbed443463786938d6 +Author: Patrik Oldsberg +Date: Thu May 14 15:56:57 2020 +0200 + + packages/cli: update app template to use new createApp + +commit ce55e67f31b1dd3deaf09032b8a2106e4b704747 +Author: Patrik Oldsberg +Date: Thu May 14 15:36:26 2020 +0200 + + packages/core: refactor createApp to just take options + separate out AppContext + +commit 299589040faf7ff112cd8c74625a0103f03f54fa +Author: Patrik Oldsberg +Date: Thu May 14 15:14:24 2020 +0200 + + packages/core: use useHistory in ErrorPage instead of passing via props + +commit b16ad78bee48f576c7050e74fdddeb1146b930c5 +Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> +Date: Fri May 15 08:57:18 2020 +0200 + + build(deps-dev): bump tsc-watch from 4.2.3 to 4.2.5 (#873) + + Bumps [tsc-watch](https://github.com/gilamran/tsc-watch) from 4.2.3 to 4.2.5. + - [Release notes](https://github.com/gilamran/tsc-watch/releases) + - [Changelog](https://github.com/gilamran/tsc-watch/blob/master/CHANGELOG.md) + - [Commits](https://github.com/gilamran/tsc-watch/commits) + + Signed-off-by: dependabot-preview[bot] + + Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> + +commit 0f57dd2aacbcfc3e65be3170828cc0b979fb1107 +Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> +Date: Fri May 15 08:54:56 2020 +0200 + + build(deps): bump rc-progress from 2.5.3 to 3.0.0 (#872) + + Bumps [rc-progress](https://github.com/react-component/progress) from 2.5.3 to 3.0.0. + - [Release notes](https://github.com/react-component/progress/releases) + - [Changelog](https://github.com/react-component/progress/blob/master/HISTORY.md) + - [Commits](https://github.com/react-component/progress/compare/2.5.3...3.0.0) + + Signed-off-by: dependabot-preview[bot] + + Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> + +commit 6e4d7866ce2d0bc227c980ddf5af9f8860331208 +Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> +Date: Fri May 15 08:36:04 2020 +0200 + + build(deps): bump @rollup/plugin-json from 4.0.2 to 4.0.3 (#874) + + Bumps [@rollup/plugin-json](https://github.com/rollup/plugins) from 4.0.2 to 4.0.3. + - [Release notes](https://github.com/rollup/plugins/releases) + - [Commits](https://github.com/rollup/plugins/compare/url-v4.0.2...json-v4.0.3) + + Signed-off-by: dependabot-preview[bot] + + Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> + +commit f6d9b18a4e047eb2380609fc50d848866f5cfbbe +Author: Bilawal Hameed +Date: Thu May 14 17:54:51 2020 +0200 + + fix: add blog post for tech radar (#870) + +commit 218f38f569c318a49028dd410a0f8f39ad29f0bd +Merge: 4ffea230fc ebab927425 +Author: Patrik Oldsberg +Date: Thu May 14 17:48:49 2020 +0200 + + Merge pull request #868 from spotify/rugvip/APIS + + packages/core: rename api definitions to CamelCaseApi + +commit 9949ee68808dbccba113f539d9eb368b45ab242c +Author: Nikita Nek Dudnik +Date: Thu May 14 17:15:16 2020 +0200 + + Implement useAsyncPolling + +commit ebab9274254e30dafe9f83f22b341de72dfb3e7e +Author: Patrik Oldsberg +Date: Thu May 14 16:12:05 2020 +0200 + + packages/core: rename api definitions to CamelCaseApi + +commit ab9f48ab103be720ec22d4a2c1b4c0a52ebb1370 +Merge: 1627b490b4 9ff391681b +Author: Ivan Shmidt +Date: Thu May 14 16:13:21 2020 +0200 + + Merge pull request #11 from Nek/feature/state + + Feature/state + +commit 9ff391681bfe7af53f10017f111a12355a716848 +Author: Ivan Shmidt +Date: Thu May 14 16:07:46 2020 +0200 + + refactor: renaming + +commit 4ffea230fcf5ecc9f29c1b42a8ed4a38a3549575 +Merge: 8658bc1a2a 9a2d473346 +Author: Fredrik Adelöw +Date: Thu May 14 16:06:01 2020 +0200 + + Merge pull request #863 from spotify/freben/responsibility + + Link components to the location that created them + +commit bd2ac2c68357cfdf10998d12474b73334babf0b5 +Author: Ivan Shmidt +Date: Thu May 14 16:05:22 2020 +0200 + + refactor: move state + + Co-authored-by: Patrik Oldsberg + Co-authored-by: Nikita Dudnik + +commit 8658bc1a2a12a213b02b45d2834f49988d5a0ad1 +Merge: a82d2a523d f0b97f5ff9 +Author: Niklas Ek +Date: Thu May 14 15:50:20 2020 +0200 + + Merge pull request #865 from spotify/nikek/bools + + fix(catalog-backend): Make env string 'false' set cors to false + +commit a82d2a523d1bf5dabb01c5f1f4c8e7433bc7d4ae +Merge: d10325da29 2414267cc0 +Author: Patrik Oldsberg +Date: Thu May 14 15:48:34 2020 +0200 + + Merge pull request #864 from spotify/rugvip/srct + + packages,plugins: point types to src/ for development + +commit f0b97f5ff98657b37d69989c885fefb99e755e42 +Author: nikek +Date: Thu May 14 15:04:18 2020 +0200 + + make env string 'false' set cors to false + +commit 3e1854f805d29575105859f2bcabb2aa10ea3272 +Merge: 6a3cc27048 34e021ff59 +Author: Nikita Dudnik +Date: Thu May 14 14:34:39 2020 +0200 + + Merge pull request #12 from Nek/feat/state-routing + + feat: routing + +commit 34e021ff596ee67226a6f51dd2d202556c45b5e8 +Author: Ivan Shmidt +Date: Thu May 14 14:32:58 2020 +0200 + + feat: routing + +commit 2414267cc05083629cc1ce05a3dbbb57fd8d0164 +Author: Patrik Oldsberg +Date: Thu May 14 14:25:05 2020 +0200 + + tsconfig: skip declaration map creation + +commit 682d9ce6125cec397cad1ff4c3719993a8c0d1e4 +Author: Patrik Oldsberg +Date: Thu May 14 12:03:02 2020 +0200 + + packages,plugins: point types to src/ for development + add pre/post back cli commands + +commit d10325da2945c19520252e52aecdb428490950a3 +Merge: a038b5595e d76f8714a4 +Author: Patrik Oldsberg +Date: Thu May 14 13:47:50 2020 +0200 + + Merge pull request #860 from spotify/rugvip/cleandist + + packages,plugins: only publish .js and .d.ts files in dist + +commit a038b5595e07602ffef874ff2c330bb816e6ee9d +Merge: 71ead7eb35 b23c6d3276 +Author: Marcus Eide +Date: Thu May 14 13:19:20 2020 +0200 + + Merge pull request #816 from spotify/dependabot/npm_and_yarn/rollup-plugin-postcss-3.1.1 + + build(deps): bump rollup-plugin-postcss from 2.5.0 to 3.1.1 + +commit 9a2d473346cd00ac9bd11268041af35b06f2fe51 +Author: Fredrik Adelöw +Date: Thu May 14 13:16:04 2020 +0200 + + Link components to the location that created them + +commit 71ead7eb35be8133ccb56d1eb96c0093abbd884f +Merge: 920607ea8b 4fb230e48f +Author: Patrik Oldsberg +Date: Thu May 14 12:01:11 2020 +0200 + + Merge pull request #861 from spotify/rugvip/nodiff + + github/workflows: add check to make sure plugin templates stay in sync + +commit 75395ecff189e69c02229f4e117ab5a404ee282e +Author: Patrik Oldsberg +Date: Thu May 14 11:51:45 2020 +0200 + + packages/cli: add publish config sync to plugin:diff + +commit 6a3cc270487f7ce7e8bc816180cc9a09cb42e866 +Author: Ivan Shmidt +Date: Thu May 14 11:53:25 2020 +0200 + + refactor: remove redux, some rearrangement + +commit 920607ea8bb59b00b3899b81e35bbb1d827a7909 +Merge: 3077fa9965 eec599738d +Author: Patrik Oldsberg +Date: Thu May 14 11:44:37 2020 +0200 + + Merge pull request #852 from spotify/rugvip/oauth + + packages/core: lift out and adapt internal oauth request API + +commit 3077fa99657bf724050d06d2c5e420097021ec24 +Merge: 47b3efffe9 922e783150 +Author: Fredrik Adelöw +Date: Thu May 14 11:44:11 2020 +0200 + + Merge pull request #847 from spotify/mob/refreshlogic + + Move out the refresh logic into a separate class + +commit 47b3efffe93816c2a90a3e5884fb129854aaff3a +Merge: 579ba54480 97711d2cc4 +Author: Patrik Oldsberg +Date: Thu May 14 11:42:08 2020 +0200 + + Merge pull request #859 from spotify/rugvip/cleancli + + packages/cli: only ship js files in dist + +commit 7b424c0337cdd0ecfc7e8f3ea34804e65c10aa31 +Author: Ivan Shmidt +Date: Thu May 14 11:38:39 2020 +0200 + + refactor: detailedViewPage moved to hooks + + Co-authored-by: Nikita Dudnik + +commit 4fb230e48f1d851c587857b3bf85ea9bb40b06ff +Author: Patrik Oldsberg +Date: Thu May 14 11:37:33 2020 +0200 + + github/workflows: add check to make sure plugin templates stay in sync + +commit b4afc0bc9b36bf675d337a5bb010fb979a51b5c7 +Author: Patrik Oldsberg +Date: Thu May 14 11:36:15 2020 +0200 + + package.json: add root lerna diff command + +commit bdec811fe1736d119040aa48664dbf09c120ca87 +Author: Patrik Oldsberg +Date: Thu May 14 11:34:21 2020 +0200 + + packages/cli: update templates to use latest @types/jest version + +commit d76f8714a44f4e93859205663c74c08f46cbd1d2 +Author: Patrik Oldsberg +Date: Thu May 14 11:31:35 2020 +0200 + + packages,plugins: only publish .js and .d.ts files in dist + +commit 97711d2cc412c3af3c82dfa05331531bc9598a80 +Author: Patrik Oldsberg +Date: Thu May 14 11:17:13 2020 +0200 + + packages/cli: only ship js files in dist + +commit eec599738d436fa467251a388841be4c9a0d9041 +Author: Patrik Oldsberg +Date: Thu May 14 11:02:35 2020 +0200 + + packages/core: naming and docs updates for OAuthRequest API + +commit 1c50ded618dddadc85b299652cc42ef7310b253f +Author: Patrik Oldsberg +Date: Thu May 14 01:17:32 2020 +0200 + + packages/core: added some basic docs for OAuthRequestManager + +commit c689244a177c32a43feb56a4f3b19f1698b788d2 +Author: Patrik Oldsberg +Date: Thu May 14 00:48:34 2020 +0200 + + packages/core: added OAuthRequestDialog + +commit 5553d2dc94ed8b22a26f13fef87747b695a3b0f9 +Author: Patrik Oldsberg +Date: Thu May 14 00:45:34 2020 +0200 + + bump react-use to 14.2.0 + add to core + +commit 08732d57d0548d25e4ea358ed4af266478d37ffe +Author: Patrik Oldsberg +Date: Thu May 14 00:35:46 2020 +0200 + + packages/core: add implementation of OAuthRequest API + +commit 348e35d60b8ce6ee07225957ea0a6c8ef910c16d +Author: Patrik Oldsberg +Date: Thu May 14 00:35:06 2020 +0200 + + packages/core: added zen-observable dependency + +commit 4cd23d0231dfabbc7c00360db14e12ddb14bdf6e +Author: Patrik Oldsberg +Date: Thu May 14 00:22:40 2020 +0200 + + packages/core: added oauthRequest API definition + +commit 150908ae5500992b441e3e6159f4c5e8a3cc0cfc +Author: Patrik Oldsberg +Date: Thu May 14 00:12:23 2020 +0200 + + packages/core: add common Observable type based on TC39 + +commit aac4ac0df62b4d884a356b59e04582287cd7c0dd +Author: Nikita Nek Dudnik +Date: Thu May 14 10:47:23 2020 +0200 + + Fix builds polling + +commit 579ba544805163d589ce5ab7279dc6ace2bcda98 +Merge: 685c962a94 3f00f82e28 +Author: Patrik Oldsberg +Date: Thu May 14 10:35:08 2020 +0200 + + Merge pull request #850 from spotify/rugvip/cleancore + + packages/core: use cleaner tree of index files in api + remove default exports + +commit 685c962a947b3ace63bfbd9937d11ee5a78091f9 +Author: Victor Viale +Date: Thu May 14 09:38:43 2020 +0200 + + Use the /contribute URL for the Good First Issues link (#858) + + GitHub proposes a `/contribute` URL as a page to get people into contributing, which declutters the usual issues page a bit. + Issuing this PR as a suggestion, feel free to close it. + + Example: https://github.com/spotify/backstage/contribute + +commit 922e7831500dad2d3bdbd99d8e92e4f947d432a3 +Author: Fredrik Adelöw +Date: Thu May 14 09:31:04 2020 +0200 + + Address comments + +commit 2d3412cf34e499ce60f8120ba466df1e20683dbf +Author: Kat Zhou <61153904+katz95@users.noreply.github.com> +Date: Thu May 14 09:08:06 2020 +0200 + + Contributor Header (#580) + +commit 359649086f6b9f940b82064b755352951e17b61f +Author: Wojciech Adaszyński +Date: Thu May 14 08:46:45 2020 +0200 + + Add component table front-end (#848) + + Co-authored-by: Wojciech Adaszynski + +commit b23c6d3276e1a497d6f2a4a1cca1cf7d666c65fc +Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> +Date: Thu May 14 06:44:01 2020 +0000 + + build(deps): bump rollup-plugin-postcss from 2.5.0 to 3.1.1 + + Bumps [rollup-plugin-postcss](https://github.com/egoist/rollup-plugin-postcss) from 2.5.0 to 3.1.1. + - [Release notes](https://github.com/egoist/rollup-plugin-postcss/releases) + - [Changelog](https://github.com/egoist/rollup-plugin-postcss/blob/master/CHANGELOG-OLD.md) + - [Commits](https://github.com/egoist/rollup-plugin-postcss/compare/v2.5.0...v3.1.1) + + Signed-off-by: dependabot-preview[bot] + +commit 5ed0ec374a8ae9da715efa4e7b1254c9e0c8383f +Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> +Date: Thu May 14 08:39:16 2020 +0200 + + build(deps): bump ts-loader from 6.2.1 to 7.0.4 (#838) + + Bumps [ts-loader](https://github.com/TypeStrong/ts-loader) from 6.2.1 to 7.0.4. + - [Release notes](https://github.com/TypeStrong/ts-loader/releases) + - [Changelog](https://github.com/TypeStrong/ts-loader/blob/master/CHANGELOG.md) + - [Commits](https://github.com/TypeStrong/ts-loader/compare/v6.2.1...v7.0.4) + + Signed-off-by: dependabot-preview[bot] + + Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> + +commit da149fc19528486dd421e379d4865ef9b97c8245 +Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> +Date: Thu May 14 08:38:53 2020 +0200 + + build(deps-dev): bump @types/jquery from 3.3.34 to 3.3.38 (#854) + + Bumps [@types/jquery](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jquery) from 3.3.34 to 3.3.38. + - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) + - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jquery) + + Signed-off-by: dependabot-preview[bot] + + Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> + +commit dbf0ae6cbac114f95c3ef8657bbf8a80b9006bd5 +Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> +Date: Thu May 14 08:38:26 2020 +0200 + + build(deps-dev): bump @types/supertest from 2.0.8 to 2.0.9 (#857) + + Bumps [@types/supertest](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/supertest) from 2.0.8 to 2.0.9. + - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) + - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/supertest) + + Signed-off-by: dependabot-preview[bot] + + Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> + +commit da034b0ef6c4d7991ba6b42070390d1aaca15e9d +Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> +Date: Thu May 14 08:37:41 2020 +0200 + + build(deps-dev): bump @types/yup from 0.28.2 to 0.28.3 (#855) + + Bumps [@types/yup](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/yup) from 0.28.2 to 0.28.3. + - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) + - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/yup) + + Signed-off-by: dependabot-preview[bot] + + Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> + +commit 1b6a9538c1cf78b7747a6ca4d475a3a96ede053f +Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> +Date: Thu May 14 08:37:24 2020 +0200 + + build(deps-dev): bump @storybook/addon-links from 5.3.17 to 5.3.18 (#856) + + Bumps [@storybook/addon-links](https://github.com/storybookjs/storybook/tree/HEAD/addons/links) from 5.3.17 to 5.3.18. + - [Release notes](https://github.com/storybookjs/storybook/releases) + - [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md) + - [Commits](https://github.com/storybookjs/storybook/commits/v5.3.18/addons/links) + + Signed-off-by: dependabot-preview[bot] + + Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> + +commit 64bd3982c315952fc7c44449e72a557b2aa707f0 +Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> +Date: Thu May 14 08:37:04 2020 +0200 + + build(deps-dev): bump nodemon from 2.0.2 to 2.0.3 (#853) + + Bumps [nodemon](https://github.com/remy/nodemon) from 2.0.2 to 2.0.3. + - [Release notes](https://github.com/remy/nodemon/releases) + - [Commits](https://github.com/remy/nodemon/compare/v2.0.2...v2.0.3) + + Signed-off-by: dependabot-preview[bot] + + Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> + +commit 7f56215da6c58c7e7ee9ec0df3dc28ea4a7b8b24 +Author: Nikita Nek Dudnik +Date: Wed May 13 19:08:41 2020 +0200 + + Add non working settings implemented with hooks + +commit 3f00f82e28de4785e4a4b82c06f32dc38941291b +Author: Patrik Oldsberg +Date: Wed May 13 18:47:53 2020 +0200 + + packages/core: use cleaner tree of index files in api + remove default exports + +commit a0d59c1472a7db40393b92ff3f2d157a41042b1f +Merge: 114ef404c2 7cb381b664 +Author: Patrik Oldsberg +Date: Wed May 13 18:05:38 2020 +0200 + + Merge pull request #837 from spotify/dependabot/npm_and_yarn/replace-in-file-6.0.0 + + build(deps): bump replace-in-file from 5.0.2 to 6.0.0 + +commit ba2b19d4c0b3086b378307ebc244d984986f953e +Author: Nikita Nek Dudnik +Date: Wed May 13 17:36:02 2020 +0200 + + Add missing file + +commit 7cb381b664858995f3da0c82ce0db77d5d3985e6 +Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> +Date: Wed May 13 15:07:22 2020 +0000 + + build(deps): bump replace-in-file from 5.0.2 to 6.0.0 + + Bumps [replace-in-file](https://github.com/adamreisnz/replace-in-file) from 5.0.2 to 6.0.0. + - [Release notes](https://github.com/adamreisnz/replace-in-file/releases) + - [Changelog](https://github.com/adamreisnz/replace-in-file/blob/master/CHANGELOG.md) + - [Commits](https://github.com/adamreisnz/replace-in-file/commits) + + Signed-off-by: dependabot-preview[bot] + +commit 114ef404c242bfafe3aa3e0a64472b2edab5975b (tag: v0.1.1-alpha.5) +Merge: 4b260bf70a 2bde9d3854 +Author: Patrik Oldsberg +Date: Wed May 13 17:00:51 2020 +0200 + + Merge pull request #807 from spotify/rugvip/release + + Release v0.1.1-alpha.5 + +commit 2bde9d385458f6eb106bc35b177e9c2fc70844a2 +Author: Patrik Oldsberg +Date: Wed May 13 16:28:41 2020 +0200 + + v0.1.1-alpha.5 + +commit 4b260bf70a8820dc6f7135d376ef79d6a9a97008 +Merge: 0f0f0405ff 930752a453 +Author: Patrik Oldsberg +Date: Wed May 13 16:22:53 2020 +0200 + + Merge pull request #836 from spotify/dependabot/npm_and_yarn/types/helmet-0.0.47 + + build(deps-dev): bump @types/helmet from 0.0.45 to 0.0.47 + +commit 0f0f0405ff9b0e5ece8195c4e5bd549ee74db1f2 +Merge: fb54d1d300 ab5c7c533c +Author: Patrik Oldsberg +Date: Wed May 13 16:22:18 2020 +0200 + + Merge pull request #819 from spotify/dependabot/npm_and_yarn/types/jest-25.2.1 + + build(deps): bump @types/jest from 24.9.1 to 25.2.1 + +commit d86baf0ec53ebb104b6d5ed5500963e0ea408689 +Author: Fredrik Adelöw +Date: Wed May 13 11:57:22 2020 +0200 + + Move out the refresh logic into a separate class + +commit fb54d1d300143070f77971805f5dad76fc19d875 +Merge: 9c4317ea39 29abee4c31 +Author: Patrik Oldsberg +Date: Wed May 13 15:53:41 2020 +0200 + + Merge pull request #844 from spotify/rugvip/release-fix + + packages/cli: fix create-app package resolution in e2e test mode + +commit 9c4317ea3907343f83df2297ff8496645faae388 +Merge: fdbd650902 5753652dd4 +Author: Niklas Ek +Date: Wed May 13 15:22:02 2020 +0200 + + Merge pull request #831 from Nishikoh/stop-animation + + Change 'Running' status to static + +commit fdbd650902f005d70a3c0725a2e92c044e96863d +Merge: c61400c6e7 6faf3709d6 +Author: Patrik Oldsberg +Date: Wed May 13 15:21:27 2020 +0200 + + Merge pull request #757 from spotify/rugvip/nav-targets + + packages/core: added basic nav target implementation + +commit 6faf3709d649024dcde0cc6fb389991bed0882da +Author: Patrik Oldsberg +Date: Fri May 8 12:41:25 2020 +0200 + + packages/core: fix layout/Sidebar icon prop type + +commit aa7eb96829126feff1839355d4b0cd3d56ec3f72 +Author: Patrik Oldsberg +Date: Fri May 8 12:26:32 2020 +0200 + + plugins/graphiql: use nav-target route + +commit 14c551c616954fa8df0b3ad13ca45c2f482aeb36 +Author: Patrik Oldsberg +Date: Fri May 8 12:25:36 2020 +0200 + + packages/dev-utils: add nav targets to the sidebar + +commit 97877ca296a08ac0c7009e6be64a1052dd584260 +Author: Patrik Oldsberg +Date: Fri May 8 12:25:05 2020 +0200 + + packages/core: new addRoute to router hook that adds a nav-target route + +commit f298700ba98bb6c62796c4a008aa1bd803b23eeb +Author: Patrik Oldsberg +Date: Sun May 3 17:44:48 2020 +0200 + + packages/core: added basic nav target implementation + +commit 29abee4c3165b8604dbcaf04679ebfaebe599427 +Author: Patrik Oldsberg +Date: Wed May 13 12:09:27 2020 +0200 + + packages/cli: fix create-app package resolution in e2e test mode + +commit c61400c6e759b669b31e7d633b836edde2f1521b +Merge: 06fef794b0 1579a9dded +Author: Patrik Oldsberg +Date: Wed May 13 14:55:26 2020 +0200 + + Merge pull request #846 from spotify/rugvip/testem + + github/workflows: run all tests on yarn.lock changes + +commit 5753652dd4f00b756d2f9d1580dd541950ad6009 +Author: KoukiNishihara +Date: Wed May 13 03:26:11 2020 +0900 + + Refactor background on animation + +commit 78c3c08de7149b021fbcc44b5c62285287aaa036 +Author: KoukiNishihara +Date: Wed May 13 03:05:27 2020 +0900 + + Delete animation + +commit ab5c7c533cdf3bcf96ffdd196f48170a6a1b668f +Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> +Date: Wed May 13 12:29:29 2020 +0000 + + build(deps): bump @types/jest from 24.9.1 to 25.2.1 + + Bumps [@types/jest](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jest) from 24.9.1 to 25.2.1. + - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) + - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jest) + + Signed-off-by: dependabot-preview[bot] + +commit 1579a9dded713a797b62fe8c6bc116f6a51af3ba +Author: Patrik Oldsberg +Date: Wed May 13 14:28:30 2020 +0200 + + github/workflows: run all tests on changes to yarn.lock + +commit f577f50fdcde687b95d086c297bd2504bfa3e3c8 +Author: Patrik Oldsberg +Date: Wed May 13 13:50:52 2020 +0200 + + github/workflows: run cli workflow on yarn.lock changes + +commit 06fef794b01c4bf2070a3609df248ffe2170f114 +Merge: 2d0c1afe62 1713fac765 +Author: Patrik Oldsberg +Date: Wed May 13 14:23:30 2020 +0200 + + Merge pull request #845 from spotify/rugvip/bumproute + + packages,plugins: bump react-router-dom to 5.2.0 + +commit 1713fac765c7f9b7f8f14811903ac7a543eef45b +Author: Patrik Oldsberg +Date: Wed May 13 13:56:56 2020 +0200 + + packages,plugins: bump react-router-dom to 5.2.0 + +commit 2d0c1afe624e73258aed26ca5b23d38ab77d47e4 +Merge: eb2b85fba4 9114a08081 +Author: Fredrik Adelöw +Date: Wed May 13 11:09:27 2020 +0200 + + Merge pull request #842 from spotify/mob/rearrange + + Rearrange ingestion and descriptor parsing + +commit 9114a08081856bfa1cec63132a2c5b17aeee9964 +Author: Fredrik Adelöw +Date: Wed May 13 10:34:53 2020 +0200 + + Rearrange ingestion and descriptor parsing + +commit eb2b85fba4dd3d4a8bd22a3f7c7ddb66ef52a2e3 +Merge: 23e2bf1e05 92ec964b98 +Author: Fredrik Adelöw +Date: Wed May 13 10:33:47 2020 +0200 + + Merge pull request #829 from spotify/mob/refresh + + Implement first-light location refresh loop + +commit 23e2bf1e055b3f83a4e5965ed9e2bb9889b3ccd4 +Merge: b103a16c88 b9604720a6 +Author: Niklas Ek +Date: Wed May 13 10:32:30 2020 +0200 + + Merge pull request #839 from spotify/dependabot/npm_and_yarn/react-router-5.2.0 + + build(deps): bump react-router from 5.1.2 to 5.2.0 + +commit 930752a453e5ad29181e2f020bf98eb99ea2932d +Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> +Date: Wed May 13 07:29:35 2020 +0000 + + build(deps-dev): bump @types/helmet from 0.0.45 to 0.0.47 + + Bumps [@types/helmet](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/helmet) from 0.0.45 to 0.0.47. + - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) + - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/helmet) + + Signed-off-by: dependabot-preview[bot] + +commit b103a16c88d59f06910c986a3439351df9f8f32c +Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> +Date: Wed May 13 09:27:47 2020 +0200 + + build(deps): bump @lerna/project from 3.18.0 to 3.21.0 (#840) + + Bumps [@lerna/project](https://github.com/lerna/lerna/tree/HEAD/core/project) from 3.18.0 to 3.21.0. + - [Release notes](https://github.com/lerna/lerna/releases) + - [Changelog](https://github.com/lerna/lerna/blob/master/core/project/CHANGELOG.md) + - [Commits](https://github.com/lerna/lerna/commits/v3.21.0/core/project) + + Signed-off-by: dependabot-preview[bot] + + Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> + +commit 37c2c8f671fb7224f0c2819583a75d75261c8976 +Merge: 3435ae9a13 1e8ad4b163 +Author: Fredrik Adelöw +Date: Wed May 13 09:24:28 2020 +0200 + + Merge pull request #841 from spotify/freben/ts39 + + Bump TS to 3.9 + +commit 061ffc60ac8535bc22e3216b1a9b8e921846f1b0 +Author: Nikita Nek Dudnik +Date: Wed May 13 09:14:34 2020 +0200 + + Clean up comments + +commit 1e8ad4b1631b1dc756e19d7fa84162f32966d550 +Author: Fredrik Adelöw +Date: Wed May 13 08:34:08 2020 +0200 + + Bump TS to 3.9 + +commit b9604720a6bbdd4897282594a8662903135ea052 +Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> +Date: Wed May 13 06:27:52 2020 +0000 + + build(deps): bump react-router from 5.1.2 to 5.2.0 + + Bumps [react-router](https://github.com/ReactTraining/react-router) from 5.1.2 to 5.2.0. + - [Release notes](https://github.com/ReactTraining/react-router/releases) + - [Changelog](https://github.com/ReactTraining/react-router/blob/master/CHANGELOG.md) + - [Commits](https://github.com/ReactTraining/react-router/compare/v5.1.2...v5.2.0) + + Signed-off-by: dependabot-preview[bot] + +commit 3435ae9a134ed2184a162ddd143babc8c7c09013 +Author: Wojciech Adaszyński +Date: Wed May 13 08:11:06 2020 +0200 + + Add Register Component plugin (#826) + + Co-authored-by: Wojciech Adaszynski + +commit 408435eb842dbcbeaa9f042528464a92b390536f +Author: Nikita Nek Dudnik +Date: Tue May 12 18:03:39 2020 +0200 + + Move settings effects into a hook + +commit 86350c23a2ceca9ddd071da8c5cdb010405d1c5f +Author: Nikita Nek Dudnik +Date: Tue May 12 17:15:05 2020 +0200 + + Break stuff but add useReducer for settings + +commit 92ec964b98ab4deb509d3dc52415a7d05caa6b1e +Author: Fredrik Adelöw +Date: Tue May 12 16:17:41 2020 +0200 + + Implement first-light location refresh loop + +commit e399a3f8d0e38973e98b7182c584839dbd13a81f +Author: Wojciech Adaszyński +Date: Tue May 12 15:10:59 2020 +0200 + + Update status component: new color and shape of indicator (#811) + + Co-authored-by: Wojciech Adaszynski + +commit fb3649625b57a099528fd49050d8e338e6c63d71 +Merge: 017b5b8c1d e121fc6cad +Author: Fredrik Adelöw +Date: Tue May 12 14:10:49 2020 +0200 + + Merge pull request #821 from spotify/mob/rename-catalog + + Rename inventory to catalog + +commit 017b5b8c1d9ad307ae2952821fcbf29ce814b7ab +Author: Bilawal Hameed +Date: Tue May 12 13:17:00 2020 +0200 + + Added Zalando's copyright info to our NOTICE (#822) + +commit e121fc6cad493bae586d4a35786f9259bebcab6c +Author: Fredrik Adelöw +Date: Tue May 12 11:16:09 2020 +0200 + + Rename inventory to catalog + +commit 7a8c30ef1ef1036d17bcd72574fadf3f3253b12d +Merge: 748a0858d4 52c48ce1a7 +Author: Fredrik Adelöw +Date: Tue May 12 10:40:57 2020 +0200 + + Merge pull request #813 from spotify/freben/inventory_move_migrations + + Move inventory migrations into the plugin itself + +commit 748a0858d4447e2582e924ba2d450e00e8e6ccd2 +Merge: 10c85d97f9 d682714249 +Author: Fredrik Adelöw +Date: Tue May 12 10:32:03 2020 +0200 + + Merge pull request #812 from spotify/freben/inventory2 + + Implement location management + +commit 10c85d97f98637291e89b205df36bd48d7e3ea4d +Merge: 4e4dd67095 f74ebf31ca +Author: Patrik Oldsberg +Date: Tue May 12 09:57:26 2020 +0200 + + Merge pull request #817 from spotify/dependabot/npm_and_yarn/types/webpack-4.41.12 + + build(deps-dev): bump @types/webpack from 4.41.8 to 4.41.12 + +commit 4e4dd67095c7a1c0a352e620695201c5009aee74 +Merge: 41f32d90ae da53c87fb7 +Author: Fredrik Adelöw +Date: Tue May 12 08:28:04 2020 +0200 + + Merge pull request #746 from spotify/dependabot/npm_and_yarn/fs-extra-9.0.0 + + build(deps): bump fs-extra from 8.1.0 to 9.0.0 + +commit 41f32d90aeb9c760e1b2b98aad7d7a306b574590 +Merge: a4b0e78ad9 978fcee4a9 +Author: Fredrik Adelöw +Date: Tue May 12 08:26:15 2020 +0200 + + Merge pull request #818 from spotify/dependabot/npm_and_yarn/husky-4.2.5 + + build(deps-dev): bump husky from 4.2.3 to 4.2.5 + +commit a4b0e78ad9d6ec42977683762cf4d32a4f9a7276 +Merge: 8b2dd21fd0 e8bbf91647 +Author: Fredrik Adelöw +Date: Tue May 12 08:25:07 2020 +0200 + + Merge pull request #815 from spotify/dependabot/npm_and_yarn/tar-6.0.2 + + build(deps): bump tar from 6.0.1 to 6.0.2 + +commit 978fcee4a9920630a72ab24e2a9a072cfc70e806 +Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> +Date: Tue May 12 06:17:02 2020 +0000 + + build(deps-dev): bump husky from 4.2.3 to 4.2.5 + + Bumps [husky](https://github.com/typicode/husky) from 4.2.3 to 4.2.5. + - [Release notes](https://github.com/typicode/husky/releases) + - [Changelog](https://github.com/typicode/husky/blob/master/CHANGELOG.md) + - [Commits](https://github.com/typicode/husky/compare/v4.2.3...v4.2.5) + + Signed-off-by: dependabot-preview[bot] + +commit f74ebf31ca9e438786e5d82d0dc236fe64500476 +Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> +Date: Tue May 12 06:16:08 2020 +0000 + + build(deps-dev): bump @types/webpack from 4.41.8 to 4.41.12 + + Bumps [@types/webpack](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/webpack) from 4.41.8 to 4.41.12. + - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) + - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/webpack) + + Signed-off-by: dependabot-preview[bot] + +commit e8bbf91647f7682d78c5260c1a611dd5e1061d00 +Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> +Date: Tue May 12 06:12:13 2020 +0000 + + build(deps): bump tar from 6.0.1 to 6.0.2 + + Bumps [tar](https://github.com/npm/node-tar) from 6.0.1 to 6.0.2. + - [Release notes](https://github.com/npm/node-tar/releases) + - [Changelog](https://github.com/npm/node-tar/blob/master/CHANGELOG.md) + - [Commits](https://github.com/npm/node-tar/compare/v6.0.1...v6.0.2) + + Signed-off-by: dependabot-preview[bot] + +commit 52c48ce1a7e3daac1c08647e2166a0021cfd64fd +Author: Fredrik Adelöw +Date: Mon May 11 22:06:38 2020 +0200 + + Move inventory migrations into the plugin itself + +commit d6827142492e8ab5c47f7f722d11c7f76ed1aa0e +Author: Fredrik Adelöw +Date: Mon May 11 16:51:54 2020 +0200 + + Implement location management + +commit 8b2dd21fd0dc3783f41bef81944e07aaa472f4d6 +Author: Nathan Calvank +Date: Mon May 11 07:28:20 2020 -0700 + + Issue 660: CodeSnippet Reuseable component (#803) + + * Initial CodeSnippet setup in Storybook + + * Add support for line numbers + + * Pseudo-code some basic tests and leverage useTheme hook + + The test suite cannot currently be run, as the react-syntax-highlighter + appears to be using ESM, which are not supported by Jest out-of-the-box. + + This should only require a simple Babel loader to remedy, but I want to + make sure first that I have not misconfigured something, as configuring + Babel is likely a notable scope increase for this relatively small + issue. + + * Fix ESM Jest issue and update tests + + It would be ideal to have snapshot tests to cover the lightmode vs + darkmode rendering. I started experimenting with directly testing the + styling, and it quickly became very sloppy. + + * Provide more examples in stories + + * Add showLineNumbers to PropType validation + +commit 901562a0b2595f33ff9ff20280dc4ede37e56135 +Merge: 2955b4e862 242427be7b +Author: Niklas Ek +Date: Mon May 11 15:07:17 2020 +0200 + + Merge pull request #779 from spotify/rugvip/serve + + plugins: applied diff for all plugins to enable plugin:serve + +commit 2955884047b1d98d0490cc43553fb11ef0cc68dd +Author: Fredrik Adelöw +Date: Mon May 11 14:20:08 2020 +0200 + + Rename item/items -> component/components + +commit 2955b4e8629740b745e64390b45d4c86bd93245d +Merge: dd44730719 4b1d80b43a +Author: Fredrik Adelöw +Date: Mon May 11 14:05:09 2020 +0200 + + Merge pull request #810 from spotify/freben/inventory1 + + Implement first knex database basics + +commit 4b1d80b43a122b71e51d93d32c47ed7d9831bacc +Author: Fredrik Adelöw +Date: Mon May 11 13:54:27 2020 +0200 + + Implement first knex database basics + +commit 1627b490b4ee17f819b7b5ec4edb5f28c9235afa +Author: Nikita Nek Dudnik +Date: Mon May 11 13:45:59 2020 +0200 + + Get rid of
+ +commit 313da9d660f48d280ab09f08f2539836e1ace88d +Author: Nikita Nek Dudnik +Date: Mon May 11 13:37:38 2020 +0200 + + Fix a typo in notice heading + +commit b9c4eb955f5dee66c586578b871781de6c50256e +Author: Nikita Nek Dudnik +Date: Mon May 11 13:19:10 2020 +0200 + + Remove "huh?" + +commit ddfa3e70f4ecaf755f7918c2caf119758cb619c1 +Author: Nikita Nek Dudnik +Date: Mon May 11 13:18:09 2020 +0200 + + Remove double heading + +commit f841accbef2bb8b6d40462a4b2ea11061ed6c0df +Author: Nikita Nek Dudnik +Date: Mon May 11 12:04:23 2020 +0200 + + fix linting: add missing notice header + +commit dd44730719df0a57a7801b7752396bf9a264810b +Merge: 24928cf283 b1400b9896 +Author: Patrik Oldsberg +Date: Mon May 11 11:47:54 2020 +0200 + + Merge pull request #808 from spotify/rugvip/noresolve + + packages/cli: remove cypress version override from app template + +commit ce936856199d76e8cfb9c6096b825df3ca363da6 +Merge: cae74aac85 fdc0cf9254 +Author: Nikita Nek Dudnik +Date: Mon May 11 11:29:05 2020 +0200 + + Merge branch 'master' of github.com:Nek/backstage + +commit b1400b98963c394e847df6411620fec129336380 +Author: Patrik Oldsberg +Date: Mon May 11 11:23:33 2020 +0200 + + packages/cli: remove cypress version override from app template + +commit fdc0cf9254797b26f599d0bf203c60569927820f +Merge: 9cd104a103 efb498a364 +Author: Ivan Shmidt +Date: Mon May 11 11:19:49 2020 +0200 + + Merge pull request #10 from Nek/feat/routing-through-plugin-api + + feat/routing-through-plugin-api + +commit efb498a3645a5ddcdb6e7a67c9978eac3a0b3c3c +Author: Ivan Shmidt +Date: Mon May 11 11:15:57 2020 +0200 + + feat/routing-through-plugin-api + +commit cae74aac853fe484f9f6ed2f9aeb963f2c0422f2 +Merge: 9cd104a103 24928cf283 +Author: Nikita Nek Dudnik +Date: Mon May 11 11:12:52 2020 +0200 + + Merge remote-tracking branch 'upstream/master' + + # Conflicts: + # packages/core/src/components/Table/Table.tsx + # yarn.lock + +commit 24928cf2837442fb8b9931b907f1d425438a2565 +Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> +Date: Mon May 11 08:25:06 2020 +0200 + + build(deps): bump rc-progress from 2.5.2 to 2.5.3 (#806) + + Bumps [rc-progress](https://github.com/react-component/progress) from 2.5.2 to 2.5.3. + - [Release notes](https://github.com/react-component/progress/releases) + - [Changelog](https://github.com/react-component/progress/blob/master/HISTORY.md) + - [Commits](https://github.com/react-component/progress/compare/2.5.2...2.5.3) + + Signed-off-by: dependabot-preview[bot] + + Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> + +commit d07101cffe157ee2fb18fd055ea48036e600e19a +Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> +Date: Sun May 10 18:01:28 2020 +0200 + + build(deps): bump chokidar from 3.3.1 to 3.4.0 (#739) + + Bumps [chokidar](https://github.com/paulmillr/chokidar) from 3.3.1 to 3.4.0. + - [Release notes](https://github.com/paulmillr/chokidar/releases) + - [Commits](https://github.com/paulmillr/chokidar/compare/3.3.1...3.4.0) + + Signed-off-by: dependabot-preview[bot] + + Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> + +commit 6f0cb5de5d2820d1b336a3e7bc356d8228781e64 +Author: Adil Alimbetov +Date: Sun May 10 12:04:01 2020 +0600 + + Updated colors for table in dark mode (#802) + + * Updated colors for dark mode + + * Updated type on useTheme + + * Fixed code style + + * Revert "Fixed code style" + + This reverts commit 1969fce9a511e7f1b7390948b7b31ff13d4d9165. + + * Changed hook position + +commit 70195df296f55b388c07ce0c1cf65415f5a68e8b +Merge: 25987dc467 657834e485 +Author: Patrik Oldsberg +Date: Sat May 9 11:01:19 2020 +0200 + + Merge pull request #777 from spotify/rugvip/cleanup + + packages/core: fix import and remove bonus code + +commit 25987dc467f74516dc0e40de0338d092695260b8 +Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> +Date: Sat May 9 00:01:07 2020 +0200 + + build(deps): bump @rollup/plugin-node-resolve from 7.1.1 to 7.1.3 (#738) + + Bumps [@rollup/plugin-node-resolve](https://github.com/rollup/plugins) from 7.1.1 to 7.1.3. + - [Release notes](https://github.com/rollup/plugins/releases) + - [Commits](https://github.com/rollup/plugins/compare/node-resolve-v7.1.1...node-resolve-v7.1.3) + + Signed-off-by: dependabot-preview[bot] + + Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> + +commit fca586b7040d15a13b10e8d4d52dc7d50a08f057 +Merge: 0c3a91e058 0fc188d8a4 +Author: Patrik Oldsberg +Date: Fri May 8 20:28:17 2020 +0200 + + Merge pull request #781 from spotify/rugvip/nodefault + + packages/dev-utils: fix for default api factories being omitted + +commit 0c3a91e0588abdb05c50667e8cd3c0dec19a4130 +Merge: 24cb7a7f9d 77d0e9a10f +Author: Patrik Oldsberg +Date: Fri May 8 19:47:07 2020 +0200 + + Merge pull request #780 from spotify/rugvip/nosrc + + package/cli: remove src-relative imports from plugin:serve + +commit 0fc188d8a4f0597b16040eda01a9eea5c99c10f5 +Author: Patrik Oldsberg +Date: Fri May 8 18:52:10 2020 +0200 + + packages/dev-utils: fix for default api factories being omitted + +commit 77d0e9a10f20ed9ea8845fb8f52009247c927f84 +Author: Patrik Oldsberg +Date: Fri May 8 18:55:28 2020 +0200 + + package/cli: remove src-relative imports from plugin:serve + +commit 242427be7ba55c834cab93cefad1b84d99007b29 +Author: Patrik Oldsberg +Date: Fri May 8 18:53:32 2020 +0200 + + plugins/tech-radar: add lighthouse api to dev env + +commit 81cb54d52b3ffb7f91371a5f43712e8b56b0c714 +Author: Patrik Oldsberg +Date: Fri May 8 18:53:04 2020 +0200 + + plugins/lighthouse: add lighthouse api to dev env + +commit 198bf2d1a60a122ba5dc8152fd46782471d2f494 +Author: Patrik Oldsberg +Date: Fri May 8 17:18:36 2020 +0200 + + plugins: applied diff for all plugins to enable plugin:serve + +commit 24cb7a7f9d1df1c1f36b92a083b38b7b6c083986 +Merge: f913777de9 36b0dc849c +Author: Patrik Oldsberg +Date: Fri May 8 17:05:59 2020 +0200 + + Merge pull request #768 from spotify/rugvip/noremove + + packages/cli: avoid removing empty lines in remove-plugin + +commit 657834e485e6cbc5f2d1ff4d1c84863a759e0d45 +Author: Patrik Oldsberg +Date: Fri May 8 17:04:47 2020 +0200 + + packages/core: remove bonus file + +commit c723fc33e5c2ea88ba7ee2ab96a0e5e06b49f5ec +Author: Patrik Oldsberg +Date: Fri May 8 17:04:31 2020 +0200 + + packages/core: fix src-relative import + +commit 9cd104a1030635974ddf793187c6dd5ca18fc48f +Merge: d0066a2dd9 520503b85c +Author: Ivan Shmidt +Date: Fri May 8 16:48:45 2020 +0200 + + Merge branch 'master' of github.com:Nek/backstage + +commit d0066a2dd9f12f08fd0dd4330243564fa01c9dff +Author: Ivan Shmidt +Date: Fri May 8 16:48:11 2020 +0200 + + feat: plugin description + +commit 520503b85c3c315fbd2259a7782a32f29aaf40b5 +Author: Nikita Nek Dudnik +Date: Fri May 8 16:34:07 2020 +0200 + + Fix tests failing on image import + +commit f3c42578c4c484338fb72655d298cfb953158825 +Author: Nikita Nek Dudnik +Date: Fri May 8 15:59:50 2020 +0200 + + Fix linting + +commit d182818081c1270441289b4f395ce751582cd451 +Author: Nikita Nek Dudnik +Date: Fri May 8 15:41:27 2020 +0200 + + Fix linting + +commit 158c38b850cb73896595c070f42b33d183e9f044 +Author: Nikita Nek Dudnik +Date: Fri May 8 15:19:36 2020 +0200 + + Fix linting + +commit 7242c1b15552c9c21b70fda9e8a9c190375d1310 +Author: Nikita Nek Dudnik +Date: Fri May 8 15:10:15 2020 +0200 + + Fix linting + +commit f913777de9677595cbe0f709713e0cf6ddddf467 +Merge: ad1e2fec2b 7f06008496 +Author: Patrik Oldsberg +Date: Fri May 8 16:06:15 2020 +0200 + + Merge pull request #761 from spotify/rugvip/adiff + + plugins: almost fully sync plugins with templates + +commit ad1e2fec2b1ce807fe48433d2b1cd9bd37682517 +Merge: 66d056a46c fca8b3211e +Author: Patrik Oldsberg +Date: Fri May 8 16:05:45 2020 +0200 + + Merge pull request #764 from spotify/rugvip/pdocs + + packages/cli: update plugin template README to explain next steps and plugin:serve + +commit 66d056a46c53dbec0a1f4e31da725b9f1992d8e7 +Merge: fa7001007d c615ba09c4 +Author: Patrik Oldsberg +Date: Fri May 8 16:05:34 2020 +0200 + + Merge pull request #763 from spotify/rugvip/pserve + + packages/cli: update templates to include plugin:serve setup + +commit fa7001007d20bfd711e0c2cc721138359247304c +Merge: 298c6979e7 8fa65fc519 +Author: Patrik Oldsberg +Date: Fri May 8 16:05:24 2020 +0200 + + Merge pull request #760 from spotify/rugvip/pdiff + + plugins: added diff command to all plugins and templates + +commit 6de6c71eafbe7ce826cf70bd9ac1be126ffd79c5 +Author: Ivan Shmidt +Date: Fri May 8 15:03:42 2020 +0200 + + fix: pr fixes + +commit 36b0dc849c35237e7a22128deebe516181ecf506 +Author: Patrik Oldsberg +Date: Fri May 8 14:59:58 2020 +0200 + + packages/cli: avoid removing empty lines in remove-plugin + +commit fca8b3211ef5067b6ce6eaef273dfa078b0e8a5f +Author: Patrik Oldsberg +Date: Fri May 8 14:08:15 2020 +0200 + + packages/cli: update plugin template README to explain next steps and plugin:serve + +commit e4e5c02ed52a38430b4a0a95f5c7401c03831041 +Author: Ivan Shmidt +Date: Fri May 8 14:18:17 2020 +0200 + + fix: some leftovers + +commit 298c6979e78d4e845e2250e71a2bc16f3dcc65b5 +Merge: 91963eb572 1afd6c7d92 +Author: Patrik Oldsberg +Date: Fri May 8 14:09:14 2020 +0200 + + Merge pull request #759 from spotify/rugvip/template-deps + + packages/cli: update templates dependencies + +commit 91963eb5727b7177ef47bddad4d885e7f191e1e6 +Merge: bf4ad8d84f 53b9c0766d +Author: Fredrik Adelöw +Date: Fri May 8 14:06:07 2020 +0200 + + Merge pull request #762 from spotify/freben/moved + + Move the plugin init into their own files to keep index clean + +commit 53b9c0766deb5305cb20ad54f1d70d4a42fa451e +Author: Fredrik Adelöw +Date: Thu May 7 16:10:05 2020 +0200 + + Move the plugin init into their own files to keep index clean + +commit c615ba09c45b04e5d9d398a356346130bb7c11ec +Author: Patrik Oldsberg +Date: Fri May 8 13:39:06 2020 +0200 + + packages/cli: update templates to include plugin:serve setup + +commit 8fa65fc5196698baafa3e2c3c2ebb974d3442918 +Author: Patrik Oldsberg +Date: Fri May 8 13:19:09 2020 +0200 + + plugins: added diff command to all plugins and templates + +commit 7f060084962fc86d722303ab8e0f6cf9e9e86400 +Author: Patrik Oldsberg +Date: Fri May 8 13:24:46 2020 +0200 + + plugins: almost fully sync plugins with templates + +commit bf4ad8d84fc97058d03ece9a5fd2948cfe229de6 +Merge: 8b6d05abbf d568edb876 +Author: Patrik Oldsberg +Date: Fri May 8 13:25:28 2020 +0200 + + Merge pull request #758 from spotify/rugvip/diffcheck + + packages/cli: make plugin:diff --check output all errors + +commit 1afd6c7d925e4ad90872163c00d4be233f8debfc +Author: Patrik Oldsberg +Date: Fri May 8 13:09:31 2020 +0200 + + packages/cli: update templates dependencies + +commit 8b6d05abbfc24455c8fccf4b60012a8b6f015761 +Author: Stefan Ålund +Date: Fri May 8 13:07:36 2020 +0200 + + Adjust header label spacing (#756) + +commit dbf6b462bc8978da491bea3d1f56645584f8e3a3 +Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> +Date: Fri May 8 13:06:36 2020 +0200 + + build(deps): bump webpack from 4.42.0 to 4.43.0 (#744) + + Bumps [webpack](https://github.com/webpack/webpack) from 4.42.0 to 4.43.0. + - [Release notes](https://github.com/webpack/webpack/releases) + - [Commits](https://github.com/webpack/webpack/compare/v4.42.0...v4.43.0) + + Signed-off-by: dependabot-preview[bot] + + Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> + +commit d568edb87663c825aad5594d7f9a241c03caafa4 +Author: Patrik Oldsberg +Date: Fri May 8 13:02:29 2020 +0200 + + packages/cli: make plugin:diff --check output all errors + +commit 7474a67738ca3c16b31e44fac5f330a9f980625f +Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> +Date: Fri May 8 12:12:32 2020 +0200 + + build(deps): bump ora from 4.0.3 to 4.0.4 (#745) + + Bumps [ora](https://github.com/sindresorhus/ora) from 4.0.3 to 4.0.4. + - [Release notes](https://github.com/sindresorhus/ora/releases) + - [Commits](https://github.com/sindresorhus/ora/compare/v4.0.3...v4.0.4) + + Signed-off-by: dependabot-preview[bot] + + Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> + +commit bd461b94c9fea575026df484303a59522396fc2b +Merge: 2830369c52 c6a4d74cce +Author: Ivan Shmidt +Date: Fri May 8 09:31:07 2020 +0200 + + Merge branch 'master' of github.com:spotify/backstage + +commit 2830369c52a3d8c53141b18fbb4c9d51b52d3775 +Author: Ivan Shmidt +Date: Fri May 8 09:19:14 2020 +0200 + + refactor: clean comments + +commit a8495a37bb012b954eb6665434272b65ca56aa33 +Merge: e88b290b9b cb64acdf82 +Author: Nikita Dudnik +Date: Fri May 8 09:12:19 2020 +0200 + + Merge pull request #9 from Nek/circleci-plugin + + Circleci plugin + +commit c6a4d74ccec320ed398c7babe8e6985aeed7282a +Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> +Date: Fri May 8 08:30:34 2020 +0200 + + build(deps-dev): bump @storybook/addon-actions from 5.3.17 to 5.3.18 (#747) + + Bumps [@storybook/addon-actions](https://github.com/storybookjs/storybook/tree/HEAD/addons/actions) from 5.3.17 to 5.3.18. + - [Release notes](https://github.com/storybookjs/storybook/releases) + - [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md) + - [Commits](https://github.com/storybookjs/storybook/commits/v5.3.18/addons/actions) + + Signed-off-by: dependabot-preview[bot] + + Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> + +commit e44125e66629b3b555eb16916958c5ada99b508c +Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> +Date: Fri May 8 08:28:10 2020 +0200 + + build(deps-dev): bump @types/testing-library__jest-dom (#743) + + Bumps [@types/testing-library__jest-dom](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/testing-library__jest-dom) from 5.0.3 to 5.0.4. + - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) + - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/testing-library__jest-dom) + + Signed-off-by: dependabot-preview[bot] + + Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> + +commit da53c87fb77cd265cfcdd3e4637c04024ae52252 +Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> +Date: Fri May 8 06:14:49 2020 +0000 + + build(deps): bump fs-extra from 8.1.0 to 9.0.0 + + Bumps [fs-extra](https://github.com/jprichardson/node-fs-extra) from 8.1.0 to 9.0.0. + - [Release notes](https://github.com/jprichardson/node-fs-extra/releases) + - [Changelog](https://github.com/jprichardson/node-fs-extra/blob/master/CHANGELOG.md) + - [Commits](https://github.com/jprichardson/node-fs-extra/compare/8.1.0...9.0.0) + + Signed-off-by: dependabot-preview[bot] + +commit cb64acdf82ead8882d94c652bfcee2bdb135a777 +Author: Ivan Shmidt +Date: Fri May 8 00:02:31 2020 +0200 + + fix: readme + +commit ad353f859f797c239d1d0446d748ddb80b1d19f0 +Author: Ivan Shmidt +Date: Thu May 7 23:56:05 2020 +0200 + + feat: readme + +commit 563148998e25c70098ba5337faef907da117fbee +Author: Ivan Shmidt +Date: Thu May 7 23:26:18 2020 +0200 + + feat: good plugin state + +commit b8429894566cc5fc38a85afcc8c0de0a61b577c4 +Author: Ivan Shmidt +Date: Thu May 7 22:22:38 2020 +0200 + + feat: total upgrade + +commit fc9cfa0c755d11ca7ec1dfdb1f9cb0b780af00b6 +Author: Ivan Shmidt +Date: Thu May 7 17:40:32 2020 +0200 + + feat: settings optimizations + +commit d19c17830cb203f51e9ae3ca6f02f469e11f958a +Author: Nikita Nek Dudnik +Date: Thu May 7 17:27:28 2020 +0200 + + Fix things + +commit 50a5c52a359470d3b2850c8e9ebc6013ae609594 +Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> +Date: Thu May 7 17:12:36 2020 +0200 + + build(deps-dev): bump @types/testing-library__jest-dom (#737) + + Bumps [@types/testing-library__jest-dom](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/testing-library__jest-dom) from 5.0.2 to 5.0.3. + - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) + - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/testing-library__jest-dom) + + Signed-off-by: dependabot-preview[bot] + + Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> + +commit 85e5e1f70e3f5198fccb35096731d1f7c7844e86 +Author: Ivan Shmidt +Date: Thu May 7 17:02:27 2020 +0200 + + feat: builds + +commit 2e475ff00a3ada7534a77dbccf65a62c84dbc380 +Author: Wesley Yee +Date: Thu May 7 10:42:55 2020 -0400 + + Fix: Add initial stepper step to step history (#740) + +commit fa05620b45c41bb55fab17604bc4742fa5907449 +Author: Ivan Shmidt +Date: Thu May 7 15:46:01 2020 +0200 + + fix: settings page works + +commit 74e561812c800b784c3070f9a7c217bb764cd026 +Author: Nikita Nek Dudnik +Date: Thu May 7 15:31:05 2020 +0200 + + Fix persistance + +commit f60b6df5558a41dde86eeeb0f2b6da43ffc9c962 +Author: Ivan Shmidt +Date: Thu May 7 15:23:55 2020 +0200 + + feat: destroyed everything v2 + + Co-authored-by: Nikita Dudnik + +commit 7f00512d93771ba10a653b98359b185e8d2397ec +Author: Nikita Nek Dudnik +Date: Thu May 7 14:31:21 2020 +0200 + + Add Rematch + +commit c8e3b72adcf2f789e1d561dfb8c656af6064264e +Author: Nikita Nek Dudnik +Date: Thu May 7 11:50:35 2020 +0200 + + It's broken but changes are nice + +commit 5dda050152181a5277f1b3a243d066a2b71a6012 +Author: Ivan Shmidt +Date: Thu May 7 11:28:49 2020 +0200 + + feat: destroyed everything + + Co-authored-by: Nikita Dudnik + +commit a24ea32746c5f85287cadb721b4e4bc8e91d0135 +Author: Nikita Nek Dudnik +Date: Thu May 7 11:05:20 2020 +0200 + + Restructure project credentials form + +commit 781472bf3c80368ecf4385a678f6b6775fd4039a +Author: Nikita Nek Dudnik +Date: Thu May 7 10:52:03 2020 +0200 + + Merge + +commit 5c8bd82aa1b2579a0d0503d77302b743deefdaff +Author: Stefan Ålund +Date: Thu May 7 10:49:26 2020 +0200 + + Changed style of Table story (#733) + +commit 4476a14fa1675d15ed688f99f0ca9f0b30f0bdec +Author: Ivan Shmidt +Date: Thu May 7 10:32:32 2020 +0200 + + fix: store vcs settings + +commit 7b3dcff47cd2036eaf708e91726eed1331346657 +Author: Ivan Shmidt +Date: Thu May 7 10:27:06 2020 +0200 + + fix: authed, column sizes + + Co-authored-by: Nikita Dudnik + +commit 8d8183cca62aaab5ec6bea3c436d30440f1b5d67 +Merge: 9e4c8fc8ca c1dd24a100 +Author: Fredrik Adelöw +Date: Thu May 7 09:12:07 2020 +0200 + + Merge pull request #732 from spotify/freben/dev + + OCD time: devDependencies consistently below dependencies :) + +commit 9e4c8fc8ca7902f0936983a7830eede33c6a1e5b +Merge: 9820d14e7f fa8bfc548b +Author: Fredrik Adelöw +Date: Thu May 7 09:11:11 2020 +0200 + + Merge pull request #731 from spotify/freben/lock + + Running yarn on master gives these changes + +commit c1dd24a100a829afb5b747b333c4b1f218c750b5 +Author: Fredrik Adelöw +Date: Thu May 7 08:46:10 2020 +0200 + + OCD time: devDependencies consistently below dependencies :) + +commit fa8bfc548b102ed190c6ad2f8079870e739449c7 +Author: Fredrik Adelöw +Date: Thu May 7 08:39:39 2020 +0200 + + Running yarn on master gives these changes + +commit 9820d14e7f28fa6a98def522880e48f95b9016a0 +Merge: 91101b05f0 6424ce2306 +Author: Fredrik Adelöw +Date: Thu May 7 07:50:56 2020 +0200 + + Merge pull request #730 from spotify/freben/prettier + + Ran prettier everywhere + +commit 6424ce2306dffaf7956213436eef1ad70cf9c113 +Author: Fredrik Adelöw +Date: Thu May 7 07:21:27 2020 +0200 + + Ran prettier everywhere + +commit 91101b05f00c97eb147f0e6b145270f092f82428 +Merge: f9a9e8cea2 d0e245ee3b +Author: Bilawal Hameed +Date: Wed May 6 20:59:24 2020 +0200 + + Merge pull request #698 from spotify/bil/tech-radar-as-a-react-component + + plugin(tech-radar): make configurable as a UI component or Backstage plugin + +commit 6fade5fe8f42c61efdf52a5caaae7a041e0042fd +Merge: 34d5a985a0 bdb02f7de0 +Author: Nikita Dudnik +Date: Wed May 6 17:28:40 2020 +0200 + + Merge pull request #8 from Nek/feat/new-table-make-it-work + + feat: make it work + +commit f9a9e8cea293a1f0c689f1a8da626191b7a1de8f +Author: Stefan Ålund +Date: Wed May 6 17:25:38 2020 +0200 + + Simplify welcome screen (#728) + + * Simplify welcome screen + + * Delete non-used code + + * Review comments + +commit ccee67c33362cffb16a74c6ac0e73d2d00073fd8 +Merge: a8584e7cec 70040b22a7 +Author: Patrik Oldsberg +Date: Wed May 6 17:23:18 2020 +0200 + + Merge pull request #729 from spotify/rugvip/nosrc + + drop support for src-relative imports + +commit bdb02f7de0140313f480a5b8728f77e35323a64f +Author: Ivan Shmidt +Date: Wed May 6 17:21:41 2020 +0200 + + feat: make it work + +commit 70040b22a7de2984aeec21352256f8ba5006c92d +Author: Patrik Oldsberg +Date: Wed May 6 16:38:07 2020 +0200 + + drop support for src-relative imports + +commit 34d5a985a0ce82606453244f19dafeb4bc4bba4b +Author: Ivan Shmidt +Date: Wed May 6 15:57:50 2020 +0200 + + fix: types + +commit e12c69e7f03123ea94cd4e71e946d3ac693c3972 +Merge: 87afc93989 e88b290b9b +Author: Ivan Shmidt +Date: Wed May 6 15:31:13 2020 +0200 + + Merge pull request #7 from Nek/master + + Updates from upstream + +commit e88b290b9b989ceaddd97ace66d689d3c45089e2 +Merge: d56be21187 87afc93989 +Author: Ivan Shmidt +Date: Wed May 6 15:30:38 2020 +0200 + + Merge branch 'circleci-plugin' into master + +commit 87afc93989cfe87bf633ea512ebb25fa82112917 +Merge: c0257cde2a ca7d863d06 +Author: Ivan Shmidt +Date: Wed May 6 15:27:08 2020 +0200 + + Merge pull request #6 from Nek/feature/action-output-table + + Extract CITable rows into components + +commit ca7d863d065c25ce8fd7a8a0c86db6cc50d45c9a +Author: Nikita Nek Dudnik +Date: Wed May 6 15:24:01 2020 +0200 + + Extract CITable rows into components + +commit d56be2118726e6027059076ee4a74e7efdb3704f +Merge: 49049665d4 a8584e7cec +Author: Ivan Shmidt +Date: Wed May 6 15:23:18 2020 +0200 + + Merge pull request #5 from spotify/master + + Sync forks + +commit a8584e7ceca16c6ce33acf13d1d1485296aa73f8 +Merge: 425cf93c08 5961be5861 +Author: Fredrik Adelöw +Date: Wed May 6 15:10:01 2020 +0200 + + Merge pull request #727 from spotify/freben/winston + + Simplify logger creation in tests + +commit 5961be58617f7c8c648c40a42c644a32f0913c5d +Author: Fredrik Adelöw +Date: Wed May 6 13:30:58 2020 +0200 + + Simplify logger creation in tests + +commit 425cf93c08d8190412922bf10c8bcd0b3f14c561 +Author: Sebastian Qvarfordt +Date: Wed May 6 12:58:34 2020 +0200 + + Replacing SortableTable and a few MUI tables with new Table component (#722) + + * Befind work of replacing tables with new Table component + + * Removed test plugins and fixed test + + * Fixed lint issue + + * Removed toolbar from lighthouse audit page + + * Moved column out of auditstables render function, no no interation with useInterval + +commit c0257cde2a5dc48a7ef7ef8e8408d84fa957d5cf +Merge: 7900efbb9e 684408f0ff +Author: Nikita Dudnik +Date: Wed May 6 12:42:23 2020 +0200 + + Merge pull request #4 from Nek/feat/lazylog + + feat: lazylog + +commit 684408f0ffc01cb85be8f67c3b129f5a17b3cd3c +Author: Ivan Shmidt +Date: Wed May 6 12:37:26 2020 +0200 + + feat: lazylog + +commit 7900efbb9e1c1addb00d8e1d593a36318b2d1708 +Merge: 484baa6521 0d8abf7ea7 +Author: Nikita Dudnik +Date: Wed May 6 11:31:57 2020 +0200 + + Merge pull request #2 from Nek/feature/log-view + + Feature/log view + +commit 0d8abf7ea78385fad0520d1adf875fdb259e7c0e +Merge: 30370d711d 6b44dd110c +Author: Nikita Dudnik +Date: Wed May 6 11:30:05 2020 +0200 + + Merge pull request #3 from Nek/feat/new-routing + + feat: routing -> plugin routing + +commit 6b44dd110c5ca3b009f15b4f8e6cac6c95f061b2 +Author: Ivan Shmidt +Date: Wed May 6 11:18:49 2020 +0200 + + feat: routing -> plugin routing + +commit 30370d711d96c40a9284ebcd9610103b162acf26 +Merge: 8a9241619e 484baa6521 +Author: Ivan Shmidt +Date: Wed May 6 11:04:28 2020 +0200 + + Merge branch 'circleci-plugin' of github.com:Nek/backstage into feature/log-view + +commit 484baa65219e49d5bda526f4992fcea40beaa403 +Merge: 7bda356234 633f592f81 +Author: Nikita Dudnik +Date: Wed May 6 10:46:43 2020 +0200 + + Merge pull request #1 from Nek/feat/proxy-devserver + + feat: move proxy to devserver + +commit 633f592f81151e47dd3568e5c01dae7632ee9285 +Author: Ivan Shmidt +Date: Wed May 6 10:31:49 2020 +0200 + + feat: move proxy to devserver + +commit 5b0e808204544a2274323f54428d8cdb7da457fd +Author: Jose Balanza Martinez <62359443+braulio-balanza@users.noreply.github.com> +Date: Wed May 6 00:36:10 2020 -0500 + + Structured metadata list color fix and update to typescript DRAFT (#656) + + * Fix Structure Metadata Table and change to .tsx + + * Change StructuredMetadataTable to typescript + + * Oops forgot to actually fix the font color + + * Fixing some more type issues + + * changed padding to theme.spacing() + + * fixes some more types + +commit 8a9241619ef1516bbb4d58a75166b02310b00382 +Author: Nikita Nek Dudnik +Date: Tue May 5 22:40:43 2020 +0200 + + Implement logs visualization + +commit ddff830b04320d4c67bc5aadbb0b9020a4715b5a +Author: Wesley Yee +Date: Tue May 5 15:27:35 2020 -0400 + + Rewrite sequence component (#682) + + * Rework sequence component to be more declarative and simple + * Renamed to SimpleStepper + +commit 1fae5590545cecb23679190570eb81922cf80866 +Merge: eeb2646226 1401141505 +Author: Fredrik Adelöw +Date: Tue May 5 21:06:25 2020 +0200 + + Merge pull request #723 from spotify/freben/testerr + + Forgot to add the error tests + +commit eeb264622632de5bac5125aee9ef5b7318cfbcab +Merge: 2327cd121a a835294a70 +Author: Patrik Oldsberg +Date: Tue May 5 18:36:47 2020 +0200 + + Merge pull request #721 from OrkoHunter/OrkoHunter/#718-fail-storybook-build-on-warnings + + Fail Storybook build if there are Webpack compilation warnings + +commit 14011415052fe818f9f02f0af43ad1ccd8866479 +Author: Fredrik Adelöw +Date: Tue May 5 16:52:31 2020 +0200 + + Forgot to add the error tests + +commit 950830571e21fd0ae49e9816e6027e18ce0d0985 +Author: Nikita Nek Dudnik +Date: Tue May 5 16:44:39 2020 +0200 + + Add ugly log visualization + +commit a835294a705b484d752cdcd97df3d46247fe950a +Author: Himanshu Mishra +Date: Tue May 5 22:49:27 2020 +0900 + + Add comment about Webpack plugin to fail builds on warnings + +commit 2327cd121a903c6fa96b456abec142a95f5e8de0 +Merge: ff1b853613 b36bf68d7d +Author: Fredrik Adelöw +Date: Tue May 5 14:25:09 2020 +0200 + + Merge pull request #720 from OrkoHunter/OrkoHunter/#708-fix-flaky-e2e-test + + [CLI] Fix flaky end-to-end tests + +commit b36bf68d7da20ecc5d7bf1dd886611aaeaafb5f9 +Author: Himanshu Mishra +Date: Tue May 5 20:42:44 2020 +0900 + + 240 attempts should not just be 239 :D + +commit 5d5d093b20185f8464b5a410507c0e8e9bbb681d +Author: Himanshu Mishra +Date: Tue May 5 20:38:57 2020 +0900 + + Set maxFindTextAttempts as a function argument + +commit f40ccc38a4525bc559b33f2ec779d770df1d2d90 +Author: Himanshu Mishra +Date: Tue May 5 20:25:45 2020 +0900 + + Fix syntax to check if an element is in a set + +commit b2b91013eb7dc73dec12a83a06c91419370d2797 +Author: Himanshu Mishra +Date: Tue May 5 20:16:13 2020 +0900 + + Fix bug in warnings whitelist check + +commit 82b6f1e4cba98a2b86c8f303bf95213259831428 +Author: Himanshu Mishra +Date: Tue May 5 20:09:03 2020 +0900 + + Retry search text for any type of error + +commit 9ea93173f0f7b996e1c49fbc962a831053482461 +Author: Himanshu Mishra +Date: Tue May 5 20:07:43 2020 +0900 + + Do browser.visit again after getting error in finding text + +commit fe088038d6e9f1592d08f1f6c4088fa89ebab72a +Author: Himanshu Mishra +Date: Tue May 5 20:06:16 2020 +0900 + + Better variable names + attemptsToLoad -> loadAttempts + maxAttempts -> maxLoadAttempts + attemptsToSearchText -> findTextAttempts + maxAttemptsToSearchText -> maxFindTextAttempts + +commit 20ef06f6f30d9c3e549e497ffe08b2eb41a2cfa8 +Author: Nikita Nek Dudnik +Date: Tue May 5 12:46:43 2020 +0200 + + Add detailed view page with a list of build steps + +commit ff1b85361393c8895d3adf26906f92e680ffc705 +Author: Stefan Ålund +Date: Tue May 5 12:37:26 2020 +0200 + + Add link to Demos site in README (#719) + +commit a984c9cf22258b2e2fab715a3a671ed77e63cede +Author: Himanshu Mishra +Date: Tue May 5 19:02:37 2020 +0900 + + Ignore a set of warnings during storybook webpack build + +commit 9e7bc707280740d5c78aefcb10b9685bafc68fa6 +Author: Nikita Nek Dudnik +Date: Tue May 5 11:23:37 2020 +0200 + + Restructure pages + +commit 4f32c5a5d34e70b9c36081b1f16613c6105b5fd1 +Merge: 6d92a57bbc 41d879931d +Author: Patrik Oldsberg +Date: Tue May 5 11:06:16 2020 +0200 + + Merge pull request #702 from spotify/rugvip/pdiff + + package/cli: added plugin:diff command + +commit 6d92a57bbc8f10658bc20365ce69bd365f3d249f +Merge: 1063279b4a 26094f82e3 +Author: Ben Lambert +Date: Tue May 5 10:47:01 2020 +0200 + + Merge pull request #717 from spotify/blam/scaffolder + + plugin(scaffolder): Bring up to date with the latest backend template + +commit a93f194cb6526f66d88420d15ecfdf888a3ad28f +Author: Himanshu Mishra +Date: Tue May 5 17:28:43 2020 +0900 + + Break from loop if the test is successful + + Making this mistake since while loops were created :( + +commit 26094f82e313846430c61c5376d7c661b4229fd4 +Author: blam +Date: Tue May 5 10:22:27 2020 +0200 + + chore: prettier is now automagically enabled, and fixing some pr review comments + +commit d050b1c79175bb1c38d4d55bb383402f52ee6d84 +Author: Himanshu Mishra +Date: Tue May 5 17:10:14 2020 +0900 + + Fix storybook webpack warning because of TS types + +commit fe2f7265d3b72f8d2d4ca87214ce1ecc460d499b +Author: Himanshu Mishra +Date: Tue May 5 15:27:16 2020 +0900 + + Add retries to find the text on page for e2e tests + + The page may not be fully loaded on the first go. Hence, we wait for some time and then retry. + +commit f3f1cdb063491a2638d08ff54f7ad3d70e5a8fbe +Author: Himanshu Mishra +Date: Tue May 5 16:57:15 2020 +0900 + + Temp commit to trigger Storybook build warning + +commit 706821337e05fecf0b2f60086a8791f12bc98261 +Author: Himanshu Mishra +Date: Tue May 5 16:50:27 2020 +0900 + + Allow local storybook build even if there are warnings + +commit 23f083a19b43be3bfded194d9a825654bc625773 +Author: Himanshu Mishra +Date: Tue May 5 16:42:14 2020 +0900 + + Fail Storybook build if there are webpack compilation warnings + + Create a Webpack plugin which looks for warnings at the end of the build. + Reference doc: https://webpack.js.org/contribute/writing-a-plugin/ + +commit 7bda356234cc4d7dd8fbc271a77dffa47fd45a6f +Author: Ivan Shmidt +Date: Mon May 4 23:11:59 2020 +0200 + + feat: start:backend package.json + +commit 21ac45698a8804ce5b74857c22090097f1845699 +Author: Ivan Shmidt +Date: Mon May 4 23:10:14 2020 +0200 + + feat: visual adjustments + +commit 08a3033942a6d3516305333b5d9166e377ac3330 +Author: Ivan Shmidt +Date: Mon May 4 22:42:48 2020 +0200 + + feat: react-router links, some ui edits + +commit f028801f39602cb82eed6ea8ca67b50e2ca1a5de +Author: Ivan Shmidt +Date: Mon May 4 21:41:38 2020 +0200 + + feat: retry + +commit 31d05b1f922ce0b7ea0fe03b40a96a8ca1e8b75b +Author: Ivan Shmidt +Date: Mon May 4 20:58:39 2020 +0200 + + feat: circleCI backend proxy + +commit 1063279b4a2411f8fbda175793d4c30047fb231f +Merge: 4bfadc1b7e 5363006759 +Author: Fredrik Adelöw +Date: Mon May 4 20:58:30 2020 +0200 + + Merge pull request #713 from OrkoHunter/OrkoHunter/fix-storybook-build-warning + + Fix Storybook compilation warning + +commit e3ab86103852fa2a663b06379906ba492f4b234a +Author: blam +Date: Mon May 4 20:54:59 2020 +0200 + + chore: fixing eslint config so we can use some great optional?.chaining?.stuff + +commit 4bfadc1b7e6f8c8d637f9cb8cd9e6c60aed9ab6d +Author: Stefan Ålund +Date: Mon May 4 20:52:41 2020 +0200 + + Add disclaimer to Create view (#715) + +commit 1af6cbea8da086c050e59c54c0ec9aeeab2998c6 +Author: blam +Date: Mon May 4 20:39:13 2020 +0200 + + feat(scaffolder): Bring up to date with the latest changes in the inventory service + +commit ef210545c98479c5891191048e6b5a602577d82e +Merge: cc8dbdfe5e 168db0fe9c +Author: blam +Date: Mon May 4 19:40:18 2020 +0200 + + Merge branch 'master' of github.com:spotify/backstage into blam/scaffolder + + * 'master' of github.com:spotify/backstage: + Rename Scaffolder -> Create (#712) + Set the initial Storybook theme to light (#711) + It's InputError then + Even denser errors + Better errors + Show stack in dev + [backend] use common error types + Update Discord link in design docs, fix #672 (#710) + [inventory] move out inventory instantiation + renaming + Table component with filter and search (#600) + [Storybook] Improve Status stories (#699) + Fix blinking animation bug for Status Running component (#706) + packages/cli: add lib ES2019 to common tsconfig + +commit 5363006759da372831a871f43162e8206d9351ac +Author: Himanshu Mishra +Date: Tue May 5 02:37:00 2020 +0900 + + Fix Storybook compilation warning + + Typescript import and export has to be explicit. + Related issue #700 + Related PR #701 + +commit 168db0fe9c5a7fb45b05e00fb19694fa4565d77a +Author: Stefan Ålund +Date: Mon May 4 19:37:03 2020 +0200 + + Rename Scaffolder -> Create (#712) + + * Rename Scaffolder -> Create + + * Use Typography + +commit 8354d4a104e29e5bb23db6e556028e4a0dfbbb2d +Author: Himanshu Mishra +Date: Tue May 5 02:32:47 2020 +0900 + + Set the initial Storybook theme to light (#711) + + This fixes the inconsistency if user's OS/Browser theme is set to Dark mode. + +commit 1d1589680d2e3a5cbdd6ba39bbac843f1c3c57a6 +Merge: 70e2a62155 9724084186 +Author: Fredrik Adelöw +Date: Mon May 4 16:49:35 2020 +0200 + + Merge pull request #709 from spotify/freben/errors + + [backend] use common error types + +commit 39f500a0599d5c3c099c1d6e5efa04f423dd52de +Merge: f708802711 a6dcc9b2e3 +Author: Nikita Nek Dudnik +Date: Mon May 4 16:49:07 2020 +0200 + + Merge branch 'circleci-plugin' of github.com:Nek/backstage into circleci-plugin + +commit 9724084186b684053b76d8ab7393960f22545dd3 +Author: Fredrik Adelöw +Date: Mon May 4 16:42:40 2020 +0200 + + It's InputError then + +commit 129991fcfd4e2faf66ae1b3f334fcf39d0378bf5 +Author: Fredrik Adelöw +Date: Mon May 4 16:34:17 2020 +0200 + + Even denser errors + +commit e5529c249ba06b2341990b34ceac7d322e483915 +Author: Fredrik Adelöw +Date: Mon May 4 15:54:07 2020 +0200 + + Better errors + +commit 1b4b98cd053770fac1f2906604ed171e2c700bdf +Author: Fredrik Adelöw +Date: Mon May 4 13:06:43 2020 +0200 + + Show stack in dev + +commit 48b4a86a97fe36c5bfd6e4f7c1ce1b849728a977 +Author: Fredrik Adelöw +Date: Mon May 4 11:19:23 2020 +0200 + + [backend] use common error types + +commit 70e2a62155c02e96a3db9dfe424c20cef4c099ee +Merge: 8c65917914 7c6b7b9b94 +Author: Fredrik Adelöw +Date: Mon May 4 16:05:32 2020 +0200 + + Merge pull request #707 from spotify/freben/iteraaaaate + + [inventory] move out inventory instantiation + renaming + +commit a6dcc9b2e31c2dc17a2902382ca28033a4f23ffd +Author: Ivan Shmidt +Date: Mon May 4 15:48:07 2020 +0200 + + feat: settings page + +commit f7088027118212bf6f41488afb72cdad1990b746 +Author: Nikita Nek Dudnik +Date: Mon May 4 14:53:01 2020 +0200 + + Move owner/repo form into CircleCIFetch component + +commit cf963ceae8258e00abda8730324f3f4139649d21 +Author: Nikita Nek Dudnik +Date: Mon May 4 13:46:15 2020 +0200 + + Add owner and repo options to authenticate method + +commit 8c659179145529d1db69e1fcecfd6d3f958924a9 +Author: Niklas Ek +Date: Mon May 4 12:15:22 2020 +0200 + + Update Discord link in design docs, fix #672 (#710) + +commit 7c6b7b9b94b3ee43c47f9fa7c8dcfd261de7067a +Author: Fredrik Adelöw +Date: Fri May 1 22:31:54 2020 +0200 + + [inventory] move out inventory instantiation + renaming + +commit 190f11c8f721bb78b2b2aa632f6453df753a8d8e +Author: Sebastian Qvarfordt +Date: Mon May 4 11:10:35 2020 +0200 + + Table component with filter and search (#600) + + * Initial table component with storybook example + + * Moved dependencies to package/core + + * Removed dependency to @backstage/core from base package.json + + * Clean up some examples and remove type from columns, replacing with property align instead + + * Removed more unused stuff and added toggle for filter input + + * Fixed some lint issues + + * Added example with material-table + + * Convert column array passed into MaterialTable Backstage component into MT column array. Allow multiple values in one cell + + * Removed subheader from MT + + * Nicer double value cell + + * Added custom sorting to example + + * Cleaned up stories a bit + + * Setting field instead of customSort + + * Improve styling. Still needs better theme integration + + * Using more colors from theme + + * Fixed typing issue + + * Removed react-table implementation and cleaned up material-table implementation + + * Fixed some type issues + + * Fixed lint issues + +commit 031a4356f15cea2428055ac7f398b2c0d87c172a +Author: Stefan Ålund +Date: Mon May 4 11:09:30 2020 +0200 + + [Storybook] Improve Status stories (#699) + + * [Storybook] Imrove Status stories + + * Remove duplicate classes + +commit 3b2aeae05a508f6253808ec118dafd2421362449 +Author: Himanshu Mishra +Date: Mon May 4 13:34:08 2020 +0900 + + Fix blinking animation bug for Status Running component (#706) + + * Refer to keyframe as a material-ul variable + + https://material-ui.com/guides/migration-v3/\#styles + + * Update background color of Status + + The background color should match with the theme's background color. + +commit c4e0e7ed26f662412af7435dbb79a9896af66c51 +Merge: 7472e9a5c2 47d5d8da4f +Author: Patrik Oldsberg +Date: Sun May 3 15:58:34 2020 +0200 + + Merge pull request #703 from spotify/rugvip/es2019 + + packages/cli: add lib ES2019 to common tsconfig + +commit cc8dbdfe5e085189c5149a531f123abc44425f10 +Merge: 31c4785cc0 7472e9a5c2 +Author: blam +Date: Sun May 3 15:46:23 2020 +0200 + + Merge branch 'master' of github.com:spotify/backstage into blam/scaffolder + + * 'master' of github.com:spotify/backstage: + [Plugin] Explore features in Backstage (#696) + [Storybook] Fix Storybook compilation warnings (#701) + Make the inventory backend standalone runnable + +commit 31c4785cc041171abacd5bfb2fae7e1cf4cc61cf +Author: blam +Date: Sun May 3 15:42:53 2020 +0200 + + chore(scaffolder): Updating dependency graph to include docker api + +commit 47d5d8da4fabe4db1cf5f10eb6b1973c81bc8974 +Author: Patrik Oldsberg +Date: Sun May 3 14:26:59 2020 +0200 + + packages/cli: add lib ES2019 to common tsconfig + +commit 41d879931d57f818b6e4efe3d1ea5385f52e2a4c +Author: Patrik Oldsberg +Date: Sun May 3 15:28:06 2020 +0200 + + packages/cli: clearer plugin:diff output for package.json + fix + +commit 7472e9a5c26187522dcc1760bdf32f358065d5d0 +Author: Stefan Ålund +Date: Sun May 3 14:30:51 2020 +0200 + + [Plugin] Explore features in Backstage (#696) + + * Explore plugin + + * Fixed styles and props + + * Real conent + + * Add Lighthouse and fix tests + + * Add menu item + + * Cleanup + + * Change wording + + * Update package.json + + * Remove dead code + + * Update yarn.lock + + * Revert change to CODEOWNERS + + * Reset yarn.lock to master + + * Fix comments + +commit 8e920cada86f8d38d2a16223772d94b124cf8f8c +Author: Patrik Oldsberg +Date: Sun May 3 14:26:29 2020 +0200 + + packages/cli: add newline at the end of package.json during diff + +commit 56ff5d7d97a199572739232dfe748c12c7e4c348 +Author: Patrik Oldsberg +Date: Sun May 3 14:25:36 2020 +0200 + + packages/cli: add --check and --yes flags to plugin:diff + +commit 7d02e1d15c73188310d4b8ee6a0c8f9eed6cfa5e +Author: Patrik Oldsberg +Date: Sun May 3 14:21:20 2020 +0200 + + packages/cli: split diff command implementation into multiple files + +commit 5e5bb5a523a04f8e4a8f355b21f00a56ee3b4740 +Author: Patrik Oldsberg +Date: Sun May 3 14:02:31 2020 +0200 + + packages/cli: make it possible to override prompt func in diff + +commit acb6212b49080c84ee4446ed7e450fbcfa216f73 +Author: Patrik Oldsberg +Date: Sun May 3 13:53:19 2020 +0200 + + packages/cli: add add handler for diff command to ensure files exist + +commit 8ebb45e990c98f803502fd8b36fcd40fcdfcf89b +Author: Patrik Oldsberg +Date: Sun May 3 13:44:24 2020 +0200 + + packages/cli: functional diff command with prompt for updates + +commit 323f6b715a238e4c6a0ad224bd12b46372e95d79 +Author: Patrik Oldsberg +Date: Sun May 3 12:04:17 2020 +0200 + + packages/cli: separate handlers for different template files in diff + +commit 8a16cf7067faea2f9135195cf77ae0f3419d7cf5 +Author: Conal Cosgrove +Date: Sat May 2 20:39:22 2020 +0100 + + [Storybook] Fix Storybook compilation warnings (#701) + + * separate type import/exports + + * update prettier to v2.0 + + * add explicit type import/exports + +commit d0e245ee3b29cf3e7043ad747e42239946757fe5 +Author: Bilawal Hameed +Date: Sat May 2 15:05:41 2020 +0200 + + fix: some incorrectly formatted markdown + +commit 8c1fd6e7d1f6a352caf76fe2176d5d218918ae28 +Author: Bilawal Hameed +Date: Sat May 2 14:45:49 2020 +0200 + + fix: update app to use new Radar API + +commit 27aa58470a4283358b995157ded445ed9ff467da +Author: Bilawal Hameed +Date: Sat May 2 14:40:43 2020 +0200 + + fix: updated docs + +commit a4c05f203fd2dd8006ea1deeb4e3fbecb218ff1f +Author: Bilawal Hameed +Date: Sat May 2 14:40:31 2020 +0200 + + fix: updated tests for RadarPage and RadarComponent + +commit d04855e98afbea5b2e63dafe32f5141a99b029b4 +Author: Bilawal Hameed +Date: Sat May 2 14:40:12 2020 +0200 + + fix: RadarPage uses RadarComponent under the hood + +commit 2c146cc86b3b485f387a52936f2cddf6f3c84d2c +Author: Bilawal Hameed +Date: Sat May 2 14:39:31 2020 +0200 + + fix: rename loadSampleData to getSampleData + +commit ef9e6ba6a8d9bd910bd6e5bbc1ad9cd37c0be613 +Author: Bilawal Hameed +Date: Sat May 2 14:39:07 2020 +0200 + + feature: add RadarComponent and export as TechRadarComponent + +commit e1f4cd0057879db9b1034561680322799979eff1 +Author: Bilawal Hameed +Date: Sat May 2 14:37:37 2020 +0200 + + feature: split tech-radar api to component/plugin props + +commit c348444fa60401474db63dc4b67e75b55ef3b14c +Author: Patrik Oldsberg +Date: Sat May 2 12:16:32 2020 +0200 + + packages/cli: read template and target files for diffing + +commit 8e0ebb66d9fc4a9624f31485fefbf375f4d98288 +Merge: cd156a44c1 92feb76252 +Author: Fredrik Adelöw +Date: Fri May 1 22:30:59 2020 +0200 + + Merge pull request #686 from spotify/freben/inventory-again + + Make the inventory backend standalone runnable + +commit 92feb76252647f0a5fa1681b11f3fc15d08b55fa +Author: Fredrik Adelöw +Date: Thu Apr 30 14:36:25 2020 +0200 + + Make the inventory backend standalone runnable + + And also make a proposed split of how the loggers are handled. + + Now logs look like + + ``` + { + "type": "incomingRequest", + "service": "backstage", + "timestamp": "2020-04-30T14:29:04.002Z", + "message": "...", + "level": "info" + } + ``` + + for requests, and then if the plugin logs something properly + + ``` + { + "type": "plugin", + "service": "backstage", + "plugin": "inventory", + "timestamp": "2020-04-30T14:29:04.002Z", + "message": "...", + "level": "info" + } + ``` + +commit d7bb95b87ab8bc6fac8cece08ff007a9f993cfcb +Author: blam +Date: Fri May 1 18:27:43 2020 +0200 + + refactor: move to globby instead of glob library for nice promises and efficiency! + +commit 4423aa931522dd01aac286685890c95c0787cbd9 +Author: Patrik Oldsberg +Date: Fri May 1 17:54:39 2020 +0200 + + packages/cli: added basic logic for diff to parse out existing plugin state + +commit 7f03d85d91fdcb8d6406f07d1971e97ea0beb113 +Author: Patrik Oldsberg +Date: Fri May 1 17:53:43 2020 +0200 + + packages/cli: added placeholder plugin:diff command + +commit cd156a44c19873dfb505f4bced1667a96c19cb3d +Merge: 38257822c2 b17462af8b +Author: Ben Lambert +Date: Fri May 1 17:52:58 2020 +0200 + + Merge pull request #651 from spotify/blam/scaffolder + + [Plugin] Start of the Scaffolder Plugin + +commit b17462af8b48ae1730593da5aac52d04e35ea64b +Author: blam +Date: Fri May 1 17:35:34 2020 +0200 + + chore(scaffolder): compiled is now .esm not .cjs + +commit fb71dc957cbde7c1db5ee92ac5aed554fe7d0736 +Merge: 3be8104c5b 38257822c2 +Author: blam +Date: Fri May 1 17:19:55 2020 +0200 + + Merge branch 'master' of github.com:spotify/backstage into blam/scaffolder + + * 'master' of github.com:spotify/backstage: + packages/cli: added jest transform for .esm.js files + plugins/graphiql: use dynamic import to load graphiql + packages/cli: target modern browsers and switch output to module + packages/storybook: make local core imports resolve to core src + packages/storybook: use ts-loader for JS too + +commit 38257822c2c78631547e5acca2562f5d6a3b0b12 +Merge: 4c7a9784cc 2068829f4f +Author: Patrik Oldsberg +Date: Fri May 1 16:54:16 2020 +0200 + + Merge pull request #655 from spotify/rugvip/modernize + + packages/cli: target modern browsers and switch output to module + dynamic graphiql import + +commit 2068829f4f94e37a1ac6b003990e7631cad4269a +Author: Patrik Oldsberg +Date: Mon Apr 27 12:59:23 2020 +0200 + + packages/cli: added jest transform for .esm.js files + +commit 85452a02b734f3070bda058e674d66a878157a8f +Author: Patrik Oldsberg +Date: Sun Apr 26 21:32:51 2020 +0200 + + plugins/graphiql: use dynamic import to load graphiql + +commit b87d266c74f6580c0def0268830abcaa2f1345d4 +Author: Patrik Oldsberg +Date: Sun Apr 26 21:10:53 2020 +0200 + + packages/cli: target modern browsers and switch output to module + +commit 4c7a9784cca437c740f4111dc7f71be9ae1717e5 +Merge: e953259871 5448e54e94 +Author: Patrik Oldsberg +Date: Fri May 1 15:52:08 2020 +0200 + + Merge pull request #695 from spotify/rugvip/fmlsb + + packages/storybook: use ts-loader for JS + resolve @backstage/core imports + +commit 5448e54e949d015fa29286397d31ae4f662e88a6 +Author: Patrik Oldsberg +Date: Fri May 1 15:25:03 2020 +0200 + + packages/storybook: make local core imports resolve to core src + +commit db9d9f7f081d3970f87d69af016a767f948be7ba +Author: Patrik Oldsberg +Date: Fri May 1 15:24:12 2020 +0200 + + packages/storybook: use ts-loader for JS too + +commit 3be8104c5be09f4d4d0a0bf91260b79a573189b7 +Author: blam +Date: Fri May 1 04:13:46 2020 +0200 + + chore: woops wrong name here + +commit 7a578fafb1085d4835ee48540f72842243c3039a +Author: blam +Date: Fri May 1 04:02:14 2020 +0200 + + chore: trying to fix the lockfile hoping this works? + +commit c795d6fbbf85157f70e357696543be8503bdf446 +Merge: 89f29c65f9 e953259871 +Author: blam +Date: Fri May 1 03:44:30 2020 +0200 + + Merge branch 'master' of github.com:spotify/backstage into blam/scaffolder + + * 'master' of github.com:spotify/backstage: + 404 page (#681) + packages/core: remove old widget related things + Address comments + Add TabbedCard and CardTab to the exported layouts components + Add a backend-common package with common concerns such as logging + Move backend lint config to cli config + Translate SortableTable to Typescript + +commit e953259871215489f4ef1ea1a2150ea9888dee7e +Author: Emma Indal +Date: Thu Apr 30 21:12:51 2020 +0200 + + 404 page (#681) + + * core: Implemented error page, closes #170 + + * Swap margin to padding + + * more ui work + + * Convert to TypeScript, functioncal components, use useStyles/makeStyles, clean up some styles and use components from material ui + + * fixup + + * Fix lint errors + + * Remove unused theme consumer + + * Decrease max size of image + + * Remove BackstageTheme added by mistake on rebase + + * Add space to text + + * Use BackstageTheme type and change color from palette + + * Add test + + Co-authored-by: Ryan Pannell + +commit 00efbfe87ef481b66b4e8b4570344b77cb5c77f5 +Author: Ivan Shmidt +Date: Thu Apr 30 16:37:07 2020 +0200 + + feat: save token to session storage and read from it + +commit 60828973825e1234faa5180846494d73999abf59 +Author: Ivan Shmidt +Date: Thu Apr 30 16:19:00 2020 +0200 + + feat: proper api flow implementation + +commit da7522b671762590b38a9ecf81718c12db220393 +Merge: fe25dd9d4e fd0d4150f0 +Author: Fredrik Adelöw +Date: Thu Apr 30 14:35:58 2020 +0200 + + Merge pull request #676 from spotify/freben/backend-common + + Add a backend-common package with common concerns such as logging + +commit fe25dd9d4efc22e3061d4d73d6c5bd0e571a907b +Merge: 3ae7021d9c ae0d3994e9 +Author: Patrik Oldsberg +Date: Thu Apr 30 14:13:15 2020 +0200 + + Merge pull request #684 from spotify/rugvip/nema-widgets + + packages/core: remove old widget related things + +commit ae0d3994e98aaf492afd3bd461e73c10ef2dbc85 +Author: Patrik Oldsberg +Date: Thu Apr 30 12:23:30 2020 +0200 + + packages/core: remove old widget related things + +commit a0c9155272a8fbf44550471b0de1778d4de9740a +Author: Nikita Nek Dudnik +Date: Thu Apr 30 11:55:22 2020 +0200 + + feat: build name, status and ID + +commit 564c0954ec08827baeead75a678cf60ea87eb760 +Author: Ivan Shmidt +Date: Thu Apr 30 11:29:43 2020 +0200 + + feat(circleci-plugin): nice table view + +commit fd0d4150f0c9da076f2898c493e9782c7cc1c2c1 +Author: Fredrik Adelöw +Date: Thu Apr 30 10:49:32 2020 +0200 + + Address comments + +commit 3ae7021d9c4a446b8e77dc6706f57b2d460c582d +Merge: ed8729a171 04db160996 +Author: Patrik Oldsberg +Date: Thu Apr 30 00:09:55 2020 +0200 + + Merge pull request #680 from K-Phoen/export-tabbed-card + + Add TabbedCard and CardTab to the exported layouts components + +commit 04db16099620ce481a5e8473b1aa88ace31ad8ef +Author: Kévin Gomez +Date: Wed Apr 29 23:31:59 2020 +0200 + + Add TabbedCard and CardTab to the exported layouts components + +commit cbda9adb450aae3d0e7e24eff4935eaa57485968 +Author: Ivan Shmidt +Date: Wed Apr 29 17:05:29 2020 +0200 + + feat: token input and showing list of builds + +commit ed8729a171faa0a15b336fba6c072d1b7014b72e +Merge: a92f662d88 6d8845e3f9 +Author: Patrik Oldsberg +Date: Wed Apr 29 16:42:59 2020 +0200 + + Merge pull request #654 from Koroeskohr/translate-sortabletable + + Translate SortableTable to Typescript + +commit 6f58e92fc76107f31f86fca2d23ab6a02fc41b25 +Author: Nikita Nek Dudnik +Date: Wed Apr 29 16:34:35 2020 +0200 + + Create plugin draft + +commit 77d48d8794669af0f3fb6f36d59ea46e08b6d553 +Author: Fredrik Adelöw +Date: Wed Apr 29 09:28:50 2020 +0200 + + Add a backend-common package with common concerns such as logging + +commit a92f662d88347a912391b6a6d13dc7d64e3230b5 +Merge: 9ccf3b0623 69a3fa79e7 +Author: Fredrik Adelöw +Date: Wed Apr 29 11:24:27 2020 +0200 + + Merge pull request #670 from spotify/freben/backendlint + + Move backend lint config to cli config + +commit 89f29c65f9a8d169cba8106d4b4595bb4a9666be +Merge: 247e58689b 9ccf3b0623 +Author: blam +Date: Wed Apr 29 11:04:48 2020 +0200 + + Merge branch 'master' of github.com:spotify/backstage into blam/scaffolder + + * 'master' of github.com:spotify/backstage: + add adr log to repository (#665) + +commit 69a3fa79e7fdd4b03a5732ca622b0db02d12005f +Author: Fredrik Adelöw +Date: Tue Apr 28 15:54:34 2020 +0200 + + Move backend lint config to cli config + +commit 9ccf3b06232aca3e1c6d0acb631d231b1c840dfa +Author: eywoon +Date: Wed Apr 29 10:25:44 2020 +0200 + + add adr log to repository (#665) + +commit 247e58689b28eb47cbd954792dc3c407366b448a +Merge: 62b917f41b 48d0c61f2a +Author: blam +Date: Tue Apr 28 22:55:04 2020 +0200 + + Merge branch 'blam/scaffolder' of github.com:spotify/backstage into blam/scaffolder + + * 'blam/scaffolder' of github.com:spotify/backstage: (34 commits) + yarn.lock: bump eslint-plugin-notice + packages/dev-utils: use doc comments + text fix in README + darkMode: fix HorizontalScrollGrid (#666) (#668) + darkMode: fix bottom link (#664) + Add padding for all Stories (#663) + Use useInterval() hook to refetch audit status in lighthouse plugin WIP (#623) + run yarn install against master yarn.lock + changed object to Partial type + adjust getBBox polyfill logic + re-ran yarn.lock + added initial docs + added tests for RadarPage + re-ran yarn install + add polyfill for SVGElement.prototype.getBBox (not supported in JSDOM) + migrated RadarBubble to material-ui styles + migrated RadarEntry to material-ui styles + migrated RadarFooter to material-ui styles + migrated RadarLegend to material-ui styles + migrated RadarGrid to material-ui styles + removed css modules from css + ... + +commit 62b917f41b415c62dde5cf2080ea9b14bcc322df +Author: blam +Date: Tue Apr 28 22:53:59 2020 +0200 + + chore(scaffolder): fixing linting issues in the repo + +commit 48d0c61f2a7f4191f087e2b81c70ab7568c279ff +Merge: 9635983e5a 0922ed2a21 +Author: Ben Lambert +Date: Tue Apr 28 22:46:02 2020 +0200 + + Merge branch 'master' into blam/scaffolder + +commit 9635983e5aa020e79dac61c100b3e2e78d602c1b +Author: blam +Date: Tue Apr 28 22:38:34 2020 +0200 + + feat(scaffolder): adding some more stuff and some initial sample template + +commit 0922ed2a21e6e64e5632889cc5c5b9f49efab13b +Merge: 49049665d4 2f25856a02 +Author: Patrik Oldsberg +Date: Tue Apr 28 19:05:19 2020 +0200 + + Merge pull request #671 from spotify/rugvip/bump-notice + + yarn.lock: bump eslint-plugin-notice + +commit 2f25856a02d82f264590c0d357515fd4ec74c6ea +Author: Patrik Oldsberg +Date: Tue Apr 28 10:51:53 2020 +0200 + + yarn.lock: bump eslint-plugin-notice + +commit 49049665d45eca3ff0b3ef475bd8edf21f9677be +Merge: 6d55420c6e 99f9c6863e +Author: Patrik Oldsberg +Date: Tue Apr 28 16:20:30 2020 +0200 + + Merge pull request #653 from spotify/rugvip/dev-utils + + Add new dev-utils package with createDevApp() to simplify plugin dev setup + +commit 99f9c6863eb3c006c05d24e25f469ee892434a17 +Author: Patrik Oldsberg +Date: Tue Apr 28 14:06:20 2020 +0200 + + packages/dev-utils: use doc comments + text fix in README + +commit 6d55420c6e1bb65c402965be9592f492bee018e7 +Author: Ivan Shmidt +Date: Tue Apr 28 13:53:40 2020 +0200 + + darkMode: fix HorizontalScrollGrid (#666) (#668) + +commit 421a826622c9103d63025168dba4fd669e3c6795 +Author: Stefan Ålund +Date: Tue Apr 28 11:10:10 2020 +0200 + + darkMode: fix bottom link (#664) + + * darkMode: fix bottom link + + * Remove custom styling + +commit e104fb007c288605101c9bb8d5d02915304897f1 +Author: blam +Date: Tue Apr 28 01:06:29 2020 +0200 + + chore: remworking some files after PR comment + +commit 516e105bd850820032c0701f929b2e42151d2bab +Author: Stefan Ålund +Date: Mon Apr 27 22:00:05 2020 +0200 + + Add padding for all Stories (#663) + +commit 96929febac4fe75d9ecaf1e3e7f741e59862411c +Author: blam +Date: Sun Apr 26 03:34:00 2020 +0200 + + chore(scaffolder) fixing likes + +commit 5111ca4f90d5e9a47389d6fb7c29df212cb6ae57 +Author: blam +Date: Sun Apr 26 03:21:32 2020 +0200 + + chore(scaffolder): cleanup + +commit c62c43d12f5e28411c78d7e09da4b270137d2706 +Author: blam +Date: Sun Apr 26 03:10:11 2020 +0200 + + feat(scaffolder): working more on the scaffolder to make it nice + +commit a86f111b97a98f8e23dd5d680923f17f16f4259e +Author: blam +Date: Sun Apr 26 01:57:34 2020 +0200 + + feat(scaffolder): make the scaffolder repository a little more flexible so we can load from multiple sources + +commit 142f57949df92b72c2b9b3b12e49959dd44a0273 +Author: blam +Date: Fri Apr 24 05:49:21 2020 +0200 + + feat: using some of the latest work from @freben to align with the backend plugin strategy + +commit ea880db04a1eb799f0e3fe05598fd9c6c864e052 +Author: Jose Balanza Martinez <62359443+braulio-balanza@users.noreply.github.com> +Date: Mon Apr 27 09:59:52 2020 -0500 + + Use useInterval() hook to refetch audit status in lighthouse plugin WIP (#623) + + * Fix error when using yarn lint + + * Update logic for create app + + * Add eslint-react-hooks + + * Move common utils to utils.ts + + * Add AuditListRow that refetches the audit + + * Fixed Audit state using a react component + + * Change AuditListRow to AuditRow + + * Fixed some eslint-react-hooks warnings + + * Change AuditListRow to AuditRow + + * Merge + + * Fixes tests in AuditListTable.test.tsx + + * Refactored based on freben's review + + * Remove eslint-plugin-react-hooks + +commit 3464ac753612e389fbc24aa10777b34519921c7d +Merge: 924da0e592 539ccc2a7d +Author: Bilawal Hameed +Date: Mon Apr 27 16:01:28 2020 +0200 + + Merge pull request #628 from spotify/bil/add-tech-radar-plugin + + [Plugin] Migrate Tech Radar + +commit 539ccc2a7d2612ff21c479ab1636316a3066d5ce +Author: Bilawal Hameed +Date: Mon Apr 27 15:50:49 2020 +0200 + + run yarn install against master yarn.lock + +commit e7f25aa91b27fd25f521a1890d4aac60c83f94b2 +Author: Bilawal Hameed +Date: Fri Apr 24 17:18:27 2020 +0200 + + changed object to Partial type + +commit e9ba3895a96e26c310829552cd24588e4b2a2784 +Author: Bilawal Hameed +Date: Fri Apr 24 16:57:13 2020 +0200 + + adjust getBBox polyfill logic + +commit bcc997a0bd83edf5f86dc326381fd84dce512c70 +Author: Bilawal Hameed +Date: Fri Apr 24 16:30:31 2020 +0200 + + re-ran yarn.lock + +commit 9fdc99c3e818497c48cd8a43f6e0c2d4257f3361 +Author: Bilawal Hameed +Date: Fri Apr 24 15:26:50 2020 +0200 + + added initial docs + +commit 4faf199f7281c8f76b09ea0616c610df961ba200 +Author: Bilawal Hameed +Date: Fri Apr 24 14:42:19 2020 +0200 + + added tests for RadarPage + +commit f695b485c8602f6768455df0ee1474d8de096ea1 +Author: Bilawal Hameed +Date: Thu Apr 23 17:19:35 2020 +0200 + + re-ran yarn install + +commit e6af811771d16b6cd80b7702092beaff35cc442a +Author: Bilawal Hameed +Date: Fri Apr 24 12:40:06 2020 +0200 + + add polyfill for SVGElement.prototype.getBBox (not supported in JSDOM) + +commit 521015ed26c5a2cd7a98fd61176bddffd9c80f6f +Author: Bilawal Hameed +Date: Fri Apr 24 10:43:47 2020 +0200 + + migrated RadarBubble to material-ui styles + +commit 6b6d31a556d5ce019dd664a540764998fbd6e7d0 +Author: Bilawal Hameed +Date: Fri Apr 24 10:40:54 2020 +0200 + + migrated RadarEntry to material-ui styles + +commit 60f4ca9797de88a9a449ca5307d023dfbde285ed +Author: Bilawal Hameed +Date: Fri Apr 24 10:37:37 2020 +0200 + + migrated RadarFooter to material-ui styles + +commit d09c5332bf01f096c190e25a01ffad5402794e2a +Author: Bilawal Hameed +Date: Fri Apr 24 10:24:19 2020 +0200 + + migrated RadarLegend to material-ui styles + +commit 1c3c6aa2a4b8874b148366e2829113c42c1a470c +Author: Bilawal Hameed +Date: Thu Apr 23 17:17:57 2020 +0200 + + migrated RadarGrid to material-ui styles + +commit c521e175f913e13456987f37ff2d02701aa20bab +Author: Bilawal Hameed +Date: Thu Apr 23 16:56:44 2020 +0200 + + removed css modules from css + +commit 54908acd59889eb4f3d7e9faf1321d09de5afde3 +Author: Bilawal Hameed +Date: Thu Apr 23 16:36:07 2020 +0200 + + fixed linting errors + +commit 02969e44e5f102cca478bdd32c93876e552d7ff4 +Author: Bilawal Hameed +Date: Thu Apr 23 12:49:48 2020 +0200 + + added example implementation + +commit cdcb4144126eead9c554f550d436b4318e706938 +Author: Bilawal Hameed +Date: Thu Apr 23 12:49:33 2020 +0200 + + migrated tech radar from internal implementation + +commit 1660be5f840f69ee62d80ad607f932cb34885107 +Author: Bilawal Hameed +Date: Thu Apr 23 12:46:40 2020 +0200 + + added packages: d3-force, colors, prop-types + +commit 822701684b75aa8467a643d7147e656b3e29e062 +Author: Bilawal Hameed +Date: Thu Apr 23 11:11:28 2020 +0200 + + added skeleton + +commit 924da0e5921cbcb1fbdfd02edce70a9dfb95b51e +Merge: 9831029430 68ef6c9139 +Author: Patrik Oldsberg +Date: Mon Apr 27 12:06:20 2020 +0200 + + Merge pull request #657 from spotify/rugvip/order66 + + packages/cli: fix usage of exec + +commit 68ef6c9139f725d389b7614dca4c2c957236f7bf +Author: Patrik Oldsberg +Date: Mon Apr 27 10:21:29 2020 +0200 + + packages/cli: fix usage of exec + +commit 983102943044f79abe75cb7c54f0b036595e76ef +Merge: ce1825d4db 6fdef8ac9b +Author: Fredrik Adelöw +Date: Mon Apr 27 10:13:43 2020 +0200 + + Merge pull request #636 from spotify/freben/inventory + + Add skeleton for inventory plugin + +commit 6fdef8ac9bab75780c2c092214e02b34d9923b3e +Author: Fredrik Adelöw +Date: Mon Apr 27 09:49:23 2020 +0200 + + Address comments + +commit c89f7d000e4629c6a2fd9c030cfb65096946764d +Author: Fredrik Adelöw +Date: Thu Apr 23 14:42:20 2020 +0200 + + Add skeleton for inventory plugin + +commit 6d8845e3f9c74a2ca64c60624eb3078de74d7cd3 +Author: Victor Viale +Date: Sun Apr 26 17:51:14 2020 +0200 + + Translate SortableTable to Typescript + + This also removes the dependency on recompose :wave: + +commit 5c797e4f5376e294b2cbd77ef97655fdaff50635 +Author: Patrik Oldsberg +Date: Sun Apr 26 14:30:58 2020 +0200 + + packages/dev-utils: default to navigating to the first registered route + +commit 6ab99a2052ce9b852e0fed697cecb44807eee5ae +Author: Patrik Oldsberg +Date: Sun Apr 26 14:23:49 2020 +0200 + + plugins/graphiql: move dev and test utils to devDependencies + +commit e62bd2b4313dec417322b35b635b7005249f6987 +Author: Patrik Oldsberg +Date: Sun Apr 26 14:22:58 2020 +0200 + + plugins/home-page: use dev-utils to set up dev app + +commit b81ebe7e7219868add28e6aaa4a119d752b73b35 +Author: Patrik Oldsberg +Date: Sun Apr 26 14:11:08 2020 +0200 + + packages/dev-utils: refactor to be more like createApp + +commit ce1825d4db5257610ea48d0b61891cd630fffdbd +Author: Jose Balanza Martinez <62359443+braulio-balanza@users.noreply.github.com> +Date: Sun Apr 26 10:06:47 2020 -0500 + + Fix Sequence component not switching background on dark mode (#652) + + * Remove white background fixing dark mode + + * Added vertical padding to content + +commit 84877f6baea52d7f74f6d55130737f52dfa49c1d +Author: Patrik Oldsberg +Date: Sun Apr 26 13:48:26 2020 +0200 + + packages/dev-utils: add test for api factories + +commit 53c0d19e8de3ec46932d2f5ceb84215b7bf88e52 +Author: Patrik Oldsberg +Date: Sun Apr 26 13:38:26 2020 +0200 + + plugins/graphiql: use dev-utils to set up dev serve + +commit a7d8a03e31c2bf8569077861fb7d644053cf1af2 +Author: Patrik Oldsberg +Date: Sun Apr 26 13:37:53 2020 +0200 + + packages: add new dev-utils package + +commit a1831f8c53e3d64a661101b7365e83df1de18fa3 +Author: Patrik Oldsberg +Date: Sun Apr 26 13:16:50 2020 +0200 + + packages/core: add helper for inferring ApiFactory types + +commit 2526eebdf13855ebf862c0e2951b163cdea697dc +Merge: 1746df6ac5 0e78bc1935 +Author: Patrik Oldsberg +Date: Sun Apr 26 14:18:52 2020 +0200 + + Merge pull request #646 from spotify/rugvip/graphiql + + [Plugin] Add GraphiQL Plugin + +commit 1746df6ac5f5aa7ded5a198a06a76660433b9051 +Merge: c17cabd4fc 3dc707c156 +Author: Patrik Oldsberg +Date: Sat Apr 25 20:53:30 2020 +0200 + + Merge pull request #648 from spotify/rugvip/cleandist + + packages: only include dist folder in published packages + +commit c17cabd4fc5d89d190f21397fbb5d80ae97dfbe9 +Merge: 0c40a47992 2f17ffd795 +Author: Patrik Oldsberg +Date: Sat Apr 25 20:21:16 2020 +0200 + + Merge pull request #649 from spotify/rugvip/tupath + + packages/test-utils: update repo path + +commit 2f17ffd7950671720cd2b1e31465208aa7e96130 +Author: Patrik Oldsberg +Date: Sat Apr 25 19:44:45 2020 +0200 + + packages/test-utils: update repo path + +commit 3dc707c1567d268a2ebab405da852f79a5c1082e +Author: Patrik Oldsberg +Date: Sat Apr 25 19:42:43 2020 +0200 + + packages: only include dist folder in published packages + +commit 0c40a47992982fa3af145efd02c7b42086381e74 +Author: Patrik Oldsberg +Date: Sat Apr 25 16:59:54 2020 +0200 + + packages/test-utils-core: fix renderWithEffects (#647) + +commit 0e78bc193563941781bbe4100678fbd8a57d7973 +Author: Patrik Oldsberg +Date: Sat Apr 25 16:47:29 2020 +0200 + + plugins/graphiql: fix GraphiQLBrowser tests + +commit 7897d3488cbda2eb9b83abcc3bab30c0f34094cc +Author: Patrik Oldsberg +Date: Sat Apr 25 16:43:18 2020 +0200 + + plugins/graphiql: update tests for GraphiQLPage + fixes + +commit 24e6178392e21879ad9b5d90d90c93d4d4aa962e +Author: Patrik Oldsberg +Date: Sat Apr 25 15:50:38 2020 +0200 + + plugins/graphiql: Fix typo in README + + Co-Authored-By: Himanshu Mishra + +commit f1b7dc8b31e1b217e9281bbfdec182d237755d72 +Author: Patrik Oldsberg +Date: Sat Apr 25 14:56:04 2020 +0200 + + plugins/graphiql: add publishing config + +commit f2f3b47894756a0195e4ac14580c00af5d4635bd +Author: Patrik Oldsberg +Date: Sat Apr 25 14:45:47 2020 +0200 + + packages/app: remove graphiql plugin + +commit 3063bd07bf4102cc970f8c208f4b5691092bb7bc +Author: Patrik Oldsberg +Date: Sat Apr 25 14:35:09 2020 +0200 + + plugins/graphiql: update README + +commit d8b4a26a76bf18e7f5c056f8247c4be72ee0643c +Author: Patrik Oldsberg +Date: Sat Apr 25 14:34:32 2020 +0200 + + plugins/graphiql: rename GraphQLBrowser to GraphQLEndpoints and simplify method names + +commit 238f7edcf70bd9b62a961d542f8d5d0ed9df7757 +Author: Patrik Oldsberg +Date: Sat Apr 25 14:09:46 2020 +0200 + + yarn.lock: sync with current deps (#645) + +commit f75ff200a4bd208edc12e1d7ef3e01f9c6605278 +Author: Patrik Oldsberg +Date: Sat Apr 25 13:23:42 2020 +0200 + + plugins/graphiql: make tabs a bit more visible + +commit c73872d01203fb62bb9de60ab4297a2bb026c76d +Author: Patrik Oldsberg +Date: Sat Apr 25 12:56:06 2020 +0200 + + plugins/graphiql: separate GraphiQLBrowser component and load endpoints from api + +commit 0f63f63fcc7e5642d8177fd064f4b758849b503b +Author: Patrik Oldsberg +Date: Sat Apr 25 12:55:39 2020 +0200 + + plugins/graphiql: added supply graphql browsing api in dev wrapper + +commit 2a253d2556afccc8b4ba1167faf1f971ee4490f5 +Author: Patrik Oldsberg +Date: Sat Apr 25 12:55:05 2020 +0200 + + plugins/graphiql: update tsconfig for plugin serve + +commit 95341965acc56ce29b745c7dd964acd5754fba48 +Author: Patrik Oldsberg +Date: Sat Apr 25 12:53:50 2020 +0200 + + plugins/graphiql: added graphql browsing api + +commit 3734aeab628fd187f12d0d397d8e3e9fca24c0bd +Author: Patrik Oldsberg +Date: Fri Apr 24 16:28:48 2020 +0200 + + plugins/graphiql: more tests for StorageBucket and fix removeItem + +commit c8ef790e1bb7a8ea5517f61cf1c3deef40b3a668 +Author: Patrik Oldsberg +Date: Thu Apr 23 17:54:58 2020 +0200 + + plugins/graphiql: fix page test + +commit 7ec8e0d0c2c1cbc3a7713a8a1badfc507bcfa167 +Author: Patrik Oldsberg +Date: Thu Apr 23 17:48:34 2020 +0200 + + plugins/graphiql: add tests for StorageBucket + minor fix + +commit 9d080a4dce9dae615b6d0172ce2eb51af7b83d7b +Author: Patrik Oldsberg +Date: Thu Apr 23 17:47:35 2020 +0200 + + plugins/graphiql: add storage buckets to separate storage for different endpoints + +commit dceff8dd2f575671c670a2ff949928c1b78e6f41 +Author: Patrik Oldsberg +Date: Thu Apr 23 15:45:55 2020 +0200 + + plugins/graphiql: add global style override to fix top bar layout issue + +commit c119eb9a9ac3cecbce6ef96c2f0084322f119afc +Author: Patrik Oldsberg +Date: Thu Apr 23 15:45:23 2020 +0200 + + plugins/graphiql: switch graphiql version to next, with TS support + +commit 10b6fd5bcbe0c339690933513bb0085ea175fa4f +Author: Patrik Oldsberg +Date: Thu Apr 23 14:31:57 2020 +0200 + + plugins/graphiql: replace example page with minimal graphiql page + +commit a2491cb378ddaeb795fef7239d90fdcb0e357083 +Author: Patrik Oldsberg +Date: Thu Apr 23 11:48:25 2020 +0200 + + plugins/graphiql: added plugin serve + +commit 9b0d1f5e7b297df1cb93ce2a2a3377b51fad1731 +Author: Patrik Oldsberg +Date: Thu Apr 23 11:38:24 2020 +0200 + + plugins: create new graphiql plugin + +commit 46803998cda95f1fe2147a8476fcd4b713ed87f8 +Merge: 076f44bb15 6e8274969c +Author: Patrik Oldsberg +Date: Fri Apr 24 18:50:39 2020 +0200 + + Merge pull request #621 from spotify/rugvip/plugin-serve + + Make plugin:serve work and add for home-page plugin + fix declaration maps + +commit 076f44bb15b45c493cf91dd01eea7cdf95c3454e +Author: Wesley Yee +Date: Fri Apr 24 12:48:35 2020 -0400 + + Sequence component (#619) + +commit 55c0385dc4f366dd422d60627913db93f22ff4bb +Author: Bilawal Hameed +Date: Fri Apr 24 16:05:36 2020 +0200 + + fix(lighthouse): corrected import in readme (#641) + + * fix(lighthouse): corrected import in readme + + * fix(lighthouse): updated docs in Intro component + +commit 241ee7f43cbbd6eaab5624cc7f1e3c7881721923 +Merge: 723eaa712c dfd44f2d38 +Author: Patrik Oldsberg +Date: Fri Apr 24 13:35:16 2020 +0200 + + Merge pull request #638 from spotify/rugvip/zetypes + + explicit types and remove cypress resolution override + +commit dfd44f2d383bfca740b98ce3f93078a6874825be +Author: Patrik Oldsberg +Date: Thu Apr 23 21:04:17 2020 +0200 + + package: remove cypress resolution override and bump to 4.4.1 + +commit 6e8274969c040057351e990a1e04e11a17322762 +Author: Patrik Oldsberg +Date: Fri Apr 24 12:43:58 2020 +0200 + + packages/cli: make plugin build generate usable declaration maps + +commit 723eaa712c6c4809116052a6df1ec83c10b3068e +Merge: cb4b35708d 1020a93934 +Author: Patrik Oldsberg +Date: Thu Apr 23 23:25:33 2020 +0200 + + Merge pull request #637 from spotify/rugvip/testyles + + packages/cli: default to mocking style imports in tests + +commit 2bbe78a0b90c071efb00132b5f0d594852fc7c30 +Author: Patrik Oldsberg +Date: Thu Apr 23 21:02:35 2020 +0200 + + tsconfigs: be explicit about what types to include in compilation + +commit 1020a93934534ffa40a1ce386fd277ff88df2ac3 +Author: Patrik Oldsberg +Date: Thu Apr 23 17:54:26 2020 +0200 + + packages/cli: default to mocking style imports in tests + +commit cb4b35708dda05aebb25f0ca1c486418223bbd5a +Merge: b55a2adb7e 5037489af8 +Author: Patrik Oldsberg +Date: Thu Apr 23 15:03:42 2020 +0200 + + Merge pull request #635 from spotify/rugvip/no-padding + + packages/core: add noPadding prop to Content + +commit 5037489af8028f49d40c5ad16d956c18aca97243 +Author: Patrik Oldsberg +Date: Thu Apr 23 14:32:27 2020 +0200 + + packages/core: add noPadding prop to Content + +commit b55a2adb7ee8a72c43897cbca5f1994e3f6cd39a +Author: Muhammad Rivki +Date: Thu Apr 23 19:20:53 2020 +0700 + + fix: remove style that override background (#634) + +commit 86a580a235486218eb40fa34023898297de53f4d +Author: Patrik Oldsberg +Date: Thu Apr 23 13:42:17 2020 +0200 + + packages/cli: resolve mjs before js in plugin serve + +commit 933af8d4146ef8d5af2e12db2741b87aa29f6494 +Merge: 0ed6b60277 f807eefb96 +Author: Patrik Oldsberg +Date: Thu Apr 23 13:16:04 2020 +0200 + + Merge pull request #625 from spotify/rugvip/noia + + packages/core: disallow implicit any + +commit baaa1d2f3407feb2b729ffc5b5430aac261275a6 +Author: Patrik Oldsberg +Date: Thu Apr 23 11:10:58 2020 +0200 + + packages/cli: prefix plugin serve paths with target instead of app + +commit f807eefb96c377659a9a0bf0bc8cc54b9afe2d0a +Author: Patrik Oldsberg +Date: Thu Apr 23 11:04:01 2020 +0200 + + packages/core: disallow implicit any + +commit 8777ee7487cf12caf52b847d35661d376aea3e41 +Author: Patrik Oldsberg +Date: Thu Apr 23 11:03:43 2020 +0200 + + packages/core: add missing types for apis + +commit d47d09eeb1261e40431eb5dc4916128ea9bc706f +Author: Patrik Oldsberg +Date: Thu Apr 23 11:03:07 2020 +0200 + + packages/core: add missing types for components + +commit 27f32e9d5671b7fa1b9b1988dddf108fc63d9a77 +Author: Patrik Oldsberg +Date: Thu Apr 23 10:53:08 2020 +0200 + + packages/core: add missing types for layout components + +commit 0ed6b60277d563c151d2663a457505a5ef2f2f22 +Merge: e567e06f65 3020d01246 +Author: Patrik Oldsberg +Date: Thu Apr 23 10:42:07 2020 +0200 + + Merge pull request #622 from spotify/patriko/wait-a-moment + + package: move or remove some root deps + +commit e567e06f65ed818772cce7eede5753c9c6324bf1 +Merge: e034f6b819 edd3ce20df +Author: Fredrik Adelöw +Date: Thu Apr 23 10:35:06 2020 +0200 + + Merge pull request #624 from spotify/freben/readme + + Add README and comment to clarify example status of backend + +commit edd3ce20df6ec7fcf4fe741b6f7817496b96dbd6 +Author: Fredrik Adelöw +Date: Thu Apr 23 10:30:22 2020 +0200 + + Reference from main README too + +commit 01e9106b22bedca949c51e99fc32d2bb731161ce +Author: Patrik Oldsberg +Date: Thu Apr 23 10:22:27 2020 +0200 + + packages/core: add react-helmet types + +commit da51bd777c2a02e008267add4a3f27b1668a27f1 +Author: Fredrik Adelöw +Date: Thu Apr 23 09:26:30 2020 +0200 + + Add README and comment to clarify example status of backend + +commit e034f6b8194294e37845a405fca145a6e99ee94f +Merge: efb789a4fe 1337c538df +Author: Patrik Oldsberg +Date: Thu Apr 23 09:15:09 2020 +0200 + + Merge pull request #620 from spotify/rugvip/global-stoyle + + package/app: move global styles to theme + +commit 79997ccf546cc12f25629aa9dc3ef13cf1c96688 +Author: Patrik Oldsberg +Date: Thu Apr 23 00:10:54 2020 +0200 + + plugins/homePage: added plugin:serve and dev setup + +commit 85f97e70c6385c5cc9ebfcd0a7e39a482db1de70 +Author: Patrik Oldsberg +Date: Thu Apr 23 00:01:29 2020 +0200 + + packages/cli: add history api fallback to plugin:serve + +commit b45a54a4a7043ddc4dd3d88d48265c2886451a01 +Author: Patrik Oldsberg +Date: Wed Apr 22 23:59:09 2020 +0200 + + packages/cli: update plugin:serve to resolve src-relative imports + +commit f4cc327d803b496f08b1013b37419075c7043cba +Author: Patrik Oldsberg +Date: Wed Apr 22 23:58:48 2020 +0200 + + packages/cli: exclude dev/ folder in rollup config + +commit 7ac528b1ceaa76930b5de6dcfc64f476698f39aa +Author: Patrik Oldsberg +Date: Wed Apr 22 23:56:30 2020 +0200 + + packages/cli: update eslint config test config to include dev/ and only setupTests directly in src + +commit 3020d01246a01b55d054bceeaff5c68bcaa63d2c +Author: Patrik Oldsberg +Date: Thu Apr 23 00:33:11 2020 +0200 + + package: move or remove some root deps + +commit bb71394d39f10298171630c15c07e128f3e7d88f +Author: Patrik Oldsberg +Date: Wed Apr 22 23:55:33 2020 +0200 + + packages/cli: call watchDeps before plugin:serve and update path resolutions + +commit 1337c538df42c6951e3dd8a5948b1b706f5cd7f3 +Author: Patrik Oldsberg +Date: Wed Apr 22 23:26:41 2020 +0200 + + package/app: move global styles to theme + +commit efb789a4fe239f61f3fb5d73aa89a0c8eba3199b +Author: Wesley Yee +Date: Wed Apr 22 14:14:56 2020 -0400 + + Move error api to more generic alert api (#605) + +commit ab86d08e168b58b853d6eff890995f43a3cb9e4c +Merge: 5b34072863 c2b5647036 +Author: Fredrik Adelöw +Date: Wed Apr 22 19:41:58 2020 +0200 + + Merge pull request #617 from spotify/freben/backend + + Initial skeleton for the backend + +commit c2b564703676c636d0b9edfb72a5d5b2fbf7f824 +Author: Fredrik Adelöw +Date: Wed Apr 22 17:25:24 2020 +0200 + + Address comments + +commit 83689b62364689efdf07a41b75451094173b6341 +Author: Fredrik Adelöw +Date: Wed Apr 22 16:00:20 2020 +0200 + + Restrict node engine version + +commit 15301311e1dcd59d02abec62fc64e8fed080da5a +Author: Fredrik Adelöw +Date: Wed Apr 22 15:57:38 2020 +0200 + + Add dummy test + +commit 35320bdb4f205206fa2fda50f71e5d0dc17f6f6a +Author: Fredrik Adelöw +Date: Wed Apr 22 14:59:12 2020 +0200 + + Simplify + +commit 5b34072863fcaa23153b05560a25e10e83e66247 +Merge: 1c99b3bc38 1269cc9e6b +Author: Niklas Ek +Date: Wed Apr 22 14:21:39 2020 +0200 + + Merge pull request #614 from spotify/nikek/zoom + + remove css zoom + +commit 1269cc9e6b232146cbb583e4cfeac45256650132 +Author: nikek +Date: Wed Apr 22 13:59:47 2020 +0200 + + remove css zoom + +commit 1c99b3bc38efc3c79f18b281378fa2f9f4f3fd9a +Merge: 9e1c6c6f8d c5b9feed54 +Author: Fredrik Adelöw +Date: Wed Apr 22 07:15:35 2020 +0200 + + Merge pull request #611 from OrkoHunter/OrkoHunter/#573-more-trendline-stories + + Show a variety of Trendline components in the storybook + +commit 9e1c6c6f8d9befb83a85fdcbb45be050ccbd88d6 +Merge: af6dcfff5d 219f058f02 +Author: Fredrik Adelöw +Date: Wed Apr 22 07:14:24 2020 +0200 + + Merge pull request #610 from OrkoHunter/OrkoHunter/#606-copytextbutton-to-typescript + + Port CopyTextButton component to TypeScript + +commit c5b9feed54cdd74a4d7baa947d994d40946c3e99 +Author: Himanshu Mishra +Date: Wed Apr 22 12:32:35 2020 +0900 + + Wrap the sortable table into an info card + +commit da14cdf84e34b3c4241473e2811e489df516989f +Author: Himanshu Mishra +Date: Wed Apr 22 03:47:42 2020 +0900 + + Show a variety of Trendline components in storybook + +commit 219f058f029ea1c0c560e064e2904f9a3bd23925 +Author: Himanshu Mishra +Date: Wed Apr 22 03:17:33 2020 +0900 + + Add type check to core component since they will be used in JS + +commit af6dcfff5deb81ead7fc6918cee4b76340e7dbec +Merge: 874be904d2 1cb81ce5c0 +Author: Patrik Oldsberg +Date: Tue Apr 21 19:38:26 2020 +0200 + + Merge pull request #609 from OrkoHunter/OrkoHunter/create-directories-for-component-files + + Move files of couple components into their own component directory + +commit d454803525c9ba439293158dc5e4b6644c70113c +Author: Himanshu Mishra +Date: Wed Apr 22 02:35:54 2020 +0900 + + Use HTMLInputElement when calling useRef + + Run prettier on the file + +commit 1cb81ce5c0f0a5504ef5cc053430e24a1db9b055 +Author: Himanshu Mishra +Date: Wed Apr 22 01:01:28 2020 +0900 + + Use absolute import instead of relative import + +commit e750cdbf027a36574f43196e4df8c21f42b10709 +Author: Himanshu Mishra +Date: Wed Apr 22 00:36:52 2020 +0900 + + Port CopyTextButton to TypeScript + +commit a72bd32b1f2c371792271b4ddd4e645f4c677252 +Author: Himanshu Mishra +Date: Wed Apr 22 00:10:02 2020 +0900 + + index.tsx required for the components namespace + +commit 6a0ff5ee22d3cc3a0a460648324fe83eadaea8c8 +Author: Himanshu Mishra +Date: Wed Apr 22 00:01:41 2020 +0900 + + SortableTable depends on the Status component + +commit 9cffb0258db167b6db28b912217bc3dea663d609 +Author: Himanshu Mishra +Date: Tue Apr 21 23:58:39 2020 +0900 + + Move SortableTable component files in a directory + +commit abc0f6dc87551720e717f694e07f845fe4bac850 +Author: Himanshu Mishra +Date: Tue Apr 21 23:57:59 2020 +0900 + + Move HorizontalScrollGrid component files in a directory + +commit 874be904d2207c84a722951f8745bf0e1f291c47 +Author: Stefan Ålund +Date: Tue Apr 21 15:31:01 2020 +0200 + + Add TypeScript question to FAQ (#608) + +commit c4e5297ba0882a4cc5a14583b74243d357245bbc +Author: Fredrik Adelöw +Date: Tue Apr 21 12:00:06 2020 +0200 + + More stuff according to article + +commit b5ef92e03b9564ec8ef331376ff67e8de52e0a53 +Merge: 17c4a04818 c6c17cdf3e +Author: Patrik Oldsberg +Date: Tue Apr 21 09:51:55 2020 +0200 + + Merge pull request #587 from spotify/rugvip/cli-lib + + packages/cli: rename helpers to lib and move build-cache and watch-deps to lib + +commit 1a067012722276f8c33efec78c218b74cfabe61b +Author: Fredrik Adelöw +Date: Tue Apr 21 09:31:54 2020 +0200 + + Adding some basics + +commit 5607735aea45edcc0f69c2acb44ae1c5c5247773 +Author: Fredrik Adelöw +Date: Tue Apr 21 09:12:08 2020 +0200 + + Initial commit + +commit c6c17cdf3e7ca8a71e1e5f4da4923c2fdc30d303 +Author: Patrik Oldsberg +Date: Sat Apr 18 15:01:49 2020 +0200 + + packages/cli: move create-plugin/codeowners to lib + +commit a9232549477e07cb7a6aa1f55a33381fcdb53c7e +Author: Patrik Oldsberg +Date: Sat Apr 18 14:11:09 2020 +0200 + + packages/cli: moved build cache implementation to lib + +commit a2e612cad3eb59ee5fe682c763eb8397723b1497 +Author: Patrik Oldsberg +Date: Sat Apr 18 13:42:29 2020 +0200 + + packages/cli: add log func options to run, making it usable in more places + +commit 2c095442edbfa81e2bf7302f8b9c5ad52be46e60 +Author: Patrik Oldsberg +Date: Sat Apr 18 02:51:32 2020 +0200 + + packages/cli: most of watch-deps into lib and re-use from there instead + +commit 921beb792da6064087fe72060df732bc3653969d +Author: Patrik Oldsberg +Date: Sat Apr 18 02:42:44 2020 +0200 + + packages/cli: added a more reusable and less verbose logging util and use in watch-deps + +commit 462f82e4e64c11e9630890cbe04f6daf8cca966d +Author: Patrik Oldsberg +Date: Sat Apr 18 01:32:33 2020 +0200 + + packages/cli: rename helpers to lib + +commit 17c4a048184efef33a7bc6b85ae87e2939c1c79b +Merge: 6313674558 52736265a2 +Author: Marcus Eide +Date: Mon Apr 20 15:17:13 2020 +0200 + + Merge pull request #578 from spotify/eide/cy-in-app + + Include cypress tests when creating a new app + +commit 631367455801ccebaf70c1e8dbdb937a548f349d +Merge: e4608c53b4 c615fb18cc +Author: Patrik Oldsberg +Date: Mon Apr 20 15:09:28 2020 +0200 + + Merge pull request #601 from spotify/rugvip/rollup-logs + + packages/cli: more beautiful rollup output + +commit e4608c53b413bc6967c31dfe89dcc016fc146add +Merge: 149e90249c 7a5a57dd31 +Author: Fredrik Adelöw +Date: Mon Apr 20 14:24:21 2020 +0200 + + Merge pull request #604 from OrkoHunter/OrkoHunter/remove-verbose-webpack-progress-logging + + Disable Verbose logging when building Storybook + +commit 52736265a28c04d8a0bec3df5db0d324a53354b6 +Author: Marcus Eide +Date: Mon Apr 20 13:53:40 2020 +0200 + + Use cross-env + +commit 7a5a57dd31411d68ab2086d1ebb291ee6fb90871 +Author: Himanshu Mishra +Date: Mon Apr 20 21:02:21 2020 +0900 + + Disable ProgressPlugin which logs verbose webpack build progress + + Warnings and Errors are still logged during build. + +commit f5c67a4740f218912bbb36ae9e638bbd00d25a01 +Author: Marcus Eide +Date: Fri Apr 17 13:50:20 2020 +0200 + + Add workflow step for cypress test + +commit c615fb18ccc3e46f6604c65e9d51aa3d045e78a4 +Author: Patrik Oldsberg +Date: Mon Apr 20 11:14:38 2020 +0200 + + packages/cli: more beautiful rollup output + +commit 149e90249c4b3e41491662d43cd88da6a59bc9e2 +Merge: fe2ae12670 f293d9fb0e +Author: Patrik Oldsberg +Date: Mon Apr 20 11:53:11 2020 +0200 + + Merge pull request #599 from OrkoHunter/OrkoHunter/#543-storybook-dark-light-mode-switch + + Support dark/light mode in Storybook + +commit f293d9fb0ede2e55fd0ef84bc624e683ae841d50 +Author: Himanshu Mishra +Date: Mon Apr 20 17:59:23 2020 +0900 + + Add textContrast as color for white/black text in dark/light theme + +commit c2e2c9363f5c75ab03c7828ad5e2e455059209ba +Author: Himanshu Mishra +Date: Mon Apr 20 17:19:13 2020 +0900 + + Check if dark mode is enabled and toggle + + Storybook components are wrapped using a decorator in the storybook config. When rendering, useDarkMode() will let the component know which theme (dark/light) to thoose. + +commit fe972b1e21548e50560f895dc15ba314ad46c368 +Author: Himanshu Mishra +Date: Mon Apr 20 17:17:42 2020 +0900 + + Use storybook-dark-mode addon to toggle light/dark mode + + See the project https://github.com/hipstersmoothie/storybook-dark-mode + +commit fe2ae126709160814ff7d0d72bfaeaa9babb34d3 +Merge: 17cb07bda5 23beb80579 +Author: Patrik Oldsberg +Date: Sun Apr 19 19:03:52 2020 +0200 + + Merge pull request #541 from spotify/alund/components + + Port over more internal components + +commit 17cb07bda5d5770669723ef38b7d8a279e4f1986 +Merge: e842489333 15908eec6d +Author: Patrik Oldsberg +Date: Sun Apr 19 17:05:33 2020 +0200 + + Merge pull request #594 from spotify/rugvip/cli-test + + packages/cli: forward all args to jest and run in watch mode by default + +commit 15908eec6dfe0b1b3757b9d703a1913bc1793fe8 +Author: Patrik Oldsberg +Date: Sun Apr 19 02:21:44 2020 +0200 + + packages/cli: forward all args to jest and run in watch mode by default + +commit e842489333af3653032edeff382a63addf936b0c +Author: Bilawal Hameed +Date: Sat Apr 18 20:08:35 2020 +0200 + + fix(docs): bad backstage hyperlink (#592) + +commit 23beb805798e1d94e17c269808f909f63f0d0d80 +Author: Patrik Oldsberg +Date: Sat Apr 18 19:49:44 2020 +0200 + + packages/core/components/CopyTextButton: fix disabled test + +commit 8b429c03a73856d8e4a56ff5a5e146c6261aff70 +Author: Patrik Oldsberg +Date: Sat Apr 18 18:20:11 2020 +0200 + + packages/core/components/CopyTextButton: refactor to functional component + provide errorApi in storybook + +commit 151417a9ed60dc8eb65945e0c68e73cca6eebef1 +Author: Stefan Ålund +Date: Sat Apr 18 18:00:15 2020 +0200 + + Document how to suggest new plugins (#590) + + * Document how to suggest new plugins + + * Update plugin_template.md + + * Update ux-component_template.md + + * Update plugin_template.md + +commit 8e5592c6e83671f3ea8e254175c4b0c74fc8febf +Merge: 8f6e3ef9ee 8fce6e90b5 +Author: Bilawal Hameed +Date: Sat Apr 18 17:07:21 2020 +0200 + + Merge pull request #591 from spotify/bih-patch-1 + + fix(feature-flags): corrected docs to instantiate FeatureFlags + +commit 8fce6e90b5b5d971f3f4a47b84717e297569c0df +Author: Bilawal Hameed +Date: Sat Apr 18 16:55:42 2020 +0200 + + fix(feature-flags): corrected docs to instantiate FeatureFlags + +commit 8f6e3ef9eee37820723a9b7796f61e3950c55cad +Merge: d35d0ac11e 4ed0abc7b7 +Author: Patrik Oldsberg +Date: Sat Apr 18 16:44:29 2020 +0200 + + Merge pull request #586 from ruairitobrien/fix-deps + + Change peerDependencies to dependencies #584 + +commit d35d0ac11edd5a409b73cf514e8ea319e891e497 +Merge: fe5844038e 7584350834 +Author: Patrik Oldsberg +Date: Sat Apr 18 16:42:18 2020 +0200 + + Merge pull request #588 from spotify/rugvip/cli-tsconfig + + packages/cli: use separate tsconfig for builds to get currect config in tests + +commit 7584350834e6de5b12c97a5bb1b76e851deafada +Author: Patrik Oldsberg +Date: Sat Apr 18 14:47:46 2020 +0200 + + packages/cli: use separate tsconfig for builds to get currect config in tests + +commit fe5844038e38c4646148fdfc80f13ebc829142c3 +Merge: c8f3b426de 2e470f4548 +Author: Patrik Oldsberg +Date: Sat Apr 18 13:18:40 2020 +0200 + + Merge pull request #585 from spotify/rugvip/cli-watch + + packages/cli: fix and document watch mode + +commit 4ed0abc7b7afe27015ec99f369a2f824a424dd44 +Author: Ruairi O Brien +Date: Sat Apr 18 01:50:48 2020 +0100 + + Moveed all test-util deps to dependencies + +commit c1ada09d06713c251c65bf73d0b7f7519fd3d670 +Author: Ruairi O Brien +Date: Sat Apr 18 01:41:41 2020 +0100 + + Change peerDependencies to dependencies + + Also removed some duplication. + + Addresses #584 + +commit c8f3b426def28de9ad7bedc97a2708c627b9eb93 +Merge: cbee11093c 6f1c910a20 +Author: Patrik Oldsberg +Date: Sat Apr 18 01:56:18 2020 +0200 + + Merge pull request #581 from ruairitobrien/master + + Change peer dependencies to be regular dependencies #576 + +commit 2e470f454820203848e7a134bb3fd92956daa4e4 +Author: Patrik Oldsberg +Date: Sat Apr 18 01:12:30 2020 +0200 + + packages/cli: fix and document watch mode + +commit 6f1c910a20052741ed6cc173e2e408c15fc6aefe +Author: Ruairí O'Brien +Date: Fri Apr 17 19:15:04 2020 +0100 + + Put backstage cli back in dev dependencies + +commit cbee11093c79d8e0413e661fc7f41ccb6437f0c3 +Merge: d42351ba3d 9ec2f88ed5 +Author: Patrik Oldsberg +Date: Fri Apr 17 18:42:24 2020 +0200 + + Merge pull request #583 from ruairitobrien/fix-link + + Fixed broken link in Readme + +commit 9ec2f88ed5bea32e2aa14a5ddfffe668f03fe42f +Author: Ruairi O Brien +Date: Fri Apr 17 17:16:53 2020 +0100 + + Fixed broken link in Readme + +commit da6ec4e17d83c3a037fa0f5101ec33e58c1785f2 +Author: Ruairi O Brien +Date: Fri Apr 17 16:35:15 2020 +0100 + + Change peer dependencies to be regular dependencies #576 + + Removed explicit dependency on backstage cli to inherit from root. + +commit d42351ba3de3a271109b4f0cb0331a835fd6fbd6 +Author: Stefan Ålund +Date: Fri Apr 17 15:46:45 2020 +0200 + + Moved up CONTRIB in README (#579) + +commit b5f24a7d190b284ca54e6c89a533f0ec1babaceb +Author: Marcus Eide +Date: Fri Apr 17 13:28:13 2020 +0200 + + Include a minimal cypress e2e test with the app + +commit 09411b066123974b311460f7b90eb75dbc9821eb +Author: Stefan Ålund +Date: Fri Apr 17 12:30:54 2020 +0200 + + Update APIs + +commit 6518657568432e604a227c371333b472025e96fa +Merge: 11f7522205 4c2331d4bb +Author: Stefan Ålund +Date: Fri Apr 17 12:16:38 2020 +0200 + + Merge branch 'master' into alund/components + +commit 4c2331d4bbebcd3086e60eab25cd349bc48ababe +Author: Marcus Eide +Date: Fri Apr 17 12:12:49 2020 +0200 + + Add version badge (#577) + +commit 23802d6c58665d41d0ed5a5301f7f3fadab0eb2b +Author: Marcus Eide +Date: Fri Apr 17 11:44:36 2020 +0200 + + Clarify creating a new plugin as the next step (#575) + + * Move create-app docs out from getting started + + * Add contributing to readme.md + +commit eb76a4d05a1e31659794835a893d5208ca7a86c5 +Author: Stefan Ålund +Date: Fri Apr 17 10:53:11 2020 +0200 + + Add CONTRIBUTING (#572) + + * Add CONTRIBUTING + + * Update CONTRIBUTING.md + + * Fixed review comments + + * Typo + +commit 3f2f014327becbe6e080a3c41a3f2fce0d4d3d3e +Merge: bec0437faf cdbd7e1278 +Author: Patrik Oldsberg +Date: Fri Apr 17 10:42:34 2020 +0200 + + Merge pull request #435 from braulio-balanza/remove_plugin_wip + + Remove plugin wip + +commit cdbd7e1278ca03f87b285749235492402055ff44 +Merge: fd190f8bd5 bec0437faf +Author: Patrik Oldsberg +Date: Fri Apr 17 10:25:28 2020 +0200 + + Merge branch 'master' into remove_plugin_wip + +commit bec0437faf4381e245bee19b6dbb6ebd47c70c30 +Merge: 0e2dc866bf 40b4ea835b +Author: Patrik Oldsberg +Date: Fri Apr 17 10:22:14 2020 +0200 + + Merge pull request #571 from braulio-balanza/update_create-plugin_logic + + Update logic for create app + +commit 0e2dc866bf7480e654086f1a6600bcc7075b0027 +Merge: f774c115dc d70337eb53 +Author: Patrik Oldsberg +Date: Fri Apr 17 09:25:15 2020 +0200 + + Merge pull request #570 from spotify/rugvip/cli-e2e-tweaks + + cli e2e test tweaks + +commit f774c115dc02e9739f1f3e5d9330eb80c072fb07 +Author: Stefan Ålund +Date: Fri Apr 17 08:25:20 2020 +0200 + + Extract TrendLine from Lighthouse plugin (#532) + + * Extract TrendLine from Lighthouse plugin + + * Create TrendLine.stories.tsx + + * Change lifecycle names + + * Made story example smaller + + * Review comment + + * Update TrendLine.tsx + +commit 40b4ea835bbf9c422d754f394dfd46eb49aeb464 +Author: Jose Balanza Martinez +Date: Thu Apr 16 13:29:26 2020 -0500 + + Update logic for create app + +commit fd190f8bd542dd0ef073e1ca01c8c530d042b6ee +Author: Jose Balanza Martinez +Date: Thu Apr 16 13:14:38 2020 -0500 + + Update Create plugin logic + +commit 6c514e1a1e0856b7d99905e9abcacb487260432c +Author: Jose Balanza Martinez +Date: Thu Apr 16 13:12:07 2020 -0500 + + Updates test, uses temporary directory now + +commit d70337eb53dab9c8d2428100f88ef7915face173 +Author: Patrik Oldsberg +Date: Thu Apr 16 19:38:01 2020 +0200 + + scripts: move cli-e2e-test to packages/cli/e2e-test + +commit 3d2a79b20f22e0d4486c9955251c3b28003e8bad +Merge: 6889e02a5c 47dd73919b +Author: Jose Balanza Martinez +Date: Thu Apr 16 12:32:53 2020 -0500 + + Merge branch 'master' of https://github.com/spotify/backstage into remove_plugin_wip + +commit e522989249388eddcf9b891a14b8d98050e9fab4 +Author: Patrik Oldsberg +Date: Thu Apr 16 19:06:11 2020 +0200 + + github/workflows,scripts/cli-e2e-test: use runner temp dir instead of generated dir + +commit 7a320302c10562bc60ffede310c26103145313a1 +Author: Patrik Oldsberg +Date: Thu Apr 16 18:54:50 2020 +0200 + + scripts/cli-e2e-test: refactor path handling a bit + +commit be0881ff35676b74fc3bfd4d9b26945521193b91 +Author: Patrik Oldsberg +Date: Thu Apr 16 18:46:30 2020 +0200 + + scripts/cli-e2e-test: removed yarn init + +commit 54108354ff402b4cd25c545338bd847f0b388a7f +Author: Patrik Oldsberg +Date: Thu Apr 16 17:52:08 2020 +0200 + + github/workflows: avoid cd in final cli tests + +commit fe0b3e5b10e1414eee2013a5bc310b80d19a7ae2 +Author: Patrik Oldsberg +Date: Thu Apr 16 17:12:22 2020 +0200 + + packages/cli: added new ownRootDir to paths and use for create-app e2e override + +commit bdafffb2371ad12873c016df845eb2fdd2ea4034 +Author: Patrik Oldsberg +Date: Thu Apr 16 16:52:47 2020 +0200 + + packages/cli: no special handling of cli e2e tests wrt caching + +commit 372200bb1950c9dfafb86868aada7727b715672e +Author: Patrik Oldsberg +Date: Thu Apr 16 16:49:53 2020 +0200 + + github/workflows: split final cli lint and test task + +commit 47dd73919bd46c0d439bb8dde1b18ebf2386c26c +Merge: 218ee1a391 fb42fd490b +Author: Patrik Oldsberg +Date: Thu Apr 16 16:42:05 2020 +0200 + + Merge pull request #550 from spotify/eide/app-e2e + + Add create-app to e2e + +commit 218ee1a3915dc607b92bc7e0ef2bd5dfa049af3e +Merge: 624c280e3e d9f34e3fff +Author: Patrik Oldsberg +Date: Thu Apr 16 16:25:13 2020 +0200 + + Merge pull request #563 from spotify/rugvip/theme-refactor + + packages/theme: refactor to differ themes by palette only, and expose nicer types + +commit fb42fd490b2f9ce8748413aa79e28c4ee313ce36 +Author: Marcus Eide +Date: Thu Apr 16 15:49:18 2020 +0200 + + wip: trying different things + +commit 60d6392e4183843ad773fedbe90f2baa3e3aa0a4 +Author: Marcus Eide +Date: Thu Apr 16 15:43:54 2020 +0200 + + Add back isTemp check + +commit 99c2c5879e0b540f91e82464df0cd96b743d3b79 +Author: Marcus Eide +Date: Thu Apr 16 15:31:14 2020 +0200 + + Export helper methods differently + +commit 99986cfc1116475d2b933b8f2d131761a266c1a4 +Author: Marcus Eide +Date: Thu Apr 16 15:23:38 2020 +0200 + + Fix path for cli cmd and add debug logs + +commit e762e953687e56c14caaab13bab4d5378080fcf1 +Author: Marcus Eide +Date: Thu Apr 16 15:20:20 2020 +0200 + + Modify envs in cli workflow + +commit 3eca6cc9d5cf83e4e8104a6f8738031b49327362 +Author: Marcus Eide +Date: Thu Apr 16 15:00:21 2020 +0200 + + Change name of env variable used in script + +commit c8f8759379ed9710bc4ffd64bda6b5767769108c +Author: Marcus Eide +Date: Thu Apr 16 14:41:53 2020 +0200 + + Try different approach to change dir in final step + +commit 55b767a3fab707875a2c6a01d5159a0cbc3a9306 +Author: Marcus Eide +Date: Thu Apr 16 12:16:12 2020 +0200 + + Link local packages in package.json if in e2e-test + +commit 624c280e3ea4f1e04615464b5d4223dcc9c45c0d +Merge: 8df2089a02 e6c444b955 +Author: Patrik Oldsberg +Date: Thu Apr 16 13:38:12 2020 +0200 + + Merge pull request #567 from spotify/rugvip/storybook-deps + + packages/storybook: hoist storybook addons so they can be loaded from other packages + +commit e6c444b95544383f0f44bdf921062a09dac940c3 +Author: Patrik Oldsberg +Date: Thu Apr 16 13:13:55 2020 +0200 + + packages/storybook: hoist storybook addons so they can be loaded from other packages + +commit d9f34e3fffae8b2a6871799b71a45f56df68e3c1 +Author: Patrik Oldsberg +Date: Thu Apr 16 01:34:53 2020 +0200 + + packages/theme: make BackstageTheme a type and update usages + +commit d766d7aac42170760054c138b4793f0f24a3883c +Author: Patrik Oldsberg +Date: Thu Apr 16 01:31:41 2020 +0200 + + packages,plugins: use lightTheme/darkTheme exports from theme package + +commit e4f3495284d72c52319eb6626097ecf2050e7a25 +Author: Patrik Oldsberg +Date: Thu Apr 16 01:21:15 2020 +0200 + + packages/theme: use Overrides type from MUI + +commit 615597ee8708df9e32c16c237c3aa66f9c4abc6e +Author: Patrik Oldsberg +Date: Thu Apr 16 01:19:37 2020 +0200 + + packages/theme: remove color schemes and provide full palette for themes instead + +commit dd4acb71a89c51762b220c7d6ae43dec2689f6be +Author: Patrik Oldsberg +Date: Thu Apr 16 01:13:24 2020 +0200 + + packages/theme: remove invalid and ignored theme options + +commit 9e605009fd4fe86588d70cec22e069bdde66f0ce +Author: Patrik Oldsberg +Date: Thu Apr 16 01:10:38 2020 +0200 + + packages/theme: fix theme palette types + +commit d959179729e717b8d09e567500734ea83cd46ad6 +Author: Patrik Oldsberg +Date: Thu Apr 16 01:00:50 2020 +0200 + + packages/theme: merge themes and differ through color definitions + +commit f5e09895a157f87ae77a04129c35eae85488304a +Author: Patrik Oldsberg +Date: Tue Apr 14 19:11:29 2020 +0200 + + packages/theme: refactor theme definitions + +commit 8df2089a020d98caf1864ba36d469b7d7e231a62 +Merge: 61dbd66fde 4f9789f23a +Author: Patrik Oldsberg +Date: Thu Apr 16 11:44:06 2020 +0200 + + Merge pull request #566 from spotify/rugvip/storybook-dist + + packages/storybook: depend on dist version of local packages and make sure they are built + +commit 61dbd66fde015ed2de9daf0452923272203be683 +Merge: 6f1c443ee0 df28af29d5 +Author: Patrik Oldsberg +Date: Thu Apr 16 11:41:46 2020 +0200 + + Merge pull request #565 from hooloovooo/tabbed-card-story-width + + Set a width on TabbedCard in Storybook using same method as InfoCard + +commit 4f9789f23a024cf8e516f939b86f1a92b0652085 +Author: Patrik Oldsberg +Date: Thu Apr 16 10:35:13 2020 +0200 + + packages/storybook: depend on dist version of local packages and make sure they are built + +commit 66a39273adcef4069da468c25ec1b7026943c07e +Author: Patrik Oldsberg +Date: Thu Apr 16 10:33:55 2020 +0200 + + packages/cli: added --build flag to watch-deps command + +commit df28af29d5edfbd21a5e385ce4f474b2685737ba +Author: Sebastian Qvarfordt +Date: Thu Apr 16 10:16:29 2020 +0200 + + Set a width on TabbedCard in Storybook using same method as InfoCard + +commit 432a2a3c31e508d74576368ca0af9e9ba9292e7e +Author: Marcus Eide +Date: Thu Apr 16 10:15:17 2020 +0200 + + Use :all flags for lint and test to not depend on git since + +commit 6f1c443ee02e2bb47756a21ad76ad9107af54544 +Author: Victor Viale +Date: Thu Apr 16 10:15:16 2020 +0200 + + Convert WarningPanel to TypeScript (#554) (#561) + + Co-authored-by: Victor Viale + +commit ed32b1d161f99f161ed8db738c324551f83239cd +Author: Marcus Eide +Date: Thu Apr 16 09:07:02 2020 +0200 + + Properly change to temp directory + +commit c1cd32ac7b2103978f6dd237fbb981cb633f468f +Merge: 111f75cf3d 7ff138daa9 +Author: Patrik Oldsberg +Date: Thu Apr 16 09:55:53 2020 +0200 + + Merge pull request #524 from leomindez/feature/yarn-clean + + Add yarn clean script + +commit 111f75cf3d75e2d861477623766f72e768c6fbc5 +Author: Patrik Oldsberg +Date: Thu Apr 16 09:02:58 2020 +0200 + + packages/storybook: added note in readme explaining why the package exists (#560) + +commit 866dac825292c68204260f191506fc4477393dd1 +Author: Jose Balanza Martinez <62359443+braulio-balanza@users.noreply.github.com> +Date: Thu Apr 16 01:58:46 2020 -0500 + + Fix error when using yarn lint (#562) + +commit 85752b4795f979503b6c88dee88b52b152512f51 +Author: Marcus Eide +Date: Thu Apr 16 08:53:55 2020 +0200 + + Revert "Add copyright notice to default-app template files" + + This reverts commit fbc2048350c3a199e503ec3316b1fce8663821e3. + +commit 06150f7094f8af67a6283007c1f473b37edb7532 +Author: Marcus Eide +Date: Thu Apr 16 08:53:19 2020 +0200 + + Remove yarn create-app from package.json + +commit 300a891f71f369662bc58e35271fb43e9db07260 +Author: Marcus Eide +Date: Wed Apr 15 14:58:20 2020 +0200 + + Create new app in temp dir + +commit 7ff138daa93a7b24034cba534eaa4ccf1df154fa +Merge: 1820d3e67b cf30e4615d +Author: Leonel Mendez Jimenez +Date: Wed Apr 15 22:13:37 2020 -0500 + + Merge branch 'master' into feature/yarn-clean + +commit 6889e02a5c7313935aa387b4c9939e6ca15e236b +Merge: 3f0e8c7349 cf30e4615d +Author: Jose Balanza Martinez +Date: Wed Apr 15 21:40:13 2020 -0500 + + Merge branch 'master' of https://github.com/spotify/backstage into remove_plugin_wip + +commit cf30e4615d4c6c2ffde5b969684e634cb73549a8 (tag: v0.1.1-alpha.4) +Merge: 4f8193be60 c4457a7614 +Author: Patrik Oldsberg +Date: Wed Apr 15 22:30:00 2020 +0200 + + Merge pull request #559 from spotify/rugvip/release + + Release v0.1.1-alpha.4 + +commit 11f75222055e0629697fd2373e3b1912ff3e78c3 +Author: Stefan Ålund +Date: Wed Apr 15 22:14:23 2020 +0200 + + Fixed link + +commit ce950bed7aa5b6e68093e9d30fde472cf39f637c +Author: Marcus Eide +Date: Tue Apr 14 14:13:58 2020 +0200 + + Add exit() method to Task and use in create-app and create-plugin + +commit fbc2048350c3a199e503ec3316b1fce8663821e3 +Author: Marcus Eide +Date: Tue Apr 14 12:54:13 2020 +0200 + + Add copyright notice to default-app template files + +commit ce53096b5c99f4e843c4d584666cbed61fa19da9 +Author: Marcus Eide +Date: Tue Apr 14 09:20:46 2020 +0200 + + Add create-app yarn command to package.json + +commit ca2ccb314524e36cbd00b98a2b2fbd0e949354b6 +Author: Marcus Eide +Date: Tue Apr 14 09:14:26 2020 +0200 + + Modify cli workflow + +commit ceb716c3b4c7df5b9cfb11845c75d0ea1377e1a7 +Author: Marcus Eide +Date: Tue Apr 14 08:55:07 2020 +0200 + + Add create-app to e2e and move common functionality into seperate modules + +commit 2596c9a67ba3c7c5d0f1d8a0173d33d70a75362a +Merge: e5d6ff1b5c 4f8193be60 +Author: Stefan Ålund +Date: Wed Apr 15 20:33:29 2020 +0200 + + Merge branch 'master' into alund/components + +commit c4457a7614639b2eeaa429107d50b0bd49bd190b +Author: Patrik Oldsberg +Date: Wed Apr 15 20:27:06 2020 +0200 + + v0.1.1-alpha.4 + +commit 4f8193be604e28b1252e48a5be88b958489328ca +Merge: 4c4e4bb787 9cf2de0511 +Author: Patrik Oldsberg +Date: Wed Apr 15 20:21:09 2020 +0200 + + Merge pull request #552 from spotify/rugvip/breakout-test-utils-core + + package/test-utils: move some test utils to separate package so test-utils can depend on core + +commit 4c4e4bb787901375675207f828793b26c94edf1b +Merge: 57d7030ee7 ba83156c08 +Author: Patrik Oldsberg +Date: Wed Apr 15 19:51:08 2020 +0200 + + Merge pull request #558 from spotify/rugvip/app-no-example + + packages/cli: fix app template referencing example-app + +commit ba83156c08f2b0cfca00d1b9870fc9af002c48c0 +Author: Patrik Oldsberg +Date: Wed Apr 15 18:44:19 2020 +0200 + + packages/cli: fix app template referencing example-app + +commit 57d7030ee705a7b4ce4265716367520ac3ef27e4 +Merge: dd1ef4eda0 6bed35cb56 +Author: Patrik Oldsberg +Date: Wed Apr 15 18:25:15 2020 +0200 + + Merge pull request #553 from desktophero/dev-start-up-steps + + update getting started doco; xref 551 + +commit dd1ef4eda03d0203338bd632c728d2033434ca67 +Merge: ea61497c66 045ce9ab6b +Author: Patrik Oldsberg +Date: Wed Apr 15 18:14:55 2020 +0200 + + Merge pull request #548 from OrkoHunter/OrkoHunter/#536-show-story-source-code + + Show code in storybook + +commit ea61497c660ecffe27a738ffe346a3dfbcc7fc94 +Author: Stefan Ålund +Date: Wed Apr 15 17:15:55 2020 +0200 + + Add Status and SortableTable to Storybook (#540) + + * Add Status component to Storybook + + * Add SortableTable + +commit 1820d3e67bf8146c9c15d06ce9680c1c79f9c350 +Author: Leo Mendez +Date: Wed Apr 15 10:15:22 2020 -0500 + + Change backstage cli clean to lerna run clean command + +commit 29239b187723658872d7d45fa4477911f59d4242 +Author: Sebastian Qvarfordt +Date: Wed Apr 15 17:08:03 2020 +0200 + + Added global decorator for storybook wrapping stories with the MUI theme (#556) + +commit d5625f87bd0f432186bab7b148b221be18c93399 +Merge: ebe6fd5659 1685fa1e9f +Author: Patrik Oldsberg +Date: Wed Apr 15 17:00:37 2020 +0200 + + Merge pull request #555 from spotify/rugvip/app-template-pkg + + packages/cli: update app template to reflect current package.jsons + +commit 1685fa1e9f54bd07384756f190a784b274688055 +Author: Patrik Oldsberg +Date: Wed Apr 15 15:53:52 2020 +0200 + + packages/cli: update app template to reflect current package.jsons + +commit 6bed35cb5693c10d2996863a212113c562b65fe4 +Author: Jason Walker +Date: Wed Apr 15 07:28:57 2020 -0500 + + fix link to package.json in MD file + +commit ebe6fd5659e209d4dbfedfc2d9f1b992e2ba6d04 +Author: Stefan Ålund +Date: Wed Apr 15 11:51:46 2020 +0200 + + Dark mode has different sidebar (#537) + +commit 2c251e94e0c0484084ed3c01bbf7b349f701fd51 +Author: Sebastian Qvarfordt +Date: Wed Apr 15 10:31:40 2020 +0200 + + TabbedCard component (#464) + + * Initial typing for infocard component + + * Changes as suggested in PR and rewrite of BottomLink to TypeScript + + * Removed classes property from card because material-ui did not like classes.header being set + + * Prettier + + * Early TabbedCard component. WIP + + * Refactored TabbedCard to be easier to use + + * Fixed some typing issues and tests + + * Fixed lint issues and changed lint rule. Do we want to keep it? + + * Added controlled mode when value and onChange is set on TabbedCard + + * Fixed typo + + * Added a test and fixed the design to look like the mockups more + + * Removed export of BottomLink from TabbedCard + + * Added test for controlled state + +commit fadffc6589295547658932338d858810ff6d9f58 +Author: Stefan Ålund +Date: Wed Apr 15 10:02:14 2020 +0200 + + Port over WarningPanel component (#547) + + * Port over WarningPanel component + + * Create WarningPanel.test.js + + * More stories and tests + + * Simplified example message + +commit e5d6ff1b5ce67799a001a1caf6d46759b16caf57 +Author: Stefan Ålund +Date: Wed Apr 15 08:03:59 2020 +0200 + + Use errorApi + +commit c875b94868c30a10a1d8de379eba0ebd923992be +Author: Jason Walker +Date: Tue Apr 14 15:26:13 2020 -0500 + + update getting started doco; xref 551 + +commit 38e35dad657a8c6676f1f50dbd5a1f8e9be66ed5 +Merge: 507504bb45 c8fb4c153e +Author: Patrik Oldsberg +Date: Tue Apr 14 21:23:13 2020 +0200 + + Merge pull request #544 from spotify/rugvip/private-colors + + backstage/theme: make colors private, access through theme instead + +commit 9cf2de05117444998b48391a07ce140901a25339 +Author: Patrik Oldsberg +Date: Tue Apr 14 21:17:46 2020 +0200 + + packages/test-utils: added simple test for app wrapper + +commit eed736f2e8f31caf86deca96b1c3320cab551076 +Author: Patrik Oldsberg +Date: Tue Apr 14 19:50:05 2020 +0200 + + package/test-utils: move some test utils to separate package so test-utils can depend on core + +commit c8fb4c153e1261e50730ada5e485eba9fe967d4e +Author: Patrik Oldsberg +Date: Mon Apr 13 18:48:46 2020 +0200 + + backstage/theme: make colors private, access through theme instead + +commit 045ce9ab6b1f149af8c1fe1c6411f3812486c47b +Author: Himanshu Mishra +Date: Tue Apr 14 09:08:48 2020 +0900 + + Add storybook addon storysource which shows code of components in storybook + +commit 507504bb4582fe47277755bf048e3ac2d4be3c95 +Author: Himanshu Mishra +Date: Tue Apr 14 03:43:28 2020 +0900 + + Remove old storybook configuration (#545) + + In https://github.com/spotify/backstage/pull/371, storybook config was moved from packages/core to packages/story to avoid conflicts. + packages/core/.storybook was missed and not removed at the time. Now, we don't need this anymore. + +commit ce067bf2bc9262a4e72ad2f2981dbef331b729cf +Author: Stefan Ålund +Date: Mon Apr 13 20:38:01 2020 +0200 + + Disable failing test + +commit 223a752bc0a9fce4296e0a48f286aaa0b9da2eb8 +Author: Stefan Ålund +Date: Mon Apr 13 17:41:13 2020 +0200 + + Add HorizontalProgress + +commit 71a30200dc4fa25bd3232e5c691fe7d85e52e94b +Author: Stefan Ålund +Date: Mon Apr 13 17:13:18 2020 +0200 + + Add extra story + +commit 6a1ca051aa2b54b2e58af4a9b5e1eb7907bef76a +Author: Stefan Ålund +Date: Mon Apr 13 17:08:23 2020 +0200 + + Update index.ts + +commit 8d82d2e530e0581f4aa2a9bcf9b580cd94c08a79 +Author: Stefan Ålund +Date: Mon Apr 13 17:05:31 2020 +0200 + + Add CopyTextButton + +commit 5938544c46f3e7bcb371eabb2b0e7275a1baecb0 +Author: Stefan Ålund +Date: Mon Apr 13 14:52:24 2020 +0200 + + Port over StructuredMetadataTable + +commit 6ca4626b783c2f6616e87ae895aa62d2189c5d5d +Author: Muhammad Rivki +Date: Mon Apr 13 14:43:52 2020 +0700 + + fix(storybook): add aliases for @backstage/theme (#539) + +commit c94a42c8120aa01ea35a77a73be39685ba6b94f1 +Author: Leo Mendez +Date: Sun Apr 12 14:57:28 2020 -0500 + + Add clean script to plugins/welcome + +commit 97604a3832c1cd14938721a966843c043a40a699 +Author: Leo Mendez +Date: Sun Apr 12 14:54:11 2020 -0500 + + Add clean script to plugins/lighthouse + +commit b03d937e7dc771661f3b08e8fc647c7ca932b8be +Author: Leo Mendez +Date: Sun Apr 12 14:53:53 2020 -0500 + + Add clean script + +commit c171718840fff36e42b1f5560a4a89e1c442868a +Author: Leo Mendez +Date: Sun Apr 12 14:32:03 2020 -0500 + + Delete rimraf library + +commit 0b7b6c4bedc864a2080ce0959b230e89bba64bc9 +Author: Leo Mendez +Date: Sun Apr 12 14:28:57 2020 -0500 + + Add clean script to root package + +commit 8015b55a0fde1c64881d500fffb7141498b0e5f8 +Author: Leo Mendez +Date: Sun Apr 12 14:24:40 2020 -0500 + + Add clean script packages/theme + +commit 2467e4088358dea647d93edcec9560f1f64b0228 +Author: Leo Mendez +Date: Sun Apr 12 14:24:16 2020 -0500 + + Add clean script packages/test-utils + +commit 4d0c5b084d4e08a82ed38cb32c280daf980d79fa +Author: Leo Mendez +Date: Sun Apr 12 14:23:34 2020 -0500 + + Add clean script packages/core + +commit f1c9e804356814972f6372966bb19ed25dd6cb6f +Author: Leo Mendez +Date: Sun Apr 12 14:22:53 2020 -0500 + + Add clean script packages/app + +commit 0bd526a4a35c11fb1d0879498a7172c28d944234 +Author: Leo Mendez +Date: Sun Apr 12 14:20:47 2020 -0500 + + Add clean script to template plugin + +commit f5b8433aa2d789e62d7ecb2a0670a1beb17bbdde +Author: Leo Mendez +Date: Sun Apr 12 14:19:47 2020 -0500 + + Add clean script to template app + +commit 2c4328f5e15612c40ceaa7bb75de42235bb6de1a +Author: Leo Mendez +Date: Sun Apr 12 14:09:44 2020 -0500 + + Add package path + +commit a6167ce02a59520734b83e3fc0bad4297938b9c0 +Merge: 75236eea72 83fb640207 +Author: Patrik Oldsberg +Date: Sun Apr 12 13:21:56 2020 +0200 + + Merge pull request #509 from spotify/rugvip/logcollect + + packages/test-utils: port logCollector to TypeScript + add tests + +commit 75236eea72fefc528246cc86eeadbdca3b94fdfa +Merge: 4e26d21a85 db92c693bf +Author: Fredrik Adelöw +Date: Sun Apr 12 08:54:53 2020 +0200 + + Merge pull request #534 from OrkoHunter/OrkoHunter/#531-fix-error-on-safari + + Fix build error on Safari | MediaQueryList.addEventListener not supported + +commit db92c693bfd4861d9088960941efaa38910a0e0a +Author: Himanshu Mishra +Date: Sun Apr 12 15:38:31 2020 +0900 + + Fix broken tests due to MediaQueryList.addEventListener + +commit 453439985490ca026acdcc8fcd7d87382e6a3014 +Author: Himanshu Mishra +Date: Sun Apr 12 15:27:39 2020 +0900 + + Fix build error on Safari + + MediaQueryList.addEventListener is not support on Safari and hence the build fails. + Ref: https://developer.mozilla.org/en-US/docs/Web/API/MediaQueryList + Closes https://github.com/spotify/backstage/issues/531 + +commit 4e26d21a8543fea1e86c7d4944515baa0c0ab8eb +Author: Patrik Oldsberg +Date: Sun Apr 12 08:26:47 2020 +0200 + + packages/test-utils: split app wrappers and testing library utils out from index (#510) + +commit 2b29780dafcd89ddbb35c0133233c7dfdabe02bc +Merge: 2da0697582 049f3803d5 +Author: Fredrik Adelöw +Date: Sat Apr 11 21:40:21 2020 +0200 + + Merge pull request #533 from OrkoHunter/doc-typo-update-in-faq + + DOC: Some updates to documentation + +commit 049f3803d5810ea0d59d48f5f6e2ac185bd896d7 +Author: Himanshu Mishra +Date: Sun Apr 12 03:09:07 2020 +0900 + + DOC: createPlugin and router reference docs are now here + +commit d8db08a522abb7b51fd2c4e01fdb6575dc7d4dbf +Author: Himanshu Mishra +Date: Sun Apr 12 02:36:54 2020 +0900 + + DOC: Update couple typos in docs/FAQ.md + + * open soure -> open source + * forbenchmarking -> for benchmarking + +commit 2da0697582c04638798b3e4a63d249914238222f +Merge: 3e1e356320 72c98655f3 +Author: Ben Lambert +Date: Fri Apr 10 17:19:02 2020 +0200 + + Merge pull request #526 from spotify/feat/issues/523 + + Remove the default export from plugins + +commit 72c98655f3a4f3e9df30ca7b0770337210bfb9d6 +Author: blam +Date: Fri Apr 10 01:38:35 2020 +0200 + + chore; fixing code review commenta and fix the import path + +commit 4c6f1ab100e767a218bbb014c8a485441c480b24 +Author: Leo Mendez +Date: Thu Apr 9 15:28:20 2020 -0500 + + Delete default formal arguments + +commit 81c18f22f76a73832124e937947816e8edec97db +Author: Leo Mendez +Date: Thu Apr 9 15:23:33 2020 -0500 + + Add clean script to package file + +commit ff5d455c23e99a890ead1563e2c05846cbd0c0a3 +Author: Leo Mendez +Date: Thu Apr 9 15:23:01 2020 -0500 + + Add clean command to index + +commit 9770623d6bdeef6e4bf8509e2006d8a21984032e +Author: Leo Mendez +Date: Thu Apr 9 15:22:27 2020 -0500 + + Create clean command + +commit 5a2c94640d7d2f41a6fd2f5eed8fbe0f12d4b8ff +Author: Leo Mendez +Date: Wed Apr 8 14:51:12 2020 -0500 + + Add yarn lock file + +commit dc6dcbefaca7fd202038ea1d1720f6b38f808d18 +Author: Leo Mendez +Date: Wed Apr 8 14:30:28 2020 -0500 + + Add clean script + +commit 3e1e356320c0792cc28f7745aa56ab85c1712f23 +Merge: fc00bfec5a e55cdf70fd +Author: Patrik Oldsberg +Date: Thu Apr 9 15:51:27 2020 +0200 + + Merge pull request #528 from spotify/rugvip/lintfixes + + package/cli: fix lint issues in scaffolded plugins + +commit fc00bfec5aed36e42e51f6e7d3d3cbb278f13180 +Merge: 9b56cc20c6 a42d95f6dd +Author: Patrik Oldsberg +Date: Thu Apr 9 15:51:20 2020 +0200 + + Merge pull request #527 from spotify/rugvip/notests + + packages/cli: exclude tests from build + +commit e55cdf70fd06297cdc76c74128c40d812bdbbadb +Author: Patrik Oldsberg +Date: Thu Apr 9 14:21:47 2020 +0200 + + packages/cli: add missing theme dep to app template + +commit e6b0df8c1f94a846b2ca5fee9cc1560cf6aeda29 +Author: Patrik Oldsberg +Date: Thu Apr 9 14:17:06 2020 +0200 + + packages/cli: add root eslintrc for app template + +commit 1788fe1fffa32969f1471a863c41018d1604403a +Author: Patrik Oldsberg +Date: Thu Apr 9 14:15:47 2020 +0200 + + packages/cli: remove notice plugin from eslint config + +commit a42d95f6dd47f9f3155ca25f11e3edab75e5cc7a +Author: Patrik Oldsberg +Date: Thu Apr 9 13:36:45 2020 +0200 + + packages/cli: exclude tests from build + +commit 9b56cc20c6a37b889ba4d57d43e97e152c320dab +Author: Kat Zhou <61153904+katz95@users.noreply.github.com> +Date: Thu Apr 9 09:15:09 2020 +0200 + + adding header (#519) + +commit 3f0e8c73494908ceef1a35801e1d11ef522bb797 +Merge: 429b7f08cb 6899f96db5 +Author: Jose Balanza Martinez +Date: Wed Apr 8 23:44:11 2020 -0500 + + Merge branch 'remove_plugin_wip' of https://github.com/braulio-balanza/backstage into remove_plugin_wip + +commit 429b7f08cb604aad22bad8296874ec6d6c8f33d1 +Author: Jose Balanza Martinez +Date: Wed Apr 8 23:43:31 2020 -0500 + + Fixed some lint issues + +commit 6899f96db5df8b0c186aafa1f0fa62712c2de49e +Author: Jose Balanza Martinez +Date: Wed Apr 8 23:41:16 2020 -0500 + + Ficed some lint issues + +commit a04533e08e88f4a15a46f9f58777d0c3f922f822 +Merge: 4dcb689f2e 169ecbe2f0 +Author: Jose Balanza Martinez +Date: Wed Apr 8 23:34:53 2020 -0500 + + Merge branch 'remove_plugin_wip' of https://github.com/braulio-balanza/backstage into remove_plugin_wip + +commit 4dcb689f2e078e0d620a843ecd2ba58710d5c70f +Merge: 08a0f6fe8a 84340367c4 +Author: Jose Balanza Martinez +Date: Wed Apr 8 23:33:11 2020 -0500 + + Merge branch 'master' of https://github.com/spotify/backstage into remove_plugin_wip + +commit 08a0f6fe8a1ce1c1f8b80d9079824ce0563caf96 +Author: Jose Balanza Martinez +Date: Wed Apr 8 23:32:41 2020 -0500 + + Added unit tests for remove-plugin + +commit 169ecbe2f0cb55828bfd709aa5a430b2fd872990 +Author: Jose Balanza Martinez +Date: Wed Apr 8 23:31:13 2020 -0500 + + Added unit tests for remove-plugin + +commit 083f104946483f982387457038029d4ff4fe15b0 +Author: Jose Balanza Martinez +Date: Wed Apr 8 23:30:26 2020 -0500 + + removePlugin.ts now uses Task helper + +commit 6104ff9988d6094f70cc5fa9e8896c9d506ac49a +Author: blam +Date: Thu Apr 9 04:56:08 2020 +0200 + + chore: missed one small part + +commit e805eafa420ba12b9f033446c0bcfb9985381d0c +Author: blam +Date: Thu Apr 9 04:37:15 2020 +0200 + + feat: update the templates to default to named exports for new plugins + +commit 0d27c0dfda8759395dde38f81437b6e3c7d188e7 +Author: blam +Date: Thu Apr 9 04:37:06 2020 +0200 + + chore: need to fix the import on the tests + +commit 0feee2b1a96302c35e5e64f07002d266ff5cd786 +Author: blam +Date: Thu Apr 9 04:36:55 2020 +0200 + + feat: fixes #523. Remove the default export from plugins + +commit 84340367c497343ffd774a8ecefdb4ae474e4428 +Author: Patrik Oldsberg +Date: Wed Apr 8 22:28:02 2020 +0200 + + packages/cli: added some development docs to the readme (#521) + +commit 27d95244caffe356398634f4551287b04a52cea1 +Merge: 05ddedb0ad f6d3c5ca4f +Author: Paul Marbach +Date: Wed Apr 8 14:56:37 2020 -0400 + + Merge pull request #461 from spotify/lighthouse-plugin + + Add plugin for lighthouse-audit-service + +commit 7ce324581c3c2dc5f0e31e4d4530d3c4b1a9cec1 +Merge: e67bfd1349 05ddedb0ad +Author: Jose Balanza Martinez +Date: Wed Apr 8 13:45:12 2020 -0500 + + X + Merge branch 'master' of https://github.com/spotify/backstage into remove_plugin_wip + +commit e67bfd134936d62b9fad53df342d1d0ccc9d5145 +Author: Jose Balanza Martinez +Date: Wed Apr 8 13:13:26 2020 -0500 + + Merge branch 'master' of https://github.com/spotify/backstage into remove_plugin_wip + +commit f6d3c5ca4f37b142842a6e6702a17bea16521122 +Author: Paul Marbach +Date: Wed Apr 8 12:03:25 2020 -0400 + + test: update lint config to extend cli config explicitly for plugins + +commit 1d6765e04408e24e52349eba18b16884f762e6ca +Author: Paul Marbach +Date: Wed Apr 8 10:18:46 2020 -0400 + + thank you for the comments, @freben + +commit 06228b71e95418f13bf1616db68e21196bf28498 +Author: Paul Marbach +Date: Mon Apr 6 12:07:25 2020 -0400 + + feat: implement Lighthouse plugin using lighthouse-audit-service + +commit 05ddedb0adbcde5f11f18fd5feaead214ca95f77 (tag: v0.1.1-alpha.3) +Merge: 84de6789d0 56ab5e3296 +Author: Patrik Oldsberg +Date: Wed Apr 8 15:38:26 2020 +0200 + + Merge pull request #520 from spotify/rugvip/release + + Release v0.1.1-alpha.3 + +commit 56ab5e32962eaed8de5e92b75184bd6935ad7150 +Author: Patrik Oldsberg +Date: Wed Apr 8 15:16:27 2020 +0200 + + v0.1.1-alpha.3 + +commit 84de6789d01510db86cd98193b9c4aff3133bcfc +Merge: 9504dd7cfd 2519ad4dd2 +Author: Kat Zhou <61153904+katz95@users.noreply.github.com> +Date: Wed Apr 8 15:11:10 2020 +0200 + + Merge pull request #513 from spotify/katz95-patch-1 + + Update design.md + +commit 9504dd7cfd6e13baf520aa3afbc0f4931be90a19 +Merge: 891f49ae09 b7545fa562 +Author: Kat Zhou <61153904+katz95@users.noreply.github.com> +Date: Wed Apr 8 15:10:59 2020 +0200 + + Merge pull request #517 from spotify/katz95-patch-2 + + header for design.md + +commit 891f49ae09c63d47dcaf2dcc4f2eac7f99d9a1f0 +Merge: aa289e43e0 b0e7068578 +Author: Patrik Oldsberg +Date: Wed Apr 8 14:52:59 2020 +0200 + + Merge pull request #516 from spotify/rugvip/relative + + packages,plugins: make src-relative imports work everywhere + +commit aa289e43e02e2e908d9c5d30f00444b02b16492a +Merge: 28dacb05fe f5d0be0154 +Author: Patrik Oldsberg +Date: Wed Apr 8 13:12:08 2020 +0200 + + Merge pull request #518 from spotify/change-to-app + + Plugin -> app + +commit f5d0be01540ae1f0a28d7ed5bc0ff89673df2178 +Author: Raghunandan +Date: Wed Apr 8 11:59:26 2020 +0200 + + PLugin -> app + +commit b7545fa56210c2e0e7a2296134af8739bfa24d32 +Author: Kat Zhou <61153904+katz95@users.noreply.github.com> +Date: Wed Apr 8 09:37:47 2020 +0200 + + header for design.md + +commit 6088dd72a217deba05f9dd010123152b5fac5935 +Merge: 69298e221b 28dacb05fe +Author: Jose Balanza Martinez +Date: Tue Apr 7 20:05:57 2020 -0500 + + Index.ts reflects .action(actionhandler()) change + +commit b0e7068578058b56800ae48654394d9c61539a15 +Author: Patrik Oldsberg +Date: Tue Apr 7 23:49:05 2020 +0200 + + packages/core: switch to more src-relative imports + +commit b7814caa5d16d384e150c1ccb50ce7b5a8210a66 +Author: Patrik Oldsberg +Date: Tue Apr 7 23:49:24 2020 +0200 + + plugins: use src-relative imports + +commit 7ed9444de83d980b5e3567360e84c2e86075d556 +Author: Patrik Oldsberg +Date: Tue Apr 7 23:43:41 2020 +0200 + + packages,plugins: make src-relative imports work everywhere + +commit 7463309e58db12cd648d7aafefca2853e45208bd +Author: Patrik Oldsberg +Date: Wed Apr 8 00:41:11 2020 +0200 + + packages/storybook: make src-relative imports work + +commit 2519ad4dd25e1a335e2ef1ff3703c309a17173d8 +Author: Kat Zhou <61153904+katz95@users.noreply.github.com> +Date: Tue Apr 7 23:01:27 2020 +0200 + + Update design.md + +commit 28dacb05feab887064cc11c4340f62c7305a5a5d +Merge: 7a5a657820 d56ee5a157 +Author: Patrik Oldsberg +Date: Tue Apr 7 21:00:56 2020 +0200 + + Merge pull request #501 from spotify/stefanalund-patch-1 + + Link to Design from README + +commit 7a5a6578205a27670746f105539cf3093fb129e6 +Merge: bbc3d94f54 89494ad4cd +Author: Patrik Oldsberg +Date: Tue Apr 7 19:02:54 2020 +0200 + + Merge pull request #511 from spotify/rugvip/cba + + fixes for create-app + +commit bbc3d94f54700bf88614928ebf906d0389d728a2 +Merge: 22d7fe5ac5 3bc25560f7 +Author: Patrik Oldsberg +Date: Tue Apr 7 19:02:32 2020 +0200 + + Merge pull request #512 from spotify/rugvip/dirty + + packages/cli: treat untracked input dirs as dirty + +commit 3bc25560f76d55a72d7afaaea85297ef14e24f0b +Author: Patrik Oldsberg +Date: Tue Apr 7 18:39:08 2020 +0200 + + packages/cli: treat untracked input dirs as dirty + +commit 83fb6402078409d48b1a5bbddf2fbac3bcf31bac +Author: Patrik Oldsberg +Date: Tue Apr 7 17:22:06 2020 +0200 + + packages/test-utils: add tests for logCollector + +commit 742e94a7542a55092394ee6dd1d990f0a667d7d1 +Author: Patrik Oldsberg +Date: Tue Apr 7 17:15:44 2020 +0200 + + packages/test-utils: port logCollector to TS + +commit 22d7fe5ac57088bb3e86b061717316d37e62ae93 +Merge: cc4d4a403e 29094608c2 +Author: Patrik Oldsberg +Date: Tue Apr 7 18:08:43 2020 +0200 + + Merge pull request #505 from spotify/rugvip/test-utils + + packages/testUtils: renamed dir to test-utils + +commit 89494ad4cd62f8b5679efc72a970ce184d4648cd +Author: Patrik Oldsberg +Date: Tue Apr 7 18:06:49 2020 +0200 + + packages/cli: updated deps of scaffolded app plugin + +commit 43d3388238b7d05c8a3e901aae4fc08a124e3456 +Author: Patrik Oldsberg +Date: Tue Apr 7 18:06:21 2020 +0200 + + packages/cli: fix scaffolded app main and types fields + +commit 1275e438771e1b45727821345768854965808f74 +Author: Patrik Oldsberg +Date: Tue Apr 7 18:05:45 2020 +0200 + + packages/cli: fix WelcomePage using old props in scaffolded app + +commit 53fed5a17c7e256d83753945ec7a03674cbb812f +Author: Patrik Oldsberg +Date: Tue Apr 7 18:05:21 2020 +0200 + + backstage/cli: add common tsconfig + +commit 29094608c2453d1e463d43e7be3ee070ee2c0248 +Author: Patrik Oldsberg +Date: Tue Apr 7 16:31:08 2020 +0200 + + packages/testUtils: renamed dir to test-utils + +commit cc4d4a403e87e8f5ccc90be29f2d7b81b47574eb +Merge: e58f27786d 27fd679b74 +Author: Patrik Oldsberg +Date: Tue Apr 7 17:22:37 2020 +0200 + + Merge pull request #504 from spotify/rugvip/nowrap + + packages: no need to wrap plugin builds with build-cache + +commit e58f27786d779f73aaf155eaef254d6545155afe +Merge: f7a09ceb96 022e71575b +Author: Paul Marbach +Date: Tue Apr 7 11:11:06 2020 -0400 + + Merge pull request #508 from spotify/circ-dep + + fix: circular dependency came back (test-utils => core => test-utils) + +commit f7a09ceb966c41f4e7f6707ac648b350d4f43979 +Author: Kat Zhou <61153904+katz95@users.noreply.github.com> +Date: Tue Apr 7 16:58:07 2020 +0200 + + Update design.md (#507) + +commit 022e71575bc89853ea082aacd57d7fa5a631eb5d +Author: Paul Marbach +Date: Tue Apr 7 10:56:19 2020 -0400 + + fix: circular dependency came back + +commit 27fd679b74b7cf39317f0ac5fbc2a951ee1e3e77 +Author: Patrik Oldsberg +Date: Tue Apr 7 16:32:24 2020 +0200 + + packages: no need to wrap plugin builds with build-cache + +commit a204fa25c6bc08f06f7a3526e676ffb43abe6a7e +Merge: 2b5db56e06 927f54129a +Author: Patrik Oldsberg +Date: Tue Apr 7 16:29:11 2020 +0200 + + Merge pull request #487 from spotify/test-utils-package + + extract test-utils as its own package for use with plugins, etc. + +commit 2b5db56e06ec8c12ff71df4d3aea509902e5eae9 +Author: Kat Zhou <61153904+katz95@users.noreply.github.com> +Date: Tue Apr 7 16:24:39 2020 +0200 + + Update design.md (#502) + +commit 927f54129ac42f021a465cc64398e89f14ea1b41 +Author: Paul Marbach +Date: Mon Apr 6 14:14:28 2020 -0400 + + extract test-utils as its own package for use with plugins, etc. + +commit 4330c7cf07031c34f64429f6ea7cefbc553e9194 +Author: Kat Zhou <61153904+katz95@users.noreply.github.com> +Date: Tue Apr 7 15:59:43 2020 +0200 + + Update design.md (#499) + +commit 4921a161ed4b17f02b474fe777e52a32ba8e44fb +Author: Kat Zhou <61153904+katz95@users.noreply.github.com> +Date: Tue Apr 7 15:59:19 2020 +0200 + + Update README.md (#500) + +commit d56ee5a157eea9c50e22e120bf287f8159647a6e +Author: Stefan Ålund +Date: Tue Apr 7 15:57:35 2020 +0200 + + Link to Design from README + +commit b75d2dea176064da251a3d5b39815f6018186cd0 +Merge: e2293a3db7 6c32c51456 +Author: Kat Zhou <61153904+katz95@users.noreply.github.com> +Date: Tue Apr 7 15:51:08 2020 +0200 + + Merge pull request #497 from spotify/katz95-patch-1 + + Create design.md + +commit e2293a3db75377731e2b1541060af81ebf54ba2c +Author: Kat Zhou <61153904+katz95@users.noreply.github.com> +Date: Tue Apr 7 15:44:08 2020 +0200 + + DLS image (#498) + +commit 6c32c514561b6a593374e0468ee41e28a9a1b792 +Author: Kat Zhou <61153904+katz95@users.noreply.github.com> +Date: Tue Apr 7 15:04:41 2020 +0200 + + Create design.md + +commit bf806733cc89e58b30034ae137d514cda106ddf8 (tag: v0.1.1-alpha.2) +Merge: 814f9fa365 3b9b16c952 +Author: Patrik Oldsberg +Date: Tue Apr 7 13:37:06 2020 +0200 + + Merge pull request #496 from spotify/rugvip/release + + Release v0.1.1-alpha.2 + +commit 3b9b16c9523a34529cebd2dd7b9cba54e221c641 +Author: Patrik Oldsberg +Date: Tue Apr 7 12:26:08 2020 +0200 + + v0.1.1-alpha.2 + +commit 814f9fa3653f94eb2e82ce14c815a4e00f4d83eb +Merge: bbcd7da0fa 884a36179e +Author: Patrik Oldsberg +Date: Tue Apr 7 13:24:28 2020 +0200 + + Merge pull request #492 from spotify/rugvip/nocls + + packages/cli: avoid clearing screen in app-serve + +commit bbcd7da0fa96b952721b3641521699cff0563df1 +Merge: 1b49cd1f50 1fdba128c6 +Author: Patrik Oldsberg +Date: Tue Apr 7 13:23:50 2020 +0200 + + Merge pull request #490 from spotify/rugvip/with-cache + + packages/cli: make plugin:build have built-in caching + +commit 1b49cd1f501d22fe056bd06ed47638d80b548004 +Merge: ce66fda73d fe3254e165 +Author: Patrik Oldsberg +Date: Tue Apr 7 12:08:01 2020 +0200 + + Merge pull request #491 from spotify/rugvip/with-build + + packages/cli: add build option to watchDeps and use for app serve + +commit ce66fda73da345c1928b88504f48b88f0f7974cc +Merge: 007c7275d0 af882489e2 +Author: Patrik Oldsberg +Date: Tue Apr 7 12:07:35 2020 +0200 + + Merge pull request #486 from spotify/rugvip/cache-version + + packages/cli: add cli version to build-cache key + +commit 007c7275d060771f627cbf294b309e906b41cd0a +Merge: 3e20a1e1da 5f79ec4112 +Author: Patrik Oldsberg +Date: Tue Apr 7 11:53:14 2020 +0200 + + Merge pull request #485 from spotify/rugvip/cli-speed + + packages/cli: lazy-load commands to speed up cli boot time + +commit 3e20a1e1da9b3c12c846f6c60a8b24b0fde0d4b2 +Author: Patrik Oldsberg +Date: Tue Apr 7 11:20:15 2020 +0200 + + packages/cli/bin: add copyright notice (#494) + +commit ad977c10dd7e392593c97390ccbda0b57decce31 +Author: Patrik Oldsberg +Date: Tue Apr 7 11:10:31 2020 +0200 + + scripts/cli-e2e-test: fixed some flakiness (#493) + +commit 742ad4cb45f2b2f645cae987a4b188b181817224 +Merge: e4a2309f77 d04453ecad +Author: Patrik Oldsberg +Date: Tue Apr 7 11:05:08 2020 +0200 + + Merge pull request #484 from spotify/rugvip/relatives + + packages/cli: make src-relative imports work + +commit 1fdba128c60d3bc9acb8228c169d6fbc6da35de3 +Author: Patrik Oldsberg +Date: Tue Apr 7 10:47:46 2020 +0200 + + packages,plugins: separate build:watch is no longer needed + +commit 884a36179eb193c6b79be39b80433359b9ae2fac +Author: Patrik Oldsberg +Date: Tue Apr 7 01:05:54 2020 +0200 + + packages/cli: avoid clearing screen in app-serve + +commit fe3254e16578ec99d1bfb7c5f3a9dd1c0a6234a1 +Author: Patrik Oldsberg +Date: Tue Apr 7 00:40:41 2020 +0200 + + packages/cli: add build option to watchDeps and use for app serve + +commit f5ddb991053fdeebb30a45712f01dd0e581ef330 +Author: Patrik Oldsberg +Date: Tue Apr 7 10:06:00 2020 +0200 + + packages/cli: remove output dir before building with cache + +commit 08a5023ad445e66b22bc6f83577e9ebe60cbac3e +Author: Patrik Oldsberg +Date: Tue Apr 7 00:01:56 2020 +0200 + + packages/cli: make plugin:build have built-in caching + +commit 98dea870e6d148caa1fb5b1ffc3f3466b4aec791 +Author: Patrik Oldsberg +Date: Tue Apr 7 00:00:14 2020 +0200 + + packages/cli: refactor build-cache to have a reusable withCache function + +commit af882489e2d098377f9fe2dc41f97a41d8f4e246 +Author: Patrik Oldsberg +Date: Mon Apr 6 17:04:11 2020 +0200 + + packages/cli: add cli version to build-cache key + +commit e4a2309f77980be763eab61e1610be3fbad4b28d +Merge: bc4f6ea3ad 1ba27fb541 +Author: Patrik Oldsberg +Date: Mon Apr 6 23:35:19 2020 +0200 + + Merge pull request #481 from spotify/rugvip/dockerfile + + dockerfile: add comment with some instructions on how to run + +commit bc94014e03251d85c241649b5e65637d492f391b +Author: Patrik Oldsberg +Date: Mon Apr 6 16:57:53 2020 +0200 + + packages/cli: added version helper + +commit 5f79ec4112daf5466a44390e990fa7e37a03359d +Author: Patrik Oldsberg +Date: Mon Apr 6 16:48:10 2020 +0200 + + packages/cli: lazy-load commands to speed up cli boot time + +commit d04453ecad66d470b2d297b69384d8b5fc5fcb94 +Author: Patrik Oldsberg +Date: Mon Apr 6 15:40:21 2020 +0200 + + packages/cli: use src-relative imports + +commit 28b576967cd54380a70f045b4eda06fc80d45b71 +Author: Patrik Oldsberg +Date: Mon Apr 6 15:36:38 2020 +0200 + + packages/cli: make src-relative imports work + +commit bc4f6ea3ad05df49e4278b0b0da41207bb533eca +Merge: 0d93dde6ba 6bb0e05998 +Author: Patrik Oldsberg +Date: Mon Apr 6 15:58:59 2020 +0200 + + Merge pull request #478 from spotify/rugvip/core-build + + packages/cli: update plugin:build make deps external and work with .js + use to build core + +commit 0d93dde6bac075a25b17b24074c209f8d2ebd9d3 +Author: Stefan Ålund +Date: Mon Apr 6 15:07:36 2020 +0200 + + Storybook for ProgressCard (#477) + + * Storybook for ProgressCard + + * Update ProgressCard.stories.tsx + + * Fix import + +commit f8ac148f97205fb5e8d9be3328da12391e3ff0c4 +Author: Mateus Marquezini +Date: Mon Apr 6 09:05:14 2020 -0300 + + Document how to contribute to Storybook (#482) + + * #448 added new section to contribute to storybook + + * #448 added linked file + + * #448 improvements in the contributing to storybook section + + * #448 improvements in the contributing to storybook section + + * #448 improvements in the contributing to storybook section + + * #448 improvements in the contributing to storybook section + + * #448 improvements in the contributing to storybook section + +commit 6bb0e0599899805c42a40d2ce9771b3a59c1c0b2 +Author: Patrik Oldsberg +Date: Sun Apr 5 15:29:36 2020 +0200 + + packages/core: use plugin:build to build + +commit 4e93e61e7ecdc7101656dac777624b30d78db6c6 +Author: Patrik Oldsberg +Date: Sun Apr 5 15:29:13 2020 +0200 + + packages/cli/commands/plugin: include js in typescript compilation + exclude testUtils + +commit 41dff573c60a7c12f736273159160f6e458d5853 +Author: Patrik Oldsberg +Date: Sun Apr 5 15:23:47 2020 +0200 + + packages/cli/commands/plugin: make package dependencies external too + +commit 38a4b96bd91d5e885ad7eb91b2a075c020e0d3a0 +Author: Patrik Oldsberg +Date: Sun Apr 5 15:22:00 2020 +0200 + + packages/core/icons: fix circular dependency + +commit f78a3bd9a1bc28903191093ac61945622a987195 +Author: Patrik Oldsberg +Date: Sun Apr 5 15:21:12 2020 +0200 + + packages/cli: move typescript build config to tsconfig + +commit 1ba27fb5410d1cbcc7b0f4b3c4e65664e66d2d22 +Author: Patrik Oldsberg +Date: Mon Apr 6 12:19:48 2020 +0200 + + dockerfile: add some instructions on how to run + +commit 86f02fe577b49ef4232a96ca9cb5f400b899948a +Merge: eed88be2ba f380f1bdf1 +Author: Marcus Eide +Date: Mon Apr 6 08:58:17 2020 +0200 + + Merge pull request #457 from spotify/eide/docs-create-app + + Add documentation for how to create an app + +commit eed88be2ba2b3b2f8abfd9230462810f1ca45228 +Author: Stefan Ålund +Date: Mon Apr 6 08:18:05 2020 +0200 + + Make link to Discord more prominent (#480) + +commit 98fb97717ddfaf21447cf2d8ee42f92a9dd5a9b8 +Author: Stefan Ålund +Date: Sun Apr 5 22:25:54 2020 +0200 + + Add Storybook item for HorizontalScrollGrid (#475) + + * Add Storybook item for HorizontalScrollGrid + + * Add Lifecycle's as well + + * Remove value in bool prop + + * Update index.ts + + * Fixed comments + +commit cdf7d4ed39ab530ed2450aae3c7c232dacc4efcf +Merge: 2065d17608 7002aa568c +Author: Stefan Ålund +Date: Sun Apr 5 21:16:49 2020 +0200 + + Merge pull request #459 from spotify/stefanalund-patch-1 + + Add question to FAQ + +commit 7002aa568c04ea6cbf3ac624c35d9d1b948b1e39 +Author: Stefan Ålund +Date: Sun Apr 5 17:08:40 2020 +0200 + + Update FAQ.md + +commit 2065d17608192b13256bccbf5cbe8a5f25b29dd3 +Merge: ce6c53afbe 48e2dc7dfd +Author: Patrik Oldsberg +Date: Sun Apr 5 16:36:51 2020 +0200 + + Merge pull request #474 from spotify/rugvip/import-lint + + cli: add import and monorepo lint rules to avoid bad imports and missing deps + +commit ce6c53afbe38135d1bc3d2a02d6aa612ab5dbb79 +Merge: 1247fa3280 682871fdbc +Author: Stefan Ålund +Date: Sun Apr 5 16:34:47 2020 +0200 + + Merge pull request #476 from spotify/stefanalund-patch-2 + + Add missing fields to new UX template + +commit 682871fdbc6bb146c1278b5483eca2067bbf5c2d +Author: Stefan Ålund +Date: Sun Apr 5 16:26:21 2020 +0200 + + Update ux-component_template.md + +commit 48e2dc7dfd0953b33cfcc18116a4f99f817c0acf +Author: Patrik Oldsberg +Date: Sun Apr 5 16:00:46 2020 +0200 + + packages/cli: add missing react-use dep to plugin template + +commit 44a959edc65c5ee68f1203ae2f4e770ec550f259 +Author: Stefan Ålund +Date: Sun Apr 5 15:45:14 2020 +0200 + + Update ux-component_template.md + +commit 3d706b9c7ae8c0f1f198a35bb667353dcd6e6726 +Author: Stefan Ålund +Date: Sun Apr 5 15:43:56 2020 +0200 + + Add missing fields to new UX template + +commit 04f5aa3763d901ce7427855cbe48ac218de37e85 +Author: Patrik Oldsberg +Date: Sun Apr 5 14:16:35 2020 +0200 + + packages/app: fix deps and update cypress lint rules + +commit acdea56c7fdd8fe165fecef0b9837ccdd23becd6 +Author: Patrik Oldsberg +Date: Sun Apr 5 14:09:34 2020 +0200 + + packages/core: fix dependencies and imports + +commit 2fa455bcd0bd80fc38339a5b54e4050fc8e850e0 +Author: Patrik Oldsberg +Date: Sun Apr 5 14:08:43 2020 +0200 + + packages/cli: fix dependencies + +commit 6a6074bedd7198d4e1e04c8319f0bea9e1ed03d5 +Author: Patrik Oldsberg +Date: Sun Apr 5 11:07:24 2020 +0200 + + cli/config/eslint: add import and monorepo lint rules to avoid bad imports and missing deps + +commit 73e7f751b7a355288fb9750c5661eddb4f4968e2 +Author: Patrik Oldsberg +Date: Sun Apr 5 11:16:03 2020 +0200 + + package: add test:all and lint:all + +commit 1247fa3280e86445f22c1ec78520aba6ef74e766 +Merge: e6da7096bc 6e3d0ed523 +Author: Stefan Ålund +Date: Sun Apr 5 11:09:11 2020 +0200 + + Merge pull request #473 from spotify/katz95-patch-1 + + Create ux-component_template.md + +commit 6e3d0ed52383afa60e5dec0986f01c79cbe6eb03 +Author: Kat Zhou <61153904+katz95@users.noreply.github.com> +Date: Sat Apr 4 20:14:54 2020 +0200 + + Create ux-component_template.md + + Template for designers to request for UX components to be added to the Backstage Storybook. + +commit e6da7096bc2a2f66c257b3908a466215e65ce482 +Merge: 73d8d24414 8f8e3eee96 +Author: Patrik Oldsberg +Date: Sat Apr 4 09:46:09 2020 +0200 + + Merge pull request #470 from spotify/rugvip/pr + + github/workflows: trigger on default pull_request event types + +commit 8f8e3eee964feaaedec70d97807beee0446ce87a +Author: Patrik Oldsberg +Date: Sat Apr 4 09:16:05 2020 +0200 + + github/workflows: trigger on default pull_request event types + +commit 73d8d2441451874469151feef5a598c17928bf59 +Merge: 96767192f4 32072ad429 +Author: Stefan Ålund +Date: Sat Apr 4 08:40:12 2020 +0200 + + Merge pull request #467 from spotify/eslint-config-oss + + chore: use eslint-config-oss + +commit 69298e221b2b66921adef1577ae1488db1fc953c +Merge: f7967c6d17 96767192f4 +Author: Jose Balanza Martinez +Date: Fri Apr 3 22:23:16 2020 -0600 + + Merge branch 'master' of https://github.com/spotify/backstage into remove_plugin_wip + +commit 32072ad4295a804c389ec09c18aa705589fc3024 +Author: Paul Marbach +Date: Fri Apr 3 11:50:49 2020 -0400 + + chore: use eslint-config-oss + +commit 96767192f4c086711898882077a15be266d9e735 (tag: v0.1.1-alpha.1) +Merge: db79d0f387 728e6637b7 +Author: Patrik Oldsberg +Date: Fri Apr 3 17:51:51 2020 +0200 + + Merge pull request #466 from spotify/rugvip/private + + plugins: switch back to private to fix master build + +commit 728e6637b7cf958375d8d2b2042500ed767a65c8 +Author: Patrik Oldsberg +Date: Fri Apr 3 17:32:52 2020 +0200 + + plugins: switch back to private to fix master build + +commit db79d0f387a6f6733330d1641958bcc26b73c979 +Merge: 4a6b581bfb 66f4cda22c +Author: Patrik Oldsberg +Date: Fri Apr 3 15:24:38 2020 +0200 + + Merge pull request #465 from spotify/rugvip/release + + Release v0.1.1-alpha.1 + +commit 4a6b581bfb9e7a6fa32bec384c467ecc9289041d +Merge: 12b72d06be c80074cfdf +Author: Niklas Ek +Date: Fri Apr 3 15:12:41 2020 +0200 + + Merge pull request #430 from Buddhalow/feature/dark-mode + + Implemented dark mode + +commit f380f1bdf18531aab4237f8b61fb77f7b15de81d +Author: Marcus Eide +Date: Fri Apr 3 14:52:21 2020 +0200 + + More comments + +commit 66f4cda22c36030852f9d3fd0f35e2d3a3cdd914 +Author: Patrik Oldsberg +Date: Fri Apr 3 14:40:04 2020 +0200 + + plugins: fix core peer-dep version + +commit 29f2bc27351e52c175367d7fc79098c766e81b09 +Author: Patrik Oldsberg +Date: Fri Apr 3 14:37:54 2020 +0200 + + v0.1.1-alpha.1 + +commit 46e7969dd2c9ed8b272bcfb8cc3a7e5ffbbdcc29 +Author: Marcus Eide +Date: Fri Apr 3 14:32:30 2020 +0200 + + Review comments + +commit 12b72d06be62bd1a97ef58ee5e1e0f7daa1cf87a +Merge: 0193bfb788 70ac8c3402 +Author: Marcus Eide +Date: Fri Apr 3 14:30:51 2020 +0200 + + Merge pull request #463 from spotify/eide/rollup-json + + Configure rollup resolve plugin + +commit 70ac8c34022df85f29f15b2496cca42ae49f71f6 +Author: Marcus Eide +Date: Fri Apr 3 14:15:07 2020 +0200 + + Configure rollup resolve plugin + +commit 0193bfb78874a8f57315d79640cfea48e251b5eb +Merge: 156764e916 bcc150a36c +Author: Patrik Oldsberg +Date: Fri Apr 3 14:00:50 2020 +0200 + + Merge pull request #462 from spotify/eide/rollup-json + + Add json plugin to rollup + +commit 156764e9161573ebe828de467bbd0aae6a4e159f +Merge: 4de303a2bb a8e96391b2 +Author: Stefan Ålund +Date: Fri Apr 3 13:47:51 2020 +0200 + + Merge pull request #440 from hooloovooo/feature/407-infocard + + InfoCard TypeScript rewrite + +commit bcc150a36c39abfd3995a03faf31fbc818503e20 +Author: Marcus Eide +Date: Fri Apr 3 13:16:25 2020 +0200 + + Add json plugin to rollup + +commit ea2e4fec53d0de284cc88f6f24a3726f5e4336e8 +Author: Marcus Eide +Date: Fri Apr 3 11:40:16 2020 +0200 + + Reword frontend to app + +commit 4de303a2bbe682e88c529f083e53c8c68f6d3a66 +Merge: e4433c431e 3be5e9ade3 +Author: Stefan Ålund +Date: Fri Apr 3 10:35:58 2020 +0200 + + Merge pull request #449 from spotify/alund/story + + Storybook: wrap InfoCards to fix width + +commit e4433c431ec2b4c8ff8d2c59dac01f3283bbc72e +Merge: 808f6b873b 091322b76a +Author: Stefan Ålund +Date: Thu Apr 2 20:30:51 2020 +0200 + + Merge pull request #460 from spotify/Rugvip-patch-1 + + github/pr-template: remove codeowners checkbox + +commit 808f6b873bfdc22ce6c90be3f2da4ed5ea88ddc0 +Merge: 3f1484d819 60d504978e +Author: Stefan Ålund +Date: Thu Apr 2 20:24:34 2020 +0200 + + Merge pull request #458 from hmartinez69/master + + Storybook background color changed for better lisibility - Issue #450 + +commit 091322b76acaa3e01b52d2dff224435d1aa6d821 +Author: Patrik Oldsberg +Date: Thu Apr 2 20:06:36 2020 +0200 + + github/pr-template: remove codeowners checkbox + +commit 2e63a0209470eacc7a99e7797b68e18ef41d104e +Author: Stefan Ålund +Date: Thu Apr 2 20:05:00 2020 +0200 + + Add question to FAQ + +commit 3f1484d8193bbdabae7ac846fee01f41a10b995c +Merge: 890deeee7d 0f0e9b3afb +Author: Patrik Oldsberg +Date: Thu Apr 2 19:28:05 2020 +0200 + + Merge pull request #446 from tarcinil/fix/443/remove-build + + updating dockerfile and creating task to build the image from the host + +commit 0f0e9b3afbf18cdde5a5427e7911f65ffcc61f24 +Author: Patrik Oldsberg +Date: Thu Apr 2 19:23:35 2020 +0200 + + package: switch docker-build to use bundle script + +commit 562302e5f42c3c49d7998ccbaf38198600711b5e +Merge: 91aa322c88 890deeee7d +Author: Patrik Oldsberg +Date: Thu Apr 2 19:19:41 2020 +0200 + + Merge branch 'master' into fix/443/remove-build + +commit 60d504978e46f61454c602f37ce3388523e01c2f +Author: hugomartinez +Date: Thu Apr 2 18:46:02 2020 +0200 + + Storybook background color changed for better lisibility - Issue #450 + +commit 90dc161870c791a68890c93b2256ec66c46df5c6 +Author: Marcus Eide +Date: Thu Apr 2 16:33:29 2020 +0200 + + Add documentation for how to create an app + +commit 890deeee7d43b5be25318d5e019389577c34bd83 +Merge: 07cbdd8554 1f8b01effe +Author: Patrik Oldsberg +Date: Thu Apr 2 15:04:23 2020 +0200 + + Merge pull request #453 from spotify/rugvip/paths + + packages/cli: add utility for resolving paths and use everywhere + +commit 1f8b01effe140045ae47e82de07154239f50911c +Author: Patrik Oldsberg +Date: Thu Apr 2 14:36:24 2020 +0200 + + packages/cli: add utility for resolving paths and use everywhere + +commit 3be5e9ade37c15a238c61c9c008104cc3cb19092 +Author: Stefan Ålund +Date: Thu Apr 2 13:53:33 2020 +0200 + + Storybook: wrap InfoCards to fix width + +commit 07cbdd8554b0800c7df652835a3e9e7ef42d639e +Merge: 7836be9942 e62618c919 +Author: Niklas Ek +Date: Thu Apr 2 12:42:44 2020 +0200 + + Merge pull request #387 from spotify/mob/roll2 + + Improve the plugin build script with rollup + +commit 7836be9942f0254b90e56baf35318ea7c3348fdd +Merge: 66a95bc586 3404afcd1e +Author: Patrik Oldsberg +Date: Thu Apr 2 12:09:16 2020 +0200 + + Merge pull request #445 from spotify/rugvip/ci-fixes + + workflows: run lerna directly and fix master build + run build before tests locally + +commit 66a95bc586c2e7a03d589fe1ec68ea43bffb570f +Merge: d9d1d3fb76 43a523cc58 +Author: Patrik Oldsberg +Date: Thu Apr 2 12:07:22 2020 +0200 + + Merge pull request #442 from spotify/rugvip/e2e-output + + script/cli-e2e-test: better error output when page load fails + +commit d9d1d3fb76028145e6cf0901b1c34d24ebc0af44 +Merge: 638baa1f86 4fbc5a4284 +Author: Patrik Oldsberg +Date: Thu Apr 2 12:07:06 2020 +0200 + + Merge pull request #447 from spotify/rugvip/watch-fix + + packages/core: fix watch mode + +commit e62618c9198fdc5fb4df1e4f1782e040d36a0167 +Author: nikek +Date: Thu Apr 2 11:57:14 2020 +0200 + + add separate import and export in createPlugin + +commit 3404afcd1eea9c9bb90a2e74858b3a9083f50040 +Author: Patrik Oldsberg +Date: Wed Apr 1 23:16:44 2020 +0200 + + package: simplify lint and test scripts + run build before tests + +commit ab827f36e1909f6c96965f0f86cac03441949cec +Author: Patrik Oldsberg +Date: Wed Apr 1 23:10:22 2020 +0200 + + package,github/workflows: add root lerna command and use in github workflows + fix master + +commit 4fbc5a4284f8674b8a426c7f43119db46dbcf7b2 +Author: Patrik Oldsberg +Date: Thu Apr 2 11:36:15 2020 +0200 + + packages/core: fix watch mode + +commit a8ce7564fac29d916644f1ac5fbc5dd7f374d4d3 +Author: nikek +Date: Thu Apr 2 11:15:06 2020 +0200 + + add notice to plugins.ts + +commit a8e96391b209ad5836003ac1a38434e171bda762 +Author: Sebastian Qvarfordt +Date: Thu Apr 2 11:14:02 2020 +0200 + + Prettier + +commit dc9462cf2fa703a481459db98d22ce8f8a0eda73 +Author: Sebastian Qvarfordt +Date: Thu Apr 2 11:12:49 2020 +0200 + + Removed classes property from card because material-ui did not like classes.header being set + +commit 385b89e121b23b9c61901856922b229b9f425ba5 +Merge: b380327169 638baa1f86 +Author: Sebastian Qvarfordt +Date: Thu Apr 2 11:10:41 2020 +0200 + + Merge branch 'master' of github.com:spotify/backstage into feature/407-infocard + +commit b380327169f1acbd52aa5668b4fe5364a34a03d2 +Author: Sebastian Qvarfordt +Date: Thu Apr 2 11:10:35 2020 +0200 + + Changes as suggested in PR and rewrite of BottomLink to TypeScript + +commit d2447eada852c348fefcd4352002417efef34fa6 +Author: nikek +Date: Thu Apr 2 10:46:29 2020 +0200 + + fix consistent return from plugin build + +commit 43f37a53a0138e6e0e181a2e49b1a00cd5613aac +Author: nikek +Date: Thu Apr 2 10:38:08 2020 +0200 + + add build:watch to package.json of plugins + +commit 91e8058c52d77faa7cdae223f1db22241acc3040 +Author: nikek +Date: Thu Apr 2 10:35:04 2020 +0200 + + refactor plugin build function + +commit 8c1c8d2f5a098a98493bb8aa8ac302f868e4061e +Author: nikek +Date: Thu Apr 2 10:29:52 2020 +0200 + + tweak types + +commit d4ac45b628f015372b1ec87f89ca527d41cfa58c +Author: nikek +Date: Wed Apr 1 23:24:11 2020 +0200 + + make rollup watch mode work + +commit e791907d1f17297e9a12304a8b98548f24d6480d +Author: nikek +Date: Wed Apr 1 11:32:56 2020 +0200 + + WIP watch mode + +commit d43414d68742e7b78500a6361dbb21fdedc20ece +Author: nikek +Date: Wed Apr 1 11:30:36 2020 +0200 + + put shared tsconfig in root config + +commit 8fffc427013ced8820a54e8a88d0d99f9e4b0cd6 +Author: nikek +Date: Wed Apr 1 10:33:53 2020 +0200 + + remove unnecessary comment + +commit 0b4c3fd90e8ab02041c1f983d31f03d13c6f51c6 +Author: nikek +Date: Tue Mar 31 18:30:47 2020 +0200 + + update yarn.lock for rollup deps + +commit 32a112d63b8c848113bd114efc2837a178e93dfb +Author: nikek +Date: Tue Mar 31 18:26:12 2020 +0200 + + rename build to dist again + +commit 4e747b0a19725665687b061ec7fd96ffb65fec37 +Author: nikek +Date: Tue Mar 31 18:08:43 2020 +0200 + + remove commented out code + +commit 701bfff609cb4d9f1671d15f32da983ac6132f75 +Author: nikek +Date: Tue Mar 31 18:07:42 2020 +0200 + + rename image to imageFiles to not confuse it with the image plugin + +commit dbb7ba14d1815fa7561202b6911cfcbc7eac4b13 +Author: nikek +Date: Tue Mar 31 18:06:18 2020 +0200 + + add circumflex accent to rollup types deps + +commit b3a7057191fae9945dbadc2446b40284e1dd5299 +Author: Raghunandan +Date: Tue Mar 31 14:48:32 2020 +0200 + + remove esm and use cjs output from plugins + +commit e4195998cef96d3564185c54fc81481f32bb8e9a +Author: Marcus Eide +Date: Tue Mar 31 11:48:25 2020 +0200 + + Fix tests by building two versions of plugins and importing/exporting seperatly + +commit 2f776924b44417fc763dace00c35387cc84b976f +Author: nikek +Date: Fri Mar 27 18:01:02 2020 +0100 + + add notice + +commit f28cfcf7d1e7204e4cfb0e3f0aed49b7021721ff +Author: nikek +Date: Fri Mar 20 16:24:35 2020 +0100 + + Add rollup for plugin build + +commit 638baa1f8666d072a39bd348440c1330eb261e44 +Merge: b96a8234b0 8bba411287 +Author: Stefan Ålund +Date: Thu Apr 2 07:46:22 2020 +0200 + + Merge pull request #439 from spotify/eide/cypress-types + + Pin cypress to 4.2.0 to fix typescript type conflict + +commit c80074cfdfed923d23a825a3e77f725e467379dc +Author: Alexander Forselius +Date: Thu Apr 2 07:14:41 2020 +0200 + + Added window.matchMedia to App.tsx + +commit 91aa322c880f03100cc772c32ffb9bdf1fe47a37 +Author: Vern Burton +Date: Wed Apr 1 19:25:33 2020 -0500 + + updating dockerfile and creating task to build the image from the host + +commit 488232ce738c7ccb22ee6ce56960e13a1f57e091 +Author: Patrik Oldsberg +Date: Wed Apr 1 22:57:48 2020 +0200 + + package: pretty + +commit b96a8234b032a2e75675d5ecb1138542efc0cf3d +Merge: 9015a1aa27 e96e95df66 +Author: Patrik Oldsberg +Date: Wed Apr 1 21:07:31 2020 +0200 + + Merge pull request #437 from spotify/rugvip/create-app + + cli: add create-app command + +commit d37fcc09706d78b4e0fb2439d25fb86b5e9a92b6 +Author: Alexander Forselius +Date: Wed Apr 1 19:41:12 2020 +0200 + + Added feature check for window.matchMedia + +commit 43a523cc5825a34ab3e4901c5e6597d0f1ee6f98 +Author: Patrik Oldsberg +Date: Wed Apr 1 18:24:10 2020 +0200 + + script/cli-e2e-test: better error output when page load fails + +commit 9015a1aa27398d690f46e925e00c79078c174861 +Merge: a7c8110356 07b06ed468 +Author: Patrik Oldsberg +Date: Wed Apr 1 18:00:26 2020 +0200 + + Merge pull request #441 from spotify/rugvip/bump + + bump yarn version + +commit 8bba4112877178f4c407c60c2120c084f1db5080 +Author: Patrik Oldsberg +Date: Wed Apr 1 16:53:11 2020 +0200 + + Revert "Specifically add types to tsconfig to fix build issue" + + This reverts commit 76fe4bf14d31ee021950288c0f2becfadb5dca7d. + +commit 869eb2c2862686ebde687ead8aa8b668c4ffbe6e +Author: Patrik Oldsberg +Date: Wed Apr 1 16:53:07 2020 +0200 + + package: pin cypress to 4.2.0 to avoid type issues in 4.3.0 + +commit 07b06ed4683ffc2a18d8b3ea308b56aa952127ec +Author: Patrik Oldsberg +Date: Wed Apr 1 16:42:20 2020 +0200 + + bump yarn version + +commit fedac3a758b01b484530f1459f3b5e8a30d501cf +Author: Sebastian Qvarfordt +Date: Wed Apr 1 16:18:33 2020 +0200 + + Initial typing for infocard component + +commit 76fe4bf14d31ee021950288c0f2becfadb5dca7d +Author: Marcus Eide +Date: Wed Apr 1 15:39:52 2020 +0200 + + Specifically add types to tsconfig to fix build issue + +commit a7c8110356697d02f43d53f837e2f7fee862d982 +Merge: dd17d3068f bebad80a24 +Author: Fredrik Adelöw +Date: Wed Apr 1 14:47:49 2020 +0200 + + Merge pull request #429 from spotify/freben/callout + + Add support for dismissible information callouts + +commit 44db4c9a57fa34bbb5789ff3993a3c51eb805a49 +Merge: cfe56ae7ef dd17d3068f +Author: Alexander Forselius +Date: Wed Apr 1 13:23:10 2020 +0200 + + Merge remote-tracking branch 'upstream/master' into feature/dark-mode + +commit dd17d3068f582997dcebab82e6468744a8e8e0b0 +Merge: 76a31384da 3a104674db +Author: Patrik Oldsberg +Date: Wed Apr 1 12:54:34 2020 +0200 + + Merge pull request #438 from spotify/rugvip/heeps + + github/workflows: increase max old gc heap space size + +commit 3a104674db51e7f1a5e23df470b18a8b8b8e1b0d +Author: Patrik Oldsberg +Date: Wed Apr 1 12:32:03 2020 +0200 + + github/workflows: increase max old gc heap space size + +commit e96e95df6650ef0dc4b91e2bfa28182932b9761a +Author: Patrik Oldsberg +Date: Wed Apr 1 11:51:28 2020 +0200 + + cli/commands/create-plugin: update tests + +commit d21d38e947a5c2015008595521e6cc5ac9f5b90e +Author: Patrik Oldsberg +Date: Wed Apr 1 11:21:01 2020 +0200 + + cli: make package.json reading absolute + +commit 111f163d4105bdda296c2cb71caf0b3e09a71689 +Author: Patrik Oldsberg +Date: Tue Mar 24 10:23:43 2020 +0100 + + cli: add create-app + +commit 841a38741773494f12b65adc4e18464871c48af2 +Author: Patrik Oldsberg +Date: Wed Apr 1 01:10:43 2020 +0200 + + cli/commands/create-plugin: move templating to tasks helper and fix it + separate out sections + +commit 76a31384dacd3badbf96a87939160d7c4b1006d6 +Merge: b2de67b6e6 2393c5c049 +Author: Stefan Ålund +Date: Wed Apr 1 10:46:13 2020 +0200 + + Merge pull request #425 from guillaumeLamanda/407-header-2 + + #407 Rewrite layout/Header to use TypeScript and hooks + +commit 2393c5c0493a7c5fe7a34f903b716b0566d66c9b +Author: Guillaume Lamanda +Date: Tue Mar 31 11:26:30 2020 +0200 + + ♻️ rewrite to use typescript and hooks + +commit fc20b4dc76b9b9d268e93417a641a9c53b44b781 +Author: Guillaume Lamanda +Date: Tue Mar 31 11:12:56 2020 +0200 + + ♻️ rewrite in typescript + +commit 69e4bcf26b4ecbca2f066351d714d8121f91a208 +Author: Guillaume Lamanda +Date: Tue Mar 31 10:50:16 2020 +0200 + + ♻️ rewrite to use typescript and hooks + +commit b2de67b6e63aaca5a95880ca7127c491a80d89c6 +Merge: 3d49731dc2 f1acc3e0bc +Author: Stefan Ålund +Date: Wed Apr 1 08:01:28 2020 +0200 + + Merge pull request #433 from spotify/bih-patch-1 + + Fix code sample in Feature Flag docs + +commit f7967c6d1784bfa6bc11b519362377b951034577 +Author: Jose Balanza Martinez +Date: Tue Mar 31 15:24:46 2020 -0600 + + Fixed yarn lint errors + +commit 7217b56825aef89088c8d66f65e084b4e53ebf3f +Author: Jose Balanza Martinez +Date: Tue Mar 31 15:13:31 2020 -0600 + + Fixed @bakcstage name in test + +commit f1acc3e0bc18ca103b36cac155e83d802a562723 +Author: Bilawal Hameed +Date: Tue Mar 31 23:04:56 2020 +0200 + + Fix code sample + +commit 0a70a0a26baaadf6b9c36151d3639a166d9be261 +Author: Jose Balanza Martinez +Date: Tue Mar 31 14:27:54 2020 -0600 + + Removed unnecessary comments + +commit ecc2dbe6584736405955309f61cb725fee15a860 +Author: Jose Balanza Martinez +Date: Tue Mar 31 14:19:36 2020 -0600 + + remove-plugin removes codeowners statement + +commit 580cead761bd4aafa052ab2120ba6a065a117104 +Author: Patrik Oldsberg +Date: Tue Mar 31 21:02:45 2020 +0200 + + cli/helpers/errors: make exit error message a bit more visible + +commit 3c6bbd86353549f7829ab3904d71257c21505a8f +Author: Patrik Oldsberg +Date: Tue Mar 31 20:29:12 2020 +0200 + + cli/commands/create-plugin: add task helper and make everything async + +commit 557880a36f17e81848a6f1d4dc0c119665b1baf2 +Author: Jose Balanza Martinez +Date: Tue Mar 31 12:53:58 2020 -0600 + + Added removePlugin + +commit 362851876450d608cd74cce323c5423dd638a819 +Merge: eb8d2e55b9 3d49731dc2 +Author: Jose Balanza Martinez +Date: Tue Mar 31 12:34:26 2020 -0600 + + Merge branch 'master' of https://github.com/spotify/backstage into new_branch + +commit cfe56ae7ef77d3bd0eeeda14c6f15c6bf50f9cdb +Author: Alexander Forselius +Date: Tue Mar 31 17:57:42 2020 +0200 + + Implemented dark mode + +commit bebad80a24ef4410e070298bb59b45d59345d065 +Author: Fredrik Adelöw +Date: Fri Mar 27 14:39:11 2020 +0100 + + Use dismissible information callouts + +commit 3d49731dc2e2d4d0849b7acc1c64e9da6372c04c +Merge: d0bfb7bda2 124cdede70 +Author: Fredrik Adelöw +Date: Tue Mar 31 16:51:53 2020 +0200 + + Merge pull request #417 from SrdjanCosicPrica/master + + Add husky and lint-staged to automatically prettify staged code changes + +commit d0bfb7bda281211c6cac409d8e49d33a4faffb32 +Merge: f4179a56bd 4e9151ba3c +Author: Stefan Ålund +Date: Tue Mar 31 16:39:22 2020 +0200 + + Merge pull request #426 from hooloovooo/feature/407-errorboundary + + WIP: ErrorBoundary rewrite to TS + +commit f4179a56bd87fe0ea84501e2f84832295e6057ba +Merge: 1bd355a88f c914a62882 +Author: Patrik Oldsberg +Date: Tue Mar 31 16:33:47 2020 +0200 + + Merge pull request #403 from spotify/rugvip/build-cache + + cli: add experimental build-cache command and make sure things are only built on change in CI + +commit 124cdede70ae4fe25ffc7063f87c039358086b23 +Author: SrdjanCosicPrica <15933115+SrdjanCosicPrica@users.noreply.github.com> +Date: Mon Mar 30 18:59:32 2020 +0200 + + Prettify project + +commit 5a4228a28a385a6dd6a1867f1fcd9ffbefe4caa0 +Author: SrdjanCosicPrica <15933115+SrdjanCosicPrica@users.noreply.github.com> +Date: Mon Mar 30 18:58:37 2020 +0200 + + Add husky and lint-staged to prettify staged files before commiting + +commit c914a628824b42c05af35795b2e3eb7a8ab349c4 +Author: Patrik Oldsberg +Date: Tue Mar 31 15:31:22 2020 +0200 + + github/workflows: also build app on changes to packages/core + +commit 1bd355a88fab7c830620b5c69dbc42b2990aaa8c +Merge: 26266cb2f6 334abb2936 +Author: Stefan Ålund +Date: Tue Mar 31 15:31:06 2020 +0200 + + Merge pull request #428 from spotify/stefanalund-patch-1 + + Delete now.json + +commit 334abb29362c4d4922117130aa5900dfb75f6b00 +Author: Stefan Ålund +Date: Tue Mar 31 15:00:17 2020 +0200 + + Delete now.json + +commit 4e9151ba3ce0859e66229aa6a38b0c37175f2c91 +Author: Sebastian Qvarfordt +Date: Tue Mar 31 13:21:26 2020 +0200 + + removed onError from state + +commit 924a9990798e51f48244535836be4559cc597f9a +Author: Sebastian Qvarfordt +Date: Tue Mar 31 13:07:21 2020 +0200 + + prettier + +commit 7a4aebb8a29bdcbcf6fa204cf6a8f62c98d2f81d +Author: Sebastian Qvarfordt +Date: Tue Mar 31 13:04:51 2020 +0200 + + initial rewrite to TS + +commit c4b6afffaf095e5b9e34e87fa2656d2b5c0da9ad +Author: Patrik Oldsberg +Date: Mon Mar 30 18:16:15 2020 +0200 + + cli/commands/build-cache: refactor dirty check to make key undefined instead of cache + +commit bfceff2c84e6840649fa1bd01f4ba3f0f4322d25 +Author: Patrik Oldsberg +Date: Mon Mar 30 18:06:32 2020 +0200 + + cli/commands/build-cache: more docs + +commit edd21b984eb8a57c0a30b636e09cd0255b5d3b00 +Author: Patrik Oldsberg +Date: Fri Mar 27 16:59:40 2020 +0100 + + cli/commands/build-cache: make max entries configurable and set to 2 in CI + +commit 56a7969eac1fdbf66a5d85cfd9ecee996f2e414a +Author: Patrik Oldsberg +Date: Fri Mar 27 16:36:37 2020 +0100 + + github/workflows: add back node_modules cache + +commit 9cb19a62aa5658645020d6500ec7cdecac35f8f6 +Author: Patrik Oldsberg +Date: Fri Mar 27 16:04:31 2020 +0100 + + github/workflows: separate out build cache and use proper key + restore keys + +commit 2961e216ccbf032b241517820e18dcbd40d39549 +Author: Patrik Oldsberg +Date: Fri Mar 27 15:52:45 2020 +0100 + + cli/commands/build-cache: allow cache dir to be set through env + +commit 3ca00be6071c5c97572f762e8732db973274e371 +Author: Patrik Oldsberg +Date: Fri Mar 27 15:07:21 2020 +0100 + + cli/commands/build-cache: enable dirty check + +commit b87a760dd5fec4be396cbe4beac833886e317b9b +Author: Patrik Oldsberg +Date: Fri Mar 27 14:56:15 2020 +0100 + + package: only lint changes since master + +commit e2014836b5b2c8773812f47fab54f2ab9dd3ceb1 +Author: Patrik Oldsberg +Date: Fri Mar 27 14:55:19 2020 +0100 + + github/workflows: repurpose node_modules cache to cache .cache + +commit e59ddb4d7c7efc35a84d1e77b578fa2d65c6bcec +Author: Patrik Oldsberg +Date: Fri Mar 27 14:49:47 2020 +0100 + + packages,plugins: use build-cache command + +commit ec28ed8e2acd9f113984de0823d831527abcea91 +Author: Patrik Oldsberg +Date: Fri Mar 27 14:31:42 2020 +0100 + + packages/app: rename build script to bundle and only run in CI when app changed + +commit 140cd7e4db030401bba660a1ffe934e0c3f1e529 +Author: Patrik Oldsberg +Date: Fri Mar 27 13:57:26 2020 +0100 + + cli/commands/build-cache: remove unused archive function + +commit f2d7d43b77ac6e0a2726a37bbd294e33f5e2f8ca +Author: Patrik Oldsberg +Date: Fri Mar 27 13:56:51 2020 +0100 + + cli/commands/build-cache: add support for multiple cache archives + +commit 39efe52c9dab6bdf782ed10e9de3d69e3996d151 +Author: Patrik Oldsberg +Date: Fri Mar 27 13:04:53 2020 +0100 + + cli/commands/build-cache: refactor cache handling + +commit 8a35da15e5449151440f66cbeea06eae555c580a +Author: Patrik Oldsberg +Date: Fri Mar 27 12:15:19 2020 +0100 + + cli/commands/build-cache: separate out cache and options handling + +commit 0644f47645bcaf3f9675b3ecdd8c8675b9c75d22 +Author: Patrik Oldsberg +Date: Fri Mar 27 12:07:31 2020 +0100 + + cli/commands/build-cache: simplify build and move cmdOutput to helpers as runPlain + +commit 2dae5fccafcb924e37580ca40a1252e80b0cd032 +Author: Patrik Oldsberg +Date: Fri Mar 27 12:00:54 2020 +0100 + + cli/commands/build-cache: move archive handling to separate module + +commit 4e79446dc91e2ff84fe52aa79e16f501bb30b7bf +Author: Patrik Oldsberg +Date: Fri Mar 27 11:49:32 2020 +0100 + + cli/commands/build-cache: run build command + +commit eaf80a4271d23d7736e490470cc44057cd1f8a48 +Author: Patrik Oldsberg +Date: Fri Mar 27 11:38:55 2020 +0100 + + cli/commands/build-cache: fix unhandled error + +commit 282af223519616e1ffba7db7c43159d3d95cda07 +Author: Patrik Oldsberg +Date: Fri Mar 27 11:38:46 2020 +0100 + + cli/commands/build-cache: refactor + cleanup output + +commit d4fc4375641fc64d4a71ff4ec2e99bbdd007bc9d +Author: Patrik Oldsberg +Date: Fri Mar 27 11:23:04 2020 +0100 + + cli/commands/build-cache: store external cache in tar archives + +commit de34ab58e29d560c30183400a93c069cd7980d2f +Author: Patrik Oldsberg +Date: Fri Mar 27 10:21:44 2020 +0100 + + cli/commands/build-cache: initial caching without build + +commit 555db720ae17e38946787da393c9e0e51a17ff68 +Author: Patrik Oldsberg +Date: Thu Mar 26 14:57:54 2020 +0100 + + cli: added initial build-cache command + +commit 26266cb2f6b5e08e6aed6b006982bbaeba0e3376 +Merge: f37cbf28ab e22d6dd253 +Author: Patrik Oldsberg +Date: Tue Mar 31 09:50:51 2020 +0200 + + Merge pull request #420 from spotify/rugvip/frozen + + github/workflows: run yarn install with --frozen-lockfile + +commit f37cbf28abdfcc64f5e3f828abaaae7825aac178 +Merge: ffd0d4d545 cf082b8a54 +Author: Stefan Ålund +Date: Tue Mar 31 09:33:22 2020 +0200 + + Merge pull request #424 from spotify/alund/rm-owner + + Remove internal specific code + +commit e22d6dd2530e5c460fb75618f124dc39e8bb315a +Author: Patrik Oldsberg +Date: Mon Mar 30 23:50:49 2020 +0200 + + github/workflows: run yarn install with --frozen-lockfile + +commit cf082b8a540459efb985aeda7367eeb8c2e283df +Author: Stefan Ålund +Date: Tue Mar 31 09:14:39 2020 +0200 + + Remove internal specific code + +commit ffd0d4d54564d8b0d154556ddcf6dea38eaea5f7 +Merge: f8d563da30 912bd3ee18 +Author: Patrik Oldsberg +Date: Tue Mar 31 09:04:53 2020 +0200 + + Merge pull request #422 from spotify/rugvip/merge + + merge Dockerfile and nginx config with heroku deployment + +commit f8d563da30d8a6ac096cc22716bc2d3bd9075682 +Merge: cc3120c35f b6bc987362 +Author: Stefan Ålund +Date: Tue Mar 31 08:10:44 2020 +0200 + + Merge pull request #421 from spotify/rugvip/scaffold-fix + + cli/templates: fix InfoCard usage in plugin template + +commit 912bd3ee18f603f02eee363e4a4053f147a52514 +Author: Patrik Oldsberg +Date: Tue Mar 31 01:11:34 2020 +0200 + + Dockerfile: move nginx config templating to run script + +commit ae3d5ffe9df5740acfdc0035e7a111e3d2296fe3 +Author: Patrik Oldsberg +Date: Tue Mar 31 00:51:34 2020 +0200 + + Dockerfile: optimize copying a bit + +commit afb77c88239671f3956acd5aec83bf3011c04a12 +Author: Patrik Oldsberg +Date: Tue Mar 31 00:51:12 2020 +0200 + + DEPLOYMENT: update heroku deployment instructions + +commit 9a5ed723c48c3d2f932b2c28741db4435bdf8fe0 +Author: Patrik Oldsberg +Date: Tue Mar 31 00:17:15 2020 +0200 + + deployment: merge into root dockerfile + +commit b6bc98736246cd4cde4ae216882c06dffca53b8f +Author: Patrik Oldsberg +Date: Tue Mar 31 00:09:54 2020 +0200 + + github/workflows: run cli e2e tests on changes to core + +commit f4d8425d19d453e60322608c98a1f09d156436a5 +Author: Patrik Oldsberg +Date: Tue Mar 31 00:09:39 2020 +0200 + + cli/templates: fix InfoCard usage in plugin template + +commit cc3120c35f4df57b8d966de7f915e22e0b4b69bc +Merge: 7867c593b1 39f7fe277f +Author: Patrik Oldsberg +Date: Mon Mar 30 22:59:28 2020 +0200 + + Merge pull request #419 from sgraczyk/feature/407-header-waves + + Rewrite layout/Header/Waves to use TypeScript + +commit 39f7fe277f8888aa8305807de2ad57cc9789c0fb +Author: Szymon Graczyk +Date: Mon Mar 30 22:31:43 2020 +0200 + + Correct the import of PageTheme to use relative path + +commit 8782465459fcfc60d4ee81006c931d38af0e8820 +Author: Szymon Graczyk +Date: Mon Mar 30 22:25:49 2020 +0200 + + Rewrite layout/Header/Waves to use TypeScript + * Add simple test looking for svg node + +commit 7867c593b136186a02bd5e582e978fc3268bae7d +Merge: e13d6093ba ea4b85849c +Author: Stefan Ålund +Date: Mon Mar 30 21:47:14 2020 +0200 + + Merge pull request #406 from mateusmarquezini/feature/400-info-card-storybook + + Adding "Information Card" component to Storybook + +commit ea4b85849ccf9fa5a398e419152873382e0f8d16 +Author: Mateus Marquezini +Date: Mon Mar 30 15:09:38 2020 -0300 + + #400 code review changes + +commit e13d6093baa9f445b089575ceda6851b5c13cadb +Merge: 0692663f9f 70252160e5 +Author: Stefan Ålund +Date: Mon Mar 30 20:07:15 2020 +0200 + + Merge pull request #391 from spotify/bil/feature-flags + + Add Feature Flags API 🎚 + +commit 575a775e453006608e872bbb6d960e75d59a4013 +Author: Mateus Marquezini +Date: Mon Mar 30 11:55:44 2020 -0300 + + #400 code review changes + +commit 0692663f9f96842c997cf00852da15b400aa0451 +Merge: 11b1a62003 301bd66919 +Author: Fredrik Adelöw +Date: Mon Mar 30 15:23:03 2020 +0200 + + Merge pull request #414 from spotify/freben/codeowners-again + + [cli] CODEOWNERS: catch-all goes first, and paths are absolute + +commit f2ac43714bfc14ffaac9d0951ded2b9dbc0dab77 +Merge: 3ce675857e 11b1a62003 +Author: Mateus Marquezini +Date: Mon Mar 30 10:17:44 2020 -0300 + + Merge branch 'master' into feature/400-info-card-storybook + +commit 11b1a62003cd1f6c7561263d94df6164054bb090 +Merge: 08e03ce400 dc363e43fc +Author: Patrik Oldsberg +Date: Mon Mar 30 15:13:42 2020 +0200 + + Merge pull request #412 from spotify/rugvip/noapp + + packages: rename @backstage/app to example-app + +commit 301bd669197a81ff96d357744ae6d90162da9cb0 +Author: Fredrik Adelöw +Date: Mon Mar 30 14:24:22 2020 +0200 + + [cli] CODEOWNERS: catch-all goes first, and paths are absolute + +commit 08e03ce40055ae86e296f36c43010273d71bb382 +Merge: 88a6b3d7c4 9b7a8712fe +Author: Stefan Ålund +Date: Mon Mar 30 14:36:11 2020 +0200 + + Merge pull request #408 from sgraczyk/feature/407-header + + #407 Rewrite layout/Header to use TypeScript and hooks + +commit dc363e43fc80872cee4d32eb38dc3e8925132efe +Author: Patrik Oldsberg +Date: Mon Mar 30 12:46:49 2020 +0200 + + packages: rename @backstage/app to example-app + +commit 70252160e59ecef235c1f8f370879a79bda541d3 +Author: Bilawal Hameed +Date: Mon Mar 30 11:39:15 2020 +0200 + + [core] change FeatureFlagState to {On,Off} + +commit d911da26d2582cfea56191f1ce508ccdfa1c23d5 +Author: Bilawal Hameed +Date: Mon Mar 30 11:18:18 2020 +0200 + + [core/api] changed loading pattern to be a static factory method + +commit 0ff31e486d570eedce8729fa1743bfa1b84d887f +Author: Bilawal Hameed +Date: Mon Mar 30 11:11:57 2020 +0200 + + [core/api] store single instance of UserFlags + +commit d2d8238330fbdec2d424954eab60ef5d90d0e2bf +Author: Bilawal Hameed +Date: Mon Mar 30 11:08:15 2020 +0200 + + [core/api] FeatureFlags.test.tsx - s/FeatureFlags/featureFlags/g + +commit aecaa4e497470722ce02ca348c548c06cf0bf21e +Author: Bilawal Hameed +Date: Mon Mar 30 10:57:45 2020 +0200 + + [core/api/FeatureFlags] no validation on get + re-think forwarding output + +commit 70fa36ebb42b1d36d7142502d0eade6123a38540 +Author: Bilawal Hameed +Date: Mon Mar 30 10:53:46 2020 +0200 + + [core/api/AppBuilder] remove typescript exclamation mark + +commit 64a14b2191e3d94dbaa3a7dd406b9c55605807e7 +Author: Bilawal Hameed +Date: Fri Mar 27 19:45:59 2020 +0100 + + [core/apis] adapted to build on existing data structures + +commit 6fa6373536c00d4375f93c89fe0b57367e637756 +Author: Bilawal Hameed +Date: Fri Mar 27 18:53:54 2020 +0100 + + [core/apis] replaced FeatureFlagsContext with FeatureFlags.registeredFlags + +commit a8f304dbfbb7ad96da67a8c490e64e80136b920d +Author: Bilawal Hameed +Date: Fri Mar 27 13:13:46 2020 +0100 + + [docs/reference] updated to reflect React Hooks changes + +commit e78680fe0340fdc984df797d290275c98f3d1c1e +Author: Bilawal Hameed +Date: Fri Mar 27 13:04:59 2020 +0100 + + [plugins/welcome] fixed ToggleFeatureFlagButton test + +commit c1f5b2abc9e2a2a5284407c87d7f234481b892c3 +Author: Bilawal Hameed +Date: Fri Mar 27 12:49:48 2020 +0100 + + [core/apis] switch to useFeatureFlag React Hook + +commit 5157904031b5101aa46d87f5615faeae575f595e +Author: Bilawal Hameed +Date: Fri Mar 27 12:15:50 2020 +0100 + + [core/api] s/registeredFeatureFlags/featureFlags/g + +commit 9aaad5d6608c8cb9f588d2ad85f8ae057de7a167 +Author: Bilawal Hameed +Date: Fri Mar 27 11:52:14 2020 +0100 + + [core/api] add name validation in registerFeatureFlag + +commit 24f987b29b1340389bc322e50c72e9e95f4203c6 +Author: Bilawal Hameed +Date: Fri Mar 27 11:35:38 2020 +0100 + + [core/api/app] split name validation into function + +commit 4e38f03221cb4247d302645e35e9e325484a2ef4 +Author: Bilawal Hameed +Date: Fri Mar 27 11:09:07 2020 +0100 + + [core/api] added tests for FeatureFlags.tsx + +commit abe68bc55b9561f32f0812fad92de2dfc33fc077 +Author: Bilawal Hameed +Date: Thu Mar 26 21:21:41 2020 +0100 + + [core] fixed typescript issues + +commit 690bbb662dbca604ab077652f002504002430782 +Author: Bilawal Hameed +Date: Thu Mar 26 21:07:06 2020 +0100 + + [plugins/welcome] split feature flag button into separate Component (with tests) + +commit b2438a22cbe23a8d193c02553fb23d2ea2d117f4 +Author: Bilawal Hameed +Date: Thu Mar 26 17:14:47 2020 +0100 + + [core/apis] added pluginId to feature flag metadata + +commit 92d091dec86d99c136a169ad40c2d1438f97a8a6 +Author: Bilawal Hameed +Date: Thu Mar 26 17:05:53 2020 +0100 + + [core/apis] consolidated methods to get/set + +commit 0b49bad43d70a707bbf21731530fe9403f70e4df +Author: Bilawal Hameed +Date: Thu Mar 26 16:58:00 2020 +0100 + + [core/api] switch getItem from bool to enum + +commit 4969c6046b21682d7e52184c60f65e1c6faf5804 +Author: Bilawal Hameed +Date: Thu Mar 26 16:34:12 2020 +0100 + + [core/apis] moved away from ts decorators + +commit b01e7dee58d4f6d54e0705fd95795117d07169ad +Author: Bilawal Hameed +Date: Thu Mar 26 16:16:48 2020 +0100 + + [plugins/welcome] add feature flag demo + +commit 71072da838e4c47c32086ebfbc990f786c953c7a +Author: Bilawal Hameed +Date: Thu Mar 26 16:07:48 2020 +0100 + + [docs] updated to reflect both useApi and FeatureFlags object + +commit 758c12101eaebe4dd71c3e600ccd298154954156 +Author: Bilawal Hameed +Date: Thu Mar 26 16:00:32 2020 +0100 + + [core/api] added toggle method to FeatureFlags + +commit 85c3ce7d9a9344c62b8c6370a74850152757cab8 +Author: Bilawal Hameed +Date: Thu Mar 26 15:50:45 2020 +0100 + + [core/api/app] added context for registered flags + +commit 7ba4f4ca2db2038e20e1bd1b094552cf78a88d2e +Author: Bilawal Hameed +Date: Thu Mar 26 15:39:19 2020 +0100 + + [plugins/welcome/WelcomePage] add featureFlags via useApi + +commit c86387ea09c72902380b413a3a5bd3fa80e416f8 +Author: Bilawal Hameed +Date: Thu Mar 26 13:36:41 2020 +0100 + + [core] added typescript decorators (experimental) + +commit b865bdd4729d8b433905ebc21aa6198067dd16ae +Author: Bilawal Hameed +Date: Thu Mar 26 13:35:45 2020 +0100 + + [core] fix bad imports + +commit 10a7102f4c48604597db02f4b0f1f6c9ace3f7e8 +Author: Bilawal Hameed +Date: Thu Mar 26 13:12:17 2020 +0100 + + [core/api/app] Set FeatureFlags class to static + +commit 3e6d2ce730d2ef02e57adc0e11b57cf9b1f86f53 +Author: Bilawal Hameed +Date: Thu Mar 26 12:56:56 2020 +0100 + + [core/api/app] add FeatureFlags API implementation + +commit 817c4760504a7568685ea7436b565cfde0cd1989 +Author: Bilawal Hameed +Date: Thu Mar 26 12:22:01 2020 +0100 + + [docs] updated with typescript definitions + code sample + +commit 79654e477e47dfae70fdefee0e0d9e6c759917a6 +Author: Bilawal Hameed +Date: Thu Mar 26 12:18:05 2020 +0100 + + [core/apis/definitions] added featureFlags definition + +commit e6a88a5dc0feadc99b2f37bdcb46ae140ff7353f +Author: Bilawal Hameed +Date: Thu Mar 26 11:56:37 2020 +0100 + + [core/AppBuilder] collect list of registered feature flags + +commit 45d7e2736f25fae55a1f32e06040ebf2d5914f5f +Author: Bilawal Hameed +Date: Thu Mar 26 11:34:30 2020 +0100 + + [core/api/plugins] added featureFlags.registerFeatureFlag + +commit 8145ba8b945f358b5dec62e6dad3cc49741a99aa +Author: Bilawal Hameed +Date: Thu Mar 26 11:21:46 2020 +0100 + + [docs] added skeleton + +commit 88a6b3d7c4be49a822af12547ee3ef9621bcdac1 +Merge: fa71f87ffd 93bbbcd5ee +Author: Patrik Oldsberg +Date: Mon Mar 30 11:17:53 2020 +0200 + + Merge pull request #411 from spotify/rugvip/storyploy + + github/workflows: move storybook deploy to separate workflow + +commit 93bbbcd5ee5baa38298904840ebbf53b69bb8829 +Author: Patrik Oldsberg +Date: Mon Mar 30 11:07:56 2020 +0200 + + github/workflows: move storybook deploy to separate workflow + +commit fa71f87ffd0e2aaf05db6c5ed25455903899958b +Merge: ab4c5f35b0 0d25dc3f9b +Author: Stefan Ålund +Date: Mon Mar 30 09:51:56 2020 +0200 + + Merge pull request #367 from mikqi/ci/deploy-storybook + + ci: add new jobs for deploy storybook + +commit ab4c5f35b0d42c8dce422fee613b6b4c929146ae +Merge: e970a57d31 ec85cdd254 +Author: Marcus Eide +Date: Mon Mar 30 08:56:54 2020 +0200 + + Merge pull request #402 from spotify/eide/hack-cypress + + Add e2e tests for App with Cypress + +commit 0d25dc3f9b7e134dab0c8e3af4c9b1b044fde41d +Merge: 2496a326c0 ac0ddb277f +Author: Muhammad Rivki +Date: Mon Mar 30 13:19:17 2020 +0700 + + Merge branch 'master' of github.com:mikqi/backstage into ci/deploy-storybook + +commit e970a57d31950e9b6cee432ec2a88d8c1487ea3b +Merge: ac0ddb277f 67abc7a2c9 +Author: Stefan Ålund +Date: Mon Mar 30 07:41:23 2020 +0200 + + Merge pull request #389 from mateusmarquezini/fix/306-header-text-color + + Changed the header background color + +commit ac0ddb277f8ee532cbd99daf48c404b644097c2a +Merge: 99c7cc88d9 9235807f14 +Author: Stefan Ålund +Date: Sun Mar 29 23:07:45 2020 +0200 + + Merge pull request #404 from asoorm/patch-1 + + document how to override the default port + +commit 9235807f1407901b65829a0fc1e2a69c5267592e +Author: Ahmet Soormally +Date: Fri Mar 27 18:47:46 2020 +0000 + + document how to override the default port + + Port 3000 is a common port in the development environment. + + This documents how you can start backstage with a different port to the default. + + Moved section for development environment to own page within docs in order to keep README small. + +commit 9b7a8712fe721795612a888260b9da2330f97b86 +Author: Szymon Graczyk +Date: Sun Mar 29 21:06:35 2020 +0200 + + Rewrite layout/Header to use TypeScript and hooks + * use makeStyles hook generator + * write fragments as components + * use types instead of PropTypes + +commit 3ce675857ed03ccffe173350ad4336124995e2e1 +Author: Mateus Marquezini +Date: Sun Mar 29 12:40:14 2020 -0300 + + #400 fixed spread usage + +commit b1a2eef8fd35d03b0177b74a57d488d087c6090e +Author: Mateus Marquezini +Date: Sun Mar 29 12:11:07 2020 -0300 + + #400 Adding Information Card component to Storybook + +commit 99c7cc88d9b0389457e24c58653f3e9a3a76aa63 +Merge: 8c7fe4af0d 894d25b54b +Author: Stefan Ålund +Date: Sun Mar 29 09:28:18 2020 +0200 + + Merge pull request #360 from tarcinil/fix/330/dockerfile-with-compose + + Creating docker-compose.yml with nginx config via a new site. + +commit 894d25b54b5d0c908003626c2a07d6391597e836 +Author: Vern Burton +Date: Sat Mar 28 18:40:28 2020 -0500 + + updating Dockerfile to pull in custom default.conf to overload default file. + +commit 8c7fe4af0dfff2265ec2766d80da2ab1ce79a663 +Merge: 580f30f721 b0329a8261 +Author: Patrik Oldsberg +Date: Fri Mar 27 15:36:52 2020 +0100 + + Merge pull request #399 from fastfrwrd/fix-plugin-scaffolding-issue + + fix: install @backstage/core when scaffolding a plugin + +commit ec85cdd254f0f8e8d164ccb94f4546df2f775f21 +Author: Marcus Eide +Date: Fri Mar 27 14:52:54 2020 +0100 + + Add missing eslint plugin + +commit 990671df9b9eeb516c901024c06ebc5de2f90100 +Author: Marcus Eide +Date: Fri Mar 27 14:07:26 2020 +0100 + + Add e2e test for app with cypress + +commit b0329a82612ab6728caf105bae501e4e67c68e1f +Author: Paul Marbach +Date: Fri Mar 27 09:26:31 2020 -0400 + + fix: install @backstage/core when scaffolding a plugin + +commit a17f237b752508cd7ef58e16e8e2eba383e49977 +Author: Marcus Eide +Date: Fri Mar 27 13:42:27 2020 +0100 + + Add data-testid to buttons used by e2e tests + +commit 580f30f72116995eb49a494e24f823c8436ee2be +Author: Stefan Ålund +Date: Fri Mar 27 07:59:12 2020 +0100 + + Link to Blog from README (#397) + + * Link to Blog from README + + * Update README.md + +commit 749ce4261333942b770966b0495d19ad8a3db607 +Merge: 3d1d34bf96 abd3caf246 +Author: Stefan Ålund +Date: Thu Mar 26 21:06:48 2020 +0100 + + Merge pull request #396 from spotify/stefanalund-patch-1 + + Add question to FAQ + +commit abd3caf246039a2824bf1f9e31453145b2535910 +Author: Stefan Ålund +Date: Thu Mar 26 20:37:32 2020 +0100 + + Update FAQ.md + +commit 8c1a2765e0324a514cc37c8a1a7c54cf5dd8551c +Author: Stefan Ålund +Date: Thu Mar 26 20:27:25 2020 +0100 + + Add question to FAQ + +commit 3d1d34bf960a9490dfcc6b8904fbfc16d818d407 +Merge: 155f5445e3 7910f8e7f1 +Author: Patrik Oldsberg +Date: Thu Mar 26 15:15:22 2020 +0100 + + Merge pull request #392 from spotify/stefanalund-patch-1 + + Add RFCs to README + +commit 7910f8e7f1952cf6b910f90dcf29c807e4b02762 +Author: Stefan Ålund +Date: Thu Mar 26 14:39:20 2020 +0100 + + Add RFCs to README + +commit 67abc7a2c9f138f2f7c905992928fae5c2d0097c +Author: Mateus Marquezini +Date: Thu Mar 26 08:28:05 2020 -0300 + + reverted opacity changes + +commit 155f5445e31cbe2862410d2c8a968d56ef7125aa (tag: v0.1.1-alpha.0) +Merge: 5c26725361 019032a7a3 +Author: Patrik Oldsberg +Date: Thu Mar 26 09:47:35 2020 +0100 + + Merge pull request #388 from spotify/rugvip/ns + + use npm namespace @backstage and bump to v0.1.1-alpha.0 + +commit 211787f86e3e3631fdf974f4ebd582aa1b22f0bc +Author: Mateus Marquezini +Date: Wed Mar 25 17:23:38 2020 -0300 + + #306 changed the header color + +commit 019032a7a3db535177a21b21c0162413c46e72c2 +Author: Patrik Oldsberg +Date: Wed Mar 25 19:13:14 2020 +0100 + + v0.1.1-alpha.0 + +commit 3a0d8edcb57c25ff23b3e935d5342de2b25b1641 +Author: Patrik Oldsberg +Date: Wed Mar 25 19:12:11 2020 +0100 + + rename npm namespace from @spotify-backstage to @backstage + +commit 5c26725361f16e5e052fc79ef3b0c30b25731e22 (tag: v0.1.0) +Merge: e73bb131c1 59c1cba6b9 +Author: Patrik Oldsberg +Date: Wed Mar 25 15:48:59 2020 +0100 + + Merge pull request #378 from spotify/rugvip/publish + + set up package publishing + +commit e73bb131c12b78b0337d6f7dd5855e5f2bfff8ad +Merge: 80eeaa836b ca992f6cc4 +Author: Patrik Oldsberg +Date: Wed Mar 25 15:42:33 2020 +0100 + + Merge pull request #384 from spotify/rugvip/prep + + Prepare packages for publishing + +commit ca992f6cc44d886a7df3ec2ce9ae81e029e019d8 +Author: Patrik Oldsberg +Date: Wed Mar 25 12:59:29 2020 +0100 + + packages/{core,cli}: fill in missing package.json fields for publishing + +commit cf446052bc9f48f244700aac4b1a489fa7b8d42d +Author: Patrik Oldsberg +Date: Wed Mar 25 12:57:54 2020 +0100 + + packages: add READMEs + +commit 80eeaa836bbaeaa97225a0304a736affbb0d5891 +Author: Patrik Oldsberg +Date: Wed Mar 25 12:40:14 2020 +0100 + + workflows/frontend: split yarn tasks into separate steps (#383) + +commit 59c1cba6b971822479d43086c2caa618fd70fa58 +Author: Patrik Oldsberg +Date: Wed Mar 25 12:11:17 2020 +0100 + + docs: added npm publishing docs + +commit 7c7cf63b732f9b7ec1816846926c920772baa110 +Merge: 37de8bccf5 40c2d53365 +Author: Stefan Ålund +Date: Wed Mar 25 11:51:58 2020 +0100 + + Merge pull request #379 from alaiacano/master + + Add deploy instructions for Heroku + +commit ebe2205ec65003d4898a328873672bf3ea8a7315 +Merge: 3dd1611180 37de8bccf5 +Author: Patrik Oldsberg +Date: Wed Mar 25 11:21:12 2020 +0100 + + Merge branch 'master' into rugvip/publish + +commit 3dd16111806f53a1d201230b1b1c4d63de3379c9 +Author: Patrik Oldsberg +Date: Wed Mar 25 11:16:18 2020 +0100 + + workflows/master: split yarn tasks into separate steps + +commit 5012ce53353e1ff43ad8260b1590f07b3835c095 +Author: Patrik Oldsberg +Date: Wed Mar 25 11:09:53 2020 +0100 + + github/workflows: update yarn cache step names + +commit 37de8bccf597da2edafeee6a15fcba626f796c9f +Merge: f9a47d9a0a 123e5f80a8 +Author: Patrik Oldsberg +Date: Wed Mar 25 09:00:50 2020 +0100 + + Merge pull request #380 from spotify/rugvip/story + + package: update storybook command and remove build command + +commit 2496a326c0f790bfff12b6ee6bc611ef39d7e2f4 +Author: Muhammad Rivki +Date: Wed Mar 25 13:17:32 2020 +0700 + + ci: update token and build command + +commit 123e5f80a8618e6df1ae0a5f99482761eb05df40 +Author: Patrik Oldsberg +Date: Wed Mar 25 01:24:49 2020 +0100 + + package: update storybook command and remove build command + +commit 40c2d53365b16d3a638854494b6d09b51e1b5741 +Author: Patrik Oldsberg +Date: Sun Mar 22 16:08:45 2020 +0100 + + cli: exclude templates dir from linting + +commit ae61369fe18c2c78147836042751cb0e56f6259b +Author: Patrik Oldsberg +Date: Tue Mar 24 22:55:33 2020 +0100 + + package: added root release command for creating a version bump commit + +commit 9b8d15606e287a6cccf72163e72ee22a8b3f1653 +Author: Patrik Oldsberg +Date: Tue Mar 24 22:29:47 2020 +0100 + + packages: make plugins private for now + +commit 81ca63fd403d531f6b48067711721c9973b17f59 +Author: Patrik Oldsberg +Date: Tue Mar 24 22:04:48 2020 +0100 + + workflows: add master build with publish + +commit 8047b853ffa2e27f2dc55d6f00dba2236ef494e8 +Author: Muhammad Rivki +Date: Wed Mar 25 01:59:12 2020 +0700 + + fix: update script and ci config + +commit 1a117b0473199e98fc3b316d27774fc9cc9c5f34 +Merge: 6686ca39c5 f9a47d9a0a +Author: Muhammad Rivki +Date: Wed Mar 25 01:52:20 2020 +0700 + + Merge branch 'master' of github.com:mikqi/backstage into ci/deploy-storybook + +commit 6686ca39c5cda4070ef0ea3fe0807eb8823ce522 +Author: Muhammad Rivki +Date: Wed Mar 25 01:43:47 2020 +0700 + + ci: add filter trigger only when package/core change + +commit f9a47d9a0af62aa29673ca14b1d9fd7e6119afaa +Author: Mateus Marquezini +Date: Tue Mar 24 09:38:06 2020 -0300 + + Build and test only changed packages (#352) + + * #285 build and test only changed packages + + * changed since flag param + + * fix build cause --since lerna flag + + * fix build cause --since lerna flag + + * removed checkout option + + * fix build cause --since lerna flag + + * fix build cause --since lerna flag + + * fix build in progress + + * fix build in progress + + * removed --since flag for build executions + + * removed --since flag for build executions + + * changed action checkout step + + * added new ref to the action checkout + + * removed ref prop from the action checkout. Added new step to fetch branches to compare when using lerna --since + + * changed --since param value + + * added --since flag to the build and renamed the fetch step + + * removed --since flag from build. Added new config to the checkout step workflow + + * removed --since flag from yarn build. Added new config to the checkout step workflow + + * removed --since flag from yarn build. Added new step to checkout branch master + + * Added new step to checkout branch master + +commit 250277a861dcd2d33977567c836384fdb676f8e4 +Author: Patrik Oldsberg +Date: Tue Mar 24 12:53:42 2020 +0100 + + packages: mark core and cli as public + +commit d1f49469c09fe3fb6e7292830b06075633af819e +Merge: c5dd7270a6 4852485f9a +Author: Patrik Oldsberg +Date: Tue Mar 24 11:14:07 2020 +0100 + + Merge pull request #371 from spotify/rugvip/books + + package/core: move storybook to separate private and nohoist package + +commit c5dd7270a630b60e5aec9c77f3bb0159832ed437 +Merge: fc55a29140 6b8f0d3961 +Author: Marcus Eide +Date: Tue Mar 24 09:16:11 2020 +0100 + + Merge pull request #376 from spotify/eide/faq-repo-managers + + Add FAQ about repo managers + +commit 6b8f0d3961d0c86447996726271ad91346f261dd +Author: Marcus Eide +Date: Tue Mar 24 09:06:42 2020 +0100 + + Review comment + +commit f629c288ee81d9e0a195497d51598e7a3febe71d +Author: Marcus Eide +Date: Tue Mar 24 08:51:17 2020 +0100 + + Add faq about repo managers + +commit 4852485f9a16d02c19f5970561d8d567048c288b +Author: Patrik Oldsberg +Date: Mon Mar 23 16:58:16 2020 +0100 + + package/core: move storybook to separate private and nohoist package + +commit fc55a29140332d12fd59fea449cacebeea5b3482 +Merge: 459a05654e 1d3a8c110c +Author: Fredrik Adelöw +Date: Mon Mar 23 15:05:00 2020 +0100 + + Merge pull request #361 from spotify/freben/pluginact + + Fix act() warnings on newly created plugin test run + +commit 459a05654ec54b854975f6211f806bde988c1558 +Merge: 58b2b97cfa d154669e0c +Author: Fredrik Adelöw +Date: Mon Mar 23 14:53:56 2020 +0100 + + Merge pull request #369 from spotify/freben/engine + + Require node 12 + +commit d154669e0caba095a696f04d039c50d808bd9374 +Author: Fredrik Adelöw +Date: Mon Mar 23 14:44:23 2020 +0100 + + Require node 12 + +commit 9276d42e698b495f0b89d4f92fbdb8575d31e88b +Author: Muhammad Rivki +Date: Mon Mar 23 20:43:36 2020 +0700 + + fix: remove unused conditional + +commit 184ad42160c927265f6f949d0fb1e9aa4bfb795a +Author: Muhammad Rivki +Date: Mon Mar 23 20:42:34 2020 +0700 + + fix: equivalent + +commit 2a3b7a0a53060ffafb26b5f5dcc7f507b81949ce +Author: Muhammad Rivki +Date: Mon Mar 23 20:41:19 2020 +0700 + + fix: typo + +commit 4083680e8c61e924aa178e80859606322caeb52b +Author: Muhammad Rivki +Date: Mon Mar 23 20:35:10 2020 +0700 + + ci: add new jobs for deploy storybook + +commit 1d3a8c110cf30a8630e35c5973abca00c9b49180 +Author: Fredrik Adelöw +Date: Mon Mar 23 11:53:42 2020 +0100 + + Better waiting + +commit 9d977ccb9c3e8cd4a7ccc55dc4b494a17e572828 +Author: Fredrik Adelöw +Date: Mon Mar 23 08:47:12 2020 +0100 + + Fix act() warnings on newly created plugin test run + +commit 58b2b97cfa830a4590dc0510bc21300b1a9ba718 +Merge: e1a7f0fb29 4f13f2c778 +Author: Patrik Oldsberg +Date: Mon Mar 23 10:00:12 2020 +0100 + + Merge pull request #326 from spotify/rugvip/errors + + Add initial version of core error API with small showcase in welcome plugin and app + +commit 4f13f2c7788b25e17603219fa4d58a3cd0dabbc9 +Author: Patrik Oldsberg +Date: Mon Mar 23 09:40:19 2020 +0100 + + core/apis/errors: rename to error and don't export Error type + +commit 392fc2a47fa5a9628f61ca32ed81dd2e0f42fb5d +Author: Patrik Oldsberg +Date: Thu Mar 19 18:21:42 2020 +0100 + + app/components/ErrorDisplay: added some TODOs + +commit bdaa6031d3f7f5c8ec0dd93252529b8dc3e3660b +Author: Patrik Oldsberg +Date: Thu Mar 19 18:16:47 2020 +0100 + + app: more elaborate error display + +commit a9aede10fcf5251320479491c90f94d2b9fea05e +Author: Patrik Oldsberg +Date: Thu Mar 19 15:33:23 2020 +0100 + + plugins/welcome: add error button that shows an example of consuming the error api + +commit 5ad9dfbcd474b7b538b21677ff1fff07c3741178 +Author: Patrik Oldsberg +Date: Thu Mar 19 15:33:45 2020 +0100 + + app: add initial errorApi implmentation + +commit 9b7dcfffbe78f4ecc28f50301567004b973d1530 +Author: Patrik Oldsberg +Date: Thu Mar 19 15:24:10 2020 +0100 + + core,app: add a method for registering APIs + +commit 4e584c9c71d6f153ce854a6c2b43d01cc8815666 +Author: Patrik Oldsberg +Date: Thu Mar 19 15:12:50 2020 +0100 + + core/apis/ApiRegistry: narrow down types of implementations + +commit 0372c641254f2e2cc589d92006b8051985157ff2 +Author: Patrik Oldsberg +Date: Thu Mar 19 13:44:17 2020 +0100 + + core: added errors api definition in new definitions folder + +commit ec02d83f40b3156c18894464c3502edc8fb0ee28 +Author: Patrik Oldsberg +Date: Thu Mar 19 14:31:58 2020 +0100 + + core/apis/ApiRef: use domain dot notation + +commit e1a7f0fb2930cd159293006e99747ee6f4e42650 +Merge: 8b76868c26 8ace44135d +Author: Patrik Oldsberg +Date: Mon Mar 23 09:43:36 2020 +0100 + + Merge pull request #362 from spotify/rugvip/jsprops + + packages/core: do not require prop types for js + +commit 8ace44135d524d58d5b5652f3c983efc7a1d112e +Author: Patrik Oldsberg +Date: Mon Mar 23 09:35:39 2020 +0100 + + packages/core: do not require prop types for js + +commit 8b76868c26f0d01c11f348f4cb87d42813c5e8eb +Merge: fd40fbdf4b 4f959b94ac +Author: Patrik Oldsberg +Date: Mon Mar 23 09:15:47 2020 +0100 + + Merge pull request #359 from spotify/rugvip/windows + + github/workflows/cli: run on windows as well + +commit fd40fbdf4ba1d1fccdfe00563c7cd42fff316f3e +Merge: 577503b0c3 5d3974e869 +Author: Patrik Oldsberg +Date: Mon Mar 23 08:59:04 2020 +0100 + + Merge pull request #355 from spotify/rugvip/cache + + github/workflows: cache node_modules + +commit 577503b0c391d43000bb84b7f7c5b3dc9f6d13ec +Merge: 263199da55 512e5cb54d +Author: Patrik Oldsberg +Date: Mon Mar 23 08:57:24 2020 +0100 + + Merge pull request #337 from spotify/rugvip/prop-types + + cli: don't enforce prop-types for plugins + +commit 263199da55e714c985e9c8f8e64a4fd9539b095a +Merge: 9a042e4b03 231c991fe0 +Author: Fredrik Adelöw +Date: Mon Mar 23 08:52:15 2020 +0100 + + Merge pull request #340 from spotify/freben/codeowners + + [cli] Add CODEOWNERS support to create-plugin + +commit 9a042e4b03d9fc915f4d2b50a7dc7fa594640d2d +Merge: 958c574afa 7b22d17838 +Author: Stefan Ålund +Date: Mon Mar 23 08:23:42 2020 +0100 + + Merge pull request #354 from majd-asab/feature/add-github-auth + + added login page with github authentication option + +commit 958c574afa9cee293b0f950bb9a7848a9ab5ae2b +Merge: 143227652c fd4b1c8e36 +Author: Stefan Ålund +Date: Mon Mar 23 08:06:36 2020 +0100 + + Merge pull request #350 from mikqi/feat/storybook-integration + + Storybook Integration + +commit eb8d2e55b979ad8f42c98e48c953f43b9bfe89bc +Merge: 5fbc348f34 143227652c +Author: Jose Balanza Martinez +Date: Sun Mar 22 21:44:28 2020 -0600 + + Merge branch 'master' of https://github.com/spotify/backstage into new_branch + + X + +commit e3843a90ced50b504e43bdc73c2ee2dca28e0d8f +Author: Vern Burton +Date: Sun Mar 22 21:28:58 2020 -0500 + + Creating docker-compose.yml with nginx config via a new site. + +commit fd4b1c8e366e2a402444d0bae9c7599b76b280f6 +Author: Muhammad Rivki +Date: Mon Mar 23 08:16:00 2020 +0700 + + fix: auto generated d.ts files when build storybook + +commit e29f55088e2f1343663c41a920346ed4ef3d1da5 +Author: Muhammad Rivki +Date: Mon Mar 23 08:14:42 2020 +0700 + + chore: add build storybook script at root package + +commit fbc786b126b57457221c115ad6b2922e4a01ed6e +Merge: 68134404a6 143227652c +Author: Muhammad Rivki +Date: Mon Mar 23 07:58:56 2020 +0700 + + Merge branch 'master' of github.com:mikqi/backstage into feat/storybook-integration + +commit 7b22d178384e210d6a2f5df97fee9391632170ad +Author: Majd +Date: Sun Mar 22 14:56:52 2020 -0400 + + added login page with github authentication option + +commit 4f959b94ac738f1c8c0838ea41f0e5dcbcb8265f +Author: Patrik Oldsberg +Date: Mon Mar 23 01:31:17 2020 +0100 + + github/workflows/cli: run on windows as well + +commit 143227652c06c4c1d56b5a43246083547fcfc511 +Merge: 61f2fce33b daa891cb2e +Author: Patrik Oldsberg +Date: Mon Mar 23 00:19:23 2020 +0100 + + Merge pull request #356 from spotify/rugvip/cliflow + + github/workflows: move cli e2e test to separate workflow, run on windows as well + +commit daa891cb2ee6c3350ad26cc2f31b06edc1d83104 +Author: Patrik Oldsberg +Date: Sun Mar 22 21:21:09 2020 +0100 + + github/workflows: move cli e2e test to separate workflow, prepare for running on windows as well + +commit 61f2fce33b0a3fcea013b432c8a4bf53322699a0 +Merge: a20d43255f 24a4a74f23 +Author: Stefan Ålund +Date: Sun Mar 22 22:18:50 2020 +0100 + + Merge pull request #353 from AndreasAugustin/feat/editorconfig + + #332 add .editorconfig + +commit a20d43255f200ab52ff104164dbc5cf024a5d54d +Merge: 31e11b0b46 3195e2f2c4 +Author: Patrik Oldsberg +Date: Sun Mar 22 22:00:57 2020 +0100 + + Merge pull request #357 from spotify/rugvip/copyright + + eslint: move copyright template to separate file + +commit 3195e2f2c440f045544e672190797eda4db53c4d +Author: Patrik Oldsberg +Date: Sun Mar 22 21:52:06 2020 +0100 + + eslint: move copyright template to separate file + +commit 231c991fe064e836a1459e3991799028e43a5165 +Author: Fredrik Adelöw +Date: Sun Mar 22 20:59:53 2020 +0100 + + Address review comments + +commit 31e11b0b46e4adcdf1b4a043822e9cb304fb0cc2 +Merge: 39dc09fdd7 6923c2904e +Author: Fredrik Adelöw +Date: Sun Mar 22 21:29:18 2020 +0100 + + Merge pull request #322 from spotify/freben/yarnlock + + Make sure that minimist gets bumped past the vulnerable version + +commit 5d3974e8696850f12589cc06a18440130c77bb80 +Author: Patrik Oldsberg +Date: Sun Mar 22 21:17:55 2020 +0100 + + github/workflows: cache node_modules + +commit 6923c2904ec112d516e9d79860c8899f056cde18 +Author: Fredrik Adelöw +Date: Thu Mar 19 13:33:55 2020 +0100 + + Make sure that minimist gets bumped past the vulnerable version + +commit a14584b485ab046c3c348bf7483dfeae422cb6b1 +Author: Fredrik Adelöw +Date: Fri Mar 20 13:19:24 2020 +0100 + + [cli] Add CODEOWNERS support to create-plugin + +commit 24a4a74f23e890d395840b6d80e0d072e7c275df +Author: AndreasAugustin +Date: Sun Mar 22 19:40:42 2020 +0100 + + #332 add *.tsx, *.jsx, *.html to the .editorconfig + +commit fc5aa5dc48c00e7d121ecaa844beea42823a4e24 +Author: AndreasAugustin +Date: Sun Mar 22 19:23:06 2020 +0100 + + #332 add .editorconfig + + The coniguration is set like the current file types have + +commit 39dc09fdd79519bff86203b1e53ae8b76ee50449 +Merge: 9528bed0b7 9955e9cea6 +Author: Patrik Oldsberg +Date: Sun Mar 22 16:39:39 2020 +0100 + + Merge pull request #351 from spotify/rugvip/ignore + + cli: exclude templates dir from linting + +commit 9955e9cea6d67bd5170fc935a9f346fa18ac4e9b +Author: Patrik Oldsberg +Date: Sun Mar 22 16:08:45 2020 +0100 + + cli: exclude templates dir from linting + +commit 68134404a639e59b6cb9c2776bebbc2aa98b8e06 +Author: Muhammad Rivki +Date: Sun Mar 22 14:09:54 2020 +0700 + + fix: mismatch package version + +commit abe9aab7f95b779dacfeba6ee96ef69c7afca177 +Author: Adam Laiacano +Date: Sat Mar 21 20:43:55 2020 -0400 + + add heroku deployment steps + +commit 9528bed0b72765e177fcbd1844a518f98e0bca6b +Author: Vern Burton +Date: Sat Mar 21 16:55:10 2020 -0500 + + adding issue templates for feature/bug (#329) + +commit 044fad2fbfc8da071b55bd26d5a9bc0a6b290729 +Author: Muhammad Rivki +Date: Sat Mar 21 21:59:25 2020 +0700 + + chore: add run storybook script at root folder + +commit 4609c8f4e008bcf0d2e61512032fccf9a26c6847 +Author: Muhammad Rivki +Date: Sat Mar 21 21:55:31 2020 +0700 + + feat: integration with storybook for @core package + +commit b6c79ab4b5dfdd2f52215a55002b1dd9f8b382ca +Merge: 6d87e3ac3c 5c16d1d937 +Author: Patrik Oldsberg +Date: Sat Mar 21 13:15:34 2020 +0100 + + Merge pull request #349 from spotify/rugvip/lint + + workflows/frontend: add missing lint check + +commit 5c16d1d937f3f28bc53c630b981d30a538b060e6 +Author: Patrik Oldsberg +Date: Sat Mar 21 10:59:23 2020 +0100 + + workflows/frontend: add missing lint check + +commit 6d87e3ac3c5d92b052920726a12728f3947a5578 +Merge: 0ce1cdf21b a6a757c9fe +Author: Patrik Oldsberg +Date: Fri Mar 20 20:51:43 2020 +0100 + + Merge pull request #344 from mateusmarquezini/feature/312-plugin-test-and-list + + plugin test and lint should be part of cli e2e test + +commit a6a757c9fe64c06031a5c0dbb2527299be2d1345 +Author: Mateus Marquezini +Date: Fri Mar 20 14:49:55 2020 -0300 + + added path to run lint and tests inside an specific folder + +commit 32399cd7b69a17a062d726cd985eaa7fa0c3406e +Author: Mateus Marquezini +Date: Fri Mar 20 14:11:13 2020 -0300 + + added path to run lint and tests inside an specific folder + +commit e0127c79a6d2f2caae0f6289bb1809b2e1f78a39 +Author: Mateus Marquezini +Date: Fri Mar 20 14:04:21 2020 -0300 + + added path to run lint and tests inside an specific folder + +commit a8038bac0842a3a1acd8c9b972217d74cb810740 +Author: Mateus Marquezini +Date: Fri Mar 20 13:51:51 2020 -0300 + + added path to run lint and tests inside an specific folder + +commit c25691d0c05aa6e91bf3a45bfad25dae534b0dbf +Author: Mateus Marquezini +Date: Fri Mar 20 13:36:46 2020 -0300 + + reverted changes + +commit d60e7dc068f3e4b61d3a11fded7a3431596caa04 +Author: Mateus Marquezini +Date: Fri Mar 20 13:33:19 2020 -0300 + + added path to run lint and tests inside an specific folder + +commit 293038a0120e7fa7fe0f2cce7e69e1bb7cd02e2d +Author: Mateus Marquezini +Date: Fri Mar 20 13:29:23 2020 -0300 + + added path to run lint and tests inside an specific folder + +commit 6dc109ab1d90a4a02c1bd12fd796ba76b1cdb47f +Author: Mateus Marquezini +Date: Fri Mar 20 13:26:26 2020 -0300 + + added path to run lint and tests inside an specific folder + +commit 0ce1cdf21b1f34bc787e08d0fedec722c815b077 +Merge: db47b005c4 3d27f41366 +Author: Stefan Ålund +Date: Fri Mar 20 14:40:00 2020 +0100 + + Merge pull request #338 from spotify/stefanalund-patch-1 + + Add emojis to Roadmap in README + +commit 66d27128d0ca2d6aed0851ccbf22871c066bca91 +Merge: d958b1d8d2 db47b005c4 +Author: Mateus Marquezini +Date: Fri Mar 20 10:35:18 2020 -0300 + + Merge branch 'master' into feature/312-plugin-test-and-list + +commit d958b1d8d2538fa9d3eb8df2b322bf2088a6cc28 +Author: Mateus Marquezini +Date: Fri Mar 20 10:01:58 2020 -0300 + + fixed theme provider in a plugin test + +commit 3d27f41366bfff1667608d6697123d38b92bda78 +Author: Stefan Ålund +Date: Fri Mar 20 13:00:29 2020 +0100 + + Add emojis to Roadmap in README + +commit 512e5cb54dc0d562f3dae4e91ecfa96e37b69ef3 +Author: Patrik Oldsberg +Date: Fri Mar 20 12:13:58 2020 +0100 + + cli: don't enforce prop-types for plugins + +commit db47b005c4ad3780a6b009b90d851fc3f85af614 +Merge: e32bec77e8 714c4df54a +Author: Patrik Oldsberg +Date: Fri Mar 20 12:21:25 2020 +0100 + + Merge pull request #336 from spotify/rugvip/headliner + + move headline.png to docs/ + +commit 714c4df54a4ed82daaffa08f8c04d78c0fc304cf +Author: Patrik Oldsberg +Date: Fri Mar 20 12:12:34 2020 +0100 + + move headline.png to docs/ + +commit e32bec77e84e64a6819877e469727cf9ffd73958 +Merge: 53ee8e31aa 065dbc3a3e +Author: Stefan Ålund +Date: Fri Mar 20 12:04:14 2020 +0100 + + Merge pull request #333 from spotify/alund/head + + Update header in README + +commit 065dbc3a3e4dbabbe72614aed27c4b648f990725 +Merge: 8a0b6b1fb8 53ee8e31aa +Author: Stefan Ålund +Date: Fri Mar 20 11:57:08 2020 +0100 + + Merge branch 'master' into alund/head + +commit 53ee8e31aa341c1f951ad58ad901249bcce81cc3 +Merge: 55d22c1f36 30aece178d +Author: Stefan Ålund +Date: Fri Mar 20 11:55:58 2020 +0100 + + Merge pull request #331 from spotify/stefanalund-patch-1 + + Added Prettier shield to README + +commit 8a0b6b1fb8cc283152e6448aca026a3fe23b1b3b +Author: Stefan Ålund +Date: Fri Mar 20 10:34:40 2020 +0100 + + Update header in README + +commit 30aece178d1c594d7e467bff14d36c3ad4622711 +Author: Stefan Ålund +Date: Fri Mar 20 08:09:30 2020 +0100 + + Added Prettier shield + +commit 55d22c1f36629030b441821ce14c802e82bee5e4 +Author: Jose Balanza Martinez <62359443+braulio-balanza@users.noreply.github.com> +Date: Thu Mar 19 15:01:50 2020 -0500 + + Updated purpleBlue in PageThemeProvider (#328) + +commit 5fbc348f344aaba16f55a3f5ce830c12b55d1181 +Author: Jose Balanza Martinez +Date: Thu Mar 19 13:45:45 2020 -0500 + + Updated purpleBlue in PageThemeProvider + +commit 07f61e4c2eb8766661039c8ad4af98c5cc81d7b3 +Author: Mateus Marquezini +Date: Thu Mar 19 14:20:43 2020 -0300 + + added yarn lint and test after plugin creation. Fixed some mirror things related with eslint errors + +commit eca2fa04e92bdab83bae2ae5ecc3167fcd3713ff +Merge: bccf62ee52 29ce113096 +Author: Fredrik Adelöw +Date: Thu Mar 19 16:16:23 2020 +0100 + + Merge pull request #324 from spotify/freben/faq + + Add FAQ entry for where to develop plugins + +commit 29ce113096b7c549826562afa8a787696ddff9b7 +Author: Fredrik Adelöw +Date: Thu Mar 19 15:30:22 2020 +0100 + + Add FAQ entry for where to develop plugins + +commit bccf62ee526d69ed1dbdd8454a53edc631fbbaae +Merge: f60c5e417a 31655018c8 +Author: Patrik Oldsberg +Date: Thu Mar 19 14:04:42 2020 +0100 + + Merge pull request #320 from spotify/rugvip/app-build + + cli: add app:build app:serve and use in app + +commit f60c5e417a6a67f081e187ef3d74486521f50abe +Merge: feaf9a9b43 bd801756eb +Author: Patrik Oldsberg +Date: Thu Mar 19 13:02:16 2020 +0100 + + Merge pull request #319 from spotify/rugvip/clidf + + packages: use cli to test and lint core and cli + +commit feaf9a9b43f06b9c5eb7ce63229d5c5ef58c8f23 +Merge: dc0cb6252f 191d9236da +Author: Patrik Oldsberg +Date: Thu Mar 19 13:02:00 2020 +0100 + + Merge pull request #317 from spotify/rugvip/types + + plugins: add testing-library types + +commit 31655018c80f1dffc0227c17575b98f906b80220 +Author: Patrik Oldsberg +Date: Thu Mar 19 12:28:37 2020 +0100 + + app: use app:serve and remove react-scripts dependency + +commit f0bcd22733f12d8ecde1bc77f970141a454a9dbb +Author: Patrik Oldsberg +Date: Thu Mar 19 12:28:16 2020 +0100 + + cli: add app:serve + +commit c57fd17102fd74641d5e418728a3ba27c6826317 +Author: Patrik Oldsberg +Date: Thu Mar 19 11:58:41 2020 +0100 + + cli: add app:build and use in app + +commit bd801756eb62803dd705aebf6deba14d196cce2a +Author: Patrik Oldsberg +Date: Thu Mar 19 12:08:09 2020 +0100 + + cli: support ts jest config and make test setup module optional + +commit 52f56ab9b0ac4912edd0516aa5317c10250bc96a +Author: Patrik Oldsberg +Date: Thu Mar 19 11:28:07 2020 +0100 + + packages: use cli to test and lint core and cli + +commit 191d9236dac714b1148252f8c4fcad8566df9e12 +Author: Patrik Oldsberg +Date: Thu Mar 19 11:06:11 2020 +0100 + + plugins: add testing-library types + +commit dc0cb6252f950ee3e64a35352d5766d8fc648655 +Merge: b0fbbeb3a3 8133f00556 +Author: Stefan Ålund +Date: Thu Mar 19 08:22:45 2020 +0100 + + Merge pull request #314 from tarcinil/feature/281/adding-faq-to-readme + + adding FAQ to readme + +commit 8133f005563cd143d4a822c09d24da6b640be4b6 +Author: Vern Burton +Date: Wed Mar 18 18:40:36 2020 -0500 + + adding FAQ to readme + +commit b0fbbeb3a3054f38b30e456d94d7c73cbf281971 +Merge: d87c80743e 7ccd7cace8 +Author: Niklas Ek +Date: Wed Mar 18 22:28:36 2020 +0100 + + Merge pull request #313 from spotify/nikek/def-plugin-test + + Add testing lib jest dom types, fixes #311 + +commit 7ccd7cace86a05bdab8b926a4251e2d159a2893c +Author: nikek +Date: Wed Mar 18 22:18:28 2020 +0100 + + Tweak according to prettier + +commit 1db34ba2a3fcdac6b4a8708b747b0bcdf41c2816 +Author: nikek +Date: Wed Mar 18 21:35:38 2020 +0100 + + add testing lib jest dom types, fixes #311 + +commit d87c80743e8506afdff2c95b5cb9d857a03e3fe8 +Merge: 6bcdfebfaa abc984fa25 +Author: Patrik Oldsberg +Date: Wed Mar 18 21:13:57 2020 +0100 + + Merge pull request #310 from spotify/rugvip/merge + + cli: unify test and lint commands + +commit abc984fa251ba0fa77370dbfc29a486dd2d00def +Author: Patrik Oldsberg +Date: Wed Mar 18 17:44:48 2020 +0100 + + plugins: removed unnecessary jest config and move setup to src/setupTests.ts + +commit 89f39a06e1f33b344ca36dba6424f84210d1283d +Author: Patrik Oldsberg +Date: Wed Mar 18 17:42:40 2020 +0100 + + cli: unify test and lint commands + +commit 6bcdfebfaa8b486ec0daaea64aa441a63c582501 +Merge: 697ac5923f 8637518f3c +Author: Patrik Oldsberg +Date: Wed Mar 18 17:59:34 2020 +0100 + + Merge pull request #309 from spotify/rugvip/cli-test + + cli: added app:test command + +commit 8637518f3cf24e42c7d103a42f114d51ae7dcf7d +Author: Patrik Oldsberg +Date: Wed Mar 18 16:54:22 2020 +0100 + + app: use cli app:test + copyright header + +commit 4fb95dc3f13178f32c99f6168b0ee9073d2858b6 +Author: Patrik Oldsberg +Date: Wed Mar 18 16:54:10 2020 +0100 + + cli: added app:test command + +commit 697ac5923f5ee411c123b87871fa47f884c3a139 +Merge: ee34b77b35 d83267089c +Author: Patrik Oldsberg +Date: Wed Mar 18 17:37:47 2020 +0100 + + Merge pull request #308 from spotify/rugvip/app-lint + + cli: add and use app:lint + include default eslint config in cli + +commit d83267089c6197eb2513b819fe667fa3efaf9be5 +Author: Patrik Oldsberg +Date: Wed Mar 18 17:31:17 2020 +0100 + + app: restored fixup'd comment line in setupTests + +commit 0d9fd6d7ca6a6dc35f82e27a27d2a24528faa545 +Author: Patrik Oldsberg +Date: Wed Mar 18 17:11:57 2020 +0100 + + app: remove copyright header in plugins list to avoid create-plugin mangling + +commit cedd53ec8aef49e613b49f5062237f3909096390 +Author: Patrik Oldsberg +Date: Wed Mar 18 16:58:07 2020 +0100 + + app: fix lint issues + +commit 01771489d52b68f7cf3f174f4f987d310e45007c +Author: Patrik Oldsberg +Date: Wed Mar 18 16:27:08 2020 +0100 + + cli: limit to 0 warnings and use codeframe format for lint tasks + +commit a711dc21b2129a951f81be0548dc14d09f1c3502 +Author: Patrik Oldsberg +Date: Wed Mar 18 15:09:48 2020 +0100 + + cli: add and use app:lint + include default eslint config in cli + +commit ee34b77b3589d9c43e351a464f308a161f561f9a +Merge: d4f587fdbe 756e7e3212 +Author: Patrik Oldsberg +Date: Wed Mar 18 16:27:19 2020 +0100 + + Merge pull request #307 from spotify/rugvip/helper-fix + + cli: fix name not being defined in helper + +commit 756e7e3212dfa5d3b0843f41f5f8fc5f9de9a570 +Author: Patrik Oldsberg +Date: Wed Mar 18 16:10:48 2020 +0100 + + cli: fix name not being defined in helper + +commit d4f587fdbe17a663a875cd1eeff3f9204b8b3f59 +Merge: 034c9de53c 371084d30c +Author: Patrik Oldsberg +Date: Wed Mar 18 16:07:15 2020 +0100 + + Merge pull request #304 from spotify/rugvip/cli-helpers + + cli: add helpers for running child processes and error handling in commands + +commit 371084d30c559043679c6338ed5ca8a87a5106e4 +Author: Patrik Oldsberg +Date: Wed Mar 18 15:55:05 2020 +0100 + + cli: add helper to wait for child to exit + use to fix watch-deps + +commit 7035f8ed5278cd090ed9208303e0811951039f5f +Author: Patrik Oldsberg +Date: Wed Mar 18 15:54:16 2020 +0100 + + cli: removed unnecessary try-catch in plugin:serve + +commit a60bfc31d9be9ccb480c148827975331d94429cb +Author: Patrik Oldsberg +Date: Wed Mar 18 15:51:11 2020 +0100 + + script/cli-e2e-test: error out if child exits early + +commit 034c9de53cfa1cf3563ab1f92c2cc953126ccde8 +Merge: 2e49678731 72bbbfd243 +Author: Fredrik Adelöw +Date: Wed Mar 18 15:51:17 2020 +0100 + + Merge pull request #303 from spotify/frreben/pluginid + + Require plugin IDs to be valid + +commit 72bbbfd243b5a907b24ce35bdcbd51ff9af39024 +Author: Fredrik Adelöw +Date: Wed Mar 18 09:30:08 2020 +0100 + + Require plugin IDs to be valid + +commit 2e496787318bf166ce756c7c4d29afb43734ad70 +Merge: 4d7a93c351 740a6efdac +Author: Stefan Ålund +Date: Wed Mar 18 13:59:53 2020 +0100 + + Merge pull request #305 from spotify/stefanalund-patch-1 + + Add milestones and blog post to README + +commit 740a6efdac7827e65e5b9c0e7e77cce55d0add59 +Author: Stefan Ålund +Date: Wed Mar 18 13:04:21 2020 +0100 + + Add milestones and blog post to README + +commit 79d2ba5bc7f1734d4a448b5b3dc82a6315db66de +Author: Patrik Oldsberg +Date: Wed Mar 18 11:32:20 2020 +0100 + + cli: add helpers for running child processes and error handling in commands + +commit 4d7a93c3513ab99bdd2136e5fc51d7cbc5ed504c +Merge: c06606e802 9f38e9518b +Author: Patrik Oldsberg +Date: Wed Mar 18 09:51:00 2020 +0100 + + Merge pull request #279 from inductor/feature/docker + + Add Docker + +commit c06606e80280725169ac06b6eef16e5fbcaf32da +Merge: fd90d8af9a 020386fb0c +Author: Fredrik Adelöw +Date: Wed Mar 18 08:36:59 2020 +0100 + + Merge pull request #302 from tarcinil/feature/280/add-discord + + Add Discord Shield + +commit 020386fb0cd560ba2f35478de78ac12b52224de3 +Author: Vern Burton +Date: Tue Mar 17 19:21:55 2020 -0500 + + updating to serverid, and using non-expiring link + +commit 8983afa1bf46afe25ba90a98bd72bf929b8a5020 +Author: Vern Burton +Date: Tue Mar 17 18:57:51 2020 -0500 + + adding discord + +commit 9f38e9518b1c60f6f76e8d58af699f261d9e8b53 +Author: inductor +Date: Wed Mar 18 08:30:25 2020 +0900 + + fix image name + +commit fd90d8af9afd153b0f8a39f9286ec30dcf147d6a +Merge: e09bf890c2 3772c82beb +Author: Patrik Oldsberg +Date: Tue Mar 17 21:28:54 2020 +0100 + + Merge pull request #301 from spotify/rugvip/shell + + cli: use shell option to fix build issues on windows + +commit 3772c82bebd4b85affcbea31a6933ff97b6ff21b +Author: Patrik Oldsberg +Date: Tue Mar 17 20:40:48 2020 +0100 + + cli: use shell option to fix build issues on windows + +commit e09bf890c236ee2d0b26dd1e454ab5cbb782c8fd +Merge: 85f200e1e1 791c383db1 +Author: Patrik Oldsberg +Date: Tue Mar 17 16:58:23 2020 +0100 + + Merge pull request #299 from spotify/alund/faq + + Move and link to FAQ + +commit 2fc0f23a1d6e174f2193fce06aa66bc3190138fd +Author: inductor +Date: Tue Mar 17 23:36:42 2020 +0900 + + apply change to readme + +commit 9e81cf9031b2d58c30b04690895bc7a106837faa +Author: inductor +Date: Tue Mar 17 23:29:46 2020 +0900 + + work on nginx + +commit 791c383db1ebe0d404f7023288e6a2257271710d +Author: Stefan Ålund +Date: Tue Mar 17 14:55:39 2020 +0100 + + Move and link to FAQ + +commit 85f200e1e1d7296a84bfcf341b63955b3389373e +Merge: 8d1e98f2e1 8aca4ed9f6 +Author: Patrik Oldsberg +Date: Tue Mar 17 14:32:25 2020 +0100 + + Merge pull request #295 from spotify/Rugvip-patch-1 + + Create FAQ.md + +commit 8aca4ed9f64b27cac19fabffacb35c8e30e891f7 +Author: Patrik Oldsberg +Date: Tue Mar 17 12:21:37 2020 +0100 + + Update FAQ.md + +commit b840db3026e8d365c4e3162c54615788caa1512a +Author: Patrik Oldsberg +Date: Tue Mar 17 10:54:24 2020 +0100 + + Create FAQ.md + +commit 8d1e98f2e1f2a68e8a318181a2bd087dad8df2ad +Merge: 0cd6fcc329 086282a2f5 +Author: Fredrik Adelöw +Date: Tue Mar 17 09:41:24 2020 +0100 + + Merge pull request #277 from inductor/feature/use_gha_checkout_v2 + + Use GHA checkout v2 for faster fetch + +commit 94d98aa2cb500225682c66e1752dcd1fb930d099 +Author: inductor +Date: Tue Mar 17 12:51:47 2020 +0900 + + Add EXPOSE to speficy container port + +commit e3b0ec258224f36fdac6bb05847c7b261368222d +Author: inductor +Date: Tue Mar 17 12:50:58 2020 +0900 + + remove unnecessary alias + +commit e646487eb0aeeb36b4805c88481ff37e20194a9b +Author: inductor +Date: Tue Mar 17 12:49:05 2020 +0900 + + Add Docker section in README + +commit 439e9848482854f5d2eaa409c15e20dcc10c96e4 +Author: inductor +Date: Tue Mar 17 12:46:59 2020 +0900 + + Add docker environment + +commit 086282a2f5110a56814987966ed4c1cc7856e338 +Author: inductor +Date: Tue Mar 17 11:40:01 2020 +0900 + + Use GHA checkout v2 for faster fetch + +commit 0cd6fcc32995c7ca26e2ed326472f6681387ff6e +Merge: d3a8095ce9 47f97b9f12 +Author: Stefan Ålund +Date: Mon Mar 16 22:59:19 2020 +0100 + + Merge pull request #275 from mwufi/support-button-email + + display multiple emails + +commit d3a8095ce90f051185c6afe3a09b900b08355280 +Merge: b0b2df0aec ed706c7f90 +Author: Niklas +Date: Mon Mar 16 22:18:13 2020 +0100 + + Merge pull request #274 from evanwolf/patch-1 + + typo fixed + +commit 47f97b9f120459210f93b3545a2e2298488a3ef1 +Author: Zen Tang +Date: Mon Mar 16 14:33:44 2020 -0500 + + display multiple emails + +commit ed706c7f90f75b6e5375fc04356440c6433371fc +Author: Phil Wolff +Date: Mon Mar 16 12:15:56 2020 -0700 + + typo fixed + +commit b0b2df0aecf89c4e7eaa6167f802fc753f0fa53f +Merge: 2ff685efa9 1f2670990f +Author: Niklas +Date: Mon Mar 16 15:27:01 2020 +0100 + + Merge pull request #269 from spotify/nikek-patch-1 + + Rephrasing sentences about concepts + +commit 1f2670990f97cc1fe51d4b596e8d5ba471976d28 +Author: Niklas +Date: Mon Mar 16 15:10:35 2020 +0100 + + Rephrasing sentences about concepts + +commit 2ff685efa9574cd69c768f1a84b155ece08f76cc +Merge: dcb44a9c34 fe2d4423a6 +Author: Stefan Ålund +Date: Mon Mar 16 13:48:57 2020 +0100 + + Merge pull request #268 from spotify/alund/replace-head + + Update headline.png + +commit dcb44a9c34299580d8d108e3e0aaf741f8a4622a +Merge: cbf0c0511a 5e7334e415 +Author: Stefan Ålund +Date: Mon Mar 16 13:41:10 2020 +0100 + + Merge pull request #267 from spotify/contact-us-to-join + + Join us + +commit fe2d4423a6610307116432f1a8b44827295ceb34 +Author: Stefan Ålund +Date: Mon Mar 16 13:38:43 2020 +0100 + + Update headline.png + +commit 5e7334e415365374a4c6234f737d52ed95c3cc76 +Author: Jim Haughwout +Date: Mon Mar 16 13:31:26 2020 +0100 + + Join us + + Putting this on repo will attract developers (not recruiters). Putting it down by *Community* will attract those who like FOSS community stuff, again more devs and less agencies + +commit cbf0c0511a0e77bbd9df8a0dfc91c7eb30053482 +Merge: e56ab9726d b6b7e19754 +Author: Fredrik Adelöw +Date: Mon Mar 16 11:10:28 2020 +0100 + + Merge pull request #263 from spotify/freben/ts + + Some more TS weekend buffoonery + +commit e56ab9726d296acbc08e43e8a24251cad9233b46 +Author: Stefan Ålund +Date: Mon Mar 16 10:12:57 2020 +0100 + + yarn install in README + +commit b6b7e197543ce11a5d88c8bc9312aa6775899391 +Author: Fredrik Adelöw +Date: Mon Mar 16 09:20:09 2020 +0100 + + Some more TS weekend buffoonery + +commit 4dda4695fb72394a97c4a501de7a935afbe9527f +Merge: 2da3b853e6 a7b6e75f39 +Author: Stefan Ålund +Date: Mon Mar 16 09:24:01 2020 +0100 + + Merge pull request #262 from spotify/alund/docs + + Put getting started back in README + +commit a7b6e75f394fa69ff4c10c05038f5c8a4713d079 +Author: Stefan Ålund +Date: Mon Mar 16 09:05:07 2020 +0100 + + Use MUI List in welcome plugin + +commit 2db71be89157c1ca8437e4f0c45ae99d60928bfe +Author: Stefan Ålund +Date: Mon Mar 16 08:58:21 2020 +0100 + + Fix broken link + +commit 61768175020c61d6e99aa812d94b503da2c32363 +Author: Stefan Ålund +Date: Sun Mar 15 21:28:29 2020 +0100 + + Put getting started back in README + +commit 2da3b853e615ca9abc8606844e4e6829340dd01a +Merge: 416a2cda2b 947434e6a4 +Author: Stefan Ålund +Date: Sun Mar 15 08:52:51 2020 +0100 + + Merge pull request #259 from spotify/dependabot/npm_and_yarn/acorn-5.7.4 + + Bump acorn from 5.7.3 to 5.7.4 + +commit 947434e6a415d3350b72216bed602aaa45bc3c26 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Sun Mar 15 07:43:36 2020 +0000 + + Bump acorn from 5.7.3 to 5.7.4 + + Bumps [acorn](https://github.com/acornjs/acorn) from 5.7.3 to 5.7.4. + - [Release notes](https://github.com/acornjs/acorn/releases) + - [Commits](https://github.com/acornjs/acorn/compare/5.7.3...5.7.4) + + Signed-off-by: dependabot[bot] + +commit 416a2cda2b923aaa71580284fbf8693c8abd3cde +Merge: 336295b671 85f5ca9441 +Author: Stefan Ålund +Date: Sat Mar 14 15:49:06 2020 +0100 + + Merge pull request #257 from spotify/nikek/docs + + Structure documentation in /docs + +commit 85f5ca94412ebb2728e50ecc8b0b301fe3180a50 +Author: nikek +Date: Fri Mar 13 18:51:54 2020 +0100 + + Structure documentation in /docs + +commit 336295b6712c3b5227fc07e8e9f7d0be51799938 +Merge: 321780a05f a35bef78cb +Author: Niklas +Date: Fri Mar 13 17:45:26 2020 +0100 + + Merge pull request #256 from spotify/stefanalund-patch-1 + + UI -> UX + +commit 321780a05f1fd452696bd023d2c53fd873aa381f +Merge: 386ca06943 64cdb6bbe1 +Author: Patrik Oldsberg +Date: Fri Mar 13 17:22:26 2020 +0100 + + Merge pull request #251 from spotify/rugvip/api-provider + + packages/core: added api provider + +commit a35bef78cbb810d72698f55a1dad2a7b281c0882 +Author: Stefan Ålund +Date: Fri Mar 13 17:01:03 2020 +0100 + + UI -> UX + +commit 386ca0694312f3eeaf64c6176959939985cb3211 +Merge: a3dcdd0b82 72dca3b1a5 +Author: Fredrik Adelöw +Date: Fri Mar 13 12:43:31 2020 +0100 + + Merge pull request #254 from spotify/freben/ts + + Just some utilities converted to ts + +commit 72dca3b1a50024a2d4c88a0a9e305484a3a284c6 +Author: Fredrik Adelöw +Date: Fri Mar 13 11:58:41 2020 +0100 + + Just some utilities converted to ts + +commit a3dcdd0b82548238431ee212395942c4de2f5838 +Merge: 8a39b44778 78321d2718 +Author: Raghunandan Balachandran +Date: Fri Mar 13 11:37:27 2020 +0100 + + Merge pull request #231 from spotify/soapraj/plugin-assets + + copy plugin assets to dist + +commit 8a39b44778d65c94bd5a72f0ea445e6681532d50 +Merge: 5f0ebea5c8 c1c3f17bc7 +Author: Fredrik Adelöw +Date: Fri Mar 13 11:30:53 2020 +0100 + + Merge pull request #247 from spotify/freben/morelint + + Remove some lint exceptions + +commit 5f0ebea5c8bc852a5471fb972eb3297537614095 +Merge: d7c511f63f b55921a55a +Author: Stefan Ålund +Date: Fri Mar 13 11:13:57 2020 +0100 + + Merge pull request #253 from spotify/alund/new-arch-img + + Show Phase 2 in overview pic + +commit d7c511f63fbf1c1fb79ac1acca7bf35ac7adffb9 +Merge: 6353be55f6 9e8c5bc588 +Author: Patrik Oldsberg +Date: Fri Mar 13 10:33:11 2020 +0100 + + Merge pull request #252 from spotify/rugvip/clean-theme + + core/layout/Page: removed unused theme fields + +commit b55921a55af53c5ccc77c8da97b9cc1a67597066 +Author: Stefan Ålund +Date: Fri Mar 13 10:29:42 2020 +0100 + + Show Phase 2 in overview pic + +commit 9e8c5bc5889d2de506ea41b5a465023e8b6a8667 +Author: Patrik Oldsberg +Date: Fri Mar 13 09:50:54 2020 +0100 + + core/layout/Page: removed unused theme fields + +commit 64cdb6bbe1e1d1b4281873b298e719633c0dfe36 +Author: Patrik Oldsberg +Date: Thu Mar 12 10:58:08 2020 +0100 + + packages/core: added api provider + +commit a15458b0af4b2007e223f0a586687195f96d9848 +Author: Patrik Oldsberg +Date: Fri Mar 13 09:52:00 2020 +0100 + + core: added logCollector test util + +commit 78321d27181e197a5eec7e7166b60793d8626afe +Author: Raghunandan +Date: Fri Mar 13 09:39:15 2020 +0100 + + move copy assets to build step + +commit c1c3f17bc77d27537dfa5cfb1ac45fdac7fd1b3f +Author: Fredrik Adelöw +Date: Fri Mar 13 08:43:41 2020 +0100 + + Touch stuff just to test workflow settings + +commit 6353be55f632e7e0ac6bd6cc2a5d2f292719e82e +Merge: 3220a490f7 cd4c8ce587 +Author: Fredrik Adelöw +Date: Fri Mar 13 08:41:53 2020 +0100 + + Merge pull request #246 from spotify/freben/on + + Build on all relevant PR events, not pushes + +commit 9cca522c43750e9c8c2ec15ee4c49c014d7de888 +Author: Fredrik Adelöw +Date: Fri Mar 13 08:39:49 2020 +0100 + + Fix progess test + +commit b65160dcf55b17dc00572587d4f6db1eace70697 +Author: Raghunandan +Date: Wed Mar 11 15:12:49 2020 +0100 + + switch order for plugin build script + +commit d4f4c6c978438013517831880eca98ea28c84c58 +Author: Raghunandan +Date: Wed Mar 11 15:11:50 2020 +0100 + + remove watch mode options for copyAssets command + +commit 13b8fe81f249129cd6e9e3823012c4af2fd8402f +Author: Raghunandan +Date: Wed Mar 11 15:09:37 2020 +0100 + + add module declaration for asset files + +commit 49ed390eb7d2e0322e250a3abc9520d5c46d39a5 +Author: Raghunandan +Date: Wed Mar 11 14:55:16 2020 +0100 + + add copy assets to cli + +commit 3220a490f7fa2a9b15eed7d6f3b6664fce85e464 +Merge: 3814ba0db7 be7513797b +Author: Stefan Ålund +Date: Thu Mar 12 20:28:47 2020 +0100 + + Merge pull request #248 from spotify/JimHaughwout-tweak-1 + + Minor market positioning tweaks + +commit be7513797b335aea1a591e06f64395696bdef81e +Author: Jim Haughwout +Date: Thu Mar 12 17:23:23 2020 +0100 + + Minor market positioning tweaks + + Some text that highlights the key benefits in a direct way + +commit e1565289b77006e1dd3d9c90a765b8431e8e233f +Author: Fredrik Adelöw +Date: Thu Mar 12 16:38:10 2020 +0100 + + Remove some lint exceptions + +commit cd4c8ce5872e609ab6a3499f3ea64883c8d3d060 +Author: Fredrik Adelöw +Date: Thu Mar 12 14:51:53 2020 +0100 + + Build on all relevant PR events, not pushes + +commit 3814ba0db7d872fc11c778e2ec234e5148afc812 +Merge: d0ef904db7 4c661095a3 +Author: Stefan Ålund +Date: Thu Mar 12 14:39:27 2020 +0100 + + Merge pull request #245 from spotify/stefanalund-patch-1 + + Link out to backstage.io from README + +commit 4c661095a327fe3163431b6ad7ef5c49e0ae194c +Author: Stefan Ålund +Date: Thu Mar 12 14:29:36 2020 +0100 + + Link out to backstage.io from README + +commit d0ef904db7b505c01fd4b670690ffb90dbc0e547 +Merge: 06edf00c18 37fd2ab827 +Author: Stefan Ålund +Date: Thu Mar 12 14:22:23 2020 +0100 + + Merge pull request #244 from spotify/alund/arch + + New architecture image + +commit 37fd2ab827961c447d515f7884cedae719bde384 +Author: Stefan Ålund +Date: Thu Mar 12 14:12:20 2020 +0100 + + Update backstage_overview.png + +commit 0a054d3779934ee3ccf232d5baf7fca6792c32ae +Author: Stefan Ålund +Date: Thu Mar 12 13:58:40 2020 +0100 + + New architecture image + +commit 06edf00c1888370cf9f652b512721f1b3d62a245 +Merge: 39938a7d59 509c3318b3 +Author: Fredrik Adelöw +Date: Thu Mar 12 14:03:48 2020 +0100 + + Merge pull request #243 from spotify/freben/build + + Remove incremental builds, since that breaks CI right now + +commit 509c3318b383a284d4470ff4986763ff5fc78696 +Author: Fredrik Adelöw +Date: Thu Mar 12 13:52:57 2020 +0100 + + Remove incremental builds, since that breaks CI right now + +commit 39938a7d594eb71a1643db543cc34a5db9f8ea0a +Merge: f0aa93056d 8b4dcd92a8 +Author: Marcus Eide +Date: Thu Mar 12 13:51:55 2020 +0100 + + Merge pull request #233 from spotify/eide/discord-links-readme + + Add information about our Discord server + +commit f0aa93056d651a4d25da7cd151729b2356a7b89f +Merge: 4bf779020c d8e6591d05 +Author: Stefan Ålund +Date: Thu Mar 12 13:51:44 2020 +0100 + + Merge pull request #239 from spotify/stefanalund-patch-1 + + Update roadmap section of README + +commit d8e6591d05271d9da81095658a5f3d8983244c60 +Author: Stefan Ålund +Date: Thu Mar 12 13:50:13 2020 +0100 + + Update README.md + +commit 4bf779020c10a508c78cccbeb3b08787725564cd +Merge: e98ae65383 1fec035351 +Author: Fredrik Adelöw +Date: Thu Mar 12 13:37:48 2020 +0100 + + Merge pull request #242 from spotify/freben/license-header + + Add license headers and eslint rules for them + +commit 8b4dcd92a89b3f35aa3f99f7a9829871eebe5840 +Merge: 4142bee9f1 e98ae65383 +Author: Marcus Eide +Date: Thu Mar 12 13:27:32 2020 +0100 + + Merge branch 'master' into eide/discord-links-readme + +commit 1fec035351b0c9f3f279e94fccae4dbdb2e4b528 +Author: Fredrik Adelöw +Date: Thu Mar 12 09:27:55 2020 +0100 + + Add license headers and eslint rules for them + +commit e98ae65383c4e2ef30983a857389fbc123b25953 +Merge: eab0512baf bb1bc34bd4 +Author: Fredrik Adelöw +Date: Thu Mar 12 13:04:45 2020 +0100 + + Merge pull request #241 from spotify/freben/testversion + + Fix version insertion tests in cli + +commit bb1bc34bd4b406c931522e06aa3caea840569ff3 +Author: Fredrik Adelöw +Date: Thu Mar 12 13:02:39 2020 +0100 + + Fix version insertion tests in cli + +commit 35c3fb2ea38c0a959183538c27fb1ca80e72868f +Author: Stefan Ålund +Date: Thu Mar 12 12:39:39 2020 +0100 + + Update roadmap section of README + +commit eab0512baf48e2c67a2ce74314748628b9110c9b +Merge: 8514bce73f 73517462f7 +Author: Patrik Oldsberg +Date: Thu Mar 12 12:08:04 2020 +0100 + + Merge pull request #238 from spotify/rugvip/create-version + + packages/cli: use current version when templating a plugin + +commit 73517462f7a2501064e4e81a7b6f3542acd2cf42 +Author: Patrik Oldsberg +Date: Thu Mar 12 11:23:49 2020 +0100 + + packages/cli: use current version when templating a plugin + +commit 8514bce73f90f7f06ed0f56e484bf2dde8e8c665 +Merge: e28922093f dbabf15df2 +Author: Stefan Ålund +Date: Thu Mar 12 11:17:10 2020 +0100 + + Merge pull request #237 from spotify/alund/roadmap + + Update roadmap section of README + +commit dbabf15df2ba3965ef68056f77a8711703bf0d51 +Author: Stefan Ålund +Date: Thu Mar 12 11:03:06 2020 +0100 + + Update headline.png + +commit 58b11932186c2ec89081a6aa6a2f46da59895f86 +Author: Stefan Ålund +Date: Thu Mar 12 10:56:14 2020 +0100 + + Update README.md + +commit a16d83faaeb37d72e39f8b8cce62bcf620a36518 +Author: Stefan Ålund +Date: Thu Mar 12 10:54:57 2020 +0100 + + Update roadmap section of README + +commit 4142bee9f1baab946e69e53b58c099616f341a93 +Merge: eefe6c435a 88ff324174 +Author: Marcus Eide +Date: Thu Mar 12 09:10:39 2020 +0100 + + Merge branch 'eide/discord-links-readme' of https://github.com/spotify/backstage into eide/discord-links-readme + +commit eefe6c435af20c6ee8e225f2d6544e556d7f4149 +Author: Marcus Eide +Date: Wed Mar 11 16:46:16 2020 +0100 + + Added information about our Discord server to Readme + +commit 88ff324174643f21d3f2260636692a3af9f008b9 +Author: Marcus Eide +Date: Wed Mar 11 16:46:16 2020 +0100 + + Added information about our Discord server to Readme + +commit e28922093fc74a7de33c612b54bcac735497933f +Merge: fb44ca38e8 17a9e71e96 +Author: Fredrik Adelöw +Date: Wed Mar 11 12:05:30 2020 +0100 + + Merge pull request #221 from spotify/freben/back-version + + Step back versions to 0.x to signal non-finished status + +commit fb44ca38e80f38a021a2264b6c09418d66259759 +Merge: 23d94c629d 360037f964 +Author: Marcus Eide +Date: Wed Mar 11 11:00:05 2020 +0100 + + Merge pull request #225 from spotify/eide/plugin-docs + + First commit of plugin documentation + +commit 360037f96496d2ab331306f43556b6f14a48c6b1 +Author: Marcus Eide +Date: Wed Mar 11 10:50:51 2020 +0100 + + Guidelines embryo + +commit 7732205bf73efd5e1ab67d5a54dae756de77bb23 +Author: Marcus Eide +Date: Wed Mar 11 10:40:10 2020 +0100 + + Review comments + +commit 17a9e71e96ef1df65826073e4e64681f622d0deb +Author: Fredrik Adelöw +Date: Tue Mar 10 11:20:10 2020 +0100 + + Step back versions to 0.x to signal non-finished status + +commit 23d94c629d4592a2ffff50379dbbcf8ed4831e56 +Merge: 4309513a91 c153a0fc96 +Author: Niklas +Date: Wed Mar 11 09:26:30 2020 +0100 + + Merge pull request #229 from spotify/nikek/welcome + + Add a welcome page + +commit c153a0fc96679332cd560715eeb8955066a22b52 +Author: nikek +Date: Wed Mar 11 08:15:35 2020 +0100 + + Tweak welcome page styling and text + +commit 8045713c9a94b093de5c2bd989d87344702ac0c1 +Author: nikek +Date: Tue Mar 10 18:49:57 2020 +0100 + + Add a welcome page + +commit 4309513a91bebd096d8fa9162bf824b995c18b78 +Merge: 22b4e274f4 0fb84519f2 +Author: Stefan Ålund +Date: Tue Mar 10 17:06:13 2020 +0100 + + Merge pull request #222 from spotify/stefanalund-patch-1 + + Add Roadmap to README + +commit 22b4e274f482f11b7411381ede9e89d5488f6379 +Merge: 7c4ec88dff 54214323c6 +Author: Patrik Oldsberg +Date: Tue Mar 10 16:48:28 2020 +0100 + + Merge pull request #227 from spotify/rugvip/nonteties + + packages/core: removed entity-related APIs + +commit 7c4ec88dff6b8c8574bd18379bcced8de6e660bb +Merge: ebee008e42 ebd7a4e42f +Author: Patrik Oldsberg +Date: Tue Mar 10 16:48:10 2020 +0100 + + Merge pull request #228 from spotify/rugvip/nojs + + packages/core: removed some unused javascript things + +commit 0fb84519f22f9b5b32916bb88dbe7cd11c49fac2 +Author: Stefan Ålund +Date: Tue Mar 10 16:46:23 2020 +0100 + + 4 years actually + +commit ebd7a4e42f77f9687bc81a026e8942c3f94a37d0 +Author: Patrik Oldsberg +Date: Tue Mar 10 16:04:36 2020 +0100 + + packages/core: removed some unused javascript things + +commit ebee008e42d4ca4054cc4d0b651c6b3b714a0f8a +Merge: b6cba11d77 a9fc86a440 +Author: Stefan Ålund +Date: Tue Mar 10 15:58:01 2020 +0100 + + Merge pull request #226 from spotify/rugvip/nodelts + + README: added note about requiring node 12 + +commit 54214323c60c6e1a8850df15ea1803248f6b14e7 +Author: Patrik Oldsberg +Date: Tue Mar 10 15:54:04 2020 +0100 + + packages/core: removed entity-related APIs + +commit a9fc86a440b53ead9a894790a25e095807bdae77 +Author: Patrik Oldsberg +Date: Tue Mar 10 15:45:41 2020 +0100 + + README: added note about requiring node 12 + +commit b6cba11d777a803200abea522d703e7ebb0c1d4c +Merge: 12f607c6f0 f39d5f7dca +Author: Patrik Oldsberg +Date: Tue Mar 10 15:37:01 2020 +0100 + + Merge pull request #223 from spotify/rugvip/e2e-cli-test + + added scripts dir with test for making sure serve and plugin scaffolding works + +commit 301f048ae4a87e92d3e9d9d5a07faf424c2d0afa +Author: Stefan Ålund +Date: Tue Mar 10 15:21:55 2020 +0100 + + More edits of goal + +commit 2864a8fb3d7f0996d000ddb566eba73c823e43da +Author: Marcus Eide +Date: Tue Mar 10 15:17:43 2020 +0100 + + First commit of plugin documentation + +commit d879b7e780c097fa1f96fe953a52b825bf15b4e2 +Author: Stefan Ålund +Date: Tue Mar 10 15:11:28 2020 +0100 + + Update README.md + +commit f014933e1a70abd3b793a2c3706a6cf913635f99 +Author: Stefan Ålund +Date: Tue Mar 10 15:03:04 2020 +0100 + + Update README.md + +commit 12f607c6f08d4433a5e0ce31ce7b0b3da808dc4f +Merge: 3d1d73bbda 246e5b70c7 +Author: Patrik Oldsberg +Date: Tue Mar 10 14:38:25 2020 +0100 + + Merge pull request #218 from spotify/patriko/cra + + app: try using create-react-app without hoisting + +commit f39d5f7dca337be5a6652a13dc741fd8185497d7 +Author: Patrik Oldsberg +Date: Tue Mar 10 13:38:02 2020 +0100 + + workflows: added command to run cli e2e tests + +commit 32508cafc0cbe33fcc14aa42ca55eacb0c6fec1d +Author: Stefan Ålund +Date: Tue Mar 10 13:52:03 2020 +0100 + + Updated based on review comments + +commit 9850aaeca7236161b2208967625d5581bbc2003e +Author: Patrik Oldsberg +Date: Tue Mar 10 13:37:13 2020 +0100 + + added scripts dir with test for making sure serve and plugin scaffolding works + +commit 142562636fd0907c4c4042b41ec0d2c849cd08d9 +Author: Stefan Ålund +Date: Tue Mar 10 11:30:05 2020 +0100 + + Update README.md + +commit e47c2bba2cb07bbd7dc12718a601484bfcd0ad36 +Author: Stefan Ålund +Date: Tue Mar 10 11:29:06 2020 +0100 + + Add Roadmap to README + +commit 3d1d73bbda8906b744c40bbe31119ec3b9012b60 +Merge: 41d307f6c4 dd90ea3162 +Author: Fredrik Adelöw +Date: Tue Mar 10 11:17:32 2020 +0100 + + Merge pull request #219 from spotify/freben/no-hello + + Remove the hello-world plugin + +commit dd90ea31621399ecb37d19a4706f7faf7855bee3 +Author: Fredrik Adelöw +Date: Tue Mar 10 11:12:27 2020 +0100 + + Remove the hello-world plugin + +commit 41d307f6c4d650b6803c017636486d95c8605290 +Merge: a60cc0aaac d1a5d5850d +Author: Stefan Ålund +Date: Tue Mar 10 09:09:15 2020 +0100 + + Merge pull request #217 from spotify/alund/teal + + Make home theme match microsite + +commit d1a5d5850dbf89f83a23ba5f7fa07286a9ebdea4 +Author: Stefan Ålund +Date: Tue Mar 10 08:43:24 2020 +0100 + + Change title dot color + +commit 246e5b70c7635df9eaf4b3483ab834e0054a08e0 +Author: Patrik Oldsberg +Date: Mon Mar 9 22:45:44 2020 +0100 + + app: try using create-react-app without hoisting + +commit d53ca4ec1530c7c28de3d99aebfed923b7f7382e +Author: Stefan Ålund +Date: Mon Mar 9 20:33:30 2020 +0100 + + Make home theme match microsite + +commit a60cc0aaac57d9d80bdaf702c7bcb4120399f8e8 +Merge: 3a35eba047 bc37fe1f76 +Author: Stefan Ålund +Date: Mon Mar 9 20:01:50 2020 +0100 + + Merge pull request #216 from spotify/nikek/supportbutton + + Add SupportButton to core components + +commit bc37fe1f76cd9b66cb901498b4d83bc53496239e +Author: Stefan Ålund +Date: Mon Mar 9 20:00:20 2020 +0100 + + Small tweaks to the SupportButton use + +commit fa4c7d465ff017f317442a94c97ff2d11d9dea5f +Author: nikek +Date: Mon Mar 9 16:54:05 2020 +0100 + + Add Support button to create-plugin template + +commit 7a284ad19323a6454a6697cad2dc018e1b3dbefd +Author: nikek +Date: Mon Mar 9 16:46:46 2020 +0100 + + Add SupportButton to core components + +commit 3a35eba04756e3b0920ba4453458345cd1bbd974 +Merge: 93924f1751 bbff5aaa1a +Author: Patrik Oldsberg +Date: Mon Mar 9 16:40:37 2020 +0100 + + Merge pull request #214 from spotify/patriko/noback + + backend,proto: remove + +commit bbff5aaa1aaf204091894d3829b3150115f05d4e +Author: Patrik Oldsberg +Date: Mon Mar 9 16:25:19 2020 +0100 + + backend,proto: remove + +commit 93924f1751a691cef70c6e565aa2b01a8eb6e5a9 +Merge: d6948372cf 625c2ffb68 +Author: Patrik Oldsberg +Date: Mon Mar 9 12:07:45 2020 +0100 + + Merge pull request #202 from spotify/patriko/waves + + core/layout: replace burst with waves + +commit d6948372cff2bd71350f21d68952a95d84a11ba6 +Merge: 73bf2f43ad 3d2842783f +Author: Raghunandan Balachandran +Date: Mon Mar 9 12:06:20 2020 +0100 + + Merge pull request #201 from spotify/soapraj/tables-stylong + + get them zebras back + +commit 625c2ffb6897f07342c2e50fa34968c0c4722a8a +Author: Patrik Oldsberg +Date: Mon Mar 9 11:51:07 2020 +0100 + + core/layout: replace burst with waves + +commit 3d2842783f86adaeefe39ddaeec9cd9c054dbc3c +Author: Raghunandan +Date: Mon Mar 9 11:32:17 2020 +0100 + + get them zebras back + +commit 73bf2f43ad54ae0930388b25364ae7bc250fb926 +Merge: eebc8181f3 3c1ce0a6dd +Author: Fredrik Adelöw +Date: Mon Mar 9 11:49:59 2020 +0100 + + Merge pull request #200 from spotify/freben/sidebar + + Restructure the app sidebar + shell to be mainly in core + +commit 3c1ce0a6dd0213e8041305c7683d6306b6e730fa +Author: Fredrik Adelöw +Date: Mon Mar 9 10:28:38 2020 +0100 + + Restructure the app sidebar + shell to be mainly in core + +commit eebc8181f3a735c805df6dd8d6f18692765572af +Merge: ddfcc4d30b b0dcf6e71b +Author: Stefan Ålund +Date: Mon Mar 9 10:50:13 2020 +0100 + + Merge pull request #195 from spotify/alund/frontend + + Fix GitHub actions for frontend + +commit b0dcf6e71b69148be57c7b814d0a24c234c78dd2 +Merge: 5ce9edeb61 ddfcc4d30b +Author: Stefan Ålund +Date: Mon Mar 9 10:44:06 2020 +0100 + + Merge branch 'master' into alund/frontend + +commit ddfcc4d30bb3f7402eaedd01875599ff23631388 +Merge: ab7d7fb730 d45d072120 +Author: Stefan Ålund +Date: Mon Mar 9 10:43:23 2020 +0100 + + Merge pull request #199 from spotify/patriko/coverage + + cli: test fixes n stuff + +commit ab7d7fb7302570b08ee260722987561e225b41c8 +Merge: 90b21e731e 3e48e34d34 +Author: Stefan Ålund +Date: Mon Mar 9 10:40:33 2020 +0100 + + Merge pull request #194 from spotify/alund/pr-template + + Create PR template + +commit d45d072120ca032754d4544ccb76308a6b26b7cf +Author: Patrik Oldsberg +Date: Mon Mar 9 09:57:51 2020 +0100 + + cli/commands/test: rename to testCommand to avoid jest picking it up + +commit 4127cdbed36bcc063534095bf27e610af86e64c7 +Author: Patrik Oldsberg +Date: Mon Mar 9 09:57:03 2020 +0100 + + cli: fix regex in createPlugin tests + +commit e61dd46ceb3e5d9c80c1b49615877a36df79137d +Author: Patrik Oldsberg +Date: Mon Mar 9 09:56:45 2020 +0100 + + package: run test and lint without stream or parallel + +commit ebf20c38ba1ea08e7866d8c4083be34c6ccabb78 +Author: Patrik Oldsberg +Date: Mon Mar 9 09:46:31 2020 +0100 + + cli: forward test coverage flag + +commit 90b21e731e7bb3e105b2922c2c14aea60fac9c98 +Merge: d6145a9dfa b24d749d54 +Author: Stefan Ålund +Date: Mon Mar 9 09:26:47 2020 +0100 + + Merge pull request #198 from spotify/stefanalund-patch-1 + + Move down backend docs in README + +commit b24d749d54e4388b738a7a10082ba1c9956bfdec +Author: Stefan Ålund +Date: Mon Mar 9 09:26:25 2020 +0100 + + Rm mac specific + +commit e2ed248d4527f06dba46162f3d4c7df28e25ab42 +Author: Stefan Ålund +Date: Mon Mar 9 09:03:23 2020 +0100 + + Move down backend docs in README + +commit d6145a9dfac437a0f5a90d30f5bc20b9784d45ae +Merge: 49a1b7c804 c22106ac12 +Author: Stefan Ålund +Date: Sun Mar 8 20:01:14 2020 +0100 + + Merge pull request #196 from spotify/stefanalund-patch-1 + + Tweak philosophy statement + +commit c22106ac1248ba4c74e4c5320de970f80a235b7e +Author: Stefan Ålund +Date: Sun Mar 8 19:51:04 2020 +0100 + + Tweak philosophy statement + +commit 5ce9edeb61dc42c39aa795021eb00f92762ed930 +Author: Stefan Ålund +Date: Sat Mar 7 23:23:51 2020 +0100 + + Exclude backends properly + +commit d81267edaeb8d3e7ae0d3915553cb7900de57dfc +Author: Stefan Ålund +Date: Sat Mar 7 23:10:27 2020 +0100 + + rm ignores + +commit 5858156c7d13ac45d4c0b12a19d6ecc6b6927037 +Author: Stefan Ålund +Date: Sat Mar 7 23:09:31 2020 +0100 + + ignore try two + +commit 623f705a92446d75bcf3718aaabc18e6b4dbd5ae +Author: Stefan Ålund +Date: Sat Mar 7 23:08:06 2020 +0100 + + ignore backends + +commit b23ce280f414a84e28adcd0f8669d050077b11df +Author: Stefan Ålund +Date: Sat Mar 7 23:04:16 2020 +0100 + + Fix GitHub actions for frontend + +commit 3e48e34d34c23bd2a7639f2ed942daa767a633f3 +Author: Stefan Ålund +Date: Sat Mar 7 23:00:11 2020 +0100 + + Added CODEOWNERS ref + +commit 28226e9b046239cccae849b822ba054890b03c8f +Author: Stefan Ålund +Date: Sat Mar 7 22:56:47 2020 +0100 + + Creat PR template + +commit 49a1b7c804212289f63b72e9f595335bc7475262 +Merge: 947f5573ef b32a2fe55f +Author: Stefan Ålund +Date: Sat Mar 7 22:52:17 2020 +0100 + + Merge pull request #192 from spotify/alund/example-header + + Richer UI in newly created plugin + +commit 947f5573efa4ef96b8ba530787a001b1d49eeece +Merge: 52814181a3 46c573a83a +Author: Stefan Ålund +Date: Sat Mar 7 22:50:23 2020 +0100 + + Merge pull request #189 from spotify/alund/theme-2 + + Update default theme for headings + +commit 46c573a83abf2db59bb58968c5d25f907a6a11b8 +Merge: 239d9c8b83 52814181a3 +Author: Stefan Ålund +Date: Sat Mar 7 22:49:47 2020 +0100 + + Merge branch 'master' into alund/theme-2 + +commit b32a2fe55f3f9eb348389b8c0e83a5ed7fe4cd01 +Author: Stefan Ålund +Date: Sat Mar 7 22:43:36 2020 +0100 + + rm extra div + +commit 29d88b8e30689bc2ecfb45a5637d53252a08b9db +Merge: ea7aa1b920 52814181a3 +Author: Stefan Ålund +Date: Sat Mar 7 22:41:09 2020 +0100 + + Merge branch 'master' into alund/example-header + +commit 52814181a3900df2768da7bc0980de063e0cd57b +Merge: f1f9ce3d44 20f70c2faa +Author: Fredrik Adelöw +Date: Sat Mar 7 21:45:56 2020 +0100 + + Merge pull request #187 from spotify/freben/page-layout + + Fix default page layout + +commit 20f70c2faaf998587fc13eda1e726738fd9b8e16 +Author: Fredrik Adelöw +Date: Sat Mar 7 21:40:53 2020 +0100 + + Fix plugin template too + +commit 62ccc37637250849aca9d4940db5655478e08d37 +Author: Fredrik Adelöw +Date: Fri Mar 6 19:00:19 2020 +0100 + + Fix default page layout + + Fixes https://github.com/spotify/backstage/issues/127 + +commit ea7aa1b920ad0155f2da9eeeb4eaecd062ee9c74 +Author: Stefan Ålund +Date: Sat Mar 7 20:46:55 2020 +0100 + + Use Backstage progress indicator + +commit 02085e67da70f277580e2531eed00d48289dfc91 +Author: Stefan Ålund +Date: Sat Mar 7 20:27:55 2020 +0100 + + Add user picture in example fetcher + +commit 7b81a8c3815d23e4f2d3b0133c51c370c0d985ff +Author: Stefan Ålund +Date: Sat Mar 7 19:57:54 2020 +0100 + + Add HeaderLabels + +commit d373f5428b3aa68a97dfdb6a5445d5934195930a +Author: Stefan Ålund +Date: Sat Mar 7 19:49:45 2020 +0100 + + Use Content and ContentHeader in scaffold + +commit f1f9ce3d44220591a857c05050360cd24ea65cb3 +Merge: 309161e514 703f05e993 +Author: Patrik Oldsberg +Date: Sat Mar 7 19:45:25 2020 +0100 + + Merge pull request #191 from spotify/patriko/autocomplete + + packages: fix typescript import autocompletion + +commit 703f05e993d44086711d12c6b78e97fca6df5f59 +Author: Patrik Oldsberg +Date: Sat Mar 7 19:25:47 2020 +0100 + + packages: fix typescript import autocompletion + +commit 239d9c8b83c71061ff5bbbc986f00c844796f14c +Author: Stefan Ålund +Date: Sat Mar 7 14:09:44 2020 +0100 + + Update default theme for headings + +commit 309161e51436625b7b69b2f0a55d3bf8d7e46d97 +Merge: c70cc3fb74 41d087e35a +Author: Patrik Oldsberg +Date: Sat Mar 7 12:53:37 2020 +0100 + + Merge pull request #188 from spotify/patriko/goto + + tsconfig: enable declaration maps for goto definition + +commit 41d087e35ad6ebac29c80fd185423337f6f07775 +Author: Patrik Oldsberg +Date: Sat Mar 7 12:18:48 2020 +0100 + + tsconfig: enable declaration maps for goto definition + +commit c70cc3fb747af7da48f2073587fce661bd7fd17a +Merge: cb8a9c285d 5e52956220 +Author: Patrik Oldsberg +Date: Sat Mar 7 10:58:55 2020 +0100 + + Merge pull request #185 from spotify/patriko/cli-packaging + + cli: fixes to scripts and packaging + bump + +commit 5e5295622074e094b2620203ef856d2004b24650 +Author: Patrik Oldsberg +Date: Fri Mar 6 15:50:16 2020 +0100 + + cli: bump to 1.4.0 + +commit 2d6ee263f40d24a755d8599bf26771cab2d7d90a +Author: Patrik Oldsberg +Date: Fri Mar 6 16:40:13 2020 +0100 + + cli: move spotify web-scripts to deps + +commit c3febb492f5c83446d27cdee1a64ac6284cdac99 +Author: Patrik Oldsberg +Date: Fri Mar 6 16:30:37 2020 +0100 + + cli: properly forward status code in plugin commands + +commit 1b7d0a4e4bbbc287f648dc00eb67549dbf2811b0 +Author: Patrik Oldsberg +Date: Fri Mar 6 16:23:54 2020 +0100 + + cli: fix for error output being ignored + +commit 427ad9c2427b52eca44fe3ad411fac948770f49f +Author: Patrik Oldsberg +Date: Fri Mar 6 15:59:26 2020 +0100 + + cli: only build cjs to dist folder and set it as entrypoint + +commit cb8a9c285d41e892b69eccc24fcd0a39273bd755 +Merge: 54aa0c4c8a 49428520de +Author: Patrik Oldsberg +Date: Fri Mar 6 16:15:18 2020 +0100 + + Merge pull request #183 from spotify/patriko/hoist-plugins + + packages/plugins: move to plugins/ + +commit 54aa0c4c8afe509f1b75bef288322d52958dfa0d +Merge: 50ab86cd9b 90eb43a618 +Author: Fredrik Adelöw +Date: Fri Mar 6 15:11:45 2020 +0100 + + Merge pull request #184 from spotify/freben/template2 + + Fix some squigglies/warnings in new plugins + +commit 90eb43a6182953c2544ed5c7f308b50e68c5fe25 +Author: Fredrik Adelöw +Date: Fri Mar 6 15:08:37 2020 +0100 + + Fix some squigglies/warnings in new plugins + +commit 50ab86cd9b12e1afd1c62ffb4990b4c03b9ae72a +Merge: f12e7e9964 aef09f8d52 +Author: Patrik Oldsberg +Date: Fri Mar 6 15:04:37 2020 +0100 + + Merge pull request #179 from spotify/soapraj/show-error-stacktrace + + Show error stack trace for failed commands + +commit 49428520de6e89954e4dd714f668c761049ac95e +Author: Patrik Oldsberg +Date: Fri Mar 6 14:32:41 2020 +0100 + + packages/plugins: move to plugins/ + +commit f12e7e9964824fc0714222d73e30c21bd420f656 +Merge: ff06b6ce9c a707a79ef6 +Author: Patrik Oldsberg +Date: Fri Mar 6 14:31:58 2020 +0100 + + Merge pull request #178 from spotify/patriko/cli-dev + + cli: always use src/ version of cli inside repo + +commit ff06b6ce9c2bb236df5e34873c5390df27a2df2f +Merge: b604d82439 d8e1c0318d +Author: Patrik Oldsberg +Date: Fri Mar 6 14:31:37 2020 +0100 + + Merge pull request #182 from spotify/patriko/cli-deps + + cli: added explicit lerna deps + +commit d8e1c0318d78f5b7a8c574272e0dc49300d48f44 +Author: Patrik Oldsberg +Date: Fri Mar 6 14:22:04 2020 +0100 + + cli: added explicit lerna deps + +commit b604d8243957efa70bd4faf4a1cfdfe6228bf704 +Merge: 1253011ad5 14c4db6969 +Author: Fredrik Adelöw +Date: Fri Mar 6 14:18:01 2020 +0100 + + Merge pull request #181 from spotify/freben/paths-cli + + Set correct destination path for created plugins + +commit 14c4db6969b07653d196a5399c79fddb1e50f570 +Author: Fredrik Adelöw +Date: Fri Mar 6 14:16:25 2020 +0100 + + Set correct destination path for created plugins + +commit 1253011ad5a60f47dc0ad506843c1d5dfc41ae9d +Merge: 0a65a2ba72 7931324945 +Author: Patrik Oldsberg +Date: Fri Mar 6 13:47:35 2020 +0100 + + Merge pull request #176 from spotify/patriko/cli-all-the-things + + cli: added plugin build,lint,test commands + use them in plugins + +commit 0a65a2ba72e92959f3311adde888927acf062124 +Merge: dcc62dd2ee f1ef39ec8c +Author: Fredrik Adelöw +Date: Fri Mar 6 13:40:40 2020 +0100 + + Merge pull request #172 from spotify/freben/zoom + + Zoom out when on small screens :) + +commit aef09f8d526fe5938ac15a44d558c0d536b91151 +Author: Raghunandan +Date: Fri Mar 6 13:29:28 2020 +0100 + + print stacktrace for commands that are run after plugin creation + +commit dcc62dd2eedb57cf4cef84a5d329ba1d411998ad +Merge: 2bbe6600f2 d5518ff5fa +Author: Stefan Ålund +Date: Fri Mar 6 13:18:46 2020 +0100 + + Merge pull request #171 from spotify/eide/cli-atomic + + [cli]: Use temporary folder for plugin creation to be able to clean up easy + +commit 2bbe6600f204a3d79712c7c4b4ebae4071c10c5d +Merge: ea4810c32d 12f130e650 +Author: Stefan Ålund +Date: Fri Mar 6 12:59:27 2020 +0100 + + Merge pull request #177 from spotify/patriko/ignored + + gitignore: add back esm,cjs,types + +commit 12f130e650f4717c15524b0c59b24a8394b0a2fd +Author: Patrik Oldsberg +Date: Fri Mar 6 12:04:33 2020 +0100 + + gitignore: add back esm,cjs,types + +commit a707a79ef60cfb31246c8361210d84b13c4836d7 +Author: Patrik Oldsberg +Date: Fri Mar 6 12:06:06 2020 +0100 + + cli: always use src/ version of cli inside repo + +commit 7931324945a16bb7f96d5ab1273b9947c9e42539 +Author: Patrik Oldsberg +Date: Fri Mar 6 10:51:51 2020 +0100 + + cli: added plugin build,lint,test commands + use them in plugins + +commit f1ef39ec8c7ffdc84cc8c572d2b5bc91d0dda397 +Author: Fredrik Adelöw +Date: Fri Mar 6 12:04:29 2020 +0100 + + Zoom out when on small screens :) + + This does absolutely nothing on firefox, but works great in safari and chrome. + + There are tricks to make zooming happen on firefox, but it involves stuff like this + + ``` + html { + -moz-transform: scale(0.7); + -moz-transform-origin: 0 0; + } + @-moz-document url-prefix() { + html { + width: 142.857%; + } + } + ``` + + amd after that some things still have a very hard time staying aligned with the screen edges (such as the sidebar). So I've left that as a future exercise. + +commit d5518ff5fa59f074a52fe105e3c4b3a5242052b6 +Merge: 6d44b0bc91 0eaad36a1e +Author: Marcus Eide +Date: Fri Mar 6 11:27:39 2020 +0100 + + Merge branch 'eide/cli-atomic' of https://github.com/spotify/backstage into eide/cli-atomic + +commit 6d44b0bc91e60b7c3a162afc71f04ccc5aaf1945 +Merge: 9117380ce9 ea4810c32d +Author: Marcus Eide +Date: Fri Mar 6 11:23:06 2020 +0100 + + Merge branch 'master' of https://github.com/spotify/backstage into eide/cli-atomic + +commit 9117380ce98ff475d6a59064690564ab7632fde9 +Author: Marcus Eide +Date: Fri Mar 6 11:14:11 2020 +0100 + + Fix paths and add spinners + +commit ea4810c32d298e6abfa13c76601d5a8542688874 +Merge: 61f14d1baf 5978fab46e +Author: Stefan Ålund +Date: Fri Mar 6 10:45:13 2020 +0100 + + Merge pull request #175 from spotify/rugvip/no-yarn + + README: update plugin instructions to not always run yarn + +commit 5978fab46ea2b56f7ec22c7f84cd044f5bbe2160 +Author: Patrik Oldsberg +Date: Fri Mar 6 10:36:19 2020 +0100 + + README: update plugin instructions to not always run yarn + +commit 8a836fb7ad113002f9553f4c3031b00927505d8b +Author: Marcus Eide +Date: Thu Mar 5 15:41:16 2020 +0100 + + Remove unnecessary chalking + +commit 9c1d95740cec8021a176f305e77cdec4e4ec7f4a +Author: Marcus Eide +Date: Thu Mar 5 14:56:46 2020 +0100 + + Use temporary folder for plugin creation to be able to clean up easy + +commit 61f14d1baf81ae84d435857e9b151444f45b255c +Merge: 5b9845f62f 56226ae84d +Author: Patrik Oldsberg +Date: Thu Mar 5 16:34:33 2020 +0100 + + Merge pull request #174 from spotify/rugvip/hoist + + frontend: move to repo root + +commit 56226ae84df925a72e6f6a4e72c218548059ef60 +Author: Patrik Oldsberg +Date: Thu Mar 5 15:55:28 2020 +0100 + + frontend: move to repo root + +commit 5b9845f62f165e83046c01dcc7c11c252609e1f0 +Merge: a44767f9e2 212d7f4bcb +Author: Patrik Oldsberg +Date: Thu Mar 5 15:59:17 2020 +0100 + + Merge pull request #173 from spotify/rugvip/theme + + core/theme: cleanup mui component styles + +commit 0eaad36a1e7369089ac6ffbf6a1dd9c0dcc1b2c8 +Author: Marcus Eide +Date: Thu Mar 5 15:41:16 2020 +0100 + + Remove unnecessary chalking + +commit 212d7f4bcb0f2dbbdbb2aa4242de7b962ba91496 +Author: Patrik Oldsberg +Date: Thu Mar 5 15:29:59 2020 +0100 + + core/theme: cleanup mui component styles + +commit a44767f9e2f49b58b6b0d8b00b767844ad66576d +Merge: 08ad99c5fd e3f2b62212 +Author: Patrik Oldsberg +Date: Thu Mar 5 15:10:47 2020 +0100 + + Merge pull request #166 from spotify/rugvip/dynamic-watch-deps + + cli: update watch targets when depedencies of watched package change + +commit da977d1c98a08610f515e6de1b2f03a8ee5a0907 +Author: Marcus Eide +Date: Thu Mar 5 14:56:46 2020 +0100 + + Use temporary folder for plugin creation to be able to clean up easy + +commit 08ad99c5fd35db8308083ff001b1b9656fb1702f +Merge: 2443009f0d 5939937f81 +Author: Raghunandan Balachandran +Date: Thu Mar 5 14:19:04 2020 +0100 + + Merge pull request #168 from spotify/soapraj/fix-paths + + Fix paths used in create plugin + +commit 5939937f81f2642370c5f6cc4f4ace86658f3238 +Author: Raghunandan +Date: Thu Mar 5 12:09:25 2020 +0100 + + Fix paths used in create plugin. Add plugin to app only if app package exists. + +commit 2443009f0d62a0e2f4410140b8880b02e18f7f80 +Merge: 3229ea3645 99af94979c +Author: Stefan Ålund +Date: Thu Mar 5 13:48:40 2020 +0100 + + Merge pull request #160 from spotify/rugvip/yi + + cli/createPlugin: use yarn install instead of yarn + +commit 3229ea36453147541f610471aadde55b4b16dc22 +Merge: 8520187945 5918057388 +Author: Stefan Ålund +Date: Thu Mar 5 13:48:09 2020 +0100 + + Merge pull request #165 from spotify/alund/plugin-them + + Update default theme for new plugins + +commit 85201879458b63122625dddb798c86d1b333ab01 +Merge: 0022b3b20c aa03c0c422 +Author: Fredrik Adelöw +Date: Thu Mar 5 13:29:58 2020 +0100 + + Merge pull request #149 from spotify/jdwelch/129-fontfamily + + [WIP] Use Red Hat Display & Red Hat Text faces + +commit 0022b3b20c977443db934c41e0c4d91c984a813e +Merge: f8895a6395 805862924c +Author: Fredrik Adelöw +Date: Thu Mar 5 13:11:41 2020 +0100 + + Merge pull request #155 from spotify/freben/icons + + Add a basis for system icons + +commit 5918057388045b88c34d05b37a6c5ded2fe74d80 +Author: Stefan Ålund +Date: Thu Mar 5 12:55:02 2020 +0100 + + Update yarn.lock + +commit e3f2b62212859688ba665d3c15e886ceba6ba0d4 +Author: Patrik Oldsberg +Date: Thu Mar 5 11:57:54 2020 +0100 + + README: update create plugin docs + +commit 363739f2e919392c427fd9921d54feac1cb3622a +Author: Patrik Oldsberg +Date: Thu Mar 5 11:49:31 2020 +0100 + + cli: update watch targets when depedencies of watched package change + +commit 386e679a7a86694dd4819fd5231496550a387758 +Author: Stefan Ålund +Date: Thu Mar 5 11:26:19 2020 +0100 + + Update default theme for new plugins + +commit f8895a6395657cec06fd82a4bc5ef886c5fa42f4 +Merge: 34a6708780 1c9480a4a0 +Author: Patrik Oldsberg +Date: Thu Mar 5 11:07:42 2020 +0100 + + Merge pull request #163 from spotify/rugvip/green-check + + cli/createPlugin: fix color inconsistency for check marks + +commit 34a670878031f27c0454678b60b40919aa07eba4 +Merge: 4541b45b0e 5fff89ab05 +Author: Patrik Oldsberg +Date: Thu Mar 5 11:07:35 2020 +0100 + + Merge pull request #162 from spotify/rugvip/remove-login + + app,plugin/login: remove login page for now + +commit 5fff89ab0513021b72de5f36c8eee4bfb4e60050 +Author: Patrik Oldsberg +Date: Thu Mar 5 11:02:45 2020 +0100 + + packages/app: add simple test + +commit 1c9480a4a0728c6b9c951b1ab5cadd6dd6e43284 +Author: Patrik Oldsberg +Date: Thu Mar 5 10:58:24 2020 +0100 + + cli/createPlugin: fix color inconsistency for check marks + +commit 01986c38857a5a144880c9e1b514290fc11cba4e +Author: Patrik Oldsberg +Date: Thu Mar 5 10:54:30 2020 +0100 + + app: sort dependencies + +commit 5377ca9d56eb1e9591b5cdfa9b2547c89b21dc24 +Author: Patrik Oldsberg +Date: Thu Mar 5 10:52:27 2020 +0100 + + app,plugin/login: remove login page for now + +commit 4541b45b0e4fca9581566cd020164739887fe8e0 +Merge: cb4d1e82b7 68daf79cef +Author: Patrik Oldsberg +Date: Thu Mar 5 10:51:34 2020 +0100 + + Merge pull request #159 from spotify/rugvip/sidebar-sync + + app/Sidebar: update to latest version with peek + +commit 99af94979c871f84625cea11d0a3d97631cc7303 +Author: Patrik Oldsberg +Date: Thu Mar 5 10:47:43 2020 +0100 + + cli/createPlugin: use yarn install instead of yarn + +commit 68daf79cef17c334621001bc7bb19ac99c39ba6a +Author: Patrik Oldsberg +Date: Thu Mar 5 10:45:14 2020 +0100 + + app/Sidebar: remove dead links + +commit 5003899222603b7cce4d06ca8cfcb644a8945f07 +Author: Patrik Oldsberg +Date: Thu Mar 5 10:38:00 2020 +0100 + + app/Sidebar: update to latest version with peek + +commit cb4d1e82b7c52eceec1326904ee31b95cfc518fc +Merge: 192b16aac6 a9007371e3 +Author: Niklas +Date: Wed Mar 4 21:12:53 2020 +0100 + + Merge pull request #156 from spotify/stefanalund-patch-2 + + Remove link to proto docs + +commit 192b16aac6f26e595d86ba1acc380a51fd1b184a +Merge: fef66a0dd6 cfc882b617 +Author: Stefan Ålund +Date: Wed Mar 4 19:11:26 2020 +0100 + + Merge pull request #157 from spotify/raghub/prettier + + Prettier changes + +commit fef66a0dd65848cce190e2048d0f6a37ff05da60 +Merge: aa1d8ec024 fde92f9651 +Author: Stefan Ålund +Date: Wed Mar 4 17:59:57 2020 +0100 + + Merge pull request #154 from spotify/stefanalund-patch-1 + + yarn build no longer needed + +commit cfc882b6173134adfa1c3b4bd7410c4007e500f9 +Author: Raghunandan +Date: Wed Mar 4 16:54:01 2020 +0100 + + Prettier changes + +commit aa03c0c422ef1f270e45fbc9e86009548c56a308 +Author: JD Welch +Date: Wed Mar 4 16:08:52 2020 +0100 + + simplify font stack + + Signed-off-by: JD Welch + +commit a9007371e3ce841f36cf83d357c46e4a9000e9f6 +Author: Stefan Ålund +Date: Wed Mar 4 15:49:39 2020 +0100 + + Remove link to proto docs + +commit fde92f9651d6f09799bbfb6e231fb36b7ddc18a5 +Author: Stefan Ålund +Date: Wed Mar 4 15:44:41 2020 +0100 + + yarn build no longer needed + +commit 805862924c2f8907e201c8b8a9c2d168f0252c57 +Author: Fredrik Adelöw +Date: Wed Mar 4 15:28:11 2020 +0100 + + Add a basis for system icons + +commit aa1d8ec024d6b3db08e9e9aa2e007650bc80cde5 +Merge: ab5d6d6ac2 3686ec6a92 +Author: Stefan Ålund +Date: Wed Mar 4 15:28:05 2020 +0100 + + Merge pull request #153 from spotify/nikek/build-on-start + + add build to start script + +commit 3686ec6a920a16a10739cf021842176490031d60 +Author: nikek +Date: Wed Mar 4 14:33:47 2020 +0100 + + add build to start script + +commit ab5d6d6ac206fb75e5d0c0bfcb63a40021f30363 +Author: Patrik Oldsberg +Date: Wed Mar 4 13:18:07 2020 +0100 + + README: add instruction to run yarn build + + For now yarn build is needed, but we want to get rid of that soon + +commit 6f09e99d561358f267ac99173263a5f4b1c7038b +Merge: e878b13028 cd8dae40cf +Author: Patrik Oldsberg +Date: Wed Mar 4 12:59:33 2020 +0100 + + Merge pull request #152 from spotify/rugvip/plugin-template-ts + + cli/templates: update plugin template to use separate build + +commit e878b13028f1bd3dbd90b2818e93cde8adc46c00 +Merge: 165bb03207 d357b086e1 +Author: Stefan Ålund +Date: Wed Mar 4 12:53:35 2020 +0100 + + Merge pull request #148 from spotify/alund/timezones + + Make timezone more global + +commit cd8dae40cfc43c461fc04035e7b614dfc35ff393 +Author: Patrik Oldsberg +Date: Wed Mar 4 12:50:05 2020 +0100 + + cli: build plugin after creation + +commit d357b086e1d7eab98fa7f339bedd0ba9582a242f +Author: Stefan Ålund +Date: Wed Mar 4 12:47:59 2020 +0100 + + Update HomepageTimer.tsx + +commit eadd0677733821b331b739ad8d24700bb0b60eb4 +Author: Stefan Ålund +Date: Wed Mar 4 12:47:09 2020 +0100 + + Replace SYD with UTC + +commit a076b9bc563b4c5172092d73025d2ea7695e9ad2 +Merge: e572b65e4e 165bb03207 +Author: Stefan Ålund +Date: Wed Mar 4 12:45:15 2020 +0100 + + Merge branch 'master' into alund/timezones + +commit 1d15e48800459fe5bb4dcdedefe5d4d10d25012a +Author: Patrik Oldsberg +Date: Wed Mar 4 12:00:24 2020 +0100 + + cli/templates: update plugin template to use separate build + +commit 165bb03207bf3f24e1439919f5e03ab35148fb65 +Merge: 60674db8bc b544b11a68 +Author: Raghunandan Balachandran +Date: Wed Mar 4 11:52:20 2020 +0100 + + Merge pull request #151 from spotify/raghub/cli-imports-plugin + + Automate manual steps to include a new plugin in the app + +commit b544b11a689aab4b577ada1583f27c605dedd318 +Author: Raghunandan +Date: Wed Mar 4 11:37:39 2020 +0100 + + Fix PR review + +commit 56ddf44d404176e0e46c33cb95ab5e290814d1ad +Author: Raghunandan +Date: Tue Mar 3 15:16:29 2020 +0100 + + create plugin adds newly created plugin as a dependency in app package. adds to the plugins list in the app + +commit 60674db8bc62e6f892e03c5a51a1186a352d4755 +Merge: 467cbd8acf 7a651ff06d +Author: marcuseide +Date: Wed Mar 4 11:17:19 2020 +0100 + + Merge pull request #145 from spotify/eide/cli-build-plugin + + [cli] Run required yarn commands when creating a plugin + +commit 467cbd8acf13a915f294ed5f034f4a1d1d7f4448 +Merge: fac507f9db 0a127d4c99 +Author: Patrik Oldsberg +Date: Wed Mar 4 10:59:08 2020 +0100 + + Merge pull request #150 from spotify/mob/monobuild + + frontend: start using experimental separate builds setup + +commit 7a651ff06d9483c5e8f7dc19e433fcc03a1782af +Author: Marcus Eide +Date: Wed Mar 4 10:17:31 2020 +0100 + + Bump version + +commit 57576f267854ea651dee8dc5759ac906da719afe +Author: Marcus Eide +Date: Wed Mar 4 09:20:36 2020 +0100 + + Using process.stdout.write where needed for better output control + +commit 0a127d4c9911e405b236959c5e6a64e52408a59f +Author: Patrik Oldsberg +Date: Wed Mar 4 09:00:32 2020 +0100 + + .github/workflows/frontend: fix build command + +commit 2965e51d5aa08d9dab3d839c2eedc3367044c93f +Author: Patrik Oldsberg +Date: Wed Mar 4 00:04:43 2020 +0100 + + packages/core: fix circular imports + +commit fac507f9db30d599c5b983387a6241b496919c33 +Merge: f08fcbec30 995945b765 +Author: Niklas +Date: Wed Mar 4 08:35:54 2020 +0100 + + Merge pull request #146 from spotify/nikek/fetch-example + + add async data fetching & rendering to example page + +commit fe5e505e908a1f7456f6e6a0dd7fb73dbc164d54 +Author: Marcus Eide +Date: Wed Mar 4 08:34:10 2020 +0100 + + Now with emojis + +commit dfe5ba1d28d32cde1510aa6d4f940a4fb25132ef +Author: Patrik Oldsberg +Date: Tue Mar 3 23:42:53 2020 +0100 + + frontend/packages: remove compile-test-* packages + +commit eb3e61db100167289b190ad7bd8d353c961f7138 +Author: Patrik Oldsberg +Date: Tue Mar 3 23:41:56 2020 +0100 + + frontend: update yarn.lock + +commit 9119f69e3e07ae93ebb0b4e37552b7e7b9e054ab +Author: Patrik Oldsberg +Date: Tue Mar 3 23:41:18 2020 +0100 + + frontend: update packages to build separately using cli + +commit 98d4631636a26887e09c2bbed42cacb4825f824d +Author: Patrik Oldsberg +Date: Tue Mar 3 23:39:47 2020 +0100 + + frontend: update and add tsconfigs + +commit cfee0f48a758e970643e1a96aa07880240cc7b67 +Author: JD Welch +Date: Tue Mar 3 21:49:38 2020 +0100 + + Use Red Hat Display & Red Hat Text faces + + + adds CDN-hosted version of RH Display / RH Text + + applies these faces to theme + + s/‘bold’/700/ throughout + + Signed-off-by: JD Welch + +commit e572b65e4ea8f8f3924b8fa0bd550610d94c437a +Author: Stefan Ålund +Date: Tue Mar 3 21:06:58 2020 +0100 + + Make timezone more global + +commit 995945b7654512b91043cdae44a85c216247fef0 +Author: nikek +Date: Tue Mar 3 17:45:58 2020 +0100 + + add Alert component deps + +commit 2dbd27d9b7db1d50da7d279800888b2a68058036 +Author: Patrik Oldsberg +Date: Tue Mar 3 17:18:52 2020 +0100 + + frontend: remove protobuf and entity related plugins + +commit 46f24e9739f479f6a72ed61c83a667b4cd9e2668 +Author: nikek +Date: Tue Mar 3 17:17:10 2020 +0100 + + add async data fetching & rendering to example page + +commit 08bd065eab35892dbde5cb3f9263e687814212b6 +Author: Patrik Oldsberg +Date: Tue Mar 3 17:11:37 2020 +0100 + + packages/compile-test-app: added separate ts build config + +commit 4a123d8acc8514abc3bed1a34443b931f41c8356 +Author: Marcus Eide +Date: Tue Mar 3 16:13:58 2020 +0100 + + Re-arrange some console.logs + +commit dd8d4113c5b9e8dd9ccffa1831dcee83cbc209e2 +Author: Marcus Eide +Date: Tue Mar 3 15:30:55 2020 +0100 + + Run yarn on a newly created plugin as part of the creation process + +commit f08fcbec309410d3bc79f2e4726b228da5a3dedc +Merge: 4a396b1735 00101ef44e +Author: Raghunandan Balachandran +Date: Tue Mar 3 15:08:30 2020 +0100 + + Merge pull request #144 from spotify/raghub/consistent-package-names + + Consistent package names + +commit 4a396b17350541d7516c887c81598ddaa3535abf +Merge: db9e3c567f 961c2ccdea +Author: marcuseide +Date: Tue Mar 3 15:07:52 2020 +0100 + + Merge pull request #143 from spotify/eide/cli-feedback + + [cli] Add more user feedback + +commit 961c2ccdeaa71acd3f5db961f0a90a5ba5edbc90 +Author: Marcus Eide +Date: Tue Mar 3 13:35:14 2020 +0100 + + Optionally clean up failed plugin directory + +commit db9e3c567ffbab0871468318e9d576d9c89dfd22 +Author: Stefan Ålund +Date: Tue Mar 3 13:04:28 2020 +0100 + + Slight change in purpose wording + +commit 79ef90713229b5289a259ac20e833a02c44c3a11 +Author: Marcus Eide +Date: Tue Mar 3 12:49:31 2020 +0100 + + Use json.parse for version instead + +commit 8b967badaca260d2678473afc60bbebb28d1b4a8 +Author: Marcus Eide +Date: Tue Mar 3 12:43:01 2020 +0100 + + Add more feedback as to what is happening when creating a plugin + +commit e390ddbceba1ce958e27c187cf7ce4d31341df31 +Author: Marcus Eide +Date: Tue Mar 3 12:41:54 2020 +0100 + + Add styles for template that otherwise was interpreted as a hb var + +commit 2c41afdedf139a886546c7cb4a52e464fb505e6a +Author: Marcus Eide +Date: Tue Mar 3 12:41:02 2020 +0100 + + Add script to run the cli directly + +commit 00101ef44ea7f870bd1bb6b8d93aa363feab8966 +Author: Raghunandan +Date: Tue Mar 3 11:12:34 2020 +0100 + + @backstage -> @spotify-backstage + +commit 2c9db372756816dca2a616578f99fd30f260adaf +Author: Marcus Eide +Date: Tue Mar 3 10:13:59 2020 +0100 + + Add name and version to main + +commit 39cd481040d4277c96bc744b6459b2c07f6411bd +Author: Marcus Eide +Date: Tue Mar 3 10:12:18 2020 +0100 + + Add chalked output to main + +commit 62f0dd94e36bc3b3df7a571daf2f23ecbd89aeaf +Merge: fbc8befca6 d4f5812339 +Author: Stefan Ålund +Date: Tue Mar 3 09:15:28 2020 +0100 + + Merge pull request #142 from spotify/stefanalund-patch-1 + + Added GitHub actions badge to README + +commit d4f5812339bba3fc4906052ee72b592bae51721c +Author: Stefan Ålund +Date: Tue Mar 3 09:14:58 2020 +0100 + + Added GitHub actions badge to README + +commit fbc8befca63b26a57e937ae70e74fdc0ee82df8b +Author: Stefan Ålund +Date: Sun Mar 1 11:51:03 2020 +0100 + + Update README.md + +commit 97b8d515b36617a1ef88d36e48505b6bc463e0fe +Author: Stefan Ålund +Date: Sun Mar 1 11:45:31 2020 +0100 + + Minor tweaks to README + +commit ecec5051987d125ed6b6e4fe753aabe65a564729 +Merge: 6bbc7d1d91 ba0fb2aac0 +Author: Stefan Ålund +Date: Sun Mar 1 11:28:44 2020 +0100 + + Merge pull request #136 from spotify/alund/overview + + [Docs] Overview image and desc + +commit ba0fb2aac09bf3629c70f5597c874ca414ce6e8f +Author: Stefan Ålund +Date: Sun Mar 1 11:27:32 2020 +0100 + + Add headline + +commit 74993f292f265671fb9ae5615c51e536590615ee +Author: Stefan Ålund +Date: Sun Mar 1 11:18:33 2020 +0100 + + Add philosophy + +commit a23a90e46c120202eec539b12639267cc608a860 +Author: Stefan Ålund +Date: Sat Feb 29 21:06:54 2020 +0100 + + [Docs] Overview image and desc + +commit 6bbc7d1d91dddfdd71e6f07fb36b9eabb1fd2cde +Merge: c7aedc3ee4 f94f489532 +Author: Stefan Ålund +Date: Sat Feb 29 13:32:09 2020 +0100 + + Merge pull request #131 from spotify/stefanalund-patch-1 + + Fix license badge in README + +commit f94f4895328a42e3189713be748edcde7be85739 +Author: Stefan Ålund +Date: Sat Feb 29 13:31:32 2020 +0100 + + Fix license badge in README + +commit c7aedc3ee4a1b3edabed708a80c8441fe1f8c0e8 +Merge: a8f1ecb695 9cc3991b49 +Author: Stefan Ålund +Date: Sat Feb 29 13:27:51 2020 +0100 + + Merge pull request #130 from spotify/alund/layouts + + Add back Content and ContentHeader + +commit a8f1ecb695f7674341ff8c22572a3ea372becd4d +Merge: 366473f6e0 84110105b2 +Author: Stefan Ålund +Date: Sat Feb 29 13:27:13 2020 +0100 + + Merge pull request #128 from spotify/alund/fix-example + + Proper UX for newly scaffolded plugin + +commit 9cc3991b49e6d28e2a36cb130d42128c8d3f804e +Author: Stefan Ålund +Date: Sat Feb 29 10:39:18 2020 +0100 + + Add back Content and ContentHeader + +commit 84110105b2698735512634faa03c0133cc114e63 +Author: Stefan Ålund +Date: Fri Feb 28 18:01:34 2020 +0100 + + Proper UX for newly scaffolded plugin + +commit 366473f6e0fc2bc41fa0ca27caeff5880f636f97 +Merge: bafc4f5b2d 55a01ea1d8 +Author: Stefan Ålund +Date: Fri Feb 28 13:48:24 2020 +0100 + + Merge pull request #125 from spotify/patriko/fix-app + + frontend: fix #119 + +commit 55a01ea1d88716fa2423cfcf901d0980c3bf6f80 +Author: Patrik Oldsberg +Date: Fri Feb 28 13:26:53 2020 +0100 + + frontend: fix #119 + +commit bafc4f5b2dbb4074fcc3f2d3f2cece49d2e004a1 +Merge: 66d5bce0d4 cc35f6b1c9 +Author: Patrik Oldsberg +Date: Fri Feb 28 11:23:19 2020 +0100 + + Merge pull request #118 from spotify/patriko/serve-plugin + + packages/cli: add serve and watch-deps + +commit cc35f6b1c99c475bf7b7bd1f1ec82f59565c275b +Author: Patrik Oldsberg +Date: Fri Feb 28 09:56:39 2020 +0100 + + packages/cli: replace experimental delete api usage with del + +commit d2b84ed8ebf6ef2946b957150cdff58f9d1d8dac +Author: Patrik Oldsberg +Date: Fri Feb 28 09:43:20 2020 +0100 + + packages/compile-test-*: add dummy tests + +commit 66d5bce0d4d474424ba806fe71c82e819c7142df +Merge: 329b776125 da855cbde9 +Author: Patrik Oldsberg +Date: Fri Feb 28 09:35:30 2020 +0100 + + Merge pull request #117 from spotify/soapraj/fix-uri-formats + + Fix uri + +commit 2bc05fc1291f9b9835d35ff694ae85601820af45 +Author: Patrik Oldsberg +Date: Fri Feb 28 09:34:09 2020 +0100 + + regenerate yarn.lock to fix jest conflicts + +commit 6d8b4f90de9f83e4fa73784e4a0c98192b63cc7c +Author: Patrik Oldsberg +Date: Fri Feb 28 09:18:07 2020 +0100 + + packages/cli: lint fixes + +commit 09b81b2fcf5a5a0a4f54208690f7d8fb3d511cf9 +Author: Patrik Oldsberg +Date: Fri Feb 28 09:17:51 2020 +0100 + + packages/cli: fix linting + +commit e67058789ce66f1289d246014c09928bc7bec4c5 +Author: Patrik Oldsberg +Date: Fri Feb 28 00:22:15 2020 +0100 + + packages/cli: enable tests again + +commit 500a9cfaafb74cc5638d98b560c7302c8fa83baa +Author: Patrik Oldsberg +Date: Fri Feb 28 00:20:51 2020 +0100 + + packages/cli: force colored output of child processes of watch-deps + +commit 04dfcce37006142c16f79cd9ef7bb4465a504a50 +Author: Patrik Oldsberg +Date: Fri Feb 28 00:05:41 2020 +0100 + + packages/compile-test-app: use backstage-cli serve + +commit 4bdbedaeecdbff84a2bfdfc1df1d16faf66e8bd7 +Author: Patrik Oldsberg +Date: Fri Feb 28 00:05:22 2020 +0100 + + packages/cli: use react-dev-utils to select port and open browser + bit of refactor + +commit b876df6bee46b78dc4b4637f9da3f9f4b36b71bf +Author: Patrik Oldsberg +Date: Thu Feb 27 23:54:05 2020 +0100 + + packages/cli: replaced serve-plugin by simplified serve command with plain webpack config + +commit 999cb254143ef7f3668648712afa526232676703 +Author: Patrik Oldsberg +Date: Thu Feb 27 18:21:26 2020 +0100 + + packages/compile-test-app: use watch-deps + +commit 0369d1ac061b9f887d28cc7b47896a1a8da35cc9 +Author: Patrik Oldsberg +Date: Thu Feb 27 18:18:52 2020 +0100 + + cli: added watch-deps command + +commit 83b8786378991798faf6fee2d996c461502ebb61 +Author: Patrik Oldsberg +Date: Thu Feb 27 17:15:00 2020 +0100 + + packages: added more compile-test packages to try deps and transitive deps + +commit 8d69089cf40723260c3bd63889750be66fe26f1e +Author: Patrik Oldsberg +Date: Thu Feb 27 11:42:22 2020 +0100 + + packages: add compile-test-app that uses serve-plugin from cli + +commit 136bccaf8d71ae2b3b75fedcd4d41362f68e6606 +Author: Patrik Oldsberg +Date: Thu Feb 27 11:41:06 2020 +0100 + + packages/cli: add missing serve html template + +commit f4584d5f814e7b90b8966cd3948cd6b76649bb6b +Author: Patrik Oldsberg +Date: Thu Feb 27 11:29:17 2020 +0100 + + packages/cli: fix ts compile error + +commit c62711978959966b64cb9f95c6f675e9962e37e9 +Author: Patrik Oldsberg +Date: Thu Feb 27 11:23:24 2020 +0100 + + packages/cli: disable-test-because-conflicts-that-we-need-to-fix-later + +commit 3e3e428d55dde9ce3da031eae50b3bc5ba55d5a4 +Author: Patrik Oldsberg +Date: Thu Feb 27 10:54:37 2020 +0100 + + packages/cli: add broken servePlugin command + +commit da855cbde9b189e186df76e0a1b0d83eb0d8174c +Author: Raghunandan +Date: Wed Feb 26 11:25:33 2020 +0100 + + Fix uri + +commit 329b7761256226e7eaad5d41f75c40c98bd35083 +Merge: 803073dacf cb2a75bf66 +Author: Patrik Oldsberg +Date: Tue Feb 25 10:54:51 2020 +0100 + + Merge pull request #116 from spotify/rugvip/cleanup + + cleanup some things, preparing for monorepo setup modifications + +commit cb2a75bf66416c1e9a743a466a23ca270716b5a7 +Author: Patrik Oldsberg +Date: Tue Feb 25 10:45:09 2020 +0100 + + packages/core/layout/Page: port to typescript + +commit a958050c79af451ed5607682a104e4c4e07fbe57 +Author: Patrik Oldsberg +Date: Tue Feb 25 10:44:49 2020 +0100 + + packages/core: fix TemplateList export + +commit f584aea883f0a9008e56abcddc224a0cb869b4ba +Author: Patrik Oldsberg +Date: Tue Feb 25 10:44:28 2020 +0100 + + packages/core/api/time: remove time based greeting + +commit d1b539bac9e5cf8d1884176bf25e0afccb4ff106 +Author: Patrik Oldsberg +Date: Mon Feb 24 15:29:56 2020 +0100 + + frontend/packages: removed shared + +commit 803073dacffc989cea505495eef9bc10bc09215b +Merge: 8d0e3767c8 a290265e54 +Author: Patrik Oldsberg +Date: Mon Feb 24 14:56:39 2020 +0100 + + Merge pull request #115 from spotify/rugvip/plug + + packages/cli: some template fixes + register route + +commit 8d0e3767c8a56eb8a7a0d042a8247758a23f2852 +Merge: d0a6ccca44 b556949aa1 +Author: Patrik Oldsberg +Date: Mon Feb 24 14:53:22 2020 +0100 + + Merge pull request #113 from spotify/rugvip/nosecrets + + README,backend: remove secrets setup and disable entity services for now + +commit a290265e5445884c97de56a50545d9d1d02e19e2 +Author: Patrik Oldsberg +Date: Mon Feb 24 14:51:34 2020 +0100 + + frontend/README: update instructions for adding plugin + +commit ec99490137d74af6c936e002ac858f9ef7a796c9 +Author: Patrik Oldsberg +Date: Mon Feb 24 14:38:56 2020 +0100 + + packages/cli: some template fixes + register route + +commit d0a6ccca44f258cbd8174518c2f001336f72819c +Merge: f7b54f92e2 6335f15640 +Author: Patrik Oldsberg +Date: Mon Feb 24 12:45:56 2020 +0100 + + Merge pull request #114 from spotify/rugvip/rich + + README: add $5 + +commit 6335f15640ad9e0c9e80e7404e14ce0bdac20cd4 +Author: Patrik Oldsberg +Date: Mon Feb 24 12:45:28 2020 +0100 + + README: add $5 + +commit b556949aa111268b613b2c33a56e41dde53aa69b +Author: Patrik Oldsberg +Date: Mon Feb 24 11:54:07 2020 +0100 + + README,backend: remove secrets setup and disable entity services for now + +commit f7b54f92e2ba2484494c3494605cc49b79d898e5 +Merge: 6e7d00e5eb d3451aa5c9 +Author: Patrik Oldsberg +Date: Mon Feb 24 12:38:14 2020 +0100 + + Merge pull request #112 from spotify/rugvip/nomake + + README: updated instructions for creating plugin + yarn script and remove cookiecutter + +commit d3451aa5c9d8997eeebe538ee5c2a15e7a755be3 +Author: Patrik Oldsberg +Date: Mon Feb 24 11:42:12 2020 +0100 + + README: updated instructions for creating plugin + yarn script and remove cookiecutter + +commit 6e7d00e5ebf325d02cd531ec017ea2c7fea13e83 +Merge: 4abdc11012 c7101ad201 +Author: Raghunandan Balachandran +Date: Mon Feb 24 11:56:01 2020 +0100 + + Merge pull request #110 from spotify/freben/core-package + + Progress toward making core a standalone distributable package + +commit c7101ad201a2ea2d738342720484ff30fc8c1656 +Author: Raghunandan +Date: Mon Feb 24 11:48:55 2020 +0100 + + Remove web-scripts dep from app package + +commit 4abdc1101215d9f0895e5c6e81d79f76080b3375 +Merge: 855c062444 8c9b04b240 +Author: Patrik Oldsberg +Date: Mon Feb 24 11:47:12 2020 +0100 + + Merge pull request #111 from spotify/rugvip/readme + + move install instructions to readme + move docker-compose + +commit 8c9b04b24097a348468a91754b374df73a641f2c +Author: Patrik Oldsberg +Date: Mon Feb 24 11:01:14 2020 +0100 + + move install instructions to readme + move docker-compose + +commit b74006901c609f568ec00daa86e7ea4ac0033c09 +Author: Raghunandan +Date: Mon Feb 24 11:32:30 2020 +0100 + + Update yarn lock + +commit 664254dfd3b5855e661a13e056080985e27a4564 +Author: Raghunandan +Date: Mon Feb 24 11:29:50 2020 +0100 + + Depend on @spotify-backstage/core version 1.1.0 + +commit 6d69187800ff262235c769f0504922e7e6d9314d +Author: Fredrik Adelöw +Date: Fri Feb 21 14:52:58 2020 +0100 + + Progress toward making core a standalone distributable package + +commit 855c062444738afacbb9c9202489ee0521019f77 +Merge: 5925221658 59764c3a7f +Author: Patrik Oldsberg +Date: Mon Feb 24 11:09:44 2020 +0100 + + Merge pull request #109 from spotify/mob/more-templates + + [cli]: Better handling of files in the template directory + +commit 59764c3a7f2995b956409baebf861aaa8b570fb3 +Author: Marcus Eide +Date: Fri Feb 21 14:37:31 2020 +0100 + + Better handling of files in the template directory, and tests. + +commit 5925221658f3983e8bb03307cebdd8dfbb2ac58f +Author: Marcus Eide +Date: Thu Feb 20 16:31:03 2020 +0100 + + Bump version + +commit 53ec0c085590f9923731b9e7e49204cd592cbfcd +Merge: a6a88f9977 2d27436129 +Author: marcuseide +Date: Thu Feb 20 16:22:11 2020 +0100 + + Merge pull request #108 from spotify/mob/more-cli + + Mob/more cli + +commit 2d27436129df840b7bd3227ccc0e194cfcff200a +Author: Marcus Eide +Date: Thu Feb 20 14:59:47 2020 +0100 + + review comments + +commit 5b539a3e1407e457731de41c25e5a34f249dfda8 +Author: Marcus Eide +Date: Thu Feb 20 14:19:48 2020 +0100 + + refactor createPlugin and add tests. cli can now create a plugin from template + +commit a6a88f9977acc63aa7ec478407580ea3899bc358 +Merge: 5b5ec6e98d 8215318c4f +Author: Stefan Ålund +Date: Wed Feb 19 19:45:41 2020 +0100 + + Merge pull request #107 from spotify/fix-nested-navitems + + Fix nested NavItems + +commit 1b76e07910361a2ac770f492b57ccc2110b33b65 +Author: Fredrik Adelöw +Date: Wed Feb 19 14:39:20 2020 +0100 + + WIP + +commit 5b5ec6e98df55708c29a80004b6d9a76d170dc9e +Merge: 29b4e4f9a3 a4a07d03ed +Author: Fredrik Adelöw +Date: Wed Feb 19 14:50:11 2020 +0100 + + Merge pull request #106 from spotify/mob/cli-embryo + + cli package embryo to get started + +commit a4a07d03ed9cfedcf51404c314e5410210b91d9d +Author: Fredrik Adelöw +Date: Wed Feb 19 11:36:39 2020 +0100 + + cli package embryo to get started + +commit 8215318c4fd693cf35aa9abaa6fecf440cfdf3e4 +Author: Yasa Akbulut +Date: Wed Feb 19 14:20:10 2020 +0100 + + Update nested NavItem tests + +commit 7cde0fd01e629efbcb2b573b7c7c3e3e59e7b2cb +Author: Yasa Akbulut +Date: Wed Feb 19 14:17:57 2020 +0100 + + Fix nested NavItems + + Currently, a NavItem having more than one child will throw an error. This is due to the `children` property of `NavItem` being passed as the first argument to `React.cloneElement`, which expects a single element. The existing tests are only verifying the case where the `NavItem` has only one child. + + This commit maps over `children` and calls `React.cloneElement` on each of them. + +commit 29b4e4f9a34d88bbc527a9d3424a408022bb2d53 +Merge: 4d58971e2b 59f43de639 +Author: Raghunandan Balachandran +Date: Mon Feb 17 09:56:37 2020 +0100 + + Merge pull request #103 from spotify/raghub/unify-uri-format + + Unify the URI formats used in different services + +commit 59f43de63925aef9947002829d2f2d4599c3cc80 +Author: Raghunandan Balachandran +Date: Wed Feb 12 10:49:41 2020 +0100 + + Unify the URI formats used in different services + +commit 4d58971e2b5e604335bb9473c637eeccedcc08b1 (tag: hackweek-demo) +Merge: 8619dc6373 b3bb002ffe +Author: Stefan Ålund +Date: Sun Feb 9 20:15:38 2020 +0100 + + Merge pull request #102 from spotify/alund/home-click + + Made logo link to home + welcome message + +commit b3bb002ffed3c2aa69e2d3001fb4d08c628d0bdf +Author: Stefan Ålund +Date: Sun Feb 9 20:04:47 2020 +0100 + + Styling of main sidebar + +commit ecc2016779f5971040685d8c60d6cb3c14451ecd +Author: Stefan Ålund +Date: Sun Feb 9 17:48:03 2020 +0100 + + Subtitle in Header + +commit 09afb37f44e8289ec06186194a6f386f19cc6ce3 +Author: Stefan Ålund +Date: Sun Feb 9 17:46:39 2020 +0100 + + Add greetings message to home + +commit 3caa1f24ebb447f81af8e117144e1398d6739aad +Author: Stefan Ålund +Date: Sun Feb 9 17:17:08 2020 +0100 + + Made logo link to home + +commit 8619dc6373af403734528e4b6cbb0618d02b5ba3 +Merge: 2cd3208a66 07e2226532 +Author: Patrik Oldsberg +Date: Fri Feb 7 17:25:07 2020 +0100 + + Merge pull request #100 from spotify/blam/workflows + + Support some workflows + +commit 07e222653234422596c9f41824b17760ba8366e4 +Author: Patrik Oldsberg +Date: Fri Feb 7 17:19:21 2020 +0100 + + backend/scaffolder/templates: fix actions yaml + +commit 625d111c0956001968d2f4be2f780c344601c1ab +Author: Patrik Oldsberg +Date: Fri Feb 7 17:15:36 2020 +0100 + + front/plugins/github-actions: update fetch for info card + +commit 20bdbcb2794e5d435968aac7ffdde72c5c4c90c6 +Author: Patrik Oldsberg +Date: Fri Feb 7 17:14:29 2020 +0100 + + backend/inventory: add facts when creating entity + +commit e4594cb8ff402254d9c41fea01bb62dc6a1d74ad +Author: Patrik Oldsberg +Date: Fri Feb 7 17:02:14 2020 +0100 + + front/plugins/github-actions: fetch builds for actual entity + +commit bfc17bd2fce1b60d801c5ca1d218d7a088889696 +Author: Patrik Oldsberg +Date: Fri Feb 7 17:00:12 2020 +0100 + + backend/builds: fetch repo location from inventory + +commit 63346ecf44040262b84d293710363fd9ed5244ae +Author: blam +Date: Fri Feb 7 16:49:34 2020 +0100 + + feat(scaffolder): Support workflows and add some cool facts + +commit e3fae9d55d4a72d5f54e117bd5da74338d3e1573 +Author: blam +Date: Fri Feb 7 16:48:22 2020 +0100 + + Rename to workfllow + +commit 2cd3208a665de633ac00d884b36071cdaf36f05d +Author: blam +Date: Fri Feb 7 16:35:26 2020 +0100 + + feat(scaffolder): Updating templates + +commit d85aec41426b7b2d29367964ecfc3062ae081d25 +Merge: 0f830ec55e f66defbbec +Author: Patrik Oldsberg +Date: Fri Feb 7 16:32:11 2020 +0100 + + Merge pull request #99 from spotify/rugvip/list-services + + list services + quicker docker builds + +commit f66defbbec420a8ea784e0000fd501282e84202b +Author: Patrik Oldsberg +Date: Fri Feb 7 16:27:44 2020 +0100 + + front/plugins/home-page: list components + +commit a04b7c0ec2b0222eb050b4e2d895171830397570 +Author: Patrik Oldsberg +Date: Fri Feb 7 16:27:18 2020 +0100 + + backend: quicker docker rebuilds + +commit 0f830ec55e5063569a6e457fd11f236441c5f751 +Merge: 94bfd4e33d b73570dc5b +Author: Patrik Oldsberg +Date: Fri Feb 7 16:16:04 2020 +0100 + + Merge pull request #98 from spotify/blam/options + + Notify the Inventory Service when a new Component is created + +commit b73570dc5bc84814f6596cb843b91af3b220c1a9 +Author: blam +Date: Fri Feb 7 16:11:06 2020 +0100 + + feat(scaffolder): Notify the entity service that things have been created + +commit b1974c957fbbcfc04521687e85a2915234a12536 +Merge: f465a5f0d2 38503bed71 +Author: blam +Date: Fri Feb 7 16:10:56 2020 +0100 + + Merge branch 'blam/options' of github.com:spotify/backstage into blam/options + + * 'blam/options' of github.com:spotify/backstage: (30 commits) + lint fix + front/plugins/home-page: nicer + Be more clear about GitHub permissions + Cleanup README + try require instead of import + Updated to use forego + Added forego + fix typo + Removed newlines + Fixed merge conflict + Added a Brewfile + README: update secrets.env docs + cookiecutter seems to work + Use Struct for metadata + front/plugins/github-actions: add nicer build status indicator + fix: initialize db properly, add cfg and logs + front/plugins/github-actions: add back button to details page + Pass metadata description + front/app/entities: add build into card to service entities + front/plugins/github-actions: register build info card and popuplate card + ... + +commit 94bfd4e33d00da6efc2f2d53db8a1d938900e683 +Merge: b2bd888294 e46f326442 +Author: Patrik Oldsberg +Date: Fri Feb 7 15:34:43 2020 +0100 + + Merge pull request #96 from spotify/soapraj/add-loading + + add loading message + +commit b2bd8882949ad176ed88c60c8bde08ba0178f997 +Merge: 286a012564 38503bed71 +Author: Patrik Oldsberg +Date: Fri Feb 7 15:34:28 2020 +0100 + + Merge pull request #97 from spotify/blam/options + + Pushing the correct folder to Github + +commit f465a5f0d237323b381aedb1b5ae32f788e04a74 +Author: blam +Date: Fri Feb 7 15:33:31 2020 +0100 + + feat(scaffolder): register with inventory service + +commit 38503bed711bb670f33af28bcd7544f6ecbbcb3a +Merge: f44fa8f556 286a012564 +Author: Ben Lambert +Date: Fri Feb 7 15:08:45 2020 +0100 + + Merge branch 'master' into blam/options + +commit e46f326442e37bc8c021af1ecd454e929746f499 +Author: Raghunandan Balachandran +Date: Fri Feb 7 15:06:48 2020 +0100 + + fix typo + +commit f44fa8f5562e50a9ccb4609d038ec96de703cfae +Author: blam +Date: Fri Feb 7 15:06:11 2020 +0100 + + feat(scaffolder): uipdating scaffolder + +commit c00304a14300923d7882efe803dca7fac3f21085 +Author: blam +Date: Fri Feb 7 15:05:45 2020 +0100 + + chore: fixing docker compose + +commit 7366f4336f22f8ffad939867e9a93813ae7f8fc1 +Author: Raghunandan Balachandran +Date: Fri Feb 7 15:00:01 2020 +0100 + + add more props + +commit 93297a499f5d56cd04502d02ea6189b709155e00 +Author: Raghunandan Balachandran +Date: Fri Feb 7 14:59:18 2020 +0100 + + fix build + +commit 286a0125643836325adf00a9b03696c82d49941b +Author: Patrik Oldsberg +Date: Fri Feb 7 14:57:12 2020 +0100 + + lint fix + +commit e6c0b80b346a1f581a33d5e9472e579715c44faf +Author: Patrik Oldsberg +Date: Fri Feb 7 14:56:57 2020 +0100 + + front/plugins/home-page: nicer + +commit 7b8e8e6303cebc8e86b01a0058bb43c4c6fe5710 +Author: Raghunandan Balachandran +Date: Fri Feb 7 14:50:49 2020 +0100 + + add loading message + +commit 7cb5ba443d10cb0bea44131ccb251db8f9c16f29 +Author: Bilawal Hameed +Date: Fri Feb 7 14:49:36 2020 +0100 + + Be more clear about GitHub permissions + +commit a550e89862aa34becefb6258a0f5825a75c6fd48 +Merge: 1ecdc6baec a3077d4c89 +Author: Bilawal Hameed +Date: Fri Feb 7 14:46:25 2020 +0100 + + Merge pull request #91 from spotify/bil/add-brewfile + + Added Brewfile for installing Docker, Git and other dependencies + +commit 1ecdc6baecc95d3b64204f87ace9ef8f73c9218f +Merge: e4838c2129 6f4b7d9c93 +Author: Raghunandan Balachandran +Date: Fri Feb 7 14:43:07 2020 +0100 + + Merge pull request #94 from spotify/soapraj/call-cookiecutter + + Soapraj/call cookiecutter + +commit a3077d4c89b27f521b4f453c035c713bd81b1523 +Author: Bilawal Hameed +Date: Fri Feb 7 14:37:53 2020 +0100 + + Cleanup README + +commit 6f4b7d9c9308256059e271f5f08fec3e3b14739d +Author: Raghunandan Balachandran +Date: Fri Feb 7 14:37:28 2020 +0100 + + try require instead of import + +commit deda60b8434206a136f4b7fafd98f1f801b44675 +Author: Bilawal Hameed +Date: Fri Feb 7 14:33:25 2020 +0100 + + Updated to use forego + +commit a84004f00ac5eb0ec093498414e72e7d73eca56c +Author: Bilawal Hameed +Date: Fri Feb 7 14:27:23 2020 +0100 + + Added forego + +commit 779559b4a5febf91b97760dc350657cb6ef67fb2 +Author: Bilawal Hameed +Date: Fri Feb 7 14:15:06 2020 +0100 + + fix typo + +commit fdaa0538d8d3d118ee5c544528b9d617fc53a54c +Author: Bilawal Hameed +Date: Fri Feb 7 14:10:36 2020 +0100 + + Removed newlines + +commit 0d1842658c9a61eccc07921d1539ad005cd39c38 +Author: Bilawal Hameed +Date: Fri Feb 7 14:36:12 2020 +0100 + + Fixed merge conflict + +commit 3d70b117cf65e7f5168246df5211409de6117ced +Author: Bilawal Hameed +Date: Fri Feb 7 13:49:10 2020 +0100 + + Added a Brewfile + +commit e4838c21298e2fa43341f6caf1b08eb53b0185e0 +Merge: 8d9fdd3878 2bed4f1e1a +Author: Patrik Oldsberg +Date: Fri Feb 7 14:33:30 2020 +0100 + + Merge pull request #95 from spotify/rugvip/read-secrets + + README: update secrets.env docs + +commit 8d9fdd3878f9f90760166050c9935b6bb69fc363 +Merge: ead1aac874 bdcab1fee7 +Author: Jefferson Girão +Date: Fri Feb 7 14:32:21 2020 +0100 + + Merge pull request #93 from spotify/db-init + + fix: initialize db properly, add cfg and logs + +commit 2bed4f1e1af1d47cba25d0efec495c6b2e313b8a +Author: Patrik Oldsberg +Date: Fri Feb 7 14:32:20 2020 +0100 + + README: update secrets.env docs + +commit b05e045ef00083a3c37d5bc4bff65b483c164dc0 +Author: blam +Date: Fri Feb 7 14:31:55 2020 +0100 + + chore(scaffolder): Reworking some issues with the scaffolder setup and cookiecutter + +commit 17e60d92e331e6da4ae016cea3bae9855bd09c53 +Author: Raghunandan Balachandran +Date: Fri Feb 7 14:32:03 2020 +0100 + + cookiecutter seems to work + +commit 06f7b6694b2c010fb297f80dc322b478b93f4dcb +Merge: 22f588c07e ead1aac874 +Author: Raghunandan Balachandran +Date: Fri Feb 7 14:27:13 2020 +0100 + + Merge branch 'master' of github.com:spotify/backstage into soapraj/call-cookiecutter + +commit 22f588c07e004ee35963809c83a83b28fc1524f8 +Author: Raghunandan Balachandran +Date: Fri Feb 7 14:18:19 2020 +0100 + + Use Struct for metadata + +commit ead1aac874882698fca6014aaddc07566998231d +Merge: 4207d792e2 7234da7cd9 +Author: Patrik Oldsberg +Date: Fri Feb 7 14:18:07 2020 +0100 + + Merge pull request #92 from spotify/rugvip/build-stuff + + front/plugins/github-actions: add nicer build status indicator + details view styling + +commit 7234da7cd998aa290330ff90efc7a90c8a2b43c3 +Author: Patrik Oldsberg +Date: Fri Feb 7 14:14:42 2020 +0100 + + front/plugins/github-actions: add nicer build status indicator + +commit bdcab1fee7c6e5b47860a9398ef7fc88addde57d +Author: Jefferson Girão +Date: Fri Feb 7 14:14:39 2020 +0100 + + fix: initialize db properly, add cfg and logs + +commit f57b897dd0dcde395f001869335aa85027fbecf2 +Author: Patrik Oldsberg +Date: Fri Feb 7 14:14:17 2020 +0100 + + front/plugins/github-actions: add back button to details page + +commit e33fcdae78151227bd0e47ed3db9323278b103bf +Author: Raghunandan Balachandran +Date: Fri Feb 7 14:07:40 2020 +0100 + + Pass metadata description + +commit 4207d792e2874ba863121f4ea6059c6ef852eaa6 +Merge: be27a4ec4a c21263d64c +Author: Patrik Oldsberg +Date: Fri Feb 7 13:47:08 2020 +0100 + + Merge pull request #89 from spotify/rugvip/builds-card + + front: add plugin api for widgets + build info card for services + +commit be27a4ec4af20bfb7e287c61ca59badd26d2214d +Merge: 8d7833ac5c 0ef8e18815 +Author: Fredrik Adelöw +Date: Fri Feb 7 13:46:57 2020 +0100 + + Merge pull request #90 from spotify/freben/heights + + Fix heights and paddings + +commit 8d7833ac5c6fa8c078d8a1db26f03c138f967c5f +Merge: 6847deafde d1c0fd9d49 +Author: Fredrik Adelöw +Date: Fri Feb 7 13:42:58 2020 +0100 + + Merge pull request #88 from spotify/freben/norubber + + Disable the annoying rubberband 'overscroll' effect going outside of the page boundaries + +commit c21263d64cf95f2d62af7b76745ed96a5f333d86 +Author: Patrik Oldsberg +Date: Fri Feb 7 13:40:35 2020 +0100 + + front/app/entities: add build into card to service entities + +commit bb15807004d3bc51f1612a2f3fa4e0757e677e4c +Author: Patrik Oldsberg +Date: Fri Feb 7 13:40:21 2020 +0100 + + front/plugins/github-actions: register build info card and popuplate card + +commit 42e24486eb6d1eceb1a51073c8588c15ee1e4aef +Author: Patrik Oldsberg +Date: Fri Feb 7 13:40:02 2020 +0100 + + front/core/DefaultWidgetView: tweak padding + +commit 0ef8e18815a28d2c9c6bfb0c7fb9fa5c160ef78b +Author: Fredrik Adelöw +Date: Fri Feb 7 13:41:09 2020 +0100 + + Fix heights and paddings + +commit c906b03e3beab4be2ef0a289fc24697ce8c5d2ec +Author: Raghunandan Balachandran +Date: Fri Feb 7 13:39:38 2020 +0100 + + Initial commit to integrate with scaffolder + +commit 6847deafde37c29dcea5013c6c57d635feebccf4 +Merge: 4b440b5298 4bc315223e +Author: Jefferson Girão +Date: Fri Feb 7 13:32:19 2020 +0100 + + Merge pull request #85 from spotify/procfile + + chore: procfile + +commit d1c0fd9d49d3a6532c47530acf6fd37fb4c7ae03 +Author: Fredrik Adelöw +Date: Fri Feb 7 13:30:45 2020 +0100 + + Disable the annoying rubberband 'overscroll' effect going outside of the page boundaries + +commit 4b440b5298042b2937508435b3051c1a6ef385fb +Merge: 01a6670010 46a11b8b49 +Author: Stefan Ålund +Date: Fri Feb 7 13:28:40 2020 +0100 + + Merge pull request #87 from spotify/alund/nav-fix + + Styling of navigation + +commit bb450005af9a852de37d5b6ec22c476c7dda7203 +Author: Patrik Oldsberg +Date: Fri Feb 7 13:27:43 2020 +0100 + + front/core: add plugin api hooks and output for widgets + +commit 4bc315223e9aaea2b618c015133201cdf982165b +Author: Jefferson Girão +Date: Fri Feb 7 13:25:06 2020 +0100 + + add build flag to compose + +commit 46a11b8b4996aed4ec25291dc3840728465bde25 +Author: Stefan Ålund +Date: Fri Feb 7 13:21:23 2020 +0100 + + Styling of navigation + +commit ea35a14f68d74c87946aaed052a9974c87444b6b +Author: Patrik Oldsberg +Date: Fri Feb 7 13:11:56 2020 +0100 + + front/core: add DefaultWidgetView and pass params for widgets + +commit 01a6670010398caf5a70d5bb21ce7649c8b2b412 +Merge: bb1b5f59df 05d82143a6 +Author: Stefan Ålund +Date: Fri Feb 7 13:08:53 2020 +0100 + + Merge pull request #86 from spotify/rugvip/mock-entity + + front/app/entities: more mock content on service page + +commit ea581a2c62fa5b805cab7985318f6b7195ee3ab6 +Author: Patrik Oldsberg +Date: Fri Feb 7 12:50:32 2020 +0100 + + front/plugins/github-actions/BuildsListPage: tweak styles + +commit 05d82143a698ac8715efe056dd6f8672b61edbae +Author: Patrik Oldsberg +Date: Fri Feb 7 12:49:22 2020 +0100 + + front/core: add material-ui to deps + +commit 652732a6eafb59f82372f9bc9899a798cd098891 +Author: Patrik Oldsberg +Date: Fri Feb 7 12:49:11 2020 +0100 + + front/app/entities: more mock content on service page + +commit bb1b5f59dfeea45a86627560d42ed3dcf6633750 +Merge: d944e106fd 518decc20b +Author: Patrik Oldsberg +Date: Fri Feb 7 12:37:19 2020 +0100 + + Merge pull request #83 from spotify/rugvip/readme + + README: added local run instructions + +commit 3d3e78cc56255607c7e87821f0bde0cec9b770e0 +Author: Jefferson Girão +Date: Fri Feb 7 12:19:28 2020 +0100 + + chore: procfile + +commit d944e106fd4a42a295b604ad261055865baae1c2 +Merge: 98e274564f 4992b2a3ca +Author: Jefferson Girão +Date: Fri Feb 7 12:01:30 2020 +0100 + + Merge pull request #82 from spotify/inventory-routing + + fix: adjust routing for inventory + +commit 98e274564fc7f6cb9a64a7329ed38fc357da897b +Merge: 711a2cef96 cd9ae76700 +Author: Bilawal Hameed +Date: Fri Feb 7 12:01:13 2020 +0100 + + Merge pull request #81 from spotify/bil/sample-env-template + + Add a secrets.env.sample for easier secret setup + +commit 711a2cef96ffeb50ce1e82a52fc0374fc131dc42 +Merge: a0f9c44bf6 61ef0d341e +Author: Bilawal Hameed +Date: Fri Feb 7 12:01:00 2020 +0100 + + Merge pull request #84 from spotify/bil/add-makefile + + Setup Makefile for easier build commands + +commit 61ef0d341efdc15ecd12e8872248395d8ab9570a +Author: Bilawal Hameed +Date: Fri Feb 7 12:00:26 2020 +0100 + + insert final newline + +commit 1c094efd25d739c0cf14254469beeea0e474c7e0 +Author: Bilawal Hameed +Date: Fri Feb 7 11:57:30 2020 +0100 + + Added yarn install to make build + +commit 707264a9b11799af0caa6a7c48af78fef1fc6392 +Author: Bilawal Hameed +Date: Fri Feb 7 11:55:37 2020 +0100 + + Updated root README docs + +commit ee5f49b7a24607e88be3b75ed3209016c185db4e +Author: Bilawal Hameed +Date: Fri Feb 7 11:55:26 2020 +0100 + + added Makefile + +commit a0f9c44bf6eb5e7cb27a70c0e3bb1b77f97b19be +Merge: 47cdc94fb0 297949d3c9 +Author: Patrik Oldsberg +Date: Fri Feb 7 11:52:49 2020 +0100 + + Merge pull request #80 from spotify/rugvip/home-links + + front/plugins/home-page: nicer box of things + +commit 47cdc94fb0dca3c6f5c839e63b04576db1edba6a +Merge: d9fea35c4f bc01c71cd1 +Author: Raghunandan Balachandran +Date: Fri Feb 7 11:52:32 2020 +0100 + + Merge pull request #73 from spotify/soapraj/create-entity-view + + Soapraj/create entity view + +commit 4992b2a3ca7fba6c369526a587988d86b482d35b +Author: Jefferson Girão +Date: Fri Feb 7 11:50:23 2020 +0100 + + fix: adjust routing for inventory + +commit bc01c71cd1e05ada005a391840d37095962178ec +Author: Raghunandan Balachandran +Date: Fri Feb 7 11:43:44 2020 +0100 + + Fix PR comments + +commit 757a549740f420881811990bf2578f1411a0e965 +Author: Raghunandan Balachandran +Date: Fri Feb 7 11:29:40 2020 +0100 + + Update yarn lock + +commit 049659bba90591a9cb393677e2d1c7064ef3a824 +Author: Raghunandan Balachandran +Date: Thu Feb 6 13:24:52 2020 +0100 + + add create entity plugin + +commit 2721d96e90f45e9a7d95eba5980d350bd298cc09 +Author: Raghunandan Balachandran +Date: Thu Feb 6 17:41:38 2020 +0100 + + list templates + +commit 79c2000a18875d92ad6159872f58fba320f96de2 +Author: Raghunandan Balachandran +Date: Thu Feb 6 13:24:52 2020 +0100 + + add create entity plugin + +commit 518decc20be6a9902518c5729240b731ef9578e7 +Author: Patrik Oldsberg +Date: Fri Feb 7 11:46:37 2020 +0100 + + README: added local run instructions + +commit e53ec4fb34d3c657ef522717d5a30388d5c47805 +Author: Raghunandan Balachandran +Date: Fri Feb 7 11:26:31 2020 +0100 + + Add entity form page + +commit 305fb208496fa63b7dcc7c264f5af3878e58e9cf +Author: Raghunandan Balachandran +Date: Thu Feb 6 13:24:52 2020 +0100 + + add create entity plugin + +commit 59a37f657c91379f139844fac6ec840d62112194 +Author: Raghunandan Balachandran +Date: Thu Feb 6 17:41:38 2020 +0100 + + list templates + +commit cd9ae767001e890fc6826678f4ba0f2f66fa1b86 +Author: Bilawal Hameed +Date: Fri Feb 7 11:46:07 2020 +0100 + + Added docs + +commit d9fea35c4fd5cb90129e23c7af1cf902a2948a56 +Merge: 1b8c5a184b b515f6bb54 +Author: Nicola Corti +Date: Fri Feb 7 11:45:25 2020 +0100 + + Merge pull request #79 from spotify/android-kotlin-feature + + Adding an Android Module Kotlin template + +commit d8f28dc94e4dd6608818c69607fa1f1e6daaf415 +Author: Bilawal Hameed +Date: Fri Feb 7 11:45:15 2020 +0100 + + Add a secrets.env.example + +commit 73ba54fea59af49ac933713609fd05c50284a221 +Author: Raghunandan Balachandran +Date: Fri Feb 7 11:45:09 2020 +0100 + + add create entity plugin + +commit 1b8c5a184b569e6b812c16076b541d01943b66bc +Merge: 4a7f326295 1157e333ad +Author: Ben Lambert +Date: Fri Feb 7 11:34:09 2020 +0100 + + Merge pull request #74 from spotify/blam/run-cookie-cutter + + Actually run the Cookie Cutter in the Folder + +commit 297949d3c926d870926111b85ef24c5d8420a819 +Author: Patrik Oldsberg +Date: Fri Feb 7 11:29:46 2020 +0100 + + front/plugins/home-page: nicer box of things + +commit 4a7f326295979c5bd3cca71c810ab529d71ac400 +Merge: 8f58c49aa1 0968fc876a +Author: Jefferson Girão +Date: Fri Feb 7 11:26:57 2020 +0100 + + Merge pull request #77 from spotify/include-facts + + feat: include facts when listing entities + +commit 0968fc876a1f6dee7a72e769cb0b84ebc7344d81 +Author: Jefferson Girão +Date: Fri Feb 7 11:25:29 2020 +0100 + + remove non existing seed data for now + +commit b515f6bb5427d1d1dd93008b547a7023468e634b +Author: Nicola Corti +Date: Fri Feb 7 11:21:18 2020 +0100 + + Adding an Android Module Kotlin template + +commit 8f58c49aa1cf90cbaafa88e988d86e1355945f01 +Merge: 40632290cf 961dc279a9 +Author: Patrik Oldsberg +Date: Fri Feb 7 11:14:19 2020 +0100 + + Merge pull request #65 from spotify/alund/home-v1 + + Moving things into Home + +commit 961dc279a9826436b011f9eef7820493637085e1 +Author: Patrik Oldsberg +Date: Fri Feb 7 11:08:33 2020 +0100 + + front/plugins/home-page: fix SquadTechHealth tests + +commit da8895abace089bf15cf7354aba7caf2223cd195 +Author: Patrik Oldsberg +Date: Fri Feb 7 11:05:49 2020 +0100 + + front/core/layout/Page: remove page grid + +commit 40632290cfee299398044c977b887c3200d1231b +Merge: e54e5fe761 f070b8e1d0 +Author: Patrik Oldsberg +Date: Fri Feb 7 10:55:38 2020 +0100 + + Merge pull request #78 from spotify/rugvip/entity-page + + front/core: restructure entity page components + styling + +commit 1592cc9a985d543cd58e8a82334abdac576126fa +Author: Patrik Oldsberg +Date: Fri Feb 7 10:55:04 2020 +0100 + + frontend/core: deps and test fixes + +commit b94c16bb260a69fe92c986b402307164d377cd53 +Author: Jefferson Girão +Date: Fri Feb 7 10:44:33 2020 +0100 + + fix typo on docker-compose entry + +commit ca5485b7d73ee6bcf59194ad1cc8ea589ef36b63 +Author: Jefferson Girão +Date: Fri Feb 7 10:42:18 2020 +0100 + + explictly defining linters + +commit d5521de9e5141991d2ce0318353a837cb9cc532b +Author: Jefferson Girão +Date: Fri Feb 7 10:31:20 2020 +0100 + + refactor: move facts into entity + +commit 2885a46936b7a5f40e36cef562108e81bad62fb3 +Merge: daa53a0de6 f070b8e1d0 +Author: Patrik Oldsberg +Date: Fri Feb 7 10:11:08 2020 +0100 + + Merge branch 'rugvip/entity-page' into alund/home-v1 + +commit f070b8e1d03d4accb094f0e9fdda85789d46d23e +Author: Patrik Oldsberg +Date: Fri Feb 7 10:05:48 2020 +0100 + + front: test fixes + +commit 3014b96be32de3d728eecd09799b3082dbc8b178 +Author: Patrik Oldsberg +Date: Fri Feb 7 09:50:17 2020 +0100 + + front/app/SideBar: fixed sidebar + +commit 94efef0d05304b4bf967d0cd0a9518c280b72808 +Author: Patrik Oldsberg +Date: Fri Feb 7 09:47:28 2020 +0100 + + front/github-actions/BuildListPage: some paddings + +commit 568028dfbf2943208d2ed79a90cb311d5e569343 +Author: Patrik Oldsberg +Date: Fri Feb 7 09:46:50 2020 +0100 + + front/app,core: fix horizontal scroll + +commit feba36e239d5d267260485e807564814948ae251 +Author: Jefferson Girão +Date: Fri Feb 7 09:44:42 2020 +0100 + + feat: include facts when listing entities + +commit 58ad9cd3228b5d74c3ef8255d20d524769f462cd +Author: Patrik Oldsberg +Date: Fri Feb 7 09:27:04 2020 +0100 + + front/core/DefaultEntityPageNavbar: stole styling from alunds PR + +commit 87bdd8279b0e1ef6551ef2dfa73f0aab85875f25 +Author: Patrik Oldsberg +Date: Fri Feb 7 09:26:30 2020 +0100 + + front/core/EntityLink: forward props + +commit f97b1b56333c138658a2db56daa2ee1f29486144 +Author: Patrik Oldsberg +Date: Fri Feb 7 09:26:10 2020 +0100 + + front/core: added common type for icon components and require for entity nav items + +commit c62f92d9126dff8f7e872f462263f7311d71b8a3 +Author: Patrik Oldsberg +Date: Thu Feb 6 20:39:56 2020 +0100 + + front/core/DefaultEntityPageHeader: provide hard-coded service theme for now + +commit b69ee27d9efb28b9072f8acb862182b11d42876b +Author: Patrik Oldsberg +Date: Thu Feb 6 20:33:03 2020 +0100 + + front/app: move AppShell things into home-page plugin + +commit ea4b1a52f9a5b1b49f88342a40d1dcf4b43ed140 +Author: Patrik Oldsberg +Date: Thu Feb 6 20:24:06 2020 +0100 + + front/core/DefaultEntityPage: use grid layout + +commit fab433d02fb71c0382ab3f492fc868ee370791be +Author: Patrik Oldsberg +Date: Thu Feb 6 20:18:34 2020 +0100 + + front/core: add material-ui to deps + +commit 00f1d9d8e89dbe2f98f9756971ff0086946ed4d0 +Author: Patrik Oldsberg +Date: Thu Feb 6 20:15:23 2020 +0100 + + front/core/api/entityView: move default components out to components + +commit aec0eb0536599cec73f65b9a4f202ca3ecdf4b6d +Author: Patrik Oldsberg +Date: Thu Feb 6 20:04:47 2020 +0100 + + front/core/api/entityView: reorg entity view page components + +commit a0917e7f1b12cbbe29c504809d56ddef3e68674f +Author: Patrik Oldsberg +Date: Thu Feb 6 19:49:31 2020 +0100 + + frontend/core: fix index import parts + +commit 1157e333ad9b3b05e060bbf8e7bf7f3b86979726 +Author: blam +Date: Fri Feb 7 09:36:26 2020 +0100 + + chore(scaffolder): Should be Fatal not Panic + +commit e238860186432e477ff7a668b9a061bae5536a96 +Author: blam +Date: Fri Feb 7 09:34:33 2020 +0100 + + feat(scaffolder): Push the repository to github with the access token provided + +commit e54e5fe7617421e8eaa910867f53241142cb9a43 +Merge: 7bfb994e29 d9c31241f9 +Author: Patrik Oldsberg +Date: Fri Feb 7 09:32:50 2020 +0100 + + Merge pull request #76 from spotify/rugvip/branch + + builds: add branch to build info + +commit 7bfb994e2934a80e5b626b5ca4ddff6933348f98 +Merge: 33f6444366 c0426dcdbf +Author: Patrik Oldsberg +Date: Fri Feb 7 09:32:36 2020 +0100 + + Merge pull request #75 from spotify/rugvip/errors + + builds: error handling fixes + +commit daa53a0de6a975f4dc32cd610f5ac56faf14bd01 +Author: Stefan Ålund +Date: Fri Feb 7 09:06:57 2020 +0100 + + Fixed path to testUtils + +commit 33f64443661dab4901d4dd7b88c75a7f8bd379ec +Merge: 0d1fa1c70b 46b514705e +Author: Jefferson Girão +Date: Fri Feb 7 09:06:00 2020 +0100 + + Merge pull request #71 from Tiglas/refactor-tests + + refactor: group related tests into subtests + +commit a56d0c1be7b2c7b85592b67b4f55a540c5a70baf +Author: Stefan Ålund +Date: Thu Feb 6 21:11:15 2020 +0100 + + trial and error + +commit 645de2aae9120c6b495dc592419f586adbf9dde5 +Author: Stefan Ålund +Date: Thu Feb 6 21:05:17 2020 +0100 + + Add link to /create + +commit 528cb651467bb838e207c28a2e8995fdff2bed40 +Merge: 5dbe930604 0d1fa1c70b +Author: Stefan Ålund +Date: Thu Feb 6 21:03:27 2020 +0100 + + Merge branch 'master' into alund/home-v1 + +commit 5dbe930604823f41fd3800e05688bb9fe0b77cb4 +Author: Stefan Ålund +Date: Thu Feb 6 20:53:07 2020 +0100 + + Update yarn.lock + +commit d9c31241f93bce33ea1f5aed2b84943bcdf4f4d6 +Author: Patrik Oldsberg +Date: Thu Feb 6 17:50:57 2020 +0100 + + builds: add branch to build info + +commit 76a6dc3c601e411f67a3fd87ecf6f70b4a7c99d5 +Author: blam +Date: Thu Feb 6 17:48:56 2020 +0100 + + chore(scaffolder): setting the run context to default for all containers + +commit d0dddf3a0a8dbc5d7e29b7fb68ce33a80f6472e2 +Author: blam +Date: Thu Feb 6 17:45:30 2020 +0100 + + chore(scaffolder): remove the superfluous command + +commit 4697245252f37d53662cddeab717e5e4675adc67 +Author: blam +Date: Thu Feb 6 17:42:23 2020 +0100 + + feat(scaffolder): actually run the cookie cutter now in the folder and pass through the metadata to the cookiecutter.json + +commit c0426dcdbf868b2e21456517f4e4cef1905908b5 +Author: Patrik Oldsberg +Date: Thu Feb 6 17:40:00 2020 +0100 + + frontend/plugins/github-actions: fix error display + +commit d571c714edabd1bb00e8e645f7a4c910b1ffa44c +Author: Patrik Oldsberg +Date: Thu Feb 6 17:39:15 2020 +0100 + + backend/builds: error handling fixes + +commit 0d1fa1c70bfb0cc2d95e03c75844aeea6cd6dba2 +Merge: e6f9ffb876 b1b815124f +Author: Patrik Oldsberg +Date: Thu Feb 6 17:37:35 2020 +0100 + + Merge pull request #72 from spotify/rugvip/builds-view + + frontend/plugins/github-actions: real builds list and detail views + +commit b1b815124f84e992805cfd4b774112a13b910678 +Author: Patrik Oldsberg +Date: Thu Feb 6 17:15:53 2020 +0100 + + frontend/plugins/github-actions: real builds list and detail views + +commit 46b514705ed3b7fe465e7d1f069b42a395a4fb96 +Author: Ochieng' Got +Date: Thu Feb 6 17:10:57 2020 +0100 + + refactor: group related tests into subtests + +commit e6f9ffb8764afb02979ef4bd6f6268d2a23c2739 +Author: blam +Date: Thu Feb 6 16:53:42 2020 +0100 + + Regenerate types for scaffolder + +commit b844de0cd51e2b3029b137309e6a2c3c9af7c7ae +Author: blam +Date: Thu Feb 6 16:48:37 2020 +0100 + + feat(scaffolder): Starting to add the cookiecutter support for running the template after we've got all the data + +commit a6cf703464be885298069687de95bc47336c5b9f +Merge: ae4c85297f 701431476a +Author: Jefferson Girão +Date: Thu Feb 6 16:35:48 2020 +0100 + + Merge pull request #69 from spotify/freben/entity-list + + Add ability to list entities to inventory + +commit ae4c85297f1b9e9909640231d9babea2accfe9ac +Merge: 84065fab64 c52d6cbb19 +Author: Nicola Corti +Date: Thu Feb 6 16:24:39 2020 +0100 + + Merge pull request #67 from spotify/android-kotlin-template + + Adding an Android App Kotlin template + +commit 84065fab64a6f5a12df48c1f93ae0398ff9e5815 +Merge: 0a047e1a2f 88a56ac68f +Author: Patrik Oldsberg +Date: Thu Feb 6 16:20:21 2020 +0100 + + Merge pull request #70 from spotify/rugvip/deployment-fixes + + deployment fixes + +commit 88a56ac68f4a4862f1a9eaabad170c220072ffdf +Author: Patrik Oldsberg +Date: Thu Feb 6 16:19:07 2020 +0100 + + docker-compose: include secrets in scaffolder + +commit 8fdd8e54b361b345a11f48be580c5ed63ea1637b +Author: Patrik Oldsberg +Date: Thu Feb 6 16:18:17 2020 +0100 + + backend/proxy: added builds service route + +commit bee14ad29bc81ffc78405f228f2c1fee49448bce +Author: Patrik Oldsberg +Date: Thu Feb 6 16:18:00 2020 +0100 + + backend/Dockerfile: install ca-certificates + +commit 89842fafdeb97ac9d3f3f3ad9ae1869b3f098ffe +Author: Patrik Oldsberg +Date: Thu Feb 6 16:17:44 2020 +0100 + + backend/proxy: fix envoy version + +commit 701431476a1c4b0301c6c10588289d22ed42e532 +Author: Fredrik Adelöw +Date: Thu Feb 6 15:19:13 2020 +0100 + + Add ability to list entities to inventory + +commit 0a047e1a2fdc72712875f5594438a745ec5e3898 +Merge: 98dfb1afc9 84f43819f1 +Author: Raghunandan Balachandran +Date: Thu Feb 6 15:00:59 2020 +0100 + + Merge pull request #68 from spotify/rugvip/frontend-proto-import + + frontend/proto: expose protobuf definitions in index + fix deps + +commit 84f43819f1b22cbda7ef2d6b34ae68e3d09980f4 +Author: Patrik Oldsberg +Date: Thu Feb 6 14:55:31 2020 +0100 + + frontend/proto: expose protobuf definitions in index + fix deps + +commit c52d6cbb19dc146303a047b63945da9e86ae905e +Author: Nicola Corti +Date: Thu Feb 6 14:50:44 2020 +0100 + + Include the /main folder for the App Template + +commit 98dfb1afc977926b736f9a29a5fb470f4afc7250 +Merge: 1378c4d218 331a72b20d +Author: Ben Lambert +Date: Thu Feb 6 14:50:41 2020 +0100 + + Merge pull request #55 from spotify/ben/listing-components + + Create Component in Scaffolder + +commit 2fba9893d8309fa39f63f4bba12f43bae556cad0 +Author: Nicola Corti +Date: Thu Feb 6 14:50:24 2020 +0100 + + Update build.gradle to use the proper application id + +commit 331a72b20d004d9ddbd9f8dd0654bfb86af84866 +Merge: aecd2f7e3f 1378c4d218 +Author: blam +Date: Thu Feb 6 14:48:08 2020 +0100 + + Merge branch 'master' of github.com:spotify/backstage into ben/listing-components + + * 'master' of github.com:spotify/backstage: (25 commits) + backend/scaffolder: fix build + backend,proto: added builds service that calls out to github api + proto: update README + proto: switch to grpc-web plugin + ship protoc plugin binary, because meh + feat: returning correct list of included facts + refactor: Protobuf messages + No separate login link anymore + add failing scenario for getting entity + Persist login (for now - due to constant page reloads) + feat: add set fact endpoint + Mark package as private + frontend: remove gen-proto script, replaced by proto package + Updated docs + Fixed prototool + Added generated files + Added service=grpc-web flag + Added protobuf-gen-ts to prototool.yaml + Ran yarn install + Added a @backstage/protobuf-definitions package + frontend/core: simplify plugin output handling + ... + +commit 4460447790e7c3cbebe99bfee1dbc1fd2b1d5cef +Author: Nicola Corti +Date: Thu Feb 6 14:45:16 2020 +0100 + + Bump Gradle to 6.1.1 in the template + +commit 37829fe278195f434cff8aaa1061adcdd51ce18c +Author: Nicola Corti +Date: Thu Feb 6 14:41:17 2020 +0100 + + Update cookiecutter.json to include all the used tags + +commit 7b431b9c9dac68f607efe57a85e1163c5b39c022 +Author: Nicola Corti +Date: Thu Feb 6 14:32:21 2020 +0100 + + .DS_Store to gitignore + +commit b9e4da7bb651431028fb883d6faec6cc250ae3e1 +Author: Stefan Ålund +Date: Thu Feb 6 14:03:35 2020 +0100 + + Move in SortableTable + +commit 1378c4d218a6eef7ff932d0c77eb81962f41b2ac +Merge: 210b458995 93ce7bcec3 +Author: Patrik Oldsberg +Date: Thu Feb 6 14:01:01 2020 +0100 + + Merge pull request #66 from spotify/rugvip/scaffolder-build + + backend/scaffolder: fix build + +commit af6faccd33f016755fe35476d894adfb52be1ce1 +Author: Nicola Corti +Date: Thu Feb 6 13:53:05 2020 +0100 + + Adding an Android App Kotlin template + +commit 93ce7bcec3d1017751bec3b7a0561f0cb90981f0 +Author: Patrik Oldsberg +Date: Thu Feb 6 13:48:44 2020 +0100 + + backend/scaffolder: fix build + +commit 392fdf94e449d2ee47e4ed0309fc54c0d6c0ab24 +Author: Stefan Ålund +Date: Thu Feb 6 13:46:21 2020 +0100 + + Moving things into Home + +commit 210b4589951983dee9b60ee8c90d83d2c8784854 +Merge: edab1c6512 efb65546c0 +Author: Patrik Oldsberg +Date: Thu Feb 6 13:45:31 2020 +0100 + + Merge pull request #64 from spotify/rugvip/grpc-web + + proto: switch to grpc-web plugin + ship protoc plugin binary, because meh + +commit edab1c6512c1fb021da0781550c765114a08132b +Merge: a50df7914f 43367b2fff +Author: Patrik Oldsberg +Date: Thu Feb 6 13:39:17 2020 +0100 + + Merge pull request #62 from spotify/rugvip/builds + + backend,proto: added builds service that calls out to github api + +commit 43367b2fff2c027ac31fd56aa94a804f8a4c703d +Author: Patrik Oldsberg +Date: Thu Feb 6 13:07:48 2020 +0100 + + backend,proto: added builds service that calls out to github api + +commit efb65546c09b235c4adfb4e8d21e244fc3700cfa +Author: Patrik Oldsberg +Date: Thu Feb 6 13:37:09 2020 +0100 + + proto: update README + +commit ced428d3a4ef6edb34cfb139b59f906e5c8641aa +Author: Patrik Oldsberg +Date: Thu Feb 6 13:27:44 2020 +0100 + + proto: switch to grpc-web plugin + ship protoc plugin binary, because meh + +commit a50df7914f431ee3a0eae5072e7febbdf9313f28 +Merge: 4a676ada7b 90495b6187 +Author: Jefferson Girão +Date: Thu Feb 6 13:33:57 2020 +0100 + + Merge pull request #63 from spotify/get-entity + + feat: get single entity with facts + +commit 90495b6187ffb30611ed98958bd6ae017b74c54f +Author: Jefferson Girão +Date: Thu Feb 6 13:18:56 2020 +0100 + + feat: returning correct list of included facts + +commit 4a676ada7b1dc9fd00bbe400b96ba7bbe1ecc231 +Merge: f09d1065a0 940d472df1 +Author: Patrik Oldsberg +Date: Thu Feb 6 13:10:53 2020 +0100 + + Merge pull request #58 from spotify/rugvip/simplify-output + + frontend/core: simplify plugin output handling + +commit 1832a3a7638f31b40e57e3640c572cf8afcae7e1 +Author: Ochieng' Got +Date: Thu Feb 6 12:05:01 2020 +0100 + + refactor: Protobuf messages + +commit f09d1065a046afa74a6d7636ab932f4782f7810c +Merge: 2524a71bca cc2b0e821d +Author: Fredrik Adelöw +Date: Thu Feb 6 11:43:26 2020 +0100 + + Merge pull request #61 from spotify/freben/nologin + + No separate login link anymore + +commit cc2b0e821d5b7d66fcf45306dfe2d53afc92b9ab +Author: Fredrik Adelöw +Date: Thu Feb 6 11:28:38 2020 +0100 + + No separate login link anymore + +commit ae5283e1d47593b708dd8fe665c19cd87602a5ca +Author: Jefferson Girão +Date: Thu Feb 6 11:08:02 2020 +0100 + + add failing scenario for getting entity + +commit 2524a71bca19254732e9eff343ad604d9f43214a +Merge: 88f1bd9176 926732ce6c +Author: Stefan Ålund +Date: Thu Feb 6 11:05:37 2020 +0100 + + Merge pull request #60 from spotify/freben/persist-login + + Persist login (for now - due to constant page reloads) + +commit 926732ce6cc2762892a7be1c9a547639d3a4c59c +Author: Fredrik Adelöw +Date: Thu Feb 6 10:49:00 2020 +0100 + + Persist login (for now - due to constant page reloads) + +commit 88f1bd9176e0fd5f8dae80dae45ed3a822607a1e +Merge: 2b58a65598 fcbbe7072e +Author: Raghunandan Balachandran +Date: Thu Feb 6 10:47:59 2020 +0100 + + Merge pull request #54 from spotify/bil/add-typescript-gen + + Added Protobuf definitions for TypeScript using Prototool + +commit 2b58a6559837f5b613972d878c555929e5d3dbeb +Merge: eabe2de155 7e67224d24 +Author: Jefferson Girão +Date: Thu Feb 6 10:34:24 2020 +0100 + + Merge pull request #59 from spotify/set-fact-endpoint + + feat: set fact endpoint + +commit 7e67224d242bb1697f8000cd46393234f53c7a14 +Author: Jefferson Girão +Date: Thu Feb 6 10:27:02 2020 +0100 + + feat: add set fact endpoint + +commit fcbbe7072e8a8e67ef54748fd8f9beefb7ab06fc +Author: Bilawal Hameed +Date: Wed Feb 5 19:50:04 2020 +0100 + + Mark package as private + +commit bd7ebdb4ea5791c17b23a0fd571d43f02611f0b3 +Author: Patrik Oldsberg +Date: Wed Feb 5 17:53:02 2020 +0100 + + frontend: remove gen-proto script, replaced by proto package + +commit 18186f6c4bb50eec77b96a84f625ce7e4f7d0564 +Author: Bilawal Hameed +Date: Wed Feb 5 16:55:00 2020 +0100 + + Updated docs + +commit 21e6fcf355a26ae8daf70dacae1ed0a1d9b6b559 +Author: Bilawal Hameed +Date: Wed Feb 5 16:53:15 2020 +0100 + + Fixed prototool + +commit fdfcdae4e4cd3a8a4a2cba572e72492d7ab842bc +Author: Bilawal Hameed +Date: Wed Feb 5 15:56:22 2020 +0100 + + Added generated files + +commit 7b039442841844beb049351dba90b520606f8893 +Author: Bilawal Hameed +Date: Wed Feb 5 15:56:12 2020 +0100 + + Added service=grpc-web flag + +commit b6be0d0f25c03ce759c073d963076b16e8f93f37 +Author: Bilawal Hameed +Date: Wed Feb 5 15:50:34 2020 +0100 + + Added protobuf-gen-ts to prototool.yaml + +commit 94c72a5ea0c82c42aee676b2a68422f71ad8fd93 +Author: Bilawal Hameed +Date: Wed Feb 5 15:50:15 2020 +0100 + + Ran yarn install + +commit 5be413a44d242edf437bac3bd67e3070e5b5c090 +Author: Bilawal Hameed +Date: Wed Feb 5 15:49:58 2020 +0100 + + Added a @backstage/protobuf-definitions package + +commit 940d472df104568c6b6cf23b2f5e6dbdaf37b33b +Author: Patrik Oldsberg +Date: Thu Feb 6 10:00:28 2020 +0100 + + frontend/core: simplify plugin output handling + +commit eabe2de1551a4b1d41a30876c9d745d5bd338375 +Merge: 6996b8c1eb b894a0be0c +Author: Patrik Oldsberg +Date: Thu Feb 6 09:59:36 2020 +0100 + + Merge pull request #56 from spotify/rugvip/plugin-output + + frontend: added github-actions plugin skeleton + plugin output experiments + +commit 6996b8c1eb0d97ca5b376f8cfbd6b4ad2f1db3c6 +Merge: 4ee1eb25ec 07bbd89dee +Author: Stefan Ålund +Date: Thu Feb 6 09:52:57 2020 +0100 + + Merge pull request #57 from spotify/alund/new-nav + + New collapsing navigation + +commit 07bbd89deedb95a69ecc7f3c6a69748aced52dd0 +Author: Stefan Ålund +Date: Thu Feb 6 09:38:27 2020 +0100 + + Update Header.js + +commit 52eb8cf8e7a557e53db77471fb946aa55c534804 +Author: Stefan Ålund +Date: Thu Feb 6 09:32:26 2020 +0100 + + New collapsing navigation + +commit a8964d45745af5bd6ce3f03d18e5ab49c481ba21 +Author: Jefferson Girão +Date: Thu Feb 6 09:26:22 2020 +0100 + + chore: delete unused file + +commit 4ee1eb25ec5c60d35cbf4c86a6a6842d2b70c379 +Merge: a4b5117a27 a63d3af1d7 +Author: Fredrik Adelöw +Date: Thu Feb 6 09:13:39 2020 +0100 + + Merge pull request #51 from spotify/freben/login + + Add a login barrier + +commit b894a0be0c747edbbf4c11e5901bf788abce9cfe +Author: Patrik Oldsberg +Date: Thu Feb 6 09:01:55 2020 +0100 + + frontend: added github-actions plugin skeleton + plugin output experiments + +commit a63d3af1d78698efe45de3d891db9b45ffd0780e +Author: Fredrik Adelöw +Date: Wed Feb 5 15:57:46 2020 +0100 + + Add a login barrier + +commit aecd2f7e3f5dabdae2e3fce3393c460b1583642f +Author: blam +Date: Thu Feb 6 04:28:39 2020 +0100 + + fix(scaffolder): Fixing some small issues with CI workflows + +commit 37ad61bb0deac86e4b29cd8f018be1c8792b86d4 +Author: blam +Date: Thu Feb 6 04:19:50 2020 +0100 + + hack(scaffolder): to get imports to work nicely with the current protobuf setup, we can slightly change the import rewrites in go modules to point to same place without error + +commit c21ce9e768408ca2c6b3811411c168dc13339f6d +Author: blam +Date: Thu Feb 6 04:07:44 2020 +0100 + + feat(scaffolder): Added scaffolder github workflw + +commit da0588b865d3a42ef60abb53171c85e6f493aa72 +Merge: 9f9949503a a4b5117a27 +Author: blam +Date: Thu Feb 6 04:02:47 2020 +0100 + + Merge branch 'master' of github.com:spotify/backstage into ben/listing-components + + * 'master' of github.com:spotify/backstage: + frontend/core: restructure api a bit + frontend/core: added plugin route registration api + moved home page to plugin + Update yarn.lock + Fix proto/README.md typo + remove createGlobalStyles from theme + Add iOS Swift template + frontend/core: add some kinda app api + remove tinycolor. remove muithemeprovider + fix tests + Remove hello proto + more deps + bring in Page, Header, InfoCard, ErrorBoundary, BackstageTheme, Navigation, SupportButtons, HeaderAction, HeaderLabel components from backstage frontend + +commit 9f9949503a5e12e8257f2ce1286bc69eeffbd36e +Author: blam +Date: Thu Feb 6 04:00:37 2020 +0100 + + feat(scaffolder): Added the ability to create a component, create GH repo + copy to template to temp folder ready for cookiecutter + +commit a4b5117a2744545c7de69b59c21a71717b126046 +Merge: a6d4681134 c112b57ed6 +Author: Ben Lambert +Date: Thu Feb 6 04:00:01 2020 +0100 + + Merge pull request #52 from spotify/ben/listing-components + + Listing Templates Dynamically + +commit e75fae037703da9279faf0bd35fc54c0397e78fe +Author: blam +Date: Wed Feb 5 21:20:42 2020 +0100 + + feat(scaffolder): Added the ability to create the repos with optional org in github + +commit a6d46811346049707772cf0693f47e61d9173632 +Merge: e2ed240ee2 2485df1495 +Author: Patrik Oldsberg +Date: Wed Feb 5 20:24:12 2020 +0100 + + Merge pull request #53 from spotify/rugvip/core-api-structure + + frontend/core: restructure api a bit + fixes + +commit 2485df1495fb1c1b2f6e502b14e8e06e070a2466 +Author: Patrik Oldsberg +Date: Wed Feb 5 16:44:33 2020 +0100 + + frontend/core: restructure api a bit + +commit e2ed240ee26c684768dc7f7fea290b9ce4754125 +Merge: 9440212e96 a78237b67e +Author: Patrik Oldsberg +Date: Wed Feb 5 17:42:09 2020 +0100 + + Merge pull request #50 from spotify/alund/yarn-fresh + + Update yarn.lock + +commit c112b57ed65fbe688e0e6b738a5926002a889926 +Author: blam +Date: Wed Feb 5 16:47:04 2020 +0100 + + chore(scaffolder): Add a comment about loading from disk every time + +commit 600a001d6f84a152e63a6e183ce88a7cf9efba37 +Author: blam +Date: Wed Feb 5 16:45:45 2020 +0100 + + feat(scaffolder): Dynamically load the files from disk + +commit 9440212e96be43f91879d0abec69c659cbaa6c14 +Merge: 6ac93a293b bda7cb8b7a +Author: Patrik Oldsberg +Date: Wed Feb 5 16:20:22 2020 +0100 + + Merge pull request #47 from spotify/rugvip/home-page-plugin + + frontend/core: added plugin route registration api + moved home page to plugin + +commit e1ddbe60e9bb5277b44376370fb37162fd70ba20 +Author: blam +Date: Wed Feb 5 16:07:03 2020 +0100 + + chore(scaffolder): make the build work with the new folder structure + +commit fe2b02e70fb98c9612acc00bf35c795ec444157d +Author: blam +Date: Wed Feb 5 15:37:58 2020 +0100 + + chore(scaffolder): moving around some files and bringing the project more in line with the inventory service + +commit 1f699f7fa5d9219cfbd2b454e8439c027538977e +Author: blam +Date: Wed Feb 5 15:13:45 2020 +0100 + + chore(scaffolder): gofmt + +commit bda7cb8b7a32dc535c7b6d0051022f81027c9874 +Author: Patrik Oldsberg +Date: Wed Feb 5 15:10:01 2020 +0100 + + frontend/core: added plugin route registration api + moved home page to plugin + +commit a78237b67e53529fc88375232ab8bc46812dfce2 +Author: Stefan Ålund +Date: Wed Feb 5 15:45:46 2020 +0100 + + Update yarn.lock + +commit 6ac93a293b2e979dcdf536115be57e5b140c4849 +Merge: 848cb38fa6 b21af5d883 +Author: Patrick Balestra +Date: Wed Feb 5 15:31:45 2020 +0100 + + Merge pull request #48 from spotify/patrickb/add-ios-swift-app-template + + Add iOS Swift template + +commit 848cb38fa6cce06213e97e149572fc76d22317eb +Merge: 5aada28fcf f8b2e1b8c1 +Author: Stefan Ålund +Date: Wed Feb 5 15:27:32 2020 +0100 + + Merge pull request #49 from spotify/bih-fix-proto-readme-typo + + Fix proto/README.md typo + +commit 5aada28fcf3f44410341b6d9994fa05affbf5e78 +Merge: c6d67cf400 95ea391cc1 +Author: Raghunandan Balachandran +Date: Wed Feb 5 15:22:19 2020 +0100 + + Merge pull request #46 from spotify/soapraj/fix-global-styles + + remove createGlobalStyles from theme + +commit f8b2e1b8c1f69b5eb882d5129b6ca8cb8ac94f79 +Author: Bilawal Hameed +Date: Wed Feb 5 15:21:47 2020 +0100 + + Fix proto/README.md typo + +commit 95ea391cc1de40974b6f87f3d8b3687ffda85255 +Author: Raghunandan Balachandran +Date: Wed Feb 5 14:47:09 2020 +0100 + + remove createGlobalStyles from theme + +commit b21af5d883f941034ba502af008dee56be886245 +Author: Patrick Balestra +Date: Wed Feb 5 15:03:17 2020 +0100 + + Add iOS Swift template + +commit c6d67cf400ba134cc1937197707fcdc7f18cda7e +Merge: 449df0d5cb 0d4a12e7f5 +Author: Patrik Oldsberg +Date: Wed Feb 5 14:47:32 2020 +0100 + + Merge pull request #43 from spotify/rugvip/app-api + + frontend/core: add some kinda app api + +commit 0d4a12e7f564b9bf1aa5e7d13d995a6cbb4286c0 +Author: Patrik Oldsberg +Date: Wed Feb 5 13:46:00 2020 +0100 + + frontend/core: add some kinda app api + +commit 449df0d5cbcbb565ccacd4dbdb38c1e30de18d3e +Merge: 548e9732e1 e5472c46fc +Author: JD Welch +Date: Wed Feb 5 14:10:13 2020 +0100 + + Merge pull request #44 from spotify/soapraj/theming-changes + + theming changes + +commit e5472c46fc64d323a15b50bd4c1468a7ed0a2c7e +Author: Raghunandan Balachandran +Date: Wed Feb 5 13:53:20 2020 +0100 + + remove tinycolor. remove muithemeprovider + +commit 548e9732e166dd685d7511cf879b8e5b6e8fc54c +Merge: a3dc2cfe37 4d6dff9d0d +Author: Fredrik Adelöw +Date: Wed Feb 5 11:49:35 2020 +0100 + + Merge pull request #42 from spotify/freben/hellono + + Remove hello proto + +commit a3dc2cfe37385dc3d21f861535cff7ee36d7a349 +Merge: 0afa1e2628 c323e853a8 +Author: Raghunandan Balachandran +Date: Wed Feb 5 11:38:13 2020 +0100 + + Merge pull request #40 from spotify/soapraj/layout-changes + + Update layout, header + +commit c323e853a85d482bc9a25cfbc4db25684e47e748 +Author: Raghunandan Balachandran +Date: Wed Feb 5 11:35:19 2020 +0100 + + fix tests + +commit 4d6dff9d0d4117193006a3754c784f929813e877 +Author: Fredrik Adelöw +Date: Wed Feb 5 10:54:17 2020 +0100 + + Remove hello proto + +commit 0afa1e2628c8a85d8ca4f45fc7db7d89d5096b55 +Merge: ae9bb72e3f 7f623dd986 +Author: Patrick Balestra +Date: Wed Feb 5 10:24:28 2020 +0100 + + Merge pull request #38 from spotify/implement-list-templates + + Add hardcoded templates response + +commit ae9bb72e3f73b364bd2135233dbb847d0179cdd1 +Merge: 6e6d7b8c8f 0bcfd6a1b2 +Author: Jefferson Girão +Date: Wed Feb 5 10:06:57 2020 +0100 + + Merge pull request #31 from spotify/storing-entitities + + feat: create and get entity + +commit 6104d88d5a52c7b2d9a5c5c7d92045158d1f9c2e +Author: Raghunandan Balachandran +Date: Wed Feb 5 01:02:00 2020 +0100 + + more deps + +commit 923e5abd17e1405d501f1ca7b2605f1c80bf98db +Author: Raghunandan Balachandran +Date: Wed Feb 5 00:42:34 2020 +0100 + + bring in Page, Header, InfoCard, ErrorBoundary, BackstageTheme, Navigation, SupportButtons, HeaderAction, HeaderLabel components from backstage frontend + +commit 6e6d7b8c8f4569758fccb1cca466230a9e9069a4 +Merge: 29972559a2 161aad5a93 +Author: Patrik Oldsberg +Date: Tue Feb 4 16:36:47 2020 +0100 + + Merge pull request #37 from spotify/rugvip/no-hello + + backend: remove hello + +commit 161aad5a936b91201eb9c5546bbfea1ab745313c +Author: Patrik Oldsberg +Date: Tue Feb 4 16:36:17 2020 +0100 + + backend: remove hello + +commit 7f623dd9867279947dbb0ef05bd9cde24b01f733 +Author: Patrick Balestra +Date: Tue Feb 4 16:35:47 2020 +0100 + + Add hardcoded templates response + +commit 29972559a2b92d1672c48d0cde8821f65a759214 +Merge: 43f1200a13 2918e16413 +Author: Patrik Oldsberg +Date: Tue Feb 4 16:31:09 2020 +0100 + + Merge pull request #35 from spotify/rugvip/be-docker + + backend: added generic dockerfile + docker-compose + +commit 43f1200a13fc9da576bd8dde5bcab89712868112 +Merge: 8295cbfc0d e85d5cc041 +Author: Patrick Balestra +Date: Tue Feb 4 16:02:07 2020 +0100 + + Merge pull request #36 from spotify/react-ssr-template + + Add react-ssr-template + +commit e85d5cc0414cf0389e2940581f918a771f24e3ee +Author: Patrick Balestra +Date: Tue Feb 4 15:59:55 2020 +0100 + + Add react-ssr-template + + Signed-off-by: Patrick Balestra + +commit 2918e164132b0879358b9e4280fbb3d98e3b2c43 +Author: Patrik Oldsberg +Date: Tue Feb 4 15:37:39 2020 +0100 + + backend: added generic dockerfile + +commit 8295cbfc0d78a7952e9dda4dc99315fe34724b0c +Merge: b52ece5b9b d01cff2573 +Author: Patrik Oldsberg +Date: Tue Feb 4 15:47:31 2020 +0100 + + Merge pull request #33 from spotify/rugvip/identity + + backend/identity: add implementation with static data + +commit d01cff25739585ef3ec4bdde5fb8680cd6e477a0 +Author: Patrik Oldsberg +Date: Tue Feb 4 13:56:18 2020 +0100 + + backend/identity: add implementation with static data + +commit b52ece5b9b111c5e2a946cd17f54daef0cc5cc15 +Merge: 843c6f3f70 2346ef47a3 +Author: Patrik Oldsberg +Date: Tue Feb 4 15:38:18 2020 +0100 + + Merge pull request #34 from spotify/scaffolder + + Add scaffolder service + +commit 2346ef47a3b655df6a24a098804c059c2501081e +Author: Patrick Balestra +Date: Tue Feb 4 15:37:34 2020 +0100 + + got protobuf + go working together. + +commit ca3213b9f6f8b38e5ad8c3a9ba4dd6ecaf98ca0a +Author: Patrick Balestra +Date: Tue Feb 4 14:46:44 2020 +0100 + + Refactor envoy configuration + + Signed-off-by: Patrick Balestra + +commit 706c666c654ec0ae2ac8c57643cf14caf9012f9b +Author: Patrick Balestra +Date: Tue Feb 4 14:38:24 2020 +0100 + + Add scaffolder service + + Signed-off-by: Patrick Balestra + +commit 843c6f3f708c428d1c04551b7dfe4ae280e582fc +Merge: 4184ff0908 f0b951fd13 +Author: Stefan Ålund +Date: Tue Feb 4 14:02:58 2020 +0100 + + Merge pull request #32 from spotify/soapraj/login-changes + + minor fixes / add grid to login page + +commit f0b951fd138aa9a3a9d9691b8f1d407e4f6db834 +Author: Raghunandan Balachandran +Date: Tue Feb 4 13:29:44 2020 +0100 + + fix typo + +commit c82fac8af1b001f7b7493b48dac3f6a1f65d12c1 +Author: Raghunandan Balachandran +Date: Tue Feb 4 13:18:45 2020 +0100 + + move app shell to the top + +commit ba83266bf50ca4751cf75145427a89fb7f592d8f +Author: Raghunandan Balachandran +Date: Tue Feb 4 13:17:01 2020 +0100 + + minor fixes / add grid to login page + +commit 0bcfd6a1b227dc1d9ae4571b721e02b5ca014e41 +Author: Jefferson Girão +Date: Tue Feb 4 12:12:09 2020 +0100 + + feat: add entity creation and get endpoint + + * move to common proto setup + +commit 4184ff0908ce43a4f8da598d2a89b25c715fb66f +Merge: 19c7c21718 33a811c978 +Author: Raghunandan Balachandran +Date: Tue Feb 4 12:22:27 2020 +0100 + + Merge pull request #30 from spotify/soapraj/add-react-router + + Add react router and login page + +commit 33a811c9781807b21e0a314a047da28cdd8f5ece +Author: Raghunandan Balachandran +Date: Tue Feb 4 12:20:37 2020 +0100 + + Fix test + +commit 693979fca152b8319809fcb6af86e227406f34aa +Author: Raghunandan Balachandran +Date: Tue Feb 4 12:06:32 2020 +0100 + + Add react router and login page + +commit 70c59f3d75e86e4f61a5249e90591d97f1b74c99 +Author: Jefferson Girão +Date: Tue Feb 4 11:04:46 2020 +0100 + + remove binary added by mistake + +commit b4d3213c289666694a54c7424bb41548e68f5398 +Author: Jefferson Girão +Date: Tue Feb 4 10:52:32 2020 +0100 + + chore: linter dependencies + +commit 9806e518fdaf311c41ad35aa0737f9598398fff9 +Author: Jefferson Girão +Date: Tue Feb 4 10:37:32 2020 +0100 + + style: put server in its own package + +commit 19c7c217182d1cb474a828e47d6018a101751420 +Merge: c34c416964 ad4b9585c4 +Author: Patrik Oldsberg +Date: Tue Feb 4 12:07:26 2020 +0100 + + Merge pull request #29 from spotify/rugvip/go-proto + + add proto/ with prototool management + backend/proto and backend/identity example + +commit ad4b9585c4330760d2074217386142632756b7ee +Author: Patrik Oldsberg +Date: Tue Feb 4 11:58:13 2020 +0100 + + add proto/ with prototool management + backend/proto and backend/identity example + +commit c34c416964f3e07cc48f0b6a1a6de3009b224b2e +Merge: a4da0e9d24 ba19ca2558 +Author: JD Welch +Date: Tue Feb 4 11:12:16 2020 +0100 + + Merge pull request #27 from spotify/rugvip/components + + frontend/app: move sidebar and header into separate components + +commit ba19ca25588065952bac3632b9f1e21c64a55685 +Author: Patrik Oldsberg +Date: Tue Feb 4 11:00:30 2020 +0100 + + frontend/app: move sidebar and header into separate components + +commit a4da0e9d24628f1d1489780ab6ce5807c9c42975 +Merge: 33af665b12 7a7e252d5d +Author: Patrik Oldsberg +Date: Tue Feb 4 10:54:41 2020 +0100 + + Merge pull request #23 from spotify/rugvip/inv-store + + inventory: added basic unused storage api + +commit 33af665b124de63106a095e67b02929a1174a268 +Merge: 602e915dd7 eeaff99219 +Author: Stefan Ålund +Date: Tue Feb 4 10:40:34 2020 +0100 + + Merge pull request #22 from spotify/alund/shared + + Copy over most of shared + +commit 602e915dd7bb1207b3a258989364cd8f99ca10e4 +Merge: 58b11cd954 42008bf101 +Author: Patrik Oldsberg +Date: Tue Feb 4 10:40:00 2020 +0100 + + Merge pull request #24 from spotify/rugvip/npmrc + + frontend: add npmrc + +commit eeaff992193b0fa5cc424197b24348426e4c6cf9 +Merge: 6b60faf02e 58b11cd954 +Author: Stefan Ålund +Date: Tue Feb 4 10:37:07 2020 +0100 + + Merge branch 'master' into alund/shared + +commit 58b11cd9547d2872d2e813013ebbcdafed7c1ef9 +Merge: 6a457bc989 b22636bcd6 +Author: Stefan Ålund +Date: Tue Feb 4 10:36:46 2020 +0100 + + Merge pull request #25 from spotify/ncorti/fix-broken-master + + Fix broken test on master for /frontend + +commit b22636bcd658b6dbecaa10da9022f67103130691 +Author: Nicola Corti +Date: Tue Feb 4 10:33:36 2020 +0100 + + Fix broken test on master for /frontend + +commit 42008bf1011e6f9d2fe07d4d97e0786bb9f21ad3 +Author: Patrik Oldsberg +Date: Tue Feb 4 10:27:25 2020 +0100 + + frontend: add npmrc + +commit 7a7e252d5d87496178fd836d6d8f7d7eed3a99b7 +Author: Patrik Oldsberg +Date: Tue Feb 4 10:24:22 2020 +0100 + + inventory: added basic unused storage api + +commit 6a457bc9896feb9682687972c1db3698eb0c65b6 +Merge: 11f69235ee 2d46724338 +Author: Patrik Oldsberg +Date: Tue Feb 4 10:12:18 2020 +0100 + + Merge pull request #20 from spotify/rugvip/proto-web + + frontend: add grpc-web script, lint fixes, hello world + +commit 6b60faf02eaa0b391a9637de6eb137c8595a1fb4 +Author: Stefan Ålund +Date: Tue Feb 4 10:02:12 2020 +0100 + + rename stuff + +commit 41a260e919d9d163557d04bb1f8da818187c3f89 +Author: Stefan Ålund +Date: Tue Feb 4 09:59:13 2020 +0100 + + Remove some layouts + +commit 11f69235eedb50900d0d5d0f12aebeedb11ed732 +Merge: 24f5ff2447 751586c38a +Author: Jefferson Girão +Date: Tue Feb 4 09:51:51 2020 +0100 + + Merge pull request #21 from spotify/inventory-ci + + chore: add CI worflow for inventory backend + +commit f89359ee07dd89e2f0c51496fa80a58c91eba00b +Author: Stefan Ålund +Date: Tue Feb 4 09:51:40 2020 +0100 + + Copy over most of shared + +commit 751586c38ad116db02fc0f5a04a3a441611f6622 +Author: Jefferson Girão +Date: Tue Feb 4 09:22:21 2020 +0100 + + chore: restrict frontend ci to its workflow + +commit 44ee4fa030478237b9e1ae65f23dafb8325fad06 +Author: Jefferson Girão +Date: Tue Feb 4 09:20:15 2020 +0100 + + chore: add CI worflow for inventory backend + +commit 24f5ff2447b70248e973c90a6979733dab0364e8 +Merge: 6a411c937d 5a5fab3209 +Author: Jefferson Girão +Date: Tue Feb 4 09:20:01 2020 +0100 + + Merge pull request #18 from spotify/inventory-service-skeleton + + feat: skeleton inventory service + +commit 6a411c937d1c455c233aad07d44e59af228a43c8 +Merge: 8267d843d6 9aad7c9fc4 +Author: Stefan Ålund +Date: Tue Feb 4 08:53:01 2020 +0100 + + Merge pull request #15 from spotify/jdwelch/app_frame + + saffold of page frame, nav, header + +commit 8267d843d69c2de8f2a187434ef78cae10bdc3f2 +Merge: 0a15c43341 56a61d53bf +Author: Stefan Ålund +Date: Mon Feb 3 20:20:54 2020 +0100 + + Merge pull request #19 from spotify/ncorti-uncomment-license + + Uncomment the Apache2 License and include a full text version of it + +commit 2d4672433830ed9b59ea35b78a60b18ddd4b373f +Author: Patrik Oldsberg +Date: Mon Feb 3 19:21:28 2020 +0100 + + frontend: add grpc-web script, lint fixes, hello world + +commit 0a15c43341e19fff50e47df16d3587d7bab049a2 +Merge: 0d7ecaf53f b65928ed1e +Author: Stefan Ålund +Date: Mon Feb 3 18:14:13 2020 +0100 + + Merge pull request #16 from spotify/ncorti-fix-yarn-serve + + Updating README to use yarn start rather than serve + +commit 5a5fab320953a0f8690f6e87a952ce1bd613690a +Author: Jefferson Girão +Date: Mon Feb 3 16:59:44 2020 +0100 + + feat: skeleton inventory service + +commit 9aad7c9fc4801d9eb4f1bd0118909fa45cd076af +Author: JD Welch +Date: Mon Feb 3 16:54:48 2020 +0100 + + change fixed units to use theme.spacing() + +commit 56a61d53bf6d6703d096ea1bddacdb0bf161f9b6 +Author: Nicola Corti +Date: Mon Feb 3 16:54:22 2020 +0100 + + Uncomment the Apache2 License and include a full text version of it + +commit b65928ed1e9cb6ef742f6625c0fe4994c4900878 +Author: Nicola Corti +Date: Mon Feb 3 16:49:49 2020 +0100 + + Updating README to use yarn start rather than serve + +commit 0d7ecaf53f9c51d9f8aa2a20766be0c3aa4a3284 +Merge: 1df29c02b0 13dd28f51a +Author: Patrik Oldsberg +Date: Mon Feb 3 16:26:35 2020 +0100 + + Merge pull request #14 from spotify/rugvip/inv + + protos: initial inventory service proto + +commit 99caec566fe77cf2311a820c3c507d384861e95b +Author: JD Welch +Date: Mon Feb 3 16:24:08 2020 +0100 + + saffold of page frame, nav, header + +commit 1df29c02b0c347f05e0f373526f3525513176e4f +Merge: bf5aa1360a 16e342e8d1 +Author: Jefferson Girão +Date: Mon Feb 3 16:09:49 2020 +0100 + + Merge pull request #10 from spotify/deploy-it + + chore: deploy it with zeit now + +commit bf5aa1360a2b7889fee0dbcc25dac715f053c2dd +Merge: 843a471f11 c95619a264 +Author: Nicola Corti +Date: Mon Feb 3 16:07:07 2020 +0100 + + Fix actions/setup-node to not use working-directory (#13) + + Fix actions/setup-node to not use working-directory + +commit 843a471f115d9b776605049905ec15c82965fe05 +Merge: 757133c07e 1f06a567e9 +Author: Bilawal Hameed +Date: Mon Feb 3 16:05:34 2020 +0100 + + Merge pull request #8 from spotify/bih-patch-1 + + Update meta tag description + +commit 757133c07e801cc8c6296dcabe93eacabef83b45 +Merge: 50b03e8ae9 c9c3df2363 +Author: Bilawal Hameed +Date: Mon Feb 3 16:03:09 2020 +0100 + + Merge pull request #12 from spotify/mob/add-plugin-architecture + + Improve plugin template and add plugin generator + +commit c9c3df2363b5757c7209dc9057558dcf637dcaad +Author: Bilawal Hameed +Date: Mon Feb 3 16:01:08 2020 +0100 + + Update docs to explain how to import plugin + +commit 13dd28f51a99d6afdfc6afbe613a2eb648d9389d +Author: Patrik Oldsberg +Date: Mon Feb 3 15:47:14 2020 +0100 + + protos: initial inventory service proto + +commit 60d6c38105c68660a9bf25b4f29a92769440ce62 +Author: Bilawal Hameed +Date: Mon Feb 3 15:35:55 2020 +0100 + + Fix issue with components structure + +commit 419c95764a576b9ffad3cbe96865358e1e54ca54 +Author: Bilawal Hameed +Date: Mon Feb 3 15:25:54 2020 +0100 + + Export component in plugin root + +commit 901fd56cdcaae66a12dbd3e13bfcc0bcc45db7a3 +Author: Bilawal Hameed +Date: Mon Feb 3 15:23:44 2020 +0100 + + Add plugin prefix to plugin template + +commit c95619a264e20e7715f6ee7eb533c386cc93cdd0 +Author: Nicola Corti +Date: Mon Feb 3 15:21:35 2020 +0100 + + Fix actions/setup-node to not use working-directory + +commit 7936a0643d5785fd0001d6f2d2ac940112576c72 +Author: Bilawal Hameed +Date: Mon Feb 3 15:17:28 2020 +0100 + + Add docs and enable cookiecutter to support other templates + +commit 7d9160db50e00de44febc272fd37f0840921eb62 +Author: Bilawal Hameed +Date: Mon Feb 3 15:05:08 2020 +0100 + + Update cookiecutter default value + +commit 537bd6dbd97512926a112cd7ce5b758af1f76fe5 +Author: Bilawal Hameed +Date: Mon Feb 3 15:02:48 2020 +0100 + + Use cookiecutter variables in template + add component + +commit 50b03e8ae9567d143a715353c873c2de24c43666 +Merge: 42cb257354 0ee6f06d3d +Author: Patrik Oldsberg +Date: Mon Feb 3 15:00:59 2020 +0100 + + Merge pull request #11 from spotify/rugvip/proxy + + added protos,backend/hello,backend/envoy + compose setup + +commit 0ee6f06d3d4ce88dc155526f401c1894cac2c25d +Author: Patrik Oldsberg +Date: Mon Feb 3 14:50:22 2020 +0100 + + added protos,backend/hello,backend/envoy + compose setup + +commit 3461527969929e1a5f2b783b906d6900ac70a75e +Author: Bilawal Hameed +Date: Mon Feb 3 14:57:23 2020 +0100 + + Add plugin cookiecutter + +commit 16e342e8d195169a8cbe7b7e6fd499671f812cd2 +Author: Jefferson Girão +Date: Mon Feb 3 14:31:17 2020 +0100 + + chore: deploy it with zeit now + + * Install now (https://github.com/zeit/now) npm i -g now + * Deploy it with now + +commit 42cb2573540994430b8595b684d85fbf55fc3d13 +Merge: a02a33d406 02bbc9b2ba +Author: Raghunandan Balachandran +Date: Mon Feb 3 14:12:23 2020 +0100 + + Merge pull request #9 from spotify/move-docker-compose-out + + move docker compose file to top level dir + +commit 02bbc9b2bab45ca362b4dbac3a42adf160ab6e86 +Author: Raghunandan Balachandran +Date: Mon Feb 3 14:05:51 2020 +0100 + + move docker compose file to top level dir + +commit a02a33d406945ef947bab3d7cd5f019621b0231b +Merge: 80302f21db 622b37149c +Author: Jefferson Girão +Date: Mon Feb 3 13:57:11 2020 +0100 + + Merge pull request #7 from spotify/fix-frontend-ci + + chore: fix ci setup and cache node modules + +commit 1f06a567e99bf05005ed8cf30113fa32fd753557 +Author: Bilawal Hameed +Date: Mon Feb 3 13:56:56 2020 +0100 + + Update meta tag description + +commit 622b37149cf5bc583b82d2265db8a6db1e8db5bf +Author: Jefferson Girão +Date: Mon Feb 3 13:54:14 2020 +0100 + + chore: use public registry + +commit 73ecac091f8f077b8ab7d4cdf0e5e36c1fe0adbd +Author: Jefferson Girão +Date: Mon Feb 3 13:43:39 2020 +0100 + + chore: cache yarn, not npm + +commit 5b021167b483d1c4385c9eb7bb548452b1fc0ba7 +Author: Jefferson Girão +Date: Mon Feb 3 13:23:26 2020 +0100 + + chore: fix ci setup and cache node modules + +commit 80302f21db42d84ece14815c25400be9579c7795 +Merge: cc1e7a25d2 d734583520 +Author: Jefferson Girão +Date: Mon Feb 3 11:58:31 2020 +0100 + + Merge pull request #4 from spotify/github-actions-ci-frontend + + chore: run frontend CI commands in the correct path + +commit d73458352059d81b478100a0a5e81edf52370891 +Author: Jefferson Girão +Date: Mon Feb 3 11:52:06 2020 +0100 + + chore: run frontend CI commands in the correct path + +commit cc1e7a25d26d96993d31a82235c5c04040ba3e8e +Merge: de72125564 79ebfe5144 +Author: Jefferson Girão +Date: Mon Feb 3 11:48:20 2020 +0100 + + Merge pull request #2 from spotify/github-actions-setup + + chore: add initial workflow for ci + +commit 79ebfe5144d709b9b761a6a2153da29cd54aaf1e +Author: Jefferson Girão +Date: Mon Feb 3 11:39:24 2020 +0100 + + style: use consistent identation + +commit fe5e52a3def2c1562e146099cd832b357fb524bc +Author: Jefferson Girão +Date: Mon Feb 3 11:32:03 2020 +0100 + + chore: build and test frontend + +commit 28c8b663818c38e34d3caf26ae95a928d4d479b4 +Author: Jefferson Girão +Date: Mon Feb 3 11:21:16 2020 +0100 + + chore: add initial workflow for ci + + * only hello world for now. + +commit de721255640fe866cf79d41bf0a50f3f1ba689d3 +Author: Patrik Oldsberg +Date: Mon Feb 3 00:08:22 2020 +0100 + + frontend/packages: add material-ui + +commit 6199de583cc9c17133f0c6c33be60814e21d0bc7 +Author: Patrik Oldsberg +Date: Mon Feb 3 00:08:07 2020 +0100 + + frontend: fix eslint config + +commit 94f70bde1e7930f9eb2f96487dac202a69e8644d +Author: Patrik Oldsberg +Date: Mon Feb 3 00:07:35 2020 +0100 + + frontend: added basic readme + +commit 49c7e5a6052ae8be9f3a97b337dfa3b34b5d1305 +Author: Patrik Oldsberg +Date: Sun Feb 2 18:28:09 2020 +0100 + + frontend: working monorepo layout with CRA + web-scripts deps, without individual builds + +commit d7ea1d4740195338df5656c72e48e682ac96db25 +Merge: a3db7f35c2 529937b2c9 +Author: Stefan Ålund +Date: Sat Feb 1 16:31:41 2020 +0100 + + Merge pull request #1 from spotify/alund/license + + Add LICENSE, CoC etc + +commit 529937b2c905495d4803ec8d1fa4c377f11a68ec +Author: Stefan Ålund +Date: Sat Feb 1 16:21:05 2020 +0100 + + License shield + +commit b1279fde9531a7f7accb532a12898c645f7c0ffe +Author: Stefan Ålund +Date: Sat Feb 1 16:06:42 2020 +0100 + + Create CODEOWNERS + +commit 3e79eeaac78e2c27924c33ec18a4f7ebc8859329 +Author: Stefan Ålund +Date: Sat Feb 1 16:03:02 2020 +0100 + + Add LICENSE, CoC and NOTICE + +commit a3db7f35c2694e82000d3f3432cbdf446b6c5e6e +Author: Raghunandan Balachandran +Date: Fri Jan 31 17:27:03 2020 +0100 + + Add CRA App + +commit 3f9a99f9a712fb5f1bc4c568ec69cfd6d373311d +Author: Raghunandan Balachandran +Date: Fri Jan 31 17:06:03 2020 +0100 + + add lerna + +commit 9ff079458c51cb46fdfdaff1b8ca582d50d905b3 +Author: Raghunandan Balachandran +Date: Fri Jan 31 16:54:06 2020 +0100 + + add packages + +commit 605a5624169ed586527309cba98d1e6da821e3fb +Author: Patrik Oldsberg +Date: Fri Jan 31 16:48:15 2020 +0100 + + frontend: added node gitignore + +commit 1a3d3c9e1bcec3fc7c4d7bcd68124de47c0d5581 +Author: Patrik Oldsberg +Date: Fri Jan 31 16:01:18 2020 +0100 + + frontend: add local yarn install + +commit 1d275b3471f5e58ef0b459055abcf4e0283eb513 +Author: Raghunandan Balachandran +Date: Fri Jan 31 14:19:42 2020 +0100 + + init folders + +commit 1a19a01c4beee7d869765a43d1b57b1b450017a7 +Author: Stefan Ålund +Date: Sat Jan 25 09:16:32 2020 +0100 + + Create README.md From 01e124ea602b79a89701a18e2c871fc0790f247c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Wed, 2 Feb 2022 11:04:14 +0100 Subject: [PATCH 192/383] catalog-backend: add support for querying facets MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .changeset/dry-ties-collect.md | 10 ++ plugins/catalog-backend/api-report.md | 19 +++ plugins/catalog-backend/src/catalog/index.ts | 6 +- plugins/catalog-backend/src/catalog/types.ts | 46 +++++++ .../service/AuthorizedEntitiesCatalog.test.ts | 51 +++++++ .../src/service/AuthorizedEntitiesCatalog.ts | 31 +++++ .../service/DefaultEntitiesCatalog.test.ts | 125 ++++++++++++++++++ .../src/service/DefaultEntitiesCatalog.ts | 56 +++++++- .../src/service/createRouter.test.ts | 3 + .../src/service/createRouter.ts | 11 +- .../service/request/parseEntityFacetParams.ts | 37 ++++++ 11 files changed, 388 insertions(+), 7 deletions(-) create mode 100644 .changeset/dry-ties-collect.md create mode 100644 plugins/catalog-backend/src/service/request/parseEntityFacetParams.ts diff --git a/.changeset/dry-ties-collect.md b/.changeset/dry-ties-collect.md new file mode 100644 index 0000000000..9ad3afb208 --- /dev/null +++ b/.changeset/dry-ties-collect.md @@ -0,0 +1,10 @@ +--- +'@backstage/plugin-catalog-backend': patch +--- + +Added an `/entity-facets` endpoint, which lets you query the distribution of +possible values for fields of entities. + +This can be useful for example when populating a dropdown in the user interface, +such as listing all tag values that are actually being used right now in your +catalog instance, along with putting the most common ones at the top. diff --git a/plugins/catalog-backend/api-report.md b/plugins/catalog-backend/api-report.md index d97df9967c..21cf1c524f 100644 --- a/plugins/catalog-backend/api-report.md +++ b/plugins/catalog-backend/api-report.md @@ -600,6 +600,7 @@ export type EntitiesCatalog = { authorizationToken?: string; }, ): Promise; + facets(request: EntityFacetsRequest): Promise; }; // Warning: (ae-missing-release-tag) "EntitiesRequest" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) @@ -645,6 +646,24 @@ export type EntityAncestryResponse = { }>; }; +// @public +export interface EntityFacetsRequest { + authorizationToken?: string; + facets: string[]; + filter?: EntityFilter; +} + +// @public +export interface EntityFacetsResponse { + facets: Record< + string, + Array<{ + value: string; + count: number; + }> + >; +} + // Warning: (ae-missing-release-tag) "EntityFilter" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public diff --git a/plugins/catalog-backend/src/catalog/index.ts b/plugins/catalog-backend/src/catalog/index.ts index 95c6572b10..59f67b2f52 100644 --- a/plugins/catalog-backend/src/catalog/index.ts +++ b/plugins/catalog-backend/src/catalog/index.ts @@ -18,9 +18,11 @@ export type { EntitiesCatalog, EntitiesRequest, EntitiesResponse, - EntityAncestryResponse, - PageInfo, EntitiesSearchFilter, + EntityAncestryResponse, + EntityFacetsRequest, + EntityFacetsResponse, EntityFilter, EntityPagination, + PageInfo, } from './types'; diff --git a/plugins/catalog-backend/src/catalog/types.ts b/plugins/catalog-backend/src/catalog/types.ts index a79229b9a1..e285d4c100 100644 --- a/plugins/catalog-backend/src/catalog/types.ts +++ b/plugins/catalog-backend/src/catalog/types.ts @@ -87,6 +87,44 @@ export type EntityAncestryResponse = { }>; }; +/** + * The request shape for {@link EntitiesCatalog.facets}. + * + * @public + */ +export interface EntityFacetsRequest { + /** + * A filter to apply on the full list of entities before computing the facets. + */ + filter?: EntityFilter; + /** + * The facets to compute. + * + * @remarks + * + * This is a list of strings corresponding to paths within individual entity + * shapes. For example, to compute the facets for all available tags, you + * would pass in the string 'metadata.tags'. + */ + facets: string[]; + /** + * The optional token that authorizes the action. + */ + authorizationToken?: string; +} + +/** + * The response shape for {@link EntitiesCatalog.facets}. + * + * @public + */ +export interface EntityFacetsResponse { + /** + * The computed facets, one entry per facet in the request. + */ + facets: Record>; +} + /** @public */ export type EntitiesCatalog = { /** @@ -115,4 +153,12 @@ export type EntitiesCatalog = { entityRef: string, options?: { authorizationToken?: string }, ): Promise; + + /** + * Computes facets for a set of entities, e.g. for populating filter lists + * or driving insights or similar. + * + * @param request - Request options + */ + facets(request: EntityFacetsRequest): Promise; }; diff --git a/plugins/catalog-backend/src/service/AuthorizedEntitiesCatalog.test.ts b/plugins/catalog-backend/src/service/AuthorizedEntitiesCatalog.test.ts index 156db8e8ce..1f0e5ea644 100644 --- a/plugins/catalog-backend/src/service/AuthorizedEntitiesCatalog.test.ts +++ b/plugins/catalog-backend/src/service/AuthorizedEntitiesCatalog.test.ts @@ -30,6 +30,7 @@ describe('AuthorizedEntitiesCatalog', () => { entities: jest.fn(), removeEntityByUid: jest.fn(), entityAncestry: jest.fn(), + facets: jest.fn(), }; const fakePermissionApi = { authorize: jest.fn(), @@ -254,4 +255,54 @@ describe('AuthorizedEntitiesCatalog', () => { }); }); }); + + describe('facets', () => { + it('returns empty response on DENY', async () => { + fakePermissionApi.authorize.mockResolvedValue([ + { result: AuthorizeResult.DENY }, + ]); + const catalog = createCatalog(); + + expect( + await catalog.facets({ + facets: ['a'], + authorizationToken: 'abcd', + }), + ).toEqual({ + facets: { a: [] }, + }); + }); + + it('calls underlying catalog method with correct filter on CONDITIONAL', async () => { + fakePermissionApi.authorize.mockResolvedValue([ + { + result: AuthorizeResult.CONDITIONAL, + conditions: { rule: 'IS_ENTITY_KIND', params: [['b']] }, + }, + ]); + const catalog = createCatalog(isEntityKind); + + await catalog.facets({ facets: ['a'], authorizationToken: 'abcd' }); + + expect(fakeCatalog.facets).toHaveBeenCalledWith({ + facets: ['a'], + authorizationToken: 'abcd', + filter: { key: 'kind', values: ['b'] }, + }); + }); + + it('calls underlying catalog method on ALLOW', async () => { + fakePermissionApi.authorize.mockResolvedValue([ + { result: AuthorizeResult.ALLOW }, + ]); + const catalog = createCatalog(); + + await catalog.facets({ facets: ['a'], authorizationToken: 'abcd' }); + + expect(fakeCatalog.facets).toHaveBeenCalledWith({ + facets: ['a'], + authorizationToken: 'abcd', + }); + }); + }); }); diff --git a/plugins/catalog-backend/src/service/AuthorizedEntitiesCatalog.ts b/plugins/catalog-backend/src/service/AuthorizedEntitiesCatalog.ts index 99fc3ebc8e..2f94e23303 100644 --- a/plugins/catalog-backend/src/service/AuthorizedEntitiesCatalog.ts +++ b/plugins/catalog-backend/src/service/AuthorizedEntitiesCatalog.ts @@ -30,6 +30,8 @@ import { EntitiesRequest, EntitiesResponse, EntityAncestryResponse, + EntityFacetsRequest, + EntityFacetsResponse, EntityFilter, } from '../catalog/types'; import { basicEntityFilter } from './request/basicEntityFilter'; @@ -151,6 +153,35 @@ export class AuthorizedEntitiesCatalog implements EntitiesCatalog { }; } + async facets(request: EntityFacetsRequest): Promise { + const authorizeDecision = ( + await this.permissionApi.authorize( + [{ permission: catalogEntityReadPermission }], + { token: request?.authorizationToken }, + ) + )[0]; + + if (authorizeDecision.result === AuthorizeResult.DENY) { + return { + facets: Object.fromEntries(request.facets.map(f => [f, []])), + }; + } + + if (authorizeDecision.result === AuthorizeResult.CONDITIONAL) { + const permissionFilter: EntityFilter = this.transformConditions( + authorizeDecision.conditions, + ); + return this.entitiesCatalog.facets({ + ...request, + filter: request?.filter + ? { allOf: [permissionFilter, request.filter] } + : permissionFilter, + }); + } + + return this.entitiesCatalog.facets(request); + } + private findParents( entityRef: string, allAncestryItems: { entity: Entity; parentEntityRefs: string[] }[], diff --git a/plugins/catalog-backend/src/service/DefaultEntitiesCatalog.test.ts b/plugins/catalog-backend/src/service/DefaultEntitiesCatalog.test.ts index d6d4e957f6..7094cfd1c2 100644 --- a/plugins/catalog-backend/src/service/DefaultEntitiesCatalog.test.ts +++ b/plugins/catalog-backend/src/service/DefaultEntitiesCatalog.test.ts @@ -535,4 +535,129 @@ describe('DefaultEntitiesCatalog', () => { }, ); }); + + describe('facets', () => { + it.each(databases.eachSupportedId())( + 'can filter and collect properly', + async databaseId => { + const { knex } = await createDatabase(databaseId); + + await addEntityToSearch(knex, { + apiVersion: 'a', + kind: 'k', + metadata: { name: 'one' }, + spec: {}, + }); + await addEntityToSearch(knex, { + apiVersion: 'a', + kind: 'k', + metadata: { name: 'two' }, + spec: {}, + }); + await addEntityToSearch(knex, { + apiVersion: 'a', + kind: 'k2', + metadata: { name: 'two' }, + spec: {}, + }); + const catalog = new DefaultEntitiesCatalog(knex); + + await expect(catalog.facets({ facets: ['kind'] })).resolves.toEqual({ + facets: { + kind: [ + { value: 'k', count: 2 }, + { value: 'k2', count: 1 }, + ], + }, + }); + }, + ); + + it.each(databases.eachSupportedId())( + 'can match on annotations and labels with dots in them', + async databaseId => { + const { knex } = await createDatabase(databaseId); + + await addEntityToSearch(knex, { + apiVersion: 'a', + kind: 'k', + metadata: { + name: 'one', + annotations: { 'a.b/c.d': 'annotation1' }, + labels: { 'e.f/g.h': 'label1' }, + }, + spec: {}, + }); + await addEntityToSearch(knex, { + apiVersion: 'a', + kind: 'k', + metadata: { + name: 'two', + annotations: { 'a.b/c.d': 'annotation2' }, + labels: { 'e.f/g.h': 'label2' }, + }, + spec: {}, + }); + const catalog = new DefaultEntitiesCatalog(knex); + + await expect( + catalog.facets({ + facets: ['metadata.annotations.a.b/c.d', 'metadata.labels.e.f/g.h'], + }), + ).resolves.toEqual({ + facets: { + 'metadata.annotations.a.b/c.d': [ + { value: 'annotation1', count: 1 }, + { value: 'annotation2', count: 1 }, + ], + 'metadata.labels.e.f/g.h': [ + { value: 'label1', count: 1 }, + { value: 'label2', count: 1 }, + ], + }, + }); + }, + ); + + it.each(databases.eachSupportedId())( + 'can match on strings in arrays', + async databaseId => { + const { knex } = await createDatabase(databaseId); + + await addEntityToSearch(knex, { + apiVersion: 'a', + kind: 'k', + metadata: { + name: 'one', + tags: ['java', 'rust'], + }, + spec: {}, + }); + await addEntityToSearch(knex, { + apiVersion: 'a', + kind: 'k', + metadata: { + name: 'two', + tags: ['java', 'node'], + }, + spec: {}, + }); + const catalog = new DefaultEntitiesCatalog(knex); + + await expect( + catalog.facets({ + facets: ['metadata.tags'], + }), + ).resolves.toEqual({ + facets: { + 'metadata.tags': expect.arrayContaining([ + { value: 'java', count: 2 }, + { value: 'rust', count: 1 }, + { value: 'node', count: 1 }, + ]), + }, + }); + }, + ); + }); }); diff --git a/plugins/catalog-backend/src/service/DefaultEntitiesCatalog.ts b/plugins/catalog-backend/src/service/DefaultEntitiesCatalog.ts index 6979f94ba7..1ac70bda30 100644 --- a/plugins/catalog-backend/src/service/DefaultEntitiesCatalog.ts +++ b/plugins/catalog-backend/src/service/DefaultEntitiesCatalog.ts @@ -17,21 +17,24 @@ import { Entity, stringifyEntityRef } from '@backstage/catalog-model'; import { InputError, NotFoundError } from '@backstage/errors'; import { Knex } from 'knex'; +import lodash from 'lodash'; import { EntitiesCatalog, EntitiesRequest, EntitiesResponse, - EntityAncestryResponse, - EntityPagination, - EntityFilter, EntitiesSearchFilter, + EntityAncestryResponse, + EntityFacetsRequest, + EntityFacetsResponse, + EntityFilter, + EntityPagination, } from '../catalog/types'; import { DbFinalEntitiesRow, + DbPageInfo, DbRefreshStateReferencesRow, DbRefreshStateRow, DbSearchRow, - DbPageInfo, } from '../database/tables'; function parsePagination(input?: EntityPagination): { @@ -295,4 +298,49 @@ export class DefaultEntitiesCatalog implements EntitiesCatalog { items, }; } + + async facets(request: EntityFacetsRequest): Promise { + const { entities } = await this.entities({ + filter: request.filter, + authorizationToken: request.authorizationToken, + }); + + const facets: EntityFacetsResponse['facets'] = {}; + + for (const facet of request.facets) { + const values = entities + .map(entity => { + // TODO(freben): Generalize this code to handle any field that may + // have dots in its key? + if (facet.startsWith('metadata.annotations.')) { + return entity.metadata.annotations?.[ + facet.substring('metadata.annotations.'.length) + ]; + } else if (facet.startsWith('metadata.labels.')) { + return entity.metadata.labels?.[ + facet.substring('metadata.labels.'.length) + ]; + } + return lodash.get(entity, facet); + }) + .flatMap(field => { + if (typeof field === 'string') { + return [field]; + } else if (Array.isArray(field)) { + return field.filter(i => typeof i === 'string'); + } + return []; + }) + .sort(); + + const counts = lodash.countBy(values, lodash.identity); + + facets[facet] = Object.entries(counts).map(([value, count]) => ({ + value, + count, + })); + } + + return { facets }; + } } diff --git a/plugins/catalog-backend/src/service/createRouter.test.ts b/plugins/catalog-backend/src/service/createRouter.test.ts index 6ae24ecd27..755134c3d9 100644 --- a/plugins/catalog-backend/src/service/createRouter.test.ts +++ b/plugins/catalog-backend/src/service/createRouter.test.ts @@ -40,6 +40,7 @@ describe('createRouter readonly disabled', () => { entities: jest.fn(), removeEntityByUid: jest.fn(), entityAncestry: jest.fn(), + facets: jest.fn(), }; locationService = { getLocation: jest.fn(), @@ -394,6 +395,7 @@ describe('createRouter readonly enabled', () => { entities: jest.fn(), removeEntityByUid: jest.fn(), entityAncestry: jest.fn(), + facets: jest.fn(), }; locationService = { getLocation: jest.fn(), @@ -578,6 +580,7 @@ describe('NextRouter permissioning', () => { entities: jest.fn(), removeEntityByUid: jest.fn(), entityAncestry: jest.fn(), + facets: jest.fn(), }; locationService = { getLocation: jest.fn(), diff --git a/plugins/catalog-backend/src/service/createRouter.ts b/plugins/catalog-backend/src/service/createRouter.ts index 0dce765507..a4d911a421 100644 --- a/plugins/catalog-backend/src/service/createRouter.ts +++ b/plugins/catalog-backend/src/service/createRouter.ts @@ -37,6 +37,7 @@ import { } from './util'; import { RefreshOptions, LocationService, RefreshService } from './types'; import { z } from 'zod'; +import { parseEntityFacetParams } from './request/parseEntityFacetParams'; /** * Options used by {@link createRouter}. @@ -160,7 +161,15 @@ export async function createRouter( const response = await entitiesCatalog.entityAncestry(entityRef); res.status(200).json(response); }, - ); + ) + .get('/entity-facets', async (req, res) => { + const response = await entitiesCatalog.facets({ + filter: parseEntityFilterParams(req.query), + facets: parseEntityFacetParams(req.query), + authorizationToken: getBearerToken(req.header('authorization')), + }); + res.status(200).json(response); + }); } if (locationService) { diff --git a/plugins/catalog-backend/src/service/request/parseEntityFacetParams.ts b/plugins/catalog-backend/src/service/request/parseEntityFacetParams.ts new file mode 100644 index 0000000000..00493f068f --- /dev/null +++ b/plugins/catalog-backend/src/service/request/parseEntityFacetParams.ts @@ -0,0 +1,37 @@ +/* + * 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 { InputError } from '@backstage/errors'; +import { parseStringsParam } from './common'; + +/** + * Parses the facets part of a facet query, like + * /entity-facets?filter=metadata.namespace=default,kind=Component&facet=metadata.namespace + */ +export function parseEntityFacetParams( + params: Record, +): string[] { + // Each facet string is on the form a.b.c + const facetStrings = parseStringsParam(params.facet, 'facet'); + if (facetStrings) { + const filtered = facetStrings.filter(Boolean); + if (filtered.length) { + return filtered; + } + } + + throw new InputError('Missing facet parameter'); +} From 6e1cbc12a62e7907f3c8ca29f9f61a99e32e3981 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Sun, 13 Feb 2022 19:58:15 +0100 Subject: [PATCH 193/383] update the catalog client to add getEntityFacets MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .changeset/lucky-bulldogs-own.md | 14 +++ .changeset/tiny-ads-knock.md | 5 + packages/catalog-client/api-report.md | 28 ++++++ packages/catalog-client/src/CatalogClient.ts | 46 ++++++++- packages/catalog-client/src/types/api.ts | 95 +++++++++++++++++++ packages/catalog-client/src/types/index.ts | 4 +- .../lib/catalog/CatalogIdentityClient.test.ts | 1 + .../badges-backend/src/service/router.test.ts | 1 + .../CatalogGraphCard.test.tsx | 1 + .../CatalogGraphPage.test.tsx | 1 + .../EntityRelationsGraph.test.tsx | 1 + .../useEntityStore.test.ts | 1 + .../src/api/CatalogImportClient.test.ts | 1 + .../StepPrepareCreatePullRequest.test.tsx | 1 + .../src/hooks/useEntityKinds.test.tsx | 60 +++--------- .../catalog-react/src/hooks/useEntityKinds.ts | 8 +- .../DefaultExplorePage.test.tsx | 1 + .../DomainExplorerContent.test.tsx | 1 + .../GroupsExplorerContent.test.tsx | 1 + .../components/FossaPage/FossaPage.test.tsx | 1 + .../src/service/TodoReaderService.test.ts | 1 + 21 files changed, 216 insertions(+), 57 deletions(-) create mode 100644 .changeset/lucky-bulldogs-own.md create mode 100644 .changeset/tiny-ads-knock.md diff --git a/.changeset/lucky-bulldogs-own.md b/.changeset/lucky-bulldogs-own.md new file mode 100644 index 0000000000..d7b657fb83 --- /dev/null +++ b/.changeset/lucky-bulldogs-own.md @@ -0,0 +1,14 @@ +--- +'@backstage/plugin-auth-backend': patch +'@backstage/plugin-badges-backend': patch +'@backstage/plugin-catalog': patch +'@backstage/plugin-catalog-backend': patch +'@backstage/plugin-catalog-graph': patch +'@backstage/plugin-catalog-import': patch +'@backstage/plugin-catalog-react': patch +'@backstage/plugin-explore': patch +'@backstage/plugin-fossa': patch +'@backstage/plugin-todo-backend': patch +--- + +Updated according to the new `getEntityFacets` catalog API method diff --git a/.changeset/tiny-ads-knock.md b/.changeset/tiny-ads-knock.md new file mode 100644 index 0000000000..427ed7eee1 --- /dev/null +++ b/.changeset/tiny-ads-knock.md @@ -0,0 +1,5 @@ +--- +'@backstage/catalog-client': patch +--- + +Added `getEntityFacets` to the client diff --git a/packages/catalog-client/api-report.md b/packages/catalog-client/api-report.md index 56ba4a834f..d5991303eb 100644 --- a/packages/catalog-client/api-report.md +++ b/packages/catalog-client/api-report.md @@ -43,6 +43,10 @@ export interface CatalogApi { name: EntityName, options?: CatalogRequestOptions, ): Promise; + getEntityFacets( + request: GetEntityFacetsRequest, + options?: CatalogRequestOptions, + ): Promise; getLocationById( id: string, options?: CatalogRequestOptions, @@ -91,6 +95,10 @@ export class CatalogClient implements CatalogApi { compoundName: EntityName, options?: CatalogRequestOptions, ): Promise; + getEntityFacets( + request: GetEntityFacetsRequest, + options?: CatalogRequestOptions, + ): Promise; // @deprecated (undocumented) getLocationByEntity( entity: Entity, @@ -180,6 +188,26 @@ export interface GetEntityAncestorsResponse { rootEntityRef: string; } +// @public +export interface GetEntityFacetsRequest { + facets: string[]; + filter?: + | Record[] + | Record + | undefined; +} + +// @public +export interface GetEntityFacetsResponse { + facets: Record< + string, + Array<{ + value: string; + count: number; + }> + >; +} + // @public type Location_2 = { id: string; diff --git a/packages/catalog-client/src/CatalogClient.ts b/packages/catalog-client/src/CatalogClient.ts index 583f5a85bd..bb3c9604b3 100644 --- a/packages/catalog-client/src/CatalogClient.ts +++ b/packages/catalog-client/src/CatalogClient.ts @@ -36,6 +36,8 @@ import { GetEntityAncestorsRequest, GetEntityAncestorsResponse, Location, + GetEntityFacetsRequest, + GetEntityFacetsResponse, } from './types/api'; import { DiscoveryApi } from './types/discovery'; import { FetchApi } from './types/fetch'; @@ -97,14 +99,13 @@ export class CatalogClient implements CatalogApi { options?: CatalogRequestOptions, ): Promise { const { filter = [], fields = [], offset, limit, after } = request ?? {}; - const filterItems = [filter].flat(); const params: string[] = []; // filter param can occur multiple times, for example // /api/catalog/entities?filter=metadata.name=wayback-search,kind=component&filter=metadata.name=www-artist,kind=component' // the "outer array" defined by `filter` occurrences corresponds to "anyOf" filters // the "inner array" defined within a `filter` param corresponds to "allOf" filters - for (const filterItem of filterItems) { + for (const filterItem of [filter].flat()) { const filterParts: string[] = []; for (const [key, value] of Object.entries(filterItem)) { for (const v of [value].flat()) { @@ -207,6 +208,47 @@ export class CatalogClient implements CatalogApi { } } + /** + * {@inheritdoc CatalogApi.getEntityFacets} + */ + async getEntityFacets( + request: GetEntityFacetsRequest, + options?: CatalogRequestOptions, + ): Promise { + const { filter = [], facets } = request; + const params: string[] = []; + + // filter param can occur multiple times, for example + // /api/catalog/entities?filter=metadata.name=wayback-search,kind=component&filter=metadata.name=www-artist,kind=component' + // the "outer array" defined by `filter` occurrences corresponds to "anyOf" filters + // the "inner array" defined within a `filter` param corresponds to "allOf" filters + for (const filterItem of [filter].flat()) { + const filterParts: string[] = []; + for (const [key, value] of Object.entries(filterItem)) { + for (const v of [value].flat()) { + if (v === CATALOG_FILTER_EXISTS) { + filterParts.push(encodeURIComponent(key)); + } else if (typeof v === 'string') { + filterParts.push( + `${encodeURIComponent(key)}=${encodeURIComponent(v)}`, + ); + } + } + } + + if (filterParts.length) { + params.push(`filter=${filterParts.join(',')}`); + } + } + + for (const facet of facets) { + params.push(`facet=${encodeURIComponent(facet)}`); + } + + const query = params.length ? `?${params.join('&')}` : ''; + return await this.requestOptional('GET', `/entity-facets${query}`, options); + } + /** * {@inheritdoc CatalogApi.addLocation} */ diff --git a/packages/catalog-client/src/types/api.ts b/packages/catalog-client/src/types/api.ts index b3d4bc2397..b070820c8b 100644 --- a/packages/catalog-client/src/types/api.ts +++ b/packages/catalog-client/src/types/api.ts @@ -142,6 +142,90 @@ export interface GetEntityAncestorsResponse { }>; } +/** + * The request type for {@link CatalogClient.getEntityFacets}. + * + * @public + */ +export interface GetEntityFacetsRequest { + /** + * If given, return only entities that match the given patterns. + * + * @remarks + * + * If multiple filter sets are given as an array, then there is effectively an + * OR between each filter set. + * + * Within one filter set, there is effectively an AND between the various + * keys. + * + * Within one key, if there are more than one value, then there is effectively + * an OR between them. + * + * Example: For an input of + * + * ``` + * [ + * { kind: ['API', 'Component'] }, + * { 'metadata.name': 'a', 'metadata.namespace': 'b' } + * ] + * ``` + * + * This effectively means + * + * ``` + * (kind = EITHER 'API' OR 'Component') + * OR + * (metadata.name = 'a' AND metadata.namespace = 'b' ) + * ``` + * + * Each key is a dot separated path in each object. + * + * As a value you can also pass in the symbol `CATALOG_FILTER_EXISTS` + * (exported from this package), which means that you assert on the existence + * of that key, no matter what its value is. + */ + filter?: + | Record[] + | Record + | undefined; + /** + * Dot separated paths for the facets to extract from each entity. + * + * @remarks + * + * Example: For an input of `['kind', 'metadata.annotations.backstage.io/orphan']`, then the + * response will be shaped like + * + * ``` + * { + * "facets": { + * "kind": [ + * { "key": "Component", "count": 22 }, + * { "key": "API", "count": 13 } + * ], + * "metadata.annotations.backstage.io/orphan": [ + * { "key": "true", "count": 2 } + * ] + * } + * } + * ``` + */ + facets: string[]; +} + +/** + * The response type for {@link CatalogClient.getEntityFacets}. + * + * @public + */ +export interface GetEntityFacetsResponse { + /** + * The computed facets, one entry per facet in the request. + */ + facets: Record>; +} + /** * Options you can pass into a catalog request for additional information. * @@ -248,6 +332,17 @@ export interface CatalogApi { options?: CatalogRequestOptions, ): Promise; + /** + * Gets a summary of field facets of entities in the catalog. + * + * @param request - Request parameters + * @param options - Additional options + */ + getEntityFacets( + request: GetEntityFacetsRequest, + options?: CatalogRequestOptions, + ): Promise; + // Locations /** diff --git a/packages/catalog-client/src/types/index.ts b/packages/catalog-client/src/types/index.ts index 580bb7330d..39c8962b68 100644 --- a/packages/catalog-client/src/types/index.ts +++ b/packages/catalog-client/src/types/index.ts @@ -25,6 +25,8 @@ export type { GetEntityAncestorsRequest, GetEntityAncestorsResponse, Location, + GetEntityFacetsRequest, + GetEntityFacetsResponse, } from './api'; -export { ENTITY_STATUS_CATALOG_PROCESSING_TYPE } from './status'; export * from './deprecated'; +export { ENTITY_STATUS_CATALOG_PROCESSING_TYPE } from './status'; diff --git a/plugins/auth-backend/src/lib/catalog/CatalogIdentityClient.test.ts b/plugins/auth-backend/src/lib/catalog/CatalogIdentityClient.test.ts index 83ebb5de73..4388c2f82f 100644 --- a/plugins/auth-backend/src/lib/catalog/CatalogIdentityClient.test.ts +++ b/plugins/auth-backend/src/lib/catalog/CatalogIdentityClient.test.ts @@ -34,6 +34,7 @@ describe('CatalogIdentityClient', () => { removeEntityByUid: jest.fn(), refreshEntity: jest.fn(), getEntityAncestors: jest.fn(), + getEntityFacets: jest.fn(), }; const tokenManager: jest.Mocked = { getToken: jest.fn(), diff --git a/plugins/badges-backend/src/service/router.test.ts b/plugins/badges-backend/src/service/router.test.ts index 4b0ae2a44a..56dbfb0655 100644 --- a/plugins/badges-backend/src/service/router.test.ts +++ b/plugins/badges-backend/src/service/router.test.ts @@ -67,6 +67,7 @@ describe('createRouter', () => { removeEntityByUid: jest.fn(), refreshEntity: jest.fn(), getEntityAncestors: jest.fn(), + getEntityFacets: jest.fn(), }; config = new ConfigReader({ diff --git a/plugins/catalog-graph/src/components/CatalogGraphCard/CatalogGraphCard.test.tsx b/plugins/catalog-graph/src/components/CatalogGraphCard/CatalogGraphCard.test.tsx index 0e2fa723dc..7cebdee692 100644 --- a/plugins/catalog-graph/src/components/CatalogGraphCard/CatalogGraphCard.test.tsx +++ b/plugins/catalog-graph/src/components/CatalogGraphCard/CatalogGraphCard.test.tsx @@ -65,6 +65,7 @@ describe('', () => { removeLocationById: jest.fn(), refreshEntity: jest.fn(), getEntityAncestors: jest.fn(), + getEntityFacets: jest.fn(), }; apis = TestApiRegistry.from([catalogApiRef, catalog]); diff --git a/plugins/catalog-graph/src/components/CatalogGraphPage/CatalogGraphPage.test.tsx b/plugins/catalog-graph/src/components/CatalogGraphPage/CatalogGraphPage.test.tsx index c509abd712..f98aca0081 100644 --- a/plugins/catalog-graph/src/components/CatalogGraphPage/CatalogGraphPage.test.tsx +++ b/plugins/catalog-graph/src/components/CatalogGraphPage/CatalogGraphPage.test.tsx @@ -94,6 +94,7 @@ describe('', () => { removeLocationById: jest.fn(), refreshEntity: jest.fn(), getEntityAncestors: jest.fn(), + getEntityFacets: jest.fn(), }; wrapper = ( diff --git a/plugins/catalog-graph/src/components/EntityRelationsGraph/EntityRelationsGraph.test.tsx b/plugins/catalog-graph/src/components/EntityRelationsGraph/EntityRelationsGraph.test.tsx index 715f30e8c9..f16d06f809 100644 --- a/plugins/catalog-graph/src/components/EntityRelationsGraph/EntityRelationsGraph.test.tsx +++ b/plugins/catalog-graph/src/components/EntityRelationsGraph/EntityRelationsGraph.test.tsx @@ -155,6 +155,7 @@ describe('', () => { removeLocationById: jest.fn(), refreshEntity: jest.fn(), getEntityAncestors: jest.fn(), + getEntityFacets: jest.fn(), }; Wrapper = ({ children }) => ( diff --git a/plugins/catalog-graph/src/components/EntityRelationsGraph/useEntityStore.test.ts b/plugins/catalog-graph/src/components/EntityRelationsGraph/useEntityStore.test.ts index 214f1a8fb9..a5dc82eab9 100644 --- a/plugins/catalog-graph/src/components/EntityRelationsGraph/useEntityStore.test.ts +++ b/plugins/catalog-graph/src/components/EntityRelationsGraph/useEntityStore.test.ts @@ -37,6 +37,7 @@ describe('useEntityStore', () => { removeLocationById: jest.fn(), refreshEntity: jest.fn(), getEntityAncestors: jest.fn(), + getEntityFacets: jest.fn(), }; useApi.mockReturnValue(catalogApi); diff --git a/plugins/catalog-import/src/api/CatalogImportClient.test.ts b/plugins/catalog-import/src/api/CatalogImportClient.test.ts index d2c7771804..f689c0a883 100644 --- a/plugins/catalog-import/src/api/CatalogImportClient.test.ts +++ b/plugins/catalog-import/src/api/CatalogImportClient.test.ts @@ -99,6 +99,7 @@ describe('CatalogImportClient', () => { removeEntityByUid: jest.fn(), refreshEntity: jest.fn(), getEntityAncestors: jest.fn(), + getEntityFacets: jest.fn(), }; let catalogImportClient: CatalogImportClient; diff --git a/plugins/catalog-import/src/components/StepPrepareCreatePullRequest/StepPrepareCreatePullRequest.test.tsx b/plugins/catalog-import/src/components/StepPrepareCreatePullRequest/StepPrepareCreatePullRequest.test.tsx index 40c1152fe8..fc9b35136a 100644 --- a/plugins/catalog-import/src/components/StepPrepareCreatePullRequest/StepPrepareCreatePullRequest.test.tsx +++ b/plugins/catalog-import/src/components/StepPrepareCreatePullRequest/StepPrepareCreatePullRequest.test.tsx @@ -45,6 +45,7 @@ describe('', () => { removeEntityByUid: jest.fn(), refreshEntity: jest.fn(), getEntityAncestors: jest.fn(), + getEntityFacets: jest.fn(), }; const errorApi: jest.Mocked = { diff --git a/plugins/catalog-react/src/hooks/useEntityKinds.test.tsx b/plugins/catalog-react/src/hooks/useEntityKinds.test.tsx index cdcac8c194..c96301b3c4 100644 --- a/plugins/catalog-react/src/hooks/useEntityKinds.test.tsx +++ b/plugins/catalog-react/src/hooks/useEntityKinds.test.tsx @@ -16,45 +16,21 @@ import React, { PropsWithChildren } from 'react'; import { CatalogApi } from '@backstage/catalog-client'; -import { Entity } from '@backstage/catalog-model'; import { catalogApiRef } from '../api'; import { renderHook } from '@testing-library/react-hooks'; import { useEntityKinds } from './useEntityKinds'; import { TestApiProvider } from '@backstage/test-utils'; -const entities: Entity[] = [ - { - apiVersion: '1', - kind: 'Component', - metadata: { - name: 'component-1', - }, - }, - { - apiVersion: '1', - kind: 'Component', - metadata: { - name: 'component-2', - }, - }, - { - apiVersion: '1', - kind: 'Template', - metadata: { - name: 'template', - }, - }, - { - apiVersion: '1', - kind: 'System', - metadata: { - name: 'system', - }, - }, -]; - const mockCatalogApi: Partial = { - getEntities: jest.fn().mockResolvedValue({ items: entities }), + getEntityFacets: jest.fn().mockResolvedValue({ + facets: { + kind: [ + { value: 'Template', count: 2 }, + { value: 'System', count: 1 }, + { value: 'Component', count: 3 }, + ], + }, + }), }; const wrapper = ({ children }: PropsWithChildren<{}>) => { @@ -66,24 +42,10 @@ const wrapper = ({ children }: PropsWithChildren<{}>) => { }; describe('useEntityKinds', () => { - it('does not return duplicate kinds', async () => { + it('gets entity kinds', async () => { const { result, waitForValueToChange } = renderHook( () => useEntityKinds(), - { - wrapper, - }, - ); - await waitForValueToChange(() => result.current); - expect(result.current.kinds).toBeDefined(); - expect(result.current.kinds!.length).toBe(3); - }); - - it('sorts entity kinds', async () => { - const { result, waitForValueToChange } = renderHook( - () => useEntityKinds(), - { - wrapper, - }, + { wrapper }, ); await waitForValueToChange(() => result.current); expect(result.current.kinds).toEqual(['Component', 'System', 'Template']); diff --git a/plugins/catalog-react/src/hooks/useEntityKinds.ts b/plugins/catalog-react/src/hooks/useEntityKinds.ts index 1d5b2fec52..4fe68268a5 100644 --- a/plugins/catalog-react/src/hooks/useEntityKinds.ts +++ b/plugins/catalog-react/src/hooks/useEntityKinds.ts @@ -27,11 +27,9 @@ export function useEntityKinds() { loading, value: kinds, } = useAsync(async () => { - const entities = await catalogApi - .getEntities({ fields: ['kind'] }) - .then(response => response.items); - - return [...new Set(entities.map(e => e.kind))].sort(); + return await catalogApi + .getEntityFacets({ facets: ['kind'] }) + .then(response => response.facets.kind?.map(f => f.value).sort() || []); }); return { error, loading, kinds }; } diff --git a/plugins/explore/src/components/DefaultExplorePage/DefaultExplorePage.test.tsx b/plugins/explore/src/components/DefaultExplorePage/DefaultExplorePage.test.tsx index db59e28f40..53b225daaf 100644 --- a/plugins/explore/src/components/DefaultExplorePage/DefaultExplorePage.test.tsx +++ b/plugins/explore/src/components/DefaultExplorePage/DefaultExplorePage.test.tsx @@ -31,6 +31,7 @@ describe('', () => { getEntityByName: jest.fn(), refreshEntity: jest.fn(), getEntityAncestors: jest.fn(), + getEntityFacets: jest.fn(), }; const Wrapper = ({ children }: { children?: React.ReactNode }) => ( diff --git a/plugins/explore/src/components/DomainExplorerContent/DomainExplorerContent.test.tsx b/plugins/explore/src/components/DomainExplorerContent/DomainExplorerContent.test.tsx index c431bd0c6c..1310d9f31e 100644 --- a/plugins/explore/src/components/DomainExplorerContent/DomainExplorerContent.test.tsx +++ b/plugins/explore/src/components/DomainExplorerContent/DomainExplorerContent.test.tsx @@ -32,6 +32,7 @@ describe('', () => { getEntityByName: jest.fn(), refreshEntity: jest.fn(), getEntityAncestors: jest.fn(), + getEntityFacets: jest.fn(), }; const Wrapper = ({ children }: { children?: React.ReactNode }) => ( diff --git a/plugins/explore/src/components/GroupsExplorerContent/GroupsExplorerContent.test.tsx b/plugins/explore/src/components/GroupsExplorerContent/GroupsExplorerContent.test.tsx index 23ae2a3e6d..255db061aa 100644 --- a/plugins/explore/src/components/GroupsExplorerContent/GroupsExplorerContent.test.tsx +++ b/plugins/explore/src/components/GroupsExplorerContent/GroupsExplorerContent.test.tsx @@ -32,6 +32,7 @@ describe('', () => { getEntityByName: jest.fn(), refreshEntity: jest.fn(), getEntityAncestors: jest.fn(), + getEntityFacets: jest.fn(), }; const Wrapper = ({ children }: { children?: React.ReactNode }) => ( diff --git a/plugins/fossa/src/components/FossaPage/FossaPage.test.tsx b/plugins/fossa/src/components/FossaPage/FossaPage.test.tsx index df376895bc..2759afd585 100644 --- a/plugins/fossa/src/components/FossaPage/FossaPage.test.tsx +++ b/plugins/fossa/src/components/FossaPage/FossaPage.test.tsx @@ -36,6 +36,7 @@ describe('', () => { removeLocationById: jest.fn(), refreshEntity: jest.fn(), getEntityAncestors: jest.fn(), + getEntityFacets: jest.fn(), }; const fossaApi: jest.Mocked = { getFindingSummary: jest.fn(), diff --git a/plugins/todo-backend/src/service/TodoReaderService.test.ts b/plugins/todo-backend/src/service/TodoReaderService.test.ts index fbb1341e73..985687c6bb 100644 --- a/plugins/todo-backend/src/service/TodoReaderService.test.ts +++ b/plugins/todo-backend/src/service/TodoReaderService.test.ts @@ -51,6 +51,7 @@ function mockCatalogClient(entity?: Entity): jest.Mocked { removeEntityByUid: jest.fn(), refreshEntity: jest.fn(), getEntityAncestors: jest.fn(), + getEntityFacets: jest.fn(), }; if (entity) { mock.getEntityByName.mockReturnValue(entity); From 4fb71d3f6ff4f90b1947146fa79b68b415627d1a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Sun, 13 Feb 2022 21:57:07 +0100 Subject: [PATCH 194/383] update useEntityTypeFilter too MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .changeset/lucky-bulldogs-own.md | 1 + .../EntityTypePicker.test.tsx | 10 +++- .../src/hooks/useEntityTypeFilter.tsx | 46 ++++++------------- .../CatalogKindHeader.test.tsx | 11 ++++- .../TemplateTypePicker.test.tsx | 15 ++++-- 5 files changed, 45 insertions(+), 38 deletions(-) diff --git a/.changeset/lucky-bulldogs-own.md b/.changeset/lucky-bulldogs-own.md index d7b657fb83..4fb27d90b4 100644 --- a/.changeset/lucky-bulldogs-own.md +++ b/.changeset/lucky-bulldogs-own.md @@ -8,6 +8,7 @@ '@backstage/plugin-catalog-react': patch '@backstage/plugin-explore': patch '@backstage/plugin-fossa': patch +'@backstage/plugin-scaffolder': patch '@backstage/plugin-todo-backend': patch --- diff --git a/plugins/catalog-react/src/components/EntityTypePicker/EntityTypePicker.test.tsx b/plugins/catalog-react/src/components/EntityTypePicker/EntityTypePicker.test.tsx index 9ed27bbef8..4623cf5d9e 100644 --- a/plugins/catalog-react/src/components/EntityTypePicker/EntityTypePicker.test.tsx +++ b/plugins/catalog-react/src/components/EntityTypePicker/EntityTypePicker.test.tsx @@ -26,6 +26,7 @@ import { EntityKindFilter, EntityTypeFilter } from '../../filters'; import { alertApiRef } from '@backstage/core-plugin-api'; import { ApiProvider } from '@backstage/core-app-api'; import { renderWithEffects, TestApiRegistry } from '@backstage/test-utils'; +import { GetEntityFacetsResponse } from '@backstage/catalog-client'; const entities: Entity[] = [ { @@ -64,7 +65,14 @@ const apis = TestApiRegistry.from( [ catalogApiRef, { - getEntities: jest.fn().mockResolvedValue({ items: entities }), + getEntityFacets: jest.fn().mockResolvedValue({ + facets: { + 'spec.type': entities.map(e => ({ + value: (e.spec as any).type, + count: 1, + })), + }, + } as GetEntityFacetsResponse), }, ], [ diff --git a/plugins/catalog-react/src/hooks/useEntityTypeFilter.tsx b/plugins/catalog-react/src/hooks/useEntityTypeFilter.tsx index c4531d9117..00f3ecd675 100644 --- a/plugins/catalog-react/src/hooks/useEntityTypeFilter.tsx +++ b/plugins/catalog-react/src/hooks/useEntityTypeFilter.tsx @@ -17,6 +17,7 @@ import { useEffect, useMemo, useRef, useState } from 'react'; import useAsync from 'react-use/lib/useAsync'; import isEqual from 'lodash/isEqual'; +import sortBy from 'lodash/sortBy'; import { useApi } from '@backstage/core-plugin-api'; import { catalogApiRef } from '../api'; import { useEntityListProvider } from './useEntityListProvider'; @@ -67,51 +68,34 @@ export function useEntityTypeFilter(): EntityTypeReturn { const { error, loading, - value: entities, + value: facets, } = useAsync(async () => { if (kind) { const items = await catalogApi - .getEntities({ + .getEntityFacets({ filter: { kind }, - fields: ['spec.type'], + facets: ['spec.type'], }) - .then(response => response.items); + .then(response => response.facets['spec.type'] || []); return items; } return []; }, [kind, catalogApi]); - const entitiesRef = useRef(entities); + const facetsRef = useRef(facets); useEffect(() => { - const oldEntities = entitiesRef.current; - entitiesRef.current = entities; - // Delay processing hook until kind and entity load updates have settled to generate list of types; - // This prevents reseting the type filter due to saved type value from query params not matching the + const oldFacets = facetsRef.current; + facetsRef.current = facets; + // Delay processing hook until kind and facets load updates have settled to generate list of types; + // This prevents resetting the type filter due to saved type value from query params not matching the // empty set of type values while values are still being loaded; also only run this hook on changes - // to entities - if (loading || !kind || oldEntities === entities) { + // to facets + if (loading || !kind || oldFacets === facets || !facets) { return; } - // Resolve the unique set of types from returned entities; could be optimized by a new endpoint - // in the catalog-backend that does this, rather than loading entities with redundant types. - if (!entities) return; - - // Sort by entity count descending, so the most common types appear on top - const countByType = entities.reduce((acc, entity) => { - if (typeof entity.spec?.type !== 'string') return acc; - - const entityType = entity.spec.type.toLocaleLowerCase('en-US'); - if (!acc[entityType]) { - acc[entityType] = 0; - } - acc[entityType] += 1; - return acc; - }, {} as Record); - - const newTypes = Object.entries(countByType) - .sort(([, count1], [, count2]) => count2 - count1) - .map(([type]) => type); + // Sort by facet count descending, so the most common types appear on top + const newTypes = sortBy(facets, f => -f.count).map(f => f.value); setAvailableTypes(newTypes); // Update type filter to only valid values when the list of available types has changed @@ -121,7 +105,7 @@ export function useEntityTypeFilter(): EntityTypeReturn { if (!isEqual(selectedTypes, stillValidTypes)) { setSelectedTypes(stillValidTypes); } - }, [loading, kind, selectedTypes, setSelectedTypes, entities]); + }, [loading, kind, selectedTypes, setSelectedTypes, facets]); useEffect(() => { updateFilters({ diff --git a/plugins/catalog/src/components/CatalogKindHeader/CatalogKindHeader.test.tsx b/plugins/catalog/src/components/CatalogKindHeader/CatalogKindHeader.test.tsx index b320d6d220..795d57df47 100644 --- a/plugins/catalog/src/components/CatalogKindHeader/CatalogKindHeader.test.tsx +++ b/plugins/catalog/src/components/CatalogKindHeader/CatalogKindHeader.test.tsx @@ -16,6 +16,7 @@ import React from 'react'; import { fireEvent } from '@testing-library/react'; +import { GetEntityFacetsResponse } from '@backstage/catalog-client'; import { Entity } from '@backstage/catalog-model'; import { catalogApiRef, @@ -60,7 +61,15 @@ const entities: Entity[] = [ const apis = TestApiRegistry.from([ catalogApiRef, { - getEntities: jest.fn().mockResolvedValue({ items: entities }), + getEntityFacets: jest.fn().mockResolvedValue({ + facets: { + kind: [ + { value: 'Component', count: 2 }, + { value: 'Template', count: 1 }, + { value: 'System', count: 1 }, + ], + }, + } as GetEntityFacetsResponse), }, ]); diff --git a/plugins/scaffolder/src/components/TemplateTypePicker/TemplateTypePicker.test.tsx b/plugins/scaffolder/src/components/TemplateTypePicker/TemplateTypePicker.test.tsx index c70f251eac..aa6630d4aa 100644 --- a/plugins/scaffolder/src/components/TemplateTypePicker/TemplateTypePicker.test.tsx +++ b/plugins/scaffolder/src/components/TemplateTypePicker/TemplateTypePicker.test.tsx @@ -17,7 +17,6 @@ import React from 'react'; import { fireEvent } from '@testing-library/react'; import { capitalize } from 'lodash'; -import { CatalogApi } from '@backstage/catalog-client'; import { Entity } from '@backstage/catalog-model'; import { TemplateTypePicker } from './TemplateTypePicker'; import { @@ -28,6 +27,7 @@ import { import { AlertApi, alertApiRef } from '@backstage/core-plugin-api'; import { ApiProvider } from '@backstage/core-app-api'; import { renderWithEffects, TestApiRegistry } from '@backstage/test-utils'; +import { GetEntityFacetsResponse } from '@backstage/catalog-client'; const entities: Entity[] = [ { @@ -66,10 +66,15 @@ const apis = TestApiRegistry.from( [ catalogApiRef, { - getEntities: jest - .fn() - .mockImplementation(() => Promise.resolve({ items: entities })), - } as unknown as CatalogApi, + getEntityFacets: jest.fn().mockResolvedValue({ + facets: { + 'spec.type': entities.map(e => ({ + value: (e.spec as any).type, + count: 1, + })), + }, + } as GetEntityFacetsResponse), + }, ], [ alertApiRef, From b1296f1f570f8501e2c522d019fcdf70d5a96386 Mon Sep 17 00:00:00 2001 From: Johan Haals Date: Thu, 17 Feb 2022 14:05:27 +0100 Subject: [PATCH 195/383] catalog-backend: Deprecate StaticLocationProcessor Signed-off-by: Johan Haals --- .changeset/poor-tomatoes-stare.md | 5 +++++ plugins/catalog-backend/api-report.md | 2 +- .../src/ingestion/processors/StaticLocationProcessor.ts | 3 +++ 3 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 .changeset/poor-tomatoes-stare.md diff --git a/.changeset/poor-tomatoes-stare.md b/.changeset/poor-tomatoes-stare.md new file mode 100644 index 0000000000..5e45316784 --- /dev/null +++ b/.changeset/poor-tomatoes-stare.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend': patch +--- + +Deprecated `StaticLocationProcessor` which is unused and replaced by `ConfigLocationEntityProvider`. diff --git a/plugins/catalog-backend/api-report.md b/plugins/catalog-backend/api-report.md index d97df9967c..f6e4b9051c 100644 --- a/plugins/catalog-backend/api-report.md +++ b/plugins/catalog-backend/api-report.md @@ -1138,7 +1138,7 @@ export function runPeriodically(fn: () => any, delayMs: number): () => void; // Warning: (ae-missing-release-tag) "StaticLocationProcessor" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // -// @public (undocumented) +// @public @deprecated (undocumented) export class StaticLocationProcessor implements StaticLocationProcessor { constructor(staticLocations: LocationSpec[]); // (undocumented) diff --git a/plugins/catalog-backend/src/ingestion/processors/StaticLocationProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/StaticLocationProcessor.ts index 425ad6e0fe..a4bd8b5afa 100644 --- a/plugins/catalog-backend/src/ingestion/processors/StaticLocationProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/StaticLocationProcessor.ts @@ -19,6 +19,9 @@ import { Config } from '@backstage/config'; import * as result from './results'; import { CatalogProcessorEmit } from './types'; +/** + * @deprecated no longer in use, replaced by the ConfigLocationEntityProvider. + */ export class StaticLocationProcessor implements StaticLocationProcessor { static fromConfig(config: Config): StaticLocationProcessor { const locations: LocationSpec[] = []; From c1305e3ba011e380303d70f04c9225f76fec7748 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Thu, 17 Feb 2022 14:08:25 +0100 Subject: [PATCH 196/383] fleshing out the changeset MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .changeset/tiny-ads-knock.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.changeset/tiny-ads-knock.md b/.changeset/tiny-ads-knock.md index 427ed7eee1..ba24ad6906 100644 --- a/.changeset/tiny-ads-knock.md +++ b/.changeset/tiny-ads-knock.md @@ -2,4 +2,7 @@ '@backstage/catalog-client': patch --- -Added `getEntityFacets` to the client +Added `CatalogApi.getEntityFacets`. Marking this as a breaking change since it +is a non-optional addition to the API and depends on the backend being in place. +If you are mocking this interface in your tests, you will need to add an extra +`getEntityFacets: jest.fn()` or similar to that interface. From 9876e7f1729902b1965bf9a0064cab2ff0e4f1a0 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Thu, 17 Feb 2022 14:14:06 +0100 Subject: [PATCH 197/383] catalog-backend: removed unused durationText helper Signed-off-by: Patrik Oldsberg --- .changeset/dull-windows-carry.md | 5 ++++ plugins/catalog-backend/api-report.md | 5 ---- plugins/catalog-backend/src/util/index.ts | 1 - plugins/catalog-backend/src/util/timing.ts | 31 ---------------------- 4 files changed, 5 insertions(+), 37 deletions(-) create mode 100644 .changeset/dull-windows-carry.md delete mode 100644 plugins/catalog-backend/src/util/timing.ts diff --git a/.changeset/dull-windows-carry.md b/.changeset/dull-windows-carry.md new file mode 100644 index 0000000000..fb259f1e56 --- /dev/null +++ b/.changeset/dull-windows-carry.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend': minor +--- + +**BREAKING**: Removed unused `durationText` utility. diff --git a/plugins/catalog-backend/api-report.md b/plugins/catalog-backend/api-report.md index d97df9967c..00040a19e3 100644 --- a/plugins/catalog-backend/api-report.md +++ b/plugins/catalog-backend/api-report.md @@ -580,11 +580,6 @@ export type DeferredEntity = { locationKey?: string; }; -// Warning: (ae-missing-release-tag) "durationText" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export function durationText(startTimestamp: [number, number]): string; - // @public (undocumented) export type EntitiesCatalog = { entities(request?: EntitiesRequest): Promise; diff --git a/plugins/catalog-backend/src/util/index.ts b/plugins/catalog-backend/src/util/index.ts index 2e592fb8df..13a9c84b0f 100644 --- a/plugins/catalog-backend/src/util/index.ts +++ b/plugins/catalog-backend/src/util/index.ts @@ -16,4 +16,3 @@ export * from './runPeriodically'; export * from './RecursivePartial'; -export * from './timing'; diff --git a/plugins/catalog-backend/src/util/timing.ts b/plugins/catalog-backend/src/util/timing.ts deleted file mode 100644 index b5f9eb258f..0000000000 --- a/plugins/catalog-backend/src/util/timing.ts +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Returns a string with the elapsed time since the start of an operation, - * with some human friendly precision, e.g. "133ms" or "14.5s". - * - * @param startTimestamp - The timestamp (from process.hrtime()) at the start ot - * the operation - */ -export function durationText(startTimestamp: [number, number]): string { - const delta = process.hrtime(startTimestamp); - const seconds = delta[0] + delta[1] / 1e9; - if (seconds > 1) { - return `${seconds.toFixed(1)}s`; - } - return `${(seconds * 1000).toFixed(0)}ms`; -} From 2300cbb3057a78c797833856f3bc745964b9a1a7 Mon Sep 17 00:00:00 2001 From: Johan Haals Date: Thu, 17 Feb 2022 14:14:32 +0100 Subject: [PATCH 198/383] update format Signed-off-by: Johan Haals --- .changeset/large-baboons-wash.md | 2 +- .../src/components/EntitySearchBar/EntitySearchBar.tsx | 3 ++- plugins/catalog-react/src/filters.ts | 3 ++- plugins/catalog-react/src/hooks/useEntityKinds.ts | 3 ++- plugins/catalog-react/src/hooks/useEntityListProvider.tsx | 3 ++- 5 files changed, 9 insertions(+), 5 deletions(-) diff --git a/.changeset/large-baboons-wash.md b/.changeset/large-baboons-wash.md index 9c1ff24e2f..67204bb13c 100644 --- a/.changeset/large-baboons-wash.md +++ b/.changeset/large-baboons-wash.md @@ -4,4 +4,4 @@ Improved API documentation. -**Breaking change**: The individual table column factories (e.g. `createEntityRefColumn`) are now no longer available directly, but only through `EntityTable.columns`. +**BREAKING**: The individual table column factories (e.g. `createEntityRefColumn`) are now no longer available directly, but only through `EntityTable.columns`. diff --git a/plugins/catalog-react/src/components/EntitySearchBar/EntitySearchBar.tsx b/plugins/catalog-react/src/components/EntitySearchBar/EntitySearchBar.tsx index fb7279671f..f13fb1621f 100644 --- a/plugins/catalog-react/src/components/EntitySearchBar/EntitySearchBar.tsx +++ b/plugins/catalog-react/src/components/EntitySearchBar/EntitySearchBar.tsx @@ -47,7 +47,8 @@ const useStyles = makeStyles( /** * Renders search bar for filtering the entity list. - * @public */ + * @public + */ export const EntitySearchBar = () => { const classes = useStyles(); diff --git a/plugins/catalog-react/src/filters.ts b/plugins/catalog-react/src/filters.ts index ce8b63f62a..5d2c2e531b 100644 --- a/plugins/catalog-react/src/filters.ts +++ b/plugins/catalog-react/src/filters.ts @@ -35,7 +35,8 @@ export class EntityKindFilter implements EntityFilter { } } -/** Filters entities based on type +/** + * Filters entities based on type * @public */ export class EntityTypeFilter implements EntityFilter { diff --git a/plugins/catalog-react/src/hooks/useEntityKinds.ts b/plugins/catalog-react/src/hooks/useEntityKinds.ts index 6bd39be3c8..7bc0dd47ae 100644 --- a/plugins/catalog-react/src/hooks/useEntityKinds.ts +++ b/plugins/catalog-react/src/hooks/useEntityKinds.ts @@ -18,7 +18,8 @@ import useAsync from 'react-use/lib/useAsync'; import { useApi } from '@backstage/core-plugin-api'; import { catalogApiRef } from '../api'; -/** Retrieve a list of unique entity kinds present in the catalog +/** + * Retrieve a list of unique entity kinds present in the catalog * @public */ export function useEntityKinds() { diff --git a/plugins/catalog-react/src/hooks/useEntityListProvider.tsx b/plugins/catalog-react/src/hooks/useEntityListProvider.tsx index 0dda80be12..d6c4e3749a 100644 --- a/plugins/catalog-react/src/hooks/useEntityListProvider.tsx +++ b/plugins/catalog-react/src/hooks/useEntityListProvider.tsx @@ -109,7 +109,8 @@ type OutputState = { /** * Provides entities and filters for a catalog listing. - * @public */ + * @public + */ export const EntityListProvider = ({ children, }: PropsWithChildren<{}>) => { From 3bb68f0f984475da8ca3fe4d772cb5c5ca5a4778 Mon Sep 17 00:00:00 2001 From: Karan Shah Date: Thu, 17 Feb 2022 13:20:14 +0000 Subject: [PATCH 199/383] Remove coverage checks because they are wrong. https://github.com/backstage/backstage/runs/5231780015?check_suite_focus=true Given this commit which should be at 100% for the above error: https://github.com/backstage/backstage/pull/9605/commits/b84c644fb99378fecb621617f8f4d41218fd92bb Signed-off-by: Karan Shah --- plugins/airbrake-backend/package.json | 16 +--------------- plugins/airbrake/package.json | 11 +---------- 2 files changed, 2 insertions(+), 25 deletions(-) diff --git a/plugins/airbrake-backend/package.json b/plugins/airbrake-backend/package.json index 0e94e6d998..ea7065d847 100644 --- a/plugins/airbrake-backend/package.json +++ b/plugins/airbrake-backend/package.json @@ -40,19 +40,5 @@ "dist", "config.d.ts" ], - "configSchema": "config.d.ts", - "jest": { - "coverageThreshold": { - "global": { - "functions": 100, - "lines": 100, - "statements": 100 - } - }, - "coveragePathIgnorePatterns": [ - "standaloneServer.ts", - "index.ts", - "run.ts" - ] - } + "configSchema": "config.d.ts" } diff --git a/plugins/airbrake/package.json b/plugins/airbrake/package.json index 75844a483c..033e10db86 100644 --- a/plugins/airbrake/package.json +++ b/plugins/airbrake/package.json @@ -57,14 +57,5 @@ }, "files": [ "dist" - ], - "jest": { - "coverageThreshold": { - "global": { - "functions": 100, - "lines": 100, - "statements": 100 - } - } - } + ] } From bab802702996cf2de54897daea8cab8a50262421 Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 17 Feb 2022 14:22:06 +0100 Subject: [PATCH 200/383] chore: reworking the templateInfo type Signed-off-by: blam --- .../scaffolder/actions/builtin/fetch/template.test.ts | 5 ++++- .../scaffolder/tasks/HandlebarsWorkflowRunner.test.ts | 2 +- .../src/scaffolder/tasks/HandlebarsWorkflowRunner.ts | 2 +- .../scaffolder/tasks/NunjucksWorkflowRunner.test.ts | 2 +- plugins/scaffolder-backend/src/service/router.ts | 9 ++++++++- .../scaffolder/src/components/TaskPage/TaskPage.tsx | 10 ++++++++-- 6 files changed, 23 insertions(+), 7 deletions(-) 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 284b400833..3f1b338965 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 @@ -75,7 +75,10 @@ describe('fetch:template', () => { const logger = getVoidLogger(); const mockContext = (inputPatch: Partial = {}) => ({ - templateInfo: { baseUrl: 'base-url', name: 'test' }, + templateInfo: { + baseUrl: 'base-url', + entityRef: 'template:default/test-template', + }, input: { url: './skeleton', targetPath: './target', diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/HandlebarsWorkflowRunner.test.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/HandlebarsWorkflowRunner.test.ts index c3f80f0b54..59a8bf9097 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/HandlebarsWorkflowRunner.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/HandlebarsWorkflowRunner.test.ts @@ -107,7 +107,7 @@ describe('LegacyWorkflowRunner', () => { ], output: {}, values: {}, - templateInfo: { name: templateName }, + templateInfo: { entityRef: `template:default/${templateName}` }, }); await runner.execute(task); diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/HandlebarsWorkflowRunner.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/HandlebarsWorkflowRunner.ts index 135c40d95f..e525e6bd14 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/HandlebarsWorkflowRunner.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/HandlebarsWorkflowRunner.ts @@ -244,7 +244,7 @@ export class HandlebarsWorkflowRunner implements WorkflowRunner { stepOutputs[name] = value; }, // deprecated in favor of templateInfo - metadata: task.spec.templateInfo, + metadata: task.spec.metadata, templateInfo: task.spec.templateInfo, }); diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts index 0c808e620b..43a5c180be 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts @@ -176,7 +176,7 @@ describe('DefaultWorkflowRunner', () => { input: { foo: 1 }, }, ], - templateInfo: { name: templateName }, + templateInfo: { entityRef: `template:default/${templateName}` }, }); await runner.execute(task); diff --git a/plugins/scaffolder-backend/src/service/router.ts b/plugins/scaffolder-backend/src/service/router.ts index a5f5b5fa40..8a3645cf31 100644 --- a/plugins/scaffolder-backend/src/service/router.ts +++ b/plugins/scaffolder-backend/src/service/router.ts @@ -188,12 +188,15 @@ export async function createRouter( }) .post('/v2/tasks', async (req, res) => { const templateName: string = req.body.templateName; + const { kind, namespace } = { kind: 'template', namespace: 'default' }; const values = req.body.values; const token = getBearerToken(req.headers.authorization); const template = await findTemplate({ catalogApi: catalogClient, entityRef: { name: templateName, + kind, + namespace, }, token: getBearerToken(req.headers.authorization), }); @@ -234,7 +237,11 @@ export async function createRouter( metadata: { name: template.metadata?.name }, templateInfo: { - name: template.metadata?.name, + entityRef: stringifyEntityRef({ + kind, + namespace, + name: template.metadata?.name, + }), baseUrl, }, }; diff --git a/plugins/scaffolder/src/components/TaskPage/TaskPage.tsx b/plugins/scaffolder/src/components/TaskPage/TaskPage.tsx index 346a842838..a642660bac 100644 --- a/plugins/scaffolder/src/components/TaskPage/TaskPage.tsx +++ b/plugins/scaffolder/src/components/TaskPage/TaskPage.tsx @@ -14,6 +14,7 @@ * limitations under the License. */ +import { parseEntityRef } from '@backstage/catalog-model'; import { Content, ErrorPage, @@ -291,8 +292,9 @@ export const TaskPage = ({ loadingText }: TaskPageProps) => { const { output } = taskStream; const handleStartOver = () => { - if (!taskStream.task || !taskStream.task?.spec.templateInfo?.name) { + if (!taskStream.task || !taskStream.task?.spec.templateInfo?.entityRef) { navigate(generatePath(rootLink())); + return; } const formData = @@ -300,13 +302,17 @@ export const TaskPage = ({ loadingText }: TaskPageProps) => { ? taskStream.task!.spec.values : taskStream.task!.spec.parameters; + const { name } = parseEntityRef( + taskStream.task!.spec.templateInfo?.entityRef, + ); + navigate( generatePath( `${rootLink()}/templates/:templateName?${qs.stringify({ formData: JSON.stringify(formData), })}`, { - templateName: taskStream.task!.spec.templateInfo!.name, + templateName: name, }, ), ); From 269bc0a82105c5b709db8a275be41bac4bbff899 Mon Sep 17 00:00:00 2001 From: Emma Indal Date: Tue, 15 Feb 2022 14:20:32 +0100 Subject: [PATCH 201/383] add docs for how to run cypress tests Signed-off-by: Emma Indal --- packages/techdocs-cli/README.md | 52 ++++++++++++++++++++++++++------- 1 file changed, 41 insertions(+), 11 deletions(-) diff --git a/packages/techdocs-cli/README.md b/packages/techdocs-cli/README.md index 3ac423cb38..b3bc860768 100644 --- a/packages/techdocs-cli/README.md +++ b/packages/techdocs-cli/README.md @@ -40,17 +40,6 @@ yarn start yarn techdocs-cli:dev [...options] ``` -### Testing - -Running unit tests requires mkdocs to be installed locally: - -```sh -pip install mkdocs -pip install mkdocs-techdocs-core -``` - -Then run `yarn test`. - ### Use an example docs project We have created an [example documentation project](https://github.com/backstage/techdocs-container/tree/main/mock-docs) and it's shipped with [techdocs-container](https://github.com/backstage/techdocs-container) repository, for the purpose of local development. But you are free to create your own local test site. All it takes is a `docs/index.md` and `mkdocs.yml` in a directory. @@ -66,3 +55,44 @@ techdocs-cli serve # To view the raw mkdocs site (without Backstage), use: techdocs-cli serve:mkdocs ``` + +### Testing + +Running unit tests requires mkdocs to be installed locally: + +```sh +pip install mkdocs +pip install mkdocs-techdocs-core +``` + +Then run `yarn test`. + +#### Run Cypress tests + +Running cypress tests requires you to run the CLI locally against our example docs project + +Start by making sure you have the example project locally on your computer + +```sh +git clone https://github.com/backstage/techdocs-container.git +``` + +Run the local version of techdocs-cli against the example docs project + +```sh +# From the root of this repository run +# NOTE: This will build the techdocs-cli-embedded-app and copy the output into the cli dist directory +yarn build --scope @techdocs/cli + +# Navigate to the example project +cd techdocs-container/mock-docs + +# Now execute the techdocs-cli binary +../../backstage/packages/techdocs-cli/bin/techdocs-cli +``` + +Run the cypress tests + +```sh +yarn cypress:open +``` From d972a6d583f5d94c144b7ca8f3c92184c4cae2da Mon Sep 17 00:00:00 2001 From: Emma Indal Date: Tue, 15 Feb 2022 14:21:13 +0100 Subject: [PATCH 202/383] add cypress dev dependency and script to run Signed-off-by: Emma Indal --- packages/techdocs-cli/package.json | 4 +- yarn.lock | 6452 ++++++++++++---------------- 2 files changed, 2750 insertions(+), 3706 deletions(-) diff --git a/packages/techdocs-cli/package.json b/packages/techdocs-cli/package.json index 6ea2082388..d4e7372e68 100644 --- a/packages/techdocs-cli/package.json +++ b/packages/techdocs-cli/package.json @@ -30,6 +30,7 @@ "test": "backstage-cli package test --testPathIgnorePatterns=src/e2e.test.ts", "test:e2e": "backstage-cli test src/e2e.test.ts", "test:e2e:ci": "backstage-cli test --watchAll=false --ci src/e2e.test.ts", + "cypress:open": "cypress open", "prepack": "./scripts/prepack.sh" }, "bin": { @@ -44,9 +45,10 @@ "@types/node": "^14.14.32", "@types/serve-handler": "^6.1.0", "@types/webpack-env": "^1.15.3", - "techdocs-cli-embedded-app": "link:../techdocs-cli-embedded-app", + "cypress": "^7.3.0", "find-process": "^1.4.5", "nodemon": "^2.0.2", + "techdocs-cli-embedded-app": "link:../techdocs-cli-embedded-app", "ts-node": "^10.0.0" }, "files": [ diff --git a/yarn.lock b/yarn.lock index 3fe8543023..70c0e0ddfe 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9,14 +9,22 @@ dependencies: aws4 "^1.11.0" +"@ampproject/remapping@^2.1.0": + version "2.1.2" + resolved "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.2.tgz#4edca94973ded9630d20101cd8559cedb8d8bd34" + integrity sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg== + dependencies: + "@jridgewell/trace-mapping" "^0.3.0" + "@apidevtools/json-schema-ref-parser@^9.0.6": - version "9.0.6" - resolved "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-9.0.6.tgz#5d9000a3ac1fd25404da886da6b266adcd99cf1c" - integrity sha512-M3YgsLjI0lZxvrpeGVk9Ap032W6TPQkH6pRAZz81Ac3WUNF79VQooAFnp8umjvVzUmD93NkogxEwbSce7qMsUg== + version "9.0.9" + resolved "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-9.0.9.tgz#d720f9256e3609621280584f2b47ae165359268b" + integrity sha512-GBD2Le9w2+lVFoc4vswGI/TjkNIZSVp7+9xPf+X3uidBfWnAeUWmquteSyt0+VCrhNMWj/FTABISQrD3Z/YA+w== dependencies: "@jsdevtools/ono" "^7.1.3" + "@types/json-schema" "^7.0.6" call-me-maybe "^1.0.1" - js-yaml "^3.13.1" + js-yaml "^4.1.0" "@apollo/protobufjs@1.2.2": version "1.2.2" @@ -69,12 +77,12 @@ "@openapi-contrib/openapi-schema-to-json-schema" "^3.0.0" "@asyncapi/parser@^1.13.0": - version "1.13.0" - resolved "https://registry.npmjs.org/@asyncapi/parser/-/parser-1.13.0.tgz#bc20d53ba870ead9d26d5a4e3a838c5765ba8d4c" - integrity sha512-UnTYSjx2Sc+VKWIIeIV5I+ogFbN5iWzNgx1UgTXQ5oPhtNlsdIkF+w7qV8GyiraaKbBqAuwepv4xbBvlEi8hkw== + version "1.14.1" + resolved "https://registry.npmjs.org/@asyncapi/parser/-/parser-1.14.1.tgz#2f474f9d5ba1ce5b144e487fd956c0809ab11a9e" + integrity sha512-ZsNQc/HXmGDrxkYBRrGou/JrWn+FLHYdQQI0WPOylSL+LNfaWtLlIcYwbcj61l+jLLFqIe0DK/yZbmjxm0ydqw== dependencies: "@apidevtools/json-schema-ref-parser" "^9.0.6" - "@asyncapi/specs" "^2.11.0" + "@asyncapi/specs" "^2.13.0" "@fmvilas/pseudo-yaml-ast" "^0.3.1" ajv "^6.10.1" js-yaml "^3.13.1" @@ -97,24 +105,24 @@ openapi-sampler "^1.1.0" use-resize-observer "^7.0.0" -"@asyncapi/specs@^2.11.0": - version "2.12.0" - resolved "https://registry.npmjs.org/@asyncapi/specs/-/specs-2.12.0.tgz#15534ca9e518b561d33edfdfdbb234f9b274f261" - integrity sha512-X4Xkrl+9WXSk5EJhsueIxNx6ymHI5wpkw4ofetV+VRnPLNob/XO4trPSJClrL5hlknxbGADLvlrkI5d3XJ996g== +"@asyncapi/specs@^2.13.0": + version "2.13.0" + resolved "https://registry.npmjs.org/@asyncapi/specs/-/specs-2.13.0.tgz#c0f46d00e8a67c1c9ea445eb3e8bca90f7dca795" + integrity sha512-X0OrxJtzwRH8iLILO/gUTDqjGVPmagmdlgdyuBggYAoGXzF6ZuAws3XCLxtPNve5eA/0V/1puwpUYEGekI22og== "@azure/abort-controller@^1.0.0": - version "1.0.2" - resolved "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-1.0.2.tgz#822405c966b2aec16fb62c1b19d37eaccf231995" - integrity sha512-XUyTo+bcyxHEf+jlN2MXA7YU9nxVehaubngHV1MIZZaqYmZqykkoeAz/JMMEeR7t3TcyDwbFa3Zw8BZywmIx4g== + version "1.0.4" + resolved "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-1.0.4.tgz#fd3c4d46c8ed67aace42498c8e2270960250eafd" + integrity sha512-lNUmDRVGpanCsiUN3NWxFTdwmdFI53xwhkTFfHDGTYk46ca7Ind3nanJc+U6Zj9Tv+9nTCWRBscWEW1DyKOpTw== dependencies: tslib "^2.0.0" "@azure/core-asynciterator-polyfill@^1.0.0": - version "1.0.0" - resolved "https://registry.npmjs.org/@azure/core-asynciterator-polyfill/-/core-asynciterator-polyfill-1.0.0.tgz#dcccebb88406e5c76e0e1d52e8cc4c43a68b3ee7" - integrity sha512-kmv8CGrPfN9SwMwrkiBK9VTQYxdFQEGe0BmQk+M8io56P9KNzpAxcWE/1fxJj7uouwN4kXF0BHW8DNlgx+wtCg== + version "1.0.2" + resolved "https://registry.npmjs.org/@azure/core-asynciterator-polyfill/-/core-asynciterator-polyfill-1.0.2.tgz#0dd3849fb8d97f062a39db0e5cadc9ffaf861fec" + integrity sha512-3rkP4LnnlWawl0LZptJOdXNrT/fHp2eQMadoasa6afspXdpGrtPZuAQc2PD0cpgyuoXtUWyC3tv7xfntjGS5Dw== -"@azure/core-auth@^1.1.3", "@azure/core-auth@^1.3.0": +"@azure/core-auth@^1.3.0": version "1.3.2" resolved "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.3.2.tgz#6a2c248576c26df365f6c7881ca04b7f6d08e3d0" integrity sha512-7CU6DmCHIZp5ZPiZ9r3J17lTKMmYsm/zGvNkjArQwPkrLlZ1TZ+EUYfGgh2X31OLMVAQCTJZW4cXHJi02EbJnA== @@ -135,43 +143,44 @@ "@azure/logger" "^1.0.0" tslib "^2.2.0" -"@azure/core-http@^1.2.0": - version "1.2.2" - resolved "https://registry.npmjs.org/@azure/core-http/-/core-http-1.2.2.tgz#a6f7717184fd2657d3acabd1d64dfdc0bd531ce3" - integrity sha512-9eu2OcbR7e44gqBy4U1Uv8NTWgLIMwKXMEGgO2MahsJy5rdTiAhs5fJHQffPq8uX2MFh21iBODwO9R/Xlov88A== +"@azure/core-http@^2.0.0": + version "2.2.4" + resolved "https://registry.npmjs.org/@azure/core-http/-/core-http-2.2.4.tgz#df5a5b4138dbbc4299879f2fc6f257d0a5f0401e" + integrity sha512-QmmJmexXKtPyc3/rsZR/YTLDvMatzbzAypJmLzvlfxgz/SkgnqV/D4f6F2LsK6tBj1qhyp8BoXiOebiej0zz3A== dependencies: "@azure/abort-controller" "^1.0.0" - "@azure/core-auth" "^1.1.3" - "@azure/core-tracing" "1.0.0-preview.9" + "@azure/core-asynciterator-polyfill" "^1.0.0" + "@azure/core-auth" "^1.3.0" + "@azure/core-tracing" "1.0.0-preview.13" "@azure/logger" "^1.0.0" - "@opentelemetry/api" "^0.10.2" "@types/node-fetch" "^2.5.0" - "@types/tunnel" "^0.0.1" - form-data "^3.0.0" - node-fetch "^2.6.0" + "@types/tunnel" "^0.0.3" + form-data "^4.0.0" + node-fetch "^2.6.7" process "^0.11.10" tough-cookie "^4.0.0" - tslib "^2.0.0" + tslib "^2.2.0" tunnel "^0.0.6" uuid "^8.3.0" xml2js "^0.4.19" -"@azure/core-lro@^1.0.2": - version "1.0.3" - resolved "https://registry.npmjs.org/@azure/core-lro/-/core-lro-1.0.3.tgz#1ddfb4ecdb81ce87b5f5d972ffe2acbbc46e524e" - integrity sha512-Py2crJ84qx1rXkzIwfKw5Ni4WJuzVU7KAF6i1yP3ce8fbynUeu8eEWS4JGtSQgU7xv02G55iPDROifmSDbxeHA== +"@azure/core-lro@^2.2.0": + version "2.2.3" + resolved "https://registry.npmjs.org/@azure/core-lro/-/core-lro-2.2.3.tgz#3e245d37ede00f6410c1ea1fb76679dbdec627eb" + integrity sha512-UMdlR9NsqDCLTba3EUbRjfMF4gDmWvld196JmUjbz9WWhJ2XT00OR5MXeWiR+vmGT+ETiO4hHFCi2/eGO5YVtg== dependencies: "@azure/abort-controller" "^1.0.0" - "@azure/core-http" "^1.2.0" - events "^3.0.0" - tslib "^2.0.0" + "@azure/core-tracing" "1.0.0-preview.13" + "@azure/logger" "^1.0.0" + tslib "^2.2.0" "@azure/core-paging@^1.1.1": - version "1.1.3" - resolved "https://registry.npmjs.org/@azure/core-paging/-/core-paging-1.1.3.tgz#3587c9898a0530cacb64bab216d7318468aa5efc" - integrity sha512-his7Ah40ThEYORSpIAwuh6B8wkGwO/zG7gqVtmSE4WAJ46e36zUDXTKReUCLBDc6HmjjApQQxxcRFy5FruG79A== + version "1.2.1" + resolved "https://registry.npmjs.org/@azure/core-paging/-/core-paging-1.2.1.tgz#1b884f563b6e49971e9a922da3c7a20931867b54" + integrity sha512-UtH5iMlYsvg+nQYIl4UHlvvSrsBjOlRF4fs0j7mxd3rWdAStrKYrh2durOpHs5C9yZbVhsVDaisoyaf/lL1EVA== dependencies: "@azure/core-asynciterator-polyfill" "^1.0.0" + tslib "^2.2.0" "@azure/core-rest-pipeline@^1.1.0", "@azure/core-rest-pipeline@^1.5.0": version "1.5.0" @@ -188,15 +197,6 @@ tslib "^2.2.0" uuid "^8.3.0" -"@azure/core-tracing@1.0.0-preview.10": - version "1.0.0-preview.10" - resolved "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.0.0-preview.10.tgz#e7060272145dddad4486765030d1b037cd52a8ea" - integrity sha512-iIwjtMwQnsxB7cYkugMx+s4W1nfy3+pT/ceo+uW1fv4YDgYe84nh+QP0fEC9IH/3UATLSWbIBemdMHzk2APUrw== - dependencies: - "@opencensus/web-types" "0.0.7" - "@opentelemetry/api" "^0.10.2" - tslib "^2.0.0" - "@azure/core-tracing@1.0.0-preview.13": version "1.0.0-preview.13" resolved "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.0.0-preview.13.tgz#55883d40ae2042f6f1e12b17dd0c0d34c536d644" @@ -205,15 +205,6 @@ "@opentelemetry/api" "^1.0.1" tslib "^2.2.0" -"@azure/core-tracing@1.0.0-preview.9": - version "1.0.0-preview.9" - resolved "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.0.0-preview.9.tgz#84f3b85572013f9d9b85e1e5d89787aa180787eb" - integrity sha512-zczolCLJ5QG42AEPQ+Qg9SRYNUyB+yZ5dzof4YEc+dyWczO9G2sBqbAjLB7IqrsdHN2apkiB2oXeDKCsq48jug== - dependencies: - "@opencensus/web-types" "0.0.7" - "@opentelemetry/api" "^0.10.2" - tslib "^2.0.0" - "@azure/core-util@^1.0.0-beta.1": version "1.0.0-beta.1" resolved "https://registry.npmjs.org/@azure/core-util/-/core-util-1.0.0-beta.1.tgz#2efd2c74b4b0a38180369f50fe274a3c4cd36e98" @@ -244,18 +235,18 @@ uuid "^8.3.0" "@azure/logger@^1.0.0": - version "1.0.1" - resolved "https://registry.npmjs.org/@azure/logger/-/logger-1.0.1.tgz#19b333203d1b2931353d8879e814b64a7274837a" - integrity sha512-QYQeaJ+A5x6aMNu8BG5qdsVBnYBop9UMwgUvGihSjf1PdZZXB+c/oMdM2ajKwzobLBh9e9QuMQkN9iL+IxLBLA== + version "1.0.3" + resolved "https://registry.npmjs.org/@azure/logger/-/logger-1.0.3.tgz#6e36704aa51be7d4a1bae24731ea580836293c96" + integrity sha512-aK4s3Xxjrx3daZr3VylxejK3vG5ExXck5WOHDJ8in/k9AqlfIyFMMT1uG7u8mNjX+QRILTIn0/Xgschfh/dQ9g== dependencies: - tslib "^2.0.0" + tslib "^2.2.0" "@azure/msal-browser@^2.16.0": - version "2.20.0" - resolved "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-2.20.0.tgz#78e34395048c4a8842400d4168b2fb3bdd3c854e" - integrity sha512-Fl8boo38fPNlEm84fRCulbTfHJo+Z/i+1gcdJTG+PqmrkMOUVTdpkwznGh6ZQdAM34uumEgzukmqMr8lVKrytA== + version "2.22.0" + resolved "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-2.22.0.tgz#acb3ef455d8ca7b143c7fde0a638097add11a218" + integrity sha512-ZpnbnzjYGRGHjWDPOLjSp47CQvhK927+W9avtLoNNCMudqs2dBfwj76lnJwObDE7TAKmCUueTiieglBiPb1mgQ== dependencies: - "@azure/msal-common" "^5.2.0" + "@azure/msal-common" "^6.1.0" "@azure/msal-common@^4.5.1": version "4.5.1" @@ -264,37 +255,37 @@ dependencies: debug "^4.1.1" -"@azure/msal-common@^5.2.0": - version "5.2.0" - resolved "https://registry.npmjs.org/@azure/msal-common/-/msal-common-5.2.0.tgz#49440e04f4d0961fc5a1a1718fbe5e4eae2db5db" - integrity sha512-oVc4soy5MEZOp9NvCDqBk57mtiUTJXQQ8Z8S/4UiRQP8RG8snuCFQUs9xxdIfvl2FWIvgiBz+SMByyjTaRX42Q== +"@azure/msal-common@^6.1.0": + version "6.1.0" + resolved "https://registry.npmjs.org/@azure/msal-common/-/msal-common-6.1.0.tgz#00b0c625d10f4c8e48e7b48a353f7d8d20a5ceca" + integrity sha512-IGjAHttOgKDPQr0Qxx1NjABR635ZNuN7LHjxI0Y7SEA2thcaRGTccy+oaXTFabM/rZLt4F2VrPKUX4BnR9hW9g== dependencies: debug "^4.1.1" "@azure/msal-node@^1.1.0", "@azure/msal-node@^1.3.0": - version "1.4.0" - resolved "https://registry.npmjs.org/@azure/msal-node/-/msal-node-1.4.0.tgz#660685804fbdc533b10cc699f16323e27ec582c6" - integrity sha512-Ek6hqOFUi5QEAxZ55awM8y1N+9SzS9Qh8ijF4RDLtFuHzqP7xXmMnVC1lae45FlH55DUOo7dg/smuDJnb4kw6g== + version "1.6.0" + resolved "https://registry.npmjs.org/@azure/msal-node/-/msal-node-1.6.0.tgz#59d6306979581fd9379d17d22047ada143ed56df" + integrity sha512-RCPXVWsjqYZh7NB1pAJLn4ypHlLBulOjw5nKPLsJiaJJIXnN8kc6SMkK3S9/80DZCEBstvoRMz6zF50QZJUeOQ== dependencies: - "@azure/msal-common" "^5.2.0" + "@azure/msal-common" "^6.1.0" axios "^0.21.4" + https-proxy-agent "^5.0.0" jsonwebtoken "^8.5.1" uuid "^8.3.0" "@azure/storage-blob@^12.5.0": - version "12.5.0" - resolved "https://registry.npmjs.org/@azure/storage-blob/-/storage-blob-12.5.0.tgz#1ddd8837d9a15ebe355e795375d13b406f2cb496" - integrity sha512-DgoefgODst2IPkkQsNdhtYdyJgSsAZC1pEujO6aD5y7uFy5GnzhYliobSrp204jYRyK5XeJ9iiePmy/SPtTbLA== + version "12.8.0" + resolved "https://registry.npmjs.org/@azure/storage-blob/-/storage-blob-12.8.0.tgz#97b7ecc6c7b17bcbaf0281c79c16af6f512d6130" + integrity sha512-c8+Wz19xauW0bGkTCoqZH4dYfbtBniPiGiRQOn1ca6G5jsjr4azwaTk9gwjVY8r3vY2Taf95eivLzipfIfiS4A== dependencies: "@azure/abort-controller" "^1.0.0" - "@azure/core-http" "^1.2.0" - "@azure/core-lro" "^1.0.2" + "@azure/core-http" "^2.0.0" + "@azure/core-lro" "^2.2.0" "@azure/core-paging" "^1.1.1" - "@azure/core-tracing" "1.0.0-preview.10" + "@azure/core-tracing" "1.0.0-preview.13" "@azure/logger" "^1.0.0" - "@opentelemetry/api" "^0.10.2" events "^3.0.0" - tslib "^2.0.0" + tslib "^2.2.0" "@babel/code-frame@7.0.0": version "7.0.0" @@ -310,38 +301,38 @@ dependencies: "@babel/highlight" "^7.16.7" -"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.16.4", "@babel/compat-data@^7.16.8": - version "7.16.8" - resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.8.tgz#31560f9f29fdf1868de8cb55049538a1b9732a60" - integrity sha512-m7OkX0IdKLKPpBlJtF561YJal5y/jyI5fNfWbPxh2D/nbzzGI4qRyrD8xO2jB24u7l+5I2a43scCG2IrfjC50Q== +"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.16.4", "@babel/compat-data@^7.16.8", "@babel/compat-data@^7.17.0": + version "7.17.0" + resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.0.tgz#86850b8597ea6962089770952075dcaabb8dba34" + integrity sha512-392byTlpGWXMv4FbyWw3sAZ/FrW/DrwqLGXpy0mbyNe9Taqv1mg9yON5/o0cnr8XYCkFTZbC1eV+c+LAROgrng== -"@babel/core@^7.1.0", "@babel/core@^7.13.16", "@babel/core@^7.14.0", "@babel/core@^7.15.5", "@babel/core@^7.7.5": - version "7.16.12" - resolved "https://registry.npmjs.org/@babel/core/-/core-7.16.12.tgz#5edc53c1b71e54881315923ae2aedea2522bb784" - integrity sha512-dK5PtG1uiN2ikk++5OzSYsitZKny4wOCD0nrO4TqnW4BVBTQ2NGS3NgilvT/TEyxTST7LNyWV/T4tXDoD3fOgg== +"@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.13.16", "@babel/core@^7.14.0", "@babel/core@^7.15.5", "@babel/core@^7.7.5": + version "7.17.4" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.17.4.tgz#a22f1ae8999122873b3d18865e98c7a3936b8c8b" + integrity sha512-R9x5r4t4+hBqZTmioSnkrW+I6NmbojwjGT8p4G2Gw1thWbXIHGDnmGdLdFw0/7ljucdIrNRp7Npgb4CyBYzzJg== dependencies: + "@ampproject/remapping" "^2.1.0" "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.16.8" + "@babel/generator" "^7.17.3" "@babel/helper-compilation-targets" "^7.16.7" "@babel/helper-module-transforms" "^7.16.7" - "@babel/helpers" "^7.16.7" - "@babel/parser" "^7.16.12" + "@babel/helpers" "^7.17.2" + "@babel/parser" "^7.17.3" "@babel/template" "^7.16.7" - "@babel/traverse" "^7.16.10" - "@babel/types" "^7.16.8" + "@babel/traverse" "^7.17.3" + "@babel/types" "^7.17.0" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" json5 "^2.1.2" semver "^6.3.0" - source-map "^0.5.0" -"@babel/generator@^7.14.0", "@babel/generator@^7.16.0", "@babel/generator@^7.16.8": - version "7.16.8" - resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.16.8.tgz#359d44d966b8cd059d543250ce79596f792f2ebe" - integrity sha512-1ojZwE9+lOXzcWdWmO6TbUzDfqLD39CmEhN8+2cX9XkDo5yW1OpgfejfliysR2AWLpMamTiOiAp/mtroaymhpw== +"@babel/generator@^7.14.0", "@babel/generator@^7.17.3": + version "7.17.3" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.17.3.tgz#a2c30b0c4f89858cb87050c3ffdfd36bdf443200" + integrity sha512-+R6Dctil/MgUsZsZAkYgK+ADNSZzJRRy0TvY65T71z/CR854xHQ1EweBYXdfT+HNeN7w0cSJJEzgxZMv40pxsg== dependencies: - "@babel/types" "^7.16.8" + "@babel/types" "^7.17.0" jsesc "^2.5.1" source-map "^0.5.0" @@ -371,9 +362,9 @@ semver "^6.3.0" "@babel/helper-create-class-features-plugin@^7.16.10", "@babel/helper-create-class-features-plugin@^7.16.7": - version "7.16.10" - resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.10.tgz#8a6959b9cc818a88815ba3c5474619e9c0f2c21c" - integrity sha512-wDeej0pu3WN/ffTxMNCPW5UCiOav8IcLRxSIyp/9+IF2xJUM9h/OYjg0IJLHaL6F8oU8kqMz9nc1vryXhMsgXg== + version "7.17.1" + resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.1.tgz#9699f14a88833a7e055ce57dcd3ffdcd25186b21" + integrity sha512-JBdSr/LtyYIno/pNnJ75lBcqc3Z1XXujzPanHqjvvrhOA+DTceTFuJi8XjmWTZh4r3fsdfqaCMN0iZemdkxZHQ== dependencies: "@babel/helper-annotate-as-pure" "^7.16.7" "@babel/helper-environment-visitor" "^7.16.7" @@ -384,12 +375,12 @@ "@babel/helper-split-export-declaration" "^7.16.7" "@babel/helper-create-regexp-features-plugin@^7.16.7": - version "7.16.7" - resolved "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.7.tgz#0cb82b9bac358eb73bfbd73985a776bfa6b14d48" - integrity sha512-fk5A6ymfp+O5+p2yCkXAu5Kyj6v0xh0RBeNcAkYUMDvvAAoxvSKXn+Jb37t/yWFiQVDFK1ELpUTD8/aLhCPu+g== + version "7.17.0" + resolved "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz#1dcc7d40ba0c6b6b25618997c5dbfd310f186fe1" + integrity sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA== dependencies: "@babel/helper-annotate-as-pure" "^7.16.7" - regexpu-core "^4.7.1" + regexpu-core "^5.0.1" "@babel/helper-define-polyfill-provider@^0.3.1": version "0.3.1" @@ -419,7 +410,7 @@ dependencies: "@babel/types" "^7.16.7" -"@babel/helper-function-name@^7.16.0", "@babel/helper-function-name@^7.16.7": +"@babel/helper-function-name@^7.16.7": version "7.16.7" resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz#f1ec51551fb1c8956bc8dd95f38523b6cf375f8f" integrity sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA== @@ -435,7 +426,7 @@ dependencies: "@babel/types" "^7.16.7" -"@babel/helper-hoist-variables@^7.16.0", "@babel/helper-hoist-variables@^7.16.7": +"@babel/helper-hoist-variables@^7.16.7": version "7.16.7" resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz#86bcb19a77a509c7b77d0e22323ef588fa58c246" integrity sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg== @@ -516,14 +507,14 @@ dependencies: "@babel/types" "^7.16.0" -"@babel/helper-split-export-declaration@^7.16.0", "@babel/helper-split-export-declaration@^7.16.7": +"@babel/helper-split-export-declaration@^7.16.7": version "7.16.7" resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b" integrity sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw== dependencies: "@babel/types" "^7.16.7" -"@babel/helper-validator-identifier@^7.15.7", "@babel/helper-validator-identifier@^7.16.7": +"@babel/helper-validator-identifier@^7.16.7": version "7.16.7" resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== @@ -543,14 +534,14 @@ "@babel/traverse" "^7.16.8" "@babel/types" "^7.16.8" -"@babel/helpers@^7.16.7": - version "7.16.7" - resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.7.tgz#7e3504d708d50344112767c3542fc5e357fffefc" - integrity sha512-9ZDoqtfY7AuEOt3cxchfii6C7GDyyMBffktR5B2jvWv8u2+efwvpnVKXMWzNehqy68tKgAfSwfdw/lWpthS2bw== +"@babel/helpers@^7.17.2": + version "7.17.2" + resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.2.tgz#23f0a0746c8e287773ccd27c14be428891f63417" + integrity sha512-0Qu7RLR1dILozr/6M0xgj+DFPmi6Bnulgm9M8BVa9ZCWxDqlSnqt3cf8IDPB5m45sVXUZ0kuQAgUrdSFFH79fQ== dependencies: "@babel/template" "^7.16.7" - "@babel/traverse" "^7.16.7" - "@babel/types" "^7.16.7" + "@babel/traverse" "^7.17.0" + "@babel/types" "^7.17.0" "@babel/highlight@^7.0.0", "@babel/highlight@^7.16.7": version "7.16.10" @@ -561,15 +552,10 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@7.16.4": - version "7.16.4" - resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.16.4.tgz#d5f92f57cf2c74ffe9b37981c0e72fee7311372e" - integrity sha512-6V0qdPUaiVHH3RtZeLIsc+6pDhbYzHR8ogA8w+f+Wc77DuXto19g2QUwveINoS34Uw+W8/hQDGJCx+i4n7xcng== - -"@babel/parser@^7.1.0", "@babel/parser@^7.13.16", "@babel/parser@^7.14.0", "@babel/parser@^7.16.10", "@babel/parser@^7.16.12", "@babel/parser@^7.16.3", "@babel/parser@^7.16.7": - version "7.16.12" - resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.16.12.tgz#9474794f9a650cf5e2f892444227f98e28cdf8b6" - integrity sha512-VfaV15po8RiZssrkPweyvbGVSe4x2y+aciFCgn0n0/SJMR22cwofRV1mtnJQYcSB1wUTaA/X1LnA3es66MCO5A== +"@babel/parser@^7.1.0", "@babel/parser@^7.13.16", "@babel/parser@^7.14.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.16.8", "@babel/parser@^7.17.3": + version "7.17.3" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.17.3.tgz#b07702b982990bf6fdc1da5049a23fece4c5c3d0" + integrity sha512-7yJPvPV+ESz2IUTPbOL+YkIGyCqOyNIzdguKQuJGnH7bg1WTIifuM21YqokFt/THWh1AkCRn9IgoykTRCBVpzA== "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.7": version "7.16.7" @@ -662,11 +648,11 @@ "@babel/plugin-syntax-numeric-separator" "^7.10.4" "@babel/plugin-proposal-object-rest-spread@^7.0.0", "@babel/plugin-proposal-object-rest-spread@^7.16.7": - version "7.16.7" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.7.tgz#94593ef1ddf37021a25bdcb5754c4a8d534b01d8" - integrity sha512-3O0Y4+dw94HA86qSg9IHfyPktgR7q3gpNVAeiKQd+8jBKFaU5NQS1Yatgo4wY+UFNuLjvxcSmzcsHqrhgTyBUA== + version "7.17.3" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.17.3.tgz#d9eb649a54628a51701aef7e0ea3d17e2b9dd390" + integrity sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw== dependencies: - "@babel/compat-data" "^7.16.4" + "@babel/compat-data" "^7.17.0" "@babel/helper-compilation-targets" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-object-rest-spread" "^7.8.3" @@ -900,9 +886,9 @@ "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-transform-destructuring@^7.0.0", "@babel/plugin-transform-destructuring@^7.16.7": - version "7.16.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.7.tgz#ca9588ae2d63978a4c29d3f33282d8603f618e23" - integrity sha512-VqAwhTHBnu5xBVDCvrvqJbtLUa++qZaWC0Fgr2mqokBlulZARGyIvZDoqbPlPaKImQ9dKAcCzbv+ul//uqu70A== + version "7.17.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.3.tgz#c445f75819641788a27a0a3a759d9df911df6abc" + integrity sha512-dDFzegDYKlPqa72xIlbmSkly5MluLoaC1JswABGktyt6NTXSBcUuse/kWE/wvKFWJHPETpi158qJZFS3JmykJg== dependencies: "@babel/helper-plugin-utils" "^7.16.7" @@ -1063,15 +1049,15 @@ "@babel/plugin-transform-react-jsx" "^7.16.7" "@babel/plugin-transform-react-jsx@^7.0.0", "@babel/plugin-transform-react-jsx@^7.16.7": - version "7.16.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.16.7.tgz#86a6a220552afd0e4e1f0388a68a372be7add0d4" - integrity sha512-8D16ye66fxiE8m890w0BpPpngG9o9OVBBy0gH2E+2AR7qMR2ZpTYJEqLxAsoroenMId0p/wMW+Blc0meDgu0Ag== + version "7.17.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.17.3.tgz#eac1565da176ccb1a715dae0b4609858808008c1" + integrity sha512-9tjBm4O07f7mzKSIlEmPdiE6ub7kfIe6Cd+w+oQebpATfTQMAgW+YOuWxogbKVTulA+MEO7byMeIUtQ1z+z+ZQ== dependencies: "@babel/helper-annotate-as-pure" "^7.16.7" "@babel/helper-module-imports" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-jsx" "^7.16.7" - "@babel/types" "^7.16.7" + "@babel/types" "^7.17.0" "@babel/plugin-transform-react-pure-annotations@^7.16.7": version "7.16.7" @@ -1277,28 +1263,28 @@ "@babel/plugin-transform-typescript" "^7.16.7" "@babel/register@^7.13.16": - version "7.16.9" - resolved "https://registry.npmjs.org/@babel/register/-/register-7.16.9.tgz#fcfb23cfdd9ad95c9771e58183de83b513857806" - integrity sha512-jJ72wcghdRIlENfvALcyODhNoGE5j75cYHdC+aQMh6cU/P86tiiXTp9XYZct1UxUMo/4+BgQRyNZEGx0KWGS+g== + version "7.17.0" + resolved "https://registry.npmjs.org/@babel/register/-/register-7.17.0.tgz#8051e0b7cb71385be4909324f072599723a1f084" + integrity sha512-UNZsMAZ7uKoGHo1HlEXfteEOYssf64n/PNLHGqOKq/bgYcu/4LrQWAHJwSCb3BRZK8Hi5gkJdRcwrGTO2wtRCg== dependencies: clone-deep "^4.0.1" find-cache-dir "^2.0.0" make-dir "^2.1.0" - pirates "^4.0.0" + pirates "^4.0.5" source-map-support "^0.5.16" -"@babel/runtime-corejs3@^7.10.2", "@babel/runtime-corejs3@^7.11.2", "@babel/runtime-corejs3@^7.16.3": - version "7.16.8" - resolved "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.16.8.tgz#ea533d96eda6fdc76b1812248e9fbd0c11d4a1a7" - integrity sha512-3fKhuICS1lMz0plI5ktOE/yEtBRMVxplzRkdn6mJQ197XiY0JnrzYV0+Mxozq3JZ8SBV9Ecurmw1XsGbwOf+Sg== +"@babel/runtime-corejs3@^7.10.2", "@babel/runtime-corejs3@^7.11.2", "@babel/runtime-corejs3@^7.16.8": + version "7.17.2" + resolved "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.17.2.tgz#fdca2cd05fba63388babe85d349b6801b008fd13" + integrity sha512-NcKtr2epxfIrNM4VOmPKO46TvDMCBhgi2CrSHaEarrz+Plk2K5r9QemmOFTGpZaoKnWoGH5MO+CzeRsih/Fcgg== dependencies: core-js-pure "^3.20.2" regenerator-runtime "^0.13.4" -"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.0", "@babel/runtime@^7.10.1", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.4", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.14.6", "@babel/runtime@^7.15.4", "@babel/runtime@^7.16.3", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.0", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": - version "7.16.7" - resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.7.tgz#03ff99f64106588c9c403c6ecb8c3bafbbdff1fa" - integrity sha512-9E9FJowqAsytyOY6LG+1KuueckRL+aQW+mKvXRXnuFGyRAyepJPmEo9vgMfXUA6O9u3IeEdv9MAkppFcaQwogQ== +"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.0", "@babel/runtime@^7.10.1", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.4", "@babel/runtime@^7.12.5", "@babel/runtime@^7.14.6", "@babel/runtime@^7.15.4", "@babel/runtime@^7.16.3", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.0", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": + version "7.17.2" + resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.2.tgz#66f68591605e59da47523c631416b18508779941" + integrity sha512-hzeyJyMA1YGdJTuWU0e/j4wKXrU4OMFvY2MSlaI9B7VQb0r5cxTE3EAIS2Q7Tn2RIcDkRvTA/v2JsAEhxe99uw== dependencies: regenerator-runtime "^0.13.4" @@ -1311,49 +1297,26 @@ "@babel/parser" "^7.16.7" "@babel/types" "^7.16.7" -"@babel/traverse@7.16.3": - version "7.16.3" - resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.3.tgz#f63e8a938cc1b780f66d9ed3c54f532ca2d14787" - integrity sha512-eolumr1vVMjqevCpwVO99yN/LoGL0EyHiLO5I043aYQvwOJ9eR5UsZSClHVCzfhBduMAsSzgA/6AyqPjNayJag== - dependencies: - "@babel/code-frame" "^7.16.0" - "@babel/generator" "^7.16.0" - "@babel/helper-function-name" "^7.16.0" - "@babel/helper-hoist-variables" "^7.16.0" - "@babel/helper-split-export-declaration" "^7.16.0" - "@babel/parser" "^7.16.3" - "@babel/types" "^7.16.0" - debug "^4.1.0" - globals "^11.1.0" - -"@babel/traverse@^7.1.0", "@babel/traverse@^7.13.0", "@babel/traverse@^7.14.0", "@babel/traverse@^7.16.10", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.4.5": - version "7.16.10" - resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.10.tgz#448f940defbe95b5a8029975b051f75993e8239f" - integrity sha512-yzuaYXoRJBGMlBhsMJoUW7G1UmSb/eXr/JHYM/MsOJgavJibLwASijW7oXBdw3NQ6T0bW7Ty5P/VarOs9cHmqw== +"@babel/traverse@^7.1.0", "@babel/traverse@^7.13.0", "@babel/traverse@^7.14.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.17.0", "@babel/traverse@^7.17.3", "@babel/traverse@^7.4.5": + version "7.17.3" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.3.tgz#0ae0f15b27d9a92ba1f2263358ea7c4e7db47b57" + integrity sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw== dependencies: "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.16.8" + "@babel/generator" "^7.17.3" "@babel/helper-environment-visitor" "^7.16.7" "@babel/helper-function-name" "^7.16.7" "@babel/helper-hoist-variables" "^7.16.7" "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/parser" "^7.16.10" - "@babel/types" "^7.16.8" + "@babel/parser" "^7.17.3" + "@babel/types" "^7.17.0" debug "^4.1.0" globals "^11.1.0" -"@babel/types@7.16.0": - version "7.16.0" - resolved "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz#db3b313804f96aadd0b776c4823e127ad67289ba" - integrity sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg== - dependencies: - "@babel/helper-validator-identifier" "^7.15.7" - to-fast-properties "^2.0.0" - -"@babel/types@^7.0.0", "@babel/types@^7.15.6", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": - version "7.16.8" - resolved "https://registry.npmjs.org/@babel/types/-/types-7.16.8.tgz#0ba5da91dd71e0a4e7781a30f22770831062e3c1" - integrity sha512-smN2DQc5s4M7fntyjGtyIPbRJv6wW4rU/94fmYJ7PKQuZkC0qGMHXJbg6sNGt12JmVr4k5YaptI/XtiLJBnmIg== +"@babel/types@^7.0.0", "@babel/types@^7.15.6", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + version "7.17.0" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz#a826e368bccb6b3d84acd76acad5c0d87342390b" + integrity sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw== dependencies: "@babel/helper-validator-identifier" "^7.16.7" to-fast-properties "^2.0.0" @@ -1573,13 +1536,13 @@ minimist "^1.2.0" "@codemirror/highlight@^0.19.0": - version "0.19.6" - resolved "https://registry.npmjs.org/@codemirror/highlight/-/highlight-0.19.6.tgz#7f2e066f83f5649e8e0748a3abe0aaeaf64b8ac2" - integrity sha512-+eibu6on9quY8uN3xJ/n3rH+YIDLlpX7YulVmFvqAIz/ukRQ5tWaBmB7fMixHmnmRIRBRZgB8rNtonuMwZSAHQ== + version "0.19.7" + resolved "https://registry.npmjs.org/@codemirror/highlight/-/highlight-0.19.7.tgz#91a0c9994c759f5f153861e3aae74ff9e7c7c35b" + integrity sha512-3W32hBCY0pbbv/xidismw+RDMKuIag+fo4kZIbD7WoRj+Ttcaxjf+vP6RttRHXLaaqbWh031lTeON8kMlDhMYw== dependencies: "@codemirror/language" "^0.19.0" "@codemirror/rangeset" "^0.19.0" - "@codemirror/state" "^0.19.0" + "@codemirror/state" "^0.19.3" "@codemirror/view" "^0.19.0" "@lezer/common" "^0.15.0" style-mod "^4.0.0" @@ -1595,24 +1558,24 @@ "@lezer/common" "^0.15.5" "@lezer/lr" "^0.15.0" -"@codemirror/rangeset@^0.19.0": - version "0.19.2" - resolved "https://registry.npmjs.org/@codemirror/rangeset/-/rangeset-0.19.2.tgz#d7a999e4273c00fecef4aba8535a426073cdcddf" - integrity sha512-5d+X8LtmeZtfFtKrSx57bIHRUpKv2HD0b74clp4fGA7qJLLfYehF6FGkJJxJb8lKsqAga1gdjjWr0jiypmIxoQ== +"@codemirror/rangeset@^0.19.0", "@codemirror/rangeset@^0.19.5": + version "0.19.7" + resolved "https://registry.npmjs.org/@codemirror/rangeset/-/rangeset-0.19.7.tgz#c8c2662b91cf94c0b68c2d07ff281613abeb55fe" + integrity sha512-17zvQKjjUGjFCdFJAKFgiiQKFqGENmlVzS5vtiPQu1SCEs8ZKyvoFWwilM24+s21AlXxcUXulxEfOLGER5gOtg== dependencies: "@codemirror/state" "^0.19.0" "@codemirror/state@^0.19.0", "@codemirror/state@^0.19.3": - version "0.19.6" - resolved "https://registry.npmjs.org/@codemirror/state/-/state-0.19.6.tgz#d631f041d39ce41b7891b099fca26cb1fdb9763e" - integrity sha512-sqIQZE9VqwQj7D4c2oz9mfLhlT1ElAzGB5lO1lE33BPyrdNy1cJyCIOecT4cn4VeJOFrnjOeu+IftZ3zqdFETw== + version "0.19.9" + resolved "https://registry.npmjs.org/@codemirror/state/-/state-0.19.9.tgz#b797f9fbc204d6dc7975485e231693c09001b0dd" + integrity sha512-psOzDolKTZkx4CgUqhBQ8T8gBc0xN5z4gzed109aF6x7D7umpDRoimacI/O6d9UGuyl4eYuDCZmDFr2Rq7aGOw== dependencies: "@codemirror/text" "^0.19.0" "@codemirror/stream-parser@^0.19.2": - version "0.19.2" - resolved "https://registry.npmjs.org/@codemirror/stream-parser/-/stream-parser-0.19.2.tgz#793428e55aa7b9daa64cb733973e5d5e3d9a2306" - integrity sha512-hBKRQlyu8GUOrY33xZ6/1kAfNZ8ZUm6cX9a7mPx8zAAqnpz/fpksC/qJRrkg1mPMBwxm+JG4fqAwDGJ3gLVniQ== + version "0.19.6" + resolved "https://registry.npmjs.org/@codemirror/stream-parser/-/stream-parser-0.19.6.tgz#3cfba836f4e5daf6d0e87213b39027791c1e6329" + integrity sha512-dmPtoz/MR3IphxAsgywEyvSjOJCb2ikAgqp6BGIlwBEJVRiap0wFK4b3f/3DKIHUG4GezWRYQumXNyb3GNQevw== dependencies: "@codemirror/highlight" "^0.19.0" "@codemirror/language" "^0.19.0" @@ -1622,21 +1585,26 @@ "@lezer/lr" "^0.15.0" "@codemirror/text@^0.19.0": - version "0.19.5" - resolved "https://registry.npmjs.org/@codemirror/text/-/text-0.19.5.tgz#75033af2476214e79eae22b81ada618815441c18" - integrity sha512-Syu5Xc7tZzeUAM/y4fETkT0zgGr48rDG+w4U38bPwSIUr+L9S/7w2wDE1WGNzjaZPz12F6gb1gxWiSTg9ocLow== + version "0.19.6" + resolved "https://registry.npmjs.org/@codemirror/text/-/text-0.19.6.tgz#9adcbd8137f69b75518eacd30ddb16fd67bbac45" + integrity sha512-T9jnREMIygx+TPC1bOuepz18maGq/92q2a+n4qTqObKwvNMg+8cMTslb8yxeEDEq7S3kpgGWxgO1UWbQRij0dA== "@codemirror/view@^0.19.0": - version "0.19.27" - resolved "https://registry.npmjs.org/@codemirror/view/-/view-0.19.27.tgz#76e5dc19ecb4ce53e9fef1d29245040d7ff64183" - integrity sha512-Uz/LecEf7CyvMWaQBlKtbJCYn0hRnEZ2yYvuZVy9YMhmvGmES6ec7FaKw7lDFFOMLwLbBThc9kfw4DCHreHN1w== + version "0.19.43" + resolved "https://registry.npmjs.org/@codemirror/view/-/view-0.19.43.tgz#4c77039d0462a6034797a6f0d38b7f547b2edaf4" + integrity sha512-caT53/FD4gDLgb1fcYWJ935oMfRmy4DwKcDuMFg56T5M5hzf20H6nl4+NxPB5eiV7AZ1ux3zy40LQVB4U6lFxg== dependencies: - "@codemirror/rangeset" "^0.19.0" + "@codemirror/rangeset" "^0.19.5" "@codemirror/state" "^0.19.3" "@codemirror/text" "^0.19.0" style-mod "^4.0.0" w3c-keyname "^2.2.4" +"@colors/colors@1.5.0": + version "1.5.0" + resolved "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" + integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== + "@cspotcode/source-map-consumer@0.8.0": version "0.8.0" resolved "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz#33bf4b7b39c178821606f669bbc447a6a629786b" @@ -1649,16 +1617,6 @@ dependencies: "@cspotcode/source-map-consumer" "0.8.0" -"@cypress/listr-verbose-renderer@^0.4.1": - version "0.4.1" - resolved "https://registry.npmjs.org/@cypress/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz#a77492f4b11dcc7c446a34b3e28721afd33c642a" - integrity sha1-p3SS9LEdzHxEajSz4ochr9M8ZCo= - dependencies: - chalk "^1.1.3" - cli-cursor "^1.0.2" - date-fns "^1.27.2" - figures "^1.7.0" - "@cypress/request@^2.88.5": version "2.88.10" resolved "https://registry.npmjs.org/@cypress/request/-/request-2.88.10.tgz#b66d76b07f860d3a4b8d7a0604d020c662752cce" @@ -1692,9 +1650,9 @@ lodash.once "^4.1.1" "@dabh/diagnostics@^2.0.2": - version "2.0.2" - resolved "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.2.tgz#290d08f7b381b8f94607dc8f471a12c675f9db31" - integrity sha512-+A1YivoVDNNVCdfozHSR8v/jyuuLTMXwjWuxPFlFlUapXoGc+Gj9mDlTDDfrwl7rXCl2tNZ0kE8sIBO6YOn96Q== + version "2.0.3" + resolved "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.3.tgz#7f7e97ee9a725dffc7808d93668cc984e1dc477a" + integrity sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA== dependencies: colorspace "1.1.x" enabled "2.0.x" @@ -1758,14 +1716,14 @@ ts-node "^9" tslib "^2" -"@eslint/eslintrc@^1.0.5": - version "1.0.5" - resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.5.tgz#33f1b838dbf1f923bfa517e008362b78ddbbf318" - integrity sha512-BLxsnmK3KyPunz5wmCCpqy0YelEoxxGmH73Is+Z74oOTMtExcjkr3dDR6quwrjh1YspA8DH9gnX1o069KiS9AQ== +"@eslint/eslintrc@^1.1.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.1.0.tgz#583d12dbec5d4f22f333f9669f7d0b7c7815b4d3" + integrity sha512-C1DfL7XX4nPqGd6jcP01W9pVM1HYCuUkFk1432D7F0v3JSlUIeOYn9oCoi3eoLZ+iwBSb29BMFxxny0YrrEZqg== dependencies: ajv "^6.12.4" debug "^4.3.2" - espree "^9.2.0" + espree "^9.3.1" globals "^13.9.0" ignore "^4.0.6" import-fresh "^3.2.1" @@ -1781,16 +1739,16 @@ yaml-ast-parser "0.0.43" "@gar/promisify@^1.0.1": - version "1.1.2" - resolved "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.2.tgz#30aa825f11d438671d585bd44e7fd564535fc210" - integrity sha512-82cpyJyKRoQoRi+14ibCeGPu0CwypgtBAdBhq1WfvagpCZNKqwXbKwXllYSMG91DhmG4jt9gN8eP6lGOtozuaw== + version "1.1.3" + resolved "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" + integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw== "@gitbeaker/core@^34.6.0": - version "34.6.0" - resolved "https://registry.npmjs.org/@gitbeaker/core/-/core-34.6.0.tgz#f774ea98ac079ba2edf495fdef738ac3f741178b" - integrity sha512-yKF+oxffPyzOnyuHCqLGJrBHhcFHuGHtcmqKhGKtnYPfqcNYA8rt4INAHaE5wMz4ILua9b4sB8p42fki+xn6WA== + version "34.7.0" + resolved "https://registry.npmjs.org/@gitbeaker/core/-/core-34.7.0.tgz#2cd52f6c21127e9d8147ce34f0f4d98ba72acf16" + integrity sha512-D3JSvnD2PTm8pj+UJhYqOnEmszVN5ADP2LJAFe+eDnW46eEIK5Veq6kxrzy7Q6n3lvnUABKoPi8x4dnqJlmxoA== dependencies: - "@gitbeaker/requester-utils" "^34.6.0" + "@gitbeaker/requester-utils" "^34.7.0" form-data "^4.0.0" li "^1.3.0" mime "^3.0.0" @@ -1820,10 +1778,10 @@ got "11.8.3" xcase "^2.0.1" -"@gitbeaker/requester-utils@^34.6.0": - version "34.6.0" - resolved "https://registry.npmjs.org/@gitbeaker/requester-utils/-/requester-utils-34.6.0.tgz#4489009b759ca6f9a83f244453f4f610f1ac7349" - integrity sha512-H8utxbSP1kEdX0KcyVYrTDTT0A3UcPwrIV1ahyufX9ZLybYSUsA56B8Wx5kJSbWGFT1ffu2f8H2YDMwNCKKsBg== +"@gitbeaker/requester-utils@^34.7.0": + version "34.7.0" + resolved "https://registry.npmjs.org/@gitbeaker/requester-utils/-/requester-utils-34.7.0.tgz#85add7010663391e54d1b29f7c8d69da7e71d30d" + integrity sha512-SEvw6l9c+mRq33nsX/nyIIvZpUH/1CzK2tQAFj8io/5PeUWZ8oBRW1DUN7lW7uhbGdu3Sc3dA1S4H9OSvt679g== dependencies: form-data "^4.0.0" qs "^6.10.1" @@ -1838,10 +1796,10 @@ qs "^6.10.1" xcase "^2.0.1" -"@google-cloud/common@^3.7.0": - version "3.7.0" - resolved "https://registry.npmjs.org/@google-cloud/common/-/common-3.7.0.tgz#ee3fba75aeaa614978aebf8740380670026592aa" - integrity sha512-oFgpKLjH9JTOAyQd3kB36iSuH8wNSpDKb1TywlB6zcsG0xmJFxLutmfPhz03KUxRMNQOZ1K1Gc9BYvJifVnGVA== +"@google-cloud/common@^3.8.1": + version "3.9.0" + resolved "https://registry.npmjs.org/@google-cloud/common/-/common-3.9.0.tgz#d93e62d13e66edacfad1cd25b20fdbbc11d9f6dd" + integrity sha512-R9PfmCKbpOizvcLY+fz/TS4HdOQhvmf4EY4xEXvWnotGbGXujuTLJTJ2URy8BGT8TDxlh6gjjfEwjJ8McnNPIg== dependencies: "@google-cloud/projectify" "^2.0.0" "@google-cloud/promisify" "^2.0.0" @@ -1849,16 +1807,16 @@ duplexify "^4.1.1" ent "^2.2.0" extend "^3.0.2" - google-auth-library "^7.0.2" + google-auth-library "^7.9.2" retry-request "^4.2.2" teeny-request "^7.0.0" "@google-cloud/container@^2.2.0": - version "2.3.0" - resolved "https://registry.npmjs.org/@google-cloud/container/-/container-2.3.0.tgz#a23f046948dbaf8cced008d419580cb600334efc" - integrity sha512-Tv8fR7JjlZr3oh476hMsf9yqGXbb/+81n0Va1Uc3reWjAdUXCYztH3/o/HMvh6yvd06j8VLLUxyBwAIb5PtW5g== + version "2.6.0" + resolved "https://registry.npmjs.org/@google-cloud/container/-/container-2.6.0.tgz#a35da386702a9499c64c2a070ec5ba8c2ba53709" + integrity sha512-B/noTkUW+URu3WIWlxuKcd/a3ndC4IHcRRSTdiX6CY6a3E8Q44oaoLIsD8f44/a1ac6o7KoFVBPBC0KmqChm0g== dependencies: - google-gax "^2.12.0" + google-gax "^2.24.1" "@google-cloud/firestore@^5.0.2": version "5.0.2" @@ -1870,48 +1828,50 @@ google-gax "^2.24.1" protobufjs "^6.8.6" -"@google-cloud/paginator@^3.0.0": - version "3.0.5" - resolved "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-3.0.5.tgz#9d6b96c421a89bd560c1bc2c197c7611ef21db6c" - integrity sha512-N4Uk4BT1YuskfRhKXBs0n9Lg2YTROZc6IMpkO/8DIHODtm5s3xY8K5vVBo23v/2XulY3azwITQlYWgT4GdLsUw== +"@google-cloud/paginator@^3.0.7": + version "3.0.7" + resolved "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-3.0.7.tgz#fb6f8e24ec841f99defaebf62c75c2e744dd419b" + integrity sha512-jJNutk0arIQhmpUUQJPJErsojqo834KcyB6X7a1mxuic8i1tKXxde8E69IZxNZawRIlZdIK2QY4WALvlK5MzYQ== dependencies: arrify "^2.0.0" extend "^3.0.2" "@google-cloud/projectify@^2.0.0": - version "2.0.1" - resolved "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-2.0.1.tgz#13350ee609346435c795bbfe133a08dfeab78d65" - integrity sha512-ZDG38U/Yy6Zr21LaR3BTiiLtpJl6RkPS/JwoRT453G+6Q1DhlV0waNf8Lfu+YVYGIIxgKnLayJRfYlFJfiI8iQ== + version "2.1.1" + resolved "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-2.1.1.tgz#ae6af4fee02d78d044ae434699a630f8df0084ef" + integrity sha512-+rssMZHnlh0twl122gXY4/aCrk0G1acBqkHFfYddtsqpYXGxA29nj9V5V9SfC+GyOG00l650f6lG9KL+EpFEWQ== "@google-cloud/promisify@^2.0.0": - version "2.0.3" - resolved "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-2.0.3.tgz#f934b5cdc939e3c7039ff62b9caaf59a9d89e3a8" - integrity sha512-d4VSA86eL/AFTe5xtyZX+ePUjE8dIFu2T8zmdeNBSa5/kNgXPCx/o/wbFNHAGLJdGnk1vddRuMESD9HbOC8irw== + version "2.0.4" + resolved "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-2.0.4.tgz#9d8705ecb2baa41b6b2673f3a8e9b7b7e1abc52a" + integrity sha512-j8yRSSqswWi1QqUGKVEKOG03Q7qOoZP6/h2zN2YO+F5h2+DHU0bSrHCK9Y7lo2DI9fBd8qGAw795sf+3Jva4yA== "@google-cloud/storage@^5.6.0", "@google-cloud/storage@^5.8.0": - version "5.11.0" - resolved "https://registry.npmjs.org/@google-cloud/storage/-/storage-5.11.0.tgz#f2414358f093034410bb03410176a5dcabc7bdf8" - integrity sha512-UgdAwBelXpQhubYOHw0U/hDxCXIXFT2TqDc0JWUxtg+BeePZC0ohoFM/b/tJffE28AZW0urTQax5xbRNoDA1Sw== + version "5.18.2" + resolved "https://registry.npmjs.org/@google-cloud/storage/-/storage-5.18.2.tgz#0ded98a69323d253e6dd986650edc89b5c504bf9" + integrity sha512-hL/6epBF2uPt7YtJoOKI6mVxe6RsKBs7S8o2grE0bFGdQKSOngVHBcstH8jDw7aN2rXGouA2TfVTxH+VapY5cg== dependencies: - "@google-cloud/common" "^3.7.0" - "@google-cloud/paginator" "^3.0.0" + "@google-cloud/common" "^3.8.1" + "@google-cloud/paginator" "^3.0.7" "@google-cloud/promisify" "^2.0.0" + abort-controller "^3.0.0" arrify "^2.0.0" - async-retry "^1.3.1" + async-retry "^1.3.3" compressible "^2.0.12" - date-and-time "^1.0.0" + configstore "^5.0.0" + date-and-time "^2.0.0" duplexify "^4.0.0" extend "^3.0.2" - gcs-resumable-upload "^3.3.0" + gaxios "^4.0.0" get-stream "^6.0.0" + google-auth-library "^7.0.0" hash-stream-validation "^0.2.2" - mime "^2.2.0" + mime "^3.0.0" mime-types "^2.0.8" - onetime "^5.1.0" p-limit "^3.0.1" pumpify "^2.0.0" snakeize "^0.1.0" - stream-events "^1.0.1" + stream-events "^1.0.4" xdg-basedir "^4.0.0" "@graphiql/toolkit@^0.4.2": @@ -1923,12 +1883,12 @@ meros "^1.1.4" "@graphql-codegen/cli@^2.3.1": - version "2.3.1" - resolved "https://registry.npmjs.org/@graphql-codegen/cli/-/cli-2.3.1.tgz#66083293b60e3182603d70031210d59e6f1a16e5" - integrity sha512-xMSvYqFtnRXOp/sVJSyqiFTm70X8ouLXiq5o/R/D3yQtA6NNudAC+Q4oxg9/LZKnRDL6pehwdC8CNnQk0Tf7Sw== + version "2.6.2" + resolved "https://registry.npmjs.org/@graphql-codegen/cli/-/cli-2.6.2.tgz#a9aa4656141ee0998cae8c7ad7d0bf9ca8e0c9ae" + integrity sha512-UO75msoVgvLEvfjCezM09cQQqp32+mR8Ma1ACsBpr7nroFvHbgcu2ulx1cMovg4sxDBCsvd9Eq/xOOMpARUxtw== dependencies: - "@graphql-codegen/core" "2.4.0" - "@graphql-codegen/plugin-helpers" "^2.3.2" + "@graphql-codegen/core" "2.5.1" + "@graphql-codegen/plugin-helpers" "^2.4.1" "@graphql-tools/apollo-engine-loader" "^7.0.5" "@graphql-tools/code-file-loader" "^7.0.6" "@graphql-tools/git-loader" "^7.0.5" @@ -1958,7 +1918,7 @@ listr "^0.14.3" listr-update-renderer "^0.5.0" log-symbols "^4.0.0" - minimatch "^3.0.4" + minimatch "^4.0.0" mkdirp "^1.0.4" string-env-interpolation "^1.0.1" ts-log "^2.2.3" @@ -1968,32 +1928,32 @@ yaml "^1.10.0" yargs "^17.0.0" -"@graphql-codegen/core@2.4.0": - version "2.4.0" - resolved "https://registry.npmjs.org/@graphql-codegen/core/-/core-2.4.0.tgz#d94dcc088b5e117c847ce5b10c4fe1eb7325e180" - integrity sha512-5RiYE1+07jayp/3w/bkyaCXtfKNeKmRabpPP4aRi369WeH2cH37l2K8NbhkIU+zhpnhoqMID61TO56x2fKldZQ== +"@graphql-codegen/core@2.5.1": + version "2.5.1" + resolved "https://registry.npmjs.org/@graphql-codegen/core/-/core-2.5.1.tgz#e3d50d3449b8c58b74ea08e97faf656a1b7fc8a1" + integrity sha512-alctBVl2hMnBXDLwkgmnFPrZVIiBDsWJSmxJcM4GKg1PB23+xuov35GE47YAyAhQItE1B1fbYnbb1PtGiDZ4LA== dependencies: - "@graphql-codegen/plugin-helpers" "^2.3.2" + "@graphql-codegen/plugin-helpers" "^2.4.1" "@graphql-tools/schema" "^8.1.2" "@graphql-tools/utils" "^8.1.1" tslib "~2.3.0" "@graphql-codegen/graphql-modules-preset@^2.3.2": - version "2.3.2" - resolved "https://registry.npmjs.org/@graphql-codegen/graphql-modules-preset/-/graphql-modules-preset-2.3.2.tgz#df88431e4cff656799b1ab0324e0795606162389" - integrity sha512-O3PPDQejqf3rF9sHqlrl00M+BSIKJAovFWt2zkDr/D3I/XwntR4QdQDKyY9zTotHfPpgJKyxyMzthpdqPD5XUA== + version "2.3.5" + resolved "https://registry.npmjs.org/@graphql-codegen/graphql-modules-preset/-/graphql-modules-preset-2.3.5.tgz#07ef9ef6e66d4fbb76767097a7cc3cace34f8d08" + integrity sha512-y1PcTFr483Imzd346YdmNSvW3FlN4iYj4sRWCRys+WXpiFcXq+D7+1dFZvs75/9bIHoOEeQtusHHuRPy9qJVkA== dependencies: - "@graphql-codegen/plugin-helpers" "^2.3.2" - "@graphql-codegen/visitor-plugin-common" "2.5.2" - "@graphql-tools/utils" "8.5.5" + "@graphql-codegen/plugin-helpers" "^2.4.0" + "@graphql-codegen/visitor-plugin-common" "2.7.1" + "@graphql-tools/utils" "8.6.1" change-case-all "1.0.14" parse-filepath "^1.0.2" tslib "~2.3.0" -"@graphql-codegen/plugin-helpers@^2.3.2": - version "2.3.2" - resolved "https://registry.npmjs.org/@graphql-codegen/plugin-helpers/-/plugin-helpers-2.3.2.tgz#3f9ba625791901d19be733db1dfc9a3dbd0dac44" - integrity sha512-19qFA5XMAWaAY64sBljjDPYfHjE+QMk/+oalCyY13WjSlcLDvYPfmFlCNgFSsydArDELlHR8T1GMbA7C42M8TA== +"@graphql-codegen/plugin-helpers@^2.3.2", "@graphql-codegen/plugin-helpers@^2.4.0", "@graphql-codegen/plugin-helpers@^2.4.1": + version "2.4.1" + resolved "https://registry.npmjs.org/@graphql-codegen/plugin-helpers/-/plugin-helpers-2.4.1.tgz#433845a89b0b4b3a2a0e959e0a2cfe444cf7aeac" + integrity sha512-OPMma7aUnES3Dh+M0BfiNBnJLmYuH60EnbULAhufxFDn/Y2OA0Ht/LQok9beX6VN4ASZEMCOAGItJezGJr5DJw== dependencies: "@graphql-tools/utils" "^8.5.2" change-case-all "1.0.14" @@ -2012,34 +1972,34 @@ tslib "~2.3.0" "@graphql-codegen/typescript-resolvers@^2.4.3": - version "2.4.3" - resolved "https://registry.npmjs.org/@graphql-codegen/typescript-resolvers/-/typescript-resolvers-2.4.3.tgz#556dbaf23eac0ff9c321d3ce7126d96a839f793f" - integrity sha512-4m3E0zKLSXjGirZcYHHaZ0bxjy/gxvuumShFCKFmYTkHwTfqBaeh/pMhWqLkwC9wimrH6mQoPIYSQHLaF6Eqng== + version "2.5.2" + resolved "https://registry.npmjs.org/@graphql-codegen/typescript-resolvers/-/typescript-resolvers-2.5.2.tgz#dc19cc4fd8b7750269651adfa331f9f5f6e33032" + integrity sha512-iYgAttxqE/1TFcKmApwC/VzPFiPa22WYXq6XKQH8eDZUQvG2O4yG+2RfBxfPNGM5DnNkiOGBPuGipTSxV7lmaA== dependencies: - "@graphql-codegen/plugin-helpers" "^2.3.2" - "@graphql-codegen/typescript" "^2.4.2" - "@graphql-codegen/visitor-plugin-common" "2.5.2" + "@graphql-codegen/plugin-helpers" "^2.4.0" + "@graphql-codegen/typescript" "^2.4.5" + "@graphql-codegen/visitor-plugin-common" "2.7.1" "@graphql-tools/utils" "^8.1.1" auto-bind "~4.0.0" tslib "~2.3.0" -"@graphql-codegen/typescript@^2.4.2": - version "2.4.2" - resolved "https://registry.npmjs.org/@graphql-codegen/typescript/-/typescript-2.4.2.tgz#a239d5fd8f11140d5d4c81cfae7ff02054b724dc" - integrity sha512-8ajWidiFqF1KNAywtb/692SjwTyjzrDHo1sf2Q7Z+rh9qDEIrh83VHB8naT/1CefOvxj3MS6GbcsvJMizaE/AQ== +"@graphql-codegen/typescript@^2.4.2", "@graphql-codegen/typescript@^2.4.5": + version "2.4.5" + resolved "https://registry.npmjs.org/@graphql-codegen/typescript/-/typescript-2.4.5.tgz#80ca7a343511a27cd587c0b220b0a0dd99a4dc4b" + integrity sha512-Ytb8phNHKl/v/wxudsMOAV1dmzIbckWHm2J83PLNOvnu9CGEhgsd67vfe3ZoF95VU2BKSG8BXGa6uL9z2xDmuA== dependencies: - "@graphql-codegen/plugin-helpers" "^2.3.2" + "@graphql-codegen/plugin-helpers" "^2.4.0" "@graphql-codegen/schema-ast" "^2.4.1" - "@graphql-codegen/visitor-plugin-common" "2.5.2" + "@graphql-codegen/visitor-plugin-common" "2.7.1" auto-bind "~4.0.0" tslib "~2.3.0" -"@graphql-codegen/visitor-plugin-common@2.5.2": - version "2.5.2" - resolved "https://registry.npmjs.org/@graphql-codegen/visitor-plugin-common/-/visitor-plugin-common-2.5.2.tgz#90aa4add41e17bca83f1c7c8ad674f2a06065efd" - integrity sha512-qDMraPmumG+vEGAz42/asRkdgIRmQWH5HTc320UX+I6CY6eE/Ey85cgzoqeQGLV8gu4sj3UkNx/3/r79eX4u+Q== +"@graphql-codegen/visitor-plugin-common@2.7.1": + version "2.7.1" + resolved "https://registry.npmjs.org/@graphql-codegen/visitor-plugin-common/-/visitor-plugin-common-2.7.1.tgz#bdcded24d1d6f329d32b90704397d6001374b893" + integrity sha512-Ew/+0GwGwL3ZSXS0cYz6lVvE7S5SkbTr7caRpLa4FpAdLGNskCgdA1n6W5tX5c7qsaYstqlxp30hJTfgTsYS6A== dependencies: - "@graphql-codegen/plugin-helpers" "^2.3.2" + "@graphql-codegen/plugin-helpers" "^2.4.0" "@graphql-tools/optimize" "^1.0.1" "@graphql-tools/relay-operation-optimizer" "^6.3.7" "@graphql-tools/utils" "^8.3.0" @@ -2051,12 +2011,12 @@ tslib "~2.3.0" "@graphql-tools/apollo-engine-loader@^7.0.5": - version "7.2.1" - resolved "https://registry.npmjs.org/@graphql-tools/apollo-engine-loader/-/apollo-engine-loader-7.2.1.tgz#14e5d0b1032a7d882d22a7533c8969ee3fa797f2" - integrity sha512-Fj/A8+9SXPTXkpKqhcSq7O9WZuMdy5zynGrnMyewbCuw1kSfzgC4pJB76ILSPa5ajOcC5bBmmvXm+yVFVRgVMg== + version "7.2.2" + resolved "https://registry.npmjs.org/@graphql-tools/apollo-engine-loader/-/apollo-engine-loader-7.2.2.tgz#1463f5d2d95b5ca2b602b35b4922b38935013860" + integrity sha512-jrtA1IvgbaHzla9nyBngNyvajudTcQAVE3//mgrK+DoN7UpUhtoXfxTOOq2tzZN67o4a6Bv/RJsxB3rSI3NLzg== dependencies: "@graphql-tools/utils" "^8.5.1" - cross-undici-fetch "^0.0.20" + cross-undici-fetch "^0.1.19" sync-fetch "0.3.1" tslib "~2.3.0" @@ -2104,15 +2064,16 @@ tslib "~2.2.0" value-or-promise "1.0.6" -"@graphql-tools/delegate@^8.4.1", "@graphql-tools/delegate@^8.4.2": - version "8.4.2" - resolved "https://registry.npmjs.org/@graphql-tools/delegate/-/delegate-8.4.2.tgz#a61d45719855720304e3656800342cfa17d82558" - integrity sha512-CjggOhiL4WtyG2I3kux+1/p8lQxSFHBj0gwa0NxnQ6Vsnpw7Ig5VP1ovPnitFuBv2k4QdC37Nj2xv2n7DRn8fw== +"@graphql-tools/delegate@^8.4.1", "@graphql-tools/delegate@^8.5.0": + version "8.5.0" + resolved "https://registry.npmjs.org/@graphql-tools/delegate/-/delegate-8.5.0.tgz#f835b413f9277a07dd6db09d401fbec1ee76af0b" + integrity sha512-P2LLahWpv8eFrqXQi9v/NDLxLBKAugd3rmB8lxeTnCqma19ZM/VaSpvGAgGyjjHKQe097mAeBEkM/7uYbG/NFg== dependencies: "@graphql-tools/batch-execute" "^8.3.1" "@graphql-tools/schema" "^8.3.1" - "@graphql-tools/utils" "^8.5.3" + "@graphql-tools/utils" "^8.5.4" dataloader "2.0.0" + graphql-executor "0.0.18" tslib "~2.3.0" value-or-promise "1.0.11" @@ -2129,13 +2090,13 @@ unixify "^1.0.0" "@graphql-tools/github-loader@^7.0.5": - version "7.2.1" - resolved "https://registry.npmjs.org/@graphql-tools/github-loader/-/github-loader-7.2.1.tgz#53ce2bf215a0eb083ff985b213402a24f1302da2" - integrity sha512-vqwh2H11ZkAATDam/JqiP0CSqQRPUbjgCDxPdUu/xvST2QKyA4+uVXLBcpBRJc5kJCQjELijeRWVHSk9oN1q6g== + version "7.2.3" + resolved "https://registry.npmjs.org/@graphql-tools/github-loader/-/github-loader-7.2.3.tgz#1195150078e48c1b49b5106973c5ec5c928b24c1" + integrity sha512-enbMT5lWtKaLGw0PB9RL9Xg/oc9y89e6ihuxD/ZnnNXo60J1JVNtTy3+gRgXvGOX9WtJgy3UDVudDefrOHsqaA== dependencies: "@graphql-tools/graphql-tag-pluck" "^7.1.3" "@graphql-tools/utils" "^8.5.1" - cross-undici-fetch "^0.0.20" + cross-undici-fetch "^0.1.19" sync-fetch "0.3.1" tslib "~2.3.0" @@ -2160,30 +2121,22 @@ unixify "^1.0.0" "@graphql-tools/graphql-tag-pluck@^7.1.3": - version "7.1.4" - resolved "https://registry.npmjs.org/@graphql-tools/graphql-tag-pluck/-/graphql-tag-pluck-7.1.4.tgz#174b69d40988c3450d310173c5be5af894929c41" - integrity sha512-0V2AY68ip3YmJ9rnIwQGxXsokCeGD9FTQOeSLzpwG74U0VY6bphfaCp5KVGW+W5sGJchTj3HvnmvdmWZnEZWZA== + version "7.1.5" + resolved "https://registry.npmjs.org/@graphql-tools/graphql-tag-pluck/-/graphql-tag-pluck-7.1.5.tgz#229ed40f38430cdea750f112cbfad89fbc29129c" + integrity sha512-NKbFcjlg7cbK+scLXc6eVxXIhX4k8QL6lZ/y5Ju7yrpIN18k2vA78dI6W3Qb5qdftxbDNuC+kDmScZfzzxVPjQ== dependencies: - "@babel/parser" "7.16.4" - "@babel/traverse" "7.16.3" - "@babel/types" "7.16.0" + "@babel/parser" "^7.16.8" + "@babel/traverse" "^7.16.8" + "@babel/types" "^7.16.8" "@graphql-tools/utils" "^8.5.1" tslib "~2.3.0" -"@graphql-tools/import@^6.2.6": - version "6.3.1" - resolved "https://registry.npmjs.org/@graphql-tools/import/-/import-6.3.1.tgz#731c47ab6c6ac9f7994d75c76b6c2fa127d2d483" - integrity sha512-1szR19JI6WPibjYurMLdadHKZoG9C//8I/FZ0Dt4vJSbrMdVNp8WFxg4QnZrDeMG4MzZc90etsyF5ofKjcC+jw== +"@graphql-tools/import@^6.2.6", "@graphql-tools/import@^6.5.7": + version "6.6.5" + resolved "https://registry.npmjs.org/@graphql-tools/import/-/import-6.6.5.tgz#e1ec593960288ceda7d5c56c0073c702b1bdcfa0" + integrity sha512-w0/cYuhrr2apn+iGoTToCqt65x2NN2iHQyqRNk/Zw1NJ+e8/C3eKVw0jmW4pYQvSocuPxL4UCSI56SdKO7m3+Q== dependencies: - resolve-from "5.0.0" - tslib "~2.2.0" - -"@graphql-tools/import@^6.5.7": - version "6.6.1" - resolved "https://registry.npmjs.org/@graphql-tools/import/-/import-6.6.1.tgz#2a7e1ceda10103ffeb8652a48ddc47150b035485" - integrity sha512-i9WA6k+erJMci822o9w9DoX+uncVBK60LGGYW8mdbhX0l7wEubUpA000thJ1aarCusYh0u+ZT9qX0HyVPXu25Q== - dependencies: - "@graphql-tools/utils" "8.5.3" + "@graphql-tools/utils" "8.6.1" resolve-from "5.0.0" tslib "~2.3.0" @@ -2220,7 +2173,7 @@ unixify "1.0.0" valid-url "1.0.9" -"@graphql-tools/load@^7.3.0": +"@graphql-tools/load@^7.3.0", "@graphql-tools/load@^7.4.1": version "7.5.1" resolved "https://registry.npmjs.org/@graphql-tools/load/-/load-7.5.1.tgz#8c7f846d2185ddc1d44fdfbf1ed9cb678f69e40b" integrity sha512-j9XcLYZPZdl/TzzqA83qveJmwcCxgGizt5L1+C1/Z68brTEmQHLdQCOR3Ma3ewESJt6DU05kSTu2raKaunkjRg== @@ -2230,17 +2183,7 @@ p-limit "3.1.0" tslib "~2.3.0" -"@graphql-tools/load@^7.4.1": - version "7.4.1" - resolved "https://registry.npmjs.org/@graphql-tools/load/-/load-7.4.1.tgz#aa572fcef11d6028097b6ef39c13fa9d62e5a441" - integrity sha512-UvBodW5hRHpgBUBVz5K5VIhJDOTFIbRRAGD6sQ2l9J5FDKBEs3u/6JjZDzbdL96br94D5cEd2Tk6auaHpTn7mQ== - dependencies: - "@graphql-tools/schema" "8.3.1" - "@graphql-tools/utils" "^8.5.1" - p-limit "3.1.0" - tslib "~2.3.0" - -"@graphql-tools/merge@^6.0.0", "@graphql-tools/merge@^6.2.12": +"@graphql-tools/merge@6.0.0 - 6.2.14": version "6.2.14" resolved "https://registry.npmjs.org/@graphql-tools/merge/-/merge-6.2.14.tgz#694e2a2785ba47558e5665687feddd2935e9d94e" integrity sha512-RWT4Td0ROJai2eR66NHejgf8UwnXJqZxXgDWDI+7hua5vNA2OW8Mf9K1Wav1ZkjWnuRp4ztNtkZGie5ISw55ow== @@ -2249,10 +2192,19 @@ "@graphql-tools/utils" "^7.7.0" tslib "~2.2.0" +"@graphql-tools/merge@^6.2.12": + version "6.2.17" + resolved "https://registry.npmjs.org/@graphql-tools/merge/-/merge-6.2.17.tgz#4dedf87d8435a5e1091d7cc8d4f371ed1e029f1f" + integrity sha512-G5YrOew39fZf16VIrc49q3c8dBqQDD0ax5LYPiNja00xsXDi0T9zsEWVt06ApjtSdSF6HDddlu5S12QjeN8Tow== + dependencies: + "@graphql-tools/schema" "^8.0.2" + "@graphql-tools/utils" "8.0.2" + tslib "~2.3.0" + "@graphql-tools/merge@^8.2.1": - version "8.2.1" - resolved "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.2.1.tgz#bf83aa06a0cfc6a839e52a58057a84498d0d51ff" - integrity sha512-Q240kcUszhXiAYudjuJgNuLgy9CryDP3wp83NOZQezfA6h3ByYKU7xI6DiKrdjyVaGpYN3ppUmdj0uf5GaXzMA== + version "8.2.2" + resolved "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.2.2.tgz#433566c662a33f5a9c3cc5f3ce3753fb0019477a" + integrity sha512-2DyqhIOMUMKbCPqo8p6xSdll2OBcBxGdOrxlJJlFQvinsSaYqp/ct3dhAxNtzaIcvSVgXvttQqfD7O2ziFtE7Q== dependencies: "@graphql-tools/utils" "^8.5.1" tslib "~2.3.0" @@ -2268,11 +2220,11 @@ tslib "~2.3.0" "@graphql-tools/optimize@^1.0.1": - version "1.0.1" - resolved "https://registry.npmjs.org/@graphql-tools/optimize/-/optimize-1.0.1.tgz#9933fffc5a3c63f95102b1cb6076fb16ac7bb22d" - integrity sha512-cRlUNsbErYoBtzzS6zXahXeTBZGPVlPHXCpnEZ0XiK/KY/sQL96cyzak0fM/Gk6qEI9/l32MYEICjasiBQrl5w== + version "1.2.0" + resolved "https://registry.npmjs.org/@graphql-tools/optimize/-/optimize-1.2.0.tgz#292d0a269f95d04bc6d822c034569bb7e591fb26" + integrity sha512-l0PTqgHeorQdeOizUor6RB49eOAng9+abSxiC5/aHRo6hMmXVaqv5eqndlmxCpx9BkgNb3URQbK+ZZHVktkP/g== dependencies: - tslib "~2.0.1" + tslib "~2.3.0" "@graphql-tools/prisma-loader@^7.0.6": version "7.1.1" @@ -2309,7 +2261,7 @@ relay-compiler "12.0.0" tslib "~2.3.0" -"@graphql-tools/schema@8.3.1", "@graphql-tools/schema@^8.0.0", "@graphql-tools/schema@^8.1.2", "@graphql-tools/schema@^8.3.1": +"@graphql-tools/schema@8.3.1", "@graphql-tools/schema@^8.0.0", "@graphql-tools/schema@^8.0.2", "@graphql-tools/schema@^8.1.2", "@graphql-tools/schema@^8.3.1": version "8.3.1" resolved "https://registry.npmjs.org/@graphql-tools/schema/-/schema-8.3.1.tgz#1ee9da494d2da457643b3c93502b94c3c4b68c74" integrity sha512-3R0AJFe715p4GwF067G5i0KCr/XIdvSfDLvTLEiTDQ8V/hwbOHEKHKWlEBHGRQwkG5lwFQlW1aOn7VnlPERnWQ== @@ -2353,10 +2305,10 @@ valid-url "1.0.9" ws "7.4.5" -"@graphql-tools/url-loader@^7.0.11": - version "7.7.0" - resolved "https://registry.npmjs.org/@graphql-tools/url-loader/-/url-loader-7.7.0.tgz#504f0030c75b61bca4ac07da49e8cd872c316972" - integrity sha512-mBBb+aJqI4E0MVEzyfi76Pi/G6lGxGTVt/tP1YtKJly7UnonNoWOtDusdL3zIVAGhGgLsNrLbGhLDbwSd6TV6A== +"@graphql-tools/url-loader@^7.0.11", "@graphql-tools/url-loader@^7.4.2": + version "7.7.1" + resolved "https://registry.npmjs.org/@graphql-tools/url-loader/-/url-loader-7.7.1.tgz#2faabdc1d2c47edc8edc9cc938eee2767189869f" + integrity sha512-K/5amdeHtKYI976HVd/AXdSNvLL7vx5QVjMlwN0OHeYyxSgC+UOH+KkS7cshYgL13SekGu0Mxbg9ABfgQ34ECA== dependencies: "@graphql-tools/delegate" "^8.4.1" "@graphql-tools/utils" "^8.5.1" @@ -2364,7 +2316,7 @@ "@n1ru4l/graphql-live-query" "^0.9.0" "@types/websocket" "^1.0.4" "@types/ws" "^8.0.0" - cross-undici-fetch "^0.1.4" + cross-undici-fetch "^0.1.19" dset "^3.1.0" extract-files "^11.0.0" graphql-sse "^1.0.1" @@ -2378,42 +2330,17 @@ value-or-promise "^1.0.11" ws "^8.3.0" -"@graphql-tools/url-loader@^7.4.2": - version "7.5.3" - resolved "https://registry.npmjs.org/@graphql-tools/url-loader/-/url-loader-7.5.3.tgz#a594be40e3bc68d22f76746356e7f0b8117b7137" - integrity sha512-VKMRJ4TOeVIdulkCLGSBUr4stRRwOGcVRXDeoUF+86K32Ufo0H2V0lz7QwS/bCl8GXV19FMgHZCDl4BMJyOXEA== - dependencies: - "@graphql-tools/delegate" "^8.4.1" - "@graphql-tools/utils" "^8.5.1" - "@graphql-tools/wrap" "^8.3.1" - "@n1ru4l/graphql-live-query" "0.9.0" - "@types/websocket" "1.0.4" - "@types/ws" "^8.0.0" - cross-undici-fetch "^0.0.26" - dset "^3.1.0" - extract-files "11.0.0" - graphql-sse "^1.0.1" - graphql-ws "^5.4.1" - isomorphic-ws "4.0.1" - meros "1.1.4" - subscriptions-transport-ws "^0.11.0" - sync-fetch "0.3.1" - tslib "~2.3.0" - valid-url "1.0.9" - value-or-promise "1.0.11" - ws "8.3.0" - -"@graphql-tools/utils@8.5.3", "@graphql-tools/utils@^8.5.1", "@graphql-tools/utils@^8.5.3": - version "8.5.3" - resolved "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.5.3.tgz#404062e62cae9453501197039687749c4885356e" - integrity sha512-HDNGWFVa8QQkoQB0H1lftvaO1X5xUaUDk1zr1qDe0xN1NL0E/CrQdJ5UKLqOvH4hkqVUPxQsyOoAZFkaH6rLHg== +"@graphql-tools/utils@8.0.2": + version "8.0.2" + resolved "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.0.2.tgz#795a8383cdfdc89855707d62491c576f439f3c51" + integrity sha512-gzkavMOgbhnwkHJYg32Adv6f+LxjbQmmbdD5Hty0+CWxvaiuJq+nU6tzb/7VSU4cwhbNLx/lGu2jbCPEW1McZQ== dependencies: tslib "~2.3.0" -"@graphql-tools/utils@8.5.5": - version "8.5.5" - resolved "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.5.5.tgz#019ddb99719feb19602afdb537c06e463df674a9" - integrity sha512-y7zRXWIUI73X+9/rf/0KzrNFMlpRKFfzLiwdbIeWwgLs+NV9vfUOoVkX8luXX6LwQxhSypHATMiwZGM2ro/wJA== +"@graphql-tools/utils@8.6.1", "@graphql-tools/utils@^8.1.1", "@graphql-tools/utils@^8.3.0", "@graphql-tools/utils@^8.5.1", "@graphql-tools/utils@^8.5.2", "@graphql-tools/utils@^8.5.3", "@graphql-tools/utils@^8.5.4", "@graphql-tools/utils@^8.6.0": + version "8.6.1" + resolved "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.6.1.tgz#52c7eb108f2ca2fd01bdba8eef85077ead1bf882" + integrity sha512-uxcfHCocp4ENoIiovPxUWZEHOnbXqj3ekWc0rm7fUhW93a1xheARNHcNKhwMTR+UKXVJbTFQdGI1Rl5XdyvDBg== dependencies: tslib "~2.3.0" @@ -2426,20 +2353,6 @@ camel-case "4.1.2" tslib "~2.2.0" -"@graphql-tools/utils@^8.0.0": - version "8.6.1" - resolved "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.6.1.tgz#52c7eb108f2ca2fd01bdba8eef85077ead1bf882" - integrity sha512-uxcfHCocp4ENoIiovPxUWZEHOnbXqj3ekWc0rm7fUhW93a1xheARNHcNKhwMTR+UKXVJbTFQdGI1Rl5XdyvDBg== - dependencies: - tslib "~2.3.0" - -"@graphql-tools/utils@^8.1.1", "@graphql-tools/utils@^8.3.0", "@graphql-tools/utils@^8.5.2", "@graphql-tools/utils@^8.6.0": - version "8.6.0" - resolved "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.6.0.tgz#f424256a1f3b87d1dcf6f9f675739b2d3627be33" - integrity sha512-rnk+RHaOCeWnfekeQGRh5ycXK1ZAI7Nm0pbeLjA3SiysTdqhWyxNCp5ON4Mvtlid84OY/KB253fQq/2rotznCA== - dependencies: - tslib "~2.3.0" - "@graphql-tools/wrap@^7.0.1", "@graphql-tools/wrap@^7.0.4": version "7.0.8" resolved "https://registry.npmjs.org/@graphql-tools/wrap/-/wrap-7.0.8.tgz#ad41e487135ca3ea1ae0ea04bb3f596177fb4f50" @@ -2452,11 +2365,11 @@ value-or-promise "1.0.6" "@graphql-tools/wrap@^8.3.1": - version "8.3.2" - resolved "https://registry.npmjs.org/@graphql-tools/wrap/-/wrap-8.3.2.tgz#d3bcecb7529d071e4ecc4dfc75b9566e3da79d4f" - integrity sha512-7DcOBFB+Dd84x9dxSm7qS4iJONMyfLnCJb8A19vGPffpu4SMJ3sFcgwibKFu5l6mMUiigKgXna2RRgWI+02bKQ== + version "8.4.0" + resolved "https://registry.npmjs.org/@graphql-tools/wrap/-/wrap-8.4.0.tgz#8fb2aa950ab68abe1fb63b6d62fc5b8fc4f8b025" + integrity sha512-fPB3+UnxLIPWDfMvAfBQnGmm8rrejeQjmCy7h9avWHBbkEELcvtrSWnKAvoKowe+WR9PVDM15XQ/PQvcddV0kQ== dependencies: - "@graphql-tools/delegate" "^8.4.2" + "@graphql-tools/delegate" "^8.5.0" "@graphql-tools/schema" "^8.3.1" "@graphql-tools/utils" "^8.5.3" tslib "~2.3.0" @@ -2467,51 +2380,51 @@ resolved "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.1.1.tgz#076d78ce99822258cf813ecc1e7fa460fa74d052" integrity sha512-NQ17ii0rK1b34VZonlmT2QMJFI70m0TRwbknO/ihlbatXyaktDhN/98vBiUU6kNBPljqGqyIrl2T4nY2RpFANg== -"@grpc/grpc-js@~1.4.0": - version "1.4.5" - resolved "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.4.5.tgz#0cd840b47180624eeedf066f2cdc422d052401f8" - integrity sha512-A6cOzSu7dqXZ7rzvh/9JZf+Jg/MOpLEMP0IdT8pT8hrWJZ6TB4ydN/MRuqOtAugInJe/VQ9F8BPricUpYZSaZA== +"@grpc/grpc-js@~1.5.0": + version "1.5.5" + resolved "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.5.5.tgz#f850a1bb7de8a1d0bb4821aabd3655d1c928d4c6" + integrity sha512-FTd27ItHlsSG/7hp62xgI9YnqSwRbHRSVmDVR8DwOoC+6t8JhHRXe2JL0U8N9GLc0jS0HrtEbO/KP5+G0ebjLQ== dependencies: "@grpc/proto-loader" "^0.6.4" "@types/node" ">=12.12.47" "@grpc/proto-loader@^0.6.1", "@grpc/proto-loader@^0.6.4": - version "0.6.7" - resolved "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.6.7.tgz#e62a202f4cf5897bdd0e244dec1dbc80d84bdfa1" - integrity sha512-QzTPIyJxU0u+r2qGe8VMl3j/W2ryhEvBv7hc42OjYfthSj370fUrb7na65rG6w3YLZS/fb8p89iTBobfWGDgdw== + version "0.6.9" + resolved "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.6.9.tgz#4014eef366da733f8e04a9ddd7376fe8a58547b7" + integrity sha512-UlcCS8VbsU9d3XTXGiEVFonN7hXk+oMXZtoHHG2oSA1/GcDP1q6OUgs20PzHDGizzyi8ufGSUDlk3O2NyY7leg== dependencies: "@types/long" "^4.0.1" lodash.camelcase "^4.3.0" long "^4.0.0" protobufjs "^6.10.0" - yargs "^16.1.1" + yargs "^16.2.0" "@hapi/hoek@^9.0.0": - version "9.0.4" - resolved "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.0.4.tgz#e80ad4e8e8d2adc6c77d985f698447e8628b6010" - integrity sha512-EwaJS7RjoXUZ2cXXKZZxZqieGtc7RbvQhUy8FwDoMQtxWVi14tFjeFCYPZAM1mBCpOpiBpyaZbb9NeHc7eGKgw== + version "9.2.1" + resolved "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.2.1.tgz#9551142a1980503752536b5050fd99f4a7f13b17" + integrity sha512-gfta+H8aziZsm8pZa0vj04KO6biEiisppNgA1kbJvFrrWu9Vm7eaUEy76DIxsuTaWvti5fkJVhllWc6ZTE+Mdw== "@hapi/topo@^5.0.0": - version "5.0.0" - resolved "https://registry.npmjs.org/@hapi/topo/-/topo-5.0.0.tgz#c19af8577fa393a06e9c77b60995af959be721e7" - integrity sha512-tFJlT47db0kMqVm3H4nQYgn6Pwg10GTZHb1pwmSiv1K4ks6drQOtfEF5ZnPjkvC+y4/bUPHK+bc87QvLcL+WMw== + version "5.1.0" + resolved "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz#dc448e332c6c6e37a4dc02fd84ba8d44b9afb012" + integrity sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg== dependencies: "@hapi/hoek" "^9.0.0" "@hot-loader/react-dom@^16.13.0": - version "16.13.0" - resolved "https://registry.npmjs.org/@hot-loader/react-dom/-/react-dom-16.13.0.tgz#de245b42358110baf80aaf47a0592153d4047997" - integrity sha512-lJZrmkucz2MrQJTQtJobx5MICXcfQvKihszqv655p557HPi0hMOWxrNpiHv3DWD8ugNWjtWcVWqRnFvwsHq1mQ== + 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.0" + scheduler "^0.19.1" "@humanwhocodes/config-array@^0.9.2": - version "0.9.2" - resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.2.tgz#68be55c737023009dfc5fe245d51181bb6476914" - integrity sha512-UXOuFCGcwciWckOpmfKDq/GyhlTf9pN/BzG//x8p8zTOFEcGuA68ANXheFS0AGvy3qgZqLBUkMs7hqzqCKOVwA== + version "0.9.3" + resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.3.tgz#f2564c744b387775b436418491f15fce6601f63e" + integrity sha512-3xSMlXHh03hCcCmFc0rbKp3Ivt2PFEJnQUJDDMTJQ2wkECZWdq4GePs2ctc5H8zV+cHPaq8k2vU8mrQjA6iHdQ== dependencies: "@humanwhocodes/object-schema" "^1.2.1" debug "^4.1.1" @@ -2538,19 +2451,20 @@ integrity sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ== "@istanbuljs/load-nyc-config@^1.0.0": - version "1.0.0" - resolved "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.0.0.tgz#10602de5570baea82f8afbfa2630b24e7a8cfe5b" - integrity sha512-ZR0rq/f/E4f4XcgnDvtMWXCUJpi8eO0rssVhmztsZqLIEFA9UUP9zmpE0VxlM+kv/E1ul2I876Fwil2ayptDVg== + version "1.1.0" + resolved "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" + integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== dependencies: camelcase "^5.3.1" find-up "^4.1.0" + get-package-type "^0.1.0" js-yaml "^3.13.1" resolve-from "^5.0.0" "@istanbuljs/schema@^0.1.2": - version "0.1.2" - resolved "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" - integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== + version "0.1.3" + resolved "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" + integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== "@jest/console@^26.6.2": version "26.6.2" @@ -2723,22 +2637,29 @@ "@types/yargs" "^15.0.0" chalk "^4.0.0" -"@jest/types@^27.2.5": - version "27.2.5" - resolved "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz#420765c052605e75686982d24b061b4cbba22132" - integrity sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^16.0.0" - chalk "^4.0.0" - "@josephg/resolvable@^1.0.0": version "1.0.1" resolved "https://registry.npmjs.org/@josephg/resolvable/-/resolvable-1.0.1.tgz#69bc4db754d79e1a2f17a650d3466e038d94a5eb" integrity sha512-CtzORUwWTTOTqfVtHaKRJ0I1kNQd1bpn3sUh8I3nJDVY+5/M/Oe1DnEWzPQvqq/xPIIkzzzIP7mfCoAjFRvDhg== +"@jridgewell/resolve-uri@^3.0.3": + version "3.0.5" + resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz#68eb521368db76d040a6315cdb24bf2483037b9c" + integrity sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew== + +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.11" + resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz#771a1d8d744eeb71b6adb35808e1a6c7b9b8c8ec" + integrity sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg== + +"@jridgewell/trace-mapping@^0.3.0": + version "0.3.4" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz#f6a0832dffd5b8a6aaa633b7d9f8e8e94c83a0c3" + integrity sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jsdevtools/ono@^7.1.3": version "7.1.3" resolved "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz#9df03bbd7c696a5c58885c34aa06da41c8543796" @@ -2750,9 +2671,9 @@ integrity sha512-zMM9Ds+SawiUkakS7y94Ymqx+S0ORzpG3frZirN3l+UlXUmSUR7hF4wxCVqW+ei94JzV5kt0uXBcoOEAuiydrw== "@kubernetes/client-node@^0.16.0": - version "0.16.1" - resolved "https://registry.npmjs.org/@kubernetes/client-node/-/client-node-0.16.1.tgz#c78ef667579777c1a532983922807e228dbc9b90" - integrity sha512-/Ah+3gFSjXFeqDMGGTyYBKug44Eu2D2qowKLdiZqxCkHdSNgy+CNk6FU1Vy80WrTvGkF/CZr4az6O5AopAiJEw== + version "0.16.3" + resolved "https://registry.npmjs.org/@kubernetes/client-node/-/client-node-0.16.3.tgz#a26a5abbd6e45603b4f75f0baff00e19853e5be7" + integrity sha512-L7IckuyuPfhd+/Urib8MRas9D6sfKEq8IaITYcaE6LlU+Y8MeD7MTbuW6Yb2WdeRuFN8HPSS47mxPnOUNYBXEg== dependencies: "@types/js-yaml" "^4.0.1" "@types/node" "^10.12.0" @@ -2769,9 +2690,9 @@ openid-client "^4.1.1" request "^2.88.0" rfc4648 "^1.3.0" - shelljs "^0.8.4" + shelljs "^0.8.5" stream-buffers "^3.0.2" - tar "^6.0.2" + tar "^6.1.11" tmp-promise "^3.0.2" tslib "^1.9.3" underscore "^1.9.1" @@ -3449,14 +3370,14 @@ write-file-atomic "^3.0.3" "@lezer/common@^0.15.0", "@lezer/common@^0.15.5": - version "0.15.10" - resolved "https://registry.npmjs.org/@lezer/common/-/common-0.15.10.tgz#662da668f46244fb20bfaada67b43b3d0463b344" - integrity sha512-vlr+be73zTDoQBIknBVOh/633tmbQcjxUu9PIeVeYESeBK3V6TuBW96RRFg93Y2cyK9lglz241gOgSn452HFvA== + version "0.15.11" + resolved "https://registry.npmjs.org/@lezer/common/-/common-0.15.11.tgz#965b5067036305f12e8a3efc344076850be1d3a8" + integrity sha512-vv0nSdIaVCRcJ8rPuDdsrNVfBOYe/4Szr/LhF929XyDmBndLDuWiCCHooGlGlJfzELyO608AyDhVsuX/ZG36NA== "@lezer/lr@^0.15.0": - version "0.15.5" - resolved "https://registry.npmjs.org/@lezer/lr/-/lr-0.15.5.tgz#4bce44169c441d9dda7be398f5202ea65c5f1138" - integrity sha512-DEcLyhdmBxD1foQe7RegLrSlfS/XaTMGLkO5evkzHWAQKh/JnFWp7j7iNB7s2EpxzRrBCh0U+W7JDCeFhv2mng== + version "0.15.8" + resolved "https://registry.npmjs.org/@lezer/lr/-/lr-0.15.8.tgz#1564a911e62b0a0f75ca63794a6aa8c5dc63db21" + integrity sha512-bM6oE6VQZ6hIFxDNKk8bKPa14hqFrV07J/vHGOeiAbJReIaQXmkVb6xQu4MR+JBTLa5arGRyAAjJe1qaQt3Uvg== dependencies: "@lezer/common" "^0.15.0" @@ -3483,24 +3404,24 @@ read-yaml-file "^1.1.0" "@mapbox/node-pre-gyp@^1.0.0": - version "1.0.5" - resolved "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.5.tgz#2a0b32fcb416fb3f2250fd24cb2a81421a4f5950" - integrity sha512-4srsKPXWlIxp5Vbqz5uLfBN+du2fJChBoYn/f2h991WLdk7jUvcSk/McVLSv/X+xQIPI8eGD5GjrnygdyHnhPA== + version "1.0.8" + resolved "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.8.tgz#32abc8a5c624bc4e46c43d84dfb8b26d33a96f58" + integrity sha512-CMGKi28CF+qlbXh26hDe6NxCd7amqeAzEqnS6IHeO6LoaKyM/n+Xw3HT1COdq8cuioOdlKdqn/hCmqPUOMOywg== dependencies: detect-libc "^1.0.3" https-proxy-agent "^5.0.0" make-dir "^3.1.0" - node-fetch "^2.6.1" + node-fetch "^2.6.5" nopt "^5.0.0" - npmlog "^4.1.2" + npmlog "^5.0.1" rimraf "^3.0.2" - semver "^7.3.4" - tar "^6.1.0" + semver "^7.3.5" + tar "^6.1.11" "@material-table/core@^3.1.0": - version "3.1.0" - resolved "https://registry.npmjs.org/@material-table/core/-/core-3.1.0.tgz#4fc3bd1553359e628413437a4102d8469852c253" - integrity sha512-46vpm1q9v2B5t/VgaEq2JmnftTBYle1yNAX3cfdQsTRZ1iWkpG34qBkNHx/hbOauQPsm5hmeUo1KJJZdwtGL1g== + version "3.2.5" + resolved "https://registry.npmjs.org/@material-table/core/-/core-3.2.5.tgz#37b3c665bed3ded6c147ad74adb330bf49efb213" + integrity sha512-TmVN/In15faabezW3COb4Ve5+YhqxFEQnf2Q2Cz3FVXXCFqJvtu3pkRLi+7N9UJ5bvistszz6wfHeiZZY1Rf9Q== dependencies: "@babel/runtime" "^7.12.5" "@date-io/date-fns" "^1.3.13" @@ -3513,6 +3434,7 @@ prop-types "^15.7.2" react-beautiful-dnd "^13.0.0" react-double-scrollbar "0.0.15" + uuid "^3.4.0" "@material-ui/core@^4.11.0", "@material-ui/core@^4.11.3", "@material-ui/core@^4.12.1", "@material-ui/core@^4.12.2", "@material-ui/core@^4.9.13": version "4.12.3" @@ -3620,9 +3542,9 @@ react-is "^16.8.0 || ^17.0.0" "@microsoft/api-documenter@^7.15.0": - version "7.15.0" - resolved "https://registry.npmjs.org/@microsoft/api-documenter/-/api-documenter-7.15.0.tgz#e6cf24fc0e2f18a71dcf4c5c8100cc083167a81e" - integrity sha512-0KvwFamTIGZk6VE71F5gdDLxszLet0A1PEeb87RTdxr4KC0/yVFQvDyj+ck+HVr5+Exf6RyzIHfou0sgJl9SDA== + version "7.15.3" + resolved "https://registry.npmjs.org/@microsoft/api-documenter/-/api-documenter-7.15.3.tgz#2aeeb9ef95a59ad2328e7b7a3de66fa715c7eee0" + integrity sha512-tehv1f/aKwGBQp0sheQofz5NQfa61mvTdAe4IHQnVavsyyK71r+P+CVXWewznPYkqFzzVXaTdrCuNGPU5Yd3mg== dependencies: "@microsoft/api-extractor-model" "7.15.3" "@microsoft/tsdoc" "0.13.2" @@ -3665,9 +3587,9 @@ integrity sha512-W6CLUJ2eBMw3Rec70qrsEW0jOm/3twwJv21mrmj2yORiaVmVYGS4sSS5yUwvQc1ZlDLYGPnClVWmUUMagKNsfA== "@microsoft/microsoft-graph-types@^2.6.0": - version "2.13.0" - resolved "https://registry.npmjs.org/@microsoft/microsoft-graph-types/-/microsoft-graph-types-2.13.0.tgz#aa584e4897665df5a9c8869a226264cd6ec5882b" - integrity sha512-63FfWBLcyNo8tMP4oPcdqHQvk4ehuWpiUMjVLD7zJXPENIowpdwudP969AALkKzlwsjWImamdivGKd2Zc8Z1Uw== + version "2.14.0" + resolved "https://registry.npmjs.org/@microsoft/microsoft-graph-types/-/microsoft-graph-types-2.14.0.tgz#5c9ba1ad153b4a1ddeb330099e9ac55e379882c4" + integrity sha512-O4vcX6+2ivfUhDiZm/p4SIxGv+SQFe3qROcmvZpPluNAqL/Ho5/6LXysgjexvtUtNOUYXN/ZtfZdY30tlwQy+w== "@microsoft/tsdoc-config@~0.15.2": version "0.15.2" @@ -3684,10 +3606,10 @@ resolved "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.13.2.tgz#3b0efb6d3903bd49edb073696f60e90df08efb26" integrity sha512-WrHvO8PDL8wd8T2+zBGKrMwVL5IyzR3ryWUsl0PXgEV0QHup4mTLi0QcATefGI6Gx9Anu7vthPyyyLpY0EpiQg== -"@mswjs/cookies@^0.1.6": - version "0.1.6" - resolved "https://registry.npmjs.org/@mswjs/cookies/-/cookies-0.1.6.tgz#176f77034ab6d7373ae5c94bcbac36fee8869249" - integrity sha512-A53XD5TOfwhpqAmwKdPtg1dva5wrng2gH5xMvklzbd9WLTSVU953eCRa8rtrrm6G7Cy60BOGsBRN89YQK0mlKA== +"@mswjs/cookies@^0.1.6", "@mswjs/cookies@^0.1.7": + version "0.1.7" + resolved "https://registry.npmjs.org/@mswjs/cookies/-/cookies-0.1.7.tgz#d334081b2c51057a61c1dd7b76ca3cac02251651" + integrity sha512-bDg1ReMBx+PYDB4Pk7y1Q07Zz1iKIEUWQpkEXiA2lEWg9gvOZ8UBmGXilCEUvyYoRFlmr/9iXTRR69TrgSwX/Q== dependencies: "@types/set-cookie-parser" "^2.4.0" set-cookie-parser "^2.4.6" @@ -3704,35 +3626,35 @@ outvariant "^1.2.0" strict-event-emitter "^0.2.0" -"@n1ru4l/graphql-live-query@0.9.0", "@n1ru4l/graphql-live-query@^0.9.0": +"@n1ru4l/graphql-live-query@^0.9.0": version "0.9.0" resolved "https://registry.npmjs.org/@n1ru4l/graphql-live-query/-/graphql-live-query-0.9.0.tgz#defaebdd31f625bee49e6745934f36312532b2bc" integrity sha512-BTpWy1e+FxN82RnLz4x1+JcEewVdfmUhV1C6/XYD5AjS7PQp9QFF7K8bCD6gzPTr2l+prvqOyVueQhFJxB1vfg== "@n1ru4l/push-pull-async-iterable-iterator@^3.1.0": - version "3.1.0" - resolved "https://registry.npmjs.org/@n1ru4l/push-pull-async-iterable-iterator/-/push-pull-async-iterable-iterator-3.1.0.tgz#be450c97d1c7cd6af1a992d53232704454345df9" - integrity sha512-K4scWxGhdQM0masHHy4gIQs2iGiLEXCrXttumknyPJqtdl4J179BjpibWSSQ1fxKdCcHgIlCTKXJU6cMM6D6Wg== + version "3.2.0" + resolved "https://registry.npmjs.org/@n1ru4l/push-pull-async-iterable-iterator/-/push-pull-async-iterable-iterator-3.2.0.tgz#c15791112db68dd9315d329d652b7e797f737655" + integrity sha512-3fkKj25kEjsfObL6IlKPAlHYPq/oYwUkkQ03zsTTiDjD7vg/RxjdiLeCydqtxHZP0JgsXL3D/X5oAkMGzuUp/Q== -"@nodelib/fs.scandir@2.1.3": - version "2.1.3" - resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz#3a582bdb53804c6ba6d146579c46e52130cf4a3b" - integrity sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw== +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== dependencies: - "@nodelib/fs.stat" "2.0.3" + "@nodelib/fs.stat" "2.0.5" run-parallel "^1.1.9" -"@nodelib/fs.stat@2.0.3", "@nodelib/fs.stat@^2.0.2": - version "2.0.3" - resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz#34dc5f4cabbc720f4e60f75a747e7ecd6c175bd3" - integrity sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA== +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== "@nodelib/fs.walk@^1.2.3": - version "1.2.4" - resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz#011b9202a70a6366e436ca5c065844528ab04976" - integrity sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ== + version "1.2.8" + resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== dependencies: - "@nodelib/fs.scandir" "2.1.3" + "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" "@npmcli/arborist@^4.0.4": @@ -3774,19 +3696,19 @@ walk-up-path "^1.0.0" "@npmcli/ci-detect@^1.0.0": - version "1.3.0" - resolved "https://registry.npmjs.org/@npmcli/ci-detect/-/ci-detect-1.3.0.tgz#6c1d2c625fb6ef1b9dea85ad0a5afcbef85ef22a" - integrity sha512-oN3y7FAROHhrAt7Rr7PnTSwrHrZVRTS2ZbyxeQwSSYD0ifwM3YNgQqbaRmjcWoPyq77MjchusjJDspbzMmip1Q== + version "1.4.0" + resolved "https://registry.npmjs.org/@npmcli/ci-detect/-/ci-detect-1.4.0.tgz#18478bbaa900c37bfbd8a2006a6262c62e8b0fe1" + integrity sha512-3BGrt6FLjqM6br5AhWRKTr3u5GIVkjRYeAFrMp3HjnfICrg4xOrVRwFavKT6tsp++bq5dluL5t8ME/Nha/6c1Q== "@npmcli/fs@^1.0.0": - version "1.0.0" - resolved "https://registry.npmjs.org/@npmcli/fs/-/fs-1.0.0.tgz#589612cfad3a6ea0feafcb901d29c63fd52db09f" - integrity sha512-8ltnOpRR/oJbOp8vaGUnipOi3bqkcW+sLHFlyXIr08OGHmVJLB1Hn7QtGXbYcpVtH1gAYZTlmDXtE4YV0+AMMQ== + version "1.1.1" + resolved "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz#72f719fe935e687c56a4faecf3c03d06ba593257" + integrity sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ== dependencies: "@gar/promisify" "^1.0.1" semver "^7.3.5" -"@npmcli/git@^2.0.1", "@npmcli/git@^2.1.0": +"@npmcli/git@^2.1.0": version "2.1.0" resolved "https://registry.npmjs.org/@npmcli/git/-/git-2.1.0.tgz#2fbd77e147530247d37f325930d457b3ebe894f6" integrity sha512-/hBFX/QG1b+N7PZBFs0bi+evgRZcK9nWBxQKZkGoXUT5hJSwl5c4d7y8/hm+NQZRPhQ67RzFaj5UM9YeyKoryw== @@ -3828,14 +3750,7 @@ pacote "^12.0.0" semver "^7.3.2" -"@npmcli/move-file@^1.0.1": - version "1.0.1" - resolved "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.0.1.tgz#de103070dac0f48ce49cf6693c23af59c0f70464" - integrity sha512-Uv6h1sT+0DrblvIrolFtbvM1FgWm+/sy4B3pvLp67Zys+thcukzS5ekn7HsZFGpWP4Q3fYJCljbWQE/XivMRLw== - dependencies: - mkdirp "^1.0.4" - -"@npmcli/move-file@^1.1.0": +"@npmcli/move-file@^1.0.1", "@npmcli/move-file@^1.1.0": version "1.1.2" resolved "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz#1a82c3e372f7cae9253eb66d72543d6b8685c674" integrity sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg== @@ -3868,15 +3783,13 @@ infer-owner "^1.0.4" "@npmcli/run-script@^1.8.2": - version "1.8.3" - resolved "https://registry.npmjs.org/@npmcli/run-script/-/run-script-1.8.3.tgz#07f440ed492400bb1114369bc37315eeaaae2bb3" - integrity sha512-ELPGWAVU/xyU+A+H3pEPj0QOvYwLTX71RArXcClFzeiyJ/b/McsZ+d0QxpznvfFtZzxGN/gz/1cvlqICR4/suQ== + version "1.8.6" + resolved "https://registry.npmjs.org/@npmcli/run-script/-/run-script-1.8.6.tgz#18314802a6660b0d4baa4c3afe7f1ad39d8c28b7" + integrity sha512-e42bVZnC6VluBZBAFEr3YrdqSspG3bgilyg4nSLBJ7TRGNCzxHa92XAHxQBLYg0BmgwO4b2mf3h/l5EkEWRn3g== dependencies: "@npmcli/node-gyp" "^1.0.2" "@npmcli/promise-spawn" "^1.3.2" - infer-owner "^1.0.4" node-gyp "^7.1.0" - puka "^1.0.1" read-package-json-fast "^2.0.1" "@npmcli/run-script@^2.0.0": @@ -3902,7 +3815,7 @@ "@octokit/types" "^6.27.1" "@octokit/webhooks" "^9.0.1" -"@octokit/auth-app@^3.3.0": +"@octokit/auth-app@^3.3.0", "@octokit/auth-app@^3.4.0": version "3.6.1" resolved "https://registry.npmjs.org/@octokit/auth-app/-/auth-app-3.6.1.tgz#aa5b02cc211175cbc28ce6c03c73373c1206d632" integrity sha512-6oa6CFphIYI7NxxHrdVOzhG7hkcKyGyYocg7lNDSJVauVOLtylg8hNJzoUyPAYKKK0yUeoZamE/lMs2tG+S+JA== @@ -3918,22 +3831,6 @@ universal-github-app-jwt "^1.0.1" universal-user-agent "^6.0.0" -"@octokit/auth-app@^3.4.0": - version "3.4.0" - resolved "https://registry.npmjs.org/@octokit/auth-app/-/auth-app-3.4.0.tgz#af9f68512e7b8dd071b49e1470a1ddf88ff6a3a3" - integrity sha512-zBVgTnLJb0uoNMGCpcDkkAbPeavHX7oAjJkaDv2nqMmsXSsCw4AbUhjl99EtJQG/JqFY/kLFHM9330Wn0k70+g== - dependencies: - "@octokit/auth-oauth-app" "^4.1.0" - "@octokit/auth-oauth-user" "^1.2.3" - "@octokit/request" "^5.4.11" - "@octokit/request-error" "^2.0.0" - "@octokit/types" "^6.0.3" - "@types/lru-cache" "^5.1.0" - deprecation "^2.3.1" - lru-cache "^6.0.0" - universal-github-app-jwt "^1.0.1" - universal-user-agent "^6.0.0" - "@octokit/auth-oauth-app@^4.0.0", "@octokit/auth-oauth-app@^4.3.0": version "4.3.0" resolved "https://registry.npmjs.org/@octokit/auth-oauth-app/-/auth-oauth-app-4.3.0.tgz#de02f184360ffd7cfccef861053784fc4410e7ea" @@ -3947,42 +3844,17 @@ btoa-lite "^1.0.0" universal-user-agent "^6.0.0" -"@octokit/auth-oauth-app@^4.1.0": - version "4.1.2" - resolved "https://registry.npmjs.org/@octokit/auth-oauth-app/-/auth-oauth-app-4.1.2.tgz#bf3ff30c260e6e9f10b950386f279befb8fe907d" - integrity sha512-bdNGNRmuDJjKoHla3mUGtkk/xcxKngnQfBEnyk+7VwMqrABKvQB1wQRSrwSWkPPUX7Lcj2ttkPAPG7+iBkMRnw== - dependencies: - "@octokit/auth-oauth-device" "^3.1.1" - "@octokit/auth-oauth-user" "^1.2.1" - "@octokit/request" "^5.3.0" - "@octokit/types" "^6.0.3" - "@types/btoa-lite" "^1.0.0" - btoa-lite "^1.0.0" - universal-user-agent "^6.0.0" - "@octokit/auth-oauth-device@^3.1.1": - version "3.1.1" - resolved "https://registry.npmjs.org/@octokit/auth-oauth-device/-/auth-oauth-device-3.1.1.tgz#380499f9a850425e2c7bdeb62afc070181c536a9" - integrity sha512-ykDZROilszXZJ6pYdl6SZ15UZniCs0zDcKgwOZpMz3U0QDHPUhFGXjHToBCAIHwbncMu+jLt4/Nw4lq3FwAw/w== + version "3.1.2" + resolved "https://registry.npmjs.org/@octokit/auth-oauth-device/-/auth-oauth-device-3.1.2.tgz#d299f51f491669f37fe7af8738f5ac921e63973c" + integrity sha512-w7Po4Ck6N2aAn2VQyKLuojruiyKROTBv4qs6IwE5rbwF7HhBXXp4A/NKmkpoFIZkiXQtM+N8QtkSck4ApYWdGg== dependencies: "@octokit/oauth-methods" "^1.1.0" "@octokit/request" "^5.4.14" "@octokit/types" "^6.10.0" universal-user-agent "^6.0.0" -"@octokit/auth-oauth-user@^1.2.1", "@octokit/auth-oauth-user@^1.2.3": - version "1.2.4" - resolved "https://registry.npmjs.org/@octokit/auth-oauth-user/-/auth-oauth-user-1.2.4.tgz#3594eb7d40cb462240e7e90849781dfa0045aed5" - integrity sha512-efOajupCZBP1veqx5w59Qey0lIud1rDUgxTRjjkQDU3eOBmkAasY1pXemDsQwW0I85jb1P/gn2dMejedVxf9kw== - dependencies: - "@octokit/auth-oauth-device" "^3.1.1" - "@octokit/oauth-methods" "^1.1.0" - "@octokit/request" "^5.4.14" - "@octokit/types" "^6.12.2" - btoa-lite "^1.0.0" - universal-user-agent "^6.0.0" - -"@octokit/auth-oauth-user@^1.3.0": +"@octokit/auth-oauth-user@^1.2.1", "@octokit/auth-oauth-user@^1.2.3", "@octokit/auth-oauth-user@^1.3.0": version "1.3.0" resolved "https://registry.npmjs.org/@octokit/auth-oauth-user/-/auth-oauth-user-1.3.0.tgz#da4e4529145181a6aa717ae858afb76ebd6e3360" integrity sha512-3QC/TAdk7onnxfyZ24BnJRfZv8TRzQK7SEFUS9vLng4Vv6Hv6I64ujdk/CUkREec8lhrwU764SZ/d+yrjjqhaQ== @@ -3995,11 +3867,11 @@ universal-user-agent "^6.0.0" "@octokit/auth-token@^2.4.4": - version "2.4.4" - resolved "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.4.4.tgz#ee31c69b01d0378c12fd3ffe406030f3d94d3b56" - integrity sha512-LNfGu3Ro9uFAYh10MUZVaT7X2CnNm2C8IDQmabx+3DygYIQjs9FwzFAHN/0t6mu5HEPhxcb1XOuxdpY82vCg2Q== + version "2.5.0" + resolved "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz#27c37ea26c205f28443402477ffd261311f21e36" + integrity sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g== dependencies: - "@octokit/types" "^6.0.0" + "@octokit/types" "^6.0.3" "@octokit/auth-unauthenticated@^2.0.0", "@octokit/auth-unauthenticated@^2.0.4": version "2.1.0" @@ -4009,18 +3881,6 @@ "@octokit/request-error" "^2.1.0" "@octokit/types" "^6.0.3" -"@octokit/core@^3.2.3": - version "3.2.4" - resolved "https://registry.npmjs.org/@octokit/core/-/core-3.2.4.tgz#5791256057a962eca972e31818f02454897fd106" - integrity sha512-d9dTsqdePBqOn7aGkyRFe7pQpCXdibSJ5SFnrTr0axevObZrpz3qkWm7t/NjYv5a66z6vhfteriaq4FRz3e0Qg== - dependencies: - "@octokit/auth-token" "^2.4.4" - "@octokit/graphql" "^4.5.8" - "@octokit/request" "^5.4.12" - "@octokit/types" "^6.0.3" - before-after-hook "^2.1.0" - universal-user-agent "^6.0.0" - "@octokit/core@^3.3.2", "@octokit/core@^3.4.0", "@octokit/core@^3.5.1": version "3.5.1" resolved "https://registry.npmjs.org/@octokit/core/-/core-3.5.1.tgz#8601ceeb1ec0e1b1b8217b960a413ed8e947809b" @@ -4035,18 +3895,18 @@ universal-user-agent "^6.0.0" "@octokit/endpoint@^6.0.1": - version "6.0.3" - resolved "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.3.tgz#dd09b599662d7e1b66374a177ab620d8cdf73487" - integrity sha512-Y900+r0gIz+cWp6ytnkibbD95ucEzDSKzlEnaWS52hbCDNcCJYO5mRmWW7HRAnDc7am+N/5Lnd8MppSaTYx1Yg== + version "6.0.12" + resolved "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz#3b4d47a4b0e79b1027fb8d75d4221928b2d05658" + integrity sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA== dependencies: - "@octokit/types" "^5.0.0" - is-plain-object "^3.0.0" - universal-user-agent "^5.0.0" + "@octokit/types" "^6.0.3" + is-plain-object "^5.0.0" + universal-user-agent "^6.0.0" "@octokit/graphql@^4.5.8": - version "4.7.0" - resolved "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.7.0.tgz#cbe12edc2bc61e9eaa5f9e5d092644c92b6fcb74" - integrity sha512-diY0qMPyQjfu4rDu3kDhJ9qIZadIm4IISO3RJSv9ajYUWJUCO0AykbgzLcg1xclxtXgzY583u3gAv66M6zz5SA== + version "4.8.0" + resolved "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz#664d9b11c0e12112cbf78e10f49a05959aa22cc3" + integrity sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg== dependencies: "@octokit/request" "^5.6.0" "@octokit/types" "^6.0.3" @@ -4067,28 +3927,12 @@ fromentries "^1.3.1" universal-user-agent "^6.0.0" -"@octokit/oauth-authorization-url@^4.2.1": +"@octokit/oauth-authorization-url@^4.2.1", "@octokit/oauth-authorization-url@^4.3.1": version "4.3.3" resolved "https://registry.npmjs.org/@octokit/oauth-authorization-url/-/oauth-authorization-url-4.3.3.tgz#6a6ef38f243086fec882b62744f39b517528dfb9" integrity sha512-lhP/t0i8EwTmayHG4dqLXgU+uPVys4WD/qUNvC+HfB1S1dyqULm5Yx9uKc1x79aP66U1Cb4OZeW8QU/RA9A4XA== -"@octokit/oauth-authorization-url@^4.3.1": - version "4.3.1" - resolved "https://registry.npmjs.org/@octokit/oauth-authorization-url/-/oauth-authorization-url-4.3.1.tgz#008d09bf427a7f61c70b5283040d60a456011a51" - integrity sha512-sI/SOEAvzRhqdzj+kJl+2ifblRve2XU6ZB36Lq25Su8R31zE3GoKToSLh64nWFnKePNi2RrdcMm94UEIQZslOw== - -"@octokit/oauth-methods@^1.1.0": - version "1.2.2" - resolved "https://registry.npmjs.org/@octokit/oauth-methods/-/oauth-methods-1.2.2.tgz#3d98c548aa2ace36ad8d0ce6593fd49dcbe103cc" - integrity sha512-CFMUMn9DdPLMcpffhKgkwIIClfv0ZToJM4qcg4O0egCoHMYkVlxl22bBoo9qCnuF1U/xn871KEXuozKIX+bA2w== - dependencies: - "@octokit/oauth-authorization-url" "^4.3.1" - "@octokit/request" "^5.4.14" - "@octokit/request-error" "^2.0.5" - "@octokit/types" "^6.12.2" - btoa-lite "^1.0.0" - -"@octokit/oauth-methods@^1.2.2": +"@octokit/oauth-methods@^1.1.0", "@octokit/oauth-methods@^1.2.2": version "1.2.6" resolved "https://registry.npmjs.org/@octokit/oauth-methods/-/oauth-methods-1.2.6.tgz#b9ac65e374b2cc55ee9dd8dcdd16558550438ea7" integrity sha512-nImHQoOtKnSNn05uk2o76om1tJWiAo4lOu2xMAHYsNr0fwopP+Dv+2MlGvaMMlFjoqVd3fF3X5ZDTKCsqgmUaQ== @@ -4104,11 +3948,6 @@ resolved "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-11.2.0.tgz#b38d7fc3736d52a1e96b230c1ccd4a58a2f400a6" integrity sha512-PBsVO+15KSlGmiI8QAzaqvsNlZlrDlyAJYcrXBCvVUxCp7VnXjkwPoFHgjEJXx3WF9BAwkA6nfCUA7i9sODzKA== -"@octokit/openapi-types@^7.3.2": - version "7.3.2" - resolved "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-7.3.2.tgz#065ce49b338043ec7f741316ce06afd4d459d944" - integrity sha512-oJhK/yhl9Gt430OrZOzAl2wJqR0No9445vmZ9Ey8GjUZUpwuu/vmEFP0TDhDXdpGDoxD6/EIFHJEcY8nHXpDTA== - "@octokit/plugin-enterprise-rest@^6.0.1": version "6.0.1" resolved "https://registry.npmjs.org/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-6.0.1.tgz#e07896739618dab8da7d4077c658003775f95437" @@ -4121,31 +3960,11 @@ dependencies: "@octokit/types" "^6.34.0" -"@octokit/plugin-paginate-rest@^2.6.2": - version "2.7.0" - resolved "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.7.0.tgz#6bb7b043c246e0654119a6ec4e72a172c9e2c7f3" - integrity sha512-+zARyncLjt9b0FjqPAbJo4ss7HOlBi1nprq+cPlw5vu2+qjy7WvlXhtXFdRHQbSL1Pt+bfAKaLADEkkvg8sP8w== - dependencies: - "@octokit/types" "^6.0.1" - -"@octokit/plugin-request-log@^1.0.2": - version "1.0.2" - resolved "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.2.tgz#394d59ec734cd2f122431fbaf05099861ece3c44" - integrity sha512-oTJSNAmBqyDR41uSMunLQKMX0jmEXbwD1fpz8FG27lScV3RhtGfBa1/BBLym+PxcC16IBlF7KH9vP1BUYxA+Eg== - "@octokit/plugin-request-log@^1.0.4": version "1.0.4" resolved "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz#5e50ed7083a613816b1e4a28aeec5fb7f1462e85" integrity sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA== -"@octokit/plugin-rest-endpoint-methods@5.3.1": - version "5.3.1" - resolved "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.3.1.tgz#deddce769b4ec3179170709ab42e4e9e6195aaa9" - integrity sha512-3B2iguGmkh6bQQaVOtCsS0gixrz8Lg0v4JuXPqBcFqLKuJtxAUf3K88RxMEf/naDOI73spD+goJ/o7Ie7Cvdjg== - dependencies: - "@octokit/types" "^6.16.2" - deprecation "^2.3.1" - "@octokit/plugin-rest-endpoint-methods@^5.12.0": version "5.13.0" resolved "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.13.0.tgz#8c46109021a3412233f6f50d28786f8e552427ba" @@ -4170,7 +3989,7 @@ "@octokit/types" "^6.0.1" bottleneck "^2.15.3" -"@octokit/request-error@^2.0.0", "@octokit/request-error@^2.0.2", "@octokit/request-error@^2.0.5", "@octokit/request-error@^2.1.0": +"@octokit/request-error@^2.0.2", "@octokit/request-error@^2.0.5", "@octokit/request-error@^2.1.0": version "2.1.0" resolved "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz#9e150357831bfc788d13a4fd4b1913d60c74d677" integrity sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg== @@ -4179,29 +3998,19 @@ deprecation "^2.0.0" once "^1.4.0" -"@octokit/request@^5.3.0", "@octokit/request@^5.4.11", "@octokit/request@^5.4.12", "@octokit/request@^5.4.14", "@octokit/request@^5.6.0": - version "5.6.0" - resolved "https://registry.npmjs.org/@octokit/request/-/request-5.6.0.tgz#6084861b6e4fa21dc40c8e2a739ec5eff597e672" - integrity sha512-4cPp/N+NqmaGQwbh3vUsYqokQIzt7VjsgTYVXiwpUP2pxd5YiZB2XuTedbb0SPtv9XS7nzAKjAuQxmY8/aZkiA== +"@octokit/request@^5.3.0", "@octokit/request@^5.4.12", "@octokit/request@^5.4.14", "@octokit/request@^5.6.0": + version "5.6.3" + resolved "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz#19a022515a5bba965ac06c9d1334514eb50c48b0" + integrity sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A== dependencies: "@octokit/endpoint" "^6.0.1" "@octokit/request-error" "^2.1.0" "@octokit/types" "^6.16.1" is-plain-object "^5.0.0" - node-fetch "^2.6.1" + node-fetch "^2.6.7" universal-user-agent "^6.0.0" -"@octokit/rest@^18.1.0", "@octokit/rest@^18.5.3": - version "18.5.6" - resolved "https://registry.npmjs.org/@octokit/rest/-/rest-18.5.6.tgz#8c9a7c9329c7bbf478af20df78ddeab0d21f6d89" - integrity sha512-8HdG6ZjQdZytU6tCt8BQ2XLC7EJ5m4RrbyU/EARSkAM1/HP3ceOzMG/9atEfe17EDMer3IVdHWLedz2wDi73YQ== - dependencies: - "@octokit/core" "^3.2.3" - "@octokit/plugin-paginate-rest" "^2.6.2" - "@octokit/plugin-request-log" "^1.0.2" - "@octokit/plugin-rest-endpoint-methods" "5.3.1" - -"@octokit/rest@^18.12.0": +"@octokit/rest@^18.1.0", "@octokit/rest@^18.12.0", "@octokit/rest@^18.5.3": version "18.12.0" resolved "https://registry.npmjs.org/@octokit/rest/-/rest-18.12.0.tgz#f06bc4952fc87130308d810ca9d00e79f6988881" integrity sha512-gDPiOHlyGavxr72y0guQEhLsemgVjwRePayJ+FcKc2SJqKUbxbkvf5kAZEWA/MKvsfYlQAMVzNJE3ezQcxMJ2Q== @@ -4211,21 +4020,14 @@ "@octokit/plugin-request-log" "^1.0.4" "@octokit/plugin-rest-endpoint-methods" "^5.12.0" -"@octokit/types@^5.0.0", "@octokit/types@^5.0.1": +"@octokit/types@^5.0.1": version "5.5.0" resolved "https://registry.npmjs.org/@octokit/types/-/types-5.5.0.tgz#e5f06e8db21246ca102aa28444cdb13ae17a139b" integrity sha512-UZ1pErDue6bZNjYOotCNveTXArOMZQFG6hKJfOnGnulVCMcVVi7YIIuuR4WfBhjo7zgpmzn/BkPDnUXtNx+PcQ== dependencies: "@types/node" ">= 8" -"@octokit/types@^6.0.0", "@octokit/types@^6.0.1", "@octokit/types@^6.0.3", "@octokit/types@^6.10.0", "@octokit/types@^6.12.2", "@octokit/types@^6.14.2", "@octokit/types@^6.16.1", "@octokit/types@^6.16.2", "@octokit/types@^6.8.2": - version "6.16.4" - resolved "https://registry.npmjs.org/@octokit/types/-/types-6.16.4.tgz#d24f5e1bacd2fe96d61854b5bda0e88cf8288dfe" - integrity sha512-UxhWCdSzloULfUyamfOg4dJxV9B+XjgrIZscI0VCbp4eNrjmorGEw+4qdwcpTsu6DIrm9tQsFQS2pK5QkqQ04A== - dependencies: - "@octokit/openapi-types" "^7.3.2" - -"@octokit/types@^6.26.0", "@octokit/types@^6.27.1", "@octokit/types@^6.34.0": +"@octokit/types@^6.0.1", "@octokit/types@^6.0.3", "@octokit/types@^6.10.0", "@octokit/types@^6.12.2", "@octokit/types@^6.14.2", "@octokit/types@^6.16.1", "@octokit/types@^6.26.0", "@octokit/types@^6.27.1", "@octokit/types@^6.34.0", "@octokit/types@^6.8.2": version "6.34.0" resolved "https://registry.npmjs.org/@octokit/types/-/types-6.34.0.tgz#c6021333334d1ecfb5d370a8798162ddf1ae8218" integrity sha512-s1zLBjWhdEI2zwaoSgyOFoKSl109CUcVBCc7biPJ3aAf6LGLU6szDvi31JPU7bxfla2lqfhjbbg/5DdFNxOwHw== @@ -4258,35 +4060,17 @@ integrity sha512-Aq58f5HiWdyDlFffbbSjAlv596h/cOnt2DO1w3DOC7OJ5EHs0hd/nycJfiu9RJbT6Yk6F1knnRRXNSpxoIVZ9Q== "@openapi-contrib/openapi-schema-to-json-schema@^3.0.0": - version "3.0.3" - resolved "https://registry.npmjs.org/@openapi-contrib/openapi-schema-to-json-schema/-/openapi-schema-to-json-schema-3.0.3.tgz#c626eab186938f2751ee54ec68b345133bc0065c" - integrity sha512-/WX/Jos8n7CxvtWPmhlKl9qCAAW0I+VR+V4yXfQxCmB8wmjiz6lPLTGjNk5zD15qi2MGv58++hQLLdow89KdkA== + version "3.1.1" + resolved "https://registry.npmjs.org/@openapi-contrib/openapi-schema-to-json-schema/-/openapi-schema-to-json-schema-3.1.1.tgz#e43b09680e652bf1b9e135db3f8648e979b76c07" + integrity sha512-FMvdhv9Jr9tULjJAQaQzhCmNYYj2vQFVnl7CGlLAImZvJal71oedXMGszpPaZTLftAk5TCHqjnirig+P6LZxug== dependencies: fast-deep-equal "^3.1.3" - lodash.clonedeep "^4.5.0" - -"@opencensus/web-types@0.0.7": - version "0.0.7" - resolved "https://registry.npmjs.org/@opencensus/web-types/-/web-types-0.0.7.tgz#4426de1fe5aa8f624db395d2152b902874f0570a" - integrity sha512-xB+w7ZDAu3YBzqH44rCmG9/RlrOmFuDPt/bpf17eJr8eZSrLt7nc7LnWdxM9Mmoj/YKMHpxRg28txu3TcpiL+g== - -"@opentelemetry/api@^0.10.2": - version "0.10.2" - resolved "https://registry.npmjs.org/@opentelemetry/api/-/api-0.10.2.tgz#9647b881f3e1654089ff7ea59d587b2d35060654" - integrity sha512-GtpMGd6vkzDMYcpu2t9LlhEgMy/SzBwRnz48EejlRArYqZzqSzAsKmegUK7zHgl+EOIaK9mKHhnRaQu3qw20cA== - dependencies: - "@opentelemetry/context-base" "^0.10.2" "@opentelemetry/api@^1.0.1": version "1.0.4" resolved "https://registry.npmjs.org/@opentelemetry/api/-/api-1.0.4.tgz#a167e46c10d05a07ab299fc518793b0cff8f6924" integrity sha512-BuJuXRSJNQ3QoKA6GWWDyuLpOUck+9hAXNMCnrloc1aWVoy6Xq6t9PUV08aBZ4Lutqq2LEHM486bpZqoViScog== -"@opentelemetry/context-base@^0.10.2": - version "0.10.2" - resolved "https://registry.npmjs.org/@opentelemetry/context-base/-/context-base-0.10.2.tgz#55bea904b2b91aa8a8675df9eaba5961bddb1def" - integrity sha512-hZNKjKOYsckoOEgBziGMnBcX0M7EtstnCmwz5jZUOUYwlZ+/xxX6z3jPu1XVO2Jivk0eLfuP9GP+vFD49CMetw== - "@panva/asn1.js@^1.0.0": version "1.0.0" resolved "https://registry.npmjs.org/@panva/asn1.js/-/asn1.js-1.0.0.tgz#dd55ae7b8129e02049f009408b97c61ccf9032f6" @@ -4513,9 +4297,9 @@ picomatch "^2.2.2" "@rollup/pluginutils@^4.1.1": - version "4.1.1" - resolved "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.1.1.tgz#1d4da86dd4eded15656a57d933fda2b9a08d47ec" - integrity sha512-clDjivHqWGXi7u+0d2r2sBi4Ie6VLEAzWMIkvJLnDmxoOhBYOTfzGbOQBA32THHm11/LiJbd01tJUpJsbshSWQ== + version "4.1.2" + resolved "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.1.2.tgz#ed5821c15e5e05e32816f5fb9ec607cdf5a75751" + integrity sha512-ROn4qvkxP9SyPeHaf7uQC/GPFY6L/OWy9+bd9AwcjOAWQwxRscoEyAUD8qCY5o5iL4jqQwoLk2kaTKJPb/HwzQ== dependencies: estree-walker "^2.0.1" picomatch "^2.2.2" @@ -4554,16 +4338,16 @@ string-argv "~0.3.1" "@samverschueren/stream-to-observable@^0.3.0": - version "0.3.0" - resolved "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz#ecdf48d532c58ea477acfcab80348424f8d0662f" - integrity sha512-MI4Xx6LHs4Webyvi6EbspgyAb4D2Q2VtnCQ1blOJcoLS6mVa8lNN2rkIy1CVxfTUpoyIbCTkXES1rLXztFD1lg== + version "0.3.1" + resolved "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.1.tgz#a21117b19ee9be70c379ec1877537ef2e1c63301" + integrity sha512-c/qwwcHyafOQuVQJj0IlBjf5yYgBI7YPJ77k4fOJYesb41jio65eaJODRUmfYKhTOFBrIZ66kgvGPlNbjuoRdQ== dependencies: any-observable "^0.3.0" -"@sideway/address@^4.1.0": - version "4.1.1" - resolved "https://registry.npmjs.org/@sideway/address/-/address-4.1.1.tgz#9e321e74310963fdf8eebfbee09c7bd69972de4d" - integrity sha512-+I5aaQr3m0OAmMr7RQ3fR9zx55sejEYR2BFJaxL+zT3VM2611X0SHvPWIbAUBZVTn/YzYKbV8gJ2oT/QELknfQ== +"@sideway/address@^4.1.3": + version "4.1.3" + resolved "https://registry.npmjs.org/@sideway/address/-/address-4.1.3.tgz#d93cce5d45c5daec92ad76db492cc2ee3c64ab27" + integrity sha512-8ncEUtmnTsMmL7z1YPB47kPUq7LpKWJNFPsRzHiIajGC5uXlWGn+AmkYPcHNl8S4tcEGx+cnORnNYaw2wvL+LQ== dependencies: "@hapi/hoek" "^9.0.0" @@ -4583,23 +4367,23 @@ integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== "@sindresorhus/is@^4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@sindresorhus/is/-/is-4.0.0.tgz#2ff674e9611b45b528896d820d3d7a812de2f0e4" - integrity sha512-FyD2meJpDPjyNQejSjvnhpgI/azsQkA4lGbuu5BQZfjvJ9cbRZXzeWL2HceCekW4lixO9JPesIIQkSoLjeJHNQ== + version "4.4.0" + resolved "https://registry.npmjs.org/@sindresorhus/is/-/is-4.4.0.tgz#e277e5bdbdf7cb1e20d320f02f5e2ed113cd3185" + integrity sha512-QppPM/8l3Mawvh4rn9CNEYIU9bxpXUCRMaX9yUpvBk1nMKusLKpfXGDEKExKaPhLzcn3lzil7pR6rnJ11HgeRQ== -"@sinonjs/commons@^1.6.0", "@sinonjs/commons@^1.8.3": +"@sinonjs/commons@^1.6.0", "@sinonjs/commons@^1.7.0", "@sinonjs/commons@^1.8.3": version "1.8.3" resolved "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz#3802ddd21a50a949b6721ddd72da36e67e7f1b2d" integrity sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ== dependencies: type-detect "4.0.8" -"@sinonjs/commons@^1.7.0": - version "1.7.1" - resolved "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.7.1.tgz#da5fd19a5f71177a53778073978873964f49acf1" - integrity sha512-Debi3Baff1Qu1Unc3mjJ96MgpbwTn43S1+9yJ0llWygPwDNu2aaWBD6yc9y/Z8XDRNhx7U+u2UDg2OGQXkclUQ== +"@sinonjs/fake-timers@>=5": + version "9.1.0" + resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-9.1.0.tgz#8c92c56f195e0bed4c893ba59c8e3d55831ca0df" + integrity sha512-M8vapsv9qQupMdzrVzkn5rb9jG7aUTEPAZdMtME2PuBaefksFZVE2C1g4LBRTkF/k3nRDNbDc5tp5NFC1PEYxA== dependencies: - type-detect "4.0.8" + "@sinonjs/commons" "^1.7.0" "@sinonjs/fake-timers@^6.0.1": version "6.0.1" @@ -4608,7 +4392,7 @@ dependencies: "@sinonjs/commons" "^1.7.0" -"@sinonjs/fake-timers@^7.0.4", "@sinonjs/fake-timers@^7.1.0": +"@sinonjs/fake-timers@^7.1.2": version "7.1.2" resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-7.1.2.tgz#2524eae70c4910edccf99b2f4e6efc5894aff7b5" integrity sha512-iQADsW4LBMISqZ6Ci1dupJL9pprqwcVFTcOsEmQOEhW+KLCVn/Y4Jrvg2k19fIHCp+iFprriYPTdRcQR8NbUPg== @@ -4616,9 +4400,9 @@ "@sinonjs/commons" "^1.7.0" "@sinonjs/samsam@^6.0.2": - version "6.0.2" - resolved "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-6.0.2.tgz#a0117d823260f282c04bff5f8704bdc2ac6910bb" - integrity sha512-jxPRPp9n93ci7b8hMfJOFDPRLFYadN6FSpeROFTR4UNF4i5b+EK6m4QXPO46BDhFgRy1JuS87zAnFOzCUwMJcQ== + version "6.1.1" + resolved "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-6.1.1.tgz#627f7f4cbdb56e6419fa2c1a3e4751ce4f6a00b1" + integrity sha512-cZ7rKJTLiE7u7Wi/v9Hc2fs3Ucc3jrWeMgPHbbTCeVAB2S0wOBbYlkJVeNSL04i7fdhT8wIbDq1zhC/PXTD2SA== dependencies: "@sinonjs/commons" "^1.6.0" lodash.get "^4.4.2" @@ -4726,7 +4510,7 @@ camelcase "^6.2.0" cosmiconfig "^7.0.1" -"@svgr/hast-util-to-babel-ast@^6.0.0", "@svgr/hast-util-to-babel-ast@^6.2.1": +"@svgr/hast-util-to-babel-ast@^6.2.1": version "6.2.1" resolved "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-6.2.1.tgz#ae065567b74cbe745afae617053adf9a764bea25" integrity sha512-pt7MMkQFDlWJVy9ULJ1h+hZBDGFfSCwlBNW1HkLnVi7jUhyEXUaGYWi1x6bM2IXuAR9l265khBT4Av4lPmaNLQ== @@ -4734,17 +4518,7 @@ "@babel/types" "^7.15.6" entities "^3.0.1" -"@svgr/plugin-jsx@6.2.x": - version "6.2.0" - resolved "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-6.2.0.tgz#5e41a75b12b34cb66509e63e535606161770ff42" - integrity sha512-QJDEe7K5Hkd4Eewu4pcjiOKTCtjB47Ol6lDLXVhf+jEewi+EKJAaAmM+bNixfW6LSNEg8RwOYQN3GZcprqKfHw== - dependencies: - "@babel/core" "^7.15.5" - "@svgr/babel-preset" "^6.2.0" - "@svgr/hast-util-to-babel-ast" "^6.0.0" - svg-parser "^2.0.2" - -"@svgr/plugin-jsx@^6.2.1": +"@svgr/plugin-jsx@6.2.x", "@svgr/plugin-jsx@^6.2.1": version "6.2.1" resolved "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-6.2.1.tgz#5668f1d2aa18c2f1bb7a1fc9f682d3f9aed263bd" integrity sha512-u+MpjTsLaKo6r3pHeeSVsh9hmGRag2L7VzApWIaS8imNguqoUwDq/u6U/NDmYs/KAsrmtBjOEaAAPbwNGXXp1g== @@ -4800,9 +4574,9 @@ defer-to-connect "^1.0.1" "@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" - integrity sha512-PyRA9sm1Yayuj5OIoJ1hGt2YISX45w9WcFbh6ddT0Z/0yaFxOtGLInr4jUfU1EAFVs0Yfyfev4RNwBlUaHdlDQ== + version "4.0.6" + resolved "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz#b4a914bb62e7c272d4e5989fe4440f812ab1d807" + integrity sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w== dependencies: defer-to-connect "^2.0.0" @@ -4815,23 +4589,23 @@ "@testing-library/dom" "^8.1.0" "@testing-library/dom@^7.28.1": - version "7.29.6" - resolved "https://registry.npmjs.org/@testing-library/dom/-/dom-7.29.6.tgz#eb37844fb431186db7960a7ff6749ea65a19617c" - integrity sha512-vzTsAXa439ptdvav/4lsKRcGpAQX7b6wBIqia7+iNzqGJ5zjswApxA6jDAsexrc6ue9krWcbh8o+LYkBXW+GCQ== + version "7.31.2" + resolved "https://registry.npmjs.org/@testing-library/dom/-/dom-7.31.2.tgz#df361db38f5212b88555068ab8119f5d841a8c4a" + integrity sha512-3UqjCpey6HiTZT92vODYLPxTBWlM8ZOOjr3LX5F37/VRipW2M1kX6I/Cm4VXzteZqfGfagg8yXywpcOgQBlNsQ== dependencies: "@babel/code-frame" "^7.10.4" "@babel/runtime" "^7.12.5" "@types/aria-query" "^4.2.0" aria-query "^4.2.2" chalk "^4.1.0" - dom-accessibility-api "^0.5.4" + dom-accessibility-api "^0.5.6" lz-string "^1.4.4" pretty-format "^26.6.2" "@testing-library/dom@^8.1.0": - version "8.11.1" - resolved "https://registry.npmjs.org/@testing-library/dom/-/dom-8.11.1.tgz#03fa2684aa09ade589b460db46b4c7be9fc69753" - integrity sha512-3KQDyx9r0RKYailW2MiYrSSKEfH0GTkI51UGEvJenvcoDoeRYs0PZpi2SXqtnMClQvCqdtTTpOfFETDTVADpAg== + version "8.11.3" + resolved "https://registry.npmjs.org/@testing-library/dom/-/dom-8.11.3.tgz#38fd63cbfe14557021e88982d931e33fb7c1a808" + integrity sha512-9LId28I+lx70wUiZjLvi1DB/WT2zGOxUh46glrSNMaWVx849kKAluezVzZrXJfTKKoQTmEOutLes/bHg4Bj3aA== dependencies: "@babel/code-frame" "^7.10.4" "@babel/runtime" "^7.12.5" @@ -4843,13 +4617,13 @@ pretty-format "^27.0.2" "@testing-library/jest-dom@^5.10.1": - version "5.14.1" - resolved "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.14.1.tgz#8501e16f1e55a55d675fe73eecee32cdaddb9766" - integrity sha512-dfB7HVIgTNCxH22M1+KU6viG5of2ldoA5ly8Ar8xkezKHKXjRvznCdbMbqjYGgO2xjRbwnR+rR8MLUIqF3kKbQ== + version "5.16.2" + resolved "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.16.2.tgz#f329b36b44aa6149cd6ced9adf567f8b6aa1c959" + integrity sha512-6ewxs1MXWwsBFZXIk4nKKskWANelkdUehchEOokHsN8X7c2eKXGw+77aRV63UU8f/DTSVUPLaGxdrj4lN7D/ug== dependencies: "@babel/runtime" "^7.9.2" "@types/testing-library__jest-dom" "^5.9.1" - aria-query "^4.2.2" + aria-query "^5.0.0" chalk "^3.0.0" css "^3.0.0" css.escape "^1.5.1" @@ -4869,17 +4643,17 @@ react-error-boundary "^3.1.0" "@testing-library/react@^11.2.5": - version "11.2.6" - resolved "https://registry.npmjs.org/@testing-library/react/-/react-11.2.6.tgz#586a23adc63615985d85be0c903f374dab19200b" - integrity sha512-TXMCg0jT8xmuU8BkKMtp8l7Z50Ykew5WNX8UoIKTaLFwKkP2+1YDhOLA2Ga3wY4x29jyntk7EWfum0kjlYiSjQ== + version "11.2.7" + resolved "https://registry.npmjs.org/@testing-library/react/-/react-11.2.7.tgz#b29e2e95c6765c815786c0bc1d5aed9cb2bf7818" + integrity sha512-tzRNp7pzd5QmbtXNG/mhdcl7Awfu/Iz1RaVHY75zTdOkmHCuzMhRL83gWHSgOAcjS3CCbyfwUHMZgRJb4kAfpA== dependencies: "@babel/runtime" "^7.12.5" "@testing-library/dom" "^7.28.1" "@testing-library/user-event@^13.1.8": - version "13.1.8" - resolved "https://registry.npmjs.org/@testing-library/user-event/-/user-event-13.1.8.tgz#9cbf342b88d837ee188f9f9f4df6d1beaaf179c2" - integrity sha512-M04HgOlJvxILf5xyrkJaEQfFOtcvhy3usLldQIEg9zgFIYQofSmFGVfFlS7BWowqlBGLrItwGMlPXCoBgoHSiw== + version "13.5.0" + resolved "https://registry.npmjs.org/@testing-library/user-event/-/user-event-13.5.0.tgz#69d77007f1e124d55314a2b73fd204b333b13295" + integrity sha512-5Kwtbo3Y/NowpkbRuSepbyMFkZmHgD+vPzYB/RJ4oxt5Gj/avFFBYjhw27cqSVPVw/3a67NK1PbiIr9k4Gwmdg== dependencies: "@babel/runtime" "^7.12.5" @@ -4960,9 +4734,9 @@ integrity sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA== "@types/aria-query@^4.2.0": - version "4.2.0" - resolved "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.0.tgz#14264692a9d6e2fa4db3df5e56e94b5e25647ac0" - integrity sha512-iIgQNzCm0v7QMhhe4Jjn9uRh+I6GoPmt03CbEtwx3ao8/EfoQcmgtqH4vQ5Db/lxiIGaWDv6nwvunuh0RyX0+A== + version "4.2.2" + resolved "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.2.tgz#ed4e0ad92306a704f9fb132a0cfcf77486dbe2bc" + integrity sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig== "@types/aws-lambda@^8.10.83": version "8.10.92" @@ -4977,9 +4751,9 @@ "@types/node" "*" "@types/babel__core@^7.0.0", "@types/babel__core@^7.1.7": - version "7.1.9" - resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.9.tgz#77e59d438522a6fb898fa43dc3455c6e72f3963d" - integrity sha512-sY2RsIJ5rpER1u3/aQ8OFSI7qGIy8o1NEEbgb2UaJcvOtXOMpd39ko723NBpjQFg9SIX7TXtjejZVGeIMLhoOw== + version "7.1.18" + resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.18.tgz#1a29abcc411a9c05e2094c98f9a1b7da6cdf49f8" + integrity sha512-S7unDjm/C7z2A2R9NzfKCK1I+BAALDtxEmsJBwlB3EzNfb929ykjL++1CK9LO++EIp2fQrC8O+BwjKvz6UeDyQ== dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" @@ -4988,24 +4762,24 @@ "@types/babel__traverse" "*" "@types/babel__generator@*": - version "7.6.1" - resolved "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.1.tgz#4901767b397e8711aeb99df8d396d7ba7b7f0e04" - integrity sha512-bBKm+2VPJcMRVwNhxKu8W+5/zT7pwNEqeokFOmbvVSqGzFneNxYcEBro9Ac7/N9tlsaPYnZLK8J1LWKkMsLAew== + version "7.6.4" + resolved "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz#1f20ce4c5b1990b37900b63f050182d28c2439b7" + integrity sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg== dependencies: "@babel/types" "^7.0.0" "@types/babel__template@*": - version "7.0.2" - resolved "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.0.2.tgz#4ff63d6b52eddac1de7b975a5223ed32ecea9307" - integrity sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg== + version "7.4.1" + resolved "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz#3d1a48fd9d6c0edfd56f2ff578daed48f36c8969" + integrity sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g== dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" "@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": - version "7.0.15" - resolved "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.0.15.tgz#db9e4238931eb69ef8aab0ad6523d4d4caa39d03" - integrity sha512-Pzh9O3sTK8V6I1olsXpCfj2k/ygO2q1X0vhhnDrEQyYLHZesWz+zMZMVcwXLCYf0U36EtmyYaFGPfXlTtDHe3A== + version "7.14.2" + resolved "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.14.2.tgz#ffcd470bbb3f8bf30481678fb5502278ca833a43" + integrity sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA== dependencies: "@babel/types" "^7.3.0" @@ -5030,9 +4804,9 @@ integrity sha512-wJsiX1tosQ+J5+bY5LrSahHxr2wT+uME5UDwdN1kg4frt40euqA+wzECkmq4t5QbveHiJepfdThgQrPw6KiSlg== "@types/cacheable-request@^6.0.1": - version "6.0.1" - resolved "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.1.tgz#5d22f3dded1fd3a84c0bbeb5039a7419c2c91976" - integrity sha512-ykFq2zmBGOCbpIXtoVbz4SKY5QriWPh3AjyU4G74RYbtt5yOc5OfaY75ftjg7mikMOla1CTGpX3lLbuJh8DTrQ== + version "6.0.2" + resolved "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.2.tgz#c324da0197de0a98a2312156536ae262429ff6b9" + integrity sha512-B3xVo+dlKM6nnKTcmm5ZtY/OL8bOAOd2Olee9M1zft65ox50OzjEHW91sDiU9j6cvW8Ejg1/Qkf4xd2kugApUA== dependencies: "@types/http-cache-semantics" "*" "@types/keyv" "*" @@ -5065,15 +4839,15 @@ dependencies: "@types/color-name" "*" -"@types/color-name@*", "@types/color-name@^1.1.1": +"@types/color-name@*": version "1.1.1" resolved "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== "@types/color@^3.0.1": - version "3.0.2" - resolved "https://registry.npmjs.org/@types/color/-/color-3.0.2.tgz#3779043e782f562aa9157b5fc6bd07e14fd8e7f3" - integrity sha512-INiJl6sfNn8iyC5paxVzqiVUEj2boIlFki02uRTAkKwAj++7aAF+ZfEv/XrIeBa0XI/fTZuDHW8rEEcEVnON+Q== + version "3.0.3" + resolved "https://registry.npmjs.org/@types/color/-/color-3.0.3.tgz#e6d8d72b7aaef4bb9fe80847c26c7c786191016d" + integrity sha512-X//qzJ3d3Zj82J9sC/C18ZY5f43utPbAJ6PhYt/M7uG6etcF6MRpKdN880KBy43B0BMzSfeT96MzrsNjFI3GbA== dependencies: "@types/color-convert" "*" @@ -5112,9 +4886,9 @@ "@types/node" "*" "@types/connect@*": - version "3.4.33" - resolved "https://registry.npmjs.org/@types/connect/-/connect-3.4.33.tgz#31610c901eca573b8713c3330abc6e6b9f588546" - integrity sha512-2+FrkXY4zllzTNfJth7jOqEHC+enpLeGslEhpnTAkg21GkRrWV4SsAtqchtT4YS9/nODBU2/ZfsBY2X4J/dX7A== + version "3.4.35" + resolved "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" + integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== dependencies: "@types/node" "*" @@ -5131,9 +4905,9 @@ integrity sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q== "@types/cookiejar@*": - version "2.1.1" - resolved "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.1.tgz#90b68446364baf9efd8e8349bb36bd3852b75b80" - integrity sha512-aRnpPa7ysx3aNW60hTiCtLHlQaIFsXFCgQlpakNgDNVFzbtusSY8PwjAQgRWfSk0ekNoBjO51eQRB6upA9uuyw== + version "2.1.2" + resolved "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.2.tgz#66ad9331f63fe8a3d3d9d8c6e3906dd10f6446e8" + integrity sha512-t73xJJrvdTjXrn4jLS9VSGRbz0nUY3cl2DMGDU48lKl+HR9dbbjW2A9r3g40VA++mQpy6uuHg33gy7du2BKpog== "@types/core-js@^2.5.4": version "2.5.5" @@ -5163,9 +4937,9 @@ integrity sha512-+0EtEjBfKEDtH9Rk3u3kLOUXM5F+iZK+WvASPb0MhIZl8J8NUvGeZRwKCXl+P3HkYx5TdU4YtcibpqHkSR9n7w== "@types/d3-force@^2.1.1": - version "2.1.1" - resolved "https://registry.npmjs.org/@types/d3-force/-/d3-force-2.1.1.tgz#a18b6f029d056eb0f8f84a09471e6228e4469b14" - integrity sha512-3r+CQv2K/uDTAVg0DGxsbBjV02vgOxb8RhPIv3gd6cp3pdPAZ7wEXpDjUZSoqycAQLSDOxG/AZ54Vx6YXZSbmQ== + version "2.1.4" + resolved "https://registry.npmjs.org/@types/d3-force/-/d3-force-2.1.4.tgz#98919b87db8a0ca5011d189c598d69251d20344d" + integrity sha512-1XVRc2QbeUSL1FRVE53Irdz7jY+drTwESHIMVirCwkAAMB/yVC8ezAfx/1Alq0t0uOnphoyhRle1ht5CuPgSJQ== "@types/d3-interpolate@*": version "3.0.1" @@ -5209,9 +4983,9 @@ integrity sha512-d29EDd0iUBrRoKhPndhDY6U/PYxOWqgIZwKTooy2UkBfU7TNZNpRho0yLWPxlatQrFWk2mnTu71IZQ4+LRgKlQ== "@types/d3-shape@^1": - version "1.3.5" - resolved "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-1.3.5.tgz#c0164c1be1429473016f855871d487f806c4e968" - integrity sha512-aPEax03owTAKynoK8ZkmkZEDZvvT4Y5pWgii4Jp4oQt0gH45j6siDl9gNDVC5kl64XHN2goN9jbYoHK88tFAcA== + version "1.3.8" + resolved "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-1.3.8.tgz#c3c15ec7436b4ce24e38de517586850f1fea8e89" + integrity sha512-gqfnMz6Fd5H6GOLYixOZP/xlrMtJms9BaS+6oWxTKHNqPGZ93BkWWupQSCYm6YHqx6h9wjRupuJb90bun6ZaYg== dependencies: "@types/d3-path" "^1" @@ -5282,18 +5056,18 @@ dependencies: "@types/trusted-types" "*" -"@types/eslint-scope@^3.7.0": - version "3.7.0" - resolved "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.0.tgz#4792816e31119ebd506902a482caec4951fabd86" - integrity sha512-O/ql2+rrCUe2W2rs7wMR+GqPRcgB6UiqN5RhrR5xruFlY7l9YLMn0ZkDzjoHLeiFkR8MCQZVudUuuvQ2BLC9Qw== +"@types/eslint-scope@^3.7.3": + version "3.7.3" + resolved "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz#125b88504b61e3c8bc6f870882003253005c3224" + integrity sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g== dependencies: "@types/eslint" "*" "@types/estree" "*" "@types/eslint@*": - version "6.1.8" - resolved "https://registry.npmjs.org/@types/eslint/-/eslint-6.1.8.tgz#7e868f89bc1e520323d405940e49cb912ede5bba" - integrity sha512-CJBhm9pYdUS8cFVbXACWlLxZWFBTQMiM0eI6RYxng3u9oQ9gHdQ5PN89DHPrK4RISRzX62nRsteUlbBgEIdSug== + version "8.4.1" + resolved "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.1.tgz#c48251553e8759db9e656de3efc846954ac32304" + integrity sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA== dependencies: "@types/estree" "*" "@types/json-schema" "*" @@ -5306,10 +5080,10 @@ "@types/estree" "*" "@types/json-schema" "*" -"@types/estree@*", "@types/estree@^0.0.50": - version "0.0.50" - resolved "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz#1e0caa9364d3fccd2931c3ed96fdbeaa5d4cca83" - integrity sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw== +"@types/estree@*", "@types/estree@^0.0.51": + version "0.0.51" + resolved "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40" + integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ== "@types/estree@0.0.39": version "0.0.39" @@ -5321,7 +5095,7 @@ resolved "https://registry.npmjs.org/@types/expect/-/expect-1.20.4.tgz#8288e51737bf7e3ab5d7c77bfa695883745264e5" integrity sha512-Q5Vn3yjTDyCMV50TB6VRIbQNxSE4OmZR86VSbGaNpfUolm0iePBB4KdEEHmxoY5sT2+2DIvXW0rvMDP2nHZ4Mg== -"@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.18", "@types/express-serve-static-core@^4.17.5": +"@types/express-serve-static-core@*", "@types/express-serve-static-core@4.17.28", "@types/express-serve-static-core@^4.17.18", "@types/express-serve-static-core@^4.17.5": version "4.17.28" resolved "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz#c47def9f34ec81dc6328d0b1b5303d1ec98d86b8" integrity sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig== @@ -5330,15 +5104,6 @@ "@types/qs" "*" "@types/range-parser" "*" -"@types/express-serve-static-core@4.17.27": - version "4.17.27" - resolved "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.27.tgz#7a776191e47295d2a05962ecbb3a4ce97e38b401" - integrity sha512-e/sVallzUTPdyOTiqi8O8pMdBBphscvI6E4JYaKlja4Lm+zh7UFSSdW5VMkRbhDtmrONqOUHOXRguPsDckzxNA== - dependencies: - "@types/node" "*" - "@types/qs" "*" - "@types/range-parser" "*" - "@types/express-session@^1.17.2": version "1.17.4" resolved "https://registry.npmjs.org/@types/express-session/-/express-session-1.17.4.tgz#97a30a35e853a61bdd26e727453b8ed314d6166b" @@ -5354,7 +5119,7 @@ "@types/express" "*" "@types/xml2js" "*" -"@types/express@*", "@types/express@4.17.13", "@types/express@^4.17.6": +"@types/express@*", "@types/express@4.17.13", "@types/express@^4.17.13", "@types/express@^4.17.6": version "4.17.13" resolved "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz#a76e2995728999bab51a33fabce1d705a3709034" integrity sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA== @@ -5364,14 +5129,7 @@ "@types/qs" "*" "@types/serve-static" "*" -"@types/fs-extra@^9.0.1", "@types/fs-extra@^9.0.3", "@types/fs-extra@^9.0.5": - version "9.0.8" - resolved "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.8.tgz#32c3c07ddf8caa5020f84b5f65a48470519f78ba" - integrity sha512-bnlTVTwq03Na7DpWxFJ1dvnORob+Otb8xHyUqUWhqvz/Ksg8+JXPlR52oeMSZ37YEOa5PyccbgUNutiQdi13TA== - dependencies: - "@types/node" "*" - -"@types/fs-extra@^9.0.6": +"@types/fs-extra@^9.0.1", "@types/fs-extra@^9.0.3", "@types/fs-extra@^9.0.5", "@types/fs-extra@^9.0.6": version "9.0.13" resolved "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz#7594fbae04fe7f1918ce8b3d213f74ff44ac1f45" integrity sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA== @@ -5379,14 +5137,14 @@ "@types/node" "*" "@types/git-url-parse@^9.0.0": - version "9.0.0" - resolved "https://registry.npmjs.org/@types/git-url-parse/-/git-url-parse-9.0.0.tgz#aac1315a44fa4ed5a52c3820f6c3c2fb79cbd12d" - integrity sha512-kA2RxBT/r/ZuDDKwMl+vFWn1Z0lfm1/Ik6Qb91wnSzyzCDa/fkM8gIOq6ruB7xfr37n6Mj5dyivileUVKsidlg== + version "9.0.1" + resolved "https://registry.npmjs.org/@types/git-url-parse/-/git-url-parse-9.0.1.tgz#1c7cc89527ca8b5afcf260ead3b0e4e373c43938" + integrity sha512-Zf9mY4Mz7N3Nyi341nUkOtgVUQn4j6NS4ndqEha/lOgEbTkHzpD7wZuRagYKzrXNtvawWfsrojoC1nhsQexvNA== "@types/glob@*": - version "7.1.3" - resolved "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz#e6ba80f36b7daad2c685acd9266382e68985c183" - integrity sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w== + version "7.2.0" + resolved "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb" + integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA== dependencies: "@types/minimatch" "*" "@types/node" "*" @@ -5397,9 +5155,9 @@ integrity sha512-6bgv24B+A2bo9AfzReeg5StdiijKzwwnRflA8RLd1V4Yv995LeTmo0z69/MPbBDFSiZWdZHQygLo/ccXhMEDgw== "@types/graceful-fs@^4.1.2": - version "4.1.3" - resolved "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.3.tgz#039af35fe26bec35003e8d86d2ee9c586354348f" - integrity sha512-AiHRaEB50LQg0pZmm659vNBb9f4SJ0qrAnteuzhSeAUcJKxoYgEnprg/83kppCnc2zvtCKbdZry1a5pVY3lOTQ== + version "4.1.5" + resolved "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15" + integrity sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw== dependencies: "@types/node" "*" @@ -5431,9 +5189,9 @@ integrity sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg== "@types/http-cache-semantics@*": - version "4.0.0" - resolved "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.0.tgz#9140779736aa2655635ee756e2467d787cfe8a2a" - integrity sha512-c3Xy026kOF7QOTn00hbIllV1dLR9hG9NkSrLQgCVs8NF6sBU+VGWjD3wLPhmh1TYAc7ugCFsvHYMN4VcBN1U1A== + version "4.0.1" + resolved "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz#0ea7b61496902b95890dc4c3a116b60cb8dae812" + integrity sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ== "@types/http-errors@^1.6.3": version "1.8.2" @@ -5456,15 +5214,10 @@ dependencies: "@types/node" "*" -"@types/humanize-duration@^3.18.1": - version "3.18.1" - resolved "https://registry.npmjs.org/@types/humanize-duration/-/humanize-duration-3.18.1.tgz#10090d596053703e7de0ac43a37b96cd9fc78309" - integrity sha512-MUgbY3CF7hg/a/jogixmAufLjJBQT7WEf8Q+kYJkOc47ytngg1IuZobCngdTjAgY83JWEogippge5O5fplaQlw== - -"@types/humanize-duration@^3.25.1": - version "3.25.1" - resolved "https://registry.npmjs.org/@types/humanize-duration/-/humanize-duration-3.25.1.tgz#b6140d5fc00ff3917b3f521784abef4bc0387ccc" - integrity sha512-WZU/4bb+lvzyDmZzjJtp++9mfKy6B3lH6gGISgkcz6SU8hMILKRM0vi08TxIsb0dQB4Gzo68MWLmctu6xqUi9g== +"@types/humanize-duration@^3.18.1", "@types/humanize-duration@^3.25.1": + version "3.27.1" + resolved "https://registry.npmjs.org/@types/humanize-duration/-/humanize-duration-3.27.1.tgz#f14740d1f585a0a8e3f46359b62fda8b0eaa31e7" + integrity sha512-K3e+NZlpCKd6Bd/EIdqjFJRFHbrq5TzPPLwREk5Iv/YoIjQrs6ljdAUCo+Lb2xFlGNOjGSE0dqsVD19cZL137w== "@types/inquirer@^7.3.3": version "7.3.3" @@ -5475,9 +5228,9 @@ rxjs "^6.4.0" "@types/inquirer@^8.1.3": - version "8.1.3" - resolved "https://registry.npmjs.org/@types/inquirer/-/inquirer-8.1.3.tgz#dfda4c97cdbe304e4dceb378a80f79448ea5c8fe" - integrity sha512-AayK4ZL5ssPzR1OtnOLGAwpT0Dda3Xi/h1G0l1oJDNrowp7T1423q4Zb8/emr7tzRlCy4ssEri0LWVexAqHyKQ== + version "8.2.0" + resolved "https://registry.npmjs.org/@types/inquirer/-/inquirer-8.2.0.tgz#b9566d048f5ff65159f2ed97aff45fe0f00b35ec" + integrity sha512-BNoMetRf3gmkpAlV5we+kxyZTle7YibdOntIZbU5pyIfMdcwy784KfeZDAcuyMznkh5OLa17RVXZOGA5LTlkgQ== dependencies: "@types/through" "*" rxjs "^7.2.0" @@ -5490,9 +5243,9 @@ ci-info "^3.1.0" "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - version "2.0.1" - resolved "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz#42995b446db9a48a11a07ec083499a860e9138ff" - integrity sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg== + version "2.0.4" + resolved "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" + integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== "@types/istanbul-lib-report@*": version "3.0.0" @@ -5502,9 +5255,9 @@ "@types/istanbul-lib-coverage" "*" "@types/istanbul-reports@^3.0.0": - version "3.0.0" - resolved "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz#508b13aa344fa4976234e75dddcc34925737d821" - integrity sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA== + version "3.0.1" + resolved "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff" + integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== dependencies: "@types/istanbul-lib-report" "*" @@ -5516,16 +5269,24 @@ "@types/node" "*" "@types/jest-when@^2.7.2": - version "2.7.2" - resolved "https://registry.npmjs.org/@types/jest-when/-/jest-when-2.7.2.tgz#619fbc5f623bcd0b29efde0e4993c7f0d50d026d" - integrity sha512-vOtj0cev6vO1VX7Jbfg/qvy+sfLI64STsHbKVkggK+1kd11rcMGzFpZKBxUvQfsm4JRULCBISu+qrfs7fYZFGg== + version "2.7.4" + resolved "https://registry.npmjs.org/@types/jest-when/-/jest-when-2.7.4.tgz#1bedac232f4a54c1a1c01cc641c03ecfd0dad0ec" + integrity sha512-2OC69oyaD33tmSaOjtxvy7ZpBO85OWIw1AbpWVziL4bek5mr795H59qK5EKDpp4dLhtH1QIs54tXpoHEb2mE/A== dependencies: "@types/jest" "*" -"@types/jest@*", "@types/jest@^26.0.7": - version "26.0.22" - resolved "https://registry.npmjs.org/@types/jest/-/jest-26.0.22.tgz#8308a1debdf1b807aa47be2838acdcd91e88fbe6" - integrity sha512-eeWwWjlqxvBxc4oQdkueW5OF/gtfSceKk4OnOAGlUSwS/liBRtZppbJuz1YkgbrbfGOoeBHun9fOvXnjNwrSOw== +"@types/jest@*": + version "27.4.0" + resolved "https://registry.npmjs.org/@types/jest/-/jest-27.4.0.tgz#037ab8b872067cae842a320841693080f9cb84ed" + integrity sha512-gHl8XuC1RZ8H2j5sHv/JqsaxXkDDM9iDOgu0Wp8sjs4u/snb2PVehyWXJPr+ORA0RPpgw231mnutWI1+0hgjIQ== + dependencies: + jest-diff "^27.0.0" + pretty-format "^27.0.0" + +"@types/jest@^26.0.7": + version "26.0.24" + resolved "https://registry.npmjs.org/@types/jest/-/jest-26.0.24.tgz#943d11976b16739185913a1936e0de0c4a7d595a" + integrity sha512-E/X5Vib8BWqZNRlDxj9vYXhsDwPYbPINqKF9BsnSoon4RQ0D9moEuLD8txgyypFLH7J4+Lho9Nr/c8H0Fi+17w== dependencies: jest-diff "^26.0.0" pretty-format "^26.0.0" @@ -5538,14 +5299,14 @@ "@types/sizzle" "*" "@types/js-cookie@^2.2.6": - version "2.2.6" - resolved "https://registry.npmjs.org/@types/js-cookie/-/js-cookie-2.2.6.tgz#f1a1cb35aff47bc5cfb05cb0c441ca91e914c26f" - integrity sha512-+oY0FDTO2GYKEV0YPvSshGq9t7YozVkgvXLty7zogQNuCxBhT9/3INX9Q7H1aRZ4SUDRXAKlJuA4EA5nTt7SNw== + version "2.2.7" + resolved "https://registry.npmjs.org/@types/js-cookie/-/js-cookie-2.2.7.tgz#226a9e31680835a6188e887f3988e60c04d3f6a3" + integrity sha512-aLkWa0C0vO5b4Sr798E26QgOkss68Un0bLjs7u9qxzPT5CG+8DuNTffWES58YzJs3hrVAOs1wonycqEBqNJubA== "@types/js-levenshtein@^1.1.0": - version "1.1.0" - resolved "https://registry.npmjs.org/@types/js-levenshtein/-/js-levenshtein-1.1.0.tgz#9541eec4ad6e3ec5633270a3a2b55d981edc44a9" - integrity sha512-14t0v1ICYRtRVcHASzes0v/O+TIeASb8aD55cWF1PidtInhFWSXcmhzhHqGjUWf9SUq1w70cvd1cWKUULubAfQ== + version "1.1.1" + resolved "https://registry.npmjs.org/@types/js-levenshtein/-/js-levenshtein-1.1.1.tgz#ba05426a43f9e4e30b631941e0aa17bf0c890ed5" + integrity sha512-qC4bCqYGy1y/NP7dDVr7KJarn+PbX1nSpwA7JXdu0HxT3QYjO8MJ+cntENtHFVy2dRAyBV23OZ6MxsW1AM1L8g== "@types/js-yaml@^4.0.0", "@types/js-yaml@^4.0.1": version "4.0.5" @@ -5573,9 +5334,9 @@ integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ== "@types/json-stable-stringify@^1.0.32": - version "1.0.32" - resolved "https://registry.npmjs.org/@types/json-stable-stringify/-/json-stable-stringify-1.0.32.tgz#121f6917c4389db3923640b2e68de5fa64dda88e" - integrity sha512-q9Q6+eUEGwQkv4Sbst3J4PNgDOvpuVuKj79Hl/qnmBMEIPzB5QoFRUtjcgcg2xNUZyYUGXBk5wYIBKHt0A+Mxw== + version "1.0.33" + resolved "https://registry.npmjs.org/@types/json-stable-stringify/-/json-stable-stringify-1.0.33.tgz#099b0712d824d15e2660c20e1c16e6a8381f308c" + integrity sha512-qEWiQff6q2tA5gcJGWwzplQcXdJtm+0oy6IHGHzlOf3eFAkGE/FIPXZK9ofWgNSHVp8AFFI33PJJshS0ei3Gvw== "@types/json5@^0.0.29": version "0.0.29" @@ -5583,9 +5344,9 @@ integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= "@types/jsonwebtoken@^8.3.3", "@types/jsonwebtoken@^8.5.0": - version "8.5.0" - resolved "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-8.5.0.tgz#2531d5e300803aa63279b232c014acf780c981c5" - integrity sha512-9bVao7LvyorRGZCw0VmH/dr7Og+NdjYSsKAxB43OQoComFbBgsEpoR9JW6+qSq/ogwVBg8GI2MfAlk4SYI4OLg== + version "8.5.8" + resolved "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-8.5.8.tgz#01b39711eb844777b7af1d1f2b4cf22fda1c0c44" + integrity sha512-zm6xBQpFDIDM6o9r6HSgDeIcLy82TKWctCXEPbJJcXb5AKmi5BNNdLXneixK4lplX3PqIVcwLBCGE/kAGnlD4A== dependencies: "@types/node" "*" @@ -5597,9 +5358,9 @@ jwt-decode "*" "@types/keyv@*": - version "3.1.1" - resolved "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.1.tgz#e45a45324fca9dab716ab1230ee249c9fb52cfa7" - integrity sha512-MPtoySlAZQ37VoLaPcTHCu1RWJ4llDkULYZIzOYxlhxBqYPB0RsRlmMU0R6tahtFe27mIdkHV+551ZWV4PLmVw== + version "3.1.3" + resolved "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.3.tgz#1c9aae32872ec1f20dcdaee89a9f3ba88f465e41" + integrity sha512-FXCJgyyN3ivVgRoml4h94G/p3kY+u/B86La+QptcqJaWtBWtmc6TtkNfS40n9bIvyLteHh7zXOtgbobORKPbDg== dependencies: "@types/node" "*" @@ -5621,29 +5382,24 @@ integrity sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w== "@types/lru-cache@^5.1.0": - version "5.1.0" - resolved "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.0.tgz#57f228f2b80c046b4a1bd5cac031f81f207f4f03" - integrity sha512-RaE0B+14ToE4l6UqdarKPnXwVDuigfFv+5j9Dze/Nqr23yyuqdNvzcZi3xB+3Agvi5R4EOgAksfv3lXX4vBt9w== + version "5.1.1" + resolved "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.1.tgz#c48c2e27b65d2a153b19bfc1a317e30872e01eef" + integrity sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw== "@types/lunr@^2.3.3": - version "2.3.3" - resolved "https://registry.npmjs.org/@types/lunr/-/lunr-2.3.3.tgz#ec985618fd2712c010f8edab4f1ae7784ad7c583" - integrity sha512-09sXZZVsB3Ib41U0fC+O1O+4UOZT1bl/e+/QubPxpqDWHNEchvx/DEb1KJMOwq6K3MTNzZFoNSzVdR++o1DVnw== + version "2.3.4" + resolved "https://registry.npmjs.org/@types/lunr/-/lunr-2.3.4.tgz#728f445855818fb17776d10ef4678f278072eb03" + integrity sha512-j4x4XJwZvorEUbA519VdQ5b9AOU9TSvfi8tvxMAfP8XzNLtFex7A8vFQwqOx3WACbV0KMXbACV3cZl4/gynQ7g== -"@types/luxon@^2.0.4": - version "2.0.4" - resolved "https://registry.npmjs.org/@types/luxon/-/luxon-2.0.4.tgz#f7b5a86ccd843c0ccaddfaedd9ee1081bc1cde3b" - integrity sha512-l3xuhmyF2kBldy15SeY6d6HbK2BacEcSK1qTF1ISPtPHr29JH0C1fndz9ExXLKpGl0J6pZi+dGp1i5xesMt60Q== +"@types/luxon@^2.0.4", "@types/luxon@^2.0.5": + version "2.0.9" + resolved "https://registry.npmjs.org/@types/luxon/-/luxon-2.0.9.tgz#782a0edfa6d699191292c13168bd496cd66b87c6" + integrity sha512-ZuzIc7aN+i2ZDMWIiSmMdubR9EMMSTdEzF6R+FckP4p6xdnOYKqknTo/k+xXQvciSXlNGIwA4OPU5X7JIFzYdA== -"@types/luxon@^2.0.5": - version "2.0.5" - resolved "https://registry.npmjs.org/@types/luxon/-/luxon-2.0.5.tgz#29d3b095d55ee50df8f4cf109b16009334d9828e" - integrity sha512-GKrG5v16BOs9XGpouu33hOkAFaiSDi3ZaDXG9F2yAoyzHRBtksZnI60VWY5aM/yAENCccBejrxw8jDY+9OVlxw== - -"@types/mdast@^3.0.0", "@types/mdast@^3.0.3": - version "3.0.3" - resolved "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.3.tgz#2d7d671b1cd1ea3deb306ea75036c2a0407d2deb" - integrity sha512-SXPBMnFVQg1s00dlMCc/jCdvPqdE4mXaMMCeRlxLDmTAEoegHT53xKtkDnzDTOcmMHUfcjyf36/YYZ6SxRdnsw== +"@types/mdast@^3.0.0": + version "3.0.10" + resolved "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz#4724244a82a4598884cbbe9bcfd73dff927ee8af" + integrity sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA== dependencies: "@types/unist" "*" @@ -5662,12 +5418,7 @@ resolved "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a" integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw== -"@types/minimatch@*", "@types/minimatch@^3.0.3": - version "3.0.3" - resolved "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" - integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== - -"@types/minimatch@^3.0.5": +"@types/minimatch@*", "@types/minimatch@^3.0.3", "@types/minimatch@^3.0.5": version "3.0.5" resolved "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== @@ -5678,9 +5429,9 @@ integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== "@types/minipass@*": - version "2.2.0" - resolved "https://registry.npmjs.org/@types/minipass/-/minipass-2.2.0.tgz#51ad404e8eb1fa961f75ec61205796807b6f9651" - integrity sha512-wuzZksN4w4kyfoOv/dlpov4NOunwutLA/q7uc00xU02ZyUY+aoM5PWIXEKBMnm0NHd4a+N71BMjq+x7+2Af1fg== + version "3.1.2" + resolved "https://registry.npmjs.org/@types/minipass/-/minipass-3.1.2.tgz#e2d7f9df0698aff421dcf145b4fc05b8183b9030" + integrity sha512-foLGjgrJkUjLG/o2t2ymlZGEoBNBa/TfoUZ7oCTkOjP1T43UGBJspovJou/l3ZuHvye2ewR5cZNtp2zyWgILMA== dependencies: "@types/node" "*" @@ -5709,42 +5460,52 @@ integrity sha512-BkMHHonDT8NJUE/pQ3kr5v2GLDKm5or9btLBoBx4F2MB2cuqYC748LYMDC55VlrLI5qZZv+Qgc3m4P3dBPcmeg== "@types/node-fetch@^2.5.0", "@types/node-fetch@^2.5.12", "@types/node-fetch@^2.5.7": - version "2.5.12" - resolved "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.12.tgz#8a6f779b1d4e60b7a57fb6fd48d84fb545b9cc66" - integrity sha512-MKgC4dlq4kKNa/mYrwpKfzQMB5X3ee5U6fSprkKpToBqBmX4nFZL9cW5jl6sWn+xpRJ7ypWh2yyqqr8UUCstSw== + version "2.6.1" + resolved "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.1.tgz#8f127c50481db65886800ef496f20bbf15518975" + integrity sha512-oMqjURCaxoSIsHSr1E47QHzbmzNR5rK8McHuNb11BOM9cHcIK3Avy0s/b2JlXHoQGTYS3NsvWzV1M0iK7l0wbA== dependencies: "@types/node" "*" form-data "^3.0.0" -"@types/node@*", "@types/node@>= 8", "@types/node@>=12.12.47", "@types/node@>=13.7.0", "@types/node@^16.9.2": - version "16.11.6" - resolved "https://registry.npmjs.org/@types/node/-/node-16.11.6.tgz#6bef7a2a0ad684cf6e90fcfe31cecabd9ce0a3ae" - integrity sha512-ua7PgUoeQFjmWPcoo9khiPum3Pd60k4/2ZGXt18sm2Slk0W0xZTqt5Y0Ny1NyBiN1EVQ/+FaF9NcY4Qe6rwk5w== +"@types/node@*", "@types/node@>= 8", "@types/node@>=12.12.47", "@types/node@>=13.7.0": + version "17.0.18" + resolved "https://registry.npmjs.org/@types/node/-/node-17.0.18.tgz#3b4fed5cfb58010e3a2be4b6e74615e4847f1074" + integrity sha512-eKj4f/BsN/qcculZiRSujogjvp5O/k4lOW5m35NopjZM/QwLOR075a8pJW5hD+Rtdm2DaCVPENS6KtSQnUD6BA== -"@types/node@12.20.24", "@types/node@^12.7.1": +"@types/node@12.20.24": version "12.20.24" resolved "https://registry.npmjs.org/@types/node/-/node-12.20.24.tgz#c37ac69cb2948afb4cef95f424fa0037971a9a5c" integrity sha512-yxDeaQIAJlMav7fH5AQqPH1u8YIuhYJXYBzxaQ4PifsU0GDO38MSdmEDeRlIxrKbC6NbEaaEHDanWb+y30U8SQ== "@types/node@^10.1.0", "@types/node@^10.12.0": - version "10.17.13" - resolved "https://registry.npmjs.org/@types/node/-/node-10.17.13.tgz#ccebcdb990bd6139cd16e84c39dc2fb1023ca90c" - integrity sha512-pMCcqU2zT4TjqYFrWtYHKal7Sl30Ims6ulZ4UFXxI4xbtQqK/qqKwkDoBFCfooRqqmRu9vY3xaJRwxSh673aYg== + version "10.17.60" + resolved "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz#35f3d6213daed95da7f0f73e75bcc6980e90597b" + integrity sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw== + +"@types/node@^12.7.1": + version "12.20.46" + resolved "https://registry.npmjs.org/@types/node/-/node-12.20.46.tgz#7e49dee4c54fd19584e6a9e0da5f3dc2e9136bc7" + integrity sha512-cPjLXj8d6anFPzFvOPxS3fvly3Shm5nTfl6g8X5smexixbuGUf7hfr21J5tX9JW+UPStp/5P5R8qrKL5IyVJ+A== "@types/node@^14.14.31", "@types/node@^14.14.32": - version "14.17.8" - resolved "https://registry.npmjs.org/@types/node/-/node-14.17.8.tgz#813b73ab7d82ac06ddfd2458b13c88459a3b319f" - integrity sha512-0CHLt50GbUmH/6MrlBIKNdWCglvlyQKkorRf08/0DIi0ryuTPP+ijWLSI19SbDTHSKaagGDELiImY4BSikt61w== + version "14.18.12" + resolved "https://registry.npmjs.org/@types/node/-/node-14.18.12.tgz#0d4557fd3b94497d793efd4e7d92df2f83b4ef24" + integrity sha512-q4jlIR71hUpWTnGhXWcakgkZeHa3CCjcQcnuzU8M891BAWA2jHiziiWEPEkdS5pFsz7H9HJiy8BrK7tBRNrY7A== "@types/node@^15.6.1": version "15.14.9" resolved "https://registry.npmjs.org/@types/node/-/node-15.14.9.tgz#bc43c990c3c9be7281868bbc7b8fdd6e2b57adfa" integrity sha512-qjd88DrCxupx/kJD5yQgZdcYKZKSIGBVDIBE1/LTGcNm3d2Np/jxojkdePDdfnBHJc5W7vSMpbJ1aB7p/Py69A== +"@types/node@^16.9.2": + version "16.11.25" + resolved "https://registry.npmjs.org/@types/node/-/node-16.11.25.tgz#bb812b58bacbd060ce85921250d8b4ca553cd4a2" + integrity sha512-NrTwfD7L1RTc2qrHQD4RTTy4p0CO2LatKBEKEds3CaVuhoM/+DJzmWZl5f+ikR8cm8F5mfJxK+9rQq07gRiSjQ== + "@types/normalize-package-data@^2.4.0": - version "2.4.0" - resolved "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" - integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== + version "2.4.1" + resolved "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301" + integrity sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw== "@types/npm-packlist@^1.1.2": version "1.1.2" @@ -5799,9 +5560,9 @@ "@types/passport-oauth2" "*" "@types/passport-oauth2@*": - version "1.4.9" - resolved "https://registry.npmjs.org/@types/passport-oauth2/-/passport-oauth2-1.4.9.tgz#134007c4b505a82548c9cb19094c5baeb2205c92" - integrity sha512-QP0q+NVQOaIu2r0e10QWkiUA0Ya5mOBHRJN0UrI+LolMLOP1/VN4EVIpJ3xVwFo+xqNFRoFvFwJhBvKnk7kpUA== + version "1.4.11" + resolved "https://registry.npmjs.org/@types/passport-oauth2/-/passport-oauth2-1.4.11.tgz#fbca527ecb44258774d17bcb251630c321515fa9" + integrity sha512-KUNwmGhe/3xPbjkzkPwwcPmyFwfyiSgtV1qOrPBLaU4i4q9GSCdAOyCbkFG0gUxAyEmYwqo9OAF/rjPjJ6ImdA== dependencies: "@types/express" "*" "@types/oauth" "*" @@ -5836,9 +5597,9 @@ integrity sha512-BYOID+l2Aco2nBik+iYS4SZX0Lf20KPILP5RGmM1IgzdwNdTs0eebiFriOPcej1sX9mLnSoiNte5zcFxssgpGA== "@types/prettier@^2.0.0": - version "2.0.0" - resolved "https://registry.npmjs.org/@types/prettier/-/prettier-2.0.0.tgz#dc85454b953178cc6043df5208b9e949b54a3bc4" - integrity sha512-/rM+sWiuOZ5dvuVzV37sUuklsbg+JPOP8d+nNFlo2ZtfpzPiPvh1/gc8liWOLBqe+sR+ZM7guPaIcTt6UZTo7Q== + version "2.4.4" + resolved "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.4.tgz#5d9b63132df54d8909fce1c3f8ca260fdd693e17" + integrity sha512-ReVR2rLTV1kvtlWFyuot+d1pkpG2Fw/XKE3PDAdj57rbM97ttSp9JZ2UsP+2EHTylra9cUf6JA7tGwW1INzUrA== "@types/prop-types@*", "@types/prop-types@^15.7.3": version "15.7.4" @@ -5853,19 +5614,19 @@ "@types/node" "*" "@types/qs@*": - version "6.9.6" - resolved "https://registry.npmjs.org/@types/qs/-/qs-6.9.6.tgz#df9c3c8b31a247ec315e6996566be3171df4b3b1" - integrity sha512-0/HnwIfW4ki2D8L8c9GVcG5I72s9jP5GSLVF0VIXDW00kmIpA6O33G7a8n59Tmh7Nz0WUC3rSb7PTY/sdW2JzA== + version "6.9.7" + resolved "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" + integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== "@types/range-parser@*": - version "1.2.3" - resolved "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz#7ee330ba7caafb98090bece86a5ee44115904c2c" - integrity sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA== + version "1.2.4" + resolved "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" + integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== "@types/react-dom@*", "@types/react-dom@>=16.9.0": - version "17.0.9" - resolved "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.9.tgz#441a981da9d7be117042e1a6fd3dac4b30f55add" - integrity sha512-wIvGxLfgpVDSAMH5utdL9Ngm5Owu0VsGmldro3ORLXV8CShrL8awVj06NuEXFQ5xyaYfdca7Sgbk/50Ri1GdPg== + version "17.0.11" + resolved "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.11.tgz#e1eadc3c5e86bdb5f7684e00274ae228e7bcc466" + integrity sha512-f96K3k+24RaLGVu/Y2Ng3e1EbZ8/cVJvypZWd7cy0ofCBaf2lcM46xNhycMZ2xGwbBjRql7hOlZ+e2WlJ5MH3Q== dependencies: "@types/react" "*" @@ -5876,10 +5637,10 @@ dependencies: "@types/react" "*" -"@types/react-redux@^7.1.16": - version "7.1.19" - resolved "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.19.tgz#477bd0a9b01bae6d6bf809418cdfa7d3c16d4c62" - integrity sha512-L37dSCT0aoJnCgpR8Iuginlbxoh7qhWOXiaDqEsxVMrER1CmVhFD+63NxgJeT4pkmEM28oX0NH4S4f+sXHTZjA== +"@types/react-redux@^7.1.20": + version "7.1.22" + resolved "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.22.tgz#0eab76a37ef477cc4b53665aeaf29cb60631b72a" + integrity sha512-GxIA1kM7ClU73I6wg9IRTVwSO9GS+SAKZKe0Enj+82HMU6aoESFU2HNAdNi3+J53IaOHPiUfT3kSG4L828joDQ== dependencies: "@types/hoist-non-react-statics" "^3.3.0" "@types/react" "*" @@ -5887,9 +5648,9 @@ redux "^4.0.0" "@types/react-sparklines@^1.7.0": - version "1.7.0" - resolved "https://registry.npmjs.org/@types/react-sparklines/-/react-sparklines-1.7.0.tgz#f956d0f7b0e746ad445ce1cd250fe81f8a384684" - integrity sha512-Vd+cME7+Yy3kFNhnid9EBIKiyCQ/at8nqDczIs0UYfIB8AtaRJPqekigv02biOsIbQCvxyvIAIjiTKOC+hHNbA== + version "1.7.2" + resolved "https://registry.npmjs.org/@types/react-sparklines/-/react-sparklines-1.7.2.tgz#c14e80623abd3669a10f18d13f6fb9fbdc322f70" + integrity sha512-N1GwO7Ri5C5fE8+CxhiDntuSw1qYdGytBuedKrCxWpaojXm4WnfygbdBdc5sXGX7feMxDXBy9MNhxoUTwrMl4A== dependencies: "@types/react" "*" @@ -5901,9 +5662,9 @@ "@types/react" "*" "@types/react-test-renderer@>=16.9.0": - version "16.9.2" - resolved "https://registry.npmjs.org/@types/react-test-renderer/-/react-test-renderer-16.9.2.tgz#e1c408831e8183e5ad748fdece02214a7c2ab6c5" - integrity sha512-4eJr1JFLIAlWhzDkBCkhrOIWOvOxcCAfQh+jiKg7l/nNZcCIL2MHl2dZhogIFKyHzedVWHaVP1Yydq/Ruu4agw== + version "17.0.1" + resolved "https://registry.npmjs.org/@types/react-test-renderer/-/react-test-renderer-17.0.1.tgz#3120f7d1c157fba9df0118dae20cb0297ee0e06b" + integrity sha512-3Fi2O6Zzq/f3QR9dRnlnHso9bMl7weKCviFmfF6B4LS1Uat6Hkm15k0ZAQuDz+UBq6B3+g+NM6IT2nr5QgPzCw== dependencies: "@types/react" "*" @@ -5915,9 +5676,9 @@ "@types/react" "*" "@types/react-transition-group@^4.2.0": - version "4.2.4" - resolved "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.2.4.tgz#c7416225987ccdb719262766c1483da8f826838d" - integrity sha512-8DMUaDqh0S70TjkqU0DxOu80tFUiiaS9rxkWip/nb7gtvAsbqOXm02UCmR8zdcjWujgeYPiPNTVpVpKzUDotwA== + version "4.4.4" + resolved "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.4.tgz#acd4cceaa2be6b757db61ed7b432e103242d163e" + integrity sha512-7gAPz7anVK5xzbeQW9wFBDg7G++aPLAFY0QaSMOou9rJZpbuI58WAuJrgu+qR92l61grlnCUe7AFX8KGahAgug== dependencies: "@types/react" "*" @@ -5965,9 +5726,9 @@ integrity sha512-i7KOGl6xdkfpq5+p2ooC+/XFIRUMkYymZ29SD8p+Ko9lesKGUsh6860ey3YM7Y+ZG7kEDGcjzyLO3sOhozqEeA== "@types/request@^2.47.1": - version "2.48.5" - resolved "https://registry.npmjs.org/@types/request/-/request-2.48.5.tgz#019b8536b402069f6d11bee1b2c03e7f232937a0" - integrity sha512-/LO7xRVnL3DxJ1WkPGDQrp4VTV1reX9RkC85mJ+Qzykj2Bdw+mG15aAfDahc76HtknjzE16SX/Yddn6MxVbmGQ== + version "2.48.8" + resolved "https://registry.npmjs.org/@types/request/-/request-2.48.8.tgz#0b90fde3b655ab50976cb8c5ac00faca22f5a82c" + integrity sha512-whjk1EDJPcAR2kYHRbFl/lKeeKYTi05A15K9bnLInCVroNDCtXce57xKdI0/rQaA3K+6q0eFyUBPmqfSndUZdQ== dependencies: "@types/caseless" "*" "@types/node" "*" @@ -5994,9 +5755,9 @@ "@types/node" "*" "@types/retry@^0.12.0": - version "0.12.0" - resolved "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" - integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== + version "0.12.1" + resolved "https://registry.npmjs.org/@types/retry/-/retry-0.12.1.tgz#d8f1c0d0dc23afad6dc16a9e993a0865774b4065" + integrity sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g== "@types/rollup-plugin-peer-deps-external@^2.2.0": version "2.2.1" @@ -6016,14 +5777,14 @@ rollup "^0.63.4" "@types/scheduler@*": - version "0.16.1" - resolved "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.1.tgz#18845205e86ff0038517aab7a18a62a6b9f71275" - integrity sha512-EaCxbanVeyxDRTQBkdLb3Bvl/HK7PBK6UJjsSixB0iHKoWxE5uu2Q/DgtpOhPIojN0Zl1whvOd7PoHs2P0s5eA== + version "0.16.2" + resolved "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" + integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== "@types/semver@^6.0.0": - version "6.2.1" - resolved "https://registry.npmjs.org/@types/semver/-/semver-6.2.1.tgz#a236185670a7860f1597cf73bea2e16d001461ba" - integrity sha512-+beqKQOh9PYxuHvijhVl+tIHvT6tuwOrE9m14zd+MT2A38KoKZhh7pYJ0SNleLtwDsiIxHDsIk9bv01oOxvSvA== + version "6.2.3" + resolved "https://registry.npmjs.org/@types/semver/-/semver-6.2.3.tgz#5798ecf1bec94eaa64db39ee52808ec0693315aa" + integrity sha512-KQf+QAMWKMrtBMsB8/24w53tEsxllMj6TuA80TT/5igJalLI/zm0L3oXRbIAl4Ohfc85gyHX/jhMwsVkmhLU4A== "@types/semver@^7.3.8": version "7.3.9" @@ -6045,29 +5806,29 @@ "@types/express" "*" "@types/serve-static@*": - version "1.13.9" - resolved "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.9.tgz#aacf28a85a05ee29a11fb7c3ead935ac56f33e4e" - integrity sha512-ZFqF6qa48XsPdjXV5Gsz0Zqmux2PerNd3a/ktL45mHpa19cuMi/cL8tcxdAx497yRh+QtYPuofjT9oWw9P7nkA== + version "1.13.10" + resolved "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz#f5e0ce8797d2d7cc5ebeda48a52c96c4fa47a8d9" + integrity sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ== dependencies: "@types/mime" "^1" "@types/node" "*" "@types/set-cookie-parser@^2.4.0": - version "2.4.0" - resolved "https://registry.npmjs.org/@types/set-cookie-parser/-/set-cookie-parser-2.4.0.tgz#10cc0446bad372827671a5195fbd14ebce4a9baf" - integrity sha512-w7BFUq81sy7H/0jN0K5cax8MwRN6NOSURpY4YuO4+mOgoicxCZ33BUYz+gyF/sUf7uDl2We2yGJfppxzEXoAXQ== + version "2.4.2" + resolved "https://registry.npmjs.org/@types/set-cookie-parser/-/set-cookie-parser-2.4.2.tgz#b6a955219b54151bfebd4521170723df5e13caad" + integrity sha512-fBZgytwhYAUkj/jC/FAV4RQ5EerRup1YQsXQCh8rZfiHkc4UahC192oH0smGwsXol3cL3A5oETuAHeQHmhXM4w== dependencies: "@types/node" "*" "@types/sinonjs__fake-timers@^6.0.2": - version "6.0.2" - resolved "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.2.tgz#3a84cf5ec3249439015e14049bd3161419bf9eae" - integrity sha512-dIPoZ3g5gcx9zZEszaxLSVTvMReD3xxyyDnQUjA6IYDG9Ba2AV0otMPs+77sG9ojB4Qr2N2Vk5RnKeuA0X/0bg== + version "6.0.4" + resolved "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.4.tgz#0ecc1b9259b76598ef01942f547904ce61a6a77d" + integrity sha512-IFQTJARgMUBF+xVd2b+hIgXWrZEjND3vJtRCvIelcFB5SIXfjV4bOHbHJ0eXKh+0COrBRc8MqteKAz/j88rE0A== "@types/sizzle@*", "@types/sizzle@^2.3.2": - version "2.3.2" - resolved "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.2.tgz#a811b8c18e2babab7d542b3365887ae2e4d9de47" - integrity sha512-7EJYyKTL7tFR8+gDbB6Wwz/arpGa0Mywk1TJbNzKzHtzbwVmY4HR9WqS5VV7dsBUKQmPNr192jHr/VpBluj/hg== + version "2.3.3" + resolved "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.3.tgz#ff5e2f1902969d305225a047c8a0fd5c915cebef" + integrity sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ== "@types/sockjs@^0.3.33": version "0.3.33" @@ -6077,32 +5838,24 @@ "@types/node" "*" "@types/ssh2-streams@*": - version "0.1.8" - resolved "https://registry.npmjs.org/@types/ssh2-streams/-/ssh2-streams-0.1.8.tgz#142af404dae059931aea7fcd1511b5478964feb6" - integrity sha512-I7gixRPUvVIyJuCEvnmhr3KvA2dC0639kKswqD4H5b4/FOcnPtNU+qWLiXdKIqqX9twUvi5j0U1mwKE5CUsrfA== + version "0.1.9" + resolved "https://registry.npmjs.org/@types/ssh2-streams/-/ssh2-streams-0.1.9.tgz#8ca51b26f08750a780f82ee75ff18d7160c07a87" + integrity sha512-I2J9jKqfmvXLR5GomDiCoHrEJ58hAOmFrekfFqmCFd+A6gaEStvWnPykoWUwld1PNg4G5ag1LwdA+Lz1doRJqg== dependencies: "@types/node" "*" -"@types/ssh2@*": - version "0.5.47" - resolved "https://registry.npmjs.org/@types/ssh2/-/ssh2-0.5.47.tgz#67a8b35a0527b2bb668f6dea4c84be6ff1abdc19" - integrity sha512-ZhqJg8BRV7OsCi0KVqPr27lUMMmLEeHYw1VXUNGGDlQEDq9HTsKx+wYvi8E6oNC6gRZ7PV99ZMZmMr5vztcYYA== - dependencies: - "@types/node" "*" - "@types/ssh2-streams" "*" - -"@types/ssh2@^0.5.48": - version "0.5.48" - resolved "https://registry.npmjs.org/@types/ssh2/-/ssh2-0.5.48.tgz#0d9e8654a76eaaf4cfeaeb88d74c4489cfcf7aea" - integrity sha512-cmQu0gp/6RtDXe1r2xXGgi0V0TeCdueDSRMEvBX8cTRT/sSREkUpgCYZLyh+iI8Ql+VNV8Az9toQoYa/IdgHbQ== +"@types/ssh2@*", "@types/ssh2@^0.5.48": + version "0.5.51" + resolved "https://registry.npmjs.org/@types/ssh2/-/ssh2-0.5.51.tgz#8fd9f9d7d3e8973b5227878f8f1e2b4eda1716b3" + integrity sha512-aIq7ownezauW/+VWYaeXwd5J1Evnn4EXyeKi7bT3H6ZLBLoqsmhdvkHYPLpnZPM6unKKKsxTHIyQAVOZnPiJBw== dependencies: "@types/node" "*" "@types/ssh2-streams" "*" "@types/stack-utils@^2.0.0": - version "2.0.0" - resolved "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.0.tgz#7036640b4e21cc2f259ae826ce843d277dad8cff" - integrity sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw== + version "2.0.1" + resolved "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" + integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== "@types/stoppable@^1.1.0": version "1.1.1" @@ -6112,23 +5865,23 @@ "@types/node" "*" "@types/stream-buffers@^3.0.3": - version "3.0.3" - resolved "https://registry.npmjs.org/@types/stream-buffers/-/stream-buffers-3.0.3.tgz#34e565bf64e3e4bdeee23fd4aa58d4636014a02b" - integrity sha512-NeFeX7YfFZDYsCfbuaOmFQ0OjSmHreKBpp7MQ4alWQBHeh2USLsj7qyMyn9t82kjqIX516CR/5SRHnARduRtbQ== + version "3.0.4" + resolved "https://registry.npmjs.org/@types/stream-buffers/-/stream-buffers-3.0.4.tgz#bf128182da7bc62722ca0ddf5458a9c65f76e648" + integrity sha512-qU/K1tb2yUdhXkLIATzsIPwbtX6BpZk0l3dPW6xqWyhfzzM1ECaQ/8faEnu3CNraLiQ9LHyQQPBGp7N9Fbs25w== dependencies: "@types/node" "*" "@types/styled-jsx@^2.2.8": - version "2.2.8" - resolved "https://registry.npmjs.org/@types/styled-jsx/-/styled-jsx-2.2.8.tgz#b50d13d8a3c34036282d65194554cf186bab7234" - integrity sha512-Yjye9VwMdYeXfS71ihueWRSxrruuXTwKCbzue4+5b2rjnQ//AtyM7myZ1BEhNhBQ/nL/RE7bdToUoLln2miKvg== + version "2.2.9" + resolved "https://registry.npmjs.org/@types/styled-jsx/-/styled-jsx-2.2.9.tgz#e50b3f868c055bcbf9bc353eca6c10fdad32a53f" + integrity sha512-W/iTlIkGEyTBGTEvZCey8EgQlQ5l0DwMqi3iOXlLs2kyBwYTXHKEiU6IZ5EwoRwngL8/dGYuzezSup89ttVHLw== dependencies: "@types/react" "*" "@types/superagent@*": - version "4.1.7" - resolved "https://registry.npmjs.org/@types/superagent/-/superagent-4.1.7.tgz#a7d92d98c490ee0f802a127fdf149b9a114f77a5" - integrity sha512-JSwNPgRYjIC4pIeOqLwWwfGj6iP1n5NE6kNBEbGx2V8H78xCPwx7QpNp9plaI30+W3cFEzJO7BIIsXE+dbtaGg== + version "4.1.15" + resolved "https://registry.npmjs.org/@types/superagent/-/superagent-4.1.15.tgz#63297de457eba5e2bc502a7609426c4cceab434a" + integrity sha512-mu/N4uvfDN2zVQQ5AYJI/g4qxn2bHB6521t1UuH09ShNWjebTqN0ZFuYK9uYjcgmI0dTQEs+Owi1EO6U0OkOZQ== dependencies: "@types/cookiejar" "*" "@types/node" "*" @@ -6171,9 +5924,9 @@ "@types/node" "*" "@types/tern@*": - version "0.23.3" - resolved "https://registry.npmjs.org/@types/tern/-/tern-0.23.3.tgz#4b54538f04a88c9ff79de1f6f94f575a7f339460" - integrity sha512-imDtS4TAoTcXk0g7u4kkWqedB3E4qpjXzCpD2LU5M5NAXHzCDsypyvXSaG7mM8DKYkCRa7tFp4tS/lp/Wo7Q3w== + version "0.23.4" + resolved "https://registry.npmjs.org/@types/tern/-/tern-0.23.4.tgz#03926eb13dbeaf3ae0d390caf706b2643a0127fb" + integrity sha512-JAUw1iXGO1qaWwEOzxTKJZ/5JxVeON9kvGZ/osgZaJImBnyjyn0cjovPsf6FNLmyGY8Vw9DoXZCMlfMkMwHRWg== dependencies: "@types/estree" "*" @@ -6199,26 +5952,26 @@ "@types/node" "*" "@types/tough-cookie@*": - version "4.0.0" - resolved "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.0.tgz#fef1904e4668b6e5ecee60c52cc6a078ffa6697d" - integrity sha512-I99sngh224D0M7XgW1s120zxCt3VYQ3IQsuw3P3jbq5GG4yc79+ZjyKznyOGIQrflfylLgcfekeZW/vk0yng6A== + version "4.0.1" + resolved "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.1.tgz#8f80dd965ad81f3e1bc26d6f5c727e132721ff40" + integrity sha512-Y0K95ThC3esLEYD6ZuqNek29lNX2EM1qxV8y2FTLUB0ff5wWrk7az+mLrnNFUnaXcgKye22+sFBRXOgpPILZNg== "@types/trusted-types@*": version "2.0.2" resolved "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.2.tgz#fc25ad9943bcac11cceb8168db4f275e0e72e756" integrity sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg== -"@types/tunnel@^0.0.1": - version "0.0.1" - resolved "https://registry.npmjs.org/@types/tunnel/-/tunnel-0.0.1.tgz#0d72774768b73df26f25df9184273a42da72b19c" - integrity sha512-AOqu6bQu5MSWwYvehMXLukFHnupHrpZ8nvgae5Ggie9UwzDR1CCwoXgSSWNZJuyOlCdfdsWMA5F2LlmvyoTv8A== +"@types/tunnel@^0.0.3": + version "0.0.3" + resolved "https://registry.npmjs.org/@types/tunnel/-/tunnel-0.0.3.tgz#f109e730b072b3136347561fc558c9358bb8c6e9" + integrity sha512-sOUTGn6h1SfQ+gbgqC364jLFBw2lnFqkgF3q0WovEHRLMrVD1sd5aufqi/aJObLekJO+Aq5z646U4Oxy6shXMA== dependencies: "@types/node" "*" "@types/underscore@^1.8.9": - version "1.10.23" - resolved "https://registry.npmjs.org/@types/underscore/-/underscore-1.10.23.tgz#cc672e8864000d288e1e39c609fd9cab84391ff3" - integrity sha512-vX1NPekXhrLquFWskH2thcvFAha187F/lM6xYOoEMZWwJ/6alSk0/ttmGP/YRqcqtCv0TMbZjYAdZyHAEcuU4g== + version "1.11.4" + resolved "https://registry.npmjs.org/@types/underscore/-/underscore-1.11.4.tgz#62e393f8bc4bd8a06154d110c7d042a93751def3" + integrity sha512-uO4CD2ELOjw8tasUrAhvnn2W4A0ZECOvMjCivJr4gA9pGgjv+qxKWY9GLTMVEK8ej85BxQOocUyE7hImmSQYcg== "@types/unist@*", "@types/unist@^2.0.0": version "2.0.6" @@ -6233,9 +5986,9 @@ "@types/node" "*" "@types/uuid@^8.0.0": - version "8.3.0" - resolved "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.0.tgz#215c231dff736d5ba92410e6d602050cce7e273f" - integrity sha512-eQ9qFW/fhfGJF8WKHGEHZEyVWfZxrT+6CLIJGBcZPfxUh/+BnEj+UCGYMlr9qZuX/2AltsvwrGqp0LhEW8D0zQ== + version "8.3.4" + resolved "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz#bd86a43617df0594787d38b735f55c805becf1bc" + integrity sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw== "@types/vinyl@^2.0.4": version "2.0.6" @@ -6245,12 +5998,7 @@ "@types/expect" "^1.20.4" "@types/node" "*" -"@types/webpack-env@^1.15.2": - version "1.16.0" - resolved "https://registry.npmjs.org/@types/webpack-env/-/webpack-env-1.16.0.tgz#8c0a9435dfa7b3b1be76562f3070efb3f92637b4" - integrity sha512-Fx+NpfOO0CpeYX2g9bkvX8O5qh9wrU1sOF4g8sft4Mu7z+qfe387YlyY8w8daDyDsKY5vUxM0yxkAYnbkRbZEw== - -"@types/webpack-env@^1.15.3": +"@types/webpack-env@^1.15.2", "@types/webpack-env@^1.15.3": version "1.16.3" resolved "https://registry.npmjs.org/@types/webpack-env/-/webpack-env-1.16.3.tgz#b776327a73e561b71e7881d0cd6d34a1424db86a" integrity sha512-9gtOPPkfyNoEqCQgx4qJKkuNm/x0R2hKR7fdl7zvTJyHnIisuE/LfvXOsYWL0o3qq6uiBnKZNNNzi3l0y/X+xw== @@ -6271,10 +6019,10 @@ dependencies: "@types/node" "*" -"@types/websocket@1.0.4", "@types/websocket@^1.0.4": - version "1.0.4" - resolved "https://registry.npmjs.org/@types/websocket/-/websocket-1.0.4.tgz#1dc497280d8049a5450854dd698ee7e6ea9e60b8" - integrity sha512-qn1LkcFEKK8RPp459jkjzsfpbsx36BBt3oC3pITYtkoBw/aVX+EZFa5j3ThCRTNpLFvIMr5dSTD4RaMdilIOpA== +"@types/websocket@^1.0.4": + version "1.0.5" + resolved "https://registry.npmjs.org/@types/websocket/-/websocket-1.0.5.tgz#3fb80ed8e07f88e51961211cd3682a3a4a81569c" + integrity sha512-NbsqiNX9CnEfC1Z0Vf4mE1SgAJ07JnRYcNex7AJ9zAVzmiGHmjKFEk7O4TJIsgv2B1sLEb6owKFZrACwdYngsQ== dependencies: "@types/node" "*" @@ -6293,28 +6041,21 @@ "@types/node" "*" "@types/xml2js@*", "@types/xml2js@^0.4.7": - version "0.4.8" - resolved "https://registry.npmjs.org/@types/xml2js/-/xml2js-0.4.8.tgz#84c120c864a5976d0b5cf2f930a75d850fc2b03a" - integrity sha512-EyvT83ezOdec7BhDaEcsklWy7RSIdi6CNe95tmOAK0yx/Lm30C9K75snT3fYayK59ApC2oyW+rcHErdG05FHJA== + version "0.4.9" + resolved "https://registry.npmjs.org/@types/xml2js/-/xml2js-0.4.9.tgz#a38267d8c2fe121c96922b12ee3bd89a58a6e20e" + integrity sha512-CHiCKIihl1pychwR2RNX5mAYmJDACgFVCMT5OArMaO3erzwXVcBqPcusr+Vl8yeeXukxZqtF8mZioqX+mpjjdw== dependencies: "@types/node" "*" "@types/yargs-parser@*": - version "15.0.0" - resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d" - integrity sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw== + version "20.2.1" + resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.1.tgz#3b9ce2489919d9e4fea439b76916abc34b2df129" + integrity sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw== "@types/yargs@^15.0.0": - version "15.0.4" - resolved "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.4.tgz#7e5d0f8ca25e9d5849f2ea443cf7c402decd8299" - integrity sha512-9T1auFmbPZoxHz0enUFlUuKRy3it01R+hlggyVUMtnCTQRunsQYifnSGb8hET4Xo8yiC0o0r1paW3ud5+rbURg== - dependencies: - "@types/yargs-parser" "*" - -"@types/yargs@^16.0.0": - version "16.0.4" - resolved "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz#26aad98dd2c2a38e421086ea9ad42b9e51642977" - integrity sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw== + version "15.0.14" + resolved "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz#26d821ddb89e70492160b66d10a0eb6df8f6fb06" + integrity sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ== dependencies: "@types/yargs-parser" "*" @@ -6341,13 +6082,13 @@ integrity sha512-fbF6oTd4sGGy0xjHPKAt+eS2CrxJ3+6gQ3FGcBoIJR2TLAyCkCyI8JqZNy+FeON0AhVgNJoUumVoZQjBFUqHkw== "@typescript-eslint/eslint-plugin@^5.9.0": - version "5.9.0" - resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.9.0.tgz#382182d5cb062f52aac54434cfc47c28898c8006" - integrity sha512-qT4lr2jysDQBQOPsCCvpPUZHjbABoTJW8V9ZzIYKHMfppJtpdtzszDYsldwhFxlhvrp7aCHeXD1Lb9M1zhwWwQ== + version "5.12.0" + resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.12.0.tgz#bb46dd7ce7015c0928b98af1e602118e97df6c70" + integrity sha512-fwCMkDimwHVeIOKeBHiZhRUfJXU8n6xW1FL9diDxAyGAFvKcH4csy0v7twivOQdQdA0KC8TDr7GGRd3L4Lv0rQ== dependencies: - "@typescript-eslint/experimental-utils" "5.9.0" - "@typescript-eslint/scope-manager" "5.9.0" - "@typescript-eslint/type-utils" "5.9.0" + "@typescript-eslint/scope-manager" "5.12.0" + "@typescript-eslint/type-utils" "5.12.0" + "@typescript-eslint/utils" "5.12.0" debug "^4.3.2" functional-red-black-tree "^1.0.1" ignore "^5.1.8" @@ -6355,103 +6096,76 @@ semver "^7.3.5" tsutils "^3.21.0" -"@typescript-eslint/experimental-utils@5.9.0", "@typescript-eslint/experimental-utils@^5.0.0": - version "5.9.0" - resolved "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.9.0.tgz#652762d37d6565ef07af285021b8347b6c79a827" - integrity sha512-ZnLVjBrf26dn7ElyaSKa6uDhqwvAi4jBBmHK1VxuFGPRAxhdi18ubQYSGA7SRiFiES3q9JiBOBHEBStOFkwD2g== +"@typescript-eslint/experimental-utils@^5.0.0": + version "5.12.0" + resolved "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.12.0.tgz#b97c599a281f14a68015c25ee24966cb54ba9fc5" + integrity sha512-iFVADWH2CmiDF+E9kFK2r474BO2JILDKw1NVD5ytqHrM3ezsfdu5uo6B+77DH0suM7iUC/yOayHNziuiI9BPbQ== + dependencies: + "@typescript-eslint/utils" "5.12.0" + +"@typescript-eslint/parser@^5.9.0": + version "5.12.0" + resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.12.0.tgz#0ca669861813df99ce54916f66f524c625ed2434" + integrity sha512-MfSwg9JMBojMUoGjUmX+D2stoQj1CBYTCP0qnnVtu9A+YQXVKNtLjasYh+jozOcrb/wau8TCfWOkQTiOAruBog== + dependencies: + "@typescript-eslint/scope-manager" "5.12.0" + "@typescript-eslint/types" "5.12.0" + "@typescript-eslint/typescript-estree" "5.12.0" + debug "^4.3.2" + +"@typescript-eslint/scope-manager@5.12.0": + version "5.12.0" + resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.12.0.tgz#59619e6e5e2b1ce6cb3948b56014d3a24da83f5e" + integrity sha512-GAMobtIJI8FGf1sLlUWNUm2IOkIjvn7laFWyRx7CLrv6nLBI7su+B7lbStqVlK5NdLvHRFiJo2HhiDF7Ki01WQ== + dependencies: + "@typescript-eslint/types" "5.12.0" + "@typescript-eslint/visitor-keys" "5.12.0" + +"@typescript-eslint/type-utils@5.12.0": + version "5.12.0" + resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.12.0.tgz#aaf45765de71c6d9707c66ccff76ec2b9aa31bb6" + integrity sha512-9j9rli3zEBV+ae7rlbBOotJcI6zfc6SHFMdKI9M3Nc0sy458LJ79Os+TPWeBBL96J9/e36rdJOfCuyRSgFAA0Q== + dependencies: + "@typescript-eslint/utils" "5.12.0" + debug "^4.3.2" + tsutils "^3.21.0" + +"@typescript-eslint/types@5.12.0": + version "5.12.0" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.12.0.tgz#5b4030a28222ee01e851836562c07769eecda0b8" + integrity sha512-JowqbwPf93nvf8fZn5XrPGFBdIK8+yx5UEGs2QFAYFI8IWYfrzz+6zqlurGr2ctShMaJxqwsqmra3WXWjH1nRQ== + +"@typescript-eslint/typescript-estree@5.12.0": + version "5.12.0" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.12.0.tgz#cabf545fd592722f0e2b4104711e63bf89525cd2" + integrity sha512-Dd9gVeOqt38QHR0BEA8oRaT65WYqPYbIc5tRFQPkfLquVEFPD1HAtbZT98TLBkEcCkvwDYOAvuSvAD9DnQhMfQ== + dependencies: + "@typescript-eslint/types" "5.12.0" + "@typescript-eslint/visitor-keys" "5.12.0" + debug "^4.3.2" + globby "^11.0.4" + is-glob "^4.0.3" + semver "^7.3.5" + tsutils "^3.21.0" + +"@typescript-eslint/utils@5.12.0": + version "5.12.0" + resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.12.0.tgz#92fd3193191621ab863add2f553a7b38b65646af" + integrity sha512-k4J2WovnMPGI4PzKgDtQdNrCnmBHpMUFy21qjX2CoPdoBcSBIMvVBr9P2YDP8jOqZOeK3ThOL6VO/sy6jtnvzw== dependencies: "@types/json-schema" "^7.0.9" - "@typescript-eslint/scope-manager" "5.9.0" - "@typescript-eslint/types" "5.9.0" - "@typescript-eslint/typescript-estree" "5.9.0" + "@typescript-eslint/scope-manager" "5.12.0" + "@typescript-eslint/types" "5.12.0" + "@typescript-eslint/typescript-estree" "5.12.0" eslint-scope "^5.1.1" eslint-utils "^3.0.0" -"@typescript-eslint/parser@^5.9.0": - version "5.9.1" - resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.9.1.tgz#b114011010a87e17b3265ca715e16c76a9834cef" - integrity sha512-PLYO0AmwD6s6n0ZQB5kqPgfvh73p0+VqopQQLuNfi7Lm0EpfKyDalchpVwkE+81k5HeiRrTV/9w1aNHzjD7C4g== +"@typescript-eslint/visitor-keys@5.12.0": + version "5.12.0" + resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.12.0.tgz#1ac9352ed140b07ba144ebf371b743fdf537ec16" + integrity sha512-cFwTlgnMV6TgezQynx2c/4/tx9Tufbuo9LPzmWqyRC3QC4qTGkAG1C6pBr0/4I10PAI/FlYunI3vJjIcu+ZHMg== dependencies: - "@typescript-eslint/scope-manager" "5.9.1" - "@typescript-eslint/types" "5.9.1" - "@typescript-eslint/typescript-estree" "5.9.1" - debug "^4.3.2" - -"@typescript-eslint/scope-manager@5.9.0": - version "5.9.0" - resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.9.0.tgz#02dfef920290c1dcd7b1999455a3eaae7a1a3117" - integrity sha512-DKtdIL49Qxk2a8icF6whRk7uThuVz4A6TCXfjdJSwOsf+9ree7vgQWcx0KOyCdk0i9ETX666p4aMhrRhxhUkyg== - dependencies: - "@typescript-eslint/types" "5.9.0" - "@typescript-eslint/visitor-keys" "5.9.0" - -"@typescript-eslint/scope-manager@5.9.1": - version "5.9.1" - resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.9.1.tgz#6c27be89f1a9409f284d95dfa08ee3400166fe69" - integrity sha512-8BwvWkho3B/UOtzRyW07ffJXPaLSUKFBjpq8aqsRvu6HdEuzCY57+ffT7QoV4QXJXWSU1+7g3wE4AlgImmQ9pQ== - dependencies: - "@typescript-eslint/types" "5.9.1" - "@typescript-eslint/visitor-keys" "5.9.1" - -"@typescript-eslint/type-utils@5.9.0": - version "5.9.0" - resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.9.0.tgz#fd5963ead04bc9b7af9c3a8e534d8d39f1ce5f93" - integrity sha512-uVCb9dJXpBrK1071ri5aEW7ZHdDHAiqEjYznF3HSSvAJXyrkxGOw2Ejibz/q6BXdT8lea8CMI0CzKNFTNI6TEQ== - dependencies: - "@typescript-eslint/experimental-utils" "5.9.0" - debug "^4.3.2" - tsutils "^3.21.0" - -"@typescript-eslint/types@5.9.0": - version "5.9.0" - resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.9.0.tgz#e5619803e39d24a03b3369506df196355736e1a3" - integrity sha512-mWp6/b56Umo1rwyGCk8fPIzb9Migo8YOniBGPAQDNC6C52SeyNGN4gsVwQTAR+RS2L5xyajON4hOLwAGwPtUwg== - -"@typescript-eslint/types@5.9.1": - version "5.9.1" - resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.9.1.tgz#1bef8f238a2fb32ebc6ff6d75020d9f47a1593c6" - integrity sha512-SsWegWudWpkZCwwYcKoDwuAjoZXnM1y2EbEerTHho19Hmm+bQ56QG4L4jrtCu0bI5STaRTvRTZmjprWlTw/5NQ== - -"@typescript-eslint/typescript-estree@5.9.0": - version "5.9.0" - resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.9.0.tgz#0e5c6f03f982931abbfbc3c1b9df5fbf92a3490f" - integrity sha512-kxo3xL2mB7XmiVZcECbaDwYCt3qFXz99tBSuVJR4L/sR7CJ+UNAPrYILILktGj1ppfZ/jNt/cWYbziJUlHl1Pw== - dependencies: - "@typescript-eslint/types" "5.9.0" - "@typescript-eslint/visitor-keys" "5.9.0" - debug "^4.3.2" - globby "^11.0.4" - is-glob "^4.0.3" - semver "^7.3.5" - tsutils "^3.21.0" - -"@typescript-eslint/typescript-estree@5.9.1": - version "5.9.1" - resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.9.1.tgz#d5b996f49476495070d2b8dd354861cf33c005d6" - integrity sha512-gL1sP6A/KG0HwrahVXI9fZyeVTxEYV//6PmcOn1tD0rw8VhUWYeZeuWHwwhnewnvEMcHjhnJLOBhA9rK4vmb8A== - dependencies: - "@typescript-eslint/types" "5.9.1" - "@typescript-eslint/visitor-keys" "5.9.1" - debug "^4.3.2" - globby "^11.0.4" - is-glob "^4.0.3" - semver "^7.3.5" - tsutils "^3.21.0" - -"@typescript-eslint/visitor-keys@5.9.0": - version "5.9.0" - resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.9.0.tgz#7585677732365e9d27f1878150fab3922784a1a6" - integrity sha512-6zq0mb7LV0ThExKlecvpfepiB+XEtFv/bzx7/jKSgyXTFD7qjmSu1FoiS0x3OZaiS+UIXpH2vd9O89f02RCtgw== - dependencies: - "@typescript-eslint/types" "5.9.0" - eslint-visitor-keys "^3.0.0" - -"@typescript-eslint/visitor-keys@5.9.1": - version "5.9.1" - resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.9.1.tgz#f52206f38128dd4f675cf28070a41596eee985b7" - integrity sha512-Xh37pNz9e9ryW4TVdwiFzmr4hloty8cFj8GTWMXh3Z8swGwyQWeCcNgF0hm6t09iZd6eiZmIf4zHedQVP6TVtg== - dependencies: - "@typescript-eslint/types" "5.9.1" + "@typescript-eslint/types" "5.12.0" eslint-visitor-keys "^3.0.0" "@vscode/sqlite3@^5.0.7": @@ -6620,12 +6334,7 @@ a-sync-waterfall@^1.0.0: resolved "https://registry.npmjs.org/a-sync-waterfall/-/a-sync-waterfall-1.0.1.tgz#75b6b6aa72598b497a125e7a2770f14f4c8a1fa7" integrity sha512-RYTOHHdWipFUliRFMCS4X2Yn2X8M87V/OpSqWzKKOGhzqyUxzyVmhHDH9sAvG+ZuQf/TAOFsLCpMw09I1ufUnA== -abab@^2.0.3: - version "2.0.3" - resolved "https://registry.npmjs.org/abab/-/abab-2.0.3.tgz#623e2075e02eb2d3f2475e49f99c91846467907a" - integrity sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg== - -abab@^2.0.5: +abab@^2.0.3, abab@^2.0.5: version "2.0.5" resolved "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== @@ -6643,17 +6352,17 @@ abort-controller@3.0.0, abort-controller@^3.0.0: event-target-shim "^5.0.0" abstract-logging@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/abstract-logging/-/abstract-logging-2.0.0.tgz#08a85814946c98ef06f4256ad470aba1886d4490" - integrity sha512-/oA9z7JszpIioo6J6dB79LVUgJ3eD3cxkAmdCkvWWS+Y9tPtALs1rLqOekLUXUbYqM2fB9TTK0ibAyZJJOP/CA== + version "2.0.1" + resolved "https://registry.npmjs.org/abstract-logging/-/abstract-logging-2.0.1.tgz#6b0c371df212db7129b57d2e7fcf282b8bf1c839" + integrity sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA== -accepts@^1.3.5, accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: - version "1.3.7" - resolved "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" - integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== +accepts@^1.3.5, accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: + version "1.3.8" + resolved "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== dependencies: - mime-types "~2.1.24" - negotiator "0.6.2" + mime-types "~2.1.34" + negotiator "0.6.3" acorn-globals@^6.0.0: version "6.0.0" @@ -6664,19 +6373,19 @@ acorn-globals@^6.0.0: acorn-walk "^7.1.1" acorn-import-assertions@^1.7.6: - version "1.7.6" - resolved "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.7.6.tgz#580e3ffcae6770eebeec76c3b9723201e9d01f78" - integrity sha512-FlVvVFA1TX6l3lp8VjDnYYq7R1nyW6x3svAt4nDgrWQ9SBaSh9CnbwgSUTasgfNfOG5HlM1ehugCvM+hjo56LA== + version "1.8.0" + resolved "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz#ba2b5939ce62c238db6d93d81c9b111b29b855e9" + integrity sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw== acorn-jsx@^5.3.1: - version "5.3.1" - resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" - integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== + version "5.3.2" + resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== acorn-walk@^7.1.1: - version "7.1.1" - resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.1.1.tgz#345f0dffad5c735e7373d2fec9a1023e6a44b83e" - integrity sha512-wdlPY2tm/9XBr7QkKlq0WQVgiuGTX6YWPyRyBviSoScBuLfTVQhvwg6wJ369GJ/1nPfTLMfnrFIfjqVg6d+jQQ== + version "7.2.0" + resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" + integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== acorn-walk@^8.1.1, acorn-walk@^8.2.0: version "8.2.0" @@ -6703,14 +6412,7 @@ address@^1.0.1, address@^1.1.2: resolved "https://registry.npmjs.org/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6" integrity sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA== -agent-base@6: - version "6.0.1" - resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.1.tgz#808007e4e5867decb0ab6ab2f928fbdb5a596db4" - integrity sha512-01q25QQDwLSsyfhrKbn8yuur+JNw0H+0Y4JiGIKd3z9aYk/w/2kxD/Upc+t2ZBBSUNff50VjPsSW2YxM8QYKVg== - dependencies: - debug "4" - -agent-base@^6.0.2: +agent-base@6, agent-base@^6.0.2: version "6.0.2" resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== @@ -6753,7 +6455,7 @@ ajv-keywords@^5.0.0: dependencies: fast-deep-equal "^3.1.3" -ajv@^6.10.0, ajv@^6.10.1, ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.5.5, ajv@^6.7.0, ajv@~6.12.6: +ajv@^6.10.0, ajv@^6.10.1, ajv@^6.12.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.7.0, ajv@~6.12.6: version "6.12.6" resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -6764,9 +6466,9 @@ ajv@^6.10.0, ajv@^6.10.1, ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.5.5, ajv uri-js "^4.2.2" ajv@^7.0.3: - version "7.0.3" - resolved "https://registry.npmjs.org/ajv/-/ajv-7.0.3.tgz#13ae747eff125cafb230ac504b2406cf371eece2" - integrity sha512-R50QRlXSxqXcQP5SvKUrw8VZeypvo12i2IX0EeR5PiZ7bEKeHWgzgo264LDadUsCU42lTJVhFikTqJwNeH34gQ== + version "7.2.4" + resolved "https://registry.npmjs.org/ajv/-/ajv-7.2.4.tgz#8e239d4d56cf884bccca8cca362f508446dc160f" + integrity sha512-nBeQgg/ZZA3u3SYxyaDvpvDtgZ/EZPF547ARgZBrG9Bhu1vKDwAIjtIf+sDtJUKa2zOcEbmRLBRSyMraS/Oy1A== dependencies: fast-deep-equal "^3.1.1" json-schema-traverse "^1.0.0" @@ -6774,20 +6476,15 @@ ajv@^7.0.3: uri-js "^4.2.2" ajv@^8.0.0, ajv@^8.8.0: - version "8.9.0" - resolved "https://registry.npmjs.org/ajv/-/ajv-8.9.0.tgz#738019146638824dea25edcf299dcba1b0e7eb18" - integrity sha512-qOKJyNj/h+OWx7s5DePL6Zu1KeM9jPZhwBqs+7DzP6bGOvqzVCSf0xueYmVuaC/oQ/VtS2zLMLHdQFbkka+XDQ== + version "8.10.0" + resolved "https://registry.npmjs.org/ajv/-/ajv-8.10.0.tgz#e573f719bd3af069017e3b66538ab968d040e54d" + integrity sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw== dependencies: fast-deep-equal "^3.1.1" json-schema-traverse "^1.0.0" require-from-string "^2.0.2" uri-js "^4.2.2" -alphanum-sort@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" - integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= - already@^3.2.0: version "3.3.0" resolved "https://registry.npmjs.org/already/-/already-3.3.0.tgz#a5e5becd167cf537b45f8f1c23d331488ed77003" @@ -6801,11 +6498,11 @@ anafanafo@2.0.0: char-width-table-consumer "^1.0.0" ansi-align@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz#b536b371cf687caaef236c18d3e21fe3797467cb" - integrity sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw== + version "3.0.1" + resolved "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz#0cdf12e111ace773a86e9a1fad1225c43cb19a59" + integrity sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w== dependencies: - string-width "^3.0.0" + string-width "^4.1.0" ansi-colors@^4.1.1: version "4.1.1" @@ -6818,11 +6515,11 @@ ansi-escapes@^3.0.0: integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== ansi-escapes@^4.2.1, ansi-escapes@^4.3.0, ansi-escapes@^4.3.1: - version "4.3.1" - resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" - integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== + version "4.3.2" + resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== dependencies: - type-fest "^0.11.0" + type-fest "^0.21.3" ansi-html-community@^0.0.8: version "0.0.8" @@ -6867,11 +6564,10 @@ ansi-styles@^3.2.1: color-convert "^1.9.0" ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.2.1" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" - integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== + version "4.3.0" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== dependencies: - "@types/color-name" "^1.1.1" color-convert "^2.0.1" ansi-styles@^5.0.0: @@ -6910,13 +6606,13 @@ anymatch@^3.0.3, anymatch@~3.1.2: normalize-path "^3.0.0" picomatch "^2.0.4" -apollo-datasource@^3.3.0: - version "3.3.0" - resolved "https://registry.npmjs.org/apollo-datasource/-/apollo-datasource-3.3.0.tgz#ee84a802c45818e6a21a5f2d427f94851a4f9ebe" - integrity sha512-It8POTZTOCAnedRj2izEVeySN06LIfojigZjWaOY7voLe0DIgtvhql91xr27fuIWsR/Ew9twO3dLBjjvy34J4Q== +apollo-datasource@^3.3.1: + version "3.3.1" + resolved "https://registry.npmjs.org/apollo-datasource/-/apollo-datasource-3.3.1.tgz#a1168dd68371930de3ed4245ad12fa8600efe2cc" + integrity sha512-Z3a8rEUXVPIZ1p8xrFL8bcNhWmhOmovgDArvwIwmJOBnh093ZpRfO+ESJEDAN4KswmyzCLDAwjsW4zQOONdRUw== dependencies: apollo-server-caching "^3.3.0" - apollo-server-env "^4.2.0" + apollo-server-env "^4.2.1" apollo-reporting-protobuf@^3.3.0: version "3.3.0" @@ -6932,24 +6628,23 @@ apollo-server-caching@^3.3.0: dependencies: lru-cache "^6.0.0" -apollo-server-core@^3.6.1: - version "3.6.1" - resolved "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-3.6.1.tgz#e835198a2eda5bcb61d2a1174d44ecb0ac414d15" - integrity sha512-V2Us5x7d+w8dVdyFLxEygMgaQ3KZ6Z59HpaQBNHQ7C5wVZhjUXIsgbehBtfzQbMpyMx0z5/8Z8eIrC4zNoGJDw== +apollo-server-core@^3.6.3: + version "3.6.3" + resolved "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-3.6.3.tgz#6b12ffa1af8bc8799930f72360090834915033d1" + integrity sha512-TFJmAlI6vPp1MHOSXqYkE6leAyMekWv/D/3ma11uETkcd3EPjERGmxtTXPJElMVEkOK9BEElYKthCrH7bjYLuw== dependencies: "@apollographql/apollo-tools" "^0.5.1" "@apollographql/graphql-playground-html" "1.6.29" "@graphql-tools/mock" "^8.1.2" "@graphql-tools/schema" "^8.0.0" - "@graphql-tools/utils" "^8.0.0" "@josephg/resolvable" "^1.0.0" - apollo-datasource "^3.3.0" + apollo-datasource "^3.3.1" apollo-reporting-protobuf "^3.3.0" apollo-server-caching "^3.3.0" - apollo-server-env "^4.2.0" - apollo-server-errors "^3.3.0" - apollo-server-plugin-base "^3.5.0" - apollo-server-types "^3.5.0" + apollo-server-env "^4.2.1" + apollo-server-errors "^3.3.1" + apollo-server-plugin-base "^3.5.1" + apollo-server-types "^3.5.1" async-retry "^1.2.1" fast-json-stable-stringify "^2.1.0" graphql-tag "^2.11.0" @@ -6959,58 +6654,58 @@ apollo-server-core@^3.6.1: sha.js "^2.4.11" uuid "^8.0.0" -apollo-server-env@^4.2.0: - version "4.2.0" - resolved "https://registry.npmjs.org/apollo-server-env/-/apollo-server-env-4.2.0.tgz#d7cb08a81cee3025cd47b08be80b359d61d85913" - integrity sha512-4xJ+PCoWsFLj4rU6iXrIhqD7nI42goi4Iqrhsof9680ljSzkzd+PCwZsja3mHOFXKUQQUvJ7StVSgwaiRu45+A== +apollo-server-env@^4.2.1: + version "4.2.1" + resolved "https://registry.npmjs.org/apollo-server-env/-/apollo-server-env-4.2.1.tgz#ea5b1944accdbdba311f179e4dfaeca482c20185" + integrity sha512-vm/7c7ld+zFMxibzqZ7SSa5tBENc4B0uye9LTfjJwGoQFY5xsUPH5FpO5j0bMUDZ8YYNbrF9SNtzc5Cngcr90g== dependencies: - node-fetch "^2.6.1" + node-fetch "^2.6.7" -apollo-server-errors@^3.3.0: - version "3.3.0" - resolved "https://registry.npmjs.org/apollo-server-errors/-/apollo-server-errors-3.3.0.tgz#ac8ceb1400064312f983d8d70195693fbcf2be3c" - integrity sha512-9/MNlPZBbEjcCdJcUSbKbVEBT9xZS8GSpX7T/TyzcxHSbsXJszSDSipQNGC+PRKTKAUnv61IONScVyLKEZ5XEQ== +apollo-server-errors@^3.3.1: + version "3.3.1" + resolved "https://registry.npmjs.org/apollo-server-errors/-/apollo-server-errors-3.3.1.tgz#ba5c00cdaa33d4cbd09779f8cb6f47475d1cd655" + integrity sha512-xnZJ5QWs6FixHICXHxUfm+ZWqqxrNuPlQ+kj5m6RtEgIpekOPssH/SD9gf2B4HuWV0QozorrygwZnux8POvyPA== -apollo-server-express@^3.0.0, apollo-server-express@^3.6.1: - version "3.6.1" - resolved "https://registry.npmjs.org/apollo-server-express/-/apollo-server-express-3.6.1.tgz#b8bda303e05c551ac76c9c0b26bc651ca1466912" - integrity sha512-29imWvRPn5GsQq02Akt0+jejpWzpOIZfUmgoiFm4YB7somvhDNw15Pu7fv4sISK8ehNIDF68IpLd2cpY8sCkYQ== +apollo-server-express@^3.0.0, apollo-server-express@^3.6.3: + version "3.6.3" + resolved "https://registry.npmjs.org/apollo-server-express/-/apollo-server-express-3.6.3.tgz#5daf58bf0bdf0107ded7cd52c7e6ce6cd32c8b44" + integrity sha512-3CjahZ+n+1T7pHH1qW1B6Ns0BzwOMeupAp2u0+M8ruOmE/e7VKn0OSOQQckZ8Z2AcWxWeno9K89fIv3PoSYgYA== dependencies: "@types/accepts" "^1.3.5" "@types/body-parser" "1.19.2" "@types/cors" "2.8.12" "@types/express" "4.17.13" - "@types/express-serve-static-core" "4.17.27" + "@types/express-serve-static-core" "4.17.28" accepts "^1.3.5" - apollo-server-core "^3.6.1" - apollo-server-types "^3.5.0" + apollo-server-core "^3.6.3" + apollo-server-types "^3.5.1" body-parser "^1.19.0" cors "^2.8.5" parseurl "^1.3.3" -apollo-server-plugin-base@^3.5.0: - version "3.5.0" - resolved "https://registry.npmjs.org/apollo-server-plugin-base/-/apollo-server-plugin-base-3.5.0.tgz#f3cb4f677152b60113f06f8d23b6234ecff847b4" - integrity sha512-dpi+W6wexT4H3cjIhxC9SJABkR8TCfxycoHK+U4jxQXUdg50da+KnMgoWlQbF1tuXtUs4gnJtij1RjuGtKwBhw== +apollo-server-plugin-base@^3.5.1: + version "3.5.1" + resolved "https://registry.npmjs.org/apollo-server-plugin-base/-/apollo-server-plugin-base-3.5.1.tgz#73fc1591522e36e32eff3d033975333e30cf1a7c" + integrity sha512-wgDHz3lLrCqpecDky3z6AOQ0vik0qs0Cya/Ti6n3ESYXJ9MdK3jE/QunATIrOYYJaa+NKl9V7YwU+/bojNfFuQ== dependencies: - apollo-server-types "^3.5.0" + apollo-server-types "^3.5.1" -apollo-server-types@^3.5.0: - version "3.5.0" - resolved "https://registry.npmjs.org/apollo-server-types/-/apollo-server-types-3.5.0.tgz#82f912d7765152fe1fde86cea8a076e9a0831a9d" - integrity sha512-4JaZNu1kjrzIbppgc78hhIe2DFe+XONf8grprcjTOe0v8dIsuV0tFUnl+awTvTpHU1sdjRCKwnj382BebiL+qw== +apollo-server-types@^3.5.1: + version "3.5.1" + resolved "https://registry.npmjs.org/apollo-server-types/-/apollo-server-types-3.5.1.tgz#73fc8aa82b3175fde3906fa3d6786ee4d3e8c982" + integrity sha512-zG7xLl4mmHuZMAYOfjWKHY/IC/GgIkJ3HnYuR7FRrnPpRA9Yt5Kf1M1rjm1Esuqzpb/dt8pM7cX40QaIQObCYQ== dependencies: apollo-reporting-protobuf "^3.3.0" apollo-server-caching "^3.3.0" - apollo-server-env "^4.2.0" + apollo-server-env "^4.2.1" apollo-server@^3.0.0: - version "3.6.1" - resolved "https://registry.npmjs.org/apollo-server/-/apollo-server-3.6.1.tgz#29420b1c0cddbf2e18147a3ca7299485f17137a2" - integrity sha512-Y2MY2/WvaTiofVoIR5ZIYt6c6wX8klZRaXI9x+7JBiFV9HMcOuLLpU3+P4r2EVXuN1LLe82m1PgiAYr+a1OmQg== + version "3.6.3" + resolved "https://registry.npmjs.org/apollo-server/-/apollo-server-3.6.3.tgz#0ba0ddb2835ccf27056d20b6f5b83b0ce9545a79" + integrity sha512-kNvOiDNkIaO+MsfR9v40Vz4ArlDdc9VwVKGJy5dniLW9AoDa/tSF99m8ItfGoMypqlRPMgrNGxkMuToBnvYXNQ== dependencies: - apollo-server-core "^3.6.1" - apollo-server-express "^3.6.1" + apollo-server-core "^3.6.3" + apollo-server-express "^3.6.3" express "^4.17.1" aproba@^1.0.3: @@ -7074,9 +6769,9 @@ are-we-there-yet@^3.0.0: readable-stream "^3.6.0" are-we-there-yet@~1.1.2: - version "1.1.5" - resolved "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" - integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== + version "1.1.7" + resolved "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz#b15474a932adab4ff8a50d9adfa7e4e926f21146" + integrity sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g== dependencies: delegates "^1.0.0" readable-stream "^2.0.6" @@ -7141,11 +6836,6 @@ array-differ@^3.0.0: resolved "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz#3cbb3d0f316810eafcc47624734237d6aee4ae6b" integrity sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg== -array-filter@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/array-filter/-/array-filter-1.0.0.tgz#baf79e62e6ef4c2a4c0b831232daffec251f9d83" - integrity sha1-uveeYubvTCpMC4MSMtr/7CUfnYM= - array-flatten@1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" @@ -7161,7 +6851,7 @@ array-ify@^1.0.0: resolved "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" integrity sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4= -array-includes@^3.1.2, array-includes@^3.1.3, array-includes@^3.1.4: +array-includes@^3.1.3, array-includes@^3.1.4: version "3.1.4" resolved "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz#f5b493162c760f3539631f005ba2bb46acb45ba9" integrity sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw== @@ -7227,19 +6917,20 @@ asap@^2.0.0, asap@^2.0.3, asap@~2.0.3: resolved "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= -asn1.js@^4.0.0: - version "4.10.1" - resolved "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" - integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw== +asn1.js@^5.2.0: + version "5.4.1" + resolved "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" + integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== dependencies: bn.js "^4.0.0" inherits "^2.0.1" minimalistic-assert "^1.0.0" + safer-buffer "^2.1.0" asn1@^0.2.4, asn1@~0.2.3: - version "0.2.4" - resolved "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" - integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== + version "0.2.6" + resolved "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" + integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== dependencies: safer-buffer "~2.1.0" @@ -7279,16 +6970,16 @@ astral-regex@^2.0.0: integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== async-lock@^1.1.0: - version "1.2.4" - resolved "https://registry.npmjs.org/async-lock/-/async-lock-1.2.4.tgz#80d0d612383045dd0c30eb5aad08510c1397cb91" - integrity sha512-UBQJC2pbeyGutIfYmErGc9RaJYnpZ1FHaxuKwb0ahvGiiCkPUf3p67Io+YLPmmv3RHY+mF6JEtNW8FlHsraAaA== - -async-retry@^1.2.1, async-retry@^1.3.1: version "1.3.1" - resolved "https://registry.npmjs.org/async-retry/-/async-retry-1.3.1.tgz#139f31f8ddce50c0870b0ba558a6079684aaed55" - integrity sha512-aiieFW/7h3hY0Bq5d+ktDBejxuwR78vRu9hDUdR8rNhSaQ29VzPL4AoIRG7D/c7tdenwOcKvgPM6tIxB3cB6HA== + resolved "https://registry.npmjs.org/async-lock/-/async-lock-1.3.1.tgz#f2301c200600cde97acc386453b7126fa8aced3c" + integrity sha512-zK7xap9UnttfbE23JmcrNIyueAn6jWshihJqA33U/hEnKprF/lVGBDsBv/bqLm2YMMl1DnpHhUY044eA0t1TUw== + +async-retry@^1.2.1, async-retry@^1.3.3: + version "1.3.3" + resolved "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz#0e7f36c04d8478e7a58bdbed80cedf977785f280" + integrity sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw== dependencies: - retry "0.12.0" + retry "0.13.1" async@0.9.x: version "0.9.2" @@ -7333,32 +7024,30 @@ auto-bind@~4.0.0: integrity sha512-Hdw8qdNiqdJ8LqT0iK0sVzkFbzg6fhnQqqfWhBDxcHZvU75+B+ayzTy8x+k5Ix0Y92XOhOUlx74ps+bA6BeYMQ== autolinker@^3.11.0: - version "3.14.1" - resolved "https://registry.npmjs.org/autolinker/-/autolinker-3.14.1.tgz#6ae4b812b6eaf42d4d68138b9e67757cbf2bc1e4" - integrity sha512-yvsRHIaY51EYDml6MGlbqyJGfl4n7zezGYf+R7gvM8c5LNpRGc4SISkvgAswSS8SWxk/OrGCylKV9mJyVstz7w== + version "3.14.3" + resolved "https://registry.npmjs.org/autolinker/-/autolinker-3.14.3.tgz#c61c424bc6077bcf2fc62803803ec2f58e15a7ec" + integrity sha512-t81i2bCpS+s+5FIhatoww9DmpjhbdiimuU9ATEuLxtZMQ7jLv9fyFn7SWNG8IkEfD4AmYyirL1ss9k1aqVWRvg== dependencies: tslib "^1.9.3" -available-typed-arrays@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.2.tgz#6b098ca9d8039079ee3f77f7b783c4480ba513f5" - integrity sha512-XWX3OX8Onv97LMk/ftVyBibpGwY5a8SmuxZPzeOxqmuEqUCOM9ZE+uIaD1VNJ5QnvU2UQusvmKbuM1FR8QWGfQ== - dependencies: - array-filter "^1.0.0" +available-typed-arrays@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" + integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== aws-sdk-mock@^5.2.1: - version "5.2.1" - resolved "https://registry.npmjs.org/aws-sdk-mock/-/aws-sdk-mock-5.2.1.tgz#126d4d5362c96b7d1d0bd87708a99d626c19ffd4" - integrity sha512-dY7zA1p/lX335V4/aOJ2L8ggXC3a5zokTJFZlZVW3uU+Zej7u+V7WrEcN5TVaJAnk4auT263T6EK/OHW4WjKhw== + version "5.6.2" + resolved "https://registry.npmjs.org/aws-sdk-mock/-/aws-sdk-mock-5.6.2.tgz#664771462953ca8d3806d5a50a63b4a6dbd5290f" + integrity sha512-GRJg8kjRJFLm2aLiPkYSqe/RreHqlqncAeFtWdAbtSxzBdct9EaV6rqSqjyWXKNJG45Rzn2Ojo3F6qVIgkQnSg== dependencies: aws-sdk "^2.928.0" sinon "^11.1.1" traverse "^0.6.6" aws-sdk@^2.840.0, aws-sdk@^2.928.0, aws-sdk@^2.948.0: - version "2.1065.0" - resolved "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1065.0.tgz#82b6e4e2a6fbccb1767339e309edd4f0daa958e6" - integrity sha512-OFvpXoL104dTFKpU14ILcLDPAlDbkJNIKXnnG2pK+2x++CvzIRJeNyERtUuEo7QMUOwq5U4nIQJKSPt5fBC/HA== + version "2.1075.0" + resolved "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1075.0.tgz#609ef1e77b9b75cdbdd25b6084bcff571991a034" + integrity sha512-pYUwYidC2BGKNCz4a1ukA9FC+nYFrW1SxmacWMT/w5k/WBkU/kRgXH0D3poFCurhz/IUdSf34sQsSQ8d3TkNbw== dependencies: buffer "4.9.2" events "1.1.1" @@ -7381,9 +7070,9 @@ aws4@^1.11.0, aws4@^1.8.0: integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== axe-core@^4.3.5: - version "4.3.5" - resolved "https://registry.npmjs.org/axe-core/-/axe-core-4.3.5.tgz#78d6911ba317a8262bfee292aeafcc1e04b49cc5" - integrity sha512-WKTW1+xAzhMS5dJsxWkliixlO/PqC4VhmO9T4juNYcaTg9jzWiJsou6m5pxWYGfigWbwzJWeFY6z47a+4neRXA== + version "4.4.1" + resolved "https://registry.npmjs.org/axe-core/-/axe-core-4.4.1.tgz#7dbdc25989298f9ad006645cd396782443757413" + integrity sha512-gd1kmb21kwNuWr6BQz8fv6GNECPBnUasepcoLbekws23NVBLODdsClRZ+bQ8+9Uomf3Sm3+Vwn0oYG9NvwnJCw== axios-cached-dns-resolve@0.5.2: version "0.5.2" @@ -7444,14 +7133,14 @@ babel-plugin-dynamic-import-node@^2.3.3: object.assign "^4.1.0" babel-plugin-istanbul@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz#e159ccdc9af95e0b570c75b4573b7c34d671d765" - integrity sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ== + version "6.1.1" + resolved "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" + integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@istanbuljs/load-nyc-config" "^1.0.0" "@istanbuljs/schema" "^0.1.2" - istanbul-lib-instrument "^4.0.0" + istanbul-lib-instrument "^5.0.4" test-exclude "^6.0.0" babel-plugin-jest-hoist@^26.6.2: @@ -7474,12 +7163,12 @@ babel-plugin-polyfill-corejs2@^0.3.0: semver "^6.1.1" babel-plugin-polyfill-corejs3@^0.5.0: - version "0.5.1" - resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.1.tgz#d66183bf10976ea677f4149a7fcc4d8df43d4060" - integrity sha512-TihqEe4sQcb/QcPJvxe94/9RZuLQuF1+To4WqQcRvc+3J3gLCPIPgDKzGLG6zmQLfH3nn25heRuDNkS2KR4I8A== + version "0.5.2" + resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz#aabe4b2fa04a6e038b688c5e55d44e78cd3a5f72" + integrity sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ== dependencies: "@babel/helper-define-polyfill-provider" "^0.3.1" - core-js-compat "^3.20.0" + core-js-compat "^3.21.0" babel-plugin-polyfill-regenerator@^0.3.0: version "0.3.1" @@ -7503,9 +7192,9 @@ babel-polyfill@^6.26.0: regenerator-runtime "^0.10.5" babel-preset-current-node-syntax@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.0.tgz#cf5feef29551253471cfa82fc8e0f5063df07a77" - integrity sha512-mGkvkpocWJes1CmMKtgGUwCeeq0pOhALyymozzDWYomHTbDLwueDYG6p4TK1YOeYHCzBzYPsWkgTto10JubI1Q== + version "1.0.1" + resolved "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" + integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== dependencies: "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-syntax-bigint" "^7.8.3" @@ -7590,9 +7279,9 @@ badge-maker@^3.3.0: css-color-converter "^2.0.0" bail@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/bail/-/bail-2.0.1.tgz#d676736373a374058a935aec81b94c12ba815771" - integrity sha512-d5FoTAr2S5DSUPKl85WNm2yUwsINN8eidIdIwsOge2t33DaOfOdSmmsI11jMN3GmALCXaw+Y6HMVHDzePshFAA== + version "2.0.2" + resolved "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz#d26f5cd8fe5d6f832a31517b9f7c356040ba6d5d" + integrity sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw== balanced-match@^0.4.2: version "0.4.2" @@ -7651,11 +7340,6 @@ bdd-lazy-var@^2.6.0: resolved "https://registry.npmjs.org/bdd-lazy-var/-/bdd-lazy-var-2.6.1.tgz#ca03fb36d68c5a507c0ba9a4d53160b899e6b7cb" integrity sha512-X3ADwcFji/IHIrYJhTTpaiWhoOx4pl4whdAx1dmvdeUPsMUb7fVYFvf/Q33VEAEAVkEwi5rgNSZ0Y9oOVeQV+A== -before-after-hook@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.1.0.tgz#b6c03487f44e24200dd30ca5e6a1979c5d2fb635" - integrity sha512-IWIbu7pMqyw3EAJHzzHbWa85b6oud/yfKYg5rqB5hNE8CeMi3nX+2C2sj0HswfblST86hpVEOAb9x34NZd6P7A== - before-after-hook@^2.2.0: version "2.2.2" resolved "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.2.tgz#a6e8ca41028d90ee2c24222f201c90956091613e" @@ -7679,9 +7363,9 @@ bfj@^7.0.2: tryer "^1.0.1" big-integer@^1.6.17: - version "1.6.48" - resolved "https://registry.npmjs.org/big-integer/-/big-integer-1.6.48.tgz#8fd88bd1632cba4a1c8c3e3d7159f08bb95b4b9e" - integrity sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w== + version "1.6.51" + resolved "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz#0df92a5d9880560d3ff2d5fd20245c889d130686" + integrity sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg== big.js@^5.2.2: version "5.2.2" @@ -7689,9 +7373,9 @@ big.js@^5.2.2: integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== bignumber.js@^9.0.0: - version "9.0.1" - resolved "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.1.tgz#8d7ba124c882bfd8e43260c67475518d0689e4e5" - integrity sha512-IdZR9mh6ahOBv/hYGiXyVuyCetmGJhtYkqLBpTStdhEGjegpPlUawydyaF3pbIOFynJTpllEs+NP+CS9jKFLjA== + version "9.0.2" + resolved "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.2.tgz#71c6c6bed38de64e24a65ebe16cfcf23ae693673" + integrity sha512-GAcQvbpsM0pUb0zw1EI0KhQEZ+lRwR5fYaAp3vPOYuP7aDvGy6cVN6XHLauvF8SOga2y0dcLcjt3iQDTSEliyw== bin-links@^3.0.0: version "3.0.0" @@ -7706,9 +7390,9 @@ bin-links@^3.0.0: write-file-atomic "^4.0.0" binary-extensions@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz#23c0df14f6a88077f5f986c0d167ec03c3d5537c" - integrity sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow== + version "2.2.0" + resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== binary-search@^1.3.5: version "1.3.6" @@ -7757,25 +7441,30 @@ bluebird@~3.4.1: resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz#f72d760be09b7f76d08ed8fae98b289a8d05fab3" integrity sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM= -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.11.9: +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: version "4.12.0" resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== -body-parser@1.19.1, body-parser@^1.19.0: - version "1.19.1" - resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.19.1.tgz#1499abbaa9274af3ecc9f6f10396c995943e31d4" - integrity sha512-8ljfQi5eBk8EJfECMrgqNGWPEY5jWP+1IzkzkGdFFEwFQZZyaZ21UqdaHktgiMlH0xLHqIFtE/u2OYE5dOtViA== +bn.js@^5.0.0, bn.js@^5.1.1: + version "5.2.0" + resolved "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz#358860674396c6997771a9d051fcc1b57d4ae002" + integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw== + +body-parser@1.19.2, body-parser@^1.19.0: + version "1.19.2" + resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.19.2.tgz#4714ccd9c157d44797b8b5607d72c0b89952f26e" + integrity sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw== dependencies: - bytes "3.1.1" + bytes "3.1.2" content-type "~1.0.4" debug "2.6.9" depd "~1.1.2" http-errors "1.8.1" iconv-lite "0.4.24" on-finished "~2.3.0" - qs "6.9.6" - raw-body "2.4.2" + qs "6.9.7" + raw-body "2.4.3" type-is "~1.6.18" bonjour@^3.5.0: @@ -7893,26 +7582,28 @@ browserify-des@^1.0.0: inherits "^2.0.1" safe-buffer "^5.1.2" -browserify-rsa@^4.0.0: - version "4.0.1" - resolved "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" - integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ= +browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: + version "4.1.0" + resolved "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" + integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== dependencies: - bn.js "^4.1.0" + bn.js "^5.0.0" randombytes "^2.0.1" browserify-sign@^4.0.0: - version "4.0.4" - resolved "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298" - integrity sha1-qk62jl17ZYuqa/alfmMMvXqT0pg= + version "4.2.1" + resolved "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" + integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== dependencies: - bn.js "^4.1.1" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.2" - elliptic "^6.0.0" - inherits "^2.0.1" - parse-asn1 "^5.0.0" + bn.js "^5.1.1" + browserify-rsa "^4.0.1" + create-hash "^1.2.0" + create-hmac "^1.1.7" + elliptic "^6.5.3" + inherits "^2.0.4" + parse-asn1 "^5.1.5" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" browserify-zlib@^0.2.0: version "0.2.0" @@ -7921,7 +7612,7 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.16.0, browserslist@^4.16.6, browserslist@^4.17.5, browserslist@^4.18.1, browserslist@^4.19.1: +browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.16.6, browserslist@^4.17.5, browserslist@^4.18.1, browserslist@^4.19.1: version "4.19.1" resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.19.1.tgz#4ac0435b35ab655896c31d53018b6dd5e9e4c9a3" integrity sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A== @@ -7960,9 +7651,9 @@ buffer-equal-constant-time@1.0.1: integrity sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk= buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== + version "1.1.2" + resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== buffer-indexof-polyfill@~1.0.0: version "1.0.2" @@ -8015,9 +7706,9 @@ buffers@~0.1.1: integrity sha1-skV5w77U1tOWru5tmorn9Ugqt7s= builtin-modules@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz#aad97c15131eb76b65b50ef208e7584cd76a7484" - integrity sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw== + version "3.2.0" + resolved "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz#45d5db99e7ee5e6bc4f362e008bf917ab5049887" + integrity sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA== builtin-status-codes@^3.0.0: version "3.0.0" @@ -8035,19 +7726,19 @@ byline@^5.0.0: integrity sha1-dBxSFkaOrcRXsDQQEYrXfejB3bE= byte-size@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/byte-size/-/byte-size-7.0.0.tgz#36528cd1ca87d39bd9abd51f5715dc93b6ceb032" - integrity sha512-NNiBxKgxybMBtWdmvx7ZITJi4ZG+CYUgwOSZTfqB1qogkRHrhbQE/R2r5Fh94X+InN5MCYz6SvB/ejHMj/HbsQ== + version "7.0.1" + resolved "https://registry.npmjs.org/byte-size/-/byte-size-7.0.1.tgz#b1daf3386de7ab9d706b941a748dbfc71130dee3" + integrity sha512-crQdqyCwhokxwV1UyDzLZanhkugAgft7vt0qbbdt60C6Zf3CAiGmtUCylbtYwrU6loOUw3euGrNtW1J651ot1A== bytes@3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= -bytes@3.1.1: - version "3.1.1" - resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.1.tgz#3f018291cb4cbad9accb6e6970bca9c8889e879a" - integrity sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg== +bytes@3.1.2: + version "3.1.2" + resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== cacache@^15.0.3, cacache@^15.0.5, cacache@^15.2.0, cacache@^15.3.0: version "15.3.0" @@ -8089,9 +7780,9 @@ cache-base@^1.0.1: unset-value "^1.0.0" cacheable-lookup@^5.0.3: - version "5.0.3" - resolved "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.3.tgz#049fdc59dffdd4fc285e8f4f82936591bd59fec3" - integrity sha512-W+JBqF9SWe18A72XFzN/V/CULFzPm7sBXzzR6ekkE+3tLG72wFZrBiBZhrZuDoYexop4PHJVdFAKb/Nj9+tm9w== + version "5.0.4" + resolved "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz#5a6b865b2c44357be3d5ebc2a467b032719a7005" + integrity sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA== cacheable-request@^6.0.0: version "6.1.0" @@ -8160,11 +7851,11 @@ camelcase-keys@^6.2.2: quick-lru "^4.0.1" camelcase-keys@^7.0.1: - version "7.0.1" - resolved "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-7.0.1.tgz#5a57e6dfb3f6c7929dad15599ee4476a7e9a3b2d" - integrity sha512-P331lEls98pW8JLyodNWfzuz91BEDVA4VpW2/SwXnyv2K495tq1N777xzDbFgnEigfA7UIY0xa6PwR/H9jijjA== + version "7.0.2" + resolved "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-7.0.2.tgz#d048d8c69448745bb0de6fc4c1c52a30dfbe7252" + integrity sha512-Rjs1H+A9R+Ig+4E/9oyB66UC5Mj9Xq3N//vcLf2WzgdTi/3gUu3Z9KoqmlrEG4VuuLK8wJHofxzdQXz/knhiYg== dependencies: - camelcase "^6.2.0" + camelcase "^6.3.0" map-obj "^4.1.0" quick-lru "^5.1.1" type-fest "^1.2.1" @@ -8184,10 +7875,10 @@ camelcase@^5.0.0, camelcase@^5.3.1: resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -camelcase@^6.0.0, camelcase@^6.2.0: - version "6.2.0" - resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" - integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== +camelcase@^6.0.0, camelcase@^6.2.0, camelcase@^6.3.0: + version "6.3.0" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== caniuse-api@^3.0.0: version "3.0.0" @@ -8199,23 +7890,18 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0: - version "1.0.30001282" - resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001282.tgz#38c781ee0a90ccfe1fe7fefd00e43f5ffdcb96fd" - integrity sha512-YhF/hG6nqBEllymSIjLtR2iWDDnChvhnVJqp+vloyt2tEHFG1yBR+ac2B/rOw0qOK0m0lEXU2dv4E/sMk5P9Kg== - -caniuse-lite@^1.0.30001286: - version "1.0.30001296" - resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001296.tgz#d99f0f3bee66544800b93d261c4be55a35f1cec8" - integrity sha512-WfrtPEoNSoeATDlf4y3QvkwiELl9GyPLISV5GejTbbQRtQx4LhsXmc9IQ6XCL2d7UxCyEzToEZNMeqR79OUw8Q== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001286: + version "1.0.30001312" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001312.tgz#e11eba4b87e24d22697dae05455d5aea28550d5f" + integrity sha512-Wiz1Psk2MEK0pX3rUzWaunLTZzqS2JYZFzNKqAiJGiuxIjRPLgV6+VDPOg6lQOUxmDwhTlh198JsTTi8Hzw6aQ== canvas@^2.6.1: - version "2.8.0" - resolved "https://registry.npmjs.org/canvas/-/canvas-2.8.0.tgz#f99ca7f25e6e26686661ffa4fec1239bbef74461" - integrity sha512-gLTi17X8WY9Cf5GZ2Yns8T5lfBOcGgFehDFb+JQwDqdOoBOcECS9ZWMEAqMSVcMYwXD659J8NyzjRY/2aE+C2Q== + version "2.9.0" + resolved "https://registry.npmjs.org/canvas/-/canvas-2.9.0.tgz#7df0400b141a7e42e597824f377935ba96880f2a" + integrity sha512-0l93g7uxp7rMyr7H+XRQ28A3ud0dKIUTIEkUe1Dxh4rjUYN7B93+SjC3r1PDKA18xcQN87OFGgUnyw7LSgNLSQ== dependencies: "@mapbox/node-pre-gyp" "^1.0.0" - nan "^2.14.0" + nan "^2.15.0" simple-get "^3.0.3" capital-case@^1.0.4: @@ -8240,9 +7926,9 @@ caseless@~0.12.0: integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= ccount@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/ccount/-/ccount-2.0.0.tgz#3d6fb55803832766a24c6f339abc507297eb5d25" - integrity sha512-VOR0NWFYX65n9gELQdcpqsie5L5ihBXuZGAgaPEp/U7IOSjnPMEH6geE+2f6lcekaNEfWzAHS45mPvSo5bqsUA== + version "2.0.1" + resolved "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz#17a3bf82302e0870d6da43a01311a8bc02a3ecf5" + integrity sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg== chainsaw@~0.1.0: version "0.1.0" @@ -8346,31 +8032,21 @@ character-entities-legacy@^1.0.0: resolved "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz#94bc1845dce70a5bb9d2ecc748725661293d8fc1" integrity sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA== -character-entities-legacy@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-2.0.0.tgz#57f4d00974c696e8f74e9f493e7fcb75b44d7ee7" - integrity sha512-YwaEtEvWLpFa6Wh3uVLrvirA/ahr9fki/NUd/Bd4OR6EdJ8D22hovYQEOUCBfQfcqnC4IAMGMsHXY1eXgL4ZZA== - character-entities@^1.0.0: version "1.2.4" resolved "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz#e12c3939b7eaf4e5b15e7ad4c5e28e1d48c5b16b" integrity sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw== character-entities@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/character-entities/-/character-entities-2.0.0.tgz#508355fcc8c73893e0909efc1a44d28da2b6fdf3" - integrity sha512-oHqMj3eAuJ77/P5PaIRcqk+C3hdfNwyCD2DAUcD5gyXkegAuF2USC40CEqPscDk4I8FRGMTojGJQkXDsN5QlJA== + version "2.0.1" + resolved "https://registry.npmjs.org/character-entities/-/character-entities-2.0.1.tgz#98724833e1e27990dee0bd0f2b8a859c3476aac7" + integrity sha512-OzmutCf2Kmc+6DrFrrPS8/tDh2+DpnrfzdICHWhcVC9eOd0N1PXmQEE1a8iM4IziIAG+8tmTq3K+oo0ubH6RRQ== character-reference-invalid@^1.0.0: version "1.1.4" resolved "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz#083329cda0eae272ab3dbbf37e9a382c13af1560" integrity sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg== -character-reference-invalid@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.0.tgz#a0bdeb89c051fe7ed5d3158b2f06af06984f2813" - integrity sha512-pE3Z15lLRxDzWJy7bBHBopRwfI20sbrMVLQTC7xsPglCHf4Wv1e167OgYAFP78co2XlhojDyAqA+IAJse27//g== - chardet@^0.7.0: version "0.7.0" resolved "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" @@ -8412,11 +8088,9 @@ chownr@^2.0.0: integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== chrome-trace-event@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" - integrity sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ== - dependencies: - tslib "^1.9.0" + version "1.0.3" + resolved "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" + integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== ci-info@^2.0.0: version "2.0.0" @@ -8464,9 +8138,9 @@ classnames@*, classnames@^2.2.5, classnames@^2.2.6, classnames@^2.3.1: integrity sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA== clean-css@^5.2.2: - version "5.2.2" - resolved "https://registry.npmjs.org/clean-css/-/clean-css-5.2.2.tgz#d3a7c6ee2511011e051719838bdcf8314dc4548d" - integrity sha512-/eR8ru5zyxKzpBLv9YZvMXgTSSQn7AdkMItMYynsFgGwTveCRVam9IUPFloE85B4vAIj05IuKmmEoV7/AQjT0w== + version "5.2.4" + resolved "https://registry.npmjs.org/clean-css/-/clean-css-5.2.4.tgz#982b058f8581adb2ae062520808fb2429bd487a4" + integrity sha512-nKseG8wCzEuji/4yrgM/5cthL9oTDc5UOQyFMvW/Q53oP6gLH690o1NbuTh6Y18nujr7BxlsFuS7gXLnLzKJGg== dependencies: source-map "~0.6.0" @@ -8485,13 +8159,6 @@ cli-boxes@^2.2.1: resolved "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== -cli-cursor@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987" - integrity sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc= - dependencies: - restore-cursor "^1.0.1" - cli-cursor@^2.0.0, cli-cursor@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" @@ -8507,24 +8174,23 @@ cli-cursor@^3.1.0: restore-cursor "^3.1.0" cli-spinners@^2.5.0: - version "2.5.0" - resolved "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.5.0.tgz#12763e47251bf951cb75c201dfa58ff1bcb2d047" - integrity sha512-PC+AmIuK04E6aeSs/pUccSujsTzBhu4HzC2dL+CfJB/Jcc2qTRbEwZQDfIUpt2Xl8BodYBEq8w4fc0kU2I9DjQ== + version "2.6.1" + resolved "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz#adc954ebe281c37a6319bfa401e6dd2488ffb70d" + integrity sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g== cli-table3@~0.6.0: - version "0.6.0" - resolved "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.0.tgz#b7b1bc65ca8e7b5cef9124e13dc2b21e2ce4faee" - integrity sha512-gnB85c3MGC7Nm9I/FkiasNBOKjOiO1RNuXXarQms37q4QMpWdlbBgD/VnOStA2faG1dpXMv31RFApjX1/QdgWQ== + version "0.6.1" + resolved "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.1.tgz#36ce9b7af4847f288d3cdd081fbd09bf7bd237b8" + integrity sha512-w0q/enDHhPLq44ovMGdQeeDLvwxwavsJX7oQGYt/LrBlYsyaxyDnp6z3QzFut/6kLLKnlcUVJLrpB7KBfgG/RA== dependencies: - object-assign "^4.1.0" string-width "^4.2.0" optionalDependencies: - colors "^1.1.2" + colors "1.4.0" cli-table@^0.3.1: - version "0.3.6" - resolved "https://registry.npmjs.org/cli-table/-/cli-table-0.3.6.tgz#e9d6aa859c7fe636981fd3787378c2a20bce92fc" - integrity sha512-ZkNZbnZjKERTY5NwC2SeMeLeifSPq/pubeRoTpdr3WchLlnZg6hEgvHkK5zL7KNFdd9PmHN8lxrENUwI3cE8vQ== + version "0.3.11" + resolved "https://registry.npmjs.org/cli-table/-/cli-table-0.3.11.tgz#ac69cdecbe81dccdba4889b9a18b7da312a9d3ee" + integrity sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ== dependencies: colors "1.0.3" @@ -8665,9 +8331,9 @@ codemirror-graphql@^1.2.11: graphql-language-service "^4.1.4" codemirror@^5.58.2: - version "5.63.3" - resolved "https://registry.npmjs.org/codemirror/-/codemirror-5.63.3.tgz#97042a242027fe0c87c09b36bc01931d37b76527" - integrity sha512-1C+LELr+5grgJYqwZKqxrcbPsHFHapVaVAloBsFBASbpLnQqLw1U8yXJ3gT5D+rhxIiSpo+kTqN+hQ+9ialIXw== + version "5.65.1" + resolved "https://registry.npmjs.org/codemirror/-/codemirror-5.65.1.tgz#5988a812c974c467f964bcc1a00c944e373de502" + integrity sha512-s6aac+DD+4O2u1aBmdxhB7yz2XU7tG3snOyQ05Kxifahz7hoxnfxIRHxiCSEv3TUC38dIVH8G+lZH9UWSfGQxA== codeowners-utils@^1.0.2: version "1.0.2" @@ -8680,9 +8346,9 @@ codeowners-utils@^1.0.2: locate-path "^5.0.0" collect-v8-coverage@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.0.tgz#150ee634ac3650b71d9c985eb7f608942334feb1" - integrity sha512-VKIhJgvk8E1W28m5avZ2Gv2Ruv5YiF56ug2oclvaG9md69BuZImMG2sk9g7QNKLUbtYAKQjXjYxbYZVUlMMKmQ== + version "1.0.1" + resolved "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" + integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== collection-visit@^1.0.0: version "1.0.0" @@ -8697,7 +8363,7 @@ color-convert@^0.5.2: resolved "https://registry.npmjs.org/color-convert/-/color-convert-0.5.3.tgz#bdb6c69ce660fadffe0b0007cc447e1b9f7282bd" integrity sha1-vbbGnOZg+t/+CwAHzER+G59ygr0= -color-convert@^1.9.0, color-convert@^1.9.1: +color-convert@^1.9.0, color-convert@^1.9.3: version "1.9.3" resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== @@ -8721,10 +8387,10 @@ color-name@^1.0.0, color-name@^1.1.4, color-name@~1.1.4: resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -color-string@^1.5.2, color-string@^1.6.0: - version "1.6.0" - resolved "https://registry.npmjs.org/color-string/-/color-string-1.6.0.tgz#c3915f61fe267672cb7e1e064c9d692219f6c312" - integrity sha512-c/hGS+kRWJutUBEngKKmk4iH3sD59MBkoxVapS/0wgpCz2u7XsNloxknyvBhzwEs1IbV36D9PwqLPJ2DTu3vMA== +color-string@^1.6.0, color-string@^1.9.0: + version "1.9.0" + resolved "https://registry.npmjs.org/color-string/-/color-string-1.9.0.tgz#63b6ebd1bec11999d1df3a79a7569451ac2be8aa" + integrity sha512-9Mrz2AQLefkH1UvASKj6v6hj/7eWgjnT/cVsR8CumieLoT+g900exWeNogqtweI8dxloXN9BDQTYro1oWu/5CQ== dependencies: color-name "^1.0.0" simple-swizzle "^0.2.2" @@ -8734,26 +8400,26 @@ color-support@^1.1.2: resolved "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== -color@3.0.x: - version "3.0.0" - resolved "https://registry.npmjs.org/color/-/color-3.0.0.tgz#d920b4328d534a3ac8295d68f7bd4ba6c427be9a" - integrity sha512-jCpd5+s0s0t7p3pHQKpnJ0TpQKKdleP71LWcA0aqiljpiuAkOSUFN/dyH8ZwF0hRmFlrIuRhufds1QyEP9EB+w== +color@^3.1.3: + version "3.2.1" + resolved "https://registry.npmjs.org/color/-/color-3.2.1.tgz#3544dc198caf4490c3ecc9a790b54fe9ff45e164" + integrity sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA== dependencies: - color-convert "^1.9.1" - color-string "^1.5.2" - -color@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/color/-/color-4.0.1.tgz#21df44cd10245a91b1ccf5ba031609b0e10e7d67" - integrity sha512-rpZjOKN5O7naJxkH2Rx1sZzzBgaiWECc6BYXjeCE6kF0kcASJYbUq02u7JqIHwCb/j3NhV+QhRL2683aICeGZA== - dependencies: - color-convert "^2.0.1" + color-convert "^1.9.3" color-string "^1.6.0" +color@^4.0.1: + version "4.2.1" + resolved "https://registry.npmjs.org/color/-/color-4.2.1.tgz#498aee5fce7fc982606c8875cab080ac0547c884" + integrity sha512-MFJr0uY4RvTQUKvPq7dh9grVOTYSFeXja2mBXioCGjnjJoXrAp9jJ1NQTDR73c9nwBSAQiNKloKl5zq9WB9UPw== + dependencies: + color-convert "^2.0.1" + color-string "^1.9.0" + colord@^2.9.1: - version "2.9.1" - resolved "https://registry.npmjs.org/colord/-/colord-2.9.1.tgz#c961ea0efeb57c9f0f4834458f26cb9cc4a3f90e" - integrity sha512-4LBMSt09vR0uLnPVkOUBnmxgoaeN4ewRbx801wY/bXcltXfpR/G46OdWn96XpYmCWuYvO46aBZP4NgX8HpNAcw== + version "2.9.2" + resolved "https://registry.npmjs.org/colord/-/colord-2.9.2.tgz#25e2bacbbaa65991422c07ea209e2089428effb1" + integrity sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ== colorette@2.0.16, colorette@^2.0.10, colorette@^2.0.16: version "2.0.16" @@ -8765,7 +8431,7 @@ colors@1.0.3: resolved "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" integrity sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs= -colors@1.4.0, colors@^1.1.2: +colors@1.4.0: version "1.4.0" resolved "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== @@ -8776,19 +8442,19 @@ colors@~1.2.1: integrity sha512-erNRLao/Y3Fv54qUa0LBB+//Uf3YwMUmdJinN20yMXm9zdKKqH9wt7R9IIVZ+K7ShzfpLV/Zg8+VyrBJYB4lpg== colorspace@1.1.x: - version "1.1.2" - resolved "https://registry.npmjs.org/colorspace/-/colorspace-1.1.2.tgz#e0128950d082b86a2168580796a0aa5d6c68d8c5" - integrity sha512-vt+OoIP2d76xLhjwbBaucYlNSpPsrJWPlBTtwCpQKIu6/CSMutyzX93O/Do0qzpH3YoHEes8YEFXyZ797rEhzQ== + version "1.1.4" + resolved "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz#8d442d1186152f60453bf8070cd66eb364e59243" + integrity sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w== dependencies: - color "3.0.x" + color "^3.1.3" text-hex "1.0.x" columnify@^1.5.4: - version "1.5.4" - resolved "https://registry.npmjs.org/columnify/-/columnify-1.5.4.tgz#4737ddf1c7b69a8a7c340570782e947eec8e78bb" - integrity sha1-Rzfd8ce2mop8NAVweC6UfuyOeLs= + version "1.6.0" + resolved "https://registry.npmjs.org/columnify/-/columnify-1.6.0.tgz#6989531713c9008bb29735e61e37acf5bd553cf3" + integrity sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q== dependencies: - strip-ansi "^3.0.0" + strip-ansi "^6.0.1" wcwidth "^1.0.0" combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: @@ -8813,10 +8479,10 @@ command-exists@^1.2.9: resolved "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz#c50725af3808c8ab0260fd60b01fbfa25b954f69" integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w== -commander@*, commander@^8.3.0: - version "8.3.0" - resolved "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" - integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== +commander@*: + version "9.0.0" + resolved "https://registry.npmjs.org/commander/-/commander-9.0.0.tgz#86d58f24ee98126568936bd1d3574e0308a99a40" + integrity sha512-JJfP2saEKbQqvW+FI93OYUB4ByV5cizMpFMiiJI8xDbBvQvSkIk0VvQdn1CZ8mqAO8Loq2h0gYTYtDFUZUeERw== commander@7.1.0: version "7.1.0" @@ -8848,21 +8514,21 @@ commander@^7.2.0: resolved "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== +commander@^8.3.0: + version "8.3.0" + resolved "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" + integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== + common-ancestor-path@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz#4f7d2d1394d91b7abdf51871c62f71eadb0182a7" integrity sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w== -common-tags@1.8.2: +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" integrity sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA== -common-tags@^1.8.0: - version "1.8.0" - resolved "https://registry.npmjs.org/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937" - integrity sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw== - commondir@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" @@ -8882,12 +8548,12 @@ component-emitter@^1.2.1, component-emitter@^1.3.0: integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== compress-commons@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.0.tgz#25ec7a4528852ccd1d441a7d4353cd0ece11371b" - integrity sha512-ofaaLqfraD1YRTkrRKPCrGJ1pFeDG/MVCkVVV2FNGeWquSlqw5wOrwOfPQ1xF2u+blpeWASie5EubHz+vsNIgA== + version "4.1.1" + resolved "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.1.tgz#df2a09a7ed17447642bad10a85cc9a19e5c42a7d" + integrity sha512-QLdDLCKNV2dtoTorqgxngQCMA+gWXkM/Nwu7FpeBhk/RdkzimqC3jueb/FDmaZeXh+uby1jkBqE3xArsLBE5wQ== dependencies: buffer-crc32 "^0.2.13" - crc32-stream "^4.0.1" + crc32-stream "^4.0.2" normalize-path "^3.0.0" readable-stream "^3.6.0" @@ -8935,16 +8601,6 @@ concat-map@0.0.1: resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -concat-stream@^1.6.2: - version "1.6.2" - resolved "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" - integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - concat-stream@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz#414cf5af790a48c60ab9be4527d56d5e41133cb1" @@ -8977,9 +8633,9 @@ concurrently@^7.0.0: yargs "^16.2.0" config-chain@^1.1.12: - version "1.1.12" - resolved "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz#0fde8d091200eb5e808caf25fe618c02f48e4efa" - integrity sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA== + version "1.1.13" + resolved "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4" + integrity sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ== dependencies: ini "^1.3.4" proto-list "~1.2.1" @@ -9043,9 +8699,9 @@ content-type@~1.0.4: integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== conventional-changelog-angular@^5.0.12: - version "5.0.12" - resolved "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.12.tgz#c979b8b921cbfe26402eb3da5bbfda02d865a2b9" - integrity sha512-5GLsbnkR/7A89RyHLvvoExbiGbd9xKdKqDTrArnPbOqBqG/2wIosu0fHwpeIRI8Tl94MhVNBXcLJZl92ZQ5USw== + version "5.0.13" + resolved "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz#896885d63b914a70d4934b59d2fe7bde1832b28c" + integrity sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA== dependencies: compare-func "^2.0.0" q "^1.5.1" @@ -9099,9 +8755,9 @@ conventional-commits-filter@^2.0.7: modify-values "^1.0.0" conventional-commits-parser@^3.2.0: - version "3.2.1" - resolved "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.1.tgz#ba44f0b3b6588da2ee9fd8da508ebff50d116ce2" - integrity sha512-OG9kQtmMZBJD/32NEw5IhN5+HnBqVjy03eC+I71I0oQRFA5rOgA4OtPOYG7mz1GkCfCNxn3gKIX8EiHJYuf1cA== + version "3.2.4" + resolved "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz#a7d3b77758a202a9b2293d2112a8d8052c740972" + integrity sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q== dependencies: JSONStream "^1.0.4" is-text-path "^1.0.1" @@ -9109,7 +8765,6 @@ conventional-commits-parser@^3.2.0: meow "^8.0.0" split2 "^3.0.0" through2 "^4.0.0" - trim-off-newlines "^1.0.0" conventional-recommended-bump@^6.1.0: version "6.1.0" @@ -9126,18 +8781,18 @@ conventional-recommended-bump@^6.1.0: q "^1.5.1" convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: - version "1.7.0" - resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" - integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== + version "1.8.0" + resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" + integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== dependencies: safe-buffer "~5.1.1" cookie-parser@^1.4.5: - version "1.4.5" - resolved "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.5.tgz#3e572d4b7c0c80f9c61daf604e4336831b5d1d49" - integrity sha512-f13bPUj/gG/5mDr+xLmSxxDsB9DQiTIfhJS/sqjrmfAWiAN+x2O4i/XguTL9yDZ+/IFDanJ+5x7hC4CXT9Tdzw== + version "1.4.6" + resolved "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.6.tgz#3ac3a7d35a7a03bbc7e365073a26074824214594" + integrity sha512-z3IzaNjdwUC2olLIB5/ITd0/setiaFMLYiZJle7xg5Fe9KWAceil7xszYfHHBtDFYLSgJduS2Ty0P1uJdPDJeA== dependencies: - cookie "0.4.0" + cookie "0.4.1" cookie-signature "1.0.6" cookie-signature@1.0.6: @@ -9145,16 +8800,16 @@ cookie-signature@1.0.6: resolved "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= -cookie@0.4.0: - version "0.4.0" - resolved "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" - integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== - -cookie@0.4.1, cookie@^0.4.1, cookie@~0.4.1: +cookie@0.4.1: version "0.4.1" resolved "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz#afd713fe26ebd21ba95ceb61f9a8116e50a537d1" integrity sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA== +cookie@0.4.2, cookie@^0.4.1, cookie@~0.4.1: + version "0.4.2" + resolved "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" + integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== + cookiejar@^2.1.3: version "2.1.3" resolved "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.3.tgz#fc7a6216e408e74414b90230050842dacda75acc" @@ -9172,23 +8827,18 @@ copy-to-clipboard@^3, copy-to-clipboard@^3.2.0, copy-to-clipboard@^3.3.1: dependencies: toggle-selection "^1.0.6" -core-js-compat@^3.20.0, core-js-compat@^3.20.2: - version "3.20.3" - resolved "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.20.3.tgz#d71f85f94eb5e4bea3407412e549daa083d23bd6" - integrity sha512-c8M5h0IkNZ+I92QhIpuSijOxGAcj3lgpsWdkCqmUTZNwidujF4r3pi6x1DCN+Vcs5qTS2XWWMfWSuCqyupX8gw== +core-js-compat@^3.20.2, core-js-compat@^3.21.0: + version "3.21.1" + resolved "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.21.1.tgz#cac369f67c8d134ff8f9bd1623e3bc2c42068c82" + integrity sha512-gbgX5AUvMb8gwxC7FLVWYT7Kkgu/y7+h/h1X43yJkNqhlK2fuYyQimqvKGNZFAY6CKii/GFKJ2cp/1/42TN36g== dependencies: browserslist "^4.19.1" semver "7.0.0" -core-js-pure@^3.20.2: - version "3.20.2" - resolved "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.20.2.tgz#5d263565f0e34ceeeccdc4422fae3e84ca6b8c0f" - integrity sha512-CmWHvSKn2vNL6p6StNp1EmMIfVY/pqn3JLAjfZQ8WZGPOlGoO92EkX9/Mk81i6GxvoPXjUqEQnpM3rJ5QxxIOg== - -core-js-pure@^3.6.5: - version "3.16.2" - resolved "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.16.2.tgz#0ef4b79cabafb251ea86eb7d139b42bd98c533e8" - integrity sha512-oxKe64UH049mJqrKkynWp6Vu0Rlm/BTXO/bJZuN2mmR3RtOFNepLlSWDd1eo16PzHpQAoNG97rLU1V/YxesJjw== +core-js-pure@^3.20.2, core-js-pure@^3.6.5: + 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== core-js@^2.4.0, core-js@^2.5.0, core-js@^2.6.10: version "2.6.12" @@ -9196,15 +8846,20 @@ core-js@^2.4.0, core-js@^2.5.0, core-js@^2.6.10: integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== core-js@^3.6.5: - version "3.20.3" - resolved "https://registry.npmjs.org/core-js/-/core-js-3.20.3.tgz#c710d0a676e684522f3db4ee84e5e18a9d11d69a" - integrity sha512-vVl8j8ph6tRS3B8qir40H7yw7voy17xL0piAjlbBUsH7WIfzoedL/ZOr1OV9FyZQLWXsayOJyV4tnRyXR85/ag== + version "3.21.1" + resolved "https://registry.npmjs.org/core-js/-/core-js-3.21.1.tgz#f2e0ddc1fc43da6f904706e8e955bc19d06a0d94" + integrity sha512-FRq5b/VMrWlrmCzwRrpDYNxyHP9BcAZC+xHJaqTgIE5091ZV1NTmyh0sGOg5XqpnHvR0svdy0sv1gWA1zmhxig== -core-util-is@1.0.2, core-util-is@~1.0.0: +core-util-is@1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + cors@^2.8.5: version "2.8.5" resolved "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" @@ -9261,30 +8916,30 @@ cpu-features@0.0.2: nan "^2.14.1" crc-32@^1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/crc-32/-/crc-32-1.2.0.tgz#cb2db6e29b88508e32d9dd0ec1693e7b41a18208" - integrity sha512-1uBwHxF+Y/4yF5G48fwnKq6QsIXheor3ZLPT80yGBV1oEUwpPojlEhQbWKVw1VwcTQyMGHK1/XMmTjmlsmTTGA== + version "1.2.1" + resolved "https://registry.npmjs.org/crc-32/-/crc-32-1.2.1.tgz#436d2bcaad27bcb6bd073a2587139d3024a16460" + integrity sha512-Dn/xm/1vFFgs3nfrpEVScHoIslO9NZRITWGz/1E/St6u4xw99vfZzVkW0OSnzx2h9egej9xwMCEut6sqwokM/w== dependencies: exit-on-epipe "~1.0.1" - printj "~1.1.0" + printj "~1.3.1" -crc32-stream@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.1.tgz#0f047d74041737f8a55e86837a1b826bd8ab0067" - integrity sha512-FN5V+weeO/8JaXsamelVYO1PHyeCsuL3HcG4cqsj0ceARcocxalaShCsohZMSAF+db7UYFwBy1rARK/0oFItUw== +crc32-stream@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.2.tgz#c922ad22b38395abe9d3870f02fa8134ed709007" + integrity sha512-DxFZ/Hk473b/muq1VJ///PMNLj0ZMnzye9thBpmjpJKCc5eMgB95aK8zCGrGfQ90cWo561Te6HK9D+j4KPdM6w== dependencies: crc-32 "^1.2.0" readable-stream "^3.4.0" create-ecdh@^4.0.0: - version "4.0.3" - resolved "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" - integrity sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw== + version "4.0.4" + resolved "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" + integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== dependencies: bn.js "^4.1.0" - elliptic "^6.0.0" + elliptic "^6.5.3" -create-hash@^1.1.0, create-hash@^1.1.2: +create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== @@ -9295,7 +8950,7 @@ create-hash@^1.1.0, create-hash@^1.1.2: ripemd160 "^2.0.1" sha.js "^2.4.0" -create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: +create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: version "1.1.7" resolved "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== @@ -9331,7 +8986,7 @@ cross-fetch@3.1.4: dependencies: node-fetch "2.6.1" -cross-fetch@^3.0.4, cross-fetch@^3.0.6, cross-fetch@^3.1.3, cross-fetch@^3.1.4, cross-fetch@^3.1.5: +cross-fetch@3.1.5, cross-fetch@^3.0.6, cross-fetch@^3.1.3, cross-fetch@^3.1.5: version "3.1.5" resolved "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz#e1389f44d9e7ba767907f7af8454787952ab534f" integrity sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw== @@ -9367,36 +9022,17 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3: shebang-command "^2.0.0" which "^2.0.1" -cross-undici-fetch@^0.0.20: - version "0.0.20" - resolved "https://registry.npmjs.org/cross-undici-fetch/-/cross-undici-fetch-0.0.20.tgz#6b7c5ac82a3601edd439f37275ac0319d77a120a" - integrity sha512-5d3WBC4VRHpFndECK9bx4TngXrw0OUXdhX561Ty1ZoqMASz9uf55BblhTC1CO6GhMWnvk9SOqYEXQliq6D2P4A== - dependencies: - abort-controller "^3.0.0" - form-data "^4.0.0" - node-fetch "^2.6.5" - undici "^4.9.3" - -cross-undici-fetch@^0.0.26: - version "0.0.26" - resolved "https://registry.npmjs.org/cross-undici-fetch/-/cross-undici-fetch-0.0.26.tgz#29d93d56609f4d2334f9d5333d23ef7a242842a7" - integrity sha512-aMDRrLbWr0TGXfY92stlV+XOGpskeqFmWmrKSWsnc8w6gK5LPE83NBh7O7N6gCb2xjwHcm1Yn2nBXMEVH2RBcA== - dependencies: - abort-controller "^3.0.0" - form-data "^4.0.0" - node-fetch "^2.6.5" - undici "^4.9.3" - -cross-undici-fetch@^0.1.4: - version "0.1.13" - resolved "https://registry.npmjs.org/cross-undici-fetch/-/cross-undici-fetch-0.1.13.tgz#807d17ce5c524c21bc0a6486e97ecccb901c6529" - integrity sha512-nF+g932BrKPoK0RZQKRA9S2IKXeveGPJlaUWXyUEGjjSpAdxBhEHDrMDbiksP2iSNe8O5vn1bN3tTvrd6+yFSg== +cross-undici-fetch@^0.1.19: + version "0.1.24" + resolved "https://registry.npmjs.org/cross-undici-fetch/-/cross-undici-fetch-0.1.24.tgz#2ad23d096ba07cfa1260b1aeb9a78d2132ea3385" + integrity sha512-83KDV6+8pYCn51zSM2cFAwqQ5UQtDaPm89RkUwHxEMDq/cdqYgqo1q+2eM/Xhmd8HeAsGTtecsC4crrQkCn0zg== dependencies: abort-controller "^3.0.0" form-data-encoder "^1.7.1" formdata-node "^4.3.1" - node-fetch "^2.6.5" + node-fetch "^2.6.7" undici "^4.9.3" + web-streams-polyfill "^3.2.0" crypto-browserify@^3.11.0: version "3.12.0" @@ -9437,9 +9073,9 @@ css-color-converter@^2.0.0: css-unit-converter "^1.1.2" css-declaration-sorter@^6.0.3: - version "6.1.3" - resolved "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.1.3.tgz#e9852e4cf940ba79f509d9425b137d1f94438dc2" - integrity sha512-SvjQjNRZgh4ULK1LDJ2AduPKUKxIqmtU7ZAyi47BTV+M90Qvxr9AB6lKlLbDUfXqI9IQeYA8LbAsCZPpJEV3aA== + version "6.1.4" + resolved "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.1.4.tgz#b9bfb4ed9a41f8dcca9bf7184d849ea94a8294b4" + integrity sha512-lpfkqS0fctcmZotJGhnxkIyJWvBXgpyi2wsFd4J8VB7wzyrT6Ch/3Q+FMNJpjK4gu1+GN5khOnpU2ZVKrLbhCw== dependencies: timsort "^0.3.0" @@ -9466,25 +9102,17 @@ css-loader@^6.5.1: semver "^7.3.5" css-select@^4.1.3: - version "4.1.3" - resolved "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz#a70440f70317f2669118ad74ff105e65849c7067" - integrity sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA== + version "4.2.1" + resolved "https://registry.npmjs.org/css-select/-/css-select-4.2.1.tgz#9e665d6ae4c7f9d65dbe69d0316e3221fb274cdd" + integrity sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ== dependencies: boolbase "^1.0.0" - css-what "^5.0.0" - domhandler "^4.2.0" - domutils "^2.6.0" - nth-check "^2.0.0" + css-what "^5.1.0" + domhandler "^4.3.0" + domutils "^2.8.0" + nth-check "^2.0.1" -css-tree@^1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/css-tree/-/css-tree-1.1.2.tgz#9ae393b5dafd7dae8a622475caec78d3d8fbd7b5" - integrity sha512-wCoWush5Aeo48GLhfHPbmvZs59Z+M7k5+B1xDnXbdWNcEF423DoFdqSWE0PM5aNk5nI5cp1q7ms36zGApY/sKQ== - dependencies: - mdn-data "2.0.14" - source-map "^0.6.1" - -css-tree@^1.1.3: +css-tree@^1.1.2, css-tree@^1.1.3: version "1.1.3" resolved "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== @@ -9505,7 +9133,7 @@ css-vendor@^2.0.8: "@babel/runtime" "^7.8.3" is-in-browser "^1.0.2" -css-what@^5.0.0: +css-what@^5.1.0: version "5.1.0" resolved "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz#3f7b707aadf633baf62c2ceb8579b545bb40f7fe" integrity sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw== @@ -9534,53 +9162,52 @@ cssfilter@0.0.10: resolved "https://registry.npmjs.org/cssfilter/-/cssfilter-0.0.10.tgz#c6d2672632a2e5c83e013e6864a42ce8defd20ae" integrity sha1-xtJnJjKi5cg+AT5oZKQs6N79IK4= -cssnano-preset-default@^5.1.7: - version "5.1.7" - resolved "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.1.7.tgz#68c3ad1ec6a810482ec7d06b2d70fc34b6b0d70c" - integrity sha512-bWDjtTY+BOqrqBtsSQIbN0RLGD2Yr2CnecpP0ydHNafh9ZUEre8c8VYTaH9FEbyOt0eIfEUAYYk5zj92ioO8LA== +cssnano-preset-default@^5.1.12: + version "5.1.12" + resolved "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.1.12.tgz#64e2ad8e27a279e1413d2d2383ef89a41c909be9" + integrity sha512-rO/JZYyjW1QNkWBxMGV28DW7d98UDLaF759frhli58QFehZ+D/LSmwQ2z/ylBAe2hUlsIWTq6NYGfQPq65EF9w== dependencies: css-declaration-sorter "^6.0.3" - cssnano-utils "^2.0.1" - postcss-calc "^8.0.0" - postcss-colormin "^5.2.1" - postcss-convert-values "^5.0.2" - postcss-discard-comments "^5.0.1" - postcss-discard-duplicates "^5.0.1" - postcss-discard-empty "^5.0.1" - postcss-discard-overridden "^5.0.1" - postcss-merge-longhand "^5.0.4" - postcss-merge-rules "^5.0.3" - postcss-minify-font-values "^5.0.1" - postcss-minify-gradients "^5.0.3" - postcss-minify-params "^5.0.2" - postcss-minify-selectors "^5.1.0" - postcss-normalize-charset "^5.0.1" - postcss-normalize-display-values "^5.0.1" - postcss-normalize-positions "^5.0.1" - postcss-normalize-repeat-style "^5.0.1" - postcss-normalize-string "^5.0.1" - postcss-normalize-timing-functions "^5.0.1" - postcss-normalize-unicode "^5.0.1" - postcss-normalize-url "^5.0.3" - postcss-normalize-whitespace "^5.0.1" - postcss-ordered-values "^5.0.2" - postcss-reduce-initial "^5.0.1" - postcss-reduce-transforms "^5.0.1" - postcss-svgo "^5.0.3" - postcss-unique-selectors "^5.0.2" + cssnano-utils "^3.0.2" + postcss-calc "^8.2.0" + postcss-colormin "^5.2.5" + postcss-convert-values "^5.0.4" + postcss-discard-comments "^5.0.3" + postcss-discard-duplicates "^5.0.3" + postcss-discard-empty "^5.0.3" + postcss-discard-overridden "^5.0.4" + postcss-merge-longhand "^5.0.6" + postcss-merge-rules "^5.0.6" + postcss-minify-font-values "^5.0.4" + postcss-minify-gradients "^5.0.6" + postcss-minify-params "^5.0.5" + postcss-minify-selectors "^5.1.3" + postcss-normalize-charset "^5.0.3" + postcss-normalize-display-values "^5.0.3" + postcss-normalize-positions "^5.0.4" + postcss-normalize-repeat-style "^5.0.4" + postcss-normalize-string "^5.0.4" + postcss-normalize-timing-functions "^5.0.3" + postcss-normalize-unicode "^5.0.4" + postcss-normalize-url "^5.0.5" + postcss-normalize-whitespace "^5.0.4" + postcss-ordered-values "^5.0.5" + postcss-reduce-initial "^5.0.3" + postcss-reduce-transforms "^5.0.4" + postcss-svgo "^5.0.4" + postcss-unique-selectors "^5.0.4" -cssnano-utils@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-2.0.1.tgz#8660aa2b37ed869d2e2f22918196a9a8b6498ce2" - integrity sha512-i8vLRZTnEH9ubIyfdZCAdIdgnHAUeQeByEeQ2I7oTilvP9oHO6RScpeq3GsFUVqeB8uZgOQ9pw8utofNn32hhQ== +cssnano-utils@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.0.2.tgz#d82b4991a27ba6fec644b39bab35fe027137f516" + integrity sha512-KhprijuQv2sP4kT92sSQwhlK3SJTbDIsxcfIEySB0O+3m9esFOai7dP9bMx5enHAh2MwarVIcnwiWoOm01RIbQ== cssnano@^5.0.1: - version "5.0.11" - resolved "https://registry.npmjs.org/cssnano/-/cssnano-5.0.11.tgz#743397a05e04cb87e9df44b7659850adfafc3646" - integrity sha512-5SHM31NAAe29jvy0MJqK40zZ/8dGlnlzcfHKw00bWMVFp8LWqtuyPSFwbaoIoxvt71KWJOfg8HMRGrBR3PExCg== + version "5.0.17" + resolved "https://registry.npmjs.org/cssnano/-/cssnano-5.0.17.tgz#ff45713c05cfc780a1aeb3e663b6f224d091cabf" + integrity sha512-fmjLP7k8kL18xSspeXTzRhaFtRI7DL9b8IcXR80JgtnWBpvAzHT7sCR/6qdn0tnxIaINUN6OEQu83wF57Gs3Xw== dependencies: - cssnano-preset-default "^5.1.7" - is-resolvable "^1.1.0" + cssnano-preset-default "^5.1.12" lilconfig "^2.0.3" yaml "^1.10.2" @@ -9601,54 +9228,53 @@ cssom@~0.3.6: resolved "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== -cssstyle@^2.2.0, cssstyle@^2.3.0: +cssstyle@^2.3.0: version "2.3.0" resolved "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== dependencies: cssom "~0.3.6" -csstype@^2.5.2, csstype@^2.6.7: - version "2.6.17" - resolved "https://registry.npmjs.org/csstype/-/csstype-2.6.17.tgz#4cf30eb87e1d1a005d8b6510f95292413f6a1c0e" - integrity sha512-u1wmTI1jJGzCJzWndZo8mk4wnPTZd1eOIYTYvuEyOQGfmDl3TrabCCfKnOC86FZwW/9djqTl933UF/cS425i9A== +csstype@^2.5.2: + version "2.6.19" + resolved "https://registry.npmjs.org/csstype/-/csstype-2.6.19.tgz#feeb5aae89020bb389e1f63669a5ed490e391caa" + integrity sha512-ZVxXaNy28/k3kJg0Fou5MiYpp88j7H9hLZp8PDC3jV0WFjfH5E9xHb56L0W59cPbKbcHXeP4qyT8PrHp8t6LcQ== csstype@^3.0.2, csstype@^3.0.6: - version "3.0.7" - resolved "https://registry.npmjs.org/csstype/-/csstype-3.0.7.tgz#2a5fb75e1015e84dd15692f71e89a1450290950b" - integrity sha512-KxnUB0ZMlnUWCsx2Z8MUsr6qV6ja1w9ArPErJaJaF8a5SOWoHLIszeCTKGRGRgtLgYrs1E8CHkNSP1VZTTPc9g== + version "3.0.10" + resolved "https://registry.npmjs.org/csstype/-/csstype-3.0.10.tgz#2ad3a7bed70f35b965707c092e5f30b327c290e5" + integrity sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA== -csv-generate@^3.2.4: - version "3.2.4" - resolved "https://registry.npmjs.org/csv-generate/-/csv-generate-3.2.4.tgz#440dab9177339ee0676c9e5c16f50e2b3463c019" - integrity sha512-qNM9eqlxd53TWJeGtY1IQPj90b563Zx49eZs8e0uMyEvPgvNVmX1uZDtdzAcflB3PniuH9creAzcFOdyJ9YGvA== +csv-generate@^3.4.3: + version "3.4.3" + resolved "https://registry.npmjs.org/csv-generate/-/csv-generate-3.4.3.tgz#bc42d943b45aea52afa896874291da4b9108ffff" + integrity sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw== -csv-parse@^4.8.8: - version "4.12.0" - resolved "https://registry.npmjs.org/csv-parse/-/csv-parse-4.12.0.tgz#fd42d6291bbaadd51d3009f6cadbb3e53b4ce026" - integrity sha512-wPQl3H79vWLPI8cgKFcQXl0NBgYYEqVnT1i6/So7OjMpsI540oD7p93r3w6fDSyPvwkTepG05F69/7AViX2lXg== +csv-parse@^4.16.3: + version "4.16.3" + resolved "https://registry.npmjs.org/csv-parse/-/csv-parse-4.16.3.tgz#7ca624d517212ebc520a36873c3478fa66efbaf7" + integrity sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg== -csv-stringify@^5.3.6: - version "5.5.1" - resolved "https://registry.npmjs.org/csv-stringify/-/csv-stringify-5.5.1.tgz#f42cdd379b0f7f142933a11f674b1a91ebd0fcd0" - integrity sha512-HM0/86Ks8OwFbaYLd495tqTs1NhscZL52dC4ieKYumy8+nawQYC0xZ63w1NqLf0M148T2YLYqowoImc1giPn0g== +csv-stringify@^5.6.5: + version "5.6.5" + resolved "https://registry.npmjs.org/csv-stringify/-/csv-stringify-5.6.5.tgz#c6d74badda4b49a79bf4e72f91cce1e33b94de00" + integrity sha512-PjiQ659aQ+fUTQqSrd1XEDnOr52jh30RBurfzkscaE2tPaFsDH5wOAHJiw8XAHphRknCwMUE9KRayc4K/NbO8A== csv@^5.3.1: - version "5.3.2" - resolved "https://registry.npmjs.org/csv/-/csv-5.3.2.tgz#50b344e25dfbb8c62684a1bcec18c22468b2161e" - integrity sha512-odDyucr9OgJTdGM2wrMbJXbOkJx3nnUX3Pt8SFOwlAMOpsUQlz1dywvLMXJWX/4Ib0rjfOsaawuuwfI5ucqBGQ== + version "5.5.3" + resolved "https://registry.npmjs.org/csv/-/csv-5.5.3.tgz#cd26c1e45eae00ce6a9b7b27dcb94955ec95207d" + integrity sha512-QTaY0XjjhTQOdguARF0lGKm5/mEq9PD9/VhZZegHDIBq2tQwgNpHc3dneD4mGo2iJs+fTKv5Bp0fZ+BRuY3Z0g== dependencies: - csv-generate "^3.2.4" - csv-parse "^4.8.8" - csv-stringify "^5.3.6" - stream-transform "^2.0.1" + csv-generate "^3.4.3" + csv-parse "^4.16.3" + csv-stringify "^5.6.5" + stream-transform "^2.1.3" cypress@^7.3.0: - version "7.3.0" - resolved "https://registry.npmjs.org/cypress/-/cypress-7.3.0.tgz#17345b8d18681c120f033e7d8fd0f0271e9d0d51" - integrity sha512-aseRCH1tRVCrM6oEfja6fR/bo5l6e4SkHRRSATh27UeN4f/ANC8U7tGIulmrISJVy9xuOkOdbYKbUb2MNM+nrw== + version "7.7.0" + resolved "https://registry.npmjs.org/cypress/-/cypress-7.7.0.tgz#0839ae28e5520536f9667d6c9ae81496b3836e64" + integrity sha512-uYBYXNoI5ym0UxROwhQXWTi8JbUEjpC6l/bzoGZNxoKGsLrC1SDPgIDJMgLX/MeEdPL0UInXLDUWN/rSyZUCjQ== dependencies: - "@cypress/listr-verbose-renderer" "^0.4.1" "@cypress/request" "^2.88.5" "@cypress/xvfb" "^1.2.4" "@types/node" "^14.14.31" @@ -9660,21 +9286,24 @@ cypress@^7.3.0: cachedir "^2.3.0" chalk "^4.1.0" check-more-types "^2.24.0" + cli-cursor "^3.1.0" cli-table3 "~0.6.0" commander "^5.1.0" common-tags "^1.8.0" dayjs "^1.10.4" - debug "4.3.2" + debug "^4.3.2" + enquirer "^2.3.6" eventemitter2 "^6.4.3" execa "4.1.0" executable "^4.1.1" - extract-zip "^1.7.0" + extract-zip "2.0.1" + figures "^3.2.0" fs-extra "^9.1.0" getos "^3.2.1" is-ci "^3.0.0" is-installed-globally "~0.4.0" lazy-ass "^1.6.0" - listr "^0.14.3" + listr2 "^3.8.3" lodash "^4.17.21" log-symbols "^4.0.0" minimist "^1.2.5" @@ -9910,14 +9539,6 @@ d3-zoom@^3.0.0: d3-selection "2 - 3" d3-transition "2 - 3" -d@1, d@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" - integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== - dependencies: - es5-ext "^0.10.50" - type "^1.0.1" - dagre@^0.8.5: version "0.8.5" resolved "https://registry.npmjs.org/dagre/-/dagre-0.8.5.tgz#ba30b0055dac12b6c1fcc247817442777d06afee" @@ -9927,9 +9548,9 @@ dagre@^0.8.5: lodash "^4.17.15" damerau-levenshtein@^1.0.7: - version "1.0.7" - resolved "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.7.tgz#64368003512a1a6992593741a09a9d31a836f55d" - integrity sha512-VvdQIPGdWP0SqFXghj79Wf/5LArmreyMsGLa6FG6iC4t3j7j5s71TrwWmT/4akbDQIqjfACkLZmjXhA7g2oUZw== + version "1.0.8" + resolved "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7" + integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA== dargs@^7.0.0: version "7.0.0" @@ -9957,10 +9578,10 @@ dataloader@2.0.0, dataloader@^2.0.0: resolved "https://registry.npmjs.org/dataloader/-/dataloader-2.0.0.tgz#41eaf123db115987e21ca93c005cd7753c55fe6f" integrity sha512-YzhyDAwA4TaQIhM5go+vCLmU0UikghC/t9DTQYZR2M/UvZ1MdOhPezSDZcjj9uqQJOMqjLcpWtyW2iNINdlatQ== -date-and-time@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/date-and-time/-/date-and-time-1.0.0.tgz#0062394bdf6f44e961f0db00511cb19cdf3cc0a5" - integrity sha512-477D7ypIiqlXBkxhU7YtG9wWZJEQ+RUpujt2quTfgf4+E8g5fNUkB0QIL0bVyP5/TKBg8y55Hfa1R/c4bt3dEw== +date-and-time@^2.0.0: + version "2.1.2" + resolved "https://registry.npmjs.org/date-and-time/-/date-and-time-2.1.2.tgz#5b0e71296bbdd66ff1ce0e456c77d40f1479db5a" + integrity sha512-YlQUtuqYGPR58I7jzx4TIjknN9wCKjwewiylIp+P4xMuO23mlZje3Qe9gYCKp/6ncbeNpU8ZnPdhQNZnVphveQ== date-fns@^1.27.2: version "1.30.1" @@ -9968,9 +9589,9 @@ date-fns@^1.27.2: integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw== date-fns@^2.16.1, date-fns@^2.18.0: - version "2.19.0" - resolved "https://registry.npmjs.org/date-fns/-/date-fns-2.19.0.tgz#65193348635a28d5d916c43ec7ce6fbd145059e1" - integrity sha512-X3bf2iTPgCAQp9wvjOQytnf5vO5rESYRXlPIVcgSbtT5OTScPcsf9eZU+B/YIkKAtYr5WeCii58BgATrNitlWg== + version "2.28.0" + resolved "https://registry.npmjs.org/date-fns/-/date-fns-2.28.0.tgz#9570d656f5fc13143e50c975a3b6bbeb46cd08b2" + integrity sha512-8d35hViGYx/QH0icHYCeLmsLmMUheMmTyV9Fcm6gvNwdw31yXXH+O85sOBJ+OLnLQMKZowvpKb6FgMIQjcpvQw== dateformat@^3.0.0, dateformat@^3.0.3: version "3.0.3" @@ -9978,19 +9599,19 @@ dateformat@^3.0.0, dateformat@^3.0.3: integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== dateformat@^4.5.0: - version "4.5.1" - resolved "https://registry.npmjs.org/dateformat/-/dateformat-4.5.1.tgz#c20e7a9ca77d147906b6dc2261a8be0a5bd2173c" - integrity sha512-OD0TZ+B7yP7ZgpJf5K2DIbj3FZvFvxgFUuaqA/V5zTjAtAAXZ1E8bktHxmAGs4x5b7PflqA9LeQ84Og7wYtF7Q== + version "4.6.3" + resolved "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz#556fa6497e5217fedb78821424f8a1c22fa3f4b5" + integrity sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA== dayjs@^1.10.4: - version "1.10.4" - resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.10.4.tgz#8e544a9b8683f61783f570980a8a80eaf54ab1e2" - integrity sha512-RI/Hh4kqRc1UKLOAf/T5zdMMX5DQIlDxwUe3wSyMMnEbGunnpENCdbUgM+dW7kXidZqCttBrmw7BhN4TMddkCw== + version "1.10.7" + resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.10.7.tgz#2cf5f91add28116748440866a0a1d26f3a6ce468" + integrity sha512-P6twpd70BcPK34K26uJ1KT3wlhpuOAPoMwJzpsIWUxHZ7wpmbdZL/hQqBDfz7hGurYSa5PhzdhDHtt319hL3ig== debounce@^1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/debounce/-/debounce-1.2.0.tgz#44a540abc0ea9943018dc0eaa95cce87f65cd131" - integrity sha512-mYtLl1xfZLi1m4RtQYlZgJUNQjl4ZxVnHzIR8nLLgi4q1YT8o/WM+MK/f8yfcc9s5Ir5zRaPZyZU6xs1Syoocg== + version "1.2.1" + resolved "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz#38881d8f4166a5c5848020c11827b834bcb3e0a5" + integrity sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug== debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.9: version "2.6.9" @@ -10039,14 +9660,9 @@ decamelize@^1.1.0, decamelize@^1.1.1, decamelize@^1.2.0: integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= decimal.js-light@^2.4.1: - version "2.5.0" - resolved "https://registry.npmjs.org/decimal.js-light/-/decimal.js-light-2.5.0.tgz#ca7faf504c799326df94b0ab920424fdfc125348" - integrity sha512-b3VJCbd2hwUpeRGG3Toob+CRo8W22xplipNhP3tN7TSVB/cyMX71P1vM2Xjc9H74uV6dS2hDDmo/rHq8L87Upg== - -decimal.js@^10.2.0: - version "10.2.0" - resolved "https://registry.npmjs.org/decimal.js/-/decimal.js-10.2.0.tgz#39466113a9e036111d02f82489b5fd6b0b5ed231" - integrity sha512-vDPw+rDgn3bZe1+F/pyEwb1oMG2XTlRVgAa6B4KccTEpYgF8w6eQllVbQcfIJnZyvzFtFpxnpGtx8dd7DJp/Rw== + version "2.5.1" + resolved "https://registry.npmjs.org/decimal.js-light/-/decimal.js-light-2.5.1.tgz#134fd32508f19e208f4fb2f8dac0d2626a867934" + integrity sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg== decimal.js@^10.2.1: version "10.3.1" @@ -10103,17 +9719,17 @@ deep-equal@^1.0.1: object-keys "^1.1.1" regexp.prototype.flags "^1.2.0" -deep-extend@0.6.0, deep-extend@^0.6.0, deep-extend@~0.6.0: +deep-extend@0.6.0, deep-extend@^0.6.0: version "0.6.0" resolved "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== deep-is@^0.1.3, deep-is@~0.1.3: - version "0.1.3" - resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" - integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= + version "0.1.4" + resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== -deepmerge@^4.2.2: +deepmerge@^4.2.2, deepmerge@~4.2.2: version "4.2.2" resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== @@ -10138,9 +9754,9 @@ defer-to-connect@^1.0.1: integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== defer-to-connect@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.0.tgz#83d6b199db041593ac84d781b5222308ccf4c2c1" - integrity sha512-bYL2d05vOSf1JEZNx5vSAtPuBMkX8K9EUutg7zlKvTqKXHt7RhWJFbmd7qakVuf13i+IkGmp6FwSsONOf6VYIg== + version "2.0.1" + resolved "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" + integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== define-lazy-prop@^2.0.0: version "2.0.0" @@ -10254,9 +9870,9 @@ detect-indent@^5.0.0: integrity sha1-OHHMCmoALow+Wzz38zYmRnXwa50= detect-indent@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/detect-indent/-/detect-indent-6.0.0.tgz#0abd0f549f69fc6659a254fe96786186b6f528fd" - integrity sha512-oSyFlqaTHCItVRGK5RmrmjB+CmaMOW7IaNA/kdxqhoa6d17j/5ce9O9eWXmV/KEdRwqpQA+Vqe8a8Bsybu4YnA== + version "6.1.0" + resolved "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz#592485ebbbf6b3b1ab2be175c8393d04ca0d57e6" + integrity sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA== detect-libc@^1.0.3: version "1.0.3" @@ -10269,9 +9885,9 @@ detect-newline@^3.0.0: integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== detect-node@^2.0.4: - version "2.0.4" - resolved "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" - integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw== + version "2.1.0" + resolved "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" + integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== detect-port-alt@^1.1.6: version "1.1.6" @@ -10281,10 +9897,10 @@ detect-port-alt@^1.1.6: address "^1.0.1" debug "^2.6.0" -devtools-protocol@0.0.948846: - version "0.0.948846" - resolved "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.948846.tgz#bff47e2d1dba060130fa40ed2e5f78b916ba285f" - integrity sha512-5fGyt9xmMqUl2VI7+rnUkKCiAQIpLns8sfQtTENy5L70ktbNw0Z3TFJ1JoFNYdx/jffz4YXU45VF75wKZD7sZQ== +devtools-protocol@0.0.960912: + version "0.0.960912" + resolved "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.960912.tgz#411c1fa355eddb72f06c4a8743f2808766db6245" + integrity sha512-I3hWmV9rWHbdnUdmMKHF2NuYutIM2kXz2mdXW8ha7TbRlGTVs+PF+PsB5QWvpCek4Fy9B+msiispCfwlhG5Sqg== dezalgo@1.0.3, dezalgo@^1.0.0: version "1.0.3" @@ -10299,6 +9915,11 @@ diff-sequences@^26.6.2: resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz#48ba99157de1923412eed41db6b6d4aa9ca7c0b1" integrity sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q== +diff-sequences@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz#eaecc0d327fd68c8d9672a1e64ab8dccb2ef5327" + integrity sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ== + diff3@0.0.3: version "0.0.3" resolved "https://registry.npmjs.org/diff3/-/diff3-0.0.3.tgz#d4e5c3a4cdf4e5fe1211ab42e693fcb4321580fc" @@ -10358,9 +9979,9 @@ dns-txt@^2.0.2: buffer-indexof "^1.0.0" docker-compose@^0.23.13: - version "0.23.13" - resolved "https://registry.npmjs.org/docker-compose/-/docker-compose-0.23.13.tgz#77d37bd05b6a966345f631e6d05e961c79514f06" - integrity sha512-/9fYC4g3AO+qsqxIZhmbVnFvJJPcYEV2yJbAPPXH+6AytU3urIY8lUAXOlvY8sl4u25pdKu1JrOfAmWC7lJDJg== + version "0.23.17" + resolved "https://registry.npmjs.org/docker-compose/-/docker-compose-0.23.17.tgz#8816bef82562d9417dc8c790aa4871350f93a2ba" + integrity sha512-YJV18YoYIcxOdJKeFcCFihE6F4M2NExWM/d4S1ITcS9samHKnNUihz9kjggr0dNtsrbpFNc7/Yzd19DWs+m1xg== dependencies: yaml "^1.10.2" @@ -10396,15 +10017,10 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" -dom-accessibility-api@^0.5.4, dom-accessibility-api@^0.5.6: - version "0.5.6" - resolved "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.6.tgz#3f5d43b52c7a3bd68b5fb63fa47b4e4c1fdf65a9" - integrity sha512-DplGLZd8L1lN64jlT27N9TVSESFR5STaEJvX+thCby7fuCHonfPpAlodYc3vuUYbDuDec5w8AMP7oCM5TWFsqw== - -dom-accessibility-api@^0.5.9: - version "0.5.10" - resolved "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.10.tgz#caa6d08f60388d0bb4539dd75fe458a9a1d0014c" - integrity sha512-Xu9mD0UjrJisTmv7lmVSDMagQcU9R5hwAbxsaAE/35XPnPLJobbuREfV/rraiSaEj/UOvgrzQs66zyTWTlyd+g== +dom-accessibility-api@^0.5.6, dom-accessibility-api@^0.5.9: + version "0.5.11" + resolved "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.11.tgz#79d5846c4f90eba3e617d9031e921de9324f84ed" + integrity sha512-7X6GvzjYf4yTdRKuCVScV+aA9Fvh5r8WzWrXBH9w82ZWB/eYDMGCnazoC/YAqAzUJWHzLOnZqr46K3iEyUhUvw== dom-converter@^0.2.0: version "0.2.0" @@ -10421,38 +10037,33 @@ dom-helpers@^3.4.0: "@babel/runtime" "^7.1.2" dom-helpers@^5.0.1: - version "5.1.4" - resolved "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.1.4.tgz#4609680ab5c79a45f2531441f1949b79d6587f4b" - integrity sha512-TjMyeVUvNEnOnhzs6uAn9Ya47GmMo3qq7m+Lr/3ON0Rs5kHvb8I+SQYjLUSYn7qhEm0QjW0yrBkvz9yOrwwz1A== + version "5.2.1" + resolved "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz#d9400536b2bf8225ad98fe052e029451ac40e902" + integrity sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA== dependencies: "@babel/runtime" "^7.8.7" - csstype "^2.6.7" + csstype "^3.0.2" dom-serializer@^1.0.1: - version "1.2.0" - resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.2.0.tgz#3433d9136aeb3c627981daa385fc7f32d27c48f1" - integrity sha512-n6kZFH/KlCrqs/1GHMOd5i2fd/beQHuehKdWvNNffbGHTr/almdhuVvTVFb3V7fglz+nC50fFusu3lY33h12pA== + version "1.3.2" + resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz#6206437d32ceefaec7161803230c7a20bc1b4d91" + integrity sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig== dependencies: domelementtype "^2.0.1" - domhandler "^4.0.0" + domhandler "^4.2.0" entities "^2.0.0" dom-walk@^0.1.0: - version "0.1.1" - resolved "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.1.tgz#672226dc74c8f799ad35307df936aba11acd6018" - integrity sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg= + version "0.1.2" + resolved "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84" + integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w== domain-browser@^1.1.1: version "1.2.0" resolved "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== -domelementtype@^2.0.1, domelementtype@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-2.1.0.tgz#a851c080a6d1c3d94344aed151d99f669edf585e" - integrity sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w== - -domelementtype@^2.2.0: +domelementtype@^2.0.1, domelementtype@^2.2.0: version "2.2.0" resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57" integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A== @@ -10464,17 +10075,10 @@ domexception@^2.0.1: dependencies: webidl-conversions "^5.0.0" -domhandler@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/domhandler/-/domhandler-4.0.0.tgz#01ea7821de996d85f69029e81fa873c21833098e" - integrity sha512-KPTbnGQ1JeEMQyO1iYXoagsI6so/C96HZiFyByU3T6iAzpXn8EGEvct6unm1ZGoed8ByO2oirxgwxBmqKF9haA== - dependencies: - domelementtype "^2.1.0" - -domhandler@^4.2.0: - version "4.2.2" - resolved "https://registry.npmjs.org/domhandler/-/domhandler-4.2.2.tgz#e825d721d19a86b8c201a35264e226c678ee755f" - integrity sha512-PzE9aBMsdZO8TK4BnuJwH0QT41wgMbRzuZrHUcpYncEjmQazq8QEaBWgLG7ZyC/DAZKEgglpIA6j4Qn/HmxS3w== +domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.0: + version "4.3.0" + resolved "https://registry.npmjs.org/domhandler/-/domhandler-4.3.0.tgz#16c658c626cf966967e306f966b431f77d4a5626" + integrity sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g== dependencies: domelementtype "^2.2.0" @@ -10488,7 +10092,7 @@ dompurify@^2.2.7, dompurify@^2.2.9: resolved "https://registry.npmjs.org/dompurify/-/dompurify-2.3.6.tgz#2e019d7d7617aacac07cbbe3d88ae3ad354cf875" integrity sha512-OFP2u/3T1R5CEgWCEONuJ1a5+MFKnOYpkywpUSxv/dj1LeBT1erK+JwM7zK0ROy2BRhqVCf0LRw/kHqKuMkVGg== -domutils@^2.5.2, domutils@^2.6.0: +domutils@^2.5.2, domutils@^2.8.0: version "2.8.0" resolved "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== @@ -10525,9 +10129,9 @@ dotenv@^10.0.0: integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== dset@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/dset/-/dset-3.1.0.tgz#23feb6df93816ea452566308b1374d6e869b0d7b" - integrity sha512-7xTQ5DzyE59Nn+7ZgXDXjKAGSGmXZHqttMVVz1r4QNfmGpyj+cm2YtI3II0c/+4zS4a9yq2mBhgdeq2QnpcYlw== + version "3.1.1" + resolved "https://registry.npmjs.org/dset/-/dset-3.1.1.tgz#07de5af7a8d03eab337ad1a8ba77fe17bba61a8c" + integrity sha512-hYf+jZNNqJBD2GiMYb+5mqOIX4R4RRHXU3qWMWYN+rqcR2/YpRL2bUHr8C8fU+5DNvqYjJ8YvMGSLuVPWU1cNg== duplexer2@~0.1.4: version "0.1.4" @@ -10541,20 +10145,15 @@ duplexer3@^0.1.4: resolved "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= -duplexer@^0.1.1, duplexer@~0.1.1: - version "0.1.1" - resolved "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" - integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E= - -duplexer@^0.1.2: +duplexer@^0.1.1, duplexer@^0.1.2, duplexer@~0.1.1: version "0.1.2" resolved "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== duplexify@^4.0.0, duplexify@^4.1.1: - version "4.1.1" - resolved "https://registry.npmjs.org/duplexify/-/duplexify-4.1.1.tgz#7027dc374f157b122a8ae08c2d3ea4d2d953aa61" - integrity sha512-DY3xVEmVHTv1wSzKNbwoU6nVjzI369Y6sPoqfYr0/xlx3IdX2n94xIszTcjPO8W8ZIv0Wb0PXNcjuZyT4wiICA== + version "4.1.2" + resolved "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz#18b4f8d28289132fa0b9573c898d9f903f81c7b0" + integrity sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw== dependencies: end-of-stream "^1.4.1" inherits "^2.0.3" @@ -10609,16 +10208,16 @@ elastic-builder@^2.16.0: lodash.omit "^4.5.0" electron-to-chromium@^1.4.17: - version "1.4.35" - resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.35.tgz#69aabb73d7030733e71c1e970ec16f5ceefbaea4" - integrity sha512-wzTOMh6HGFWeALMI3bif0mzgRrVGyP1BdFRx7IvWukFrSC5QVQELENuy+Fm2dCrAdQH9T3nuqr07n94nPDFBWA== + version "1.4.71" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.71.tgz#17056914465da0890ce00351a3b946fd4cd51ff6" + integrity sha512-Hk61vXXKRb2cd3znPE9F+2pLWdIOmP7GjiTj45y6L3W/lO+hSnUSUhq+6lEaERWBdZOHbk2s3YV5c9xVl3boVw== elegant-spinner@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e" integrity sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4= -elliptic@^6.0.0: +elliptic@^6.5.3: version "6.5.4" resolved "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== @@ -10632,14 +10231,9 @@ elliptic@^6.0.0: minimalistic-crypto-utils "^1.0.1" emittery@^0.7.1: - version "0.7.1" - resolved "https://registry.npmjs.org/emittery/-/emittery-0.7.1.tgz#c02375a927a40948c0345cc903072597f5270451" - integrity sha512-d34LN4L6h18Bzz9xpoku2nPwKxCPlPMr3EEKTkoEBi+1/+b0lcRkRJ1UVyyZaKNeqGR3swcGl6s390DNO4YVgQ== - -emoji-regex@^7.0.1: - version "7.0.3" - resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" - integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== + version "0.7.2" + resolved "https://registry.npmjs.org/emittery/-/emittery-0.7.2.tgz#25595908e13af0f5674ab419396e2fb394cdfa82" + integrity sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ== emoji-regex@^8.0.0: version "8.0.0" @@ -10680,15 +10274,15 @@ end-of-stream@^1.1.0, end-of-stream@^1.4.1: dependencies: once "^1.4.0" -enhanced-resolve@^5.8.3: - version "5.8.3" - resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz#6d552d465cce0423f5b3d718511ea53826a7b2f0" - integrity sha512-EGAbGvH7j7Xt2nc0E7D99La1OiEs8LnyimkRgwExpUMScN6O+3x9tIWs7PLQZVNx4YD+00skHXPXi1yQHpAmZA== +enhanced-resolve@^5.9.0: + version "5.9.0" + resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.0.tgz#49ac24953ac8452ed8fed2ef1340fc8e043667ee" + integrity sha512-weDYmzbBygL7HzGGS26M3hGQx68vehdEg6VUmqSOaFzXExFqlnKuSvsEJCVGQHScS8CQMbrAqftT+AzzHNt/YA== dependencies: graceful-fs "^4.2.4" tapable "^2.2.0" -enquirer@^2.3.0: +enquirer@^2.3.0, enquirer@^2.3.6: version "2.3.6" resolved "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== @@ -10700,25 +10294,30 @@ ent@^2.2.0: resolved "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d" integrity sha1-6WQhkyWiHQX0RGai9obtbOX13R0= -entities@^2.0.0, entities@~2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5" - integrity sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w== +entities@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" + integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== entities@^3.0.1: version "3.0.1" resolved "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz#2b887ca62585e96db3903482d336c1006c3001d4" integrity sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q== +entities@~2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5" + integrity sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w== + env-paths@^2.2.0: - version "2.2.0" - resolved "https://registry.npmjs.org/env-paths/-/env-paths-2.2.0.tgz#cdca557dc009152917d6166e2febe1f039685e43" - integrity sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA== + version "2.2.1" + resolved "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" + integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== envinfo@^7.7.4: - version "7.7.4" - resolved "https://registry.npmjs.org/envinfo/-/envinfo-7.7.4.tgz#c6311cdd38a0e86808c1c9343f667e4267c4a320" - integrity sha512-TQXTYFVVwwluWSFis6K2XKxgrD22jEv0FTuLCQI+OjH7rn93+iY0fSSFM5lrSxFY+H1+B0/cvvlamr3UsBivdQ== + version "7.8.1" + resolved "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" + integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== eol@^0.9.1: version "0.9.1" @@ -10738,9 +10337,9 @@ error-ex@^1.2.0, error-ex@^1.3.1: is-arrayish "^0.2.1" error-stack-parser@^2.0.6: - version "2.0.6" - resolved "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.6.tgz#5a99a707bd7a4c58a797902d48d82803ede6aad8" - integrity sha512-d51brTeqC+BHlwF0BhPtcYgF5nlzf9ZZ0ZIUQNZpc9ZB9qw5IJ2diTrBY9jlCJkTLITYPjmiX6OWCwH+fuyNgQ== + version "2.0.7" + resolved "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.7.tgz#b0c6e2ce27d0495cf78ad98715e0cad1219abb57" + integrity sha512-chLOW0ZGRf4s8raLrDxa5sdkvPec5YdvwbFnqJme4rk0rFajP8mPtrDL1+I+CwrQDCjswDA5sREX7jYQDQs9vA== dependencies: stackframe "^1.1.1" @@ -10749,29 +10348,7 @@ error@^10.4.0: resolved "https://registry.npmjs.org/error/-/error-10.4.0.tgz#6fcf0fd64bceb1e750f8ed9a3dd880f00e46a487" integrity sha512-YxIFEJuhgcICugOUvRx5th0UM+ActZ9sjY0QJmeVwsQdvosZ7kYzc9QqS0Da3R5iUmgU5meGIxh0xBeZpMVeLw== -es-abstract@^1.17.0-next.1, es-abstract@^1.18.0-next.1, es-abstract@^1.18.0-next.2: - version "1.18.0" - resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz#ab80b359eecb7ede4c298000390bc5ac3ec7b5a4" - integrity sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw== - dependencies: - call-bind "^1.0.2" - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - get-intrinsic "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.2" - is-callable "^1.2.3" - is-negative-zero "^2.0.1" - is-regex "^1.1.2" - is-string "^1.0.5" - object-inspect "^1.9.0" - object-keys "^1.1.1" - object.assign "^4.1.2" - string.prototype.trimend "^1.0.4" - string.prototype.trimstart "^1.0.4" - unbox-primitive "^1.0.0" - -es-abstract@^1.19.0, es-abstract@^1.19.1: +es-abstract@^1.18.5, es-abstract@^1.19.0, es-abstract@^1.19.1: version "1.19.1" resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz#d4885796876916959de78edaa0df456627115ec3" integrity sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w== @@ -10797,7 +10374,7 @@ es-abstract@^1.19.0, es-abstract@^1.19.1: string.prototype.trimstart "^1.0.4" unbox-primitive "^1.0.1" -es-module-lexer@^0.9.0: +es-module-lexer@^0.9.0, es-module-lexer@^0.9.3: version "0.9.3" resolved "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19" integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ== @@ -10811,42 +10388,6 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" -es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@^0.10.53, es5-ext@~0.10.14, es5-ext@~0.10.2, es5-ext@~0.10.46: - version "0.10.53" - resolved "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1" - integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q== - dependencies: - es6-iterator "~2.0.3" - es6-symbol "~3.1.3" - next-tick "~1.0.0" - -es6-iterator@^2.0.3, es6-iterator@~2.0.3: - version "2.0.3" - resolved "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" - integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= - dependencies: - d "1" - es5-ext "^0.10.35" - es6-symbol "^3.1.1" - -es6-symbol@^3.1.1, es6-symbol@~3.1.3: - version "3.1.3" - resolved "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" - integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== - dependencies: - d "^1.0.1" - ext "^1.1.2" - -es6-weak-map@^2.0.3: - version "2.0.3" - resolved "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz#b6da1f16cc2cc0d9be43e6bdbfc5e7dfcdf31d53" - integrity sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA== - dependencies: - d "1" - es5-ext "^0.10.46" - es6-iterator "^2.0.3" - es6-symbol "^3.1.1" - esbuild-android-arm64@0.14.22: version "0.14.22" resolved "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.22.tgz#fb051169a63307d958aec85ad596cfc7d7770303" @@ -11014,18 +10555,6 @@ escape-string-regexp@^5.0.0: resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz#4683126b500b61762f2dbebace1806e8be31b1c8" integrity sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw== -escodegen@^1.14.1: - version "1.14.3" - resolved "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" - integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== - dependencies: - esprima "^4.0.1" - estraverse "^4.2.0" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.6.1" - escodegen@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" @@ -11062,19 +10591,10 @@ eslint-import-resolver-node@^0.3.6: debug "^3.2.7" resolve "^1.20.0" -eslint-module-utils@^2.1.1: - version "2.7.1" - resolved "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.1.tgz#b435001c9f8dd4ab7f6d0efcae4b9696d4c24b7c" - integrity sha512-fjoetBXQZq2tSTWZ9yWVl2KuFrTZZH3V+9iD1V1RfpDgxzJR+mPd/KZmMiA8gbPqdBzpNiEHOuT7IYEWxrH0zQ== - dependencies: - debug "^3.2.7" - find-up "^2.1.0" - pkg-dir "^2.0.0" - -eslint-module-utils@^2.7.2: - version "2.7.2" - resolved "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.2.tgz#1d0aa455dcf41052339b63cada8ab5fd57577129" - integrity sha512-zquepFnWCY2ISMFwD/DqzaM++H+7PDzOpUvotJWm/y1BAFt5R4oeULgdrTejKqLkz7MA/tgstsUMNYc7wNdTrg== +eslint-module-utils@^2.1.1, eslint-module-utils@^2.7.2: + version "2.7.3" + resolved "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz#ad7e3a10552fdd0642e1e55292781bd6e34876ee" + integrity sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ== dependencies: debug "^3.2.7" find-up "^2.1.0" @@ -11116,9 +10636,9 @@ eslint-plugin-import@^2.25.4: tsconfig-paths "^3.12.0" eslint-plugin-jest@^25.3.4: - version "25.3.4" - resolved "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-25.3.4.tgz#2031dfe495be1463330f8b80096ddc91f8e6387f" - integrity sha512-CCnwG71wvabmwq/qkz0HWIqBHQxw6pXB1uqt24dxqJ9WB34pVg49bL1sjXphlJHgTMWGhBjN1PicdyxDxrfP5A== + version "25.7.0" + resolved "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-25.7.0.tgz#ff4ac97520b53a96187bad9c9814e7d00de09a6a" + integrity sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ== dependencies: "@typescript-eslint/experimental-utils" "^5.0.0" @@ -11195,10 +10715,10 @@ eslint-scope@5.1.1, eslint-scope@^5.1.1: esrecurse "^4.3.0" estraverse "^4.1.1" -eslint-scope@^7.1.0: - version "7.1.0" - resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.0.tgz#c1f6ea30ac583031f203d65c73e723b01298f153" - integrity sha512-aWwkhnS0qAXqNOgKOK0dJ2nvzEbhEvpy8OlJ9kZ0FeZnA6zpjv1/Vei+puGFFX7zkPCkHHXb7IDX3A+7yPrRWg== +eslint-scope@^7.1.1: + version "7.1.1" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642" + integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== dependencies: esrecurse "^4.3.0" estraverse "^5.2.0" @@ -11211,14 +10731,14 @@ eslint-utils@^3.0.0: eslint-visitor-keys "^2.0.0" eslint-visitor-keys@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8" - integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ== + version "2.1.0" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" + integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== -eslint-visitor-keys@^3.0.0, eslint-visitor-keys@^3.1.0, eslint-visitor-keys@^3.2.0: - version "3.2.0" - resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.2.0.tgz#6fbb166a6798ee5991358bc2daa1ba76cc1254a1" - integrity sha512-IOzT0X126zn7ALX0dwFiUQEdsfzrm4+ISsQS8nukaJXwEyYKRSnEIIDULYg1mCtGp7UUXgfGl7BIolXREQK+XQ== +eslint-visitor-keys@^3.0.0, eslint-visitor-keys@^3.3.0: + version "3.3.0" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" + integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== eslint-webpack-plugin@^2.6.0: version "2.6.0" @@ -11233,11 +10753,11 @@ eslint-webpack-plugin@^2.6.0: schema-utils "^3.1.1" eslint@^8.6.0: - version "8.7.0" - resolved "https://registry.npmjs.org/eslint/-/eslint-8.7.0.tgz#22e036842ee5b7cf87b03fe237731675b4d3633c" - integrity sha512-ifHYzkBGrzS2iDU7KjhCAVMGCvF6M3Xfs8X8b37cgrUlDt6bWRTpRh6T/gtSXv1HJ/BUGgmjvNvOEGu85Iif7w== + version "8.9.0" + resolved "https://registry.npmjs.org/eslint/-/eslint-8.9.0.tgz#a2a8227a99599adc4342fd9b854cb8d8d6412fdb" + integrity sha512-PB09IGwv4F4b0/atrbcMFboF/giawbBLVC7fyDamk5Wtey4Jh2K+rYaBhCAbUyEI4QzB1ly09Uglc9iCtFaG2Q== dependencies: - "@eslint/eslintrc" "^1.0.5" + "@eslint/eslintrc" "^1.1.0" "@humanwhocodes/config-array" "^0.9.2" ajv "^6.10.0" chalk "^4.0.0" @@ -11245,10 +10765,10 @@ eslint@^8.6.0: debug "^4.3.2" doctrine "^3.0.0" escape-string-regexp "^4.0.0" - eslint-scope "^7.1.0" + eslint-scope "^7.1.1" eslint-utils "^3.0.0" - eslint-visitor-keys "^3.2.0" - espree "^9.3.0" + eslint-visitor-keys "^3.3.0" + espree "^9.3.1" esquery "^1.4.0" esutils "^2.0.2" fast-deep-equal "^3.1.3" @@ -11278,14 +10798,14 @@ esm@^3.2.25: resolved "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz#342c18c29d56157688ba5ce31f8431fbb795cc10" integrity sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA== -espree@^9.2.0, espree@^9.3.0: - version "9.3.0" - resolved "https://registry.npmjs.org/espree/-/espree-9.3.0.tgz#c1240d79183b72aaee6ccfa5a90bc9111df085a8" - integrity sha512-d/5nCsb0JcqsSEeQzFZ8DH1RmxPcglRWh24EFTlUEmCKoehXGdpsx0RkHDubqUI8LSAIKMQp4r9SzQ3n+sm4HQ== +espree@^9.3.1: + version "9.3.1" + resolved "https://registry.npmjs.org/espree/-/espree-9.3.1.tgz#8793b4bc27ea4c778c19908e0719e7b8f4115bcd" + integrity sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ== dependencies: acorn "^8.7.0" acorn-jsx "^5.3.1" - eslint-visitor-keys "^3.1.0" + eslint-visitor-keys "^3.3.0" esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0: version "4.0.1" @@ -11306,7 +10826,7 @@ esrecurse@^4.3.0: dependencies: estraverse "^5.2.0" -estraverse@^4.1.1, estraverse@^4.2.0: +estraverse@^4.1.1: version "4.3.0" resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== @@ -11327,9 +10847,9 @@ estree-walker@^1.0.1: integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== estree-walker@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.1.tgz#f8e030fb21cefa183b44b7ad516b747434e7a3e0" - integrity sha512-tF0hv+Yi2Ot1cwj9eYHtxC0jB9bmjacjQs6ZBTj82H8JwUywFuc+7E83NWfNMwHXZc11mjfFcVXPe9gEP4B8dg== + version "2.0.2" + resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" + integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== esutils@^2.0.2: version "2.0.3" @@ -11341,14 +10861,6 @@ etag@~1.8.1: resolved "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= -event-emitter@^0.3.5: - version "0.3.5" - resolved "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" - integrity sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk= - dependencies: - d "1" - es5-ext "~0.10.14" - event-source-polyfill@^1.0.25: version "1.0.25" resolved "https://registry.npmjs.org/event-source-polyfill/-/event-source-polyfill-1.0.25.tgz#d8bb7f99cb6f8119c2baf086d9f6ee0514b6d9c8" @@ -11372,12 +10884,7 @@ event-target-shim@^5.0.0: resolved "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== -eventemitter2@^6.4.3: - version "6.4.4" - resolved "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.4.tgz#aa96e8275c4dbeb017a5d0e03780c65612a1202b" - integrity sha512-HLU3NDY6wARrLCEwyGKRBvuWYyvW6mHYv72SJJAH3iJN3a6eVUvkjFkcxah1bcTgGVBBrFdIopBJPhCQFMLyXw== - -eventemitter2@^6.4.4: +eventemitter2@^6.4.3, eventemitter2@^6.4.4: version "6.4.5" resolved "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.5.tgz#97380f758ae24ac15df8353e0cc27f8b95644655" integrity sha512-bXE7Dyc1i6oQElDG0jMRZJrRAn9QR2xyyFGmBdZleNmyQX0FqGYmhZIrIrpPfm/w//LTo4tVQGOGQcGCb5q9uw== @@ -11480,9 +10987,9 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: zen-observable "^0.8.15" exec-sh@^0.3.2: - version "0.3.4" - resolved "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.4.tgz#3a018ceb526cc6f6df2bb504b2bfe8e3a4934ec5" - integrity sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A== + version "0.3.6" + resolved "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.6.tgz#ff264f9e325519a60cb5e273692943483cca63bc" + integrity sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w== execa@4.1.0, execa@^4.0.0: version "4.1.0" @@ -11549,11 +11056,6 @@ executable@^4.1.1: dependencies: pify "^2.2.0" -exit-hook@^1.0.0: - version "1.1.1" - resolved "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" - integrity sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g= - exit-on-epipe@~1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz#0bdd92e87d5285d267daa8171d0eb06159689692" @@ -11628,16 +11130,16 @@ express-xml-bodyparser@^0.3.0: xml2js "^0.4.11" express@^4.17.1: - version "4.17.2" - resolved "https://registry.npmjs.org/express/-/express-4.17.2.tgz#c18369f265297319beed4e5558753cc8c1364cb3" - integrity sha512-oxlxJxcQlYwqPWKVJJtvQiwHgosH/LrLSPA+H4UxpyvSS6jC5aH+5MoHFM+KABgTOt0APue4w66Ha8jCUo9QGg== + version "4.17.3" + resolved "https://registry.npmjs.org/express/-/express-4.17.3.tgz#f6c7302194a4fb54271b73a1fe7a06478c8f85a1" + integrity sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg== dependencies: - accepts "~1.3.7" + accepts "~1.3.8" array-flatten "1.1.1" - body-parser "1.19.1" + body-parser "1.19.2" content-disposition "0.5.4" content-type "~1.0.4" - cookie "0.4.1" + cookie "0.4.2" cookie-signature "1.0.6" debug "2.6.9" depd "~1.1.2" @@ -11652,7 +11154,7 @@ express@^4.17.1: parseurl "~1.3.3" path-to-regexp "0.1.7" proxy-addr "~2.0.7" - qs "6.9.6" + qs "6.9.7" range-parser "~1.2.1" safe-buffer "5.2.1" send "0.17.2" @@ -11663,13 +11165,6 @@ express@^4.17.1: utils-merge "1.0.1" vary "~1.1.2" -ext@^1.1.2: - version "1.4.0" - resolved "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz#89ae7a07158f79d35517882904324077e4379244" - integrity sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A== - dependencies: - type "^2.0.0" - extend-shallow@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" @@ -11718,16 +11213,16 @@ extglob@^2.0.4: snapdragon "^0.8.1" to-regex "^3.0.1" -extract-files@11.0.0, extract-files@^11.0.0: - version "11.0.0" - resolved "https://registry.npmjs.org/extract-files/-/extract-files-11.0.0.tgz#b72d428712f787eef1f5193aff8ab5351ca8469a" - integrity sha512-FuoE1qtbJ4bBVvv94CC7s0oTnKUGvQs+Rjf1L2SJFfS+HTVVjhPFtehPdQ0JiGPqVNfSSZvL5yzHHQq2Z4WNhQ== - extract-files@9.0.0, extract-files@^9.0.0: version "9.0.0" resolved "https://registry.npmjs.org/extract-files/-/extract-files-9.0.0.tgz#8a7744f2437f81f5ed3250ed9f1550de902fe54a" integrity sha512-CvdFfHkC95B4bBBk36hcEmvdR2awOdhhVUYH6S/zrVj3477zven/fJMYg7121h4T1xHZC+tetUpubpAhxwI7hQ== +extract-files@^11.0.0: + version "11.0.0" + resolved "https://registry.npmjs.org/extract-files/-/extract-files-11.0.0.tgz#b72d428712f787eef1f5193aff8ab5351ca8469a" + integrity sha512-FuoE1qtbJ4bBVvv94CC7s0oTnKUGvQs+Rjf1L2SJFfS+HTVVjhPFtehPdQ0JiGPqVNfSSZvL5yzHHQq2Z4WNhQ== + extract-zip@2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a" @@ -11739,25 +11234,15 @@ extract-zip@2.0.1: optionalDependencies: "@types/yauzl" "^2.9.1" -extract-zip@^1.7.0: - version "1.7.0" - resolved "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz#556cc3ae9df7f452c493a0cfb51cc30277940927" - integrity sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA== - dependencies: - concat-stream "^1.6.2" - debug "^2.6.9" - mkdirp "^0.5.4" - yauzl "^2.10.0" - extsprintf@1.3.0: version "1.3.0" resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= extsprintf@^1.2.0: - version "1.4.0" - resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" - integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= + version "1.4.1" + resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" + integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== fast-decode-uri-component@^1.0.1: version "1.0.1" @@ -11774,17 +11259,16 @@ fast-equals@^2.0.0: resolved "https://registry.npmjs.org/fast-equals/-/fast-equals-2.0.4.tgz#3add9410585e2d7364c2deeb6a707beadb24b927" integrity sha512-caj/ZmjHljPrZtbzJ3kfH5ia/k4mTJe/qSiXAGzxZWRZgsgDV0cvNaQULqUX8t0/JVlzzEdYOwCN5DmzTxoD4w== -fast-glob@^3.1.1: - version "3.2.2" - resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.2.tgz#ade1a9d91148965d4bf7c51f72e1ca662d32e63d" - integrity sha512-UDV82o4uQyljznxwMxyVRJgZZt3O5wENYojjzbaGEGZgeOxkLFf+V4cnUD+krzb2F72E18RhamkMZ7AdeggF7A== +fast-glob@^3.1.1, fast-glob@^3.2.9: + version "3.2.11" + resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" + integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== dependencies: "@nodelib/fs.stat" "^2.0.2" "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.0" + glob-parent "^5.1.2" merge2 "^1.3.0" - micromatch "^4.0.2" - picomatch "^2.2.1" + micromatch "^4.0.4" fast-json-parse@^1.0.3: version "1.0.3" @@ -11792,9 +11276,9 @@ fast-json-parse@^1.0.3: integrity sha512-FRWsaZRWEJ1ESVNbDWmsAlqDk96gPQezzLghafp5J4GUKjbCz3OkAHuZs5TuPEtkbVQERysLp9xv6c24fBm8Aw== fast-json-patch@^3.0.0-1: - version "3.0.0-1" - resolved "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-3.0.0-1.tgz#4c68f2e7acfbab6d29d1719c44be51899c93dabb" - integrity sha512-6pdFb07cknxvPzCeLsFHStEy+MysPJPgZQ9LbQ/2O67unQF93SNqfdSqnPPl71YMHX+AD8gbl7iuoGFzHEdDuw== + version "3.1.0" + resolved "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-3.1.0.tgz#ec8cd9b9c4c564250ec8b9140ef7a55f70acaee6" + integrity sha512-IhpytlsVTRndz0hU5t0/MGzS/etxLlfrpG5V5M9mVbuj9TrJLWaMfsox9REM5rkuGX0T+5qjpe8XA1o0gZ42nA== fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: version "2.1.0" @@ -11811,12 +11295,7 @@ fast-redact@^2.0.0: resolved "https://registry.npmjs.org/fast-redact/-/fast-redact-2.1.0.tgz#dfe3c1ca69367fb226f110aa4ec10ec85462ffdf" integrity sha512-0LkHpTLyadJavq9sRzzyqIoMZemWli77K2/MGOkafrR64B9ItrvZ9aT+jluvNDsv0YEHjSNhlMBtbokuoqii4A== -fast-safe-stringify@^2.0.6, fast-safe-stringify@^2.0.7: - version "2.0.8" - resolved "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.8.tgz#dc2af48c46cf712b683e849b2bbd446b32de936f" - integrity sha512-lXatBjf3WPjmWD6DpIZxkeSsCOwqI0maYMpgDlx8g4U2qi4lbjA9oH/HD2a87G+KfsUmo5WbJFmqBZlPxtptag== - -fast-safe-stringify@^2.1.1: +fast-safe-stringify@^2.0.6, fast-safe-stringify@^2.0.7, fast-safe-stringify@^2.1.1: version "2.1.1" resolved "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== @@ -11844,9 +11323,9 @@ fastest-stable-stringify@^2.0.2: integrity sha512-bijHueCGd0LqqNK9b5oCMHc0MluJAx0cwqASgbWMvkO01lCYgIhacVRLcaDz3QnyYIRNJRDwMb41VuT6pHJ91Q== fastq@^1.6.0: - version "1.6.1" - resolved "https://registry.npmjs.org/fastq/-/fastq-1.6.1.tgz#4570c74f2ded173e71cf0beb08ac70bb85826791" - integrity sha512-mpIH5sKYueh3YyeJwqtVo8sORi0CgtmkVbK6kZStpQlZBYQuTzG2CZ7idSiJuA7bY0SFCWUc5WIs+oYumGCQNw== + version "1.13.0" + resolved "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" + integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== dependencies: reusify "^1.0.4" @@ -11858,9 +11337,9 @@ fault@^1.0.0: format "^0.2.0" faye-websocket@^0.11.3: - version "0.11.3" - resolved "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e" - integrity sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA== + version "0.11.4" + resolved "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" + integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== dependencies: websocket-driver ">=0.5.1" @@ -11877,17 +11356,17 @@ fbjs-css-vars@^1.0.0: integrity sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ== fbjs@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/fbjs/-/fbjs-3.0.0.tgz#0907067fb3f57a78f45d95f1eacffcacd623c165" - integrity sha512-dJd4PiDOFuhe7vk4F80Mba83Vr2QuK86FoxtgPmzBqEJahncp+13YCmfoa53KHCo6OnlXLG7eeMWPfB5CrpVKg== + version "3.0.4" + resolved "https://registry.npmjs.org/fbjs/-/fbjs-3.0.4.tgz#e1871c6bd3083bac71ff2da868ad5067d37716c6" + integrity sha512-ucV0tDODnGV3JCnnkmoszb5lf4bNpzjv80K41wd4k798Etq+UYD0y0TIfalLjZoKgjive6/adkRnszwapiDgBQ== dependencies: - cross-fetch "^3.0.4" + cross-fetch "^3.1.5" fbjs-css-vars "^1.0.0" loose-envify "^1.0.0" object-assign "^4.1.0" promise "^7.1.1" setimmediate "^1.0.5" - ua-parser-js "^0.7.18" + ua-parser-js "^0.7.30" fd-slicer@~1.1.0: version "1.1.0" @@ -11897,9 +11376,9 @@ fd-slicer@~1.1.0: pend "~1.2.0" fecha@^4.2.0: - version "4.2.0" - resolved "https://registry.npmjs.org/fecha/-/fecha-4.2.0.tgz#3ffb6395453e3f3efff850404f0a59b6747f5f41" - integrity sha512-aN3pcx/DSmtyoovUudctc8+6Hl4T+hI9GBBHLjA76jdZl7+b1sgh5g4k+u/GL3dTy1/pnYzKp69FpJ0OicE3Wg== + version "4.2.1" + resolved "https://registry.npmjs.org/fecha/-/fecha-4.2.1.tgz#0a83ad8f86ef62a091e22bb5a039cd03d23eecce" + integrity sha512-MMMQ0ludy/nBs1/o0zVOiKTpG7qMbonKUzjJgQFEuvq6INZ1OraKPRAWkBq5vlKLOUMpmNYG1JoN3oDPUQ9m3Q== figures@^1.7.0: version "1.7.0" @@ -11916,7 +11395,7 @@ figures@^2.0.0: dependencies: escape-string-regexp "^1.0.5" -figures@^3.0.0: +figures@^3.0.0, figures@^3.2.0: version "3.2.0" resolved "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== @@ -11947,9 +11426,9 @@ filelist@^1.0.1: minimatch "^3.0.4" filesize@^8.0.6: - version "8.0.6" - resolved "https://registry.npmjs.org/filesize/-/filesize-8.0.6.tgz#5f0c27aa1b507fa7d9f72c912a774ca6a44111b1" - integrity sha512-sHvRqTiwdmcuzqet7iVwsbwF6UrV3wIgDf2SHNdY1Hgl8PC45HZg/0xtdw6U2izIV4lccnrY9ftl6wZFNdjYMg== + version "8.0.7" + resolved "https://registry.npmjs.org/filesize/-/filesize-8.0.7.tgz#695e70d80f4e47012c132d57a059e80c6b580bd8" + integrity sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ== fill-range@^4.0.0: version "4.0.0" @@ -12086,14 +11565,14 @@ flatstr@^1.0.12: integrity sha512-4zPxDyhCyiN2wIAtSLI6gc82/EjqZc1onI4Mz/l0pWrAlsSfYH/2ZIcU+e3oA2wDwbzIWNKwa23F8rh6+DRWkw== flatted@^3.1.0: - version "3.1.1" - resolved "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz#c4b489e80096d9df1dfc97c79871aea7c617c469" - integrity sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA== + version "3.2.5" + resolved "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz#76c8584f4fc843db64702a6bd04ab7a8bd666da3" + integrity sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg== flow-parser@0.*: - version "0.152.0" - resolved "https://registry.npmjs.org/flow-parser/-/flow-parser-0.152.0.tgz#a627aec1fdcfa243e2016469e44284a98169b996" - integrity sha512-qRXGE3ztuhyI2ovi4Ixwq7/GUYvKX9wmFdwBof2q5pWHteuveexFrlbwZxSonC0dWz2znA6sW+vce4RXgYLnnQ== + version "0.172.0" + resolved "https://registry.npmjs.org/flow-parser/-/flow-parser-0.172.0.tgz#9f5ee62ebf6bad689d5de0b6b98445d8cf030a2f" + integrity sha512-WWqgvuJgD9Y1n2su9D73m0g5kQ4XVl8Dwk6DeW5V6bjt4XMtVLzSHg35s3iiZOvShY+7w7l8FzlK81PGXRcIYQ== fn.name@1.x.x: version "1.1.0" @@ -12140,9 +11619,9 @@ fork-ts-checker-webpack-plugin@^6.5.0: tapable "^1.0.0" fork-ts-checker-webpack-plugin@^7.0.0-alpha.8: - version "7.1.1" - resolved "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-7.1.1.tgz#9806c04f3aecaec8c9e8872806cd1f26d50d92a8" - integrity sha512-MgAv1g6+HLXz1iq2AZRfBjDhwBwk1HRSjuhNiMs8ax/3tsFo0rHedKwuE6ok44sJ5F5VgwPZae8gq0wiBAqYRw== + version "7.2.1" + resolved "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-7.2.1.tgz#c37a538e12730fe11fd725bcf0fce29487950833" + integrity sha512-uOfQdg/iQ8iokQ64qcbu8iZb114rOmaKLQFu7hU14/eJaKgsP91cQ7ts7v2iiDld6TzDe84Meksha8/MkWiCyw== dependencies: "@babel/code-frame" "^7.16.7" chalk "^4.1.2" @@ -12156,12 +11635,7 @@ fork-ts-checker-webpack-plugin@^7.0.0-alpha.8: semver "^7.3.5" tapable "^2.2.1" -form-data-encoder@^1.4.3: - version "1.6.0" - resolved "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.6.0.tgz#9dd1f479836c1b1b47201667c68f8daafa800943" - integrity sha512-P97AVaOB8hZaniiKK3f46zxQcchQXI8EgBnX+2+719gLv5ZbDSf3J1XtIuAQ8xbGLU4vZYhy7xwhFtK8U5u9Nw== - -form-data-encoder@^1.7.1: +form-data-encoder@^1.4.3, form-data-encoder@^1.7.1: version "1.7.1" resolved "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.7.1.tgz#ac80660e4f87ee0d3d3c3638b7da8278ddb8ec96" integrity sha512-EFRDrsMm/kyqbTQocNvRXMLjc7Es2Vk+IQFx/YW7hkUH1eBl4J1fqiP34l74Yt0pFLCNpc06fkbVk00008mzjg== @@ -12185,9 +11659,9 @@ form-data@^2.3.2, form-data@^2.5.0: mime-types "^2.1.12" form-data@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/form-data/-/form-data-3.0.0.tgz#31b7e39c85f1355b7139ee0c647cf0de7f83c682" - integrity sha512-CKMFDglpbMi6PyN+brwB9Q/GOw0eAnsrEZDgcsH5Krhz5Od/haKHAX0NmQfha2zPPz0JpWzA7GJHGSnvCRLWsg== + version "3.0.1" + resolved "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" + integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== dependencies: asynckit "^0.4.0" combined-stream "^1.0.8" @@ -12207,15 +11681,7 @@ format@^0.2.0: resolved "https://registry.npmjs.org/format/-/format-0.2.2.tgz#d6170107e9efdc4ed30c9dc39016df942b5cb58b" integrity sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs= -formdata-node@^4.0.0: - version "4.3.0" - resolved "https://registry.npmjs.org/formdata-node/-/formdata-node-4.3.0.tgz#77be2add9092cbd1e1f4d35bc3293a89be117a04" - integrity sha512-TwqhWUZd2jB5l0kUhhcy1XYNsXq46NH6k60zmiu7xsxMztul+cCMuPSAQrSDV62zznhBKJdA9O+zeWj5i5Pbfg== - dependencies: - node-domexception "1.0.0" - web-streams-polyfill "4.0.0-beta.1" - -formdata-node@^4.3.1: +formdata-node@^4.0.0, formdata-node@^4.3.1: version "4.3.2" resolved "https://registry.npmjs.org/formdata-node/-/formdata-node-4.3.2.tgz#0262e94931e36db7239c2b08bdb6aaf18ec47d21" integrity sha512-k7lYJyzDOSL6h917favP8j1L0/wNyylzU+x+1w4p5haGVHNlP58dbpdJhiCUsDbWsa9HwEtLp89obQgXl2e0qg== @@ -12375,9 +11841,9 @@ gauge@^3.0.0: wide-align "^1.1.2" gauge@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/gauge/-/gauge-4.0.0.tgz#afba07aa0374a93c6219603b1fb83eaa2264d8f8" - integrity sha512-F8sU45yQpjQjxKkm1UOAhf0U/O0aFt//Fl7hsrNVto+patMHjs7dPI9mFOGUKbhrgKm0S3EjW3scMFuQmWSROw== + version "4.0.1" + resolved "https://registry.npmjs.org/gauge/-/gauge-4.0.1.tgz#82984bc08c90357d60b0a46c03a296beb1affec4" + integrity sha512-zJ4jePUHR8cceduZ53b6temRalyGpkC2Kc2r3ecNphmL+uWNoJ3YcOcUjpbG6WwoE/Ef6/+aEZz63neI2WIa1Q== dependencies: ansi-regex "^5.0.1" aproba "^1.0.3 || ^2.0.0" @@ -12404,37 +11870,24 @@ gauge@~2.7.3: wide-align "^1.1.0" gaxios@^4.0.0: - version "4.0.1" - resolved "https://registry.npmjs.org/gaxios/-/gaxios-4.0.1.tgz#bc7b205a89d883452822cc75e138620c35e3291e" - integrity sha512-jOin8xRZ/UytQeBpSXFqIzqU7Fi5TqgPNLlUsSB8kjJ76+FiGBfImF8KJu++c6J4jOldfJUtt0YmkRj2ZpSHTQ== + version "4.3.2" + resolved "https://registry.npmjs.org/gaxios/-/gaxios-4.3.2.tgz#845827c2dc25a0213c8ab4155c7a28910f5be83f" + integrity sha512-T+ap6GM6UZ0c4E6yb1y/hy2UB6hTrqhglp3XfmU9qbLCGRYhLVV5aRPpC4EmoG8N8zOnkYCgoBz+ScvGAARY6Q== dependencies: abort-controller "^3.0.0" extend "^3.0.2" https-proxy-agent "^5.0.0" is-stream "^2.0.0" - node-fetch "^2.3.0" + node-fetch "^2.6.1" gcp-metadata@^4.2.0: - version "4.2.1" - resolved "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-4.2.1.tgz#31849fbcf9025ef34c2297c32a89a1e7e9f2cd62" - integrity sha512-tSk+REe5iq/N+K+SK1XjZJUrFPuDqGZVzCy2vocIHIGmPlTGsa8owXMJwGkrXr73NO0AzhPW4MF2DEHz7P2AVw== + version "4.3.1" + resolved "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-4.3.1.tgz#fb205fe6a90fef2fd9c85e6ba06e5559ee1eefa9" + integrity sha512-x850LS5N7V1F3UcV7PoupzGsyD6iVwTVvsh3tbXfkctZnBnjW5yu5z1/3k3SehF7TyoTIe78rJs02GMMy+LF+A== dependencies: gaxios "^4.0.0" json-bigint "^1.0.0" -gcs-resumable-upload@^3.3.0: - version "3.3.0" - resolved "https://registry.npmjs.org/gcs-resumable-upload/-/gcs-resumable-upload-3.3.0.tgz#d1a866173f9b47e045d4406cafaa658dbb01e624" - integrity sha512-MQKWi+9hOSTyg5/SI1NBW4gAjL1wlkoevHefvr1PCBBXH4uKYLsug5qRrcotWKolDPLfWS51cWaHRN0CTtQNZw== - dependencies: - abort-controller "^3.0.0" - configstore "^5.0.0" - extend "^3.0.2" - gaxios "^4.0.0" - google-auth-library "^7.0.0" - pumpify "^2.0.0" - stream-events "^1.0.4" - generate-function@^2.3.1: version "2.3.1" resolved "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz#f069617690c10c868e73b8465746764f97c3479f" @@ -12442,12 +11895,12 @@ generate-function@^2.3.1: dependencies: is-property "^1.0.2" -generic-names@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/generic-names/-/generic-names-2.0.1.tgz#f8a378ead2ccaa7a34f0317b05554832ae41b872" - integrity sha512-kPCHWa1m9wGG/OwQpeweTwM/PYiQLrUIxXbt/P4Nic3LbGjCP0YwrALHW1uNLKZ0LIMg+RF+XRlj2ekT9ZlZAQ== +generic-names@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/generic-names/-/generic-names-4.0.0.tgz#0bd8a2fd23fe8ea16cbd0a279acd69c06933d9a3" + integrity sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A== dependencies: - loader-utils "^1.1.0" + loader-utils "^3.2.0" gensync@^1.0.0-beta.2: version "1.0.0-beta.2" @@ -12481,6 +11934,11 @@ get-monorepo-packages@^1.1.0: globby "^7.1.1" load-json-file "^4.0.0" +get-package-type@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" + integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== + get-pkg-repo@^4.0.0: version "4.2.1" resolved "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz#75973e1c8050c73f48190c52047c4cee3acbf385" @@ -12509,16 +11967,16 @@ get-stream@^4.0.0, get-stream@^4.1.0: pump "^3.0.0" get-stream@^5.0.0, get-stream@^5.1.0: - version "5.1.0" - resolved "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz#01203cdc92597f9b909067c3e656cc1f4d3c4dc9" - integrity sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw== + version "5.2.0" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== dependencies: pump "^3.0.0" get-stream@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.0.tgz#3e0012cb6827319da2706e601a1583e8629a6718" - integrity sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg== + version "6.0.1" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== get-symbol-description@^1.0.0: version "1.0.0" @@ -12553,9 +12011,9 @@ getpass@^0.1.1: assert-plus "^1.0.0" git-raw-commits@^2.0.8: - version "2.0.10" - resolved "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.10.tgz#e2255ed9563b1c9c3ea6bd05806410290297bbc1" - integrity sha512-sHhX5lsbG9SOO6yXdlwgEMQ/ljIn7qMpAbJZCGfXX2fq5T8M5SrDnpYk9/4HswTildcIqatsWa91vty6VhWSaQ== + version "2.0.11" + resolved "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.11.tgz#bc3576638071d18655e1cc60d7f524920008d723" + integrity sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A== dependencies: dargs "^7.0.0" lodash "^4.17.15" @@ -12580,12 +12038,12 @@ git-semver-tags@^4.1.1: semver "^6.0.0" git-up@^4.0.0: - version "4.0.1" - resolved "https://registry.npmjs.org/git-up/-/git-up-4.0.1.tgz#cb2ef086653640e721d2042fe3104857d89007c0" - integrity sha512-LFTZZrBlrCrGCG07/dm1aCjjpL1z9L3+5aEeI9SBhAqSc+kiA9Or1bgZhQFNppJX6h/f5McrvJt1mQXTFm6Qrw== + version "4.0.5" + resolved "https://registry.npmjs.org/git-up/-/git-up-4.0.5.tgz#e7bb70981a37ea2fb8fe049669800a1f9a01d759" + integrity sha512-YUvVDg/vX3d0syBsk/CKUTib0srcQME0JyHkL5BaYdwLsiCslPWmDSi8PUMo9pXYjrryMcmsCoCgsTpSCJEQaA== dependencies: is-ssh "^1.3.0" - parse-url "^5.0.0" + parse-url "^6.0.0" git-url-parse@^11.4.4, git-url-parse@^11.6.0: version "11.6.0" @@ -12601,7 +12059,7 @@ gitconfiglocal@^1.0.0: dependencies: ini "^1.3.2" -glob-parent@^5.1.0, glob-parent@^5.1.1, glob-parent@~5.1.2: +glob-parent@^5.1.1, glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== @@ -12681,9 +12139,9 @@ globals@^11.1.0, globals@^11.12.0: integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== globals@^13.6.0, globals@^13.9.0: - version "13.9.0" - resolved "https://registry.npmjs.org/globals/-/globals-13.9.0.tgz#4bf2bf635b334a173fb1daf7c5e6b218ecdc06cb" - integrity sha512-74/FduwI/JaIrr1H8e71UbDE+5x7pIPs1C2rrwC52SszOo043CsWOZEMW7o2Y58xwm9b+0RBKDxY5n2sUpEFxA== + version "13.12.1" + resolved "https://registry.npmjs.org/globals/-/globals-13.12.1.tgz#ec206be932e6c77236677127577aa8e50bf1c5cb" + integrity sha512-317dFlgY2pdJZ9rspXDks7073GpDmXdfbM3vYYp0HAMKGDh1FfWPleI2ljVNLQX5M5lXcAslTcPTrOrMEFOjyw== dependencies: type-fest "^0.20.2" @@ -12700,15 +12158,15 @@ globby@11.0.3: slash "^3.0.0" globby@^11.0.0, globby@^11.0.1, globby@^11.0.2, globby@^11.0.3, globby@^11.0.4: - version "11.0.4" - resolved "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz#2cbaff77c2f2a62e71e9b2813a67b97a3a3001a5" - integrity sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg== + version "11.1.0" + resolved "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== dependencies: array-union "^2.1.0" dir-glob "^3.0.1" - fast-glob "^3.1.1" - ignore "^5.1.4" - merge2 "^1.3.0" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" slash "^3.0.0" globby@^7.1.1: @@ -12723,10 +12181,10 @@ globby@^7.1.1: pify "^3.0.0" slash "^1.0.0" -google-auth-library@^7.0.0, google-auth-library@^7.0.2, google-auth-library@^7.6.1: - version "7.11.0" - resolved "https://registry.npmjs.org/google-auth-library/-/google-auth-library-7.11.0.tgz#b63699c65037310a424128a854ba7e736704cbdb" - integrity sha512-3S5jn2quRumvh9F/Ubf7GFrIq71HZ5a6vqosgdIu105kkk0WtSqc2jGCRqtWWOLRS8SX3AHACMOEDxhyWAQIcg== +google-auth-library@^7.0.0, google-auth-library@^7.6.1, google-auth-library@^7.9.2: + version "7.12.0" + resolved "https://registry.npmjs.org/google-auth-library/-/google-auth-library-7.12.0.tgz#7965db6bc20cb31f2df05a08a296bbed6af69426" + integrity sha512-RS/whvFPMoF1hQNxnoVET3DWKPBt1Xgqe2rY0k+Jn7TNhoHlwdnSe7Rlcbo2Nub3Mt2lUVz26X65aDQrWp6x8w== dependencies: arrify "^2.0.0" base64-js "^1.3.0" @@ -12738,12 +12196,12 @@ google-auth-library@^7.0.0, google-auth-library@^7.0.2, google-auth-library@^7.6 jws "^4.0.0" lru-cache "^6.0.0" -google-gax@^2.12.0, google-gax@^2.24.1: - version "2.28.1" - resolved "https://registry.npmjs.org/google-gax/-/google-gax-2.28.1.tgz#99bc234b5769d901d70959d40bd1651729eb4a34" - integrity sha512-2Xjd3FrjlVd6Cmw2B2Aicpc/q92SwTpIOvxPUlnRg9w+Do8nu7UR+eQrgoKlo2FIUcUuDTvppvcx8toND0pK9g== +google-gax@^2.24.1: + version "2.29.7" + resolved "https://registry.npmjs.org/google-gax/-/google-gax-2.29.7.tgz#d238dad424f40f6809205dee3c7d4d6e61511e8b" + integrity sha512-yC0Q4OqX6s081jV72Idt9sxZnuRHOjg0SR0FFH15gT3LDE2u/78xqLjZwa3VuprBvaOLM29jzU19Vv4I7E8ETQ== dependencies: - "@grpc/grpc-js" "~1.4.0" + "@grpc/grpc-js" "~1.5.0" "@grpc/proto-loader" "^0.6.1" "@types/long" "^4.0.0" abort-controller "^3.0.0" @@ -12753,11 +12211,11 @@ google-gax@^2.12.0, google-gax@^2.24.1: is-stream-ended "^0.1.4" node-fetch "^2.6.1" object-hash "^2.1.1" - proto3-json-serializer "^0.1.5" + proto3-json-serializer "^0.1.8" protobufjs "6.11.2" retry-request "^4.0.0" -google-p12-pem@^3.0.3: +google-p12-pem@^3.1.3: version "3.1.3" resolved "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-3.1.3.tgz#5497998798ee86c2fc1f4bb1f92b7729baf37537" integrity sha512-MC0jISvzymxePDVembypNefkAQp+DRP7dBE+zNUPaIjEspIlYg0++OrsNr248V9tPbz6iqtZ7rX1hxWA5B8qBQ== @@ -12798,12 +12256,7 @@ got@^9.6.0: to-readable-stream "^1.0.0" url-parse-lax "^3.0.0" -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.5, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2, graceful-fs@^4.2.3, graceful-fs@^4.2.4, graceful-fs@^4.2.6: - version "4.2.6" - resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" - integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== - -graceful-fs@^4.2.9: +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.5, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2, graceful-fs@^4.2.3, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: version "4.2.9" resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96" integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ== @@ -12814,9 +12267,9 @@ grapheme-splitter@^1.0.4: integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== graphiql@^1.5.12: - version "1.5.16" - resolved "https://registry.npmjs.org/graphiql/-/graphiql-1.5.16.tgz#76876e6a9c07b7be26b9126b7c6801d6a7e27e3b" - integrity sha512-G1ucZ+1GS6Soq+ftr7eOihy6BcmJHYo29j1/GxXKclUr/z768WWjjIqDcF1/+geI0KOzVeEKkceA1bgT5hG4oQ== + version "1.5.19" + resolved "https://registry.npmjs.org/graphiql/-/graphiql-1.5.19.tgz#dc965daef462fc49a1ecd20f8427e6597e5cda90" + integrity sha512-r+MsBVm9y0Mv8705088sEErm1m+3jizfoiGetK0aeTg1o8zPCm8h4sFkHncrO6eTwzdlnhoZUd4HM0oanx9HlA== dependencies: "@graphiql/toolkit" "^0.4.2" codemirror "^5.58.2" @@ -12836,15 +12289,15 @@ graphlib@^2.1.8: lodash "^4.17.15" graphql-config@^3.0.2: - version "3.3.0" - resolved "https://registry.npmjs.org/graphql-config/-/graphql-config-3.3.0.tgz#24c3672a427cb67c0c717ca3b9d70e9f0c9e752b" - integrity sha512-mSQIsPMssr7QrgqhnjI+CyVH6oQgCrgS6irHsTvwf7RFDRnR2k9kqpQOQgVoOytBSn0DOYryS0w0SAg9xor/Jw== + version "3.4.1" + resolved "https://registry.npmjs.org/graphql-config/-/graphql-config-3.4.1.tgz#59f937a1b4d3a3c2dcdb27ddf5b4d4d4b2c6e9e1" + integrity sha512-g9WyK4JZl1Ko++FSyE5Ir2g66njfxGzrDDhBOwnkoWf/t3TnnZG6BBkWP+pkqVJ5pqMJGPKHNrbew8jRxStjhw== dependencies: "@endemolshinegroup/cosmiconfig-typescript-loader" "3.0.2" "@graphql-tools/graphql-file-loader" "^6.0.0" "@graphql-tools/json-file-loader" "^6.0.0" "@graphql-tools/load" "^6.0.0" - "@graphql-tools/merge" "^6.0.0" + "@graphql-tools/merge" "6.0.0 - 6.2.14" "@graphql-tools/url-loader" "^6.0.0" "@graphql-tools/utils" "^7.0.0" cosmiconfig "7.0.0" @@ -12869,6 +12322,11 @@ graphql-config@^4.1.0: minimatch "3.0.4" string-env-interpolation "1.0.1" +graphql-executor@0.0.18: + version "0.0.18" + resolved "https://registry.npmjs.org/graphql-executor/-/graphql-executor-0.0.18.tgz#6aa4b39e1ca773e159c2a602621e90606df0109a" + integrity sha512-upUSl7tfZCZ5dWG1XkOvpG70Yk3duZKcCoi/uJso4WxJVT6KIrcK4nZ4+2X/hzx46pL8wAukgYHY6iNmocRN+g== + graphql-language-service-interface@^2.10.2: version "2.10.2" resolved "https://registry.npmjs.org/graphql-language-service-interface/-/graphql-language-service-interface-2.10.2.tgz#de9386f699e446320256175e215cdc10ccf9f9b7" @@ -12925,9 +12383,9 @@ graphql-modules@^1.0.0: ramda "^0.27.1" graphql-request@^3.3.0: - version "3.4.0" - resolved "https://registry.npmjs.org/graphql-request/-/graphql-request-3.4.0.tgz#3a400cd5511eb3c064b1873afb059196bbea9c2b" - integrity sha512-acrTzidSlwAj8wBNO7Q/UQHS8T+z5qRGquCQRv9J1InwR01BBWV9ObnoE+JS5nCCEj8wSGS0yrDXVDoRiKZuOg== + version "3.7.0" + resolved "https://registry.npmjs.org/graphql-request/-/graphql-request-3.7.0.tgz#c7406e537084f8b9788541e3e6704340ca13055b" + integrity sha512-dw5PxHCgBneN2DDNqpWu8QkbbJ07oOziy8z+bK/TAXufsOLaETuVO4GkXrbs0WjhdKhBMN3BkpN/RIvUHkmNUQ== dependencies: cross-fetch "^3.0.6" extract-files "^9.0.0" @@ -12951,9 +12409,9 @@ graphql-type-json@^0.3.2: integrity sha512-J+vjof74oMlCWXSvt0DOf2APEdZOCdubEvGDUAlqH//VBYcOYsGgRW7Xzorr44LvkjiuvecWc8fChxuZZbChtg== graphql-ws@^4.4.1: - version "4.7.0" - resolved "https://registry.npmjs.org/graphql-ws/-/graphql-ws-4.7.0.tgz#b323fbf35a3736eed85dac24c0054d6d10c93e62" - integrity sha512-Md8SsmC9ZlsogFPd3Ot8HbIAAqsHh8Xoq7j4AmcIat1Bh6k91tjVyQvA0Au1/BolXSYq+RDvib6rATU2Hcf1Xw== + version "4.9.0" + resolved "https://registry.npmjs.org/graphql-ws/-/graphql-ws-4.9.0.tgz#5cfd8bb490b35e86583d8322f5d5d099c26e365c" + integrity sha512-sHkK9+lUm20/BGawNEWNtVAeJzhZeBg21VmvmLoT5NdGVeZWv5PdIhkcayQIAgjSyyQ17WMKmbDijIPG2On+Ag== graphql-ws@^5.4.1: version "5.5.5" @@ -12981,14 +12439,13 @@ growly@^1.3.0: integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= gtoken@^5.0.4: - version "5.1.0" - resolved "https://registry.npmjs.org/gtoken/-/gtoken-5.1.0.tgz#4ba8d2fc9a8459098f76e7e8fd7beaa39fda9fe4" - integrity sha512-4d8N6Lk8TEAHl9vVoRVMh9BNOKWVgl2DdNtr3428O75r3QFrF/a5MMu851VmK0AA8+iSvbwRv69k5XnMLURGhg== + version "5.3.2" + resolved "https://registry.npmjs.org/gtoken/-/gtoken-5.3.2.tgz#deb7dc876abe002178e0515e383382ea9446d58f" + integrity sha512-gkvEKREW7dXWF8NV8pVrKfW7WqReAmjjkMBh6lNCCGOM4ucS0r0YyXXl0r/9Yj8wcW/32ISkfc8h5mPTDbtifQ== dependencies: gaxios "^4.0.0" - google-p12-pem "^3.0.3" + google-p12-pem "^3.1.3" jws "^4.0.0" - mime "^2.2.0" gzip-size@^6.0.0: version "6.0.0" @@ -12998,9 +12455,9 @@ gzip-size@^6.0.0: duplexer "^0.1.2" handle-thing@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.0.tgz#0e039695ff50c93fc288557d696f3c1dc6776754" - integrity sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ== + version "2.0.1" + resolved "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" + integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== handlebars@^4.7.3, handlebars@^4.7.6, handlebars@^4.7.7: version "4.7.7" @@ -13020,11 +12477,11 @@ har-schema@^2.0.0: integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= har-validator@~5.1.3: - version "5.1.3" - resolved "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" - integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== + version "5.1.5" + resolved "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" + integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== dependencies: - ajv "^6.5.5" + ajv "^6.12.3" har-schema "^2.0.0" hard-rejection@^2.1.0: @@ -13033,9 +12490,9 @@ hard-rejection@^2.1.0: integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== harmony-reflect@^1.4.6: - version "1.6.1" - resolved "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.1.tgz#c108d4f2bb451efef7a37861fdbdae72c9bdefa9" - integrity sha512-WJTeyp0JzGtHcuMsi7rw2VwtkvLa+JyfEKJCFyfcS0+CDkjQ5lHPu7zEhFZP+PDSRrEgXa5Ah0l1MbgbE41XjA== + version "1.6.2" + resolved "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz#31ecbd32e648a34d030d86adb67d4d47547fe710" + integrity sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g== has-ansi@^2.0.0: version "2.0.0" @@ -13044,7 +12501,7 @@ has-ansi@^2.0.0: dependencies: ansi-regex "^2.0.0" -has-bigints@^1.0.0, has-bigints@^1.0.1: +has-bigints@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== @@ -13059,7 +12516,7 @@ has-flag@^4.0.0: resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== -has-symbols@^1.0.0, has-symbols@^1.0.1, has-symbols@^1.0.2: +has-symbols@^1.0.1, has-symbols@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== @@ -13120,12 +12577,13 @@ has@^1.0.3: function-bind "^1.1.1" hash-base@^3.0.0: - version "3.0.4" - resolved "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" - integrity sha1-X8hoaEfs1zSZQDMZprCj8/auSRg= + version "3.1.0" + resolved "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" + integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" + inherits "^2.0.4" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" hash-it@^5.0.0: version "5.0.2" @@ -13146,9 +12604,9 @@ hash.js@^1.0.0, hash.js@^1.0.3: minimalistic-assert "^1.0.1" hast-util-parse-selector@^2.0.0: - version "2.2.4" - resolved "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.4.tgz#60c99d0b519e12ab4ed32e58f150ec3f61ed1974" - integrity sha512-gW3sxfynIvZApL4L07wryYF4+C9VvH3AUi7LAnVXV4MneGEgwOByXvFo18BgmTWnm7oHAe874jKbIB1YhHSIzA== + version "2.2.5" + resolved "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz#d57c23f4da16ae3c63b3b6ca4616683313499c3a" + integrity sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ== hast-util-whitespace@^2.0.0: version "2.0.0" @@ -13194,12 +12652,7 @@ hexoid@1.0.0: resolved "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz#ad10c6573fb907de23d9ec63a711267d9dc9bc18" integrity sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g== -highlight.js@^10.1.0, highlight.js@^10.4.1, highlight.js@^10.6.0: - version "10.7.2" - resolved "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.2.tgz#89319b861edc66c48854ed1e6da21ea89f847360" - integrity sha512-oFLl873u4usRM9K63j4ME9u3etNF0PLiJhSQ8rdfuL51Wn3zkD6drf9ZW0dOzjnZI22YYG24z30JcmfCZjMgYg== - -highlight.js@^10.7.2, highlight.js@~10.7.0: +highlight.js@^10.1.0, highlight.js@^10.4.1, highlight.js@^10.6.0, highlight.js@^10.7.2, highlight.js@~10.7.0: version "10.7.3" resolved "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz#697272e3991356e40c3cac566a74eef681756531" integrity sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A== @@ -13237,13 +12690,6 @@ hosted-git-info@^2.1.4: resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== -hosted-git-info@^3.0.6: - version "3.0.8" - resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.8.tgz#6e35d4cc87af2c5f816e4cb9ce350ba87a3f370d" - integrity sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw== - dependencies: - lru-cache "^6.0.0" - hosted-git-info@^4.0.0, hosted-git-info@^4.0.1: version "4.1.0" resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224" @@ -13279,9 +12725,9 @@ html-entities@^2.3.2: integrity sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ== html-escaper@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.1.tgz#beed86b5d2b921e92533aa11bce6d8e3b583dee7" - integrity sha512-hNX23TjWwD3q56HpWjUHOKj1+4KKlnjv9PcmBUYKVpga+2cnb9nDx/B1o0yO4n+RZXZdiNxzx6B24C9aNMTkkQ== + version "2.0.2" + resolved "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== html-minifier-terser@^6.0.2: version "6.1.0" @@ -13359,17 +12805,12 @@ http-errors@~1.6.2: setprototypeof "1.1.0" statuses ">= 1.4.0 < 2" -"http-parser-js@>=0.4.0 <0.4.11": - version "0.4.10" - resolved "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.10.tgz#92c9c1374c35085f75db359ec56cc257cbb93fa4" - integrity sha1-ksnBN0w1CF912zWexWzCV8u5P6Q= - http-parser-js@>=0.5.1: - version "0.5.3" - resolved "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.3.tgz#01d2709c79d41698bb01d4decc5e9da4e4a033d9" - integrity sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg== + version "0.5.5" + resolved "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.5.tgz#d7c30d5d3c90d865b4a2e870181f9d6f22ac7ac5" + integrity sha512-x+JVEkO2PoM8qqpbPbOL3cqHPwerep7OwzK7Ay+sMQjKzaKCqWvjoXm5tqMP9tXWWTnTzAjIhXg+J99XYuPhPA== -http-proxy-agent@^4.0.0, http-proxy-agent@^4.0.1: +http-proxy-agent@^4.0.1: version "4.0.1" resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== @@ -13388,9 +12829,9 @@ http-proxy-agent@^5.0.0: debug "4" http-proxy-middleware@^2.0.0: - version "2.0.2" - resolved "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.2.tgz#94d7593790aad6b3de48164f13792262f656c332" - integrity sha512-XtmDN5w+vdFTBZaYhdJAbMqn0DP/EhkUaAeo963mojwpKMMbw6nivtFKw07D7DDOH745L5k0VL0P8KRYNEVF/g== + version "2.0.3" + resolved "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.3.tgz#5df04f69a89f530c2284cd71eeaa51ba52243289" + integrity sha512-1bloEwnrHMnCoO/Gcwbz7eSVvW50KPES01PecpagI+YLNLci4AcuKJrujW4Mc3sBLpFxMSlsLNHS5Nl/lvrTPA== dependencies: "@types/http-proxy" "^1.17.8" http-proxy "^1.18.1" @@ -13426,9 +12867,9 @@ http-signature@~1.3.6: sshpk "^1.14.1" http2-wrapper@^1.0.0-beta.5.2: - version "1.0.0-beta.5.2" - resolved "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.0-beta.5.2.tgz#8b923deb90144aea65cf834b016a340fc98556f3" - integrity sha512-xYz9goEyBnC8XwXDTuC/MZ6t+MrKVQZOk4s7+PaDkwIsQd8IwqvM+0M6bA/2lvG8GHXcPdf+MejTUeO2LCPCeQ== + version "1.0.3" + resolved "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz#b8f55e0c1f25d4ebd08b3b0c2c079f9590800b3d" + integrity sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg== dependencies: quick-lru "^5.1.1" resolve-alpn "^1.0.0" @@ -13479,9 +12920,9 @@ husky@^7.0.4: integrity sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ== hyphenate-style-name@^1.0.2, hyphenate-style-name@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.3.tgz#097bb7fa0b8f1a9cf0bd5c734cf95899981a9b48" - integrity sha512-EcuixamT82oplpoJ2XU4pDtKGWQ7b00CD9f1ug9IaQ3p1bkHMiKCZ9ut9QDI6qsa6cpUuB+A/I+zLtdNK4n2DQ== + version "1.0.4" + resolved "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz#691879af8e220aea5750e8827db4ef62a54e361d" + integrity sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ== iconv-lite@0.4.24, iconv-lite@^0.4.24: version "0.4.24" @@ -13530,9 +12971,9 @@ ignore-by-default@^1.0.1: integrity sha1-SMptcvbGo68Aqa1K5odr44ieKwk= ignore-walk@^3.0.3: - version "3.0.3" - resolved "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37" - integrity sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw== + version "3.0.4" + resolved "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz#c9a09f69b7c7b479a5d74ac1a3c0d4236d2a6335" + integrity sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ== dependencies: minimatch "^3.0.4" @@ -13586,9 +13027,9 @@ import-cwd@^3.0.0: import-from "^3.0.0" import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1: - version "3.2.1" - resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" - integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== + version "3.3.0" + resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== dependencies: parent-module "^1.0.0" resolve-from "^4.0.0" @@ -13616,9 +13057,9 @@ import-lazy@~4.0.0: integrity sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw== import-local@^3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz#a8cfd0431d1de4a2199703d003e3e62364fa6db6" - integrity sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA== + version "3.1.0" + resolved "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" + integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== dependencies: pkg-dir "^4.2.0" resolve-cwd "^3.0.0" @@ -13628,13 +13069,6 @@ imurmurhash@^0.1.4: resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= -indefinite-observable@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/indefinite-observable/-/indefinite-observable-2.0.1.tgz#574af29bfbc17eb5947793797bddc94c9d859400" - integrity sha512-G8vgmork+6H9S8lUAg1gtXEj2JxIQTo0g2PbFiYOdjkziSI0F7UYBiVwhZRuixhBCNGczAls34+5HJPyZysvxQ== - dependencies: - symbol-observable "1.2.0" - indent-string@^3.0.0: version "3.2.0" resolved "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" @@ -13645,11 +13079,6 @@ indent-string@^4.0.0: resolved "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== -indexes-of@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" - integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= - infer-owner@^1.0.4: version "1.0.4" resolved "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" @@ -13689,16 +13118,15 @@ ini@^1.3.2, ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== init-package-json@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/init-package-json/-/init-package-json-2.0.2.tgz#d81a7e6775af9b618f20bba288e440b8d1ce05f3" - integrity sha512-PO64kVeArePvhX7Ff0jVWkpnE1DfGRvaWcStYrPugcJz9twQGYibagKJuIMHCX7ENcp0M6LJlcjLBuLD5KeJMg== + version "2.0.5" + resolved "https://registry.npmjs.org/init-package-json/-/init-package-json-2.0.5.tgz#78b85f3c36014db42d8f32117252504f68022646" + integrity sha512-u1uGAtEFu3VA6HNl/yUWw57jmKEMx8SKOxHhxjGnOFUiIlFnohKDFg4ZrPpv9wWqk44nDxGJAtqjdQFm+9XXQA== dependencies: - glob "^7.1.1" - npm-package-arg "^8.1.0" + npm-package-arg "^8.1.5" promzard "^0.3.0" read "~1.0.1" - read-package-json "^3.0.0" - semver "^7.3.2" + read-package-json "^4.1.1" + semver "^7.3.5" validate-npm-package-license "^3.0.4" validate-npm-package-name "^3.0.0" @@ -13708,9 +13136,9 @@ inline-style-parser@0.1.1: integrity sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q== inline-style-prefixer@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/inline-style-prefixer/-/inline-style-prefixer-6.0.0.tgz#f73d5dbf2855733d6b153a4d24b7b47a73e9770b" - integrity sha512-XTHvRUS4ZJNzC1GixJRmOlWSS45fSt+DJoyQC9ytj0WxQfcgofQtDtyKKYxHUqEsWCs+LIWftPF1ie7+i012Fg== + version "6.0.1" + resolved "https://registry.npmjs.org/inline-style-prefixer/-/inline-style-prefixer-6.0.1.tgz#c5c0e43ba8831707afc5f5bbfd97edf45c1fa7ae" + integrity sha512-AsqazZ8KcRzJ9YPN1wMH2aNM7lkWQ8tSPrW5uDk1ziYwiAPWSZnUsC7lfZq+BDqLqz0B4Pho5wscWcJzVvRzDQ== dependencies: css-in-js-utils "^2.0.0" @@ -13797,11 +13225,6 @@ invert-kv@^1.0.0: resolved "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= -ip-regex@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" - integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= - ip@^1.1.0, ip@^1.1.5: version "1.1.5" resolved "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" @@ -13817,11 +13240,6 @@ ipaddr.js@^2.0.1: resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz#eca256a7a877e917aeb368b0a7497ddf42ef81c0" integrity sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng== -is-absolute-url@^3.0.3: - version "3.0.3" - resolved "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" - integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q== - is-absolute@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz#395e1ae84b11f26ad1795e73c17378e48a301576" @@ -13849,11 +13267,6 @@ is-alphabetical@^1.0.0: resolved "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz#9e7d6b94916be22153745d184c298cbf986a686d" integrity sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg== -is-alphabetical@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.0.tgz#ef6e2caea57c63450fffc7abb6cbdafc5eb96e96" - integrity sha512-5OV8Toyq3oh4eq6sbWTYzlGdnMT/DPI5I0zxUBxjiigQsZycpkKF3kskkao3JyYGuYDHvhgJF+DrjMQp9SX86w== - is-alphanumerical@^1.0.0: version "1.0.4" resolved "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz#7eb9a2431f855f6b1ef1a78e326df515696c4dbf" @@ -13862,18 +13275,13 @@ is-alphanumerical@^1.0.0: is-alphabetical "^1.0.0" is-decimal "^1.0.0" -is-alphanumerical@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.0.tgz#0fbfeb6a72d21d91143b3d182bf6cf5909ee66f6" - integrity sha512-t+2GlJ+hO9yagJ+jU3+HSh80VKvz/3cG2cxbGGm4S0hjKuhWQXgPVUVOZz3tqZzMjhmphZ+1TIJTlRZRoe6GCQ== - dependencies: - is-alphabetical "^2.0.0" - is-decimal "^2.0.0" - is-arguments@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" - integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA== + version "1.1.1" + resolved "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" + integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" is-arrayish@^0.2.1: version "0.2.1" @@ -13886,9 +13294,11 @@ is-arrayish@^0.3.1: integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== is-bigint@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.1.tgz#6923051dfcbc764278540b9ce0e6b3213aa5ebc2" - integrity sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg== + version "1.0.4" + resolved "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" + integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== + dependencies: + has-bigints "^1.0.1" is-binary-path@~2.1.0: version "2.1.0" @@ -13898,11 +13308,12 @@ is-binary-path@~2.1.0: binary-extensions "^2.0.0" is-boolean-object@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.0.tgz#e2aaad3a3a8fca34c28f6eee135b156ed2587ff0" - integrity sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA== + version "1.1.2" + resolved "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" + integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== dependencies: - call-bind "^1.0.0" + call-bind "^1.0.2" + has-tostringtag "^1.0.0" is-buffer@^1.1.5: version "1.1.6" @@ -13910,16 +13321,11 @@ is-buffer@^1.1.5: integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== is-buffer@^2.0.0: - version "2.0.4" - resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz#3e572f23c8411a5cfd9557c849e3665e0b290623" - integrity sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A== + version "2.0.5" + resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" + integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== -is-callable@^1.1.4, is-callable@^1.2.3: - version "1.2.3" - resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e" - integrity sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ== - -is-callable@^1.2.4: +is-callable@^1.1.4, is-callable@^1.2.4: version "1.2.4" resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== @@ -13938,14 +13344,7 @@ is-ci@^3.0.0, is-ci@^3.0.1: dependencies: ci-info "^3.2.0" -is-core-module@^2.1.0, is-core-module@^2.2.0: - version "2.8.0" - resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz#0321336c3d0925e497fd97f5d95cb114a5ccd548" - integrity sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw== - dependencies: - has "^1.0.3" - -is-core-module@^2.8.0: +is-core-module@^2.1.0, is-core-module@^2.2.0, is-core-module@^2.5.0, is-core-module@^2.8.0, is-core-module@^2.8.1: version "2.8.1" resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211" integrity sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA== @@ -13967,20 +13366,17 @@ is-data-descriptor@^1.0.0: kind-of "^6.0.0" is-date-object@^1.0.1: - version "1.0.2" - resolved "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" - integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== + version "1.0.5" + resolved "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" + integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== + dependencies: + has-tostringtag "^1.0.0" is-decimal@^1.0.0: version "1.0.4" resolved "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz#65a3a5958a1c5b63a706e1b333d7cd9f630d3fa5" integrity sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw== -is-decimal@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.0.tgz#db1140337809fd043a056ae40a9bd1cdc563034c" - integrity sha512-QfrfjQV0LjoWQ1K1XSoEZkTAzSa14RKVMa5zg3SdAfzEmQzRM4+tbSFWb78creCeA9rNBzaZal92opi1TwPWZw== - is-descriptor@^0.1.0: version "0.1.6" resolved "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" @@ -14057,9 +13453,11 @@ is-generator-fn@^2.0.0: integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== is-generator-function@^1.0.7: - version "1.0.8" - resolved "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.8.tgz#dfb5c2b120e02b0a8d9d2c6806cd5621aa922f7b" - integrity sha512-2Omr/twNtufVZFr1GhxjOMFPAj2sjc/dKaIqBhvo4qciXfJmITGH6ZGd8eZYNHza8t1y0e01AuqRhJwfWp26WQ== + version "1.0.10" + resolved "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" + integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== + dependencies: + has-tostringtag "^1.0.0" is-glob@4.0.1: version "4.0.1" @@ -14080,11 +13478,6 @@ is-hexadecimal@^1.0.0: resolved "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz#cc35c97588da4bd49a8eedd6bc4082d44dcb23a7" integrity sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw== -is-hexadecimal@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.0.tgz#8e1ec9f48fe3eabd90161109856a23e0907a65d5" - integrity sha512-vGOtYkiaxwIiR0+Ng/zNId+ZZehGfINwTzdrDqc6iubbnQWhnPuYymOzOKUDqa2cSl59yHnEh2h6MvRLQsyNug== - is-in-browser@^1.0.2, is-in-browser@^1.1.3: version "1.1.3" resolved "https://registry.npmjs.org/is-in-browser/-/is-in-browser-1.1.3.tgz#56ff4db683a078c6082eb95dad7dc62e1d04f835" @@ -14121,9 +13514,9 @@ is-module@^1.0.0: integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= is-negative-zero@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" - integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== + version "2.0.2" + resolved "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" + integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== is-node-process@^1.0.1: version "1.0.1" @@ -14136,9 +13529,11 @@ is-npm@^5.0.0: integrity sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA== is-number-object@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.4.tgz#36ac95e741cf18b283fc1ddf5e83da798e3ec197" - integrity sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw== + version "1.0.6" + resolved "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz#6a7aaf838c7f0686a50b4553f7e54a96494e89f0" + integrity sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g== + dependencies: + has-tostringtag "^1.0.0" is-number@^3.0.0: version "3.0.0" @@ -14158,9 +13553,9 @@ is-obj@^2.0.0: integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== is-object@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz#8952688c5ec2ffd6b03ecc85e769e02903083470" - integrity sha1-iVJojF7C/9awPsyF52ngKQMINHA= + version "1.0.2" + resolved "https://registry.npmjs.org/is-object/-/is-object-1.0.2.tgz#a56552e1c665c9e950b4a025461da87e72f86fcf" + integrity sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA== is-observable@^1.1.0: version "1.1.0" @@ -14206,23 +13601,11 @@ is-plain-object@^2.0.3, is-plain-object@^2.0.4: dependencies: isobject "^3.0.1" -is-plain-object@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.0.tgz#47bfc5da1b5d50d64110806c199359482e75a928" - integrity sha512-tZIpofR+P05k8Aocp7UI/2UTa9lTJSebCXpFFoR9aibpokDj/uXBsJ8luUu0tTVYKkMU6URDUuOfJZ7koewXvg== - dependencies: - isobject "^4.0.0" - is-plain-object@^5.0.0: version "5.0.0" resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== -is-potential-custom-element-name@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.0.tgz#0c52e54bcca391bb2c494b21e8626d7336c6e397" - integrity sha1-DFLlS8yjkbssSUsh6GJtczbG45c= - is-potential-custom-element-name@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" @@ -14233,7 +13616,7 @@ is-promise@4.0.0, is-promise@^4.0.0: resolved "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz#42ff9f84206c1991d26debf520dd5c01042dd2f3" integrity sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ== -is-promise@^2.1.0, is-promise@^2.2.2: +is-promise@^2.1.0: version "2.2.2" resolved "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== @@ -14250,15 +13633,7 @@ is-reference@^1.2.1: dependencies: "@types/estree" "*" -is-regex@^1.0.4, is-regex@^1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz#81c8ebde4db142f2cf1c53fc86d6a45788266251" - integrity sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg== - dependencies: - call-bind "^1.0.2" - has-symbols "^1.0.1" - -is-regex@^1.1.4: +is-regex@^1.0.4, is-regex@^1.1.4: version "1.1.4" resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== @@ -14273,11 +13648,6 @@ is-relative@^1.0.0: dependencies: is-unc-path "^1.0.0" -is-resolvable@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" - integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== - is-root@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c" @@ -14296,9 +13666,9 @@ is-shared-array-buffer@^1.0.1: integrity sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA== is-ssh@^1.3.0: - version "1.3.1" - resolved "https://registry.npmjs.org/is-ssh/-/is-ssh-1.3.1.tgz#f349a8cadd24e65298037a522cf7520f2e81a0f3" - integrity sha512-0eRIASHZt1E68/ixClI8bp2YK2wmBPVWEismTs6M+M099jKgrzl/3E976zIbImSIob48N2/XGe9y7ZiYdImSlg== + version "1.3.3" + resolved "https://registry.npmjs.org/is-ssh/-/is-ssh-1.3.3.tgz#7f133285ccd7f2c2c7fc897b771b53d95a2b2c7e" + integrity sha512-NKzJmQzJfEEma3w5cJNcUMxoXfDjz0Zj0eyCalHn2E6VOwlzjZo0yuO2fcBSf8zhFuVCL/82/r5gRcoi6aEPVQ== dependencies: protocols "^1.1.0" @@ -14313,16 +13683,11 @@ is-stream@^1.1.0: integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= is-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" - integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== + version "2.0.1" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== -is-string@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" - integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== - -is-string@^1.0.7: +is-string@^1.0.5, is-string@^1.0.7: version "1.0.7" resolved "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== @@ -14330,18 +13695,18 @@ is-string@^1.0.7: has-tostringtag "^1.0.0" is-subdir@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/is-subdir/-/is-subdir-1.1.1.tgz#423e66902f9c5f159b9cc4826c820df083059538" - integrity sha512-VYpq0S7gPBVkkmfwkvGnx1EL9UVIo87NQyNcgMiNUdQCws3CJm5wj2nB+XPL7zigvjxhuZgp3bl2yBcKkSIj1w== + version "1.2.0" + resolved "https://registry.npmjs.org/is-subdir/-/is-subdir-1.2.0.tgz#b791cd28fab5202e91a08280d51d9d7254fd20d4" + integrity sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw== dependencies: better-path-resolve "1.0.0" is-symbol@^1.0.2, is-symbol@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" - integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== + version "1.0.4" + resolved "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== dependencies: - has-symbols "^1.0.1" + has-symbols "^1.0.2" is-text-path@^1.0.1: version "1.0.1" @@ -14350,16 +13715,16 @@ is-text-path@^1.0.1: dependencies: text-extensions "^1.0.0" -is-typed-array@^1.1.3: - version "1.1.5" - resolved "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.5.tgz#f32e6e096455e329eb7b423862456aa213f0eb4e" - integrity sha512-S+GRDgJlR3PyEbsX/Fobd9cqpZBuvUS+8asRqYDMLCb2qMzt1oz5m5oxQCxOgUDxiWsOVNi4yaF+/uvdlHlYug== +is-typed-array@^1.1.3, is-typed-array@^1.1.7: + version "1.1.8" + resolved "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.8.tgz#cbaa6585dc7db43318bc5b89523ea384a6f65e79" + integrity sha512-HqH41TNZq2fgtGT8WHVFVJhBVGuY3AnP3Q36K8JKXUxSxRgk/d+7NjmwG2vo2mYmXK8UYZKu0qH8bVP5gEisjA== dependencies: - available-typed-arrays "^1.0.2" + available-typed-arrays "^1.0.5" call-bind "^1.0.2" - es-abstract "^1.18.0-next.2" + es-abstract "^1.18.5" foreach "^2.0.5" - has-symbols "^1.0.1" + has-tostringtag "^1.0.0" is-typedarray@^1.0.0, is-typedarray@~1.0.0: version "1.0.0" @@ -14391,11 +13756,11 @@ is-utf8@^0.2.0, is-utf8@^0.2.1: integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= is-weakref@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.1.tgz#842dba4ec17fa9ac9850df2d6efbc1737274f2a2" - integrity sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ== + version "1.0.2" + resolved "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" + integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== dependencies: - call-bind "^1.0.0" + call-bind "^1.0.2" is-window@^1.0.2: version "1.0.2" @@ -14451,11 +13816,6 @@ isobject@^3.0.0, isobject@^3.0.1: resolved "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= -isobject@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/isobject/-/isobject-4.0.0.tgz#3f1c9155e73b192022a80819bacd0343711697b0" - integrity sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA== - isomorphic-dompurify@^0.13.0: version "0.13.0" resolved "https://registry.npmjs.org/isomorphic-dompurify/-/isomorphic-dompurify-0.13.0.tgz#a4dde357e8531018a85ebb2dd56c4794b6739ba3" @@ -14481,9 +13841,9 @@ isomorphic-form-data@^2.0.0: form-data "^2.3.2" isomorphic-git@^1.8.0: - version "1.10.0" - resolved "https://registry.npmjs.org/isomorphic-git/-/isomorphic-git-1.10.0.tgz#59a4604d1190d1e7fc52172085da25e6a428bc07" - integrity sha512-CijspEYaOQAnsHWXyq8ICZXzLJ/1wYQAa0jdfLcugA/68oNzrxykjGZz8Up7B8huA1VfkFHm4VviExtj/zpViw== + version "1.11.2" + resolved "https://registry.npmjs.org/isomorphic-git/-/isomorphic-git-1.11.2.tgz#58fd47f3e797ed9cc1364bb2cae02355499d6bea" + integrity sha512-7gSW+dMftHYyDufoeLCOagxlN0KsAYvR/qddSke9pnPH8vwL4OwqQ2BvkG0O02OnEFqg1pZXyIzBPFBfOMYXUA== dependencies: async-lock "^1.1.0" clean-git-ref "^2.0.1" @@ -14495,7 +13855,7 @@ isomorphic-git@^1.8.0: pify "^4.0.1" readable-stream "^3.4.0" sha.js "^2.4.9" - simple-get "^3.0.2" + simple-get "^4.0.1" isomorphic-ws@4.0.1, isomorphic-ws@^4.0.1: version "4.0.1" @@ -14507,12 +13867,12 @@ isstream@~0.1.2: resolved "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= -istanbul-lib-coverage@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" - integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== +istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" + integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== -istanbul-lib-instrument@^4.0.0, istanbul-lib-instrument@^4.0.3: +istanbul-lib-instrument@^4.0.3: version "4.0.3" resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ== @@ -14522,6 +13882,17 @@ istanbul-lib-instrument@^4.0.0, istanbul-lib-instrument@^4.0.3: istanbul-lib-coverage "^3.0.0" semver "^6.3.0" +istanbul-lib-instrument@^5.0.4: + version "5.1.0" + resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz#7b49198b657b27a730b8e9cb601f1e1bff24c59a" + integrity sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q== + dependencies: + "@babel/core" "^7.12.3" + "@babel/parser" "^7.14.7" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.2.0" + semver "^6.3.0" + istanbul-lib-report@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" @@ -14532,9 +13903,9 @@ istanbul-lib-report@^3.0.0: supports-color "^7.1.0" istanbul-lib-source-maps@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz#75743ce6d96bb86dc7ee4352cf6366a23f0b1ad9" - integrity sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg== + version "4.0.1" + resolved "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" + integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== dependencies: debug "^4.1.1" istanbul-lib-coverage "^3.0.0" @@ -14639,6 +14010,16 @@ jest-diff@^26.0.0, jest-diff@^26.6.2: jest-get-type "^26.3.0" pretty-format "^26.6.2" +jest-diff@^27.0.0: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz#a07f5011ac9e6643cf8a95a462b7b1ecf6680def" + integrity sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw== + dependencies: + chalk "^4.0.0" + diff-sequences "^27.5.1" + jest-get-type "^27.5.1" + pretty-format "^27.5.1" + jest-docblock@^26.0.0: version "26.0.0" resolved "https://registry.npmjs.org/jest-docblock/-/jest-docblock-26.0.0.tgz#3e2fa20899fc928cb13bd0ff68bd3711a36889b5" @@ -14687,6 +14068,11 @@ jest-get-type@^26.3.0: resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0" integrity sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig== +jest-get-type@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz#3cd613c507b0f7ace013df407a1c1cd578bcb4f1" + integrity sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw== + jest-haste-map@^26.6.2: version "26.6.2" resolved "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.2.tgz#dd7e60fe7dc0e9f911a23d79c5ff7fb5c2cafeaa" @@ -14940,9 +14326,9 @@ jest-watcher@^26.6.2: string-length "^4.0.1" jest-when@^3.1.0: - version "3.5.0" - resolved "https://registry.npmjs.org/jest-when/-/jest-when-3.5.0.tgz#364ab8dc149a5d683f9cc14e44d73d03b84b0d97" - integrity sha512-/IkPkG5lo2tyXH3a+VraYe7t/ma6UK9VPQko7hr6YgEtjoHyfAPpLXzyhnSNxxKRzNQDrw8YoGPCOkdTLR4mHA== + version "3.5.1" + resolved "https://registry.npmjs.org/jest-when/-/jest-when-3.5.1.tgz#33ab6f923661cf878cd08fe9df64b507934603db" + integrity sha512-o+HiaIVCg1IC95sMDKHU9G5v5N5l3UHqXvJpf0PgAMThZeQo4Hf5Sgoj+wpCBRGg4/KtzSAZZZEKNiLqE0i4eQ== jest-worker@^26.6.2: version "26.6.2" @@ -14953,10 +14339,10 @@ jest-worker@^26.6.2: merge-stream "^2.0.0" supports-color "^7.0.0" -jest-worker@^27.3.1, jest-worker@^27.4.1: - version "27.4.6" - resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-27.4.6.tgz#5d2d93db419566cb680752ca0792780e71b3273e" - integrity sha512-gHWJF/6Xi5CTG5QCvROr6GcmpIqNYpDJyc8A1h/DyXqH1tD6SnRCM0d3U5msV31D2LB/U+E0M+W4oyvKV44oNw== +jest-worker@^27.3.1, jest-worker@^27.4.5: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" + integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== dependencies: "@types/node" "*" merge-stream "^2.0.0" @@ -14987,13 +14373,13 @@ jmespath@^0.15.0: integrity sha1-o/Iiqarp+Wb10nx5ZRDigJF2Qhc= joi@^17.4.0: - version "17.4.2" - resolved "https://registry.npmjs.org/joi/-/joi-17.4.2.tgz#02f4eb5cf88e515e614830239379dcbbe28ce7f7" - integrity sha512-Lm56PP+n0+Z2A2rfRvsfWVDXGEWjXxatPopkQ8qQ5mxCEhwHG+Ettgg5o98FFaxilOxozoa14cFhrE/hOzh/Nw== + version "17.6.0" + resolved "https://registry.npmjs.org/joi/-/joi-17.6.0.tgz#0bb54f2f006c09a96e75ce687957bd04290054b2" + integrity sha512-OX5dG6DTbcr/kbMFj0KGYxuew69HPcAE3K/sZpEV2nP6e/j/C0HV+HNiBPCASxdx5T7DMoa0s8UeHWMnb6n2zw== dependencies: "@hapi/hoek" "^9.0.0" "@hapi/topo" "^5.0.0" - "@sideway/address" "^4.1.0" + "@sideway/address" "^4.1.3" "@sideway/formula" "^3.0.0" "@sideway/pinpoint" "^2.0.0" @@ -15012,9 +14398,9 @@ jose@^2.0.5: "@panva/asn1.js" "^1.0.0" joycon@^3.0.1: - version "3.1.0" - resolved "https://registry.npmjs.org/joycon/-/joycon-3.1.0.tgz#33bb2b6b5a6849a1e251bed623bdf610f477d49f" - integrity sha512-5Y/YJghKF/IzaUXTut0JtbQyHfBShTaIsH7hHhGXEzYO07zWdWZm5hr3Q6miqhrwsRqqm3mgOnUEZdn+1aRxKQ== + version "3.1.1" + resolved "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz#bce8596d6ae808f8b68168f5fc69280996894f03" + integrity sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw== js-base64@^3.6.0: version "3.7.2" @@ -15107,39 +14493,7 @@ jscodeshift@^0.13.0: temp "^0.8.4" write-file-atomic "^2.3.0" -jsdom@^16.4.0: - version "16.4.0" - resolved "https://registry.npmjs.org/jsdom/-/jsdom-16.4.0.tgz#36005bde2d136f73eee1a830c6d45e55408edddb" - integrity sha512-lYMm3wYdgPhrl7pDcRmvzPhhrGVBeVhPIqeHjzeiHN3DFmD1RBpbExbi8vU7BJdH8VAZYovR8DMt0PNNDM7k8w== - dependencies: - abab "^2.0.3" - acorn "^7.1.1" - acorn-globals "^6.0.0" - cssom "^0.4.4" - cssstyle "^2.2.0" - data-urls "^2.0.0" - decimal.js "^10.2.0" - domexception "^2.0.1" - escodegen "^1.14.1" - html-encoding-sniffer "^2.0.1" - is-potential-custom-element-name "^1.0.0" - nwsapi "^2.2.0" - parse5 "5.1.1" - request "^2.88.2" - request-promise-native "^1.0.8" - saxes "^5.0.0" - symbol-tree "^3.2.4" - tough-cookie "^3.0.1" - w3c-hr-time "^1.0.2" - w3c-xmlserializer "^2.0.0" - webidl-conversions "^6.1.0" - whatwg-encoding "^1.0.5" - whatwg-mimetype "^2.3.0" - whatwg-url "^8.0.0" - ws "^7.2.3" - xml-name-validator "^3.0.0" - -jsdom@^16.5.2: +jsdom@^16.4.0, jsdom@^16.5.2: version "16.7.0" resolved "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz#918ae71965424b197c819f8183a754e18977b710" integrity sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw== @@ -15337,11 +14691,11 @@ jsonfile@^4.0.0: graceful-fs "^4.1.6" jsonfile@^6.0.1: - version "6.0.1" - resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.0.1.tgz#98966cba214378c8c84b82e085907b40bf614179" - integrity sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg== + version "6.1.0" + resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== dependencies: - universalify "^1.0.0" + universalify "^2.0.0" optionalDependencies: graceful-fs "^4.1.6" @@ -15412,85 +14766,76 @@ jsprim@^2.0.2: verror "1.10.0" jss-plugin-camel-case@^10.5.1: - version "10.6.0" - resolved "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.6.0.tgz#93d2cd704bf0c4af70cc40fb52d74b8a2554b170" - integrity sha512-JdLpA3aI/npwj3nDMKk308pvnhoSzkW3PXlbgHAzfx0yHWnPPVUjPhXFtLJzgKZge8lsfkUxvYSQ3X2OYIFU6A== + version "10.9.0" + resolved "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.9.0.tgz#4921b568b38d893f39736ee8c4c5f1c64670aaf7" + integrity sha512-UH6uPpnDk413/r/2Olmw4+y54yEF2lRIV8XIZyuYpgPYTITLlPOsq6XB9qeqv+75SQSg3KLocq5jUBXW8qWWww== dependencies: "@babel/runtime" "^7.3.1" hyphenate-style-name "^1.0.3" - jss "10.6.0" + jss "10.9.0" jss-plugin-default-unit@^10.5.1: - version "10.6.0" - resolved "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.6.0.tgz#af47972486819b375f0f3a9e0213403a84b5ef3b" - integrity sha512-7y4cAScMHAxvslBK2JRK37ES9UT0YfTIXWgzUWD5euvR+JR3q+o8sQKzBw7GmkQRfZijrRJKNTiSt1PBsLI9/w== + version "10.9.0" + resolved "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.9.0.tgz#bb23a48f075bc0ce852b4b4d3f7582bc002df991" + integrity sha512-7Ju4Q9wJ/MZPsxfu4T84mzdn7pLHWeqoGd/D8O3eDNNJ93Xc8PxnLmV8s8ZPNRYkLdxZqKtm1nPQ0BM4JRlq2w== dependencies: "@babel/runtime" "^7.3.1" - jss "10.6.0" + jss "10.9.0" jss-plugin-global@^10.5.1: - version "10.6.0" - resolved "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.6.0.tgz#3e8011f760f399cbadcca7f10a485b729c50e3ed" - integrity sha512-I3w7ji/UXPi3VuWrTCbHG9rVCgB4yoBQLehGDTmsnDfXQb3r1l3WIdcO8JFp9m0YMmyy2CU7UOV6oPI7/Tmu+w== + version "10.9.0" + resolved "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.9.0.tgz#fc07a0086ac97aca174e37edb480b69277f3931f" + integrity sha512-4G8PHNJ0x6nwAFsEzcuVDiBlyMsj2y3VjmFAx/uHk/R/gzJV+yRHICjT4MKGGu1cJq2hfowFWCyrr/Gg37FbgQ== dependencies: "@babel/runtime" "^7.3.1" - jss "10.6.0" + jss "10.9.0" jss-plugin-nested@^10.5.1: - version "10.6.0" - resolved "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.6.0.tgz#5f83c5c337d3b38004834e8426957715a0251641" - integrity sha512-fOFQWgd98H89E6aJSNkEh2fAXquC9aZcAVjSw4q4RoQ9gU++emg18encR4AT4OOIFl4lQwt5nEyBBRn9V1Rk8g== + version "10.9.0" + resolved "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.9.0.tgz#cc1c7d63ad542c3ccc6e2c66c8328c6b6b00f4b3" + integrity sha512-2UJnDrfCZpMYcpPYR16oZB7VAC6b/1QLsRiAutOt7wJaaqwCBvNsosLEu/fUyKNQNGdvg2PPJFDO5AX7dwxtoA== dependencies: "@babel/runtime" "^7.3.1" - jss "10.6.0" + jss "10.9.0" tiny-warning "^1.0.2" jss-plugin-props-sort@^10.5.1: - version "10.6.0" - resolved "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.6.0.tgz#297879f35f9fe21196448579fee37bcde28ce6bc" - integrity sha512-oMCe7hgho2FllNc60d9VAfdtMrZPo9n1Iu6RNa+3p9n0Bkvnv/XX5San8fTPujrTBScPqv9mOE0nWVvIaohNuw== + version "10.9.0" + resolved "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.9.0.tgz#30e9567ef9479043feb6e5e59db09b4de687c47d" + integrity sha512-7A76HI8bzwqrsMOJTWKx/uD5v+U8piLnp5bvru7g/3ZEQOu1+PjHvv7bFdNO3DwNPC9oM0a//KwIJsIcDCjDzw== dependencies: "@babel/runtime" "^7.3.1" - jss "10.6.0" + jss "10.9.0" jss-plugin-rule-value-function@^10.5.1: - version "10.6.0" - resolved "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.6.0.tgz#3c1a557236a139d0151e70a82c810ccce1c1c5ea" - integrity sha512-TKFqhRTDHN1QrPTMYRlIQUOC2FFQb271+AbnetURKlGvRl/eWLswcgHQajwuxI464uZk91sPiTtdGi7r7XaWfA== + version "10.9.0" + resolved "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.9.0.tgz#379fd2732c0746fe45168011fe25544c1a295d67" + integrity sha512-IHJv6YrEf8pRzkY207cPmdbBstBaE+z8pazhPShfz0tZSDtRdQua5jjg6NMz3IbTasVx9FdnmptxPqSWL5tyJg== dependencies: "@babel/runtime" "^7.3.1" - jss "10.6.0" + jss "10.9.0" tiny-warning "^1.0.2" jss-plugin-vendor-prefixer@^10.5.1: - version "10.6.0" - resolved "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.6.0.tgz#e1fcd499352846890c38085b11dbd7aa1c4f2c78" - integrity sha512-doJ7MouBXT1lypLLctCwb4nJ6lDYqrTfVS3LtXgox42Xz0gXusXIIDboeh6UwnSmox90QpVnub7au8ybrb0krQ== + version "10.9.0" + resolved "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.9.0.tgz#aa9df98abfb3f75f7ed59a3ec50a5452461a206a" + integrity sha512-MbvsaXP7iiVdYVSEoi+blrW+AYnTDvHTW6I6zqi7JcwXdc6I9Kbm234nEblayhF38EftoenbM+5218pidmC5gA== dependencies: "@babel/runtime" "^7.3.1" css-vendor "^2.0.8" - jss "10.6.0" + jss "10.9.0" -jss@10.6.0, jss@^10.5.1: - version "10.6.0" - resolved "https://registry.npmjs.org/jss/-/jss-10.6.0.tgz#d92ff9d0f214f65ca1718591b68e107be4774149" - integrity sha512-n7SHdCozmxnzYGXBHe0NsO0eUf9TvsHVq2MXvi4JmTn3x5raynodDVE/9VQmBdWFyyj9HpHZ2B4xNZ7MMy7lkw== +jss@10.9.0, jss@^10.5.1: + version "10.9.0" + resolved "https://registry.npmjs.org/jss/-/jss-10.9.0.tgz#7583ee2cdc904a83c872ba695d1baab4b59c141b" + integrity sha512-YpzpreB6kUunQBbrlArlsMpXYyndt9JATbt95tajx0t4MTJJcCJdd4hdNpHmOIDiUJrF/oX5wtVFrS3uofWfGw== dependencies: "@babel/runtime" "^7.3.1" csstype "^3.0.2" - indefinite-observable "^2.0.1" is-in-browser "^1.1.3" tiny-warning "^1.0.2" -"jsx-ast-utils@^2.4.1 || ^3.0.0": - version "3.2.0" - resolved "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.0.tgz#41108d2cec408c3453c1bbe8a4aae9e1e2bd8f82" - integrity sha512-EIsmt3O3ljsU6sot/J4E1zDRxfBNrhjyf/OKjlydwgEimQuznlM4Wv7U+ueONJMyEn1WRE0K8dhi3dVAXYT24Q== - dependencies: - array-includes "^3.1.2" - object.assign "^4.1.2" - -jsx-ast-utils@^3.2.1: +"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.2.1: version "3.2.1" resolved "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.1.tgz#720b97bfe7d901b927d87c3773637ae8ea48781b" integrity sha512-uP5vu8xfy2F9A6LGC22KO7e2/vGTS1MhP+18f++ZNlf0Ohaxbc9nIEwHAsejlJKyzfZzU5UIhe5ItYkitcZnZA== @@ -15553,14 +14898,14 @@ jwt-decode@*, jwt-decode@^3.1.0: integrity sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A== kafkajs@^1.16.0-beta.6: - version "1.16.0-beta.32" - resolved "https://registry.npmjs.org/kafkajs/-/kafkajs-1.16.0-beta.32.tgz#c39fe37367e200eeb95c9ae1412d79db4cf55eca" - integrity sha512-fXnpfvQI7b0xJNRMMiDX05ezfG1/MtDJPdWhQ1e6SptDB/xe8JaGJwd/Fzd2viwgwYzhmHSg681PNOkX4Dz2DQ== + version "1.16.0" + resolved "https://registry.npmjs.org/kafkajs/-/kafkajs-1.16.0.tgz#bfcc3ae2b69265ca8435b53a01ee9e8787b9fee5" + integrity sha512-+Rcfu2hyQ/jv5skqRY8xA7Ra+mmRkDAzCaLDYbkGtgsNKpzxPWiLbk8ub0dgr4EbWrN1Zb4BCXHUkD6+zYfdWg== keyv-memcache@^1.2.5: - version "1.2.7" - resolved "https://registry.npmjs.org/keyv-memcache/-/keyv-memcache-1.2.7.tgz#b8a43eeecdb11ad8f4d6d64abd4298d014c74955" - integrity sha512-lD7QaHf9M+bq9XLFZVEXJ2HNqEvO5CmtjiJjB2FHifbEQ18+YRDTfJCjo88Roc0hXtIqz/QZjYXpIYL8EWpL1g== + version "1.2.9" + resolved "https://registry.npmjs.org/keyv-memcache/-/keyv-memcache-1.2.9.tgz#68776b098233e4305ec729fbeb5ad5905f6ac914" + integrity sha512-hcHeihL/LjAhP1qvLSWuwCxDQlSkkGwlvH7RfIIO+57s7J5dhFLQQko1WcAbcd1jlxV6iPHAEvkDwp8c7XQzgA== dependencies: json-buffer "^3.0.1" memjs "^1.3.0" @@ -15573,9 +14918,9 @@ keyv@^3.0.0: json-buffer "3.0.0" keyv@^4.0.0, keyv@^4.0.3: - version "4.1.0" - resolved "https://registry.npmjs.org/keyv/-/keyv-4.1.0.tgz#8ab5ca4ae6a34e05c629531d9a7f871575af0d5b" - integrity sha512-YsY3wr6HabE11/sscee+3nZ03XjvkrPWGouAmJFBdZoK92wiOlJCzI5/sDEIKdJhdhHO144ei45U9gXfbu14Uw== + version "4.1.1" + resolved "https://registry.npmjs.org/keyv/-/keyv-4.1.1.tgz#02c538bfdbd2a9308cc932d4096f05ae42bfa06a" + integrity sha512-tGv1yP6snQVDSM4X6yxrv2zzq/EvpW+oYiUz6aueW1u9CtS8RzUQYxxmFwgZlO2jSgCxQbchhxaqXXp2hnKGpQ== dependencies: json-buffer "3.0.1" @@ -15614,9 +14959,9 @@ kleur@^4.0.3: integrity sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA== knex@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/knex/-/knex-1.0.2.tgz#1b79273f39f587a631c1a5515482c203d5971781" - integrity sha512-RuDKTylj6X/3nYomnsFV8sOdxTcehLHczOd3yrUdULE4pQR8jVlZxYt3vvIU04otJF0Cw9DCtRt05S4PN4kDpw== + version "1.0.3" + resolved "https://registry.npmjs.org/knex/-/knex-1.0.3.tgz#a5f97aa98e5e036cfd0209a90d53b2a411280e84" + integrity sha512-rY1T7cgTQGHAUD9TshMka37bd+SEK+koPXXvZQEIoE8yjJ/E8ShsenaAmr3oaNNzqXuKD/SC0qlYtp7Js8tAXA== dependencies: colorette "2.0.16" commander "^8.3.0" @@ -15662,9 +15007,9 @@ lazy-ass@1.6.0, lazy-ass@^1.6.0: integrity sha1-eZllXoZGwX8In90YfRUNMyTVRRM= lazystream@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4" - integrity sha1-9plf4PggOS9hOWvolGJAe7dxaOQ= + version "1.0.1" + resolved "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz#494c831062f1f9408251ec44db1cba29242a2638" + integrity sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw== dependencies: readable-stream "^2.0.5" @@ -15769,47 +15114,47 @@ li@^1.3.0: integrity sha1-IsWbyu+qmo7zWc91l4TkvxBq6hs= libnpmaccess@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/libnpmaccess/-/libnpmaccess-4.0.1.tgz#17e842e03bef759854adf6eb6c2ede32e782639f" - integrity sha512-ZiAgvfUbvmkHoMTzdwmNWCrQRsDkOC+aM5BDfO0C9aOSwF3R1LdFDBD+Rer1KWtsoQYO35nXgmMR7OUHpDRxyA== + version "4.0.3" + resolved "https://registry.npmjs.org/libnpmaccess/-/libnpmaccess-4.0.3.tgz#dfb0e5b0a53c315a2610d300e46b4ddeb66e7eec" + integrity sha512-sPeTSNImksm8O2b6/pf3ikv4N567ERYEpeKRPSmqlNt1dTZbvgpJIzg5vAhXHpw2ISBsELFRelk0jEahj1c6nQ== dependencies: aproba "^2.0.0" minipass "^3.1.1" - npm-package-arg "^8.0.0" - npm-registry-fetch "^9.0.0" + npm-package-arg "^8.1.2" + npm-registry-fetch "^11.0.0" libnpmpublish@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/libnpmpublish/-/libnpmpublish-4.0.0.tgz#ad6413914e0dfd78df868ce14ba3d3a4cc8b385b" - integrity sha512-2RwYXRfZAB1x/9udKpZmqEzSqNd7ouBRU52jyG14/xG8EF+O9A62d7/XVR3iABEQHf1iYhkm0Oq9iXjrL3tsXA== + version "4.0.2" + resolved "https://registry.npmjs.org/libnpmpublish/-/libnpmpublish-4.0.2.tgz#be77e8bf5956131bcb45e3caa6b96a842dec0794" + integrity sha512-+AD7A2zbVeGRCFI2aO//oUmapCwy7GHqPXFJh3qpToSRNU+tXKJ2YFUgjt04LPPAf2dlEH95s6EhIHM1J7bmOw== dependencies: - normalize-package-data "^3.0.0" - npm-package-arg "^8.1.0" - npm-registry-fetch "^9.0.0" + normalize-package-data "^3.0.2" + npm-package-arg "^8.1.2" + npm-registry-fetch "^11.0.0" semver "^7.1.3" - ssri "^8.0.0" + ssri "^8.0.1" -lilconfig@2.0.4, lilconfig@^2.0.3: +lilconfig@2.0.4, lilconfig@^2.0.3, lilconfig@^2.0.4: version "2.0.4" resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.4.tgz#f4507d043d7058b380b6a8f5cb7bcd4b34cee082" integrity sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA== lines-and-columns@^1.1.6: - version "1.1.6" - resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" - integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= + version "1.2.4" + resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== linkify-it@^3.0.1: - version "3.0.2" - resolved "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.2.tgz#f55eeb8bc1d3ae754049e124ab3bb56d97797fb8" - integrity sha512-gDBO4aHNZS6coiZCKVhSNh43F9ioIL4JwRjLZPkoLIY4yZFwg264Y5lu2x6rb1Js42Gh6Yqm2f6L2AJcnkzinQ== + version "3.0.3" + resolved "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz#a98baf44ce45a550efb4d49c769d07524cc2fa2e" + integrity sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ== dependencies: uc.micro "^1.0.1" lint-staged@^12.2.0: - version "12.3.3" - resolved "https://registry.npmjs.org/lint-staged/-/lint-staged-12.3.3.tgz#0a465962fe53baa2b4b9da50801ead49a910e03b" - integrity sha512-OqcLsqcPOqzvsfkxjeBpZylgJ3SRG1RYqc9LxC6tkt6tNsq1bNVkAixBwX09f6CobcHswzqVOCBpFR1Fck0+ag== + version "12.3.4" + resolved "https://registry.npmjs.org/lint-staged/-/lint-staged-12.3.4.tgz#4b1ff8c394c3e6da436aaec5afd4db18b5dac360" + integrity sha512-yv/iK4WwZ7/v0GtVkNb3R82pdL9M+ScpIbJLJNyCXkJ1FGaXvRCOg/SeL59SZtPpqZhE7BD6kPKFLIDUhDx2/w== dependencies: cli-truncate "^3.1.0" colorette "^2.0.16" @@ -15859,17 +15204,31 @@ listr-verbose-renderer@^0.5.0: date-fns "^1.27.2" figures "^2.0.0" -listr2@^4.0.1: - version "4.0.2" - resolved "https://registry.npmjs.org/listr2/-/listr2-4.0.2.tgz#04d66f8c8694a14920d7df08ebe01568948fb500" - integrity sha512-YcgwfCWpvPbj9FLUGqvdFvd3hrFWKpOeuXznRgfWEJ7RNr8b/IKKIKZABHx3aU+4CWN/iSAFFSReziQG6vTeIA== +listr2@^3.8.3: + version "3.14.0" + resolved "https://registry.npmjs.org/listr2/-/listr2-3.14.0.tgz#23101cc62e1375fd5836b248276d1d2b51fdbe9e" + integrity sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g== dependencies: cli-truncate "^2.1.0" colorette "^2.0.16" log-update "^4.0.0" p-map "^4.0.0" rfdc "^1.3.0" - rxjs "^7.5.2" + rxjs "^7.5.1" + through "^2.3.8" + wrap-ansi "^7.0.0" + +listr2@^4.0.1: + version "4.0.4" + resolved "https://registry.npmjs.org/listr2/-/listr2-4.0.4.tgz#d098a1c419284fb26e184b5d5889b235e8912245" + integrity sha512-vJOm5KD6uZXjSsrwajr+mNacIjf87gWvlBEltPWLbTkslUscWAzquyK4xfe9Zd4RDgO5nnwFyV06FC+uVR+5mg== + dependencies: + cli-truncate "^2.1.0" + colorette "^2.0.16" + log-update "^4.0.0" + p-map "^4.0.0" + rfdc "^1.3.0" + rxjs "^7.5.4" through "^2.3.8" wrap-ansi "^7.0.0" @@ -15944,9 +15303,9 @@ loader-utils@^1.1.0: json5 "^1.0.1" loader-utils@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz#e4cace5b816d425a166b5f097e10cd12b36064b0" - integrity sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ== + version "2.0.2" + resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz#d6e3b4fb81870721ae4e0868ab11dd638368c129" + integrity sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A== dependencies: big.js "^5.2.2" emojis-list "^3.0.0" @@ -16221,15 +15580,15 @@ log-update@^4.0.0: slice-ansi "^4.0.0" wrap-ansi "^6.2.0" -logform@^2.3.2: - version "2.3.2" - resolved "https://registry.npmjs.org/logform/-/logform-2.3.2.tgz#68babe6a74ab09a1fd15a9b1e6cbc7713d41cb5b" - integrity sha512-V6JiPThZzTsbVRspNO6TmHkR99oqYTs8fivMBYQkjZj6rxW92KxtDCPE6IkAk1DNBnYKNkjm4jYBm6JDUcyhOA== +logform@^2.3.2, logform@^2.4.0: + version "2.4.0" + resolved "https://registry.npmjs.org/logform/-/logform-2.4.0.tgz#131651715a17d50f09c2a2c1a524ff1a4164bcfe" + integrity sha512-CPSJw4ftjf517EhXZGGvTHHkYobo7ZCc0kvwUoOYcjfR2UVrI66RHj8MCrfAdEitdmFqbu2BYdYs8FHHZSb6iw== dependencies: - colors "1.4.0" + "@colors/colors" "1.5.0" fecha "^4.2.0" ms "^2.1.1" - safe-stable-stringify "^1.1.0" + safe-stable-stringify "^2.3.1" triple-beam "^1.3.0" loglevel@^1.6.8: @@ -16243,9 +15602,9 @@ long@^4.0.0: integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== longest-streak@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/longest-streak/-/longest-streak-3.0.0.tgz#f127e2bded83caa6a35ac5f7a2f2b2f94b36f3dc" - integrity sha512-XhUjWR5CFaQ03JOP+iSDS9koy8T5jfoImCZ4XprElw3BXsSk4MpVYOLw/6LTDKZhO13PlAXnB5gS4MHQTpkSOw== + version "3.0.1" + resolved "https://registry.npmjs.org/longest-streak/-/longest-streak-3.0.1.tgz#c97315b7afa0e7d9525db9a5a2953651432bdc5d" + integrity sha512-cHlYSUpL2s7Fb3394mYxwTYj8niTaNHUCLr0qdiCXQfSjfuA7CKofpX2uSwEfFDQ0EB7JcnMnm+GjbqqoinYYg== loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: version "1.4.0" @@ -16313,13 +15672,6 @@ lru-cache@^7.3.1: resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-7.3.1.tgz#7702e80694ec2bf19865567a469f2b081fcf53f5" integrity sha512-nX1x4qUrKqwbIAhv4s9et4FIUVzNOpeY07bsjGUy8gwJrXH/wScImSQqXErmo/b2jZY2r0mohbLA9zVj7u1cNw== -lru-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz#2738bd9f0d3cf4f84490c5736c48699ac632cda3" - integrity sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM= - dependencies: - es5-ext "~0.10.2" - lunr@^2.3.9: version "2.3.9" resolved "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz#18b123142832337dd6e964df1a5a7707b25d35e1" @@ -16335,11 +15687,6 @@ lz-string@^1.4.4: resolved "https://registry.npmjs.org/lz-string/-/lz-string-1.4.4.tgz#c0d8eaf36059f705796e1e344811cf4c498d3a26" integrity sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY= -macos-release@^2.2.0: - version "2.3.0" - resolved "https://registry.npmjs.org/macos-release/-/macos-release-2.3.0.tgz#eb1930b036c0800adebccd5f17bc4c12de8bb71f" - integrity sha512-OHhSbtcviqMPt7yfw5ef5aghS2jzFVKEFyCJndQt2YpSQ9qRVSEv2axSJI1paVThEu+FFGs584h/1YhxjVqajA== - magic-string@^0.25.7: version "0.25.7" resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" @@ -16355,14 +15702,7 @@ make-dir@^2.0.0, make-dir@^2.1.0: pify "^4.0.1" semver "^5.6.0" -make-dir@^3.0.0: - version "3.0.2" - resolved "https://registry.npmjs.org/make-dir/-/make-dir-3.0.2.tgz#04a1acbf22221e1d6ef43559f43e05a90dbb4392" - integrity sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w== - dependencies: - semver "^6.0.0" - -make-dir@^3.1.0: +make-dir@^3.0.0, make-dir@^3.1.0: version "3.1.0" resolved "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== @@ -16375,9 +15715,9 @@ make-error@^1, make-error@^1.1.1, make-error@^1.3.6: integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== make-fetch-happen@^10.0.1: - version "10.0.2" - resolved "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.0.2.tgz#0afb38d2f951b17ebc482b0b16c8d77f39dfe389" - integrity sha512-JSFLK53NJP22FL/eAGOyKsWbc2G3v+toPMD7Dq9PJKQCvK0i3t8hGkKxe+3YZzwYa+c0kxRHu7uxH3fvO+rsaA== + version "10.0.3" + resolved "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.0.3.tgz#94bbe675cf62a811dbab59668052388a078beaf2" + integrity sha512-CzarPHynPpHjhF5in/YapnO44rSZeYX5VCMfdXa99+gLwpbfFLh20CWa6dP/taV9Net9PWJwXNKtp/4ZTCQnag== dependencies: agentkeepalive "^4.2.0" cacache "^15.3.0" @@ -16417,7 +15757,7 @@ make-fetch-happen@^8.0.9: socks-proxy-agent "^5.0.0" ssri "^8.0.0" -make-fetch-happen@^9.1.0: +make-fetch-happen@^9.0.1, make-fetch-happen@^9.1.0: version "9.1.0" resolved "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz#53085a09e7971433e6765f7971bf63f4e05cb968" integrity sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg== @@ -16439,12 +15779,12 @@ make-fetch-happen@^9.1.0: socks-proxy-agent "^6.0.0" ssri "^8.0.0" -makeerror@1.0.x: - version "1.0.11" - resolved "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" - integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw= +makeerror@1.0.12: + version "1.0.12" + resolved "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" + integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== dependencies: - tmpl "1.0.x" + tmpl "1.0.5" map-cache@^0.2.0, map-cache@^0.2.2: version "0.2.2" @@ -16485,14 +15825,14 @@ markdown-it@^12.2.0: uc.micro "^1.0.5" markdown-table@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.1.tgz#88c48957aaf2a8014ccb2ba026776a1d736fe3dc" - integrity sha512-CBbaYXKSGnE1uLRpKA1SWgIRb2PQrpkllNWpZtZe6VojOJ4ysqiq7/2glYcmKsOYN09QgH/HEBX5hIshAeiK6A== + version "3.0.2" + resolved "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.2.tgz#9b59eb2c1b22fe71954a65ff512887065a7bb57c" + integrity sha512-y8j3a5/DkJCmS5x4dMCQL+OR0+2EAq3DOtio1COSHsmW2BGXnNCK3v12hJt1LrUz5iZH5g0LmuYOjDdI+czghA== marked@^4.0.10: - version "4.0.10" - resolved "https://registry.npmjs.org/marked/-/marked-4.0.10.tgz#423e295385cc0c3a70fa495e0df68b007b879423" - integrity sha512-+QvuFj0nGgO970fySghXGmuw+Fd0gD2x3+MqCWLIPf5oxdv1Ka6b2q+z9RP01P/IaKPMEramy+7cNy/Lw8c3hw== + version "4.0.12" + resolved "https://registry.npmjs.org/marked/-/marked-4.0.12.tgz#2262a4e6fd1afd2f13557726238b69a48b982f7d" + integrity sha512-hgibXWrEDNBWgGiK18j/4lkS6ihTe9sxtV4Q1OQppb/0zzyPSzoFANBa5MfsG/zgsWklmNnhm0XACZOH/0HBiQ== material-ui-search-bar@^1.0.0: version "1.0.0" @@ -16503,9 +15843,9 @@ material-ui-search-bar@^1.0.0: prop-types "^15.5.8" math-expression-evaluator@^1.2.14: - version "1.2.22" - resolved "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.2.22.tgz#c14dcb3d8b4d150e5dcea9c68c8dad80309b0d5e" - integrity sha512-L0j0tFVZBQQLeEjmWOvDLoRciIY8gQGWahvkztXUal8jH8R5Rlqo9GCvgqvXcy9LQhEWdQCVvzqAbxgYNt4blQ== + version "1.3.14" + resolved "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.3.14.tgz#0ebeaccf65fea0f6f5a626f88df41814e5fcd9bf" + integrity sha512-M6AMrvq9bO8uL42KvQHPA2/SbAobA0R7gviUmPrcTcGfdwpaLitz4q2Euzx2lP9Oy88vxK3HOrsISgSwKsYS4A== md5.js@^1.3.4: version "1.3.5" @@ -16535,12 +15875,13 @@ mdast-util-find-and-replace@^2.0.0: unist-util-visit-parents "^4.0.0" mdast-util-from-markdown@^1.0.0: - version "1.0.2" - resolved "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.0.2.tgz#7c793bb96b053d12f032e37382ae989efb70ee66" - integrity sha512-gXaxv/5fGdrr9TqSMlQK7FmshK8yR9DvW3+NapMBDm44inORxIZVJa1D3yjrUT9ISu8tB/jjblEkUzyzclquNg== + version "1.2.0" + resolved "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.2.0.tgz#84df2924ccc6c995dec1e2368b2b208ad0a76268" + integrity sha512-iZJyyvKD1+K7QX1b5jXdE7Sc5dtoTry1vzV28UZZe8Z1xVnB/czKntJ7ZAkG0tANqRnBF6p3p7GpU1y19DTf2Q== dependencies: "@types/mdast" "^3.0.0" "@types/unist" "^2.0.0" + decode-named-character-reference "^1.0.0" mdast-util-to-string "^3.1.0" micromark "^3.0.0" micromark-util-decode-numeric-character-reference "^1.0.0" @@ -16548,8 +15889,8 @@ mdast-util-from-markdown@^1.0.0: micromark-util-normalize-identifier "^1.0.0" micromark-util-symbol "^1.0.0" micromark-util-types "^1.0.0" - parse-entities "^3.0.0" unist-util-stringify-position "^3.0.0" + uvu "^0.5.0" mdast-util-gfm-autolink-literal@^1.0.0: version "1.0.2" @@ -16562,38 +15903,37 @@ mdast-util-gfm-autolink-literal@^1.0.0: micromark-util-character "^1.0.0" mdast-util-gfm-footnote@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-1.0.0.tgz#355c1e8dc9e17e871d1b3fa5da8824923fc756e0" - integrity sha512-qeg9YoS2YYP6OBmMyUFxKXb6BLwAsbGidIxgwDAXHIMYZQhIwe52L9BSJs+zP29Jp5nSERPkmG3tSwAN23/ZbQ== + version "1.0.1" + resolved "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-1.0.1.tgz#11d2d40a1a673a399c459e467fa85e00223191fe" + integrity sha512-p+PrYlkw9DeCRkTVw1duWqPRHX6Ywh2BNKJQcZbCwAuP/59B0Lk9kakuAd7KbQprVO4GzdW8eS5++A9PUSqIyw== dependencies: "@types/mdast" "^3.0.0" - mdast-util-to-markdown "^1.0.0" + mdast-util-to-markdown "^1.3.0" micromark-util-normalize-identifier "^1.0.0" - unist-util-visit "^4.0.0" mdast-util-gfm-strikethrough@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-1.0.0.tgz#6cc72ef5d9539f4cee76af3f15dd0daa9e3af40f" - integrity sha512-gM9ipBUdRxYa6Yq1Hd8Otg6jEn/dRxFZ1F9ZX4QHosHOexLGqNZO2dh0A+YFbUEd10RcKjnjb4jOfJJzoXXUew== + version "1.0.1" + resolved "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-1.0.1.tgz#a4a74c36864ec6a6e3bbd31e1977f29beb475789" + integrity sha512-zKJbEPe+JP6EUv0mZ0tQUyLQOC+FADt0bARldONot/nefuISkaZFlmVK4tU6JgfyZGrky02m/I6PmehgAgZgqg== dependencies: - "@types/mdast" "^3.0.3" - mdast-util-to-markdown "^1.0.0" + "@types/mdast" "^3.0.0" + mdast-util-to-markdown "^1.3.0" mdast-util-gfm-table@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-1.0.1.tgz#07c269a219d66ec2deb6de38aed0ba1d1f9442df" - integrity sha512-NByKuaSg5+M6r9DZBPXFUmhMHGFf9u+WE76EeStN01ghi8hpnydiWBXr+qj0XCRWI7SAMNtEjGvip6zci9axQA== + version "1.0.3" + resolved "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-1.0.3.tgz#5f880aa6ecd1a9307cd7127f3d94c631ea88da07" + integrity sha512-B/tgpJjND1qIZM2WZst+NYnb0notPE6m0J+YOe3NOHXyEmvK38ytxaOsgz4BvrRPQQcNbRrTzSHMPnBkj1fCjg== dependencies: markdown-table "^3.0.0" - mdast-util-to-markdown "^1.0.0" + mdast-util-to-markdown "^1.3.0" mdast-util-gfm-task-list-item@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-1.0.0.tgz#a0aa2a00c893f9f006d13ba096cbc64608559c7f" - integrity sha512-dwkzOTjQe8JCCHVE3Cb0pLHTYLudf7t9WCAnb20jI8/dW+VHjgWhjtIUVA3oigNkssgjEwX+i+3XesUdCnXGyA== + version "1.0.1" + resolved "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-1.0.1.tgz#6f35f09c6e2bcbe88af62fdea02ac199cc802c5c" + integrity sha512-KZ4KLmPdABXOsfnM6JHUIjxEvcx2ulk656Z/4Balw071/5qgnhz+H1uGtf2zIGnrnvDC8xR4Fj9uKbjAFGNIeA== dependencies: - "@types/mdast" "^3.0.3" - mdast-util-to-markdown "^1.0.0" + "@types/mdast" "^3.0.0" + mdast-util-to-markdown "^1.3.0" mdast-util-gfm@^2.0.0: version "2.0.0" @@ -16622,10 +15962,10 @@ mdast-util-to-hast@^12.1.0: unist-util-position "^4.0.0" unist-util-visit "^4.0.0" -mdast-util-to-markdown@^1.0.0: - version "1.2.3" - resolved "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-1.2.3.tgz#2b3af92bf0e29080927eb59a8a10cd0a7398e093" - integrity sha512-040jJYtjOUdbvYAXCfPrpLJRdvMOmR33KRqlhT4r+fEbVM+jao1RMbA8RmGeRmw8RAj3vQ+HvhIaJPijvnOwCg== +mdast-util-to-markdown@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-1.3.0.tgz#38b6cdc8dc417de642a469c4fc2abdf8c931bd1e" + integrity sha512-6tUSs4r+KK4JGTTiQ7FfHmVOaDrLQJPmpjD6wPMlHGUVXoG9Vjc3jIeP+uyBWRf8clwB2blM+W7+KrlMYQnftA== dependencies: "@types/mdast" "^3.0.0" "@types/unist" "^2.0.0" @@ -16656,9 +15996,9 @@ media-typer@0.3.0: integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= "mem-fs-editor@^8.1.2 || ^9.0.0": - version "9.3.0" - resolved "https://registry.npmjs.org/mem-fs-editor/-/mem-fs-editor-9.3.0.tgz#85ce80541b1961d1d9f433e275c7cee9d0a1c9a2" - integrity sha512-QKFbPwGCh1ypmc2H8BUYpbapwT/x2AOCYZQogzSui4rUNes7WVMagQXsirPIfp18EarX0SSY9Fpg426nSjew4Q== + version "9.4.0" + resolved "https://registry.npmjs.org/mem-fs-editor/-/mem-fs-editor-9.4.0.tgz#0cc1cf61350e33c25fc364c97fb0551eb32b8c9b" + integrity sha512-HSSOLSVRrsDdui9I6i96dDtG+oAez/4EB2g4cjSrNhgNQ3M+L57/+22NuPdORSoxvOHjIg/xeOE+C0wwF91D2g== dependencies: binaryextensions "^4.16.0" commondir "^1.0.1" @@ -16681,7 +16021,7 @@ media-typer@0.3.0: vinyl "^2.0.1" vinyl-file "^3.0.0" -memfs@^3.1.2, memfs@^3.2.2, memfs@^3.4.1: +memfs@^3.1.2, memfs@^3.4.1: version "3.4.1" resolved "https://registry.npmjs.org/memfs/-/memfs-3.4.1.tgz#b78092f466a0dce054d63d39275b24c71d3f1305" integrity sha512-1c9VPVvW5P7I85c35zAdEr1TD5+F11IToIHIlrVIcflfnzPkJa0ZoYEoEdYDP8KgPFoSZ/opDrUsAoZWym3mtw== @@ -16693,30 +16033,11 @@ memjs@^1.3.0: resolved "https://registry.npmjs.org/memjs/-/memjs-1.3.0.tgz#b7959b4ff3770e4c785463fd147f1e4fafd47a24" integrity sha512-y/V9a0auepA9Lgyr4QieK6K2FczjHucEdTpSS+hHVNmVEkYxruXhkHu8n6DSRQ4HXHEE3cc6Sf9f88WCJXGXsQ== -"memoize-one@>=3.1.1 <6": +"memoize-one@>=3.1.1 <6", memoize-one@^5.1.1: version "5.2.1" resolved "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz#8337aa3c4335581839ec01c3d594090cebe8f00e" integrity sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q== -memoize-one@^5.1.1: - version "5.1.1" - resolved "https://registry.npmjs.org/memoize-one/-/memoize-one-5.1.1.tgz#047b6e3199b508eaec03504de71229b8eb1d75c0" - integrity sha512-HKeeBpWvqiVJD57ZUAsJNm71eHTykffzcLZVYWiVfQeI1rJtuEaS7hQiEpWfVVk18donPwJEcFKIkCmPJNOhHA== - -memoizee@^0.4.15: - version "0.4.15" - resolved "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz#e6f3d2da863f318d02225391829a6c5956555b72" - integrity sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ== - dependencies: - d "^1.0.1" - es5-ext "^0.10.53" - es6-weak-map "^2.0.3" - event-emitter "^0.3.5" - is-promise "^2.2.2" - lru-queue "^0.1.0" - next-tick "^1.1.0" - timers-ext "^0.1.7" - meow@^6.0.0: version "6.1.1" resolved "https://registry.npmjs.org/meow/-/meow-6.1.1.tgz#1ad64c4b76b2a24dfb2f635fddcadf320d251467" @@ -16761,10 +16082,10 @@ merge-stream@^2.0.0: resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== -merge2@^1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/merge2/-/merge2-1.3.0.tgz#5b366ee83b2f1582c48f87e47cf1a9352103ca81" - integrity sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw== +merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== meros@1.1.4, meros@^1.1.4: version "1.1.4" @@ -16781,7 +16102,7 @@ metric-lcs@^0.1.2: resolved "https://registry.npmjs.org/metric-lcs/-/metric-lcs-0.1.2.tgz#87913f149410e39c7c5a19037512814eaf155e11" integrity sha512-+TZ5dUDPKPJaU/rscTzxyN8ZkX7eAVLAiQU/e+YINleXPv03SCmJShaMT1If1liTH8OcmWXZs0CmzCBRBLcMpA== -micromark-core-commonmark@^1.0.0: +micromark-core-commonmark@^1.0.0, micromark-core-commonmark@^1.0.1: version "1.0.6" resolved "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-1.0.6.tgz#edff4c72e5993d93724a3c206970f5a15b0585ad" integrity sha512-K+PkJTxqjFfSNkfAhp4GB+cZPfQd6dxtTXnf+RjZOV7T4EEXnvgzOcnp+eSTmpGk9d1S9sL6/lqrgSNn/s0HZA== @@ -16803,36 +16124,16 @@ micromark-core-commonmark@^1.0.0: micromark-util-types "^1.0.1" uvu "^0.5.0" -micromark-core-commonmark@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-1.0.1.tgz#a64987cafe872e8b80bc8f2352a5d988586ac4f1" - integrity sha512-vEOw8hcQ3nwHkKKNIyP9wBi8M50zjNajtmI+cCUWcVfJS+v5/3WCh4PLKf7PPRZFUutjzl4ZjlHwBWUKfb/SkA== - dependencies: - micromark-factory-destination "^1.0.0" - micromark-factory-label "^1.0.0" - micromark-factory-space "^1.0.0" - micromark-factory-title "^1.0.0" - micromark-factory-whitespace "^1.0.0" - micromark-util-character "^1.0.0" - micromark-util-chunked "^1.0.0" - micromark-util-classify-character "^1.0.0" - micromark-util-html-tag-name "^1.0.0" - micromark-util-normalize-identifier "^1.0.0" - micromark-util-resolve-all "^1.0.0" - micromark-util-subtokenize "^1.0.0" - micromark-util-symbol "^1.0.0" - micromark-util-types "^1.0.1" - parse-entities "^3.0.0" - micromark-extension-gfm-autolink-literal@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-1.0.0.tgz#1a49a62bfcb00f9dff87ab39f3b21a108612dc24" - integrity sha512-t+K0aPK32mXypVTEKV+WRfoT/Rb7MERDgHZVRr56NXpyQQhgMk72QnK4NljYUlrgbuesH+MxiPQwThzqRDIwvA== + version "1.0.3" + resolved "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-1.0.3.tgz#dc589f9c37eaff31a175bab49f12290edcf96058" + integrity sha512-i3dmvU0htawfWED8aHMMAzAVp/F0Z+0bPh3YrbTPPL1v4YAlCZpy5rBO5p0LPYiZo0zFVkoYh7vDU7yQSiCMjg== dependencies: micromark-util-character "^1.0.0" micromark-util-sanitize-uri "^1.0.0" micromark-util-symbol "^1.0.0" micromark-util-types "^1.0.0" + uvu "^0.5.0" micromark-extension-gfm-footnote@^1.0.0: version "1.0.3" @@ -16848,42 +16149,45 @@ micromark-extension-gfm-footnote@^1.0.0: uvu "^0.5.0" micromark-extension-gfm-strikethrough@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-1.0.1.tgz#9f53ab4f5dc8c0525a889850bae615f074a98a27" - integrity sha512-fzGYXWz9HPWH1uHqYwdyR8XpEtuoYVHUjTdPQTnl3ETVZOQe1NXMwE3RA7AMqeON52hG+kO9g1/P1+pLONBSMQ== + version "1.0.4" + resolved "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-1.0.4.tgz#162232c284ffbedd8c74e59c1525bda217295e18" + integrity sha512-/vjHU/lalmjZCT5xt7CcHVJGq8sYRm80z24qAKXzaHzem/xsDYb2yLL+NNVbYvmpLx3O7SYPuGL5pzusL9CLIQ== dependencies: micromark-util-chunked "^1.0.0" micromark-util-classify-character "^1.0.0" micromark-util-resolve-all "^1.0.0" micromark-util-symbol "^1.0.0" micromark-util-types "^1.0.0" + uvu "^0.5.0" micromark-extension-gfm-table@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-1.0.0.tgz#f0d35dbf008b6182311049f9137323d34a54c7a0" - integrity sha512-OATRuHDgEAT/aaJJRSdU12V+s01kNSnJ0jumdfLq5mPy0F5DkR3zbTSFLH4tjVYM0/kEG6umxIhHY62mFe4z5Q== + version "1.0.5" + resolved "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-1.0.5.tgz#7b708b728f8dc4d95d486b9e7a2262f9cddbcbb4" + integrity sha512-xAZ8J1X9W9K3JTJTUL7G6wSKhp2ZYHrFk5qJgY/4B33scJzE2kpfRL6oiw/veJTbt7jiM/1rngLlOKPWr1G+vg== dependencies: micromark-factory-space "^1.0.0" micromark-util-character "^1.0.0" micromark-util-symbol "^1.0.0" micromark-util-types "^1.0.0" + uvu "^0.5.0" micromark-extension-gfm-tagfilter@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-1.0.0.tgz#a38c7c462c2007b534fcb485e9310165879654a7" - integrity sha512-GGUZhzQrOdHR8RHU2ru6K+4LMlj+pBdNuXRtw5prOflDOk2hHqDB0xEgej1AHJ2VETeycX7tzQh2EmaTUOmSKg== + version "1.0.1" + resolved "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-1.0.1.tgz#fb2e303f7daf616db428bb6a26e18fda14a90a4d" + integrity sha512-Ty6psLAcAjboRa/UKUbbUcwjVAv5plxmpUTy2XC/3nJFL37eHej8jrHrRzkqcpipJliuBH30DTs7+3wqNcQUVA== dependencies: micromark-util-types "^1.0.0" micromark-extension-gfm-task-list-item@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-1.0.0.tgz#ab38b2b4ead4e746189d6323c32cacab2c63599d" - integrity sha512-3tkHCq1NNwijtwpjYba9+rl1yvQ4xYg8iQpUAfTJRyq8MtIEsBUF/vW6B9Gh8Qwy1hE2FmpyHhP4jnFAt61zLg== + version "1.0.3" + resolved "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-1.0.3.tgz#7683641df5d4a09795f353574d7f7f66e47b7fc4" + integrity sha512-PpysK2S1Q/5VXi72IIapbi/jliaiOFzv7THH4amwXeYXLq3l1uo8/2Be0Ac1rEwK20MQEsGH2ltAZLNY2KI/0Q== dependencies: micromark-factory-space "^1.0.0" micromark-util-character "^1.0.0" micromark-util-symbol "^1.0.0" micromark-util-types "^1.0.0" + uvu "^0.5.0" micromark-extension-gfm@^2.0.0: version "2.0.1" @@ -16909,13 +16213,14 @@ micromark-factory-destination@^1.0.0: micromark-util-types "^1.0.0" micromark-factory-label@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-1.0.0.tgz#b316ec479b474232973ff13b49b576f84a6f2cbb" - integrity sha512-XWEucVZb+qBCe2jmlOnWr6sWSY6NHx+wtpgYFsm4G+dufOf6tTQRRo0bdO7XSlGPu5fyjpJenth6Ksnc5Mwfww== + version "1.0.2" + resolved "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-1.0.2.tgz#6be2551fa8d13542fcbbac478258fb7a20047137" + integrity sha512-CTIwxlOnU7dEshXDQ+dsr2n+yxpP0+fn271pu0bwDIS8uqfFcumXpj5mLn3hSC8iw2MUr6Gx8EcKng1dD7i6hg== dependencies: micromark-util-character "^1.0.0" micromark-util-symbol "^1.0.0" micromark-util-types "^1.0.0" + uvu "^0.5.0" micromark-factory-space@^1.0.0: version "1.0.0" @@ -16926,14 +16231,15 @@ micromark-factory-space@^1.0.0: micromark-util-types "^1.0.0" micromark-factory-title@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-1.0.0.tgz#708f7a8044f34a898c0efdb4f55e4da66b537273" - integrity sha512-flvC7Gx0dWVWorXuBl09Cr3wB5FTuYec8pMGVySIp2ZlqTcIjN/lFohZcP0EG//krTptm34kozHk7aK/CleCfA== + version "1.0.2" + resolved "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-1.0.2.tgz#7e09287c3748ff1693930f176e1c4a328382494f" + integrity sha512-zily+Nr4yFqgMGRKLpTVsNl5L4PMu485fGFDOQJQBl2NFpjGte1e86zC0da93wf97jrc4+2G2GQudFMHn3IX+A== dependencies: micromark-factory-space "^1.0.0" micromark-util-character "^1.0.0" micromark-util-symbol "^1.0.0" micromark-util-types "^1.0.0" + uvu "^0.5.0" micromark-factory-whitespace@^1.0.0: version "1.0.0" @@ -16985,18 +16291,19 @@ micromark-util-decode-numeric-character-reference@^1.0.0: micromark-util-symbol "^1.0.0" micromark-util-decode-string@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-1.0.0.tgz#f97946825231d9c97df767875064401774578a6e" - integrity sha512-4g5UJ8P/J8wuRKUXCcB7udQuOBXpLyvBQSLSuznfBLCG+thKG6UTwFnXfHkrr/1wddprkUbPatCzxDjrJ+5zDg== + version "1.0.2" + resolved "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-1.0.2.tgz#942252ab7a76dec2dbf089cc32505ee2bc3acf02" + integrity sha512-DLT5Ho02qr6QWVNYbRZ3RYOSSWWFuH3tJexd3dgN1odEuPNxCngTCXJum7+ViRAd9BbdxCvMToPOD/IvVhzG6Q== dependencies: + decode-named-character-reference "^1.0.0" micromark-util-character "^1.0.0" micromark-util-decode-numeric-character-reference "^1.0.0" - parse-entities "^3.0.0" + micromark-util-symbol "^1.0.0" micromark-util-encode@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-1.0.0.tgz#c409ecf751a28aa9564b599db35640fccec4c068" - integrity sha512-cJpFVM768h6zkd8qJ1LNRrITfY4gwFt+tziPcIf71Ui8yFzY9wG3snZQqiWVq93PG4Sw6YOtcNiKJfVIs9qfGg== + version "1.0.1" + resolved "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-1.0.1.tgz#2c1c22d3800870ad770ece5686ebca5920353383" + integrity sha512-U2s5YdnAYexjKDel31SVMPbfi+eF8y1U4pfiRW/Y8EFVCy/vgxk/2wWTxzcqE71LHtCuCzlBDRU2a5CQ5j+mQA== micromark-util-html-tag-name@^1.0.0: version "1.0.0" @@ -17027,31 +16334,33 @@ micromark-util-sanitize-uri@^1.0.0: micromark-util-symbol "^1.0.0" micromark-util-subtokenize@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-1.0.0.tgz#6f006fa719af92776c75a264daaede0fb3943c6a" - integrity sha512-EsnG2qscmcN5XhkqQBZni/4oQbLFjz9yk3ZM/P8a3YUjwV6+6On2wehr1ALx0MxK3+XXXLTzuBKHDFeDFYRdgQ== + version "1.0.2" + resolved "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-1.0.2.tgz#ff6f1af6ac836f8bfdbf9b02f40431760ad89105" + integrity sha512-d90uqCnXp/cy4G881Ub4psE57Sf8YD0pim9QdjCRNjfas2M1u6Lbt+XZK9gnHL2XFhnozZiEdCa9CNfXSfQ6xA== dependencies: micromark-util-chunked "^1.0.0" micromark-util-symbol "^1.0.0" micromark-util-types "^1.0.0" + uvu "^0.5.0" micromark-util-symbol@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.0.0.tgz#91cdbcc9b2a827c0129a177d36241bcd3ccaa34d" - integrity sha512-NZA01jHRNCt4KlOROn8/bGi6vvpEmlXld7EHcRH+aYWUfL3Wc8JLUNNlqUMKa0hhz6GrpUWsHtzPmKof57v0gQ== + version "1.0.1" + resolved "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.0.1.tgz#b90344db62042ce454f351cf0bebcc0a6da4920e" + integrity sha512-oKDEMK2u5qqAptasDAwWDXq0tG9AssVwAx3E9bBF3t/shRIGsWIRG+cGafs2p/SnDSOecnt6hZPCE2o6lHfFmQ== micromark-util-types@^1.0.0, micromark-util-types@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.0.1.tgz#8bb8a092d93d326bd29fe29602799f2d0d922fd4" - integrity sha512-UT0ylWEEy80RFYzK9pEaugTqaxoD/j0Y9WhHpSyitxd99zjoQz7JJ+iKuhPAgOW2MiPSUAx+c09dcqokeyaROA== + version "1.0.2" + resolved "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.0.2.tgz#f4220fdb319205812f99c40f8c87a9be83eded20" + integrity sha512-DCfg/T8fcrhrRKTPjRrw/5LLvdGV7BHySf/1LOZx7TzWZdYRjogNtyNq885z3nNallwr3QUKARjqvHqX1/7t+w== micromark@^3.0.0: - version "3.0.5" - resolved "https://registry.npmjs.org/micromark/-/micromark-3.0.5.tgz#d24792c8a06f201d5608c106dbfadef34c299684" - integrity sha512-QfjERBnPw0G9mxhOCkkbRP0n8SX8lIBLrEKeEVceviUukqVMv3hWE4AgNTOK/W6GWqtPvvIHg2Apl3j1Dxm6aQ== + version "3.0.10" + resolved "https://registry.npmjs.org/micromark/-/micromark-3.0.10.tgz#1eac156f0399d42736458a14b0ca2d86190b457c" + integrity sha512-ryTDy6UUunOXy2HPjelppgJ2sNfcPz1pLlMdA6Rz9jPzhLikWXv/irpWV/I2jd68Uhmny7hHxAlAhk4+vWggpg== dependencies: "@types/debug" "^4.0.0" debug "^4.0.0" + decode-named-character-reference "^1.0.0" micromark-core-commonmark "^1.0.1" micromark-factory-space "^1.0.0" micromark-util-character "^1.0.0" @@ -17065,7 +16374,7 @@ micromark@^3.0.0: micromark-util-subtokenize "^1.0.0" micromark-util-symbol "^1.0.0" micromark-util-types "^1.0.1" - parse-entities "^3.0.0" + uvu "^0.5.0" micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" @@ -17119,7 +16428,7 @@ mime-types@2.1.18: dependencies: mime-db "~1.33.0" -mime-types@^2.0.8, mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24: +mime-types@^2.0.8, mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34: version "2.1.34" resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz#5a712f9ec1503511a945803640fafe09d3793c24" integrity sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A== @@ -17131,11 +16440,6 @@ mime@1.6.0: resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== -mime@^2.2.0: - version "2.5.2" - resolved "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz#6e3dc6cc2b9510643830e5f19d5cb753da5eeabe" - integrity sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg== - mime@^2.5.0: version "2.6.0" resolved "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" @@ -17179,9 +16483,9 @@ min-document@^2.19.0: dom-walk "^0.1.0" min-indent@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/min-indent/-/min-indent-1.0.0.tgz#cfc45c37e9ec0d8f0a0ec3dd4ef7f7c3abe39256" - integrity sha1-z8RcN+nsDY8KDsPdTvf3w6vjklY= + version "1.0.1" + resolved "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" + integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== mini-css-extract-plugin@^2.4.2: version "2.5.3" @@ -17200,13 +16504,27 @@ minimalistic-crypto-utils@^1.0.1: resolved "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= -minimatch@3.0.4, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4: +minimatch@3.0.4: version "3.0.4" resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== dependencies: brace-expansion "^1.1.7" +minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4: + version "3.1.2" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^4.0.0: + version "4.2.1" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz#40d9d511a46bdc4e563c22c3080cde9c0d8299b4" + integrity sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g== + dependencies: + brace-expansion "^1.1.7" + minimist-options@4.1.0, minimist-options@^4.0.2: version "4.1.0" resolved "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" @@ -17319,9 +16637,9 @@ mixme@^0.5.1: integrity sha512-3KYa4m4Vlqx98GPdOHghxSdNtTvcP8E0kkaJ5Dlh+h2DRzF7zpuVVcA8B0QpKd11YJeP9QQ7ASkKzOeu195Wzw== mkdirp-classic@^0.5.2: - version "0.5.2" - resolved "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.2.tgz#54c441ce4c96cd7790e10b41a87aa51068ecab2b" - integrity sha512-ejdnDQcR75gwknmMw/tx02AuRs8jCtqFoFqDZMjiNxsu85sRIJVXDKHuLYvUUPRBUtV2FpSZa9bL1BUa3BdR2g== + version "0.5.3" + resolved "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" + integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== mkdirp-infer-owner@^2.0.0: version "2.0.0" @@ -17332,7 +16650,7 @@ mkdirp-infer-owner@^2.0.0: infer-owner "^1.0.4" mkdirp "^1.0.3" -"mkdirp@>=0.5 0", mkdirp@^0.5.1, mkdirp@^0.5.4, mkdirp@^0.5.5: +"mkdirp@>=0.5 0", mkdirp@^0.5.1, mkdirp@^0.5.5: version "0.5.5" resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== @@ -17355,9 +16673,9 @@ modify-values@^1.0.0: integrity sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw== moment-timezone@^0.5.31: - version "0.5.33" - resolved "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.33.tgz#b252fd6bb57f341c9b59a5ab61a8e51a73bbd22c" - integrity sha512-PTc2vcT8K9J5/9rDEPe5czSIKgLoGsH8UNpA4qZTVw0Vd/Uz19geE9abbIOQKaAQFcnQ3v5YEXrbSc5BpshH+w== + version "0.5.34" + resolved "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.34.tgz#a75938f7476b88f155d3504a9343f7519d9a405c" + integrity sha512-3zAEHh2hKUs3EXLESx/wsgw6IQdusOT8Bxm3D9UrHPQR7zlMmzwybC8zHEM1tQ4LJwP7fcxrWr8tuBg05fFCbg== dependencies: moment ">= 2.9.0" @@ -17429,11 +16747,11 @@ msw@^0.35.0: yargs "^17.0.1" msw@^0.36.3: - version "0.36.3" - resolved "https://registry.npmjs.org/msw/-/msw-0.36.3.tgz#7feb243a5fcf563806d45edc027bc36144741170" - integrity sha512-Itzp/QhKaleZoslXDrNik3ramW9ynqzOdbwydX2ehBSSaZd5QoiAl/bHYcV33R6CEZcJgIX1N4s+G6XkF/bhkA== + version "0.36.8" + resolved "https://registry.npmjs.org/msw/-/msw-0.36.8.tgz#33ff8bfb0299626a95f43d0e4c3dc2c73c17f1ba" + integrity sha512-K7lOQoYqhGhTSChsmHMQbf/SDCsxh/m0uhN6Ipt206lGoe81fpTmaGD0KLh4jUxCONMOUnwCSj0jtX2CM4pEdw== dependencies: - "@mswjs/cookies" "^0.1.6" + "@mswjs/cookies" "^0.1.7" "@mswjs/interceptors" "^0.12.7" "@open-draft/until" "^1.0.3" "@types/cookie" "^0.4.1" @@ -17447,7 +16765,7 @@ msw@^0.36.3: inquirer "^8.2.0" is-node-process "^1.0.1" js-levenshtein "^1.1.6" - node-fetch "^2.6.1" + node-fetch "^2.6.7" path-to-regexp "^6.2.0" statuses "^2.0.0" strict-event-emitter "^0.2.0" @@ -17513,20 +16831,15 @@ named-placeholders@^1.1.2: dependencies: lru-cache "^4.1.3" -nan@^2.14.0: - version "2.14.1" - resolved "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01" - integrity sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw== - nan@^2.14.1, nan@^2.15.0: version "2.15.0" resolved "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz#3f34a473ff18e15c1b5626b62903b5ad6e665fee" integrity sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ== nano-css@^5.3.1: - version "5.3.1" - resolved "https://registry.npmjs.org/nano-css/-/nano-css-5.3.1.tgz#b709383e07ad3be61f64edffacb9d98250b87a1f" - integrity sha512-ENPIyNzANQRyYVvb62ajDd7PAyIgS2LIUnT9ewih4yrXSZX4hKoUwssy8WjUH++kEOA5wUTMgNnV7ko5n34kUA== + version "5.3.4" + resolved "https://registry.npmjs.org/nano-css/-/nano-css-5.3.4.tgz#40af6a83a76f84204f346e8ccaa9169cdae9167b" + integrity sha512-wfcviJB6NOxDIDfr7RFn/GlaN7I/Bhe4d39ZRCJ3xvZX60LVe2qZ+rDqM49nm4YT81gAjzS+ZklhKP/Gnfnubg== dependencies: css-tree "^1.1.2" csstype "^3.0.6" @@ -17542,15 +16855,10 @@ nanoclone@^0.2.1: resolved "https://registry.npmjs.org/nanoclone/-/nanoclone-0.2.1.tgz#dd4090f8f1a110d26bb32c49ed2f5b9235209ed4" integrity sha512-wynEP02LmIbLpcYw8uBKpcfF6dmg2vcpKqxeH5UcoKEYdExslsdUA4ugFauuaeYdTB76ez6gJW8XAZ6CgkXYxA== -nanoid@^3.1.23: - version "3.2.0" - resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.2.0.tgz#62667522da6673971cca916a6d3eff3f415ff80c" - integrity sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA== - -nanoid@^3.2.0: - version "3.3.0" - resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.0.tgz#5906f776fd886c66c24f3653e0c46fcb1d4ad6b0" - integrity sha512-JzxqqT5u/x+/KOFSd7JP15DOo9nOoHpx6DYatqIHUW2+flybkm+mdcraotSQR5WcnZr+qhGVh8Ted0KdfSMxlg== +nanoid@^3.1.23, nanoid@^3.2.0: + version "3.3.1" + resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz#6347a18cac88af88f58af0b3594b723d5e99bb35" + integrity sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw== nanomatch@^1.2.9: version "1.2.13" @@ -17574,12 +16882,7 @@ natural-compare@^1.4.0: resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= -negotiator@0.6.2, negotiator@^0.6.2: - version "0.6.2" - resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" - integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== - -negotiator@^0.6.3: +negotiator@0.6.3, negotiator@^0.6.2, negotiator@^0.6.3: version "0.6.3" resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== @@ -17589,28 +16892,18 @@ neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.2: resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== -next-tick@1, next-tick@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" - integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== - -next-tick@~1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" - integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= - nice-try@^1.0.4: version "1.0.5" resolved "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== nise@^5.1.0: - version "5.1.0" - resolved "https://registry.npmjs.org/nise/-/nise-5.1.0.tgz#713ef3ed138252daef20ec035ab62b7a28be645c" - integrity sha512-W5WlHu+wvo3PaKLsJJkgPup2LrsXCcm7AWwyNZkUnn5rwPkuPBi3Iwk5SQtN0mv+K65k7nKKjwNQ30wg3wLAQQ== + version "5.1.1" + resolved "https://registry.npmjs.org/nise/-/nise-5.1.1.tgz#ac4237e0d785ecfcb83e20f389185975da5c31f3" + integrity sha512-yr5kW2THW1AkxVmCnKEh4nbYkJdB3I7LUkiUgOvEkOp414mc2UMaHMA7pjq1nYowhdoJZGwEKGaQVbxfpWj10A== dependencies: - "@sinonjs/commons" "^1.7.0" - "@sinonjs/fake-timers" "^7.0.4" + "@sinonjs/commons" "^1.8.3" + "@sinonjs/fake-timers" ">=5" "@sinonjs/text-encoding" "^0.7.1" just-extend "^4.0.2" path-to-regexp "^1.7.0" @@ -17664,14 +16957,7 @@ node-fetch@2.6.1: resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== -node-fetch@2.6.5: - version "2.6.5" - resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.5.tgz#42735537d7f080a7e5f78b6c549b7146be1742fd" - integrity sha512-mmlIVHJEu5rnIxgEgez6b9GgWXbkZj5YZ7fx+2r94a2E+Uirsp6HsPTPlomfdHtpt/B0cdKviwkoaM6pyvUOpQ== - dependencies: - whatwg-url "^5.0.0" - -node-fetch@2.6.7, node-fetch@^2.3.0, node-fetch@^2.6.0, node-fetch@^2.6.1, node-fetch@^2.6.5, node-fetch@^2.6.7: +node-fetch@2.6.7, node-fetch@^2.6.0, node-fetch@^2.6.1, node-fetch@^2.6.5, node-fetch@^2.6.7: version "2.6.7" resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== @@ -17684,9 +16970,9 @@ node-forge@^1.0.0, node-forge@^1.2.0: integrity sha512-Fcvtbb+zBcZXbTTVwqGA5W+MKBj56UjVRevvchv5XrcyXbmNdesfZL37nlcWOfpgHhgmxApw3tQbTr4CqNmX4w== node-gyp@^5.0.2: - version "5.1.0" - resolved "https://registry.npmjs.org/node-gyp/-/node-gyp-5.1.0.tgz#8e31260a7af4a2e2f994b0673d4e0b3866156332" - integrity sha512-OUTryc5bt/P8zVgNUmC6xdXiDJxLMAW8cF5tLQOT9E5sOQj+UeQxnnPy74K3CLCa/SOjjBlbuzDLR8ANwA+wmw== + version "5.1.1" + resolved "https://registry.npmjs.org/node-gyp/-/node-gyp-5.1.1.tgz#eb915f7b631c937d282e33aed44cb7a025f62a3e" + integrity sha512-WH0WKGi+a4i4DUt2mHnvocex/xPLp9pYt5R6M2JdFB7pJ7Z34hveZ4nDTGTiLXCkitA9T8HFZjhinBCiVHYcWw== dependencies: env-paths "^2.2.0" glob "^7.1.4" @@ -17771,11 +17057,6 @@ node-match-path@^0.6.3: resolved "https://registry.npmjs.org/node-match-path/-/node-match-path-0.6.3.tgz#55dd8443d547f066937a0752dce462ea7dc27551" integrity sha512-fB1reOHKLRZCJMAka28hIxCwQLxGmd7WewOCBDYKpyA1KXi68A7vaGgdZAPhY2E6SXoYt3KqYCCvXLJ+O0Fu/Q== -node-modules-regexp@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" - integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= - node-notifier@^8.0.0: version "8.0.2" resolved "https://registry.npmjs.org/node-notifier/-/node-notifier-8.0.2.tgz#f3167a38ef0d2c8a866a83e318c1ba0efeb702c5" @@ -17789,9 +17070,9 @@ node-notifier@^8.0.0: which "^2.0.2" node-releases@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz#3d1d395f204f1f2f29a54358b9fb678765ad2fc5" - integrity sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA== + version "2.0.2" + resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.2.tgz#7139fe71e2f4f11b47d4d2986aaf8c48699e0c01" + integrity sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg== nodemon@^2.0.2: version "2.0.15" @@ -17841,14 +17122,14 @@ normalize-package-data@^2.0.0, normalize-package-data@^2.3.2, normalize-package- semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" -normalize-package-data@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.0.tgz#1f8a7c423b3d2e85eb36985eaf81de381d01301a" - integrity sha512-6lUjEI0d3v6kFrtgA/lOx4zHCWULXsFNIjHolnZCKCTLA6m/G625cdn3O7eNmT0iD3jfo6HZ9cdImGZwf21prw== +normalize-package-data@^3.0.0, normalize-package-data@^3.0.2: + version "3.0.3" + resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz#dbcc3e2da59509a0983422884cd172eefdfa525e" + integrity sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA== dependencies: - hosted-git-info "^3.0.6" - resolve "^1.17.0" - semver "^7.3.2" + hosted-git-info "^4.0.1" + is-core-module "^2.5.0" + semver "^7.3.4" validate-npm-package-license "^3.0.1" normalize-path@^2.1.1: @@ -17863,25 +17144,20 @@ normalize-path@^3.0.0, normalize-path@~3.0.0: resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== -normalize-url@^3.3.0: - version "3.3.0" - resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" - integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== - normalize-url@^4.1.0: version "4.5.1" resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a" integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA== -normalize-url@^6.0.1: +normalize-url@^6.0.1, normalize-url@^6.1.0: version "6.1.0" resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== npm-bundled@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.1.tgz#1edd570865a94cdb1bc8220775e29466c9fb234b" - integrity sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA== + version "1.1.2" + resolved "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz#944c78789bd739035b70baa2ca5cc32b8d860bc1" + integrity sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ== dependencies: npm-normalize-package-bin "^1.0.1" @@ -17911,16 +17187,7 @@ npm-normalize-package-bin@^1.0.0, npm-normalize-package-bin@^1.0.1: resolved "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== -npm-package-arg@^8.0.0, npm-package-arg@^8.0.1, npm-package-arg@^8.1.0: - version "8.1.0" - resolved "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.0.tgz#b5f6319418c3246a1c38e1a8fbaa06231bc5308f" - integrity sha512-/ep6QDxBkm9HvOhOg0heitSd7JHA1U7y1qhhlRlteYYAi9Pdb/ZV7FW5aHpkrpM8+P+4p/jjR8zCyKPBMBjSig== - dependencies: - hosted-git-info "^3.0.6" - semver "^7.0.0" - validate-npm-package-name "^3.0.0" - -npm-package-arg@^8.1.2, npm-package-arg@^8.1.5: +npm-package-arg@^8.0.0, npm-package-arg@^8.0.1, npm-package-arg@^8.1.0, npm-package-arg@^8.1.2, npm-package-arg@^8.1.5: version "8.1.5" resolved "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.5.tgz#3369b2d5fe8fdc674baa7f1786514ddc15466e44" integrity sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q== @@ -17930,9 +17197,9 @@ npm-package-arg@^8.1.2, npm-package-arg@^8.1.5: validate-npm-package-name "^3.0.0" npm-packlist@^2.1.4: - version "2.1.4" - resolved "https://registry.npmjs.org/npm-packlist/-/npm-packlist-2.1.4.tgz#40e96b2b43787d0546a574542d01e066640d09da" - integrity sha512-Qzg2pvXC9U4I4fLnUrBmcIT4x0woLtUgxUi9eC+Zrcv1Xx5eamytGAfbDWQ67j7xOcQ2VW1I3su9smVTIdu7Hw== + version "2.2.2" + resolved "https://registry.npmjs.org/npm-packlist/-/npm-packlist-2.2.2.tgz#076b97293fa620f632833186a7a8f65aaa6148c8" + integrity sha512-Jt01acDvJRhJGthnUJVF/w6gumWOZxO7IkpY/lsX9//zqQgnF7OJaxgQXcerd4uQOLu7W5bkb4mChL9mdfm+Zg== dependencies: glob "^7.1.6" ignore-walk "^3.0.3" @@ -17949,16 +17216,7 @@ npm-packlist@^3.0.0: npm-bundled "^1.1.1" npm-normalize-package-bin "^1.0.1" -npm-pick-manifest@^6.0.0: - version "6.1.0" - resolved "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-6.1.0.tgz#2befed87b0fce956790f62d32afb56d7539c022a" - integrity sha512-ygs4k6f54ZxJXrzT0x34NybRlLeZ4+6nECAIbr2i0foTnijtS1TJiyzpqtuUAJOps/hO0tNDr8fRV5g+BtRlTw== - dependencies: - npm-install-checks "^4.0.0" - npm-package-arg "^8.0.0" - semver "^7.0.0" - -npm-pick-manifest@^6.1.0, npm-pick-manifest@^6.1.1: +npm-pick-manifest@^6.0.0, npm-pick-manifest@^6.1.0, npm-pick-manifest@^6.1.1: version "6.1.1" resolved "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-6.1.1.tgz#7b5484ca2c908565f43b7f27644f36bb816f5148" integrity sha512-dBsdBtORT84S8V8UTad1WlUyKIY9iMsAmqxHbLdeEeBNMLQDlDWWra3wYUx9EBEIiG/YwAy0XyNHDd2goAsfuA== @@ -17968,6 +17226,18 @@ npm-pick-manifest@^6.1.0, npm-pick-manifest@^6.1.1: npm-package-arg "^8.1.2" semver "^7.3.4" +npm-registry-fetch@^11.0.0: + version "11.0.0" + resolved "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-11.0.0.tgz#68c1bb810c46542760d62a6a965f85a702d43a76" + integrity sha512-jmlgSxoDNuhAtxUIG6pVwwtz840i994dL14FoNVZisrmZW5kWd63IUTNv1m/hyRSGSqWjCUp/YZlS1BJyNp9XA== + dependencies: + make-fetch-happen "^9.0.1" + minipass "^3.1.3" + minipass-fetch "^1.3.0" + minipass-json-stream "^1.0.1" + minizlib "^2.0.0" + npm-package-arg "^8.0.0" + npm-registry-fetch@^12.0.0, npm-registry-fetch@^12.0.1: version "12.0.2" resolved "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-12.0.2.tgz#ae583bb3c902a60dae43675b5e33b5b1f6159f1e" @@ -18038,7 +17308,7 @@ npmlog@^6.0.0: gauge "^4.0.0" set-blocking "^2.0.0" -nth-check@^2.0.0: +nth-check@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz#2efe162f5c3da06a28959fbd3db75dbeea9f0fc2" integrity sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w== @@ -18104,9 +17374,12 @@ object-inspect@^1.11.0, object-inspect@^1.12.0, object-inspect@^1.9.0: integrity sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g== object-is@^1.0.1: - version "1.0.2" - resolved "https://registry.npmjs.org/object-is/-/object-is-1.0.2.tgz#6b80eb84fe451498f65007982f035a5b445edec4" - integrity sha512-Epah+btZd5wrrfjkJZq1AOB9O6OxUQto45hzFd7lXGrpHPGE0W1k+426yrZV+k6NJOzLNNW/nVsmZdIWsAqoOQ== + version "1.1.5" + resolved "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" + integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" object-keys@^1.0.12, object-keys@^1.1.1: version "1.1.1" @@ -18149,12 +17422,13 @@ object.fromentries@^2.0.5: es-abstract "^1.19.1" object.getownpropertydescriptors@^2.0.3: - version "2.1.0" - resolved "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" - integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg== + version "2.1.3" + resolved "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.3.tgz#b223cf38e17fefb97a63c10c91df72ccb386df9e" + integrity sha512-VdDoCwvJI4QdC6ndjpqFmoL3/+HxffFBbcJzKi5hwLLqqx3mdbedRpfZDdK0SrOSauj8X4GzBvnDZl4vTN7dOw== dependencies: + call-bind "^1.0.2" define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" + es-abstract "^1.19.1" object.hasown@^1.1.0: version "1.1.0" @@ -18237,11 +17511,6 @@ one-time@^1.0.0: dependencies: fn.name "1.x.x" -onetime@^1.0.0: - version "1.1.0" - resolved "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" - integrity sha1-ofeDj4MUxRbwXs78vEzP4EtO14k= - onetime@^2.0.0: version "2.0.1" resolved "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" @@ -18266,17 +17535,17 @@ open@^8.0.0, open@^8.0.9, open@^8.4.0: is-wsl "^2.2.0" openapi-sampler@^1.1.0: - version "1.1.1" - resolved "https://registry.npmjs.org/openapi-sampler/-/openapi-sampler-1.1.1.tgz#7bba7000a03cd8a4630bfbe5b3ef258990c78400" - integrity sha512-WAFsl5SPYuhQwaMTDFOcKhnEY1G1rmamrMiPmJdqwfl1lr81g63/befcsN9BNi0w5/R0L+hfcUj13PANEBeLgg== + version "1.2.0" + resolved "https://registry.npmjs.org/openapi-sampler/-/openapi-sampler-1.2.0.tgz#2e82e4e32c1506a42f370be726d759d5275a9d4d" + integrity sha512-Y0tFg2iH7NWnNHYnesxhMfkXc7wWXyJXYMUTTxkGkfpl0U9u/ZOf6BxrdEXBD4sgs9uMlVWsbWLDLesVmSUU7Q== dependencies: "@types/json-schema" "^7.0.7" json-pointer "^0.6.1" openid-client@^4.1.1, openid-client@^4.2.1: - version "4.9.0" - resolved "https://registry.npmjs.org/openid-client/-/openid-client-4.9.0.tgz#bdfc9194435316df419f759ce177635146b43074" - integrity sha512-ThBbvRUUZwxUKBVK2UpDNIZ3eJkvtqWI8s5Dm+naV+gJdL+yRhT+8ywqct1gy5uL+xVS5+A/nhFcpJIisH2x6Q== + version "4.9.1" + resolved "https://registry.npmjs.org/openid-client/-/openid-client-4.9.1.tgz#4f00a9d1566c0fa08f0dd5986cf0e6b1e5d14186" + integrity sha512-DYUF07AHjI3QDKqKbn2F7RqozT4hyi4JvmpodLrq0HHoNP7t/AjeG/uqiBK1/N2PZSAQEThVjDLHSmJN4iqu/w== dependencies: aggregate-error "^3.1.0" got "^11.8.0" @@ -18342,14 +17611,6 @@ os-locale@^1.4.0: dependencies: lcid "^1.0.0" -os-name@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/os-name/-/os-name-3.1.0.tgz#dec19d966296e1cd62d701a5a66ee1ddeae70801" - integrity sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg== - dependencies: - macos-release "^2.2.0" - windows-release "^3.1.0" - os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" @@ -18384,14 +17645,14 @@ p-cancelable@^1.0.0: integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== p-cancelable@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.0.0.tgz#4a3740f5bdaf5ed5d7c3e34882c6fb5d6b266a6e" - integrity sha512-wvPXDmbMmu2ksjkB4Z3nZWTSkJEb9lqVdMaCKpZUGJG9TMiNp9XcbG3fn9fPKjem04fJMJnXoyFPk2FmgiaiNg== + version "2.1.1" + resolved "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz#aab7fbd416582fa32a3db49859c122487c5ed2cf" + integrity sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg== p-each-series@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/p-each-series/-/p-each-series-2.1.0.tgz#961c8dd3f195ea96c747e636b262b800a6b1af48" - integrity sha512-ZuRs1miPT4HrjFa+9fRfOFXxGJfORgelKV9f9nNOWw2gl6gVsRaVDOQP0+MI0G0wGKns1Yacsu0GjOFbTK0JFQ== + version "2.2.0" + resolved "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz#105ab0357ce72b202a8a8b94933672657b5e2a9a" + integrity sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA== p-filter@^2.1.0: version "2.1.0" @@ -18425,9 +17686,9 @@ p-limit@^1.1.0: p-try "^1.0.0" p-limit@^2.0.0, p-limit@^2.2.0: - version "2.2.2" - resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz#61279b67721f5287aa1c13a9a7fbbc48c9291b1e" - integrity sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ== + version "2.3.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== dependencies: p-try "^2.0.0" @@ -18495,12 +17756,12 @@ p-reduce@^2.0.0, p-reduce@^2.1.0: integrity sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw== p-retry@^4.5.0: - version "4.5.0" - resolved "https://registry.npmjs.org/p-retry/-/p-retry-4.5.0.tgz#6685336b3672f9ee8174d3769a660cb5e488521d" - integrity sha512-5Hwh4aVQSu6BEP+w2zKlVXtFAaYQe1qWuVADSgoeVlLjwe/Q/AMSoRR4MDeaAfu8llT+YNbEijWu/YF3m6avkg== + version "4.6.1" + resolved "https://registry.npmjs.org/p-retry/-/p-retry-4.6.1.tgz#8fcddd5cdf7a67a0911a9cf2ef0e5df7f602316c" + integrity sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA== dependencies: "@types/retry" "^0.12.0" - retry "^0.12.0" + retry "^0.13.1" p-timeout@^3.2.0: version "3.2.0" @@ -18550,11 +17811,11 @@ packet-reader@1.0.0: integrity sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ== pacote@^11.2.6: - version "11.2.6" - resolved "https://registry.npmjs.org/pacote/-/pacote-11.2.6.tgz#c0426e5d5c8d33aeea3461a75e1390f1ba78f953" - integrity sha512-xCl++Hb3aBC7LaWMimbO4xUqZVsEbKDVc6KKDIIyAeBYrmMwY1yJC2nES/lsGd8sdQLUosgBxQyuVNncZ2Ru0w== + version "11.3.5" + resolved "https://registry.npmjs.org/pacote/-/pacote-11.3.5.tgz#73cf1fc3772b533f575e39efa96c50be8c3dc9d2" + integrity sha512-fT375Yczn4zi+6Hkk2TBe1x1sP8FgFsEIZ2/iWaXY2r/NkhDJfxbcn5paz1+RTFCyNf+dPnaoBDJoAxXSU8Bkg== dependencies: - "@npmcli/git" "^2.0.1" + "@npmcli/git" "^2.1.0" "@npmcli/installed-package-contents" "^1.0.6" "@npmcli/promise-spawn" "^1.2.0" "@npmcli/run-script" "^1.8.2" @@ -18567,7 +17828,7 @@ pacote@^11.2.6: npm-package-arg "^8.0.1" npm-packlist "^2.1.4" npm-pick-manifest "^6.0.0" - npm-registry-fetch "^9.0.0" + npm-registry-fetch "^11.0.0" promise-retry "^2.0.1" read-package-json-fast "^2.0.1" rimraf "^3.0.2" @@ -18624,14 +17885,13 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" -parse-asn1@^5.0.0: - version "5.1.5" - resolved "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz#003271343da58dc94cace494faef3d2147ecea0e" - integrity sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ== +parse-asn1@^5.0.0, parse-asn1@^5.1.5: + version "5.1.6" + resolved "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" + integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== dependencies: - asn1.js "^4.0.0" + asn1.js "^5.2.0" browserify-aes "^1.0.0" - create-hash "^1.1.0" evp_bytestokey "^1.0.0" pbkdf2 "^3.0.3" safe-buffer "^5.1.1" @@ -18657,18 +17917,6 @@ parse-entities@^2.0.0: is-decimal "^1.0.0" is-hexadecimal "^1.0.0" -parse-entities@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/parse-entities/-/parse-entities-3.0.0.tgz#9ed6d6569b6cfc95ade058d683ddef239dad60dc" - integrity sha512-AJlcIFDNPEP33KyJLguv0xJc83BNvjxwpuUIcetyXUsLpVXAUCePJ5kIoYtEN2R1ac0cYaRu/vk9dVFkewHQhQ== - dependencies: - character-entities "^2.0.0" - character-entities-legacy "^2.0.0" - character-reference-invalid "^2.0.0" - is-alphanumerical "^2.0.0" - is-decimal "^2.0.0" - is-hexadecimal "^2.0.0" - parse-filepath@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz#a632127f53aaf3d15876f5872f3ffac763d6c891" @@ -18694,13 +17942,13 @@ parse-json@^4.0.0: json-parse-better-errors "^1.0.1" parse-json@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz#73e5114c986d143efa3712d4ea24db9a4266f60f" - integrity sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw== + version "5.2.0" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== dependencies: "@babel/code-frame" "^7.0.0" error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" + json-parse-even-better-errors "^2.3.0" lines-and-columns "^1.1.6" parse-package-name@^0.1.0: @@ -18709,28 +17957,25 @@ parse-package-name@^0.1.0: integrity sha1-P0Tdg4/rTCvkvzGLrkR313BrreQ= parse-path@^4.0.0: - version "4.0.1" - resolved "https://registry.npmjs.org/parse-path/-/parse-path-4.0.1.tgz#0ec769704949778cb3b8eda5e994c32073a1adff" - integrity sha512-d7yhga0Oc+PwNXDvQ0Jv1BuWkLVPXcAoQ/WREgd6vNNoKYaW52KI+RdOFjI63wjkmps9yUE8VS4veP+AgpQ/hA== + version "4.0.3" + resolved "https://registry.npmjs.org/parse-path/-/parse-path-4.0.3.tgz#82d81ec3e071dcc4ab49aa9f2c9c0b8966bb22bf" + integrity sha512-9Cepbp2asKnWTJ9x2kpw6Fe8y9JDbqwahGCTvklzd/cEq5C5JC59x2Xb0Kx+x0QZ8bvNquGO8/BWP0cwBHzSAA== dependencies: is-ssh "^1.3.0" protocols "^1.4.0" + qs "^6.9.4" + query-string "^6.13.8" -parse-url@^5.0.0: - version "5.0.1" - resolved "https://registry.npmjs.org/parse-url/-/parse-url-5.0.1.tgz#99c4084fc11be14141efa41b3d117a96fcb9527f" - integrity sha512-flNUPP27r3vJpROi0/R3/2efgKkyXqnXwyP1KQ2U0SfFRgdizOdWfvrrvJg1LuOoxs7GQhmxJlq23IpQ/BkByg== +parse-url@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/parse-url/-/parse-url-6.0.0.tgz#f5dd262a7de9ec00914939220410b66cff09107d" + integrity sha512-cYyojeX7yIIwuJzledIHeLUBVJ6COVLeT4eF+2P6aKVzwvgKQPndCBv3+yQ7pcWjqToYwaligxzSYNNmGoMAvw== dependencies: is-ssh "^1.3.0" - normalize-url "^3.3.0" + normalize-url "^6.1.0" parse-path "^4.0.0" protocols "^1.4.0" -parse5@5.1.1: - version "5.1.1" - resolved "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178" - integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug== - parse5@6.0.1: version "6.0.1" resolved "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" @@ -18792,9 +18037,9 @@ passport-microsoft@^0.1.0: pkginfo "0.2.x" passport-oauth1@1.x.x: - version "1.1.0" - resolved "https://registry.npmjs.org/passport-oauth1/-/passport-oauth1-1.1.0.tgz#a7de988a211f9cf4687377130ea74df32730c918" - integrity sha1-p96YiiEfnPRoc3cTDqdN8ycwyRg= + version "1.2.0" + resolved "https://registry.npmjs.org/passport-oauth1/-/passport-oauth1-1.2.0.tgz#5229d431781bf5b265bec86ce9a9cce58a756cf9" + integrity sha512-Sv2YWodC6jN12M/OXwmR4BIXeeIHjjbwYTQw4kS6tHK4zYzSEpxBgSJJnknBjICA5cj0ju3FSnG1XmHgIhYnLg== dependencies: oauth "0.9.x" passport-strategy "1.x.x" @@ -18995,9 +18240,9 @@ pause@0.0.1: integrity sha1-HUCLP9t2kjuVQ9lvtMnf1TXZy10= pbkdf2@^3.0.3: - version "3.0.17" - resolved "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" - integrity sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA== + version "3.1.2" + resolved "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" + integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== dependencies: create-hash "^1.1.2" create-hmac "^1.1.4" @@ -19005,10 +18250,10 @@ pbkdf2@^3.0.3: safe-buffer "^5.0.1" sha.js "^2.4.8" -peek-readable@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/peek-readable/-/peek-readable-4.0.1.tgz#9a045f291db254111c3412c1ce4fec27ddd4d202" - integrity sha512-7qmhptnR0WMSpxT5rMHG9bW/mYSR1uqaPFj2MHvT+y/aOUu6msJijpKt5SkTDKySwg65OWG2JwTMBlgcbwMHrQ== +peek-readable@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/peek-readable/-/peek-readable-4.1.0.tgz#4ece1111bf5c2ad8867c314c81356847e8a62e72" + integrity sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg== pend@~1.2.0: version "1.2.0" @@ -19065,11 +18310,11 @@ pg@^8.3.0, pg@^8.4.0: pgpass "1.x" pgpass@1.x: - version "1.0.2" - resolved "https://registry.npmjs.org/pgpass/-/pgpass-1.0.2.tgz#2a7bb41b6065b67907e91da1b07c1847c877b306" - integrity sha1-Knu0G2BltnkH6R2hsHwYR8h3swY= + version "1.0.5" + resolved "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz#9b873e4a564bb10fa7a7dbd55312728d422a223d" + integrity sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug== dependencies: - split "^1.0.0" + split2 "^4.1.0" pgtools@^0.3.0: version "0.3.2" @@ -19087,9 +18332,9 @@ picocolors@^1.0.0: integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3: - version "2.3.0" - resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" - integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== + version "2.3.1" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== pify@^2.0.0, pify@^2.2.0, pify@^2.3.0: version "2.3.0" @@ -19155,12 +18400,10 @@ pino@^5.12.2: quick-format-unescaped "^3.0.3" sonic-boom "^0.7.5" -pirates@^4.0.0, pirates@^4.0.1: - 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.1, pirates@^4.0.5: + version "4.0.5" + resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" + integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== pkg-dir@4.2.0, pkg-dir@^4.2.0: version "4.2.0" @@ -19169,13 +18412,6 @@ pkg-dir@4.2.0, pkg-dir@^4.2.0: dependencies: find-up "^4.0.0" -pkg-dir@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" - integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= - dependencies: - find-up "^2.1.0" - pkg-dir@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" @@ -19219,109 +18455,107 @@ posix-character-classes@^0.1.0: resolved "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= -postcss-calc@^8.0.0: - version "8.0.0" - resolved "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.0.0.tgz#a05b87aacd132740a5db09462a3612453e5df90a" - integrity sha512-5NglwDrcbiy8XXfPM11F3HeC6hoT9W7GUH/Zi5U/p7u3Irv4rHhdDcIZwG0llHXV4ftsBjpfWMXAnXNl4lnt8g== +postcss-calc@^8.2.0: + version "8.2.4" + resolved "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz#77b9c29bfcbe8a07ff6693dc87050828889739a5" + integrity sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q== dependencies: - postcss-selector-parser "^6.0.2" - postcss-value-parser "^4.0.2" + postcss-selector-parser "^6.0.9" + postcss-value-parser "^4.2.0" -postcss-colormin@^5.2.1: - version "5.2.1" - resolved "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.2.1.tgz#6e444a806fd3c578827dbad022762df19334414d" - integrity sha512-VVwMrEYLcHYePUYV99Ymuoi7WhKrMGy/V9/kTS0DkCoJYmmjdOMneyhzYUxcNgteKDVbrewOkSM7Wje/MFwxzA== +postcss-colormin@^5.2.5: + version "5.2.5" + resolved "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.2.5.tgz#d1fc269ac2ad03fe641d462b5d1dada35c69968a" + integrity sha512-+X30aDaGYq81mFqwyPpnYInsZQnNpdxMX0ajlY7AExCexEFkPVV+KrO7kXwayqEWL2xwEbNQ4nUO0ZsRWGnevg== dependencies: browserslist "^4.16.6" caniuse-api "^3.0.0" colord "^2.9.1" - postcss-value-parser "^4.1.0" + postcss-value-parser "^4.2.0" -postcss-convert-values@^5.0.2: - version "5.0.2" - resolved "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.0.2.tgz#879b849dc3677c7d6bc94b6a2c1a3f0808798059" - integrity sha512-KQ04E2yadmfa1LqXm7UIDwW1ftxU/QWZmz6NKnHnUvJ3LEYbbcX6i329f/ig+WnEByHegulocXrECaZGLpL8Zg== +postcss-convert-values@^5.0.4: + version "5.0.4" + resolved "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.0.4.tgz#3e74dd97c581f475ae7b4500bc0a7c4fb3a6b1b6" + integrity sha512-bugzSAyjIexdObovsPZu/sBCTHccImJxLyFgeV0MmNBm/Lw5h5XnjfML6gzEmJ3A6nyfCW7hb1JXzcsA4Zfbdw== dependencies: - postcss-value-parser "^4.1.0" + postcss-value-parser "^4.2.0" -postcss-discard-comments@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.0.1.tgz#9eae4b747cf760d31f2447c27f0619d5718901fe" - integrity sha512-lgZBPTDvWrbAYY1v5GYEv8fEO/WhKOu/hmZqmCYfrpD6eyDWWzAOsl2rF29lpvziKO02Gc5GJQtlpkTmakwOWg== +postcss-discard-comments@^5.0.3: + version "5.0.3" + resolved "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.0.3.tgz#011acb63418d600fdbe18804e1bbecb543ad2f87" + integrity sha512-6W5BemziRoqIdAKT+1QjM4bNcJAQ7z7zk073730NHg4cUXh3/rQHHj7pmYxUB9aGhuRhBiUf0pXvIHkRwhQP0Q== -postcss-discard-duplicates@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.0.1.tgz#68f7cc6458fe6bab2e46c9f55ae52869f680e66d" - integrity sha512-svx747PWHKOGpAXXQkCc4k/DsWo+6bc5LsVrAsw+OU+Ibi7klFZCyX54gjYzX4TH+f2uzXjRviLARxkMurA2bA== +postcss-discard-duplicates@^5.0.3: + version "5.0.3" + resolved "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.0.3.tgz#10f202a4cfe9d407b73dfea7a477054d21ea0c1f" + integrity sha512-vPtm1Mf+kp7iAENTG7jI1MN1lk+fBqL5y+qxyi4v3H+lzsXEdfS3dwUZD45KVhgzDEgduur8ycB4hMegyMTeRw== -postcss-discard-empty@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.0.1.tgz#ee136c39e27d5d2ed4da0ee5ed02bc8a9f8bf6d8" - integrity sha512-vfU8CxAQ6YpMxV2SvMcMIyF2LX1ZzWpy0lqHDsOdaKKLQVQGVP1pzhrI9JlsO65s66uQTfkQBKBD/A5gp9STFw== +postcss-discard-empty@^5.0.3: + version "5.0.3" + resolved "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.0.3.tgz#ec185af4a3710b88933b0ff751aa157b6041dd6a" + integrity sha512-xGJugpaXKakwKI7sSdZjUuN4V3zSzb2Y0LOlmTajFbNinEjTfVs9PFW2lmKBaC/E64WwYppfqLD03P8l9BuueA== -postcss-discard-overridden@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.0.1.tgz#454b41f707300b98109a75005ca4ab0ff2743ac6" - integrity sha512-Y28H7y93L2BpJhrdUR2SR2fnSsT+3TVx1NmVQLbcnZWwIUpJ7mfcTC6Za9M2PG6w8j7UQRfzxqn8jU2VwFxo3Q== +postcss-discard-overridden@^5.0.4: + version "5.0.4" + resolved "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.0.4.tgz#cc999d6caf18ea16eff8b2b58f48ec3ddee35c9c" + integrity sha512-3j9QH0Qh1KkdxwiZOW82cId7zdwXVQv/gRXYDnwx5pBtR1sTkU4cXRK9lp5dSdiM0r0OICO/L8J6sV1/7m0kHg== postcss-load-config@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.0.1.tgz#d214bf9cfec1608ffaf0f4161b3ba20664ab64b9" - integrity sha512-/pDHe30UYZUD11IeG8GWx9lNtu1ToyTsZHnyy45B4Mrwr/Kb6NgYl7k753+05CJNKnjbwh4975amoPJ+TEjHNQ== + version "3.1.3" + resolved "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.3.tgz#21935b2c43b9a86e6581a576ca7ee1bde2bd1d23" + integrity sha512-5EYgaM9auHGtO//ljHH+v/aC/TQ5LHXtL7bQajNAUBKUVKiYE8rYpFms7+V26D9FncaGe2zwCoPQsFKb5zF/Hw== dependencies: - cosmiconfig "^7.0.0" - import-cwd "^3.0.0" + lilconfig "^2.0.4" + yaml "^1.10.2" -postcss-merge-longhand@^5.0.4: - version "5.0.4" - resolved "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.0.4.tgz#41f4f3270282ea1a145ece078b7679f0cef21c32" - integrity sha512-2lZrOVD+d81aoYkZDpWu6+3dTAAGkCKbV5DoRhnIR7KOULVrI/R7bcMjhrH9KTRy6iiHKqmtG+n/MMj1WmqHFw== +postcss-merge-longhand@^5.0.6: + version "5.0.6" + resolved "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.0.6.tgz#090e60d5d3b3caad899f8774f8dccb33217d2166" + integrity sha512-rkmoPwQO6ymJSmWsX6l2hHeEBQa7C4kJb9jyi5fZB1sE8nSCv7sqchoYPixRwX/yvLoZP2y6FA5kcjiByeJqDg== dependencies: - postcss-value-parser "^4.1.0" - stylehacks "^5.0.1" + postcss-value-parser "^4.2.0" + stylehacks "^5.0.3" -postcss-merge-rules@^5.0.3: - version "5.0.3" - resolved "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.0.3.tgz#b5cae31f53129812a77e3eb1eeee448f8cf1a1db" - integrity sha512-cEKTMEbWazVa5NXd8deLdCnXl+6cYG7m2am+1HzqH0EnTdy8fRysatkaXb2dEnR+fdaDxTvuZ5zoBdv6efF6hg== +postcss-merge-rules@^5.0.6: + version "5.0.6" + resolved "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.0.6.tgz#26b37411fe1e80202fcef61cab027265b8925f2b" + integrity sha512-nzJWJ9yXWp8AOEpn/HFAW72WKVGD2bsLiAmgw4hDchSij27bt6TF+sIK0cJUBAYT3SGcjtGGsOR89bwkkMuMgQ== dependencies: browserslist "^4.16.6" caniuse-api "^3.0.0" - cssnano-utils "^2.0.1" + cssnano-utils "^3.0.2" postcss-selector-parser "^6.0.5" -postcss-minify-font-values@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.0.1.tgz#a90cefbfdaa075bd3dbaa1b33588bb4dc268addf" - integrity sha512-7JS4qIsnqaxk+FXY1E8dHBDmraYFWmuL6cgt0T1SWGRO5bzJf8sUoelwa4P88LEWJZweHevAiDKxHlofuvtIoA== +postcss-minify-font-values@^5.0.4: + version "5.0.4" + resolved "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.0.4.tgz#627d824406b0712243221891f40a44fffe1467fd" + integrity sha512-RN6q3tyuEesvyCYYFCRGJ41J1XFvgV+dvYGHr0CeHv8F00yILlN8Slf4t8XW4IghlfZYCeyRrANO6HpJ948ieA== dependencies: - postcss-value-parser "^4.1.0" + postcss-value-parser "^4.2.0" -postcss-minify-gradients@^5.0.3: - version "5.0.3" - resolved "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.0.3.tgz#f970a11cc71e08e9095e78ec3a6b34b91c19550e" - integrity sha512-Z91Ol22nB6XJW+5oe31+YxRsYooxOdFKcbOqY/V8Fxse1Y3vqlNRpi1cxCqoACZTQEhl+xvt4hsbWiV5R+XI9Q== +postcss-minify-gradients@^5.0.6: + version "5.0.6" + resolved "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.0.6.tgz#b07cef51a93f075e94053fd972ff1cba2eaf6503" + integrity sha512-E/dT6oVxB9nLGUTiY/rG5dX9taugv9cbLNTFad3dKxOO+BQg25Q/xo2z2ddG+ZB1CbkZYaVwx5blY8VC7R/43A== dependencies: colord "^2.9.1" - cssnano-utils "^2.0.1" - postcss-value-parser "^4.1.0" + cssnano-utils "^3.0.2" + postcss-value-parser "^4.2.0" -postcss-minify-params@^5.0.2: - version "5.0.2" - resolved "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.0.2.tgz#1b644da903473fbbb18fbe07b8e239883684b85c" - integrity sha512-qJAPuBzxO1yhLad7h2Dzk/F7n1vPyfHfCCh5grjGfjhi1ttCnq4ZXGIW77GSrEbh9Hus9Lc/e/+tB4vh3/GpDg== +postcss-minify-params@^5.0.5: + version "5.0.5" + resolved "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.0.5.tgz#86cb624358cd45c21946f8c317893f0449396646" + integrity sha512-YBNuq3Rz5LfLFNHb9wrvm6t859b8qIqfXsWeK7wROm3jSKNpO1Y5e8cOyBv6Acji15TgSrAwb3JkVNCqNyLvBg== dependencies: - alphanum-sort "^1.0.2" browserslist "^4.16.6" - cssnano-utils "^2.0.1" - postcss-value-parser "^4.1.0" + cssnano-utils "^3.0.2" + postcss-value-parser "^4.2.0" -postcss-minify-selectors@^5.1.0: - version "5.1.0" - resolved "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.1.0.tgz#4385c845d3979ff160291774523ffa54eafd5a54" - integrity sha512-NzGBXDa7aPsAcijXZeagnJBKBPMYLaJJzB8CQh6ncvyl2sIndLVWfbcDi0SBjRWk5VqEjXvf8tYwzoKf4Z07og== +postcss-minify-selectors@^5.1.3: + version "5.1.3" + resolved "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.1.3.tgz#6ac12d52aa661fd509469d87ab2cebb0a1e3a1b5" + integrity sha512-9RJfTiQEKA/kZhMaEXND893nBqmYQ8qYa/G+uPdVnXF6D/FzpfI6kwBtWEcHx5FqDbA79O9n6fQJfrIj6M8jvQ== dependencies: - alphanum-sort "^1.0.2" postcss-selector-parser "^6.0.5" postcss-modules-extract-imports@^3.0.0: @@ -19353,11 +18587,11 @@ postcss-modules-values@^4.0.0: icss-utils "^5.0.0" postcss-modules@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/postcss-modules/-/postcss-modules-4.0.0.tgz#2bc7f276ab88f3f1b0fadf6cbd7772d43b5f3b9b" - integrity sha512-ghS/ovDzDqARm4Zj6L2ntadjyQMoyJmi0JkLlYtH2QFLrvNlxH5OAVRPWPeKilB0pY7SbuhO173KOWkPAxRJcw== + version "4.3.0" + resolved "https://registry.npmjs.org/postcss-modules/-/postcss-modules-4.3.0.tgz#1cb32f16a8cfffe2b989598f8135eb6427106ec7" + integrity sha512-zoUttLDSsbWDinJM9jH37o7hulLRyEgH6fZm2PchxN7AZ8rkdWiALyNhnQ7+jg7cX9f10m6y5VhHsrjO0Mf/DA== dependencies: - generic-names "^2.0.1" + generic-names "^4.0.0" icss-replace-symbols "^1.1.0" lodash.camelcase "^4.3.0" postcss-modules-extract-imports "^3.0.0" @@ -19366,129 +18600,113 @@ postcss-modules@^4.0.0: postcss-modules-values "^4.0.0" string-hash "^1.1.1" -postcss-normalize-charset@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.0.1.tgz#121559d1bebc55ac8d24af37f67bd4da9efd91d0" - integrity sha512-6J40l6LNYnBdPSk+BHZ8SF+HAkS4q2twe5jnocgd+xWpz/mx/5Sa32m3W1AA8uE8XaXN+eg8trIlfu8V9x61eg== - -postcss-normalize-display-values@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.0.1.tgz#62650b965981a955dffee83363453db82f6ad1fd" - integrity sha512-uupdvWk88kLDXi5HEyI9IaAJTE3/Djbcrqq8YgjvAVuzgVuqIk3SuJWUisT2gaJbZm1H9g5k2w1xXilM3x8DjQ== - dependencies: - cssnano-utils "^2.0.1" - postcss-value-parser "^4.1.0" - -postcss-normalize-positions@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.0.1.tgz#868f6af1795fdfa86fbbe960dceb47e5f9492fe5" - integrity sha512-rvzWAJai5xej9yWqlCb1OWLd9JjW2Ex2BCPzUJrbaXmtKtgfL8dBMOOMTX6TnvQMtjk3ei1Lswcs78qKO1Skrg== - dependencies: - postcss-value-parser "^4.1.0" - -postcss-normalize-repeat-style@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.0.1.tgz#cbc0de1383b57f5bb61ddd6a84653b5e8665b2b5" - integrity sha512-syZ2itq0HTQjj4QtXZOeefomckiV5TaUO6ReIEabCh3wgDs4Mr01pkif0MeVwKyU/LHEkPJnpwFKRxqWA/7O3w== - dependencies: - cssnano-utils "^2.0.1" - postcss-value-parser "^4.1.0" - -postcss-normalize-string@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.0.1.tgz#d9eafaa4df78c7a3b973ae346ef0e47c554985b0" - integrity sha512-Ic8GaQ3jPMVl1OEn2U//2pm93AXUcF3wz+OriskdZ1AOuYV25OdgS7w9Xu2LO5cGyhHCgn8dMXh9bO7vi3i9pA== - dependencies: - postcss-value-parser "^4.1.0" - -postcss-normalize-timing-functions@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.0.1.tgz#8ee41103b9130429c6cbba736932b75c5e2cb08c" - integrity sha512-cPcBdVN5OsWCNEo5hiXfLUnXfTGtSFiBU9SK8k7ii8UD7OLuznzgNRYkLZow11BkQiiqMcgPyh4ZqXEEUrtQ1Q== - dependencies: - cssnano-utils "^2.0.1" - postcss-value-parser "^4.1.0" - -postcss-normalize-unicode@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.0.1.tgz#82d672d648a411814aa5bf3ae565379ccd9f5e37" - integrity sha512-kAtYD6V3pK0beqrU90gpCQB7g6AOfP/2KIPCVBKJM2EheVsBQmx/Iof+9zR9NFKLAx4Pr9mDhogB27pmn354nA== - dependencies: - browserslist "^4.16.0" - postcss-value-parser "^4.1.0" - -postcss-normalize-url@^5.0.3: +postcss-normalize-charset@^5.0.3: version "5.0.3" - resolved "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.0.3.tgz#42eca6ede57fe69075fab0f88ac8e48916ef931c" - integrity sha512-qWiUMbvkRx3kc1Dp5opzUwc7MBWZcSDK2yofCmdvFBCpx+zFPkxBC1FASQ59Pt+flYfj/nTZSkmF56+XG5elSg== + resolved "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.0.3.tgz#719fb9f9ca9835fcbd4fed8d6e0d72a79e7b5472" + integrity sha512-iKEplDBco9EfH7sx4ut7R2r/dwTnUqyfACf62Unc9UiyFuI7uUqZZtY+u+qp7g8Qszl/U28HIfcsI3pEABWFfA== + +postcss-normalize-display-values@^5.0.3: + version "5.0.3" + resolved "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.0.3.tgz#94cc82e20c51cc4ffba6b36e9618adc1e50db8c1" + integrity sha512-FIV5FY/qs4Ja32jiDb5mVj5iWBlS3N8tFcw2yg98+8MkRgyhtnBgSC0lxU+16AMHbjX5fbSJgw5AXLMolonuRQ== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-positions@^5.0.4: + version "5.0.4" + resolved "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.0.4.tgz#4001f38c99675437b83277836fb4291887fcc6cc" + integrity sha512-qynirjBX0Lc73ROomZE3lzzmXXTu48/QiEzKgMeqh28+MfuHLsuqC9po4kj84igZqqFGovz8F8hf44hA3dPYmQ== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-repeat-style@^5.0.4: + version "5.0.4" + resolved "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.0.4.tgz#d005adf9ee45fae78b673031a376c0c871315145" + integrity sha512-Innt+wctD7YpfeDR7r5Ik6krdyppyAg2HBRpX88fo5AYzC1Ut/l3xaxACG0KsbX49cO2n5EB13clPwuYVt8cMA== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-string@^5.0.4: + version "5.0.4" + resolved "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.0.4.tgz#b5e00a07597e7aa8a871817bfeac2bfaa59c3333" + integrity sha512-Dfk42l0+A1CDnVpgE606ENvdmksttLynEqTQf5FL3XGQOyqxjbo25+pglCUvziicTxjtI2NLUR6KkxyUWEVubQ== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-timing-functions@^5.0.3: + version "5.0.3" + resolved "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.0.3.tgz#47210227bfcba5e52650d7a18654337090de7072" + integrity sha512-QRfjvFh11moN4PYnJ7hia4uJXeFotyK3t2jjg8lM9mswleGsNw2Lm3I5wO+l4k1FzK96EFwEVn8X8Ojrp2gP4g== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-unicode@^5.0.4: + version "5.0.4" + resolved "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.0.4.tgz#02866096937005cdb2c17116c690f29505a1623d" + integrity sha512-W79Regn+a+eXTzB+oV/8XJ33s3pDyFTND2yDuUCo0Xa3QSy1HtNIfRVPXNubHxjhlqmMFADr3FSCHT84ITW3ig== + dependencies: + browserslist "^4.16.6" + postcss-value-parser "^4.2.0" + +postcss-normalize-url@^5.0.5: + version "5.0.5" + resolved "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.0.5.tgz#c39efc12ff119f6f45f0b4f516902b12c8080e3a" + integrity sha512-Ws3tX+PcekYlXh+ycAt0wyzqGthkvVtZ9SZLutMVvHARxcpu4o7vvXcNoiNKyjKuWecnjS6HDI3fjBuDr5MQxQ== dependencies: - is-absolute-url "^3.0.3" normalize-url "^6.0.1" - postcss-value-parser "^4.1.0" + postcss-value-parser "^4.2.0" -postcss-normalize-whitespace@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.0.1.tgz#b0b40b5bcac83585ff07ead2daf2dcfbeeef8e9a" - integrity sha512-iPklmI5SBnRvwceb/XH568yyzK0qRVuAG+a1HFUsFRf11lEJTiQQa03a4RSCQvLKdcpX7XsI1Gen9LuLoqwiqA== +postcss-normalize-whitespace@^5.0.4: + version "5.0.4" + resolved "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.0.4.tgz#1d477e7da23fecef91fc4e37d462272c7b55c5ca" + integrity sha512-wsnuHolYZjMwWZJoTC9jeI2AcjA67v4UuidDrPN9RnX8KIZfE+r2Nd6XZRwHVwUiHmRvKQtxiqo64K+h8/imaw== dependencies: - postcss-value-parser "^4.1.0" + postcss-value-parser "^4.2.0" -postcss-ordered-values@^5.0.2: - version "5.0.2" - resolved "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.0.2.tgz#1f351426977be00e0f765b3164ad753dac8ed044" - integrity sha512-8AFYDSOYWebJYLyJi3fyjl6CqMEG/UVworjiyK1r573I56kb3e879sCJLGvR3merj+fAdPpVplXKQZv+ey6CgQ== +postcss-ordered-values@^5.0.5: + version "5.0.5" + resolved "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.0.5.tgz#e878af822a130c3f3709737e24cb815ca7c6d040" + integrity sha512-mfY7lXpq+8bDEHfP+muqibDPhZ5eP9zgBEF9XRvoQgXcQe2Db3G1wcvjbnfjXG6wYsl+0UIjikqq4ym1V2jGMQ== dependencies: - cssnano-utils "^2.0.1" - postcss-value-parser "^4.1.0" + cssnano-utils "^3.0.2" + postcss-value-parser "^4.2.0" -postcss-reduce-initial@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.0.1.tgz#9d6369865b0f6f6f6b165a0ef5dc1a4856c7e946" - integrity sha512-zlCZPKLLTMAqA3ZWH57HlbCjkD55LX9dsRyxlls+wfuRfqCi5mSlZVan0heX5cHr154Dq9AfbH70LyhrSAezJw== +postcss-reduce-initial@^5.0.3: + version "5.0.3" + resolved "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.0.3.tgz#68891594defd648253703bbd8f1093162f19568d" + integrity sha512-c88TkSnQ/Dnwgb4OZbKPOBbCaauwEjbECP5uAuFPOzQ+XdjNjRH7SG0dteXrpp1LlIFEKK76iUGgmw2V0xeieA== dependencies: - browserslist "^4.16.0" + browserslist "^4.16.6" caniuse-api "^3.0.0" -postcss-reduce-transforms@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.0.1.tgz#93c12f6a159474aa711d5269923e2383cedcf640" - integrity sha512-a//FjoPeFkRuAguPscTVmRQUODP+f3ke2HqFNgGPwdYnpeC29RZdCBvGRGTsKpMURb/I3p6jdKoBQ2zI+9Q7kA== +postcss-reduce-transforms@^5.0.4: + version "5.0.4" + resolved "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.0.4.tgz#717e72d30befe857f7d2784dba10eb1157863712" + integrity sha512-VIJB9SFSaL8B/B7AXb7KHL6/GNNbbCHslgdzS9UDfBZYIA2nx8NLY7iD/BXFSO/1sRUILzBTfHCoW5inP37C5g== dependencies: - cssnano-utils "^2.0.1" - postcss-value-parser "^4.1.0" + postcss-value-parser "^4.2.0" -postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4: - version "6.0.4" - resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz#56075a1380a04604c38b063ea7767a129af5c2b3" - integrity sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw== - dependencies: - cssesc "^3.0.0" - indexes-of "^1.0.1" - uniq "^1.0.1" - util-deprecate "^1.0.2" - -postcss-selector-parser@^6.0.5: - version "6.0.6" - resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz#2c5bba8174ac2f6981ab631a42ab0ee54af332ea" - integrity sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg== +postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9: + version "6.0.9" + resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.9.tgz#ee71c3b9ff63d9cd130838876c13a2ec1a992b2f" + integrity sha512-UO3SgnZOVTwu4kyLR22UQ1xZh086RyNZppb7lLAKBFK8a32ttG5i87Y/P3+2bRSjZNyJ1B7hfFNo273tKe9YxQ== dependencies: cssesc "^3.0.0" util-deprecate "^1.0.2" -postcss-svgo@^5.0.3: - version "5.0.3" - resolved "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.0.3.tgz#d945185756e5dfaae07f9edb0d3cae7ff79f9b30" - integrity sha512-41XZUA1wNDAZrQ3XgWREL/M2zSw8LJPvb5ZWivljBsUQAGoEKMYm6okHsTjJxKYI4M75RQEH4KYlEM52VwdXVA== +postcss-svgo@^5.0.4: + version "5.0.4" + resolved "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.0.4.tgz#cfa8682f47b88f7cd75108ec499e133b43102abf" + integrity sha512-yDKHvULbnZtIrRqhZoA+rxreWpee28JSRH/gy9727u0UCgtpv1M/9WEWY3xySlFa0zQJcqf6oCBJPR5NwkmYpg== dependencies: - postcss-value-parser "^4.1.0" + postcss-value-parser "^4.2.0" svgo "^2.7.0" -postcss-unique-selectors@^5.0.2: - version "5.0.2" - resolved "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.0.2.tgz#5d6893daf534ae52626708e0d62250890108c0c1" - integrity sha512-w3zBVlrtZm7loQWRPVC0yjUwwpty7OM6DnEHkxcSQXO1bMS3RJ+JUS5LFMSDZHJcvGsRwhZinCWVqn8Kej4EDA== +postcss-unique-selectors@^5.0.4: + version "5.0.4" + resolved "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.0.4.tgz#08e188126b634ddfa615fb1d6c262bafdd64826e" + integrity sha512-5ampwoSDJCxDPoANBIlMgoBcYUHnhaiuLYJR5pj1DLnYQvMRVyFuTA5C3Bvt+aHtiqWpJkD/lXT50Vo1D0ZsAQ== dependencies: - alphanum-sort "^1.0.2" postcss-selector-parser "^6.0.5" postcss-value-parser@^3.3.0: @@ -19496,7 +18714,7 @@ postcss-value-parser@^3.3.0: resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== -postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: +postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: version "4.2.0" resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== @@ -19521,9 +18739,9 @@ postgres-bytea@~1.0.0: integrity sha1-AntTPAqokOJtFy1Hz5zOzFIazTU= postgres-date@~1.0.4: - version "1.0.5" - resolved "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.5.tgz#710b27de5f27d550f6e80b5d34f7ba189213c2ee" - integrity sha512-pdau6GRPERdAYUQwkBnGKxEfPyhVZXG/JiS44iZWiNdSOWE09N2lUgN6yshuq6fVSon4Pm0VMXd1srUUkLe9iA== + version "1.0.7" + resolved "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz#51bc086006005e5061c591cee727f2531bf641a8" + integrity sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q== postgres-interval@^1.1.0: version "1.2.0" @@ -19595,20 +18813,19 @@ pretty-format@^26.0.0, pretty-format@^26.6.2: ansi-styles "^4.0.0" react-is "^17.0.1" -pretty-format@^27.0.2: - version "27.3.1" - resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-27.3.1.tgz#7e9486365ccdd4a502061fa761d3ab9ca1b78df5" - integrity sha512-DR/c+pvFc52nLimLROYjnXPtolawm+uWDxr4FjuLDLUn+ktWnSN851KoHwHzzqq6rfCOjkzN8FLgDrSub6UDuA== +pretty-format@^27.0.0, pretty-format@^27.0.2, pretty-format@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" + integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== dependencies: - "@jest/types" "^27.2.5" ansi-regex "^5.0.1" ansi-styles "^5.0.0" react-is "^17.0.1" -printj@~1.1.0: - version "1.1.2" - resolved "https://registry.npmjs.org/printj/-/printj-1.1.2.tgz#d90deb2975a8b9f600fb3a1c94e3f4c53c78a222" - integrity sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ== +printj@~1.3.1: + version "1.3.1" + resolved "https://registry.npmjs.org/printj/-/printj-1.3.1.tgz#9af6b1d55647a1587ac44f4c1654a4b95b8e12cb" + integrity sha512-GA3TdL8szPK4AQ2YnOe/b+Y1jUFwmmGMMK/qbY7VcE3Z7FU8JstbKiKRzO6CIiAKPhTO8m01NoQ0V5f3jc4OGg== prismjs@^1.25.0: version "1.26.0" @@ -19620,11 +18837,6 @@ prismjs@~1.25.0: resolved "https://registry.npmjs.org/prismjs/-/prismjs-1.25.0.tgz#6f822df1bdad965734b310b315a23315cf999756" integrity sha512-WCjJHl1KEWbnkQom1+SzftbtXMKQoezOCYs5rECqMN+jP+apI7ftoflyqigqzopSO3hMhTEb0mFClA8lkolgEg== -private@^0.1.8: - version "0.1.8" - resolved "https://registry.npmjs.org/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" - integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== - proc-log@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/proc-log/-/proc-log-1.0.0.tgz#0d927307401f69ed79341e83a0b2c9a13395eb77" @@ -19719,9 +18931,9 @@ properties-reader@^2.2.0: mkdirp "^1.0.4" property-expr@^2.0.4: - version "2.0.4" - resolved "https://registry.npmjs.org/property-expr/-/property-expr-2.0.4.tgz#37b925478e58965031bb612ec5b3260f8241e910" - integrity sha512-sFPkHQjVKheDNnPvotjQmm3KD3uk1fWKUN7CrpdbwmUx3CrG3QiM8QpTSimvig5vTXmTvjz7+TDvXOI9+4rkcg== + version "2.0.5" + resolved "https://registry.npmjs.org/property-expr/-/property-expr-2.0.5.tgz#278bdb15308ae16af3e3b9640024524f4dc02cb4" + integrity sha512-IJUkICM5dP5znhCckHSv30Q4b5/JA5enCtkRHYaOVOAocnH/1BQEYTC5NMfT3AVl/iXKdr3aqQbQn9DxyWknwA== property-information@^5.0.0: version "5.6.0" @@ -19731,19 +18943,19 @@ property-information@^5.0.0: xtend "^4.0.0" property-information@^6.0.0: - version "6.0.1" - resolved "https://registry.npmjs.org/property-information/-/property-information-6.0.1.tgz#7c668d9f2b9cb63bc3e105d8b8dfee7221a17800" - integrity sha512-F4WUUAF7fMeF4/JUFHNBWDaKDXi2jbvqBW/y6o5wsf3j19wTZ7S60TmtB5HoBhtgw7NKQRMWuz5vk2PR0CygUg== + version "6.1.1" + resolved "https://registry.npmjs.org/property-information/-/property-information-6.1.1.tgz#5ca85510a3019726cb9afed4197b7b8ac5926a22" + integrity sha512-hrzC564QIl0r0vy4l6MvRLhafmUowhO/O3KgVSoXIbbA2Sz4j8HGpJc6T2cubRVwMwpdiG/vKGfhT4IixmKN9w== proto-list@~1.2.1: version "1.2.4" resolved "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk= -proto3-json-serializer@^0.1.5: - version "0.1.6" - resolved "https://registry.npmjs.org/proto3-json-serializer/-/proto3-json-serializer-0.1.6.tgz#67cf3b8d5f4c8bebfc410698ad3b1ed64da39c7b" - integrity sha512-tGbV6m6Kad8NqxMh5hw87euPS0YoZSAOIfvR01zYkQV8Gpx1V/8yU/0gCKCvfCkhAJsjvzzhnnsdQxA1w7PSog== +proto3-json-serializer@^0.1.8: + version "0.1.8" + resolved "https://registry.npmjs.org/proto3-json-serializer/-/proto3-json-serializer-0.1.8.tgz#f80f9afc1efe5ed9a9856bbbd17dc7cabd7ce9a3" + integrity sha512-ACilkB6s1U1gWnl5jtICpnDai4VCxmI9GFxuEaYdxtDG2oVI3sVFIUsvUZcQbJgtPM6p+zqKbjTKQZp6Y4FpQw== dependencies: protobufjs "^6.11.2" @@ -19767,9 +18979,9 @@ protobufjs@6.11.2, protobufjs@^6.10.0, protobufjs@^6.11.2, protobufjs@^6.8.6: long "^4.0.0" protocols@^1.1.0, protocols@^1.4.0: - version "1.4.7" - resolved "https://registry.npmjs.org/protocols/-/protocols-1.4.7.tgz#95f788a4f0e979b291ffefcf5636ad113d037d32" - integrity sha512-Fx65lf9/YDn3hUX08XUc0J8rSux36rEsyiv21ZGUC1mOyeM3lTRpZLcrm8aAolzS4itwVfm7TAPyxC2E5zd6xg== + version "1.4.8" + resolved "https://registry.npmjs.org/protocols/-/protocols-1.4.8.tgz#48eea2d8f58d9644a4a32caae5d5db290a075ce8" + integrity sha512-IgjKyaUSjsROSO8/D49Ab7hP8mJgTYcqApOqdPhLoPxAplXmkp+zRvsrSQjFn5by0rhm4VH0GAUELIPpx7B1yg== proxy-addr@~2.0.7: version "2.0.7" @@ -19818,11 +19030,6 @@ public-encrypt@^4.0.0: randombytes "^2.0.1" safe-buffer "^5.1.2" -puka@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/puka/-/puka-1.0.1.tgz#a2df782b7eb4cf9564e4c93a5da422de0dfacc02" - integrity sha512-ssjRZxBd7BT3dte1RR3VoeT2cT/ODH8x+h0rUF1rMqB0srHYf48stSDWfiYakTp5UBZMxroZhB2+ExLDHm7W3g== - pump@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" @@ -19863,22 +19070,22 @@ pupa@^2.1.1: escape-goat "^2.0.0" puppeteer@^13.1.1: - version "13.1.1" - resolved "https://registry.npmjs.org/puppeteer/-/puppeteer-13.1.1.tgz#63771eb744202aa91918c49123f846e1747da121" - integrity sha512-GwdFy1JQ43Hhxj6MraXme+XfCX2CKe18MuwToXTMEAk0txg6vUEgwqBnzErTTqDVZ7sWYrDtDaRCfD2y7ZwgGw== + version "13.3.2" + resolved "https://registry.npmjs.org/puppeteer/-/puppeteer-13.3.2.tgz#4ff1cf6e2009df29fd80038bc702dc067776f79d" + integrity sha512-TIt8/R0eaUwY1c0/O0sCJpSglvGEWVoWFfGZ2dNtxX3eHuBo1ln9abaWfxTjZfsrkYATLSs8oqEdRZpMNnCsvg== dependencies: - debug "4.3.2" - devtools-protocol "0.0.948846" + cross-fetch "3.1.5" + debug "4.3.3" + devtools-protocol "0.0.960912" extract-zip "2.0.1" https-proxy-agent "5.0.0" - node-fetch "2.6.5" pkg-dir "4.2.0" progress "2.0.3" proxy-from-env "1.1.0" rimraf "3.0.2" tar-fs "2.1.1" unbzip2-stream "1.4.3" - ws "8.2.3" + ws "8.5.0" q@^1.5.1: version "1.5.1" @@ -19890,10 +19097,10 @@ qs@6.9.3: resolved "https://registry.npmjs.org/qs/-/qs-6.9.3.tgz#bfadcd296c2d549f1dffa560619132c977f5008e" integrity sha512-EbZYNarm6138UKKq46tdx08Yo/q9ZhFoAXAI1meAFd2GtbRDhbZY2WQSICskT0c5q99aFzLG1D4nvTk9tqfXIw== -qs@6.9.6: - version "6.9.6" - resolved "https://registry.npmjs.org/qs/-/qs-6.9.6.tgz#26ed3c8243a431b2924aca84cc90471f35d5a0ee" - integrity sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ== +qs@6.9.7: + version "6.9.7" + resolved "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz#4610846871485e1e048f44ae3b94033f0e675afe" + integrity sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw== qs@^6.10.1, qs@^6.10.2, qs@^6.9.1, qs@^6.9.4, qs@^6.9.6: version "6.10.3" @@ -19903,14 +19110,24 @@ qs@^6.10.1, qs@^6.10.2, qs@^6.9.1, qs@^6.9.4, qs@^6.9.6: side-channel "^1.0.4" qs@~6.5.2: - version "6.5.2" - resolved "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" - integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== + version "6.5.3" + resolved "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" + integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== + +query-string@^6.13.8: + version "6.14.1" + resolved "https://registry.npmjs.org/query-string/-/query-string-6.14.1.tgz#7ac2dca46da7f309449ba0f86b1fd28255b0c86a" + integrity sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw== + dependencies: + decode-uri-component "^0.2.0" + filter-obj "^1.1.0" + split-on-first "^1.0.0" + strict-uri-encode "^2.0.0" query-string@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/query-string/-/query-string-7.0.0.tgz#aaad2c8d5c6a6d0c6afada877fecbd56af79e609" - integrity sha512-Iy7moLybliR5ZgrK/1R3vjrXq03S13Vz4Rbm5Jg3EFq1LUmQppto0qtXz4vqZ386MSRjZgnTSZ9QC+NZOSd/XA== + version "7.1.1" + resolved "https://registry.npmjs.org/query-string/-/query-string-7.1.1.tgz#754620669db978625a90f635f12617c271a088e1" + integrity sha512-MplouLRDHBZSG9z7fpuAAcI7aAYjDLhtsiVZsevsfaHWDS2IDdORKbSd1kWUA+V4zyva/HZoSfpwnYMMQDhb0w== dependencies: decode-uri-component "^0.2.0" filter-obj "^1.1.0" @@ -19932,6 +19149,11 @@ querystringify@^2.1.1: resolved "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + quick-format-unescaped@^3.0.3: version "3.0.3" resolved "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-3.0.3.tgz#fb3e468ac64c01d22305806c39f121ddac0d1fb9" @@ -19948,9 +19170,9 @@ quick-lru@^5.1.1: integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== raf-schd@^4.0.2: - version "4.0.2" - resolved "https://registry.npmjs.org/raf-schd/-/raf-schd-4.0.2.tgz#bd44c708188f2e84c810bf55fcea9231bcaed8a0" - integrity sha512-VhlMZmGy6A6hrkJWHLNTGl5gtgMUm+xfGza6wbwnE914yeQ5Ybm18vgM734RZhMgfw4tacUrWseGZlpUrrakEQ== + version "4.0.3" + resolved "https://registry.npmjs.org/raf-schd/-/raf-schd-4.0.3.tgz#5d6c34ef46f8b2a0e880a8fcdb743efc5bfdbc1a" + integrity sha512-tQkJl2GRWh83ui2DiPTJz9wEiMN20syf+5oKfB03yYP7ioZcJwsIK8FjrtLwH1m7C7e+Tt2yYBlrOpdT+dyeIQ== raf@^3.4.0: version "3.4.1" @@ -19959,16 +19181,11 @@ raf@^3.4.0: dependencies: performance-now "^2.1.0" -ramda@^0.27.1: +ramda@^0.27.1, ramda@~0.27.1: version "0.27.2" resolved "https://registry.npmjs.org/ramda/-/ramda-0.27.2.tgz#84463226f7f36dc33592f6f4ed6374c48306c3f1" integrity sha512-SbiLPU40JuJniHexQSAgad32hfwd+DRUdwF2PlVuI5RZD0/vahUco7R8vD86J/tcEKKF9vZrUVwgtmGCqlCKyA== -ramda@~0.27.1: - version "0.27.1" - resolved "https://registry.npmjs.org/ramda/-/ramda-0.27.1.tgz#66fc2df3ef873874ffc2da6aa8984658abacf5c9" - integrity sha512-PgIdVpn5y5Yns8vqb8FzBUEYn98V3xcPgawAkkgj0YJ0qDsnHCiNmZYfOGMgOvoB0eWFLpYbhxUR3mxfDIMvpw== - random-bytes@~1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz#4f68a1dc0ae58bd3fb95848c30324db75d64360b" @@ -19999,12 +19216,12 @@ range-parser@^1.2.1, range-parser@~1.2.1: resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== -raw-body@2.4.2, raw-body@^2.4.1: - version "2.4.2" - resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.4.2.tgz#baf3e9c21eebced59dd6533ac872b71f7b61cb32" - integrity sha512-RPMAFUJP19WIet/99ngh6Iv8fzAbqum4Li7AD6DtGaW2RpMB/11xDoalPiJMTbu6I3hkbMVkATvZrqb9EEqeeQ== +raw-body@2.4.3, raw-body@^2.4.1: + version "2.4.3" + resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.4.3.tgz#8f80305d11c2a0a545c2d9d89d7a0286fcead43c" + integrity sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g== dependencies: - bytes "3.1.1" + bytes "3.1.2" http-errors "1.8.1" iconv-lite "0.4.24" unpipe "1.0.0" @@ -20019,9 +19236,9 @@ rc-progress@3.2.4: rc-util "^5.16.1" rc-util@^5.16.1: - version "5.16.1" - resolved "https://registry.npmjs.org/rc-util/-/rc-util-5.16.1.tgz#374db7cb735512f05165ddc3d6b2c61c21b8b4e3" - integrity sha512-kSCyytvdb3aRxQacS/71ta6c+kBWvM1v8/2h9d/HaNWauc3qB8pLnF20PJ8NajkNN8gb+rR1l0eWO+D4Pz+LLQ== + version "5.18.1" + resolved "https://registry.npmjs.org/rc-util/-/rc-util-5.18.1.tgz#80bd1450b5254655d2fbea63e3d34f6871e9be79" + integrity sha512-24xaSrMZUEKh1+suDOtJWfPe9E6YrwryViZcoPO0miJTKzP4qhUlV5AAlKQ82AJilz/AOHfi3l6HoX8qa1ye8w== dependencies: "@babel/runtime" "^7.12.5" react-is "^16.12.0" @@ -20038,15 +19255,15 @@ rc@^1.2.8: strip-json-comments "~2.0.1" react-beautiful-dnd@^13.0.0: - version "13.0.0" - resolved "https://registry.npmjs.org/react-beautiful-dnd/-/react-beautiful-dnd-13.0.0.tgz#f70cc8ff82b84bc718f8af157c9f95757a6c3b40" - integrity sha512-87It8sN0ineoC3nBW0SbQuTFXM6bUqM62uJGY4BtTf0yzPl8/3+bHMWkgIe0Z6m8e+gJgjWxefGRVfpE3VcdEg== + version "13.1.0" + resolved "https://registry.npmjs.org/react-beautiful-dnd/-/react-beautiful-dnd-13.1.0.tgz#ec97c81093593526454b0de69852ae433783844d" + integrity sha512-aGvblPZTJowOWUNiwd6tNfEpgkX5OxmpqxHKNW/4VmvZTNTbeiq7bA3bn5T+QSF2uibXB0D1DmJsb1aC/+3cUA== dependencies: - "@babel/runtime" "^7.8.4" + "@babel/runtime" "^7.9.2" css-box-model "^1.2.0" memoize-one "^5.1.1" raf-schd "^4.0.2" - react-redux "^7.1.1" + react-redux "^7.2.0" redux "^4.0.4" use-memo-one "^1.1.1" @@ -20111,9 +19328,9 @@ react-double-scrollbar@0.0.15: integrity sha1-6RWrjLO5WYdwdfSUNt6/2wQoj+Q= react-error-boundary@^3.1.0: - version "3.1.3" - resolved "https://registry.npmjs.org/react-error-boundary/-/react-error-boundary-3.1.3.tgz#276bfa05de8ac17b863587c9e0647522c25e2a0b" - integrity sha512-A+F9HHy9fvt9t8SNDlonq01prnU8AmkjvGKV4kk8seB9kU3xMEO8J/PQlLVmoOIDODl5U2kufSBs4vrWIqhsAA== + version "3.1.4" + resolved "https://registry.npmjs.org/react-error-boundary/-/react-error-boundary-3.1.4.tgz#255db92b23197108757a888b01e5b729919abde0" + integrity sha512-uM9uPzZJTF6wRQORmSrvOIgt4lJ9MC1sNgEOj2XGsDTRE4kmpWxg7ENK9EWNKJRMAOY9z0MuF4yIfl6gp4sotA== dependencies: "@babel/runtime" "^7.12.5" @@ -20142,15 +19359,10 @@ react-helmet@6.1.0: react-fast-compare "^3.1.1" react-side-effect "^2.1.0" -react-hook-form@^7.12.2: - version "7.16.1" - resolved "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.16.1.tgz#669046df378a71949e5cf8a2398cbe20d5cb27bc" - integrity sha512-kcLDmSmlyLUFx2UU5bG/o4+3NeK753fhKodJa8gkplXohGkpAq0/p+TR24OWjZmkEc3ES7ppC5v5d6KUk+fJTA== - -react-hook-form@^7.13.0: - version "7.17.4" - resolved "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.17.4.tgz#232b6aaccddb91eb4a228ac20b154abd90866fdb" - integrity sha512-7XhbCr7d9fDC1TgcK/BUbt7D3q0VJMu7jPErfsa0JrxVjv/nni41xWdJcy0Zb7R+Np8OsCkQ2lMyloAtE3DLiQ== +react-hook-form@^7.12.2, react-hook-form@^7.13.0: + version "7.27.0" + resolved "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.27.0.tgz#2c05e54ca557f71c55f645311ff612ec936c6c7c" + integrity sha512-NEh3Qbz1Rg3w95SRZv0kHorHN3frtMKasplznMBr8RkFrE4pVxjd/zo3clnFXpD0FppUVHBMfsTMtTsa6wyQrA== react-hot-loader@^4.13.0: version "4.13.0" @@ -20192,7 +19404,7 @@ react-is@^16.10.2, react-is@^16.12.0, react-is@^16.13.1, react-is@^16.7.0, react resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== -"react-is@^16.8.0 || ^17.0.0", react-is@^17.0.0, react-is@^17.0.1: +"react-is@^16.8.0 || ^17.0.0", react-is@^17.0.0, react-is@^17.0.1, react-is@^17.0.2: version "17.0.2" resolved "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== @@ -20222,17 +19434,17 @@ react-markdown@^8.0.0: unist-util-visit "^4.0.0" vfile "^5.0.0" -react-redux@^7.1.1, react-redux@^7.2.4: - version "7.2.5" - resolved "https://registry.npmjs.org/react-redux/-/react-redux-7.2.5.tgz#213c1b05aa1187d9c940ddfc0b29450957f6a3b8" - integrity sha512-Dt29bNyBsbQaysp6s/dN0gUodcq+dVKKER8Qv82UrpeygwYeX1raTtil7O/fftw/rFqzaf6gJhDZRkkZnn6bjg== +react-redux@^7.2.0, react-redux@^7.2.4: + version "7.2.6" + resolved "https://registry.npmjs.org/react-redux/-/react-redux-7.2.6.tgz#49633a24fe552b5f9caf58feb8a138936ddfe9aa" + integrity sha512-10RPdsz0UUrRL1NZE0ejTkucnclYSgXp5q+tB5SWx2qeG2ZJQJyymgAhwKy73yiL/13btfB6fPr+rgbMAaZIAQ== dependencies: - "@babel/runtime" "^7.12.1" - "@types/react-redux" "^7.1.16" + "@babel/runtime" "^7.15.4" + "@types/react-redux" "^7.1.20" hoist-non-react-statics "^3.3.2" loose-envify "^1.4.0" prop-types "^15.7.2" - react-is "^16.13.1" + react-is "^17.0.2" react-resize-detector@^2.3.0: version "2.3.0" @@ -20276,14 +19488,14 @@ react-router@^6.0.0-beta.0: history "^5.2.0" react-side-effect@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/react-side-effect/-/react-side-effect-2.1.0.tgz#1ce4a8b4445168c487ed24dab886421f74d380d3" - integrity sha512-IgmcegOSi5SNX+2Snh1vqmF0Vg/CbkycU9XZbOHJlZ6kMzTmi3yc254oB1WCkgA7OQtIAoLmcSFuHTc/tlcqXg== + version "2.1.1" + resolved "https://registry.npmjs.org/react-side-effect/-/react-side-effect-2.1.1.tgz#66c5701c3e7560ab4822a4ee2742dee215d72eb3" + integrity sha512-2FoTQzRNTncBVtnzxFOk2mCpcfxQpenBMbk5kSVBg5UcPqV9fRbgY2zhb7GTWWOlpFmAxhClBDlIq8Rsubz1yQ== react-smooth@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/react-smooth/-/react-smooth-1.0.5.tgz#94ae161d7951cdd893ccb7099d031d342cb762ad" - integrity sha512-eW057HT0lFgCKh8ilr0y2JaH2YbNcuEdFpxyg7Gf/qDKk9hqGMyXryZJ8iMGJEuKH0+wxS0ccSsBBB3W8yCn8w== + version "1.0.6" + resolved "https://registry.npmjs.org/react-smooth/-/react-smooth-1.0.6.tgz#18b964f123f7bca099e078324338cd8739346d0a" + integrity sha512-B2vL4trGpNSMSOzFiAul9kFAsxTukL9Wyy9EXtkQy3GJr6sZqW9e1nShdVOJ3hRYamPZ94O17r3Q0bjSw3UYtg== dependencies: lodash "~4.17.4" prop-types "^15.6.0" @@ -20318,9 +19530,9 @@ react-syntax-highlighter@^15.4.5: refractor "^3.2.0" react-test-renderer@^16.13.1: - version "16.13.1" - resolved "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-16.13.1.tgz#de25ea358d9012606de51e012d9742e7f0deabc1" - integrity sha512-Sn2VRyOK2YJJldOqoh8Tn/lWQ+ZiKhyZTPtaO0Q6yNj+QDbmRkVFap6pZPy3YQk8DScRDfyqm/KxKYP9gCMRiQ== + version "16.14.0" + resolved "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-16.14.0.tgz#e98360087348e260c56d4fe2315e970480c228ae" + integrity sha512-L8yPjqPE5CZO6rKsKXRO/rVPiaCOy0tQQJbC+UjPNlobl5mad59lvPjwFsQHTvL03caVDIVr9x9/OSgDe6I5Eg== dependencies: object-assign "^4.1.1" prop-types "^15.6.2" @@ -20345,9 +19557,9 @@ react-transition-group@2.9.0, react-transition-group@^2.5.0: react-lifecycles-compat "^3.0.4" react-transition-group@^4.0.0, react-transition-group@^4.4.0: - version "4.4.1" - resolved "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.1.tgz#63868f9325a38ea5ee9535d828327f85773345c9" - integrity sha512-Djqr7OQ2aPUiYurhPalTrVy9ddmFCCzwhqQmtN+J3+3DzLO209Fdr70QrN8Z3DsglWql6iY1lDWAfpFiBtuKGw== + version "4.4.2" + resolved "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.2.tgz#8b59a56f09ced7b55cbd53c36768b922890d5470" + integrity sha512-/RNYfRAMlZwDSr6z4zNKV6xu53/e2BuaBbGhbyYIXTrmgu/bGHzmqOs7mJSJBHy9Ud+ApHx3QjrkKSp1pxvlFg== dependencies: "@babel/runtime" "^7.5.5" dom-helpers "^5.0.1" @@ -20359,27 +19571,7 @@ react-universal-interface@^0.6.2: resolved "https://registry.npmjs.org/react-universal-interface/-/react-universal-interface-0.6.2.tgz#5e8d438a01729a4dbbcbeeceb0b86be146fe2b3b" integrity sha512-dg8yXdcQmvgR13RIlZbTRQOoUrDciFVoSBZILwjE2LFISxZZ8loVJKAkuzswl5js8BHda79bIb2b84ehU8IjXw== -react-use@^17.2.4: - version "17.2.4" - resolved "https://registry.npmjs.org/react-use/-/react-use-17.2.4.tgz#1f89be3db0a8237c79253db0a15e12bbe3cfeff1" - integrity sha512-vQGpsAM0F5UIlshw5UI8ULGPS4yn5rm7/qvn3T1Gnkrz7YRMEEMh+ynKcmRloOyiIeLvKWiQjMiwRGtdbgs5qQ== - dependencies: - "@types/js-cookie" "^2.2.6" - "@xobotyi/scrollbar-width" "^1.9.5" - copy-to-clipboard "^3.3.1" - fast-deep-equal "^3.1.3" - fast-shallow-equal "^1.0.0" - js-cookie "^2.2.1" - nano-css "^5.3.1" - react-universal-interface "^0.6.2" - resize-observer-polyfill "^1.5.1" - screenfull "^5.1.0" - set-harmonic-interval "^1.0.1" - throttle-debounce "^3.0.1" - ts-easing "^0.2.0" - tslib "^2.1.0" - -react-use@^17.3.1, react-use@^17.3.2: +react-use@^17.2.4, react-use@^17.3.1, react-use@^17.3.2: version "17.3.2" resolved "https://registry.npmjs.org/react-use/-/react-use-17.3.2.tgz#448abf515f47c41c32455024db28167cb6e53be8" integrity sha512-bj7OD0/1wL03KyWmzFXAFe425zziuTf7q8olwCYBfOeFHY1qfO1FAMjROQLsLZYwG4Rx63xAfb7XAbBrJsZmEw== @@ -20425,15 +19617,7 @@ read-cmd-shim@^2.0.0: resolved "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-2.0.0.tgz#4a50a71d6f0965364938e9038476f7eede3928d9" integrity sha512-HJpV9bQpkl6KwjxlJcBoqu9Ba0PQg8TqSNIOrulGt54a0uup0HtevreFHzYzkm0lpnleRdNBzXznKrgxglEHQw== -read-package-json-fast@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.1.tgz#c767f6c634873ffb6bb73788191b65559734f555" - integrity sha512-bp6z0tdgLy9KzdfENDIw/53HWAolOVoQTRWXv7PUiqAo3YvvoUVeLr7RWPWq+mu7KUOu9kiT4DvxhUgNUBsvug== - dependencies: - json-parse-even-better-errors "^2.3.0" - npm-normalize-package-bin "^1.0.1" - -read-package-json-fast@^2.0.2: +read-package-json-fast@^2.0.1, read-package-json-fast@^2.0.2: version "2.0.3" resolved "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz#323ca529630da82cb34b36cc0b996693c98c2b83" integrity sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ== @@ -20442,21 +19626,29 @@ read-package-json-fast@^2.0.2: npm-normalize-package-bin "^1.0.1" read-package-json@^2.0.0: - version "2.1.1" - resolved "https://registry.npmjs.org/read-package-json/-/read-package-json-2.1.1.tgz#16aa66c59e7d4dad6288f179dd9295fd59bb98f1" - integrity sha512-dAiqGtVc/q5doFz6096CcnXhpYk0ZN8dEKVkGLU0CsASt8SrgF6SF7OTKAYubfvFhWaqofl+Y8HK19GR8jwW+A== + version "2.1.2" + resolved "https://registry.npmjs.org/read-package-json/-/read-package-json-2.1.2.tgz#6992b2b66c7177259feb8eaac73c3acd28b9222a" + integrity sha512-D1KmuLQr6ZSJS0tW8hf3WGpRlwszJOXZ3E8Yd/DNRaM5d+1wVRZdHlpGBLAuovjr28LbWvjpWkBHMxpRGGjzNA== dependencies: glob "^7.1.1" - json-parse-better-errors "^1.0.1" + json-parse-even-better-errors "^2.3.0" normalize-package-data "^2.0.0" npm-normalize-package-bin "^1.0.0" - optionalDependencies: - graceful-fs "^4.1.2" read-package-json@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/read-package-json/-/read-package-json-3.0.0.tgz#2219328e77c9be34f035a4ce58d1fb8e2979adf9" - integrity sha512-4TnJZ5fnDs+/3deg1AuMExL4R1SFNRLQeOhV9c8oDKm3eoG6u8xU0r0mNNRJHi3K6B+jXmT7JOhwhAklWw9SSQ== + version "3.0.1" + resolved "https://registry.npmjs.org/read-package-json/-/read-package-json-3.0.1.tgz#c7108f0b9390257b08c21e3004d2404c806744b9" + integrity sha512-aLcPqxovhJTVJcsnROuuzQvv6oziQx4zd3JvG0vGCL5MjTONUc4uJ90zCBC6R7W7oUKBNoR/F8pkyfVwlbxqng== + dependencies: + glob "^7.1.1" + json-parse-even-better-errors "^2.3.0" + normalize-package-data "^3.0.0" + npm-normalize-package-bin "^1.0.0" + +read-package-json@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/read-package-json/-/read-package-json-4.1.1.tgz#153be72fce801578c1c86b8ef2b21188df1b9eea" + integrity sha512-P82sbZJ3ldDrWCOSKxJT0r/CXMWR0OR3KRh55SgKo3p91GSIEEC32v3lSHAvO/UcH3/IoL7uqhOFBduAnwdldw== dependencies: glob "^7.1.1" json-parse-even-better-errors "^2.3.0" @@ -20551,7 +19743,7 @@ readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.2, readable-stre string_decoder "^1.1.1" util-deprecate "^1.0.1" -readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: +readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -20596,23 +19788,16 @@ readdirp@~3.6.0: picomatch "^2.2.1" recast@^0.20.3, recast@^0.20.4: - version "0.20.4" - resolved "https://registry.npmjs.org/recast/-/recast-0.20.4.tgz#db55983eac70c46b3fff96c8e467d65ffb4a7abc" - integrity sha512-6qLIBGGRcwjrTZGIiBpJVC/NeuXpogXNyRQpqU1zWPUigCphvApoCs9KIwDYh1eDuJ6dAFlQoi/QUyE5KQ6RBQ== + version "0.20.5" + resolved "https://registry.npmjs.org/recast/-/recast-0.20.5.tgz#8e2c6c96827a1b339c634dd232957d230553ceae" + integrity sha512-E5qICoPoNL4yU0H0NoBDntNB0Q5oMSNh9usFctYniLBluTthi3RsQVBXIJNbApOlvSwW/RGxIuokPcAc59J5fQ== dependencies: ast-types "0.14.2" esprima "~4.0.0" source-map "~0.6.1" tslib "^2.0.1" -recharts-scale@^0.4.2: - version "0.4.3" - resolved "https://registry.npmjs.org/recharts-scale/-/recharts-scale-0.4.3.tgz#040b4f638ed687a530357292ecac880578384b59" - integrity sha512-t8p5sccG9Blm7c1JQK/ak9O8o95WGhNXD7TXg/BW5bYbVlr6eCeRBNpgyigD4p6pSSMehC5nSvBUPj6F68rbFA== - dependencies: - decimal.js-light "^2.4.1" - -recharts-scale@^0.4.4: +recharts-scale@^0.4.2, recharts-scale@^0.4.4: version "0.4.5" resolved "https://registry.npmjs.org/recharts-scale/-/recharts-scale-0.4.5.tgz#0969271f14e732e642fcc5bd4ab270d6e87dd1d9" integrity sha512-kivNFO+0OcUNu7jQquLXAxz1FIwZj8nrj+YkOKc5694NbjCvcT6aSZiIzNzd2Kul4o4rTto8QVR9lMNtxD4G1w== @@ -20637,9 +19822,9 @@ recharts@^1.8.5: reduce-css-calc "^1.3.0" recharts@^2.1.5: - version "2.1.8" - resolved "https://registry.npmjs.org/recharts/-/recharts-2.1.8.tgz#ca8774fcec5f5d7ec15dedd638db9ee12faf1c09" - integrity sha512-Wi7ufdDGyvy/BPf1za1Ok7VeWB2KtEejaewO9ulmlUhvn5l5RPS4AOkrUfhtMRTTjgJ4K6AbWMDpwtDjczUHJA== + version "2.1.9" + resolved "https://registry.npmjs.org/recharts/-/recharts-2.1.9.tgz#a52d411a7d822d118f7754cfc9c50db8fab46fb9" + integrity sha512-VozH5uznUvGqD7n224FGj7cmMAenlS0HPCs+7r2HeeHiQK6un6z0CTZfWVAB860xbcr4m+BN/EGMPZmYWd34Rg== dependencies: "@types/d3-interpolate" "^2.0.0" "@types/d3-scale" "^3.0.0" @@ -20714,22 +19899,7 @@ redux-immutable@^4.0.0: resolved "https://registry.npmjs.org/redux-immutable/-/redux-immutable-4.0.0.tgz#3a1a32df66366462b63691f0e1dc35e472bbc9f3" integrity sha1-Ohoy32Y2ZGK2NpHw4dw15HK7yfM= -redux@^4.0.0: - version "4.1.1" - resolved "https://registry.npmjs.org/redux/-/redux-4.1.1.tgz#76f1c439bb42043f985fbd9bf21990e60bd67f47" - integrity sha512-hZQZdDEM25UY2P493kPYuKqviVwZ58lEmGQNeQ+gXa+U0gYPUBf7NKYazbe3m+bs/DzM/ahN12DbF+NG8i0CWw== - dependencies: - "@babel/runtime" "^7.9.2" - -redux@^4.0.4: - version "4.0.5" - resolved "https://registry.npmjs.org/redux/-/redux-4.0.5.tgz#4db5de5816e17891de8a80c424232d06f051d93f" - integrity sha512-VSz1uMAH24DM6MF72vcojpYPtrTUu3ByVWfPL1nPfVRb5mZVTve5GnNCUV53QM/BZ66xfWrm0CTWoM+Xlz8V1w== - dependencies: - loose-envify "^1.4.0" - symbol-observable "^1.2.0" - -redux@^4.1.2: +redux@^4.0.0, redux@^4.0.4, redux@^4.1.2: version "4.1.2" resolved "https://registry.npmjs.org/redux/-/redux-4.1.2.tgz#140f35426d99bb4729af760afcf79eaaac407104" integrity sha512-SH8PglcebESbd/shgf6mii6EIoRM0zrQyjcuQ+ojmfxjTtE0z9Y8pa62iA/OJ58qjP6j27uyW4kUF4jl/jd6sw== @@ -20750,17 +19920,17 @@ refractor@^3.2.0: parse-entities "^2.0.0" prismjs "~1.25.0" -regenerate-unicode-properties@^8.2.0: - version "8.2.0" - resolved "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" - integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA== +regenerate-unicode-properties@^10.0.1: + version "10.0.1" + resolved "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz#7f442732aa7934a3740c779bb9b3340dccc1fb56" + integrity sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw== dependencies: - regenerate "^1.4.0" + regenerate "^1.4.2" -regenerate@^1.4.0: - version "1.4.0" - resolved "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" - integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== +regenerate@^1.4.2: + version "1.4.2" + resolved "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== regenerator-runtime@^0.10.5: version "0.10.5" @@ -20773,17 +19943,16 @@ regenerator-runtime@^0.11.0: integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== regenerator-runtime@^0.13.4: - version "0.13.7" - resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" - integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== + version "0.13.9" + resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" + integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== regenerator-transform@^0.14.2: - version "0.14.4" - resolved "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.4.tgz#5266857896518d1616a78a0479337a30ea974cc7" - integrity sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw== + version "0.14.5" + resolved "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4" + integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw== dependencies: "@babel/runtime" "^7.8.4" - private "^0.1.8" regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" @@ -20793,18 +19962,10 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" -regexp.prototype.flags@^1.2.0: - version "1.3.0" - resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" - integrity sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - -regexp.prototype.flags@^1.3.1: - version "1.3.1" - resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz#7ef352ae8d159e758c0eadca6f8fcb4eef07be26" - integrity sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA== +regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.3.1: + version "1.4.1" + resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz#b3f4c0059af9e47eca9f3f660e51d81307e72307" + integrity sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ== dependencies: call-bind "^1.0.2" define-properties "^1.1.3" @@ -20814,22 +19975,22 @@ regexpp@^3.2.0: resolved "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== -regexpu-core@^4.7.1: - version "4.7.1" - resolved "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz#2dea5a9a07233298fbf0db91fa9abc4c6e0f8ad6" - integrity sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ== +regexpu-core@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.0.1.tgz#c531122a7840de743dcf9c83e923b5560323ced3" + integrity sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw== dependencies: - regenerate "^1.4.0" - regenerate-unicode-properties "^8.2.0" - regjsgen "^0.5.1" - regjsparser "^0.6.4" - unicode-match-property-ecmascript "^1.0.4" - unicode-match-property-value-ecmascript "^1.2.0" + regenerate "^1.4.2" + regenerate-unicode-properties "^10.0.1" + regjsgen "^0.6.0" + regjsparser "^0.8.2" + unicode-match-property-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript "^2.0.0" registry-auth-token@^4.0.0: - version "4.1.1" - resolved "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.1.1.tgz#40a33be1e82539460f94328b0f7f0f84c16d9479" - integrity sha512-9bKS7nTl9+/A1s7tnPeGrUpRcVY+LUh7bfFgzpndALdPfXQBfQV77rQVtqgUV3ti4vc/Ik81Ex8UJDWDQ12zQA== + version "4.2.1" + resolved "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz#6d7b4006441918972ccd5fedcd41dc322c79b250" + integrity sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw== dependencies: rc "^1.2.8" @@ -20840,15 +20001,15 @@ registry-url@^5.0.0: dependencies: rc "^1.2.8" -regjsgen@^0.5.1: - version "0.5.1" - resolved "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.1.tgz#48f0bf1a5ea205196929c0d9798b42d1ed98443c" - integrity sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg== +regjsgen@^0.6.0: + version "0.6.0" + resolved "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz#83414c5354afd7d6627b16af5f10f41c4e71808d" + integrity sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA== -regjsparser@^0.6.4: - version "0.6.4" - resolved "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz#a769f8684308401a66e9b529d2436ff4d0666272" - integrity sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw== +regjsparser@^0.8.2: + version "0.8.4" + resolved "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz#8a14285ffcc5de78c5b95d62bbf413b6bc132d5f" + integrity sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA== dependencies: jsesc "~0.5.0" @@ -20905,9 +20066,9 @@ remark-gfm@^3.0.1: unified "^10.0.0" remark-parse@^10.0.0: - version "10.0.0" - resolved "https://registry.npmjs.org/remark-parse/-/remark-parse-10.0.0.tgz#65e2b2b34d8581d36b97f12a2926bb2126961cb4" - integrity sha512-07ei47p2Xl7Bqbn9H2VYQYirnAFJPwdMuypdozWsSbnmrkgA2e2sZLZdnDNrrsxR4onmIzH/J6KXqKxCuqHtPQ== + version "10.0.1" + resolved "https://registry.npmjs.org/remark-parse/-/remark-parse-10.0.1.tgz#6f60ae53edbf0cf38ea223fe643db64d112e0775" + integrity sha512-1fUyHr2jLsVOkhbvPRBJ5zTKZZyD6yZzYaWCS6BPBdQ8vEMBCH+9zNCDA6tET/zHCi/jLqjCWtlJZUPk+DbnFw== dependencies: "@types/mdast" "^3.0.0" mdast-util-from-markdown "^1.0.0" @@ -20958,9 +20119,9 @@ renderkid@^3.0.0: strip-ansi "^6.0.1" repeat-element@^1.1.2: - version "1.1.3" - resolved "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" - integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== + version "1.1.4" + resolved "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" + integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== repeat-string@^1.5.2, repeat-string@^1.6.1: version "1.6.1" @@ -20993,22 +20154,6 @@ request-progress@^3.0.0: dependencies: throttleit "^1.0.0" -request-promise-core@1.1.3: - version "1.1.3" - resolved "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.3.tgz#e9a3c081b51380dfea677336061fea879a829ee9" - integrity sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ== - dependencies: - lodash "^4.17.15" - -request-promise-native@^1.0.8: - version "1.0.8" - resolved "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.8.tgz#a455b960b826e44e2bf8999af64dff2bfe58cb36" - integrity sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ== - dependencies: - request-promise-core "1.1.3" - stealthy-require "^1.1.1" - tough-cookie "^2.3.3" - request@^2.88.0, request@^2.88.2: version "2.88.2" resolved "https://registry.npmjs.org/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" @@ -21060,10 +20205,10 @@ requires-port@^1.0.0: resolved "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= -reselect@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/reselect/-/reselect-4.0.0.tgz#f2529830e5d3d0e021408b246a206ef4ea4437f7" - integrity sha512-qUgANli03jjAyGlnbYVAV5vvnOmJnODyABz51RdBN7M4WaVu8mecZWgyQNkG8Yqe3KRGRt0l4K4B3XVEULC4CA== +reselect@^4.1.5: + version "4.1.5" + resolved "https://registry.npmjs.org/reselect/-/reselect-4.1.5.tgz#852c361247198da6756d07d9296c2b51eddb79f6" + integrity sha512-uVdlz8J7OO+ASpBYoz1Zypgx0KasCY20H+N8JD13oUMtPvSHQuscrHop4KbXrbsBcdB9Ds7lVK7eRkBIfO43vQ== resize-observer-polyfill@^1.5.0, resize-observer-polyfill@^1.5.1: version "1.5.1" @@ -21071,9 +20216,9 @@ resize-observer-polyfill@^1.5.0, resize-observer-polyfill@^1.5.1: integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg== resolve-alpn@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.0.0.tgz#745ad60b3d6aff4b4a48e01b8c0bdc70959e0e8c" - integrity sha512-rTuiIEqFmGxne4IovivKSDzld2lWW9QCjqv80SYjPgf+gS35eaCAjaP54CCwGAwBtnCsvNLYtqxe1Nw+i6JEmA== + version "1.2.1" + resolved "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" + integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g== resolve-cwd@^3.0.0: version "3.0.0" @@ -21098,11 +20243,11 @@ resolve-url@^0.2.1: integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= resolve@^1.1.6, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.18.1, resolve@^1.19.0, resolve@^1.20.0: - version "1.21.0" - resolved "https://registry.npmjs.org/resolve/-/resolve-1.21.0.tgz#b51adc97f3472e6a5cf4444d34bc9d6b9037591f" - integrity sha512-3wCbTpk5WJlyE4mSOtDLhqQmGFi0/TD9VPwmiolnk8U0wRgMEktqCXd3vy5buTO3tljvalNvKrjHEfrd2WpEKA== + version "1.22.0" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198" + integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw== dependencies: - is-core-module "^2.8.0" + is-core-module "^2.8.1" path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" @@ -21143,14 +20288,6 @@ responselike@^2.0.0: dependencies: lowercase-keys "^2.0.0" -restore-cursor@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541" - integrity sha1-NGYfRohjJ/7SmRR5FSJS35LapUE= - dependencies: - exit-hook "^1.0.0" - onetime "^1.0.0" - restore-cursor@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" @@ -21177,14 +20314,7 @@ ret@~0.2.0: resolved "https://registry.npmjs.org/ret/-/ret-0.2.2.tgz#b6861782a1f4762dce43402a71eb7a283f44573c" integrity sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ== -retry-request@^4.0.0: - version "4.1.3" - resolved "https://registry.npmjs.org/retry-request/-/retry-request-4.1.3.tgz#d5f74daf261372cff58d08b0a1979b4d7cab0fde" - integrity sha512-QnRZUpuPNgX0+D1xVxul6DbJ9slvo4Rm6iV/dn63e048MvGbUZiKySVt6Tenp04JqmchxjiLltGerOJys7kJYQ== - dependencies: - debug "^4.1.1" - -retry-request@^4.2.2: +retry-request@^4.0.0, retry-request@^4.2.2: version "4.2.2" resolved "https://registry.npmjs.org/retry-request/-/retry-request-4.2.2.tgz#b7d82210b6d2651ed249ba3497f07ea602f1a903" integrity sha512-xA93uxUD/rogV7BV59agW/JHPGXeREMWiZc9jhcwY4YdZ7QOtC7qbomYg0n4wyk2lJhggjvKvhNX8wln/Aldhg== @@ -21192,7 +20322,12 @@ retry-request@^4.2.2: debug "^4.1.1" extend "^3.0.2" -retry@0.12.0, retry@^0.12.0: +retry@0.13.1, retry@^0.13.1: + version "0.13.1" + resolved "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" + integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== + +retry@^0.12.0: version "0.12.0" resolved "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= @@ -21203,9 +20338,9 @@ reusify@^1.0.4: integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== rfc4648@^1.3.0: - version "1.4.0" - resolved "https://registry.npmjs.org/rfc4648/-/rfc4648-1.4.0.tgz#c75b2856ad2e2d588b6ddb985d556f1f7f2a2abd" - integrity sha512-3qIzGhHlMHA6PoT6+cdPKZ+ZqtxkIvg8DZGKA5z6PQ33/uuhoJ+Ws/D/J9rXW6gXodgH8QYlz2UCl+sdUDmNIg== + version "1.5.1" + resolved "https://registry.npmjs.org/rfc4648/-/rfc4648-1.5.1.tgz#b0b16756e33d9de8c0c7833e94b28e627ec372a4" + integrity sha512-60e/YWs2/D3MV1ErdjhJHcmlgnyLUiG4X/14dgsfm9/zmCWLN16xI6YqJYSCd/OANM7bUNzJqPY5B8/02S9Ibw== rfdc@^1.3.0: version "1.3.0" @@ -21258,11 +20393,13 @@ rollup-plugin-dts@^4.0.1: "@babel/code-frame" "^7.16.0" rollup-plugin-esbuild@^4.7.2: - version "4.7.2" - resolved "https://registry.npmjs.org/rollup-plugin-esbuild/-/rollup-plugin-esbuild-4.7.2.tgz#1a496a9f96257cdf5ed800e818932859232471f8" - integrity sha512-rBS2hTedtG+wL/yyIWQ84zju5rtfF15gkaCLN0vsWGmBdRd0UPm52meAwkmrsPQf3mB/H2o+k9Q8Ce8A66SE5A== + version "4.8.2" + resolved "https://registry.npmjs.org/rollup-plugin-esbuild/-/rollup-plugin-esbuild-4.8.2.tgz#c097b93cd4b622e62206cadb5797589f548cf48c" + integrity sha512-wsaYNOjzTb6dN1qCIZsMZ7Q0LWiPJklYs2TDI8vJA2LUbvtPUY+17TC8C0vSat3jPMInfR9XWKdA7ttuwkjsGQ== dependencies: "@rollup/pluginutils" "^4.1.1" + debug "^4.3.3" + es-module-lexer "^0.9.3" joycon "^3.0.1" jsonc-parser "^3.0.0" @@ -21318,23 +20455,23 @@ rsvp@^4.8.4: integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== rtl-css-js@^1.14.0: - version "1.14.0" - resolved "https://registry.npmjs.org/rtl-css-js/-/rtl-css-js-1.14.0.tgz#daa4f192a92509e292a0519f4b255e6e3c076b7d" - integrity sha512-Dl5xDTeN3e7scU1cWX8c9b6/Nqz3u/HgR4gePc1kWXYiQWVQbKCEyK6+Hxve9LbcJ5EieHy1J9nJCN3grTtGwg== + version "1.15.0" + resolved "https://registry.npmjs.org/rtl-css-js/-/rtl-css-js-1.15.0.tgz#680ed816e570a9ebccba9e1cd0f202c6a8bb2dc0" + integrity sha512-99Cu4wNNIhrI10xxUaABHsdDqzalrSRTie4GeCmbGVuehm4oj+fIy8fTzB+16pmKe8Bv9rl+hxIBez6KxExTew== dependencies: "@babel/runtime" "^7.1.2" run-async@^2.4.0: - version "2.4.0" - resolved "https://registry.npmjs.org/run-async/-/run-async-2.4.0.tgz#e59054a5b86876cfae07f431d18cbaddc594f1e8" - integrity sha512-xJTbh/d7Lm7SBhc1tNvTpeCHaEzoyxPrqNlvSdMfBTYwaY++UJFyXUOxAtsRUXjlqOfj8luNaR9vjCh4KeV+pg== - dependencies: - is-promise "^2.1.0" + version "2.4.1" + resolved "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" + integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== run-parallel@^1.1.9: - version "1.1.9" - resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz#c9dd3a7cf9f4b2c4b6244e173a6ed866e61dd679" - integrity sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q== + version "1.2.0" + resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" run-script-webpack-plugin@^0.0.11: version "0.0.11" @@ -21348,10 +20485,10 @@ rxjs@^6.3.3, rxjs@^6.4.0, rxjs@^6.6.0, rxjs@^6.6.3: dependencies: tslib "^1.9.0" -rxjs@^7.1.0, rxjs@^7.2.0, rxjs@^7.5.2: - version "7.5.2" - resolved "https://registry.npmjs.org/rxjs/-/rxjs-7.5.2.tgz#11e4a3a1dfad85dbf7fb6e33cbba17668497490b" - integrity sha512-PwDt186XaL3QN5qXj/H9DGyHhP3/RYYgZZwqBv9Tv8rsAaiwFH1IsJJlcgD37J7UW5a6O67qX0KWKS3/pu0m4w== +rxjs@^7.1.0, rxjs@^7.2.0, rxjs@^7.5.1, rxjs@^7.5.4: + version "7.5.4" + resolved "https://registry.npmjs.org/rxjs/-/rxjs-7.5.4.tgz#3d6bd407e6b7ce9a123e76b1e770dc5761aa368d" + integrity sha512-h5M3Hk78r6wAheJF0a5YahB1yRQKCsZ4MsGdZ5O9ETbVtjPcScGfrMmoOq7EBsCRzd4BDkvDJ7ogP8Sz5tTFiQ== dependencies: tslib "^2.1.0" @@ -21367,7 +20504,7 @@ safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.1, safe-buffer@~5.2.0: +safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -21391,11 +20528,6 @@ safe-regex@^1.1.0: dependencies: ret "~0.1.10" -safe-stable-stringify@^1.1.0: - version "1.1.1" - resolved "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-1.1.1.tgz#c8a220ab525cd94e60ebf47ddc404d610dc5d84a" - integrity sha512-ERq4hUjKDbJfE4+XtZLFPCDi8Vb1JqaxAPTxWFLBx8XcAlf9Bda/ZJdVezs/NAfsMQScyIlUMx+Yeu7P7rx5jw== - safe-stable-stringify@^2.2.0, safe-stable-stringify@^2.3.1: version "2.3.1" resolved "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.3.1.tgz#ab67cbe1fe7d40603ca641c5e765cb942d04fc73" @@ -21431,14 +20563,14 @@ sax@>=0.6.0: resolved "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== -saxes@^5.0.0, saxes@^5.0.1: +saxes@^5.0.1: version "5.0.1" resolved "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== dependencies: xmlchars "^2.2.0" -scheduler@^0.19.0, scheduler@^0.19.1: +scheduler@^0.19.1: version "0.19.1" resolved "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz#4f3e2ed2c1a7d65681f4c854fa8c5a1ccb40f196" integrity sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA== @@ -21488,9 +20620,9 @@ scoped-regex@^2.0.0: integrity sha512-g3WxHrqSWCZHGHlSrF51VXFdjImhwvH8ZO/pryFH56Qi0cDsZfylQa/t0jCzVQFNbNvM00HfHjkDPEuarKDSWQ== screenfull@^5.1.0: - version "5.1.0" - resolved "https://registry.npmjs.org/screenfull/-/screenfull-5.1.0.tgz#85c13c70f4ead4c1b8a935c70010dfdcd2c0e5c8" - integrity sha512-dYaNuOdzr+kc6J6CFcBrzkLCfyGcMg+gWkJ8us93IQ7y1cevhQAugFsaCdMHb6lw8KV3xPzSxzH7zM1dQap9mA== + version "5.2.0" + resolved "https://registry.npmjs.org/screenfull/-/screenfull-5.2.0.tgz#6533d524d30621fc1283b9692146f3f13a93d1ba" + integrity sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA== scuid@^1.1.0: version "1.1.0" @@ -21541,7 +20673,7 @@ semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -semver@^7.0.0, semver@^7.1.1, semver@^7.1.3, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@~7.3.0: +semver@^7.1.1, semver@^7.1.3, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@~7.3.0: version "7.3.5" resolved "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== @@ -21721,7 +20853,7 @@ shell-quote@^1.7.3: resolved "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz#aa40edac170445b9a431e17bb62c0b881b9c4123" integrity sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw== -shelljs@^0.8.4, shelljs@^0.8.5: +shelljs@^0.8.5: version "0.8.5" resolved "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz#de055408d8361bed66c669d2f000538ced8ee20c" integrity sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow== @@ -21767,7 +20899,7 @@ simple-concat@^1.0.0: resolved "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== -simple-get@^3.0.2, simple-get@^3.0.3: +simple-get@^3.0.3: version "3.1.1" resolved "https://registry.npmjs.org/simple-get/-/simple-get-3.1.1.tgz#cc7ba77cfbe761036fbfce3d021af25fc5584d55" integrity sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA== @@ -21776,6 +20908,15 @@ simple-get@^3.0.2, simple-get@^3.0.3: once "^1.3.1" simple-concat "^1.0.0" +simple-get@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz#4a39db549287c979d352112fa03fd99fd6bc3543" + integrity sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA== + dependencies: + decompress-response "^6.0.0" + once "^1.3.1" + simple-concat "^1.0.0" + simple-swizzle@^0.2.2: version "0.2.2" resolved "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" @@ -21784,12 +20925,12 @@ simple-swizzle@^0.2.2: is-arrayish "^0.3.1" sinon@^11.1.1: - version "11.1.1" - resolved "https://registry.npmjs.org/sinon/-/sinon-11.1.1.tgz#99a295a8b6f0fadbbb7e004076f3ae54fc6eab91" - integrity sha512-ZSSmlkSyhUWbkF01Z9tEbxZLF/5tRC9eojCdFh33gtQaP7ITQVaMWQHGuFM7Cuf/KEfihuh1tTl3/ABju3AQMg== + version "11.1.2" + resolved "https://registry.npmjs.org/sinon/-/sinon-11.1.2.tgz#9e78850c747241d5c59d1614d8f9cbe8840e8674" + integrity sha512-59237HChms4kg7/sXhiRcUzdSkKuydDeTiamT/jesUVHshBgL8XAmhgFo0GfK6RruMDM/iRSij1EybmMog9cJw== dependencies: "@sinonjs/commons" "^1.8.3" - "@sinonjs/fake-timers" "^7.1.0" + "@sinonjs/fake-timers" "^7.1.2" "@sinonjs/samsam" "^6.0.2" diff "^5.0.0" nise "^5.1.0" @@ -21846,10 +20987,10 @@ slide@^1.1.6: resolved "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" integrity sha1-VusCfWW00tzmyy4tMsTUr8nh1wc= -smart-buffer@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.1.0.tgz#91605c25d91652f4661ea69ccf45f1b331ca21ba" - integrity sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw== +smart-buffer@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" + integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== smartwrap@^1.2.3: version "1.2.5" @@ -21906,20 +21047,20 @@ snapdragon@^0.8.1: use "^3.1.0" sockjs@^0.3.21: - version "0.3.21" - resolved "https://registry.npmjs.org/sockjs/-/sockjs-0.3.21.tgz#b34ffb98e796930b60a0cfa11904d6a339a7d417" - integrity sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw== + version "0.3.24" + resolved "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz#c9bc8995f33a111bea0395ec30aa3206bdb5ccce" + integrity sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ== dependencies: faye-websocket "^0.11.3" - uuid "^3.4.0" + uuid "^8.3.2" websocket-driver "^0.7.4" socks-proxy-agent@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-5.0.0.tgz#7c0f364e7b1cf4a7a437e71253bed72e9004be60" - integrity sha512-lEpa1zsWCChxiynk+lCycKuC502RxDWLKJZoIhnxrWNjLSDGYRFflHA1/228VkRcnv9TIb8w98derGbpKxJRgA== + version "5.0.1" + resolved "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-5.0.1.tgz#032fb583048a29ebffec2e6a73fca0761f48177e" + integrity sha512-vZdmnjb9a2Tz6WEQVIurybSwElwPxMZaIc7PzqbJTrezcKNznv6giT7J7tZDZ1BojVaa1jvO/UiUdhDVB0ACoQ== dependencies: - agent-base "6" + agent-base "^6.0.2" debug "4" socks "^2.3.3" @@ -21932,21 +21073,13 @@ socks-proxy-agent@^6.0.0, socks-proxy-agent@^6.1.1: debug "^4.3.1" socks "^2.6.1" -socks@^2.3.3: - version "2.5.1" - resolved "https://registry.npmjs.org/socks/-/socks-2.5.1.tgz#7720640b6b5ec9a07d556419203baa3f0596df5f" - integrity sha512-oZCsJJxapULAYJaEYBSzMcz8m3jqgGrHaGhkmU/o/PQfFWYWxkAaA0UMGImb6s6tEXfKi959X6VJjMMQ3P6TTQ== +socks@^2.3.3, socks@^2.6.1: + version "2.6.2" + resolved "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz#ec042d7960073d40d94268ff3bb727dc685f111a" + integrity sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA== dependencies: ip "^1.1.5" - smart-buffer "^4.1.0" - -socks@^2.6.1: - version "2.6.1" - resolved "https://registry.npmjs.org/socks/-/socks-2.6.1.tgz#989e6534a07cf337deb1b1c94aaa44296520d30e" - integrity sha512-kLQ9N5ucj8uIcxrDwjm0Jsqk06xdpBjGNQtpXy4Q8/QY2k+fY7nZH8CARy+hkbG+SGAovmzzuauCpBlb8FrnBA== - dependencies: - ip "^1.1.5" - smart-buffer "^4.1.0" + smart-buffer "^4.2.0" sonic-boom@^0.7.5: version "0.7.7" @@ -22000,17 +21133,17 @@ source-map-resolve@^0.6.0: decode-uri-component "^0.2.0" source-map-support@^0.5.16, source-map-support@^0.5.17, source-map-support@^0.5.6, source-map-support@~0.5.20: - version "0.5.20" - resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.20.tgz#12166089f8f5e5e8c56926b377633392dd2cb6c9" - integrity sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw== + version "0.5.21" + resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== dependencies: buffer-from "^1.0.0" source-map "^0.6.0" source-map-url@^0.4.0: - version "0.4.0" - resolved "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" - integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= + version "0.4.1" + resolved "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" + integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== source-map@0.5.6: version "0.5.6" @@ -22061,30 +21194,30 @@ spawndamnit@^2.0.0: signal-exit "^3.0.2" spdx-correct@^3.0.0: - version "3.1.0" - resolved "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" - integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q== + version "3.1.1" + resolved "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" + integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== dependencies: spdx-expression-parse "^3.0.0" spdx-license-ids "^3.0.0" spdx-exceptions@^2.1.0: - version "2.2.0" - resolved "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977" - integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA== + version "2.3.0" + resolved "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" + integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== spdx-expression-parse@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" - integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg== + version "3.0.1" + resolved "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== dependencies: spdx-exceptions "^2.1.0" spdx-license-ids "^3.0.0" spdx-license-ids@^3.0.0: - version "3.0.5" - resolved "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" - integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== + version "3.0.11" + resolved "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz#50c0d8c40a14ec1bf449bae69a0ea4685a9d9f95" + integrity sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g== spdy-transport@^3.0.0: version "3.0.0" @@ -22133,6 +21266,11 @@ split2@^3.0.0: dependencies: readable-stream "^3.0.0" +split2@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/split2/-/split2-4.1.0.tgz#101907a24370f85bb782f08adaabe4e281ecf809" + integrity sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ== + split@0.3: version "0.3.3" resolved "https://registry.npmjs.org/split/-/split-0.3.3.tgz#cd0eea5e63a211dfff7eb0f091c4133e2d0dd28f" @@ -22173,9 +21311,9 @@ ssh-remote-port-forward@^1.0.4: ssh2 "^1.4.0" ssh2@^1.4.0: - version "1.5.0" - resolved "https://registry.npmjs.org/ssh2/-/ssh2-1.5.0.tgz#4dc559ba98a1cbb420e8d42998dfe35d0eda92bc" - integrity sha512-iUmRkhH9KGeszQwDW7YyyqjsMTf4z+0o48Cp4xOwlY5LjtbIAvyd3fwnsoUZW/hXmTCRA3yt7S/Jb9uVjErVlA== + version "1.6.0" + resolved "https://registry.npmjs.org/ssh2/-/ssh2-1.6.0.tgz#61aebc3a6910fe488f9c85cd8355bdf8d4724e05" + integrity sha512-lxc+uvXqOxyQ99N2M7k5o4pkYDO5GptOTYduWw7hIM41icxvoBcCNHcj+LTKrjkL0vFcAl+qfZekthoSFRJn2Q== dependencies: asn1 "^0.2.4" bcrypt-pbkdf "^1.0.2" @@ -22184,9 +21322,9 @@ ssh2@^1.4.0: nan "^2.15.0" sshpk@^1.14.1, sshpk@^1.7.0: - version "1.16.1" - resolved "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" - integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== + version "1.17.0" + resolved "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5" + integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ== dependencies: asn1 "~0.2.3" assert-plus "^1.0.0" @@ -22223,16 +21361,16 @@ stack-trace@0.0.x: integrity sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA= stack-utils@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.2.tgz#5cf48b4557becb4638d0bc4f21d23f5d19586593" - integrity sha512-0H7QK2ECz3fyZMzQ8rH0j2ykpfbnd20BFtfg/SqVC2+sCTtcw0aDTGB7dk+de4U4uUeuz6nOtJcrkFFLG1B0Rg== + version "2.0.5" + resolved "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz#d25265fca995154659dbbfba3b49254778d2fdd5" + integrity sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA== dependencies: escape-string-regexp "^2.0.0" stackframe@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/stackframe/-/stackframe-1.1.1.tgz#ffef0a3318b1b60c3b58564989aca5660729ec71" - integrity sha512-0PlYhdKh6AfFxRyK/v+6/k+/mMfyiEBbTM5L94D0ZytQnJ166wuwoTYLHFWGbs2dpA8Rgq763KGWmN1EQEYHRQ== + version "1.2.1" + resolved "https://registry.npmjs.org/stackframe/-/stackframe-1.2.1.tgz#1033a3473ee67f08e2f2fc8eba6aef4f845124e1" + integrity sha512-h88QkzREN/hy8eRdyNhhsO7RSJ5oyTqxxmmn0dzBIMUclZsjpfmrsg81vp8mjjAs2vAZ72nyWxRUwSwmh0e4xg== stacktrace-gps@^3.0.4: version "3.0.4" @@ -22282,11 +21420,6 @@ statuses@2.0.1, statuses@^2.0.0: resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= -stealthy-require@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" - integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= - stoppable@^1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/stoppable/-/stoppable-1.1.0.tgz#32da568e83ea488b08e4d7ea2c3bcc9d75015d5b" @@ -22312,7 +21445,7 @@ stream-combiner@~0.0.4: dependencies: duplexer "~0.1.1" -stream-events@^1.0.1, stream-events@^1.0.4, stream-events@^1.0.5: +stream-events@^1.0.4, stream-events@^1.0.5: version "1.0.5" resolved "https://registry.npmjs.org/stream-events/-/stream-events-1.0.5.tgz#bbc898ec4df33a4902d892333d47da9bf1c406d5" integrity sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg== @@ -22335,7 +21468,7 @@ stream-shift@^1.0.0: resolved "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== -stream-transform@^2.0.1: +stream-transform@^2.1.3: version "2.1.3" resolved "https://registry.npmjs.org/stream-transform/-/stream-transform-2.1.3.tgz#a1c3ecd72ddbf500aa8d342b0b9df38f5aa598e3" integrity sha512-9GHUiM5hMiCi6Y03jD2ARC1ettBXkQBoQAe7nJsPknnI0ow10aXjTnew8QtYQmLjzn974BnmWEAJgCY6ZP1DeQ== @@ -22370,9 +21503,9 @@ string-hash@^1.1.1: integrity sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs= string-length@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/string-length/-/string-length-4.0.1.tgz#4a973bf31ef77c4edbceadd6af2611996985f8a1" - integrity sha512-PKyXUd0LK0ePjSOnWn34V2uD6acUWev9uy0Ft05k0E8xRW+SKcA0F7eMr7h5xlzfn+4O3N+55rduYyet3Jk+jw== + version "4.0.2" + resolved "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" + integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== dependencies: char-regex "^1.0.2" strip-ansi "^6.0.0" @@ -22403,15 +21536,6 @@ string-width@^2.1.1: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" -string-width@^3.0.0: - version "3.1.0" - resolved "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" - integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== - dependencies: - emoji-regex "^7.0.1" - is-fullwidth-code-point "^2.0.0" - strip-ansi "^5.1.0" - string-width@^5.0.0: version "5.1.0" resolved "https://registry.npmjs.org/string-width/-/string-width-5.1.0.tgz#5ab00980cfb29f43e736b113a120a73a0fb569d3" @@ -22465,7 +21589,7 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -strip-ansi@5.2.0, strip-ansi@^5.1.0: +strip-ansi@5.2.0: version "5.2.0" resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== @@ -22569,12 +21693,12 @@ strong-log-transformer@^2.1.0: through "^2.3.4" strtok3@^6.2.4: - version "6.2.4" - resolved "https://registry.npmjs.org/strtok3/-/strtok3-6.2.4.tgz#302aea64c0fa25d12a0385069ba66253fdc38a81" - integrity sha512-GO8IcFF9GmFDvqduIspUBwCzCbqzegyVKIsSymcMgiZKeCfrN9SowtUoi8+b59WZMAjIzVZic/Ft97+pynR3Iw== + version "6.3.0" + resolved "https://registry.npmjs.org/strtok3/-/strtok3-6.3.0.tgz#358b80ffe6d5d5620e19a073aa78ce947a90f9a0" + integrity sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw== dependencies: "@tokenizer/token" "^0.3.0" - peek-readable "^4.0.1" + peek-readable "^4.1.0" stubs@^3.0.0: version "3.0.0" @@ -22603,18 +21727,18 @@ style-to-object@^0.3.0: dependencies: inline-style-parser "0.1.1" -stylehacks@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/stylehacks/-/stylehacks-5.0.1.tgz#323ec554198520986806388c7fdaebc38d2c06fb" - integrity sha512-Es0rVnHIqbWzveU1b24kbw92HsebBepxfcqe5iix7t9j0PQqhs0IxXVXv0pY2Bxa08CgMkzD6OWql7kbGOuEdA== +stylehacks@^5.0.3: + version "5.0.3" + resolved "https://registry.npmjs.org/stylehacks/-/stylehacks-5.0.3.tgz#2ef3de567bfa2be716d29a93bf3d208c133e8d04" + integrity sha512-ENcUdpf4yO0E1rubu8rkxI+JGQk4CgjchynZ4bDBJDfqdy+uhTRSWb8/F3Jtu+Bw5MW45Po3/aQGeIyyxgQtxg== dependencies: - browserslist "^4.16.0" + browserslist "^4.16.6" postcss-selector-parser "^6.0.4" stylis@^4.0.6: - version "4.0.7" - resolved "https://registry.npmjs.org/stylis/-/stylis-4.0.7.tgz#412a90c28079417f3d27c028035095e4232d2904" - integrity sha512-OFFeUXFgwnGOKvEXaSv0D0KQ5ADP0n6g3SVONx6I/85JzNZ3u50FRwB3lVIk1QO2HNdI75tbVzc4Z66Gdp9voA== + version "4.0.13" + resolved "https://registry.npmjs.org/stylis/-/stylis-4.0.13.tgz#f5db332e376d13cc84ecfe5dace9a2a51d954c91" + integrity sha512-xGPXiFVl4YED9Jh7Euv2V220mriG9u4B2TA6Ybjc1catrstKD2PpIdU3U0RKpkVBC2EhmL/F0sPCr9vrFTNRag== subscriptions-transport-ws@^0.11.0: version "0.11.0" @@ -22707,9 +21831,9 @@ supports-color@^9.2.1: integrity sha512-Obv7ycoCTG51N7y175StI9BlAXrmgZrFhZOb0/PyjHBher/NmsdBgbbQ1Inhq+gIhz6+7Gb+jWF2Vqi7Mf1xnQ== supports-hyperlinks@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.1.0.tgz#f663df252af5f37c5d49bbd7eeefa9e0b9e59e47" - integrity sha512-zoE5/e+dnEijk6ASB6/qrK+oYdm2do1hjoLWrqUC/8WEIW1gbxFcKuBof7sW8ArN6e+AYvsE8HBGiVRWL/F5CA== + version "2.2.0" + resolved "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz#4f77b42488765891774b70c79babd87f9bd594bb" + integrity sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ== dependencies: has-flag "^4.0.0" supports-color "^7.0.0" @@ -22737,16 +21861,16 @@ svgo@^2.5.0, svgo@^2.7.0: picocolors "^1.0.0" stable "^0.1.8" -swagger-client@^3.17.0: - version "3.18.0" - resolved "https://registry.npmjs.org/swagger-client/-/swagger-client-3.18.0.tgz#2e59e666b38ded983e26fb512421ef8ff82547f0" - integrity sha512-lNfwTXHim0QiCNuZ4BKgWle7N7+9WlFLtcP02n0xSchFtdzsKJb2kWsOlwplRU3appVFjnHRy+1eVabRc3ZhbA== +swagger-client@^3.18.4: + version "3.18.4" + resolved "https://registry.npmjs.org/swagger-client/-/swagger-client-3.18.4.tgz#71be9df585157a3335a542c407733d2134fa75e9" + integrity sha512-Wj26oEctONq/u0uM+eSj18675YM5e2vFnx7Kr4neLeXEHKUsfceVQ/OdtrBXdrT3VbtdBbZfMTfl1JOBpix2MA== dependencies: "@babel/runtime-corejs3" "^7.11.2" btoa "^1.2.1" cookie "~0.4.1" - cross-fetch "^3.1.4" - deep-extend "~0.6.0" + cross-fetch "^3.1.5" + deepmerge "~4.2.2" fast-json-patch "^3.0.0-1" form-data-encoder "^1.4.3" formdata-node "^4.0.0" @@ -22758,11 +21882,11 @@ swagger-client@^3.17.0: url "~0.11.0" swagger-ui-react@^4.1.3: - version "4.1.3" - resolved "https://registry.npmjs.org/swagger-ui-react/-/swagger-ui-react-4.1.3.tgz#a722ecbe54ef237fa9080447a7c708c4c72d846a" - integrity sha512-o1AoXUTNH40cxWus0QOeWQ8x9tSIEmrLBrOgAOHDnvWJ1qyjT8PjgHjPbUVjMbja18coyuaAAeUdyLKvLGmlDA== + version "4.5.0" + resolved "https://registry.npmjs.org/swagger-ui-react/-/swagger-ui-react-4.5.0.tgz#e79253d112a18fbf28874792c6ead47dee160074" + integrity sha512-fcLvjudm4u0GjKtuMCB2hFFkJ5Dqtv4PcP4e0h4HbnZ6MVU4v/J6gMK0e9/5VnGlana5TpXbU32muO59cEt5/w== dependencies: - "@babel/runtime-corejs3" "^7.16.3" + "@babel/runtime-corejs3" "^7.16.8" "@braintree/sanitize-url" "^5.0.2" base64-js "^1.5.1" classnames "^2.3.1" @@ -22774,7 +21898,6 @@ swagger-ui-react@^4.1.3: js-file-download "^0.4.12" js-yaml "=4.1.0" lodash "^4.17.21" - memoizee "^0.4.15" prop-types "^15.7.2" randombytes "^2.1.0" react-copy-to-clipboard "5.0.4" @@ -22787,10 +21910,10 @@ swagger-ui-react@^4.1.3: redux "^4.1.2" redux-immutable "^4.0.0" remarkable "^2.0.1" - reselect "^4.0.0" + reselect "^4.1.5" serialize-error "^8.1.0" sha.js "^2.4.11" - swagger-client "^3.17.0" + swagger-client "^3.18.4" url-parse "^1.5.3" xml "=1.0.1" xml-but-prettier "^1.0.1" @@ -22804,11 +21927,11 @@ swap-case@^2.0.2: tslib "^2.0.3" swr@^1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/swr/-/swr-1.1.2.tgz#9f3de2541931fccf03c48f322f1fc935a7551612" - integrity sha512-UsM0eo5T+kRPyWFZtWRx2XR5qzohs/LS4lDC0GCyLpCYFmsfTk28UCVDbOE9+KtoXY4FnwHYiF+ZYEU3hnJ1lQ== + version "1.2.1" + resolved "https://registry.npmjs.org/swr/-/swr-1.2.1.tgz#c21a4fe2139cb1c4630450589b5b5add947a9d41" + integrity sha512-1cuWXqJqXcFwbgONGCY4PHZ8v05009JdHsC3CIC6u7d00kgbMswNr1sHnnhseOBxtzVqcCNpOHEgVDciRer45w== -symbol-observable@1.2.0, symbol-observable@^1.0.4, symbol-observable@^1.1.0, symbol-observable@^1.2.0: +symbol-observable@^1.0.4, symbol-observable@^1.1.0: version "1.2.0" resolved "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== @@ -22888,7 +22011,7 @@ tar@^4.4.12: safe-buffer "^5.2.1" yallist "^3.1.1" -tar@^6.0.2, tar@^6.1.0, tar@^6.1.2: +tar@^6.0.2, tar@^6.1.0, tar@^6.1.11, tar@^6.1.2: version "6.1.11" resolved "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621" integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA== @@ -22937,11 +22060,11 @@ tdigest@^0.1.1: react-use "^17.2.4" teeny-request@^7.0.0: - version "7.0.1" - resolved "https://registry.npmjs.org/teeny-request/-/teeny-request-7.0.1.tgz#bdd41fdffea5f8fbc0d29392cb47bec4f66b2b4c" - integrity sha512-sasJmQ37klOlplL4Ia/786M5YlOcoLGQyq2TE4WHSRupbAuDaQW0PfVxV4MtdBtRJ4ngzS+1qim8zP6Zp35qCw== + version "7.1.3" + resolved "https://registry.npmjs.org/teeny-request/-/teeny-request-7.1.3.tgz#5a3d90c559a6c664a993477b138e331a518765ba" + integrity sha512-Ew3aoFzgQEatLA5OBIjdr1DWJUaC1xardG+qbPPo5k/y/3fMwXLxpjh5UB5dVfElktLaQbbMs80chkz53ByvSg== dependencies: - http-proxy-agent "^4.0.0" + http-proxy-agent "^5.0.0" https-proxy-agent "^5.0.0" node-fetch "^2.6.1" stream-events "^1.0.5" @@ -22971,9 +22094,9 @@ temp@^0.8.4: rimraf "~2.6.2" term-size@^2.1.0: - version "2.2.0" - resolved "https://registry.npmjs.org/term-size/-/term-size-2.2.0.tgz#1f16adedfe9bdc18800e1776821734086fcc6753" - integrity sha512-a6sumDlzyHVJWb8+YofY4TW112G6p2FCPEAFk+59gIYHv3XHRhm9ltVQ9kli4hNWeQBwSpe8cRN25x0ROunMOw== + version "2.2.1" + resolved "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz#2a6a54840432c2fb6320fea0f415531e90189f54" + integrity sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg== terminal-link@^2.0.0: version "2.1.1" @@ -22984,17 +22107,17 @@ terminal-link@^2.0.0: supports-hyperlinks "^2.0.0" terser-webpack-plugin@*, terser-webpack-plugin@^5.1.3: - version "5.3.0" - resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.0.tgz#21641326486ecf91d8054161c816e464435bae9f" - integrity sha512-LPIisi3Ol4chwAaPP8toUJ3L4qCM1G0wao7L3qNv57Drezxj6+VEyySpPw4B1HSO2Eg/hDY/MNF5XihCAoqnsQ== + version "5.3.1" + resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz#0320dcc270ad5372c1e8993fabbd927929773e54" + integrity sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g== dependencies: - jest-worker "^27.4.1" + jest-worker "^27.4.5" schema-utils "^3.1.1" serialize-javascript "^6.0.0" source-map "^0.6.1" terser "^5.7.2" -terser@^5.10.0: +terser@^5.10.0, terser@^5.7.2: version "5.10.0" resolved "https://registry.npmjs.org/terser/-/terser-5.10.0.tgz#b86390809c0389105eb0a0b62397563096ddafcc" integrity sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA== @@ -23003,15 +22126,6 @@ terser@^5.10.0: source-map "~0.7.2" source-map-support "~0.5.20" -terser@^5.7.2: - version "5.9.0" - resolved "https://registry.npmjs.org/terser/-/terser-5.9.0.tgz#47d6e629a522963240f2b55fcaa3c99083d2c351" - integrity sha512-h5hxa23sCdpzcye/7b8YqbE5OwKca/ni0RQz1uRX3tGh8haaGHqcuSqbGRybuAKNdntZ0mDgFNXPJ48xQ2RXKQ== - dependencies: - commander "^2.20.0" - source-map "~0.7.2" - source-map-support "~0.5.20" - test-exclude@^6.0.0: version "6.0.0" resolved "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" @@ -23120,29 +22234,21 @@ tildify@2.0.0: integrity sha512-Cc+OraorugtXNfs50hU9KS369rFXCfgGLpfCfvlc+Ud5u6VWmUQsOAa9HbTvheQdYnrdJqqv1e5oIqXppMYnSw== timers-browserify@^2.0.4: - version "2.0.11" - resolved "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz#800b1f3eee272e5bc53ee465a04d0e804c31211f" - integrity sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ== + version "2.0.12" + resolved "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" + integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ== dependencies: setimmediate "^1.0.4" -timers-ext@^0.1.7: - version "0.1.7" - resolved "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz#6f57ad8578e07a3fb9f91d9387d65647555e25c6" - integrity sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ== - dependencies: - es5-ext "~0.10.46" - next-tick "1" - timsort@^0.3.0, timsort@~0.3.0: version "0.3.0" resolved "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= tiny-invariant@^1.0.6: - version "1.1.0" - resolved "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.1.0.tgz#634c5f8efdc27714b7f386c35e6760991d230875" - integrity sha512-ytxQvrb1cPc9WBEI/HSeYYoGD0kWnGEOR8RY6KomWLBVhqz0RgTwVO9dLrGz7dC+nN9llyI7OKAgRq8Vq4ZBSw== + version "1.2.0" + resolved "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.2.0.tgz#a1141f86b672a9148c72e978a19a73b9b94a15a9" + integrity sha512-1Uhn/aqw5C6RI4KejVeTg6mIS7IqxnLJ8Mv2tV5rTc0qWobay7pDUz6Wi392Cnc8ak1H0F2cjoRzb2/AW4+Fvg== tiny-merge-patch@^0.1.2: version "0.1.2" @@ -23162,9 +22268,9 @@ title-case@^3.0.3: tslib "^2.0.3" tmp-promise@^3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/tmp-promise/-/tmp-promise-3.0.2.tgz#6e933782abff8b00c3119d63589ca1fb9caaa62a" - integrity sha512-OyCLAKU1HzBjL6Ev3gxUeraJNlbNingmi8IrHHEsYH8LTmEuhvYfqvhn2F/je+mjf4N58UmZ96OMEy1JanSCpA== + version "3.0.3" + resolved "https://registry.npmjs.org/tmp-promise/-/tmp-promise-3.0.3.tgz#60a1a1cc98c988674fcbfd23b6e3367bdeac4ce7" + integrity sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ== dependencies: tmp "^0.2.0" @@ -23182,7 +22288,7 @@ tmp@^0.2.0, tmp@~0.2.1: dependencies: rimraf "^3.0.0" -tmpl@1.0.x: +tmpl@1.0.5: version "1.0.5" resolved "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== @@ -23269,23 +22375,6 @@ touch@^3.1.0: dependencies: nopt "~1.0.10" -tough-cookie@^2.3.3, tough-cookie@~2.5.0: - version "2.5.0" - resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" - integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== - dependencies: - psl "^1.1.28" - punycode "^2.1.1" - -tough-cookie@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz#9df4f57e739c26930a018184887f4adb7dca73b2" - integrity sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg== - dependencies: - ip-regex "^2.1.0" - psl "^1.1.28" - punycode "^2.1.1" - tough-cookie@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4" @@ -23295,11 +22384,12 @@ tough-cookie@^4.0.0: punycode "^2.1.1" universalify "^0.1.2" -tr46@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/tr46/-/tr46-2.0.2.tgz#03273586def1595ae08fedb38d7733cee91d2479" - integrity sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg== +tough-cookie@~2.5.0: + version "2.5.0" + resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== dependencies: + psl "^1.1.28" punycode "^2.1.1" tr46@^2.1.0: @@ -23339,11 +22429,6 @@ trim-newlines@^3.0.0: resolved "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== -trim-off-newlines@^1.0.0: - version "1.0.3" - resolved "https://registry.npmjs.org/trim-off-newlines/-/trim-off-newlines-1.0.3.tgz#8df24847fcb821b0ab27d58ab6efec9f2fe961a1" - integrity sha512-kh6Tu6GbeSNMGfrrZh6Bb/4ZEHV1QlB4xNDBeog8Y9/QwFlKTRyWvY3Fs9tRDAMZliVUwieMgEdIeL/FtqjkJg== - triple-beam@^1.3.0: version "1.3.0" resolved "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz#a595214c7298db8339eeeee083e4d10bd8cb8dd9" @@ -23365,14 +22450,14 @@ 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" - resolved "https://registry.npmjs.org/ts-log/-/ts-log-2.2.3.tgz#4da5640fe25a9fb52642cd32391c886721318efb" - integrity sha512-XvB+OdKSJ708Dmf9ore4Uf/q62AYDTzFcAdxc8KNML1mmAWywRFVt/dn1KYJH8Agt5UJNujfM3znU5PxgAzA2w== + version "2.2.4" + resolved "https://registry.npmjs.org/ts-log/-/ts-log-2.2.4.tgz#d672cf904b33735eaba67a7395c93d45fba475b3" + integrity sha512-DEQrfv6l7IvN2jlzc/VTdZJYsWUnQNCsueYjMkC/iXoEoi5fNan6MjeDqkvhfzbmHgdz9UxDUluX3V5HdjTydQ== ts-node@^10.0.0, ts-node@^10.2.1, ts-node@^10.4.0: version "10.5.0" @@ -23500,11 +22585,6 @@ type-detect@4.0.8, type-detect@^4.0.8: resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== -type-fest@^0.11.0: - version "0.11.0" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" - integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== - type-fest@^0.13.1: version "0.13.1" resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz#0172cb5bce80b0bd542ea348db50c7e21834d934" @@ -23520,6 +22600,11 @@ type-fest@^0.20.2: resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + type-fest@^0.4.1: version "0.4.1" resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.4.1.tgz#8bdf77743385d8a4f13ba95f610f5ccd68c728f8" @@ -23548,20 +22633,10 @@ type-is@~1.6.18: media-typer "0.3.0" mime-types "~2.1.24" -type@^1.0.1: - version "1.2.0" - resolved "https://registry.npmjs.org/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" - integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== - -type@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/type/-/type-2.0.0.tgz#5f16ff6ef2eb44f260494dae271033b29c09a9c3" - integrity sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow== - typed-rest-client@^1.8.4: - version "1.8.4" - resolved "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.8.4.tgz#ba3fb788e5b9322547406392533f12d660a5ced6" - integrity sha512-MyfKKYzk3I6/QQp6e1T50py4qg+c+9BzOEl2rBmQIpStwNUoqQ73An+Tkfy9YuV7O+o2mpVVJpe+fH//POZkbg== + version "1.8.6" + resolved "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.8.6.tgz#d8facd6abd98cbd8ad14cccf056ca5cc306919d7" + integrity sha512-xcQpTEAJw2DP7GqVNECh4dD+riS+C1qndXLfBCJ3xk0kqprtGN491P5KlmrDbKdtuW8NEcP/5ChxiJI3S9WYTA== dependencies: qs "^6.9.1" tunnel "0.0.6" @@ -23602,10 +22677,10 @@ typescript@~4.5.2, typescript@~4.5.4: resolved "https://registry.npmjs.org/typescript/-/typescript-4.5.5.tgz#d8c953832d28924a9e3d37c73d729c846c5896f3" integrity sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA== -ua-parser-js@^0.7.18: - version "0.7.28" - resolved "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.28.tgz#8ba04e653f35ce210239c64661685bf9121dec31" - integrity sha512-6Gurc1n//gjp9eQNXjD9O3M/sMwVtN5S8Lv9bvOYBfKfDNiIIhqiyi01vMBO45u4zkDE420w/e0se7Vs+sIg+g== +ua-parser-js@^0.7.30: + version "0.7.31" + resolved "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.31.tgz#649a656b191dffab4f21d5e053e27ca17cbff5c6" + integrity sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ== uc.micro@^1.0.1, uc.micro@^1.0.5: version "1.0.6" @@ -23613,9 +22688,9 @@ uc.micro@^1.0.1, uc.micro@^1.0.5: integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA== uglify-js@^3.1.4: - version "3.14.3" - resolved "https://registry.npmjs.org/uglify-js/-/uglify-js-3.14.3.tgz#c0f25dfea1e8e5323eccf59610be08b6043c15cf" - integrity sha512-mic3aOdiq01DuSVx0TseaEzMIVqebMZ0Z3vaeDhFEh9bsc24hV1TFvN74reA2vs08D0ZWfNjAcJ3UbVLaBss+g== + version "3.15.1" + resolved "https://registry.npmjs.org/uglify-js/-/uglify-js-3.15.1.tgz#9403dc6fa5695a6172a91bc983ea39f0f7c9086d" + integrity sha512-FAGKF12fWdkpvNJZENacOH0e/83eG6JyVQyanIJaBXCN1J11TUQv1T1/z8S+Z0CG0ZPk1nPcreF/c7lrTd0TEQ== uid-number@0.0.6: version "0.0.6" @@ -23629,26 +22704,21 @@ uid-safe@~2.1.5: dependencies: random-bytes "~1.0.0" -uid2@0.0.3, uid2@0.0.x: +uid2@0.0.3: version "0.0.3" resolved "https://registry.npmjs.org/uid2/-/uid2-0.0.3.tgz#483126e11774df2f71b8b639dcd799c376162b82" integrity sha1-SDEm4Rd03y9xuLY53NeZw3YWK4I= +uid2@0.0.x: + version "0.0.4" + resolved "https://registry.npmjs.org/uid2/-/uid2-0.0.4.tgz#033f3b1d5d32505f5ce5f888b9f3b667123c0a44" + integrity sha512-IevTus0SbGwQzYh3+fRsAMTVVPOoIVufzacXcHPmdlle1jUpq7BRL+mw3dgeLanvGZdwwbWhRV6XrcFNdBmjWA== + umask@^1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/umask/-/umask-1.1.0.tgz#f29cebf01df517912bb58ff9c4e50fde8e33320d" integrity sha1-8pzr8B31F5ErtY/5xOUP3o4zMg0= -unbox-primitive@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.0.tgz#eeacbc4affa28e9b3d36b5eaeccc50b3251b1d3f" - integrity sha512-P/51NX+JXyxK/aigg1/ZgyccdAxm5K1+n8+tvqSntjOivPt19gvm1VC49RWYetsiub8WViUchdxl/KWHHB0kzA== - dependencies: - function-bind "^1.1.1" - has-bigints "^1.0.0" - has-symbols "^1.0.0" - which-boxed-primitive "^1.0.1" - unbox-primitive@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" @@ -23678,42 +22748,42 @@ undefsafe@^2.0.5: integrity sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA== underscore@^1.12.1, underscore@^1.9.1: - version "1.13.1" - resolved "https://registry.npmjs.org/underscore/-/underscore-1.13.1.tgz#0c1c6bd2df54b6b69f2314066d65b6cde6fcf9d1" - integrity sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g== + version "1.13.2" + resolved "https://registry.npmjs.org/underscore/-/underscore-1.13.2.tgz#276cea1e8b9722a8dbed0100a407dda572125881" + integrity sha512-ekY1NhRzq0B08g4bGuX4wd2jZx5GnKz6mKSqFL4nqBlfyMGiG10gDFhDTMEfYmDL6Jy0FUIZp7wiRB+0BP7J2g== undici@^4.9.3: - version "4.11.0" - resolved "https://registry.npmjs.org/undici/-/undici-4.11.0.tgz#41fb4f944704d77e1c9fb472d40d2dbece64ccf2" - integrity sha512-gofXRqAdm81rzaZgPbMf98qvrNGd3ptJ26+mCcF3EXoC817p//MtL8XcDpTvHUXxdW27rAM2jvTae+KyAchorw== + version "4.14.1" + resolved "https://registry.npmjs.org/undici/-/undici-4.14.1.tgz#7633b143a8a10d6d63335e00511d071e8d52a1d9" + integrity sha512-WJ+g+XqiZcATcBaUeluCajqy4pEDcQfK1vy+Fo+bC4/mqXI9IIQD/XWHLS70fkGUT6P52Drm7IFslO651OdLPQ== -unicode-canonical-property-names-ecmascript@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" - integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== +unicode-canonical-property-names-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" + integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== -unicode-match-property-ecmascript@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" - integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== +unicode-match-property-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" + integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== dependencies: - unicode-canonical-property-names-ecmascript "^1.0.4" - unicode-property-aliases-ecmascript "^1.0.4" + unicode-canonical-property-names-ecmascript "^2.0.0" + unicode-property-aliases-ecmascript "^2.0.0" -unicode-match-property-value-ecmascript@^1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" - integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== +unicode-match-property-value-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz#1a01aa57247c14c568b89775a54938788189a714" + integrity sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw== -unicode-property-aliases-ecmascript@^1.0.4: - version "1.1.0" - resolved "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" - integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== +unicode-property-aliases-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz#0a36cb9a585c4f6abd51ad1deddb285c165297c8" + integrity sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ== unified@^10.0.0: - version "10.1.0" - resolved "https://registry.npmjs.org/unified/-/unified-10.1.0.tgz#4e65eb38fc2448b1c5ee573a472340f52b9346fe" - integrity sha512-4U3ru/BRXYYhKbwXV6lU6bufLikoAavTwev89H5UxY8enDFaAT2VXmIXYNm6hb5oHPng/EXr77PVyDFcptbk5g== + version "10.1.1" + resolved "https://registry.npmjs.org/unified/-/unified-10.1.1.tgz#345e349e3ab353ab612878338eb9d57b4dea1d46" + integrity sha512-v4ky1+6BN9X3pQrOdkFIPWAaeDsHPE1svRDxq7YpTc2plkIqFMwukfqM+l0ewpP9EfwARlt9pPFAeWYhHm8X9w== dependencies: "@types/unist" "^2.0.0" bail "^2.0.0" @@ -23733,11 +22803,6 @@ union-value@^1.0.0: is-extendable "^0.1.1" set-value "^2.0.1" -uniq@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" - integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= - unique-filename@^1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" @@ -23830,13 +22895,6 @@ universal-github-app-jwt@^1.0.1: "@types/jsonwebtoken" "^8.3.3" jsonwebtoken "^8.5.1" -universal-user-agent@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-5.0.0.tgz#a3182aa758069bf0e79952570ca757de3579c1d9" - integrity sha512-B5TPtzZleXyPrUMKCpEHFmVhMN6EhmJYjG5PQna9s7mXeSqGTLap4OpqLl5FCEFUI3UBmllkETwKf/db66Y54Q== - dependencies: - os-name "^3.1.0" - universal-user-agent@^6.0.0: version "6.0.0" resolved "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz#3381f8503b251c0d9cd21bc1de939ec9df5480ee" @@ -23847,11 +22905,6 @@ universalify@^0.1.0, universalify@^0.1.2: resolved "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== -universalify@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d" - integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug== - universalify@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" @@ -23938,9 +22991,9 @@ upper-case@^2.0.2: tslib "^2.0.3" uri-js@^4.2.2: - version "4.2.2" - resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" - integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== + version "4.4.1" + resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== dependencies: punycode "^2.1.0" @@ -23957,17 +23010,17 @@ url-parse-lax@^3.0.0: prepend-http "^2.0.0" url-parse@^1.5.3: - version "1.5.3" - resolved "https://registry.npmjs.org/url-parse/-/url-parse-1.5.3.tgz#71c1303d38fb6639ade183c2992c8cc0686df862" - integrity sha512-IIORyIQD9rvj0A4CLWsHkBBJuNqWpFQe224b6j9t/ABmquIS0qDU2pY6kl6AuOrL5OkCXHMCFNe1jBcuAggjvQ== + version "1.5.7" + resolved "https://registry.npmjs.org/url-parse/-/url-parse-1.5.7.tgz#00780f60dbdae90181f51ed85fb24109422c932a" + integrity sha512-HxWkieX+STA38EDk7CE9MEryFeHCKzgagxlGvsdS7WBImq9Mk+PGwiT56w82WI3aicwJA8REp42Cxo98c8FZMA== dependencies: querystringify "^2.1.1" requires-port "^1.0.0" url-value-parser@^2.0.0: - version "2.0.3" - resolved "https://registry.npmjs.org/url-value-parser/-/url-value-parser-2.0.3.tgz#cd4b8d6754e458d65e8125260c09718d926e6e21" - integrity sha512-FjIX+Q9lYmDM9uYIGdMYfQW0uLbWVwN2NrL2ayAI7BTOvEwzH+VoDdNquwB9h4dFAx+u6mb0ONLa3sHD5DvyvA== + version "2.1.0" + resolved "https://registry.npmjs.org/url-value-parser/-/url-value-parser-2.1.0.tgz#fe1ae776122b2eea4bbf284896bbdcd7fc75e1fa" + integrity sha512-gIYPWXujdUdwd/9TGCHTf5Vvgw6lOxjE5Q/k+7WNByYyS0vW5WX0k+xuVlhvPq6gRNhzXVv/ezC+OfeAet5Kcw== url@0.10.3: version "0.10.3" @@ -23991,9 +23044,9 @@ use-immer@^0.6.0: integrity sha512-dFGRfvWCqPDTOt/S431ETYTg6+uxbpb7A1pptufwXVzGJY3RlXr38+3wyLNpc6SbbmAKjWl6+EP6uW74fkEsXQ== use-memo-one@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/use-memo-one/-/use-memo-one-1.1.1.tgz#39e6f08fe27e422a7d7b234b5f9056af313bd22c" - integrity sha512-oFfsyun+bP7RX8X2AskHNTxu+R3QdE/RC5IefMbqptmACAA/gfol1KDD5KRzPsGMa62sWxGZw+Ui43u6x4ddoQ== + version "1.1.2" + resolved "https://registry.npmjs.org/use-memo-one/-/use-memo-one-1.1.2.tgz#0c8203a329f76e040047a35a1197defe342fab20" + integrity sha512-u2qFKtxLsia/r8qG0ZKkbytbztzRb317XCkT7yP8wxL0tZ/CzK2G+WWie5vWvpyeP7+YoPIwbJoIHJ4Ba4k0oQ== use-resize-observer@^7.0.0: version "7.1.0" @@ -24086,14 +23139,14 @@ v8-compile-cache-lib@^3.0.0: integrity sha512-mpSYqfsFvASnSn5qMiwrr4VKfumbPyONLCOPmsR3A6pTY/r0+tSaVbgPWSAIuzbk3lCTa+FForeTiO+wBQGkjA== v8-compile-cache@^2.0.3: - version "2.1.0" - resolved "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" - integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g== + version "2.3.0" + resolved "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" + integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== v8-to-istanbul@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-7.0.0.tgz#b4fe00e35649ef7785a9b7fcebcea05f37c332fc" - integrity sha512-fLL2rFuQpMtm9r8hrAV2apXX/WqHJ6+IC4/eQVdMDGBUgH/YMV4Gv3duk3kjmyg6uiQWBAA9nJwue4iJUOkHeA== + version "7.1.2" + resolved "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-7.1.2.tgz#30898d1a7fa0c84d225a2c1434fb958f290883c1" + integrity sha512-TxNb7YEUwkLXCQYeudi6lgQ/SZrzNO4kMdlqVxaZPUIUjCv6iSSypUQX70kNBSERpQ8fk48+d61FXk+tgqcWow== dependencies: "@types/istanbul-lib-coverage" "^2.0.1" convert-source-map "^1.6.0" @@ -24170,13 +23223,13 @@ vary@^1, vary@~1.1.2: integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= vasync@^2.2.0: - version "2.2.0" - resolved "https://registry.npmjs.org/vasync/-/vasync-2.2.0.tgz#cfde751860a15822db3b132bc59b116a4adaf01b" - integrity sha1-z951GGChWCLbOxMrxZsRakra8Bs= + version "2.2.1" + resolved "https://registry.npmjs.org/vasync/-/vasync-2.2.1.tgz#d881379ff3685e4affa8e775cf0fd369262a201b" + integrity sha512-Hq72JaTpcTFdWiNA4Y22Amej2GH3BFmBaKPPlDZ4/oC8HNn2ISHLkFrJU4Ds8R3jcUi7oo5Y9jcMHKjES+N9wQ== dependencies: verror "1.10.0" -verror@1.10.0, verror@^1.8.1: +verror@1.10.0: version "1.10.0" resolved "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= @@ -24185,18 +23238,27 @@ verror@1.10.0, verror@^1.8.1: core-util-is "1.0.2" extsprintf "^1.2.0" +verror@^1.8.1: + version "1.10.1" + resolved "https://registry.npmjs.org/verror/-/verror-1.10.1.tgz#4bf09eeccf4563b109ed4b3d458380c972b0cdeb" + integrity sha512-veufcmxri4e3XSrT0xwfUR7kguIkaxBeosDg00yDWhk49wdwkSUrvvsm7nc75e1PUyvIeZj6nS8VQRYz2/S4Xg== + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + vfile-message@^3.0.0: - version "3.0.2" - resolved "https://registry.npmjs.org/vfile-message/-/vfile-message-3.0.2.tgz#db7eaebe7fecb853010f2ef1664427f52baf8f74" - integrity sha512-UUjZYIOg9lDRwwiBAuezLIsu9KlXntdxwG+nXnjuQAHvBpcX3x0eN8h+I7TkY5nkCXj+cWVp4ZqebtGBvok8ww== + version "3.1.0" + resolved "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.0.tgz#5437035aa43185ff4b9210d32fada6c640e59143" + integrity sha512-4QJbBk+DkPEhBXq3f260xSaWtjE4gPKOfulzfMFF8ZNwaPZieWsg3iVlcmF04+eebzpcpeXOOFMfrYzJHVYg+g== dependencies: "@types/unist" "^2.0.0" unist-util-stringify-position "^3.0.0" vfile@^5.0.0: - version "5.1.0" - resolved "https://registry.npmjs.org/vfile/-/vfile-5.1.0.tgz#18e78016f0f71e98d737d40f0fca921dc264a600" - integrity sha512-4o7/DJjEaFPYSh0ckv5kcYkJTHQgCKdL8ozMM1jLAxO9ox95IzveDPXCZp08HamdWq8JXTkClDvfAKaeLQeKtg== + version "5.3.0" + resolved "https://registry.npmjs.org/vfile/-/vfile-5.3.0.tgz#4990c78cb3157005590ee8c930b71cd7fa6a006e" + integrity sha512-Tj44nY/48OQvarrE4FAjUfrv7GZOYzPbl5OD65HxVKwLJKMPU7zmfV8cCgCnzKWnSfYG2f3pxu+ALqs7j22xQQ== dependencies: "@types/unist" "^2.0.0" is-buffer "^2.0.0" @@ -24232,17 +23294,17 @@ vm-browserify@^1.0.1: integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== vm2@^3.9.6: - version "3.9.7" - resolved "https://registry.npmjs.org/vm2/-/vm2-3.9.7.tgz#bb87aa677c97c61e23a6cb6547e44e990517a6f6" - integrity sha512-g/GZ7V0Mlmch3eDVOATvAXr1GsJNg6kQ5PjvYy3HbJMCRn5slNbo/u73Uy7r5yUej1cRa3ZjtoVwcWSQuQ/fow== + version "3.9.8" + resolved "https://registry.npmjs.org/vm2/-/vm2-3.9.8.tgz#e99c000db042735cd2f94d8db6c42163a17be04e" + integrity sha512-/1PYg/BwdKzMPo8maOZ0heT7DLI0DAFTm7YQaz/Lim9oIaFZsJs3EdtalvXuBfZwczNwsYhju75NW4d6E+4q+w== dependencies: acorn "^8.7.0" acorn-walk "^8.2.0" vscode-languageserver-types@^3.15.1: - version "3.15.1" - resolved "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.15.1.tgz#17be71d78d2f6236d414f0001ce1ef4d23e6b6de" - integrity sha512-+a9MPUQrNGRrGU630OGbYVQ+11iOIovjCkqxajPa9w57Sd5ruK8WQNsslzpa0x/QJqC8kRc2DUxWjIFwoNm4ZQ== + version "3.16.0" + resolved "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0.tgz#ecf393fc121ec6974b2da3efb3155644c514e247" + integrity sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA== w3c-hr-time@^1.0.2: version "1.0.2" @@ -24285,11 +23347,11 @@ walk-up-path@^1.0.0: integrity sha512-hwj/qMDUEjCU5h0xr90KGCf0tg0/LgJbmOWgrWKYlcJZM7XvquvUJZ0G/HMGr7F7OQMOUuPHWP9JpriinkAlkg== walker@^1.0.7, walker@~1.0.5: - version "1.0.7" - resolved "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" - integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= + version "1.0.8" + resolved "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" + integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== dependencies: - makeerror "1.0.x" + makeerror "1.0.12" watchpack@^2.3.1: version "2.3.1" @@ -24318,6 +23380,11 @@ web-streams-polyfill@4.0.0-beta.1: resolved "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.1.tgz#3b19b9817374b7cee06d374ba7eeb3aeb80e8c95" integrity sha512-3ux37gEX670UUphBF9AMCq8XM6iQ8Ac6A+DSRRjDoRBm1ufCkaCDdNVbaqq60PsEkdNlLKrGtv/YBP4EJXqNtQ== +web-streams-polyfill@^3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.0.tgz#a6b74026b38e4885869fb5c589e90b95ccfc7965" + integrity sha512-EqPmREeOzttaLRm5HS7io98goBgZ7IVz79aDvqjD0kYXLtFZTc0T/U6wHTPKyIjb+MdN7DFIIX6hgdBEpWmfPA== + webidl-conversions@^3.0.0: version "3.0.1" resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" @@ -24333,30 +23400,31 @@ webidl-conversions@^6.1.0: resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== -webpack-dev-middleware@^5.3.0: - version "5.3.0" - resolved "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.0.tgz#8fc02dba6e72e1d373eca361623d84610f27be7c" - integrity sha512-MouJz+rXAm9B1OTOYaJnn6rtD/lWZPy2ufQCH3BPs8Rloh/Du6Jze4p7AeLYHkVi0giJnYLaSGDC7S+GM9arhg== +webpack-dev-middleware@^5.3.1: + version "5.3.1" + resolved "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.1.tgz#aa079a8dedd7e58bfeab358a9af7dab304cee57f" + integrity sha512-81EujCKkyles2wphtdrnPg/QqegC/AtqNH//mQkBYSMqwFVCQrxM6ktB2O/SPlZy7LqeEfTbV3cZARGQz6umhg== dependencies: colorette "^2.0.10" - memfs "^3.2.2" + memfs "^3.4.1" mime-types "^2.1.31" range-parser "^1.2.1" schema-utils "^4.0.0" webpack-dev-server@^4.7.3: - version "4.7.3" - resolved "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.7.3.tgz#4e995b141ff51fa499906eebc7906f6925d0beaa" - integrity sha512-mlxq2AsIw2ag016nixkzUkdyOE8ST2GTy34uKSABp1c4nhjZvH90D5ZRR+UOLSsG4Z3TFahAi72a3ymRtfRm+Q== + version "4.7.4" + resolved "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.7.4.tgz#d0ef7da78224578384e795ac228d8efb63d5f945" + integrity sha512-nfdsb02Zi2qzkNmgtZjkrMOcXnYZ6FLKcQwpxT7MvmHKc+oTtDsBju8j+NMyAygZ9GW1jMEUpy3itHtqgEhe1A== dependencies: "@types/bonjour" "^3.5.9" "@types/connect-history-api-fallback" "^1.3.5" + "@types/express" "^4.17.13" "@types/serve-index" "^1.9.1" "@types/sockjs" "^0.3.33" "@types/ws" "^8.2.2" ansi-html-community "^0.0.8" bonjour "^3.5.0" - chokidar "^3.5.2" + chokidar "^3.5.3" colorette "^2.0.10" compression "^1.7.4" connect-history-api-fallback "^1.6.0" @@ -24376,8 +23444,8 @@ webpack-dev-server@^4.7.3: sockjs "^0.3.21" spdy "^4.0.2" strip-ansi "^7.0.0" - webpack-dev-middleware "^5.3.0" - ws "^8.1.0" + webpack-dev-middleware "^5.3.1" + ws "^8.4.2" webpack-node-externals@^3.0.0: version "3.0.0" @@ -24398,12 +23466,12 @@ webpack-sources@^3.2.3: integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== webpack@^5, webpack@^5.66.0: - version "5.67.0" - resolved "https://registry.npmjs.org/webpack/-/webpack-5.67.0.tgz#cb43ca2aad5f7cc81c4cd36b626e6b819805dbfd" - integrity sha512-LjFbfMh89xBDpUMgA1W9Ur6Rn/gnr2Cq1jjHFPo4v6a79/ypznSYbAyPgGhwsxBtMIaEmDD1oJoA7BEYw/Fbrw== + version "5.69.0" + resolved "https://registry.npmjs.org/webpack/-/webpack-5.69.0.tgz#c9eb607d4f6c49f1e5755492323a7b055c3450e3" + integrity sha512-E5Fqu89Gu8fR6vejRqu26h8ld/k6/dCVbeGUcuZjc+goQHDfCPU9rER71JmdtBYGmci7Ec2aFEATQ2IVXKy2wg== dependencies: - "@types/eslint-scope" "^3.7.0" - "@types/estree" "^0.0.50" + "@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" @@ -24411,7 +23479,7 @@ webpack@^5, webpack@^5.66.0: acorn-import-assertions "^1.7.6" browserslist "^4.14.5" chrome-trace-event "^1.0.2" - enhanced-resolve "^5.8.3" + enhanced-resolve "^5.9.0" es-module-lexer "^0.9.0" eslint-scope "5.1.1" events "^3.2.0" @@ -24427,16 +23495,7 @@ webpack@^5, webpack@^5.66.0: watchpack "^2.3.1" webpack-sources "^3.2.3" -websocket-driver@>=0.5.1: - version "0.7.3" - resolved "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.3.tgz#a2d4e0d4f4f116f1e6297eba58b05d430100e9f9" - integrity sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg== - dependencies: - http-parser-js ">=0.4.0 <0.4.11" - safe-buffer ">=5.1.0" - websocket-extensions ">=0.1.1" - -websocket-driver@^0.7.4: +websocket-driver@>=0.5.1, websocket-driver@^0.7.4: version "0.7.4" resolved "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== @@ -24458,9 +23517,9 @@ whatwg-encoding@^1.0.5: iconv-lite "0.4.24" whatwg-fetch@^3.4.1: - version "3.4.1" - resolved "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.4.1.tgz#e5f871572d6879663fa5674c8f833f15a8425ab3" - integrity sha512-sofZVzE1wKwO+EYPbWfiwzaKovWiZXf4coEzjGP9b2GBVgQRLQUZ2QcuPpQExGDAW5GItpEm6Tl4OU5mywnAoQ== + version "3.6.2" + resolved "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz#dced24f37f2624ed0281725d51d0e2e3fe677f8c" + integrity sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA== whatwg-mimetype@^2.3.0: version "2.3.0" @@ -24475,16 +23534,7 @@ whatwg-url@^5.0.0: tr46 "~0.0.3" webidl-conversions "^3.0.0" -whatwg-url@^8.0.0, whatwg-url@^8.4.0: - version "8.4.0" - resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.4.0.tgz#50fb9615b05469591d2b2bd6dfaed2942ed72837" - integrity sha512-vwTUFf6V4zhcPkWp/4CQPr1TW9Ml6SF4lVyaIMBdJw5i6qUUJ1QWM4Z6YYVkfka0OUIzVo/0aNtGVGk256IKWw== - dependencies: - lodash.sortby "^4.7.0" - tr46 "^2.0.2" - webidl-conversions "^6.1.0" - -whatwg-url@^8.5.0: +whatwg-url@^8.0.0, whatwg-url@^8.4.0, whatwg-url@^8.5.0: version "8.7.0" resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz#656a78e510ff8f3937bc0bcbe9f5c0ac35941b77" integrity sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg== @@ -24493,7 +23543,7 @@ whatwg-url@^8.5.0: tr46 "^2.1.0" webidl-conversions "^6.1.0" -which-boxed-primitive@^1.0.1, which-boxed-primitive@^1.0.2: +which-boxed-primitive@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== @@ -24523,17 +23573,16 @@ which-pm@2.0.0: path-exists "^4.0.0" which-typed-array@^1.1.2: - version "1.1.4" - resolved "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.4.tgz#8fcb7d3ee5adf2d771066fba7cf37e32fe8711ff" - integrity sha512-49E0SpUe90cjpoc7BOJwyPHRqSAd12c10Qm2amdEZrJPCY2NDxaW01zHITrem+rnETY3dwrbH3UUrUwagfCYDA== + version "1.1.7" + resolved "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.7.tgz#2761799b9a22d4b8660b3c1b40abaa7739691793" + integrity sha512-vjxaB4nfDqwKI0ws7wZpxIlde1XrLX5uB0ZjpfshgmapJMD7jJWhZI+yToJTqaFByF0eNBcYxbjmCzoRP7CfEw== dependencies: - available-typed-arrays "^1.0.2" - call-bind "^1.0.0" - es-abstract "^1.18.0-next.1" + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + es-abstract "^1.18.5" foreach "^2.0.5" - function-bind "^1.1.1" - has-symbols "^1.0.1" - is-typed-array "^1.1.3" + has-tostringtag "^1.0.0" + is-typed-array "^1.1.7" which@^1.2.9, which@^1.3.1: version "1.3.1" @@ -24568,14 +23617,7 @@ window-size@^0.2.0: resolved "https://registry.npmjs.org/window-size/-/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075" integrity sha1-tDFbtCFKPXBY6+7okuE/ok2YsHU= -windows-release@^3.1.0: - version "3.2.0" - resolved "https://registry.npmjs.org/windows-release/-/windows-release-3.2.0.tgz#8122dad5afc303d833422380680a79cdfa91785f" - integrity sha512-QTlz2hKLrdqukrsapKsINzqMgOUpQW268eJ0OaOpJN32h272waxR9fkB9VoWRtK7uKHG5EHJcTXQBD8XZVJkFA== - dependencies: - execa "^1.0.0" - -winston-transport@^4.4.2: +winston-transport@^4.5.0: version "4.5.0" resolved "https://registry.npmjs.org/winston-transport/-/winston-transport-4.5.0.tgz#6e7b0dd04d393171ed5e4e4905db265f7ab384fa" integrity sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q== @@ -24585,20 +23627,20 @@ winston-transport@^4.4.2: triple-beam "^1.3.0" winston@^3.2.1: - version "3.5.1" - resolved "https://registry.npmjs.org/winston/-/winston-3.5.1.tgz#b25cc899d015836dbf8c583dec8c4c4483a0da2e" - integrity sha512-tbRtVy+vsSSCLcZq/8nXZaOie/S2tPXPFt4be/Q3vI/WtYwm7rrwidxVw2GRa38FIXcJ1kUM6MOZ9Jmnk3F3UA== + version "3.6.0" + resolved "https://registry.npmjs.org/winston/-/winston-3.6.0.tgz#be32587a099a292b88c49fac6fa529d478d93fb6" + integrity sha512-9j8T75p+bcN6D00sF/zjFVmPp+t8KMPB1MzbbzYjeN9VWxdsYnTB40TkbNUEXAmILEfChMvAMgidlX64OG3p6w== dependencies: "@dabh/diagnostics" "^2.0.2" async "^3.2.3" is-stream "^2.0.0" - logform "^2.3.2" + logform "^2.4.0" one-time "^1.0.0" readable-stream "^3.4.0" safe-stable-stringify "^2.3.1" stack-trace "0.0.x" triple-beam "^1.3.0" - winston-transport "^4.4.2" + winston-transport "^4.5.0" word-wrap@^1.2.3, word-wrap@~1.2.3: version "1.2.3" @@ -24714,20 +23756,15 @@ ws@7.4.5: resolved "https://registry.npmjs.org/ws/-/ws-7.4.5.tgz#a484dd851e9beb6fdb420027e3885e8ce48986c1" integrity sha512-xzyu3hFvomRfXKH8vOFMU3OguG6oOvhXMo3xsGy3xWExqaM2dxBbVxuD99O7m3ZUFMvvscsZDqxfgMaRr/Nr1g== -ws@8.2.3: - version "8.2.3" - resolved "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz#63a56456db1b04367d0b721a0b80cae6d8becbba" - integrity sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA== +ws@8.5.0, ws@^8.4.2: + version "8.5.0" + resolved "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz#bfb4be96600757fe5382de12c670dab984a1ed4f" + integrity sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg== -ws@8.3.0, "ws@^5.2.0 || ^6.0.0 || ^7.0.0", ws@^7.2.3, ws@^7.3.1, ws@^7.4.6, ws@^8.3.0: - version "7.5.6" - resolved "https://registry.npmjs.org/ws/-/ws-7.5.6.tgz#e59fc509fb15ddfb65487ee9765c5a51dec5fe7b" - integrity sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA== - -ws@^8.1.0: - version "8.4.2" - resolved "https://registry.npmjs.org/ws/-/ws-8.4.2.tgz#18e749868d8439f2268368829042894b6907aa0b" - integrity sha512-Kbk4Nxyq7/ZWqr/tarI9yIt/+iNNFOjBXEWgTb4ydaNHBNGgvf2QHbS9fdfsndfjFlFwEd4Al+mw83YkaD10ZA== +"ws@^5.2.0 || ^6.0.0 || ^7.0.0", ws@^7.3.1, ws@^7.4.6, ws@^8.3.0: + version "7.5.7" + resolved "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz#9e0ac77ee50af70d58326ecff7e85eb3fa375e67" + integrity sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A== xcase@^2.0.1: version "2.0.1" @@ -24867,7 +23904,7 @@ yaml@^1.10.0, yaml@^1.10.2, yaml@^1.7.2, yaml@^1.9.2: resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== -yargs-parser@20.2.4, yargs-parser@^20.2.2, yargs-parser@^20.2.3: +yargs-parser@20.2.4: version "20.2.4" resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== @@ -24880,6 +23917,11 @@ yargs-parser@^18.1.2, yargs-parser@^18.1.3: camelcase "^5.0.0" decamelize "^1.2.0" +yargs-parser@^20.2.2, yargs-parser@^20.2.3: + version "20.2.9" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== + yargs-parser@^21.0.0: version "21.0.0" resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.0.tgz#a485d3966be4317426dd56bdb6a30131b281dc55" @@ -24910,7 +23952,7 @@ yargs@^15.1.0, yargs@^15.3.1, yargs@^15.4.1: y18n "^4.0.0" yargs-parser "^18.1.2" -yargs@^16.1.1, yargs@^16.2.0: +yargs@^16.2.0: version "16.2.0" resolved "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== From d34a821869db15c0ea39e4625a073b0dd2ccef93 Mon Sep 17 00:00:00 2001 From: Emma Indal Date: Tue, 15 Feb 2022 14:33:03 +0100 Subject: [PATCH 203/383] add note to documentation Signed-off-by: Emma Indal --- packages/techdocs-cli/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/techdocs-cli/README.md b/packages/techdocs-cli/README.md index b3bc860768..efedf89156 100644 --- a/packages/techdocs-cli/README.md +++ b/packages/techdocs-cli/README.md @@ -96,3 +96,5 @@ Run the cypress tests ```sh yarn cypress:open ``` + +> If its the first time you run Cypress, it will run a "Verifying Cypress can run" step. This step can result in a "Cypress verification timed out" error. If that is the case, let the verification step run and then run the command again and it should succeed. From c84b62d9001bfa42bea97767c3974ea043deaafb Mon Sep 17 00:00:00 2001 From: Emma Indal Date: Tue, 15 Feb 2022 14:33:34 +0100 Subject: [PATCH 204/383] add cypress config Signed-off-by: Emma Indal --- packages/techdocs-cli/cypress.json | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 packages/techdocs-cli/cypress.json diff --git a/packages/techdocs-cli/cypress.json b/packages/techdocs-cli/cypress.json new file mode 100644 index 0000000000..c684d973c7 --- /dev/null +++ b/packages/techdocs-cli/cypress.json @@ -0,0 +1,12 @@ +{ + "env": { + "mkDocsBaseUrl": "http://localhost:8000", + "backstageBaseUrl": "http://localhost:3000" + }, + "viewportWidth": 1920, + "viewportHeight": 1080, + "includeShadowDom": true, + "fixturesFolder": false, + "pluginsFile": false, + "supportFile": false +} From 4aa501594ffbef9112f7054aa74658f21266b3d3 Mon Sep 17 00:00:00 2001 From: Emma Indal Date: Tue, 15 Feb 2022 14:34:03 +0100 Subject: [PATCH 205/383] add cypress tests Signed-off-by: Emma Indal --- .../cypress/integration/backstage_serve.js | 48 +++++++++++++++++++ .../cypress/integration/mkdocs_serve.js | 39 +++++++++++++++ 2 files changed, 87 insertions(+) create mode 100644 packages/techdocs-cli/cypress/integration/backstage_serve.js create mode 100644 packages/techdocs-cli/cypress/integration/mkdocs_serve.js diff --git a/packages/techdocs-cli/cypress/integration/backstage_serve.js b/packages/techdocs-cli/cypress/integration/backstage_serve.js new file mode 100644 index 0000000000..342aa097af --- /dev/null +++ b/packages/techdocs-cli/cypress/integration/backstage_serve.js @@ -0,0 +1,48 @@ +/* + * 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. + */ + +describe('TechDocs Live Preview - Backstage server', () => { + it('successfully serves documentation', () => { + cy.visit(`${Cypress.env('backstageBaseUrl')}/docs/default/component/local`); + cy.get('[data-testid="techdocs-content-shadowroot"]').shadow(); + cy.title('hello mock docs'); + }); + + it('successfully navigates to sub page of documentation', () => { + cy.contains('SubDocs').click(); + cy.contains('Home 2').click(); + cy.contains( + 'This is an md file in another docs folder using the MkDocs Monorepo Plugin', + ); + }); + + it('successfully renders all Backstage main elements', () => { + cy.get('header'); + cy.get('header').contains('Live preview environment'); + cy.get('[data-testid="sidebar-root"]'); + cy.get('[data-testid="sidebar-root"]').contains('Docs Preview'); + }); + + it('successfully renders all extracted MkDocs main elements', () => { + // as it gets replaced by Backstage header + cy.get('.md-header').should('not.exist'); + cy.get('.md-main'); + cy.get('.md-nav'); + cy.get('.md-sidebar--primary'); + cy.get('.md-sidebar--secondary'); + cy.get('.md-footer'); + }); +}); diff --git a/packages/techdocs-cli/cypress/integration/mkdocs_serve.js b/packages/techdocs-cli/cypress/integration/mkdocs_serve.js new file mode 100644 index 0000000000..0e9c8dc8d5 --- /dev/null +++ b/packages/techdocs-cli/cypress/integration/mkdocs_serve.js @@ -0,0 +1,39 @@ +/* + * 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. + */ + +describe('TechDocs Live Preview - Mkdocs server', () => { + it('successfully serves documentation', () => { + cy.visit(Cypress.env('mkDocsBaseUrl')); + cy.title('hello mock docs'); + }); + + it('successfully navigates to sub page of documentation', () => { + cy.contains('SubDocs').click(); + cy.contains('Home 2').click(); + cy.contains( + 'This is an md file in another docs folder using the MkDocs Monorepo Plugin', + ); + }); + + it('successfully renders all main elements', () => { + cy.get('.md-header'); + cy.get('.md-container'); + cy.get('.md-nav'); + cy.get('.md-sidebar--primary'); + cy.get('.md-sidebar--secondary'); + cy.get('.md-footer'); + }); +}); From 4789c333417118db1fcad8f83ecfcc7590bc06ab Mon Sep 17 00:00:00 2001 From: Emma Indal Date: Tue, 15 Feb 2022 16:55:51 +0100 Subject: [PATCH 206/383] update docs Signed-off-by: Emma Indal --- packages/techdocs-cli/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/techdocs-cli/README.md b/packages/techdocs-cli/README.md index efedf89156..8526552c3e 100644 --- a/packages/techdocs-cli/README.md +++ b/packages/techdocs-cli/README.md @@ -87,8 +87,8 @@ yarn build --scope @techdocs/cli # Navigate to the example project cd techdocs-container/mock-docs -# Now execute the techdocs-cli binary -../../backstage/packages/techdocs-cli/bin/techdocs-cli +# Now execute the techdocs-cli serve command +../../backstage/packages/techdocs-cli/bin/techdocs-cli serve ``` Run the cypress tests From fcf63b8a8b5c29daf8e73cb80197062f49432b07 Mon Sep 17 00:00:00 2001 From: Emma Indal Date: Tue, 15 Feb 2022 17:18:04 +0100 Subject: [PATCH 207/383] update some tests Signed-off-by: Emma Indal --- .../cypress/integration/backstage_serve.js | 26 ++++++++++--------- .../cypress/integration/mkdocs_serve.js | 19 +++++++++----- 2 files changed, 26 insertions(+), 19 deletions(-) diff --git a/packages/techdocs-cli/cypress/integration/backstage_serve.js b/packages/techdocs-cli/cypress/integration/backstage_serve.js index 342aa097af..d36e132b89 100644 --- a/packages/techdocs-cli/cypress/integration/backstage_serve.js +++ b/packages/techdocs-cli/cypress/integration/backstage_serve.js @@ -17,8 +17,7 @@ describe('TechDocs Live Preview - Backstage server', () => { it('successfully serves documentation', () => { cy.visit(`${Cypress.env('backstageBaseUrl')}/docs/default/component/local`); - cy.get('[data-testid="techdocs-content-shadowroot"]').shadow(); - cy.title('hello mock docs'); + cy.contains('hello mock docs'); }); it('successfully navigates to sub page of documentation', () => { @@ -30,19 +29,22 @@ describe('TechDocs Live Preview - Backstage server', () => { }); it('successfully renders all Backstage main elements', () => { - cy.get('header'); - cy.get('header').contains('Live preview environment'); - cy.get('[data-testid="sidebar-root"]'); - cy.get('[data-testid="sidebar-root"]').contains('Docs Preview'); + cy.contains('header', 'Live preview environment'); + cy.contains('[data-testid="sidebar-root"]', 'Docs Preview'); }); it('successfully renders all extracted MkDocs main elements', () => { // as it gets replaced by Backstage header - cy.get('.md-header').should('not.exist'); - cy.get('.md-main'); - cy.get('.md-nav'); - cy.get('.md-sidebar--primary'); - cy.get('.md-sidebar--secondary'); - cy.get('.md-footer'); + cy.get('.md-header').should('have.length', 0); + cy.contains( + '.md-main', + 'This is an md file in another docs folder using the MkDocs Monorepo Plugin', + ); + cy.contains('.md-sidebar--primary', 'Home 2'); + cy.contains( + '.md-sidebar--secondary', + 'This is an md file in another docs folder using the MkDocs Monorepo Plugin', + ); + cy.contains('.md-footer', 'Introduction'); }); }); diff --git a/packages/techdocs-cli/cypress/integration/mkdocs_serve.js b/packages/techdocs-cli/cypress/integration/mkdocs_serve.js index 0e9c8dc8d5..bb91bf9227 100644 --- a/packages/techdocs-cli/cypress/integration/mkdocs_serve.js +++ b/packages/techdocs-cli/cypress/integration/mkdocs_serve.js @@ -17,7 +17,7 @@ describe('TechDocs Live Preview - Mkdocs server', () => { it('successfully serves documentation', () => { cy.visit(Cypress.env('mkDocsBaseUrl')); - cy.title('hello mock docs'); + cy.contains('hello mock docs'); }); it('successfully navigates to sub page of documentation', () => { @@ -29,11 +29,16 @@ describe('TechDocs Live Preview - Mkdocs server', () => { }); it('successfully renders all main elements', () => { - cy.get('.md-header'); - cy.get('.md-container'); - cy.get('.md-nav'); - cy.get('.md-sidebar--primary'); - cy.get('.md-sidebar--secondary'); - cy.get('.md-footer'); + cy.get('.md-header').should('have.length', 1); + cy.contains( + '.md-container', + 'This is an md file in another docs folder using the MkDocs Monorepo Plugin', + ); + cy.contains('.md-sidebar--primary', 'Home 2'); + cy.contains( + '.md-sidebar--secondary', + 'This is an md file in another docs folder using the MkDocs Monorepo Plugin', + ); + cy.contains('.md-footer', 'Introduction'); }); }); From 4b574efb65db1ba35ad75fe5219acb3a71d45fa9 Mon Sep 17 00:00:00 2001 From: Emma Indal Date: Thu, 17 Feb 2022 12:13:02 +0100 Subject: [PATCH 208/383] add visual regression tests Signed-off-by: Emma Indal --- packages/techdocs-cli/cypress.json | 13 ++++-- packages/techdocs-cli/cypress/.eslintrc.json | 21 +++++++++ .../cypress/fixtures/example.json | 5 +++ ...eSnapshot - Backstage TechDocs Page #0.png | Bin 0 -> 67783 bytes ... toMatchImageSnapshot - MkDocs Page #0.png | Bin 0 -> 218234 bytes .../cypress/integration/backstage_serve.js | 26 +++++++---- .../cypress/integration/mkdocs_serve.js | 22 ++++++---- .../techdocs-cli/cypress/plugins/index.js | 41 ++++++++++++++++++ ...tchImageSnapshot - Backstage Header #0.png | Bin 0 -> 401484 bytes ...pshot - Backstage TechDocs Page #0 (1).png | Bin 0 -> 330242 bytes ...pshot - Backstage TechDocs Page #0 (2).png | Bin 0 -> 12319 bytes ...eSnapshot - Backstage TechDocs Page #0.png | Bin 0 -> 330242 bytes .../techdocs-cli/cypress/support/commands.js | 40 +++++++++++++++++ .../techdocs-cli/cypress/support/index.js | 36 +++++++++++++++ packages/techdocs-cli/package.json | 1 + 15 files changed, 183 insertions(+), 22 deletions(-) create mode 100644 packages/techdocs-cli/cypress/.eslintrc.json create mode 100644 packages/techdocs-cli/cypress/fixtures/example.json create mode 100644 packages/techdocs-cli/cypress/integration/__image_snapshots__/TechDocs Live Preview - Backstage Serve toMatchImageSnapshot - Backstage TechDocs Page #0.png create mode 100644 packages/techdocs-cli/cypress/integration/__image_snapshots__/TechDocs Live Preview - MkDocs Serve toMatchImageSnapshot - MkDocs Page #0.png create mode 100644 packages/techdocs-cli/cypress/plugins/index.js create mode 100644 packages/techdocs-cli/cypress/screenshots/backstage_serve.js/TechDocs Live Preview - Backstage Serve toMatchImageSnapshot - Backstage Header #0.png create mode 100644 packages/techdocs-cli/cypress/screenshots/backstage_serve.js/TechDocs Live Preview - Backstage Serve toMatchImageSnapshot - Backstage TechDocs Page #0 (1).png create mode 100644 packages/techdocs-cli/cypress/screenshots/backstage_serve.js/TechDocs Live Preview - Backstage Serve toMatchImageSnapshot - Backstage TechDocs Page #0 (2).png create mode 100644 packages/techdocs-cli/cypress/screenshots/backstage_serve.js/TechDocs Live Preview - Backstage Serve toMatchImageSnapshot - Backstage TechDocs Page #0.png create mode 100644 packages/techdocs-cli/cypress/support/commands.js create mode 100644 packages/techdocs-cli/cypress/support/index.js diff --git a/packages/techdocs-cli/cypress.json b/packages/techdocs-cli/cypress.json index c684d973c7..b6f3b96019 100644 --- a/packages/techdocs-cli/cypress.json +++ b/packages/techdocs-cli/cypress.json @@ -1,12 +1,17 @@ { "env": { "mkDocsBaseUrl": "http://localhost:8000", - "backstageBaseUrl": "http://localhost:3000" + "backstageBaseUrl": "http://localhost:3000", + "cypress-plugin-snapshots": { + "autoCleanUp": false, + "imageConfig": { + "resizeDevicePixelRatio": true, + "threshold": 0.01 + } + } }, "viewportWidth": 1920, "viewportHeight": 1080, "includeShadowDom": true, - "fixturesFolder": false, - "pluginsFile": false, - "supportFile": false + "ignoreTestFiles": ["**/__snapshots__/*", "**/__image_snapshots__/*"] } diff --git a/packages/techdocs-cli/cypress/.eslintrc.json b/packages/techdocs-cli/cypress/.eslintrc.json new file mode 100644 index 0000000000..2481ac5715 --- /dev/null +++ b/packages/techdocs-cli/cypress/.eslintrc.json @@ -0,0 +1,21 @@ +{ + "plugins": ["cypress"], + "extends": ["plugin:cypress/recommended"], + "rules": { + "jest/expect-expect": [ + "error", + { + "assertFunctionNames": ["expect", "cy.contains", "cy.document"] + } + ], + "import/no-extraneous-dependencies": [ + "error", + { + "devDependencies": true, + "optionalDependencies": true, + "peerDependencies": true, + "bundledDependencies": true + } + ] + } +} diff --git a/packages/techdocs-cli/cypress/fixtures/example.json b/packages/techdocs-cli/cypress/fixtures/example.json new file mode 100644 index 0000000000..02e4254378 --- /dev/null +++ b/packages/techdocs-cli/cypress/fixtures/example.json @@ -0,0 +1,5 @@ +{ + "name": "Using fixtures to represent data", + "email": "hello@cypress.io", + "body": "Fixtures are a great way to mock data for responses to routes" +} diff --git a/packages/techdocs-cli/cypress/integration/__image_snapshots__/TechDocs Live Preview - Backstage Serve toMatchImageSnapshot - Backstage TechDocs Page #0.png b/packages/techdocs-cli/cypress/integration/__image_snapshots__/TechDocs Live Preview - Backstage Serve toMatchImageSnapshot - Backstage TechDocs Page #0.png new file mode 100644 index 0000000000000000000000000000000000000000..99fc1ea483829fa3236b8dc3bd5873d841d53ef9 GIT binary patch literal 67783 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 O5*$5t-f=j3{(k@|cq(N8 literal 0 HcmV?d00001 diff --git a/packages/techdocs-cli/cypress/integration/__image_snapshots__/TechDocs Live Preview - MkDocs Serve toMatchImageSnapshot - MkDocs Page #0.png b/packages/techdocs-cli/cypress/integration/__image_snapshots__/TechDocs Live Preview - MkDocs Serve toMatchImageSnapshot - MkDocs Page #0.png new file mode 100644 index 0000000000000000000000000000000000000000..193fb59c1d46a3214c1621e6ff60eb4269a9d5ec GIT binary patch literal 218234 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

`H^GCgsGJI6Xt8Gic~ia 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 z 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 literal 0 HcmV?d00001 diff --git a/packages/techdocs-cli/cypress/integration/backstage_serve.js b/packages/techdocs-cli/cypress/integration/backstage_serve.js index d36e132b89..15fc03f8f4 100644 --- a/packages/techdocs-cli/cypress/integration/backstage_serve.js +++ b/packages/techdocs-cli/cypress/integration/backstage_serve.js @@ -13,8 +13,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - -describe('TechDocs Live Preview - Backstage server', () => { +/// +describe('TechDocs Live Preview - Backstage Serve', () => { it('successfully serves documentation', () => { cy.visit(`${Cypress.env('backstageBaseUrl')}/docs/default/component/local`); cy.contains('hello mock docs'); @@ -30,21 +30,29 @@ describe('TechDocs Live Preview - Backstage server', () => { it('successfully renders all Backstage main elements', () => { cy.contains('header', 'Live preview environment'); - cy.contains('[data-testid="sidebar-root"]', 'Docs Preview'); + cy.get('[data-testid="sidebar-root"]') + .children() + .should('have.length.gt', 0); }); it('successfully renders all extracted MkDocs main elements', () => { // as it gets replaced by Backstage header cy.get('.md-header').should('have.length', 0); + cy.get('.md-main').should('have.length', 1); cy.contains( '.md-main', 'This is an md file in another docs folder using the MkDocs Monorepo Plugin', ); - cy.contains('.md-sidebar--primary', 'Home 2'); - cy.contains( - '.md-sidebar--secondary', - 'This is an md file in another docs folder using the MkDocs Monorepo Plugin', - ); - cy.contains('.md-footer', 'Introduction'); + cy.get('.md-sidebar.md-sidebar--primary').should('have.length', 1); + cy.get('.md-sidebar.md-sidebar--primary').should('have.length', 1); + cy.get('.md-footer').should('have.length', 1); + }); + + it('toMatchImageSnapshot - Backstage TechDocs Page', () => { + cy.visit( + `${Cypress.env('backstageBaseUrl')}/docs/default/component/local`, + ).then(() => { + cy.document().toMatchImageSnapshot(); + }); }); }); diff --git a/packages/techdocs-cli/cypress/integration/mkdocs_serve.js b/packages/techdocs-cli/cypress/integration/mkdocs_serve.js index bb91bf9227..1ace7298ce 100644 --- a/packages/techdocs-cli/cypress/integration/mkdocs_serve.js +++ b/packages/techdocs-cli/cypress/integration/mkdocs_serve.js @@ -13,8 +13,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - -describe('TechDocs Live Preview - Mkdocs server', () => { +/// +describe('TechDocs Live Preview - MkDocs Serve', () => { it('successfully serves documentation', () => { cy.visit(Cypress.env('mkDocsBaseUrl')); cy.contains('hello mock docs'); @@ -30,15 +30,19 @@ describe('TechDocs Live Preview - Mkdocs server', () => { it('successfully renders all main elements', () => { cy.get('.md-header').should('have.length', 1); + cy.get('.md-main').should('have.length', 1); cy.contains( - '.md-container', + '.md-main', 'This is an md file in another docs folder using the MkDocs Monorepo Plugin', ); - cy.contains('.md-sidebar--primary', 'Home 2'); - cy.contains( - '.md-sidebar--secondary', - 'This is an md file in another docs folder using the MkDocs Monorepo Plugin', - ); - cy.contains('.md-footer', 'Introduction'); + cy.get('.md-sidebar.md-sidebar--primary').should('have.length', 1); + cy.get('.md-sidebar.md-sidebar--primary').should('have.length', 1); + cy.get('.md-footer').should('have.length', 1); + }); + + it('toMatchImageSnapshot - MkDocs Page', () => { + cy.visit(Cypress.env('mkDocsBaseUrl')).then(() => { + cy.document().toMatchImageSnapshot(); + }); }); }); diff --git a/packages/techdocs-cli/cypress/plugins/index.js b/packages/techdocs-cli/cypress/plugins/index.js new file mode 100644 index 0000000000..92faabb6ad --- /dev/null +++ b/packages/techdocs-cli/cypress/plugins/index.js @@ -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. + */ + +// *********************************************************** +// This example plugins/index.js can be used to load plugins +// +// You can change the location of this file or turn off loading +// the plugins file with the 'pluginsFile' configuration option. +// +// You can read more here: +// https://on.cypress.io/plugins-guide +// *********************************************************** + +// This function is called when a project is opened or re-opened (e.g. due to +// the project's config changing) + +const { initPlugin } = require('cypress-plugin-snapshots/plugin'); + +/** + * @type {Cypress.PluginConfig} + */ +// eslint-disable-next-line no-unused-vars +module.exports = (on, config) => { + // `on` is used to hook into various events Cypress emits + // `config` is the resolved Cypress config + initPlugin(on, config); + return config; +}; diff --git a/packages/techdocs-cli/cypress/screenshots/backstage_serve.js/TechDocs Live Preview - Backstage Serve toMatchImageSnapshot - Backstage Header #0.png b/packages/techdocs-cli/cypress/screenshots/backstage_serve.js/TechDocs Live Preview - Backstage Serve toMatchImageSnapshot - Backstage Header #0.png new file mode 100644 index 0000000000000000000000000000000000000000..867e8ddd8131f19a8db30f7fdf12a74dcead1947 GIT binary patch literal 401484 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�V7*p%`TfRlvg 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�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%0AxM>}TinBv*c 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 E4-?S?ng9R* literal 0 HcmV?d00001 diff --git a/packages/techdocs-cli/cypress/screenshots/backstage_serve.js/TechDocs Live Preview - Backstage Serve toMatchImageSnapshot - Backstage TechDocs Page #0 (1).png b/packages/techdocs-cli/cypress/screenshots/backstage_serve.js/TechDocs Live Preview - Backstage Serve toMatchImageSnapshot - Backstage TechDocs Page #0 (1).png new file mode 100644 index 0000000000000000000000000000000000000000..3f1078345d73790e0758186b7690d9760a37a38c GIT binary patch literal 330242 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 d{XV-H5HxbnYVKYewt*{}-HY%0vJF literal 0 HcmV?d00001 diff --git a/packages/techdocs-cli/cypress/screenshots/backstage_serve.js/TechDocs Live Preview - Backstage Serve toMatchImageSnapshot - Backstage TechDocs Page #0 (2).png b/packages/techdocs-cli/cypress/screenshots/backstage_serve.js/TechDocs Live Preview - Backstage Serve toMatchImageSnapshot - Backstage TechDocs Page #0 (2).png new file mode 100644 index 0000000000000000000000000000000000000000..c576be51c57fc5803ec6b1aa1106683d9ccb565e GIT binary patch literal 12319 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 d{XV-H5HxbnYVKYewt*{}-HY%0vJF literal 0 HcmV?d00001 diff --git a/packages/techdocs-cli/cypress/support/commands.js b/packages/techdocs-cli/cypress/support/commands.js new file mode 100644 index 0000000000..a8d6a5fdb7 --- /dev/null +++ b/packages/techdocs-cli/cypress/support/commands.js @@ -0,0 +1,40 @@ +/* + * 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. + */ + +// This example commands.js shows you how to +// create various custom commands and overwrite +// existing commands. +// +// For more comprehensive examples of custom +// commands please read more here: +// https://on.cypress.io/custom-commands +// *********************************************** +// +// +// -- This is a parent command -- +// Cypress.Commands.add('login', (email, password) => { ... }) +// +// +// -- This is a child command -- +// Cypress.Commands.add('drag', { prevSubject: 'element'}, (subject, options) => { ... }) +// +// +// -- This is a dual command -- +// Cypress.Commands.add('dismiss', { prevSubject: 'optional'}, (subject, options) => { ... }) +// +// +// -- This will overwrite an existing command -- +// Cypress.Commands.overwrite('visit', (originalFn, url, options) => { ... }) diff --git a/packages/techdocs-cli/cypress/support/index.js b/packages/techdocs-cli/cypress/support/index.js new file mode 100644 index 0000000000..a1a5b10ea4 --- /dev/null +++ b/packages/techdocs-cli/cypress/support/index.js @@ -0,0 +1,36 @@ +/* + * 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. + */ + +// This example support/index.js is processed and +// loaded automatically before your test files. +// +// This is a great place to put global configuration and +// behavior that modifies Cypress. +// +// You can change the location of this file or turn off +// automatically serving support files with the +// 'supportFile' configuration option. +// +// You can read more here: +// https://on.cypress.io/configuration +// *********************************************************** + +// Import commands.js using ES2015 syntax: +import './commands'; +import 'cypress-plugin-snapshots/commands'; + +// Alternatively you can use CommonJS syntax: +// require('./commands') diff --git a/packages/techdocs-cli/package.json b/packages/techdocs-cli/package.json index d4e7372e68..3d50b1c868 100644 --- a/packages/techdocs-cli/package.json +++ b/packages/techdocs-cli/package.json @@ -46,6 +46,7 @@ "@types/serve-handler": "^6.1.0", "@types/webpack-env": "^1.15.3", "cypress": "^7.3.0", + "cypress-plugin-snapshots": "^1.4.4", "find-process": "^1.4.5", "nodemon": "^2.0.2", "techdocs-cli-embedded-app": "link:../techdocs-cli-embedded-app", From 21d4ee819f2ceb46bfcab98ef7374fd8ba8d3977 Mon Sep 17 00:00:00 2001 From: Emma Indal Date: Thu, 17 Feb 2022 13:35:47 +0100 Subject: [PATCH 209/383] Docs updates Signed-off-by: Emma Indal MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Bodil Björklund --- packages/techdocs-cli/README.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/packages/techdocs-cli/README.md b/packages/techdocs-cli/README.md index 8526552c3e..b3879aae26 100644 --- a/packages/techdocs-cli/README.md +++ b/packages/techdocs-cli/README.md @@ -40,9 +40,9 @@ yarn start yarn techdocs-cli:dev [...options] ``` -### Use an example docs project +### Using an example docs project -We have created an [example documentation project](https://github.com/backstage/techdocs-container/tree/main/mock-docs) and it's shipped with [techdocs-container](https://github.com/backstage/techdocs-container) repository, for the purpose of local development. But you are free to create your own local test site. All it takes is a `docs/index.md` and `mkdocs.yml` in a directory. +For the purpose of local development, we have created an [example documentation project](https://github.com/backstage/techdocs-container/tree/main/mock-docs) which is shipped with the [techdocs-container](https://github.com/backstage/techdocs-container) repository. You are of course also free to create your own local test site - all it takes is a `docs/index.md` and an `mkdocs.yml` in a directory. ```sh git clone https://github.com/backstage/techdocs-container.git @@ -67,17 +67,17 @@ pip install mkdocs-techdocs-core Then run `yarn test`. -#### Run Cypress tests +#### Running Cypress tests -Running cypress tests requires you to run the CLI locally against our example docs project +Running cypress tests requires you to run the CLI locally against our example docs project. -Start by making sure you have the example project locally on your computer +Start by making sure that you have the example project locally on your computer: ```sh git clone https://github.com/backstage/techdocs-container.git ``` -Run the local version of techdocs-cli against the example docs project +Run the local version of techdocs-cli against the example docs project: ```sh # From the root of this repository run @@ -91,7 +91,7 @@ cd techdocs-container/mock-docs ../../backstage/packages/techdocs-cli/bin/techdocs-cli serve ``` -Run the cypress tests +Run the cypress tests: ```sh yarn cypress:open From 2fa665cb2c9a3dd0c1d8e8c1185df3fd64198912 Mon Sep 17 00:00:00 2001 From: Karan Shah Date: Thu, 17 Feb 2022 13:28:44 +0000 Subject: [PATCH 210/383] Use the released version Signed-off-by: Karan Shah --- packages/backend/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/backend/package.json b/packages/backend/package.json index 2f322b6511..d35b0203c6 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -33,7 +33,7 @@ "@backstage/catalog-model": "^0.10.0", "@backstage/config": "^0.1.14", "@backstage/integration": "^0.7.3", - "@backstage/plugin-airbrake-backend": "^0.0.0", + "@backstage/plugin-airbrake-backend": "^0.1.0", "@backstage/plugin-app-backend": "^0.3.25", "@backstage/plugin-auth-backend": "^0.10.1", "@backstage/plugin-auth-node": "^0.1.1", From 8bd0d83311feb665c83c03442ebd83032208fbbe Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 17 Feb 2022 14:30:56 +0100 Subject: [PATCH 211/383] chore: common is now entityRef Signed-off-by: blam --- plugins/scaffolder-common/api-report.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/scaffolder-common/api-report.md b/plugins/scaffolder-common/api-report.md index 92935bd5bb..1872aa3ed8 100644 --- a/plugins/scaffolder-common/api-report.md +++ b/plugins/scaffolder-common/api-report.md @@ -121,7 +121,7 @@ export const templateEntityV1beta3Validator: KindValidator; // @public export type TemplateInfo = { - name: string; + entityRef: string; baseUrl?: string; }; From df61ca71dd53d4df3abbb9a02cc359ed4ce77788 Mon Sep 17 00:00:00 2001 From: Johan Haals Date: Thu, 17 Feb 2022 14:52:25 +0100 Subject: [PATCH 212/383] catalog-backend: Require impl of getProcessorName in CatalogProcessor Signed-off-by: Johan Haals --- .changeset/spicy-cherries-ring.md | 19 +++++++++++ .changeset/unlucky-penguins-wonder.md | 7 ++++ .../software-catalog/external-integrations.md | 2 +- .../catalog-backend-module-ldap/api-report.md | 2 ++ .../src/processors/LdapOrgReaderProcessor.ts | 4 +++ .../api-report.md | 2 ++ .../MicrosoftGraphOrgReaderProcessor.ts | 3 ++ plugins/catalog-backend/api-report.md | 32 ++++++++++++++++++- .../AnnotateLocationEntityProcessor.ts | 4 +++ .../AnnotateScmSlugEntityProcessor.ts | 4 +++ .../AwsOrganizationCloudAccountProcessor.ts | 3 ++ .../processors/AwsS3DiscoveryProcessor.ts | 4 +++ .../AzureDevOpsDiscoveryProcessor.ts | 4 +++ .../processors/BitbucketDiscoveryProcessor.ts | 4 +++ .../processors/BuiltinKindsEntityProcessor.ts | 4 +++ .../processors/CodeOwnersProcessor.ts | 4 +++ .../processors/FileReaderProcessor.ts | 4 +++ .../processors/GitLabDiscoveryProcessor.ts | 4 +++ .../processors/GithubDiscoveryProcessor.ts | 3 ++ .../GithubMultiOrgReaderProcessor.ts | 3 ++ .../processors/GithubOrgReaderProcessor.ts | 3 ++ .../processors/LocationEntityProcessor.ts | 4 +++ .../processors/PlaceholderProcessor.ts | 4 +++ .../src/ingestion/processors/types.ts | 3 +- ...faultCatalogProcessingOrchestrator.test.ts | 1 + .../processing/ProcessorCacheManager.test.ts | 6 +++- .../src/processing/ProcessorCacheManager.ts | 2 +- plugins/scaffolder-backend/api-report.md | 2 ++ .../processor/ScaffolderEntitiesProcessor.ts | 4 +++ 29 files changed, 139 insertions(+), 6 deletions(-) create mode 100644 .changeset/spicy-cherries-ring.md create mode 100644 .changeset/unlucky-penguins-wonder.md diff --git a/.changeset/spicy-cherries-ring.md b/.changeset/spicy-cherries-ring.md new file mode 100644 index 0000000000..af6fcacd90 --- /dev/null +++ b/.changeset/spicy-cherries-ring.md @@ -0,0 +1,19 @@ +--- +'@backstage/plugin-catalog-backend': minor +--- + +Updated all processors to implement `getProcessorName`. + +**BREAKING**: The `CatalogProcessor` interface now require that the `CatalogProcessor` class implements `getProcessorName()`. +The processor name has previously defaulted processor class name. It's therefore _recommended_ to keep your return the same name as the class name if you did not implement this method previously. + +For example: + +```ts +class CustomProcessor implements CatalogProcessor { + getProcessorName() { + // Use the same name as the class name if this method was not previously implemented. + return 'CustomProcessor'; + } +} +``` diff --git a/.changeset/unlucky-penguins-wonder.md b/.changeset/unlucky-penguins-wonder.md new file mode 100644 index 0000000000..f5c5e5af3a --- /dev/null +++ b/.changeset/unlucky-penguins-wonder.md @@ -0,0 +1,7 @@ +--- +'@backstage/plugin-catalog-backend-module-ldap': patch +'@backstage/plugin-catalog-backend-module-msgraph': patch +'@backstage/plugin-scaffolder-backend': patch +--- + +Implemented required `getProcessorName` method for catalog processor. diff --git a/docs/features/software-catalog/external-integrations.md b/docs/features/software-catalog/external-integrations.md index b14fd732d7..f8a44ceef6 100644 --- a/docs/features/software-catalog/external-integrations.md +++ b/docs/features/software-catalog/external-integrations.md @@ -472,8 +472,8 @@ type CacheItem = { export class SystemXReaderProcessor implements CatalogProcessor { constructor(private readonly reader: UrlReader) {} - // It's recommended to give the processor a unique name. getProcessorName() { + // The processor name must be unique. return 'system-x-processor'; } diff --git a/plugins/catalog-backend-module-ldap/api-report.md b/plugins/catalog-backend-module-ldap/api-report.md index e2dbef74e5..e14dc54a6b 100644 --- a/plugins/catalog-backend-module-ldap/api-report.md +++ b/plugins/catalog-backend-module-ldap/api-report.md @@ -137,6 +137,8 @@ export class LdapOrgReaderProcessor implements CatalogProcessor { }, ): LdapOrgReaderProcessor; // (undocumented) + getProcessorName(): string; + // (undocumented) readLocation( location: LocationSpec, _optional: boolean, diff --git a/plugins/catalog-backend-module-ldap/src/processors/LdapOrgReaderProcessor.ts b/plugins/catalog-backend-module-ldap/src/processors/LdapOrgReaderProcessor.ts index be2d748840..4d492c2454 100644 --- a/plugins/catalog-backend-module-ldap/src/processors/LdapOrgReaderProcessor.ts +++ b/plugins/catalog-backend-module-ldap/src/processors/LdapOrgReaderProcessor.ts @@ -69,6 +69,10 @@ export class LdapOrgReaderProcessor implements CatalogProcessor { this.userTransformer = options.userTransformer; } + getProcessorName(): string { + return 'LdapOrgReaderProcessor'; + } + async readLocation( location: LocationSpec, _optional: boolean, diff --git a/plugins/catalog-backend-module-msgraph/api-report.md b/plugins/catalog-backend-module-msgraph/api-report.md index 4f5d247a06..bb442aa544 100644 --- a/plugins/catalog-backend-module-msgraph/api-report.md +++ b/plugins/catalog-backend-module-msgraph/api-report.md @@ -134,6 +134,8 @@ export class MicrosoftGraphOrgReaderProcessor implements CatalogProcessor { }, ): MicrosoftGraphOrgReaderProcessor; // (undocumented) + getProcessorName(): string; + // (undocumented) readLocation( location: LocationSpec, _optional: boolean, diff --git a/plugins/catalog-backend-module-msgraph/src/processors/MicrosoftGraphOrgReaderProcessor.ts b/plugins/catalog-backend-module-msgraph/src/processors/MicrosoftGraphOrgReaderProcessor.ts index e0e63d86fc..78b2922f60 100644 --- a/plugins/catalog-backend-module-msgraph/src/processors/MicrosoftGraphOrgReaderProcessor.ts +++ b/plugins/catalog-backend-module-msgraph/src/processors/MicrosoftGraphOrgReaderProcessor.ts @@ -73,6 +73,9 @@ export class MicrosoftGraphOrgReaderProcessor implements CatalogProcessor { this.groupTransformer = options.groupTransformer; this.organizationTransformer = options.organizationTransformer; } + getProcessorName(): string { + return 'MicrosoftGraphOrgReaderProcessor'; + } async readLocation( location: LocationSpec, diff --git a/plugins/catalog-backend/api-report.md b/plugins/catalog-backend/api-report.md index d97df9967c..3d1c52f29a 100644 --- a/plugins/catalog-backend/api-report.md +++ b/plugins/catalog-backend/api-report.md @@ -92,6 +92,8 @@ export class AnnotateLocationEntityProcessor implements CatalogProcessor { // Warning: (ae-forgotten-export) The symbol "Options" needs to be exported by the entry point index.d.ts constructor(options: Options); // (undocumented) + getProcessorName(): string; + // (undocumented) preProcessEntity( entity: Entity, location: LocationSpec, @@ -108,6 +110,8 @@ export class AnnotateScmSlugEntityProcessor implements CatalogProcessor { // (undocumented) static fromConfig(config: Config): AnnotateScmSlugEntityProcessor; // (undocumented) + getProcessorName(): string; + // (undocumented) preProcessEntity(entity: Entity, location: LocationSpec): Promise; } @@ -134,6 +138,8 @@ export class AwsOrganizationCloudAccountProcessor implements CatalogProcessor { // (undocumented) getAwsAccounts(): Promise; // (undocumented) + getProcessorName(): string; + // (undocumented) logger: Logger_2; // (undocumented) mapAccountToComponent(account: Account): ResourceEntityV1alpha1; @@ -164,6 +170,8 @@ export type AwsOrganizationProviderConfig = { export class AwsS3DiscoveryProcessor implements CatalogProcessor { constructor(reader: UrlReader); // (undocumented) + getProcessorName(): string; + // (undocumented) readLocation( location: LocationSpec, optional: boolean, @@ -188,6 +196,8 @@ export class AzureDevOpsDiscoveryProcessor implements CatalogProcessor { }, ): AzureDevOpsDiscoveryProcessor; // (undocumented) + getProcessorName(): string; + // (undocumented) readLocation( location: LocationSpec, _optional: boolean, @@ -213,6 +223,8 @@ export class BitbucketDiscoveryProcessor implements CatalogProcessor { }, ): BitbucketDiscoveryProcessor; // (undocumented) + getProcessorName(): string; + // (undocumented) readLocation( location: LocationSpec, _optional: boolean, @@ -233,6 +245,8 @@ export type BitbucketRepositoryParser = (options: { // // @public (undocumented) export class BuiltinKindsEntityProcessor implements CatalogProcessor { + // (undocumented) + getProcessorName(): string; // (undocumented) postProcessEntity( entity: Entity, @@ -352,7 +366,7 @@ export interface CatalogProcessingOrchestrator { // // @public (undocumented) export type CatalogProcessor = { - getProcessorName?(): string; + getProcessorName(): string; readLocation?( location: LocationSpec, optional: boolean, @@ -479,6 +493,8 @@ export class CodeOwnersProcessor implements CatalogProcessor { }, ): CodeOwnersProcessor; // (undocumented) + getProcessorName(): string; + // (undocumented) preProcessEntity(entity: Entity, location: LocationSpec): Promise; } @@ -730,6 +746,8 @@ export type EntityProviderMutation = // // @public (undocumented) export class FileReaderProcessor implements CatalogProcessor { + // (undocumented) + getProcessorName(): string; // (undocumented) readLocation( location: LocationSpec, @@ -765,6 +783,8 @@ export class GithubDiscoveryProcessor implements CatalogProcessor { }, ): GithubDiscoveryProcessor; // (undocumented) + getProcessorName(): string; + // (undocumented) readLocation( location: LocationSpec, _optional: boolean, @@ -789,6 +809,8 @@ export class GithubMultiOrgReaderProcessor implements CatalogProcessor { }, ): GithubMultiOrgReaderProcessor; // (undocumented) + getProcessorName(): string; + // (undocumented) readLocation( location: LocationSpec, _optional: boolean, @@ -843,6 +865,8 @@ export class GithubOrgReaderProcessor implements CatalogProcessor { }, ): GithubOrgReaderProcessor; // (undocumented) + getProcessorName(): string; + // (undocumented) readLocation( location: LocationSpec, _optional: boolean, @@ -862,6 +886,8 @@ export class GitLabDiscoveryProcessor implements CatalogProcessor { }, ): GitLabDiscoveryProcessor; // (undocumented) + getProcessorName(): string; + // (undocumented) readLocation( location: LocationSpec, _optional: boolean, @@ -902,6 +928,8 @@ export type LocationAnalyzer = { export class LocationEntityProcessor implements CatalogProcessor { constructor(options: LocationEntityProcessorOptions); // (undocumented) + getProcessorName(): string; + // (undocumented) postProcessEntity( entity: Entity, location: LocationSpec, @@ -1026,6 +1054,8 @@ export const permissionRules: { export class PlaceholderProcessor implements CatalogProcessor { constructor(options: PlaceholderProcessorOptions); // (undocumented) + getProcessorName(): string; + // (undocumented) preProcessEntity(entity: Entity, location: LocationSpec): Promise; } diff --git a/plugins/catalog-backend/src/ingestion/processors/AnnotateLocationEntityProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/AnnotateLocationEntityProcessor.ts index 8adbaec628..90b3280ab8 100644 --- a/plugins/catalog-backend/src/ingestion/processors/AnnotateLocationEntityProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/AnnotateLocationEntityProcessor.ts @@ -35,6 +35,10 @@ type Options = { export class AnnotateLocationEntityProcessor implements CatalogProcessor { constructor(private readonly options: Options) {} + getProcessorName(): string { + return 'AnnotateLocationEntityProcessor'; + } + async preProcessEntity( entity: Entity, location: LocationSpec, diff --git a/plugins/catalog-backend/src/ingestion/processors/AnnotateScmSlugEntityProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/AnnotateScmSlugEntityProcessor.ts index 483472da4b..b3a3cfd999 100644 --- a/plugins/catalog-backend/src/ingestion/processors/AnnotateScmSlugEntityProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/AnnotateScmSlugEntityProcessor.ts @@ -30,6 +30,10 @@ export class AnnotateScmSlugEntityProcessor implements CatalogProcessor { private readonly opts: { scmIntegrationRegistry: ScmIntegrationRegistry }, ) {} + getProcessorName(): string { + return 'AnnotateScmSlugEntityProcessor'; + } + static fromConfig(config: Config): AnnotateScmSlugEntityProcessor { return new AnnotateScmSlugEntityProcessor({ scmIntegrationRegistry: ScmIntegrations.fromConfig(config), diff --git a/plugins/catalog-backend/src/ingestion/processors/AwsOrganizationCloudAccountProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/AwsOrganizationCloudAccountProcessor.ts index 655f99d14a..e211b3606e 100644 --- a/plugins/catalog-backend/src/ingestion/processors/AwsOrganizationCloudAccountProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/AwsOrganizationCloudAccountProcessor.ts @@ -81,6 +81,9 @@ export class AwsOrganizationCloudAccountProcessor implements CatalogProcessor { region: AWS_ORGANIZATION_REGION, }); // Only available in us-east-1 } + getProcessorName(): string { + return 'AwsOrganizationCloudAccountProcessor'; + } normalizeName(name: string): string { return name diff --git a/plugins/catalog-backend/src/ingestion/processors/AwsS3DiscoveryProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/AwsS3DiscoveryProcessor.ts index 63bc45726d..77152f81af 100644 --- a/plugins/catalog-backend/src/ingestion/processors/AwsS3DiscoveryProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/AwsS3DiscoveryProcessor.ts @@ -28,6 +28,10 @@ import { export class AwsS3DiscoveryProcessor implements CatalogProcessor { constructor(private readonly reader: UrlReader) {} + getProcessorName(): string { + return 'AwsS3DiscoveryProcessor'; + } + async readLocation( location: LocationSpec, optional: boolean, diff --git a/plugins/catalog-backend/src/ingestion/processors/AzureDevOpsDiscoveryProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/AzureDevOpsDiscoveryProcessor.ts index 4f5df6f656..693cc61bd8 100644 --- a/plugins/catalog-backend/src/ingestion/processors/AzureDevOpsDiscoveryProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/AzureDevOpsDiscoveryProcessor.ts @@ -60,6 +60,10 @@ export class AzureDevOpsDiscoveryProcessor implements CatalogProcessor { this.logger = options.logger; } + getProcessorName(): string { + return 'AzureDevOpsDiscoveryProcessor'; + } + async readLocation( location: LocationSpec, _optional: boolean, diff --git a/plugins/catalog-backend/src/ingestion/processors/BitbucketDiscoveryProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/BitbucketDiscoveryProcessor.ts index f08888d1ab..2cc6822eaa 100644 --- a/plugins/catalog-backend/src/ingestion/processors/BitbucketDiscoveryProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/BitbucketDiscoveryProcessor.ts @@ -64,6 +64,10 @@ export class BitbucketDiscoveryProcessor implements CatalogProcessor { this.logger = options.logger; } + getProcessorName(): string { + return 'BitbucketDiscoveryProcessor'; + } + async readLocation( location: LocationSpec, _optional: boolean, diff --git a/plugins/catalog-backend/src/ingestion/processors/BuiltinKindsEntityProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/BuiltinKindsEntityProcessor.ts index 62e71e8b9b..729cd023f8 100644 --- a/plugins/catalog-backend/src/ingestion/processors/BuiltinKindsEntityProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/BuiltinKindsEntityProcessor.ts @@ -69,6 +69,10 @@ export class BuiltinKindsEntityProcessor implements CatalogProcessor { domainEntityV1alpha1Validator, ]; + getProcessorName(): string { + return 'BuiltinKindsEntityProcessor'; + } + async validateEntityKind(entity: Entity): Promise { for (const validator of this.validators) { const results = await validator.check(entity); diff --git a/plugins/catalog-backend/src/ingestion/processors/CodeOwnersProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/CodeOwnersProcessor.ts index f358abf7e9..b46070d173 100644 --- a/plugins/catalog-backend/src/ingestion/processors/CodeOwnersProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/CodeOwnersProcessor.ts @@ -64,6 +64,10 @@ export class CodeOwnersProcessor implements CatalogProcessor { this.reader = options.reader; } + getProcessorName(): string { + return 'CodeOwnersProcessor'; + } + async preProcessEntity( entity: Entity, location: LocationSpec, diff --git a/plugins/catalog-backend/src/ingestion/processors/FileReaderProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/FileReaderProcessor.ts index 9ff3f52ba0..20020fcfbe 100644 --- a/plugins/catalog-backend/src/ingestion/processors/FileReaderProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/FileReaderProcessor.ts @@ -29,6 +29,10 @@ import { const glob = promisify(g); export class FileReaderProcessor implements CatalogProcessor { + getProcessorName(): string { + return 'FileReaderProcessor'; + } + async readLocation( location: LocationSpec, optional: boolean, diff --git a/plugins/catalog-backend/src/ingestion/processors/GitLabDiscoveryProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/GitLabDiscoveryProcessor.ts index cc0113bfbe..36b7bfbcb5 100644 --- a/plugins/catalog-backend/src/ingestion/processors/GitLabDiscoveryProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/GitLabDiscoveryProcessor.ts @@ -60,6 +60,10 @@ export class GitLabDiscoveryProcessor implements CatalogProcessor { this.logger = options.logger; } + getProcessorName(): string { + return 'GitLabDiscoveryProcessor'; + } + async readLocation( location: LocationSpec, _optional: boolean, diff --git a/plugins/catalog-backend/src/ingestion/processors/GithubDiscoveryProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/GithubDiscoveryProcessor.ts index 3cb73f0181..e0d2c3ca16 100644 --- a/plugins/catalog-backend/src/ingestion/processors/GithubDiscoveryProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/GithubDiscoveryProcessor.ts @@ -73,6 +73,9 @@ export class GithubDiscoveryProcessor implements CatalogProcessor { options.githubCredentialsProvider || DefaultGithubCredentialsProvider.fromIntegrations(this.integrations); } + getProcessorName(): string { + return 'GithubDiscoveryProcessor'; + } async readLocation( location: LocationSpec, diff --git a/plugins/catalog-backend/src/ingestion/processors/GithubMultiOrgReaderProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/GithubMultiOrgReaderProcessor.ts index 7d10428494..765b2139fd 100644 --- a/plugins/catalog-backend/src/ingestion/processors/GithubMultiOrgReaderProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/GithubMultiOrgReaderProcessor.ts @@ -78,6 +78,9 @@ export class GithubMultiOrgReaderProcessor implements CatalogProcessor { options.githubCredentialsProvider || DefaultGithubCredentialsProvider.fromIntegrations(this.integrations); } + getProcessorName(): string { + return 'GithubMultiOrgReaderProcessor'; + } async readLocation( location: LocationSpec, diff --git a/plugins/catalog-backend/src/ingestion/processors/GithubOrgReaderProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/GithubOrgReaderProcessor.ts index dbb7b98e87..2a411af33e 100644 --- a/plugins/catalog-backend/src/ingestion/processors/GithubOrgReaderProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/GithubOrgReaderProcessor.ts @@ -70,6 +70,9 @@ export class GithubOrgReaderProcessor implements CatalogProcessor { DefaultGithubCredentialsProvider.fromIntegrations(this.integrations); this.logger = options.logger; } + getProcessorName(): string { + return 'GithubOrgReaderProcessor'; + } async readLocation( location: LocationSpec, diff --git a/plugins/catalog-backend/src/ingestion/processors/LocationEntityProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/LocationEntityProcessor.ts index c6b7def5fc..ded6bd5ecf 100644 --- a/plugins/catalog-backend/src/ingestion/processors/LocationEntityProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/LocationEntityProcessor.ts @@ -45,6 +45,10 @@ export type LocationEntityProcessorOptions = { export class LocationEntityProcessor implements CatalogProcessor { constructor(private readonly options: LocationEntityProcessorOptions) {} + getProcessorName(): string { + return 'LocationEntityProcessor'; + } + async postProcessEntity( entity: Entity, location: LocationSpec, diff --git a/plugins/catalog-backend/src/ingestion/processors/PlaceholderProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/PlaceholderProcessor.ts index 65f65a0479..1a0ca75ba5 100644 --- a/plugins/catalog-backend/src/ingestion/processors/PlaceholderProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/PlaceholderProcessor.ts @@ -52,6 +52,10 @@ export type PlaceholderProcessorOptions = { export class PlaceholderProcessor implements CatalogProcessor { constructor(private readonly options: PlaceholderProcessorOptions) {} + getProcessorName(): string { + return 'PlaceholderProcessor'; + } + async preProcessEntity( entity: Entity, location: LocationSpec, diff --git a/plugins/catalog-backend/src/ingestion/processors/types.ts b/plugins/catalog-backend/src/ingestion/processors/types.ts index 3e4e24b0fe..b011281d55 100644 --- a/plugins/catalog-backend/src/ingestion/processors/types.ts +++ b/plugins/catalog-backend/src/ingestion/processors/types.ts @@ -24,9 +24,8 @@ import { JsonValue } from '@backstage/types'; export type CatalogProcessor = { /** * A unique identifier for the Catalog Processor. - * It's strongly recommended to implement getProcessorName as this method will be required in the future. */ - getProcessorName?(): string; + getProcessorName(): string; /** * Reads the contents of a location. diff --git a/plugins/catalog-backend/src/processing/DefaultCatalogProcessingOrchestrator.test.ts b/plugins/catalog-backend/src/processing/DefaultCatalogProcessingOrchestrator.test.ts index cc77f6a17b..bdfc623278 100644 --- a/plugins/catalog-backend/src/processing/DefaultCatalogProcessingOrchestrator.test.ts +++ b/plugins/catalog-backend/src/processing/DefaultCatalogProcessingOrchestrator.test.ts @@ -208,6 +208,7 @@ describe('DefaultCatalogProcessingOrchestrator', () => { const integrations = ScmIntegrations.fromConfig(new ConfigReader({})); const processor: jest.Mocked = { + getProcessorName: jest.fn(), validateEntityKind: jest.fn(async () => true), readLocation: jest.fn(async (_l, _o, emit) => { emit(results.entity({ type: 't', target: 't' }, entity)); diff --git a/plugins/catalog-backend/src/processing/ProcessorCacheManager.test.ts b/plugins/catalog-backend/src/processing/ProcessorCacheManager.test.ts index e7f9fb313b..71631b13d8 100644 --- a/plugins/catalog-backend/src/processing/ProcessorCacheManager.test.ts +++ b/plugins/catalog-backend/src/processing/ProcessorCacheManager.test.ts @@ -21,7 +21,11 @@ class MyProcessor implements CatalogProcessor { getProcessorName = () => 'my-processor'; } -class OtherProcessor implements CatalogProcessor {} +class OtherProcessor implements CatalogProcessor { + getProcessorName(): string { + return 'OtherProcessor'; + } +} describe('ProcessorCacheManager', () => { const myProcessor = new MyProcessor(); diff --git a/plugins/catalog-backend/src/processing/ProcessorCacheManager.ts b/plugins/catalog-backend/src/processing/ProcessorCacheManager.ts index 472d6453ce..ab95fcedb7 100644 --- a/plugins/catalog-backend/src/processing/ProcessorCacheManager.ts +++ b/plugins/catalog-backend/src/processing/ProcessorCacheManager.ts @@ -104,7 +104,7 @@ export class ProcessorCacheManager { key?: string, ): CatalogProcessorCache { // constructor name will be deprecated in the future when we make `getProcessorName` required in the implementation - const name = processor.getProcessorName?.() ?? processor.constructor.name; + const name = processor.getProcessorName(); const cache = this.caches.get(name); if (cache) { return key ? cache.withKey(key) : cache; diff --git a/plugins/scaffolder-backend/api-report.md b/plugins/scaffolder-backend/api-report.md index ba16b5d4f0..b4db89b8eb 100644 --- a/plugins/scaffolder-backend/api-report.md +++ b/plugins/scaffolder-backend/api-report.md @@ -431,6 +431,8 @@ export const runCommand: ({ // @public (undocumented) export class ScaffolderEntitiesProcessor implements CatalogProcessor { + // (undocumented) + getProcessorName(): string; // (undocumented) postProcessEntity( entity: Entity, diff --git a/plugins/scaffolder-backend/src/processor/ScaffolderEntitiesProcessor.ts b/plugins/scaffolder-backend/src/processor/ScaffolderEntitiesProcessor.ts index b90f3498c0..c7d5db38c1 100644 --- a/plugins/scaffolder-backend/src/processor/ScaffolderEntitiesProcessor.ts +++ b/plugins/scaffolder-backend/src/processor/ScaffolderEntitiesProcessor.ts @@ -34,6 +34,10 @@ import { /** @public */ export class ScaffolderEntitiesProcessor implements CatalogProcessor { + getProcessorName(): string { + return 'ScaffolderEntitiesProcessor'; + } + private readonly validators = [templateEntityV1beta3Validator]; async validateEntityKind(entity: Entity): Promise { From 504e03b537d1a01134989cb70202e3426fdd0611 Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 17 Feb 2022 15:16:34 +0100 Subject: [PATCH 213/383] chore: updating changeset description Signed-off-by: blam --- .changeset/cool-ways-battle.md | 10 ++++++---- .changeset/purple-camels-accept.md | 2 +- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/.changeset/cool-ways-battle.md b/.changeset/cool-ways-battle.md index 1ef108d9d2..383e2879c0 100644 --- a/.changeset/cool-ways-battle.md +++ b/.changeset/cool-ways-battle.md @@ -2,7 +2,9 @@ '@backstage/plugin-scaffolder-common': patch --- -- **DEPRECATED** `TaskSpecV1Beta3.metadata` in favour of the new `TaskSpecV1Beta3.templateInfo` -- **DEPRECATED** `TaskSpecV1Beta3.baseUrl` in favour of the new `TaskSpecV1Beta3.templateInfo.baseUrl` -- **DEPRECATED** `TaskSpecV1Beta2.metadata` in favour of the new `TaskSpecV1Beta2.templateInfo` -- **DEPRECATED** `TaskSpecV1Beta2.baseUrl` in favour of the new `TaskSpecV1Beta2.templateInfo.baseUrl` +**DEPRECATED** - The `TaskSpec.metadata` and `TaskSpec.baseUrl` has been deprecated in favour of the new `TaskSpec.templateInfo`. +The `baseUrl` is now found on the `templateInfo` object, and the name can be inferred from the `templateInfo.entityRef` property. + +Usages of `TaskSpec.metadata.name` or `ctx.metadata.name` in Actions should migrate to using `parseEntityRef(taskSpec.templateInfo.entityRef)` to get the parsed entity triplet. + +Usages of `ctx.baseUrl` in Actions should migrate to using `ctx.templateInfo.baseUrl` instead. diff --git a/.changeset/purple-camels-accept.md b/.changeset/purple-camels-accept.md index 0ee64567f9..fe3da66a74 100644 --- a/.changeset/purple-camels-accept.md +++ b/.changeset/purple-camels-accept.md @@ -5,4 +5,4 @@ '@backstage/plugin-scaffolder-backend-module-rails': patch --- -Migrated over from the deprecated `spec.metadata` to `spec.templateInfo` for the name and the `baseUrl` of the template. +Migrated over from the deprecated `spec.metadata` to `spec.templateInfo` for the `name` and the `baseUrl` of the template. From 81248c2d1fb6fd6cb5ee8fbe901b3312b00730e6 Mon Sep 17 00:00:00 2001 From: Trevor Hartman Date: Thu, 17 Feb 2022 07:26:39 -0700 Subject: [PATCH 214/383] Make all properties of KubernetesBuilderReturn required Signed-off-by: Trevor Hartman --- .../src/service/KubernetesBuilder.ts | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/plugins/kubernetes-backend/src/service/KubernetesBuilder.ts b/plugins/kubernetes-backend/src/service/KubernetesBuilder.ts index 5c439896d7..d8c93cccdf 100644 --- a/plugins/kubernetes-backend/src/service/KubernetesBuilder.ts +++ b/plugins/kubernetes-backend/src/service/KubernetesBuilder.ts @@ -45,12 +45,12 @@ export interface KubernetesEnvironment { export type KubernetesBuilderReturn = Promise<{ router: express.Router; - clusterDetails?: ClusterDetails[]; - clusterSupplier?: KubernetesClustersSupplier; - customResources?: CustomResource[]; - fetcher?: KubernetesFetcher; - objectsProvider?: KubernetesObjectsProvider; - serviceLocator?: KubernetesServiceLocator; + clusterDetails: ClusterDetails[]; + clusterSupplier: KubernetesClustersSupplier; + customResources: CustomResource[]; + fetcher: KubernetesFetcher; + objectsProvider: KubernetesObjectsProvider; + serviceLocator: KubernetesServiceLocator; }>; export class KubernetesBuilder { @@ -80,7 +80,7 @@ export class KubernetesBuilder { ); return { router: Router(), - }; + } as unknown as KubernetesBuilderReturn; } const customResources = this.buildCustomResources(); From e9cf0dd03ec13d8da9b9c830ae083f91e0bb61ad Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Thu, 17 Feb 2022 15:18:13 +0100 Subject: [PATCH 215/383] catalog-backend: fixes for GitLab discovery .updateLastActivity() Signed-off-by: Patrik Oldsberg --- .changeset/red-olives-clap.md | 5 +++++ plugins/catalog-backend/api-report.md | 2 -- .../src/ingestion/processors/GitLabDiscoveryProcessor.ts | 7 ++++--- 3 files changed, 9 insertions(+), 5 deletions(-) create mode 100644 .changeset/red-olives-clap.md diff --git a/.changeset/red-olives-clap.md b/.changeset/red-olives-clap.md new file mode 100644 index 0000000000..ac8ac1cda6 --- /dev/null +++ b/.changeset/red-olives-clap.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend': minor +--- + +Made the `GitLabDiscoveryProcessor.updateLastActivity` method private, as it was accidentally exposed. It has also been fixed to properly operate in its own cache namespace to avoid collisions with other processors. diff --git a/plugins/catalog-backend/api-report.md b/plugins/catalog-backend/api-report.md index 2e01d2391b..f52bbdc22e 100644 --- a/plugins/catalog-backend/api-report.md +++ b/plugins/catalog-backend/api-report.md @@ -888,8 +888,6 @@ export class GitLabDiscoveryProcessor implements CatalogProcessor { _optional: boolean, emit: CatalogProcessorEmit, ): Promise; - // (undocumented) - updateLastActivity(): Promise; } // Warning: (ae-missing-release-tag) "inputError" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) diff --git a/plugins/catalog-backend/src/ingestion/processors/GitLabDiscoveryProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/GitLabDiscoveryProcessor.ts index 36b7bfbcb5..0822d40ef6 100644 --- a/plugins/catalog-backend/src/ingestion/processors/GitLabDiscoveryProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/GitLabDiscoveryProcessor.ts @@ -142,9 +142,10 @@ export class GitLabDiscoveryProcessor implements CatalogProcessor { return true; } - async updateLastActivity(): Promise { - const lastActivity = await this.cache.get('last-activity'); - await this.cache.set('last-activity', new Date().toISOString()); + private async updateLastActivity(): Promise { + const cacheKey = `processors/${this.getProcessorName()}/last-activity`; + const lastActivity = await this.cache.get(cacheKey); + await this.cache.set(cacheKey, new Date().toISOString()); return lastActivity as string | undefined; } } From 299789fb78e5c13e92b7485348bb9d69666b7233 Mon Sep 17 00:00:00 2001 From: Emma Indal Date: Thu, 17 Feb 2022 16:27:17 +0100 Subject: [PATCH 216/383] try to fix yarn.lock Signed-off-by: Emma Indal --- yarn.lock | 7196 +++++++++++++++++++++++++++++++++-------------------- 1 file changed, 4465 insertions(+), 2731 deletions(-) diff --git a/yarn.lock b/yarn.lock index 70c0e0ddfe..f0e3eca8a6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9,22 +9,14 @@ dependencies: aws4 "^1.11.0" -"@ampproject/remapping@^2.1.0": - version "2.1.2" - resolved "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.2.tgz#4edca94973ded9630d20101cd8559cedb8d8bd34" - integrity sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg== - dependencies: - "@jridgewell/trace-mapping" "^0.3.0" - "@apidevtools/json-schema-ref-parser@^9.0.6": - version "9.0.9" - resolved "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-9.0.9.tgz#d720f9256e3609621280584f2b47ae165359268b" - integrity sha512-GBD2Le9w2+lVFoc4vswGI/TjkNIZSVp7+9xPf+X3uidBfWnAeUWmquteSyt0+VCrhNMWj/FTABISQrD3Z/YA+w== + version "9.0.6" + resolved "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-9.0.6.tgz#5d9000a3ac1fd25404da886da6b266adcd99cf1c" + integrity sha512-M3YgsLjI0lZxvrpeGVk9Ap032W6TPQkH6pRAZz81Ac3WUNF79VQooAFnp8umjvVzUmD93NkogxEwbSce7qMsUg== dependencies: "@jsdevtools/ono" "^7.1.3" - "@types/json-schema" "^7.0.6" call-me-maybe "^1.0.1" - js-yaml "^4.1.0" + js-yaml "^3.13.1" "@apollo/protobufjs@1.2.2": version "1.2.2" @@ -77,12 +69,12 @@ "@openapi-contrib/openapi-schema-to-json-schema" "^3.0.0" "@asyncapi/parser@^1.13.0": - version "1.14.1" - resolved "https://registry.npmjs.org/@asyncapi/parser/-/parser-1.14.1.tgz#2f474f9d5ba1ce5b144e487fd956c0809ab11a9e" - integrity sha512-ZsNQc/HXmGDrxkYBRrGou/JrWn+FLHYdQQI0WPOylSL+LNfaWtLlIcYwbcj61l+jLLFqIe0DK/yZbmjxm0ydqw== + version "1.13.0" + resolved "https://registry.npmjs.org/@asyncapi/parser/-/parser-1.13.0.tgz#bc20d53ba870ead9d26d5a4e3a838c5765ba8d4c" + integrity sha512-UnTYSjx2Sc+VKWIIeIV5I+ogFbN5iWzNgx1UgTXQ5oPhtNlsdIkF+w7qV8GyiraaKbBqAuwepv4xbBvlEi8hkw== dependencies: "@apidevtools/json-schema-ref-parser" "^9.0.6" - "@asyncapi/specs" "^2.13.0" + "@asyncapi/specs" "^2.11.0" "@fmvilas/pseudo-yaml-ast" "^0.3.1" ajv "^6.10.1" js-yaml "^3.13.1" @@ -105,24 +97,24 @@ openapi-sampler "^1.1.0" use-resize-observer "^7.0.0" -"@asyncapi/specs@^2.13.0": - version "2.13.0" - resolved "https://registry.npmjs.org/@asyncapi/specs/-/specs-2.13.0.tgz#c0f46d00e8a67c1c9ea445eb3e8bca90f7dca795" - integrity sha512-X0OrxJtzwRH8iLILO/gUTDqjGVPmagmdlgdyuBggYAoGXzF6ZuAws3XCLxtPNve5eA/0V/1puwpUYEGekI22og== +"@asyncapi/specs@^2.11.0": + version "2.12.0" + resolved "https://registry.npmjs.org/@asyncapi/specs/-/specs-2.12.0.tgz#15534ca9e518b561d33edfdfdbb234f9b274f261" + integrity sha512-X4Xkrl+9WXSk5EJhsueIxNx6ymHI5wpkw4ofetV+VRnPLNob/XO4trPSJClrL5hlknxbGADLvlrkI5d3XJ996g== "@azure/abort-controller@^1.0.0": - version "1.0.4" - resolved "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-1.0.4.tgz#fd3c4d46c8ed67aace42498c8e2270960250eafd" - integrity sha512-lNUmDRVGpanCsiUN3NWxFTdwmdFI53xwhkTFfHDGTYk46ca7Ind3nanJc+U6Zj9Tv+9nTCWRBscWEW1DyKOpTw== + version "1.0.2" + resolved "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-1.0.2.tgz#822405c966b2aec16fb62c1b19d37eaccf231995" + integrity sha512-XUyTo+bcyxHEf+jlN2MXA7YU9nxVehaubngHV1MIZZaqYmZqykkoeAz/JMMEeR7t3TcyDwbFa3Zw8BZywmIx4g== dependencies: tslib "^2.0.0" "@azure/core-asynciterator-polyfill@^1.0.0": - version "1.0.2" - resolved "https://registry.npmjs.org/@azure/core-asynciterator-polyfill/-/core-asynciterator-polyfill-1.0.2.tgz#0dd3849fb8d97f062a39db0e5cadc9ffaf861fec" - integrity sha512-3rkP4LnnlWawl0LZptJOdXNrT/fHp2eQMadoasa6afspXdpGrtPZuAQc2PD0cpgyuoXtUWyC3tv7xfntjGS5Dw== + version "1.0.0" + resolved "https://registry.npmjs.org/@azure/core-asynciterator-polyfill/-/core-asynciterator-polyfill-1.0.0.tgz#dcccebb88406e5c76e0e1d52e8cc4c43a68b3ee7" + integrity sha512-kmv8CGrPfN9SwMwrkiBK9VTQYxdFQEGe0BmQk+M8io56P9KNzpAxcWE/1fxJj7uouwN4kXF0BHW8DNlgx+wtCg== -"@azure/core-auth@^1.3.0": +"@azure/core-auth@^1.1.3", "@azure/core-auth@^1.3.0": version "1.3.2" resolved "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.3.2.tgz#6a2c248576c26df365f6c7881ca04b7f6d08e3d0" integrity sha512-7CU6DmCHIZp5ZPiZ9r3J17lTKMmYsm/zGvNkjArQwPkrLlZ1TZ+EUYfGgh2X31OLMVAQCTJZW4cXHJi02EbJnA== @@ -143,44 +135,43 @@ "@azure/logger" "^1.0.0" tslib "^2.2.0" -"@azure/core-http@^2.0.0": - version "2.2.4" - resolved "https://registry.npmjs.org/@azure/core-http/-/core-http-2.2.4.tgz#df5a5b4138dbbc4299879f2fc6f257d0a5f0401e" - integrity sha512-QmmJmexXKtPyc3/rsZR/YTLDvMatzbzAypJmLzvlfxgz/SkgnqV/D4f6F2LsK6tBj1qhyp8BoXiOebiej0zz3A== +"@azure/core-http@^1.2.0": + version "1.2.2" + resolved "https://registry.npmjs.org/@azure/core-http/-/core-http-1.2.2.tgz#a6f7717184fd2657d3acabd1d64dfdc0bd531ce3" + integrity sha512-9eu2OcbR7e44gqBy4U1Uv8NTWgLIMwKXMEGgO2MahsJy5rdTiAhs5fJHQffPq8uX2MFh21iBODwO9R/Xlov88A== dependencies: "@azure/abort-controller" "^1.0.0" - "@azure/core-asynciterator-polyfill" "^1.0.0" - "@azure/core-auth" "^1.3.0" - "@azure/core-tracing" "1.0.0-preview.13" + "@azure/core-auth" "^1.1.3" + "@azure/core-tracing" "1.0.0-preview.9" "@azure/logger" "^1.0.0" + "@opentelemetry/api" "^0.10.2" "@types/node-fetch" "^2.5.0" - "@types/tunnel" "^0.0.3" - form-data "^4.0.0" - node-fetch "^2.6.7" + "@types/tunnel" "^0.0.1" + form-data "^3.0.0" + node-fetch "^2.6.0" process "^0.11.10" tough-cookie "^4.0.0" - tslib "^2.2.0" + tslib "^2.0.0" tunnel "^0.0.6" uuid "^8.3.0" xml2js "^0.4.19" -"@azure/core-lro@^2.2.0": - version "2.2.3" - resolved "https://registry.npmjs.org/@azure/core-lro/-/core-lro-2.2.3.tgz#3e245d37ede00f6410c1ea1fb76679dbdec627eb" - integrity sha512-UMdlR9NsqDCLTba3EUbRjfMF4gDmWvld196JmUjbz9WWhJ2XT00OR5MXeWiR+vmGT+ETiO4hHFCi2/eGO5YVtg== +"@azure/core-lro@^1.0.2": + version "1.0.3" + resolved "https://registry.npmjs.org/@azure/core-lro/-/core-lro-1.0.3.tgz#1ddfb4ecdb81ce87b5f5d972ffe2acbbc46e524e" + integrity sha512-Py2crJ84qx1rXkzIwfKw5Ni4WJuzVU7KAF6i1yP3ce8fbynUeu8eEWS4JGtSQgU7xv02G55iPDROifmSDbxeHA== dependencies: "@azure/abort-controller" "^1.0.0" - "@azure/core-tracing" "1.0.0-preview.13" - "@azure/logger" "^1.0.0" - tslib "^2.2.0" + "@azure/core-http" "^1.2.0" + events "^3.0.0" + tslib "^2.0.0" "@azure/core-paging@^1.1.1": - version "1.2.1" - resolved "https://registry.npmjs.org/@azure/core-paging/-/core-paging-1.2.1.tgz#1b884f563b6e49971e9a922da3c7a20931867b54" - integrity sha512-UtH5iMlYsvg+nQYIl4UHlvvSrsBjOlRF4fs0j7mxd3rWdAStrKYrh2durOpHs5C9yZbVhsVDaisoyaf/lL1EVA== + version "1.1.3" + resolved "https://registry.npmjs.org/@azure/core-paging/-/core-paging-1.1.3.tgz#3587c9898a0530cacb64bab216d7318468aa5efc" + integrity sha512-his7Ah40ThEYORSpIAwuh6B8wkGwO/zG7gqVtmSE4WAJ46e36zUDXTKReUCLBDc6HmjjApQQxxcRFy5FruG79A== dependencies: "@azure/core-asynciterator-polyfill" "^1.0.0" - tslib "^2.2.0" "@azure/core-rest-pipeline@^1.1.0", "@azure/core-rest-pipeline@^1.5.0": version "1.5.0" @@ -197,6 +188,15 @@ tslib "^2.2.0" uuid "^8.3.0" +"@azure/core-tracing@1.0.0-preview.10": + version "1.0.0-preview.10" + resolved "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.0.0-preview.10.tgz#e7060272145dddad4486765030d1b037cd52a8ea" + integrity sha512-iIwjtMwQnsxB7cYkugMx+s4W1nfy3+pT/ceo+uW1fv4YDgYe84nh+QP0fEC9IH/3UATLSWbIBemdMHzk2APUrw== + dependencies: + "@opencensus/web-types" "0.0.7" + "@opentelemetry/api" "^0.10.2" + tslib "^2.0.0" + "@azure/core-tracing@1.0.0-preview.13": version "1.0.0-preview.13" resolved "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.0.0-preview.13.tgz#55883d40ae2042f6f1e12b17dd0c0d34c536d644" @@ -205,6 +205,15 @@ "@opentelemetry/api" "^1.0.1" tslib "^2.2.0" +"@azure/core-tracing@1.0.0-preview.9": + version "1.0.0-preview.9" + resolved "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.0.0-preview.9.tgz#84f3b85572013f9d9b85e1e5d89787aa180787eb" + integrity sha512-zczolCLJ5QG42AEPQ+Qg9SRYNUyB+yZ5dzof4YEc+dyWczO9G2sBqbAjLB7IqrsdHN2apkiB2oXeDKCsq48jug== + dependencies: + "@opencensus/web-types" "0.0.7" + "@opentelemetry/api" "^0.10.2" + tslib "^2.0.0" + "@azure/core-util@^1.0.0-beta.1": version "1.0.0-beta.1" resolved "https://registry.npmjs.org/@azure/core-util/-/core-util-1.0.0-beta.1.tgz#2efd2c74b4b0a38180369f50fe274a3c4cd36e98" @@ -235,18 +244,18 @@ uuid "^8.3.0" "@azure/logger@^1.0.0": - version "1.0.3" - resolved "https://registry.npmjs.org/@azure/logger/-/logger-1.0.3.tgz#6e36704aa51be7d4a1bae24731ea580836293c96" - integrity sha512-aK4s3Xxjrx3daZr3VylxejK3vG5ExXck5WOHDJ8in/k9AqlfIyFMMT1uG7u8mNjX+QRILTIn0/Xgschfh/dQ9g== + version "1.0.1" + resolved "https://registry.npmjs.org/@azure/logger/-/logger-1.0.1.tgz#19b333203d1b2931353d8879e814b64a7274837a" + integrity sha512-QYQeaJ+A5x6aMNu8BG5qdsVBnYBop9UMwgUvGihSjf1PdZZXB+c/oMdM2ajKwzobLBh9e9QuMQkN9iL+IxLBLA== dependencies: - tslib "^2.2.0" + tslib "^2.0.0" "@azure/msal-browser@^2.16.0": - version "2.22.0" - resolved "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-2.22.0.tgz#acb3ef455d8ca7b143c7fde0a638097add11a218" - integrity sha512-ZpnbnzjYGRGHjWDPOLjSp47CQvhK927+W9avtLoNNCMudqs2dBfwj76lnJwObDE7TAKmCUueTiieglBiPb1mgQ== + version "2.20.0" + resolved "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-2.20.0.tgz#78e34395048c4a8842400d4168b2fb3bdd3c854e" + integrity sha512-Fl8boo38fPNlEm84fRCulbTfHJo+Z/i+1gcdJTG+PqmrkMOUVTdpkwznGh6ZQdAM34uumEgzukmqMr8lVKrytA== dependencies: - "@azure/msal-common" "^6.1.0" + "@azure/msal-common" "^5.2.0" "@azure/msal-common@^4.5.1": version "4.5.1" @@ -255,37 +264,37 @@ dependencies: debug "^4.1.1" -"@azure/msal-common@^6.1.0": - version "6.1.0" - resolved "https://registry.npmjs.org/@azure/msal-common/-/msal-common-6.1.0.tgz#00b0c625d10f4c8e48e7b48a353f7d8d20a5ceca" - integrity sha512-IGjAHttOgKDPQr0Qxx1NjABR635ZNuN7LHjxI0Y7SEA2thcaRGTccy+oaXTFabM/rZLt4F2VrPKUX4BnR9hW9g== +"@azure/msal-common@^5.2.0": + version "5.2.0" + resolved "https://registry.npmjs.org/@azure/msal-common/-/msal-common-5.2.0.tgz#49440e04f4d0961fc5a1a1718fbe5e4eae2db5db" + integrity sha512-oVc4soy5MEZOp9NvCDqBk57mtiUTJXQQ8Z8S/4UiRQP8RG8snuCFQUs9xxdIfvl2FWIvgiBz+SMByyjTaRX42Q== dependencies: debug "^4.1.1" "@azure/msal-node@^1.1.0", "@azure/msal-node@^1.3.0": - version "1.6.0" - resolved "https://registry.npmjs.org/@azure/msal-node/-/msal-node-1.6.0.tgz#59d6306979581fd9379d17d22047ada143ed56df" - integrity sha512-RCPXVWsjqYZh7NB1pAJLn4ypHlLBulOjw5nKPLsJiaJJIXnN8kc6SMkK3S9/80DZCEBstvoRMz6zF50QZJUeOQ== + version "1.4.0" + resolved "https://registry.npmjs.org/@azure/msal-node/-/msal-node-1.4.0.tgz#660685804fbdc533b10cc699f16323e27ec582c6" + integrity sha512-Ek6hqOFUi5QEAxZ55awM8y1N+9SzS9Qh8ijF4RDLtFuHzqP7xXmMnVC1lae45FlH55DUOo7dg/smuDJnb4kw6g== dependencies: - "@azure/msal-common" "^6.1.0" + "@azure/msal-common" "^5.2.0" axios "^0.21.4" - https-proxy-agent "^5.0.0" jsonwebtoken "^8.5.1" uuid "^8.3.0" "@azure/storage-blob@^12.5.0": - version "12.8.0" - resolved "https://registry.npmjs.org/@azure/storage-blob/-/storage-blob-12.8.0.tgz#97b7ecc6c7b17bcbaf0281c79c16af6f512d6130" - integrity sha512-c8+Wz19xauW0bGkTCoqZH4dYfbtBniPiGiRQOn1ca6G5jsjr4azwaTk9gwjVY8r3vY2Taf95eivLzipfIfiS4A== + version "12.5.0" + resolved "https://registry.npmjs.org/@azure/storage-blob/-/storage-blob-12.5.0.tgz#1ddd8837d9a15ebe355e795375d13b406f2cb496" + integrity sha512-DgoefgODst2IPkkQsNdhtYdyJgSsAZC1pEujO6aD5y7uFy5GnzhYliobSrp204jYRyK5XeJ9iiePmy/SPtTbLA== dependencies: "@azure/abort-controller" "^1.0.0" - "@azure/core-http" "^2.0.0" - "@azure/core-lro" "^2.2.0" + "@azure/core-http" "^1.2.0" + "@azure/core-lro" "^1.0.2" "@azure/core-paging" "^1.1.1" - "@azure/core-tracing" "1.0.0-preview.13" + "@azure/core-tracing" "1.0.0-preview.10" "@azure/logger" "^1.0.0" + "@opentelemetry/api" "^0.10.2" events "^3.0.0" - tslib "^2.2.0" + tslib "^2.0.0" "@babel/code-frame@7.0.0": version "7.0.0" @@ -301,38 +310,38 @@ dependencies: "@babel/highlight" "^7.16.7" -"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.16.4", "@babel/compat-data@^7.16.8", "@babel/compat-data@^7.17.0": - version "7.17.0" - resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.0.tgz#86850b8597ea6962089770952075dcaabb8dba34" - integrity sha512-392byTlpGWXMv4FbyWw3sAZ/FrW/DrwqLGXpy0mbyNe9Taqv1mg9yON5/o0cnr8XYCkFTZbC1eV+c+LAROgrng== +"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.16.4", "@babel/compat-data@^7.16.8": + version "7.16.8" + resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.8.tgz#31560f9f29fdf1868de8cb55049538a1b9732a60" + integrity sha512-m7OkX0IdKLKPpBlJtF561YJal5y/jyI5fNfWbPxh2D/nbzzGI4qRyrD8xO2jB24u7l+5I2a43scCG2IrfjC50Q== -"@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.13.16", "@babel/core@^7.14.0", "@babel/core@^7.15.5", "@babel/core@^7.7.5": - version "7.17.4" - resolved "https://registry.npmjs.org/@babel/core/-/core-7.17.4.tgz#a22f1ae8999122873b3d18865e98c7a3936b8c8b" - integrity sha512-R9x5r4t4+hBqZTmioSnkrW+I6NmbojwjGT8p4G2Gw1thWbXIHGDnmGdLdFw0/7ljucdIrNRp7Npgb4CyBYzzJg== +"@babel/core@^7.1.0", "@babel/core@^7.13.16", "@babel/core@^7.14.0", "@babel/core@^7.15.5", "@babel/core@^7.7.5": + version "7.16.12" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.16.12.tgz#5edc53c1b71e54881315923ae2aedea2522bb784" + integrity sha512-dK5PtG1uiN2ikk++5OzSYsitZKny4wOCD0nrO4TqnW4BVBTQ2NGS3NgilvT/TEyxTST7LNyWV/T4tXDoD3fOgg== dependencies: - "@ampproject/remapping" "^2.1.0" "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.17.3" + "@babel/generator" "^7.16.8" "@babel/helper-compilation-targets" "^7.16.7" "@babel/helper-module-transforms" "^7.16.7" - "@babel/helpers" "^7.17.2" - "@babel/parser" "^7.17.3" + "@babel/helpers" "^7.16.7" + "@babel/parser" "^7.16.12" "@babel/template" "^7.16.7" - "@babel/traverse" "^7.17.3" - "@babel/types" "^7.17.0" + "@babel/traverse" "^7.16.10" + "@babel/types" "^7.16.8" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" json5 "^2.1.2" semver "^6.3.0" + source-map "^0.5.0" -"@babel/generator@^7.14.0", "@babel/generator@^7.17.3": - version "7.17.3" - resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.17.3.tgz#a2c30b0c4f89858cb87050c3ffdfd36bdf443200" - integrity sha512-+R6Dctil/MgUsZsZAkYgK+ADNSZzJRRy0TvY65T71z/CR854xHQ1EweBYXdfT+HNeN7w0cSJJEzgxZMv40pxsg== +"@babel/generator@^7.14.0", "@babel/generator@^7.16.0", "@babel/generator@^7.16.8": + version "7.16.8" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.16.8.tgz#359d44d966b8cd059d543250ce79596f792f2ebe" + integrity sha512-1ojZwE9+lOXzcWdWmO6TbUzDfqLD39CmEhN8+2cX9XkDo5yW1OpgfejfliysR2AWLpMamTiOiAp/mtroaymhpw== dependencies: - "@babel/types" "^7.17.0" + "@babel/types" "^7.16.8" jsesc "^2.5.1" source-map "^0.5.0" @@ -362,9 +371,9 @@ semver "^6.3.0" "@babel/helper-create-class-features-plugin@^7.16.10", "@babel/helper-create-class-features-plugin@^7.16.7": - version "7.17.1" - resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.1.tgz#9699f14a88833a7e055ce57dcd3ffdcd25186b21" - integrity sha512-JBdSr/LtyYIno/pNnJ75lBcqc3Z1XXujzPanHqjvvrhOA+DTceTFuJi8XjmWTZh4r3fsdfqaCMN0iZemdkxZHQ== + version "7.16.10" + resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.10.tgz#8a6959b9cc818a88815ba3c5474619e9c0f2c21c" + integrity sha512-wDeej0pu3WN/ffTxMNCPW5UCiOav8IcLRxSIyp/9+IF2xJUM9h/OYjg0IJLHaL6F8oU8kqMz9nc1vryXhMsgXg== dependencies: "@babel/helper-annotate-as-pure" "^7.16.7" "@babel/helper-environment-visitor" "^7.16.7" @@ -375,12 +384,12 @@ "@babel/helper-split-export-declaration" "^7.16.7" "@babel/helper-create-regexp-features-plugin@^7.16.7": - version "7.17.0" - resolved "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz#1dcc7d40ba0c6b6b25618997c5dbfd310f186fe1" - integrity sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA== + version "7.16.7" + resolved "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.7.tgz#0cb82b9bac358eb73bfbd73985a776bfa6b14d48" + integrity sha512-fk5A6ymfp+O5+p2yCkXAu5Kyj6v0xh0RBeNcAkYUMDvvAAoxvSKXn+Jb37t/yWFiQVDFK1ELpUTD8/aLhCPu+g== dependencies: "@babel/helper-annotate-as-pure" "^7.16.7" - regexpu-core "^5.0.1" + regexpu-core "^4.7.1" "@babel/helper-define-polyfill-provider@^0.3.1": version "0.3.1" @@ -410,7 +419,7 @@ dependencies: "@babel/types" "^7.16.7" -"@babel/helper-function-name@^7.16.7": +"@babel/helper-function-name@^7.16.0", "@babel/helper-function-name@^7.16.7": version "7.16.7" resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz#f1ec51551fb1c8956bc8dd95f38523b6cf375f8f" integrity sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA== @@ -426,7 +435,7 @@ dependencies: "@babel/types" "^7.16.7" -"@babel/helper-hoist-variables@^7.16.7": +"@babel/helper-hoist-variables@^7.16.0", "@babel/helper-hoist-variables@^7.16.7": version "7.16.7" resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz#86bcb19a77a509c7b77d0e22323ef588fa58c246" integrity sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg== @@ -507,14 +516,14 @@ dependencies: "@babel/types" "^7.16.0" -"@babel/helper-split-export-declaration@^7.16.7": +"@babel/helper-split-export-declaration@^7.16.0", "@babel/helper-split-export-declaration@^7.16.7": version "7.16.7" resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b" integrity sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw== dependencies: "@babel/types" "^7.16.7" -"@babel/helper-validator-identifier@^7.16.7": +"@babel/helper-validator-identifier@^7.15.7", "@babel/helper-validator-identifier@^7.16.7": version "7.16.7" resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== @@ -534,14 +543,14 @@ "@babel/traverse" "^7.16.8" "@babel/types" "^7.16.8" -"@babel/helpers@^7.17.2": - version "7.17.2" - resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.2.tgz#23f0a0746c8e287773ccd27c14be428891f63417" - integrity sha512-0Qu7RLR1dILozr/6M0xgj+DFPmi6Bnulgm9M8BVa9ZCWxDqlSnqt3cf8IDPB5m45sVXUZ0kuQAgUrdSFFH79fQ== +"@babel/helpers@^7.16.7": + version "7.16.7" + resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.7.tgz#7e3504d708d50344112767c3542fc5e357fffefc" + integrity sha512-9ZDoqtfY7AuEOt3cxchfii6C7GDyyMBffktR5B2jvWv8u2+efwvpnVKXMWzNehqy68tKgAfSwfdw/lWpthS2bw== dependencies: "@babel/template" "^7.16.7" - "@babel/traverse" "^7.17.0" - "@babel/types" "^7.17.0" + "@babel/traverse" "^7.16.7" + "@babel/types" "^7.16.7" "@babel/highlight@^7.0.0", "@babel/highlight@^7.16.7": version "7.16.10" @@ -552,10 +561,15 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.13.16", "@babel/parser@^7.14.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.16.8", "@babel/parser@^7.17.3": - version "7.17.3" - resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.17.3.tgz#b07702b982990bf6fdc1da5049a23fece4c5c3d0" - integrity sha512-7yJPvPV+ESz2IUTPbOL+YkIGyCqOyNIzdguKQuJGnH7bg1WTIifuM21YqokFt/THWh1AkCRn9IgoykTRCBVpzA== +"@babel/parser@7.16.4": + version "7.16.4" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.16.4.tgz#d5f92f57cf2c74ffe9b37981c0e72fee7311372e" + integrity sha512-6V0qdPUaiVHH3RtZeLIsc+6pDhbYzHR8ogA8w+f+Wc77DuXto19g2QUwveINoS34Uw+W8/hQDGJCx+i4n7xcng== + +"@babel/parser@^7.1.0", "@babel/parser@^7.13.16", "@babel/parser@^7.14.0", "@babel/parser@^7.16.10", "@babel/parser@^7.16.12", "@babel/parser@^7.16.3", "@babel/parser@^7.16.7": + version "7.16.12" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.16.12.tgz#9474794f9a650cf5e2f892444227f98e28cdf8b6" + integrity sha512-VfaV15po8RiZssrkPweyvbGVSe4x2y+aciFCgn0n0/SJMR22cwofRV1mtnJQYcSB1wUTaA/X1LnA3es66MCO5A== "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.7": version "7.16.7" @@ -648,11 +662,11 @@ "@babel/plugin-syntax-numeric-separator" "^7.10.4" "@babel/plugin-proposal-object-rest-spread@^7.0.0", "@babel/plugin-proposal-object-rest-spread@^7.16.7": - version "7.17.3" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.17.3.tgz#d9eb649a54628a51701aef7e0ea3d17e2b9dd390" - integrity sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw== + version "7.16.7" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.7.tgz#94593ef1ddf37021a25bdcb5754c4a8d534b01d8" + integrity sha512-3O0Y4+dw94HA86qSg9IHfyPktgR7q3gpNVAeiKQd+8jBKFaU5NQS1Yatgo4wY+UFNuLjvxcSmzcsHqrhgTyBUA== dependencies: - "@babel/compat-data" "^7.17.0" + "@babel/compat-data" "^7.16.4" "@babel/helper-compilation-targets" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-object-rest-spread" "^7.8.3" @@ -886,9 +900,9 @@ "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-transform-destructuring@^7.0.0", "@babel/plugin-transform-destructuring@^7.16.7": - version "7.17.3" - resolved "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.3.tgz#c445f75819641788a27a0a3a759d9df911df6abc" - integrity sha512-dDFzegDYKlPqa72xIlbmSkly5MluLoaC1JswABGktyt6NTXSBcUuse/kWE/wvKFWJHPETpi158qJZFS3JmykJg== + version "7.16.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.7.tgz#ca9588ae2d63978a4c29d3f33282d8603f618e23" + integrity sha512-VqAwhTHBnu5xBVDCvrvqJbtLUa++qZaWC0Fgr2mqokBlulZARGyIvZDoqbPlPaKImQ9dKAcCzbv+ul//uqu70A== dependencies: "@babel/helper-plugin-utils" "^7.16.7" @@ -1049,15 +1063,15 @@ "@babel/plugin-transform-react-jsx" "^7.16.7" "@babel/plugin-transform-react-jsx@^7.0.0", "@babel/plugin-transform-react-jsx@^7.16.7": - version "7.17.3" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.17.3.tgz#eac1565da176ccb1a715dae0b4609858808008c1" - integrity sha512-9tjBm4O07f7mzKSIlEmPdiE6ub7kfIe6Cd+w+oQebpATfTQMAgW+YOuWxogbKVTulA+MEO7byMeIUtQ1z+z+ZQ== + version "7.16.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.16.7.tgz#86a6a220552afd0e4e1f0388a68a372be7add0d4" + integrity sha512-8D16ye66fxiE8m890w0BpPpngG9o9OVBBy0gH2E+2AR7qMR2ZpTYJEqLxAsoroenMId0p/wMW+Blc0meDgu0Ag== dependencies: "@babel/helper-annotate-as-pure" "^7.16.7" "@babel/helper-module-imports" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-jsx" "^7.16.7" - "@babel/types" "^7.17.0" + "@babel/types" "^7.16.7" "@babel/plugin-transform-react-pure-annotations@^7.16.7": version "7.16.7" @@ -1263,25 +1277,32 @@ "@babel/plugin-transform-typescript" "^7.16.7" "@babel/register@^7.13.16": - version "7.17.0" - resolved "https://registry.npmjs.org/@babel/register/-/register-7.17.0.tgz#8051e0b7cb71385be4909324f072599723a1f084" - integrity sha512-UNZsMAZ7uKoGHo1HlEXfteEOYssf64n/PNLHGqOKq/bgYcu/4LrQWAHJwSCb3BRZK8Hi5gkJdRcwrGTO2wtRCg== + version "7.16.9" + resolved "https://registry.npmjs.org/@babel/register/-/register-7.16.9.tgz#fcfb23cfdd9ad95c9771e58183de83b513857806" + integrity sha512-jJ72wcghdRIlENfvALcyODhNoGE5j75cYHdC+aQMh6cU/P86tiiXTp9XYZct1UxUMo/4+BgQRyNZEGx0KWGS+g== dependencies: clone-deep "^4.0.1" find-cache-dir "^2.0.0" make-dir "^2.1.0" - pirates "^4.0.5" + pirates "^4.0.0" source-map-support "^0.5.16" -"@babel/runtime-corejs3@^7.10.2", "@babel/runtime-corejs3@^7.11.2", "@babel/runtime-corejs3@^7.16.8": - version "7.17.2" - resolved "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.17.2.tgz#fdca2cd05fba63388babe85d349b6801b008fd13" - integrity sha512-NcKtr2epxfIrNM4VOmPKO46TvDMCBhgi2CrSHaEarrz+Plk2K5r9QemmOFTGpZaoKnWoGH5MO+CzeRsih/Fcgg== +"@babel/runtime-corejs3@^7.10.2", "@babel/runtime-corejs3@^7.11.2", "@babel/runtime-corejs3@^7.16.3": + version "7.16.8" + resolved "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.16.8.tgz#ea533d96eda6fdc76b1812248e9fbd0c11d4a1a7" + integrity sha512-3fKhuICS1lMz0plI5ktOE/yEtBRMVxplzRkdn6mJQ197XiY0JnrzYV0+Mxozq3JZ8SBV9Ecurmw1XsGbwOf+Sg== dependencies: core-js-pure "^3.20.2" regenerator-runtime "^0.13.4" -"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.0", "@babel/runtime@^7.10.1", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.4", "@babel/runtime@^7.12.5", "@babel/runtime@^7.14.6", "@babel/runtime@^7.15.4", "@babel/runtime@^7.16.3", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.0", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": +"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.0", "@babel/runtime@^7.10.1", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.4", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.14.6", "@babel/runtime@^7.15.4", "@babel/runtime@^7.16.3", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.0", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": + version "7.16.7" + resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.7.tgz#03ff99f64106588c9c403c6ecb8c3bafbbdff1fa" + integrity sha512-9E9FJowqAsytyOY6LG+1KuueckRL+aQW+mKvXRXnuFGyRAyepJPmEo9vgMfXUA6O9u3IeEdv9MAkppFcaQwogQ== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/runtime@^7.7.2": version "7.17.2" resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.2.tgz#66f68591605e59da47523c631416b18508779941" integrity sha512-hzeyJyMA1YGdJTuWU0e/j4wKXrU4OMFvY2MSlaI9B7VQb0r5cxTE3EAIS2Q7Tn2RIcDkRvTA/v2JsAEhxe99uw== @@ -1297,26 +1318,49 @@ "@babel/parser" "^7.16.7" "@babel/types" "^7.16.7" -"@babel/traverse@^7.1.0", "@babel/traverse@^7.13.0", "@babel/traverse@^7.14.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.17.0", "@babel/traverse@^7.17.3", "@babel/traverse@^7.4.5": - version "7.17.3" - resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.3.tgz#0ae0f15b27d9a92ba1f2263358ea7c4e7db47b57" - integrity sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw== +"@babel/traverse@7.16.3": + version "7.16.3" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.3.tgz#f63e8a938cc1b780f66d9ed3c54f532ca2d14787" + integrity sha512-eolumr1vVMjqevCpwVO99yN/LoGL0EyHiLO5I043aYQvwOJ9eR5UsZSClHVCzfhBduMAsSzgA/6AyqPjNayJag== + dependencies: + "@babel/code-frame" "^7.16.0" + "@babel/generator" "^7.16.0" + "@babel/helper-function-name" "^7.16.0" + "@babel/helper-hoist-variables" "^7.16.0" + "@babel/helper-split-export-declaration" "^7.16.0" + "@babel/parser" "^7.16.3" + "@babel/types" "^7.16.0" + debug "^4.1.0" + globals "^11.1.0" + +"@babel/traverse@^7.1.0", "@babel/traverse@^7.13.0", "@babel/traverse@^7.14.0", "@babel/traverse@^7.16.10", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.4.5": + version "7.16.10" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.10.tgz#448f940defbe95b5a8029975b051f75993e8239f" + integrity sha512-yzuaYXoRJBGMlBhsMJoUW7G1UmSb/eXr/JHYM/MsOJgavJibLwASijW7oXBdw3NQ6T0bW7Ty5P/VarOs9cHmqw== dependencies: "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.17.3" + "@babel/generator" "^7.16.8" "@babel/helper-environment-visitor" "^7.16.7" "@babel/helper-function-name" "^7.16.7" "@babel/helper-hoist-variables" "^7.16.7" "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/parser" "^7.17.3" - "@babel/types" "^7.17.0" + "@babel/parser" "^7.16.10" + "@babel/types" "^7.16.8" debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.15.6", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": - version "7.17.0" - resolved "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz#a826e368bccb6b3d84acd76acad5c0d87342390b" - integrity sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw== +"@babel/types@7.16.0": + version "7.16.0" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz#db3b313804f96aadd0b776c4823e127ad67289ba" + integrity sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg== + dependencies: + "@babel/helper-validator-identifier" "^7.15.7" + to-fast-properties "^2.0.0" + +"@babel/types@^7.0.0", "@babel/types@^7.15.6", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + version "7.16.8" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.16.8.tgz#0ba5da91dd71e0a4e7781a30f22770831062e3c1" + integrity sha512-smN2DQc5s4M7fntyjGtyIPbRJv6wW4rU/94fmYJ7PKQuZkC0qGMHXJbg6sNGt12JmVr4k5YaptI/XtiLJBnmIg== dependencies: "@babel/helper-validator-identifier" "^7.16.7" to-fast-properties "^2.0.0" @@ -1536,13 +1580,13 @@ minimist "^1.2.0" "@codemirror/highlight@^0.19.0": - version "0.19.7" - resolved "https://registry.npmjs.org/@codemirror/highlight/-/highlight-0.19.7.tgz#91a0c9994c759f5f153861e3aae74ff9e7c7c35b" - integrity sha512-3W32hBCY0pbbv/xidismw+RDMKuIag+fo4kZIbD7WoRj+Ttcaxjf+vP6RttRHXLaaqbWh031lTeON8kMlDhMYw== + version "0.19.6" + resolved "https://registry.npmjs.org/@codemirror/highlight/-/highlight-0.19.6.tgz#7f2e066f83f5649e8e0748a3abe0aaeaf64b8ac2" + integrity sha512-+eibu6on9quY8uN3xJ/n3rH+YIDLlpX7YulVmFvqAIz/ukRQ5tWaBmB7fMixHmnmRIRBRZgB8rNtonuMwZSAHQ== dependencies: "@codemirror/language" "^0.19.0" "@codemirror/rangeset" "^0.19.0" - "@codemirror/state" "^0.19.3" + "@codemirror/state" "^0.19.0" "@codemirror/view" "^0.19.0" "@lezer/common" "^0.15.0" style-mod "^4.0.0" @@ -1558,24 +1602,24 @@ "@lezer/common" "^0.15.5" "@lezer/lr" "^0.15.0" -"@codemirror/rangeset@^0.19.0", "@codemirror/rangeset@^0.19.5": - version "0.19.7" - resolved "https://registry.npmjs.org/@codemirror/rangeset/-/rangeset-0.19.7.tgz#c8c2662b91cf94c0b68c2d07ff281613abeb55fe" - integrity sha512-17zvQKjjUGjFCdFJAKFgiiQKFqGENmlVzS5vtiPQu1SCEs8ZKyvoFWwilM24+s21AlXxcUXulxEfOLGER5gOtg== +"@codemirror/rangeset@^0.19.0": + version "0.19.2" + resolved "https://registry.npmjs.org/@codemirror/rangeset/-/rangeset-0.19.2.tgz#d7a999e4273c00fecef4aba8535a426073cdcddf" + integrity sha512-5d+X8LtmeZtfFtKrSx57bIHRUpKv2HD0b74clp4fGA7qJLLfYehF6FGkJJxJb8lKsqAga1gdjjWr0jiypmIxoQ== dependencies: "@codemirror/state" "^0.19.0" "@codemirror/state@^0.19.0", "@codemirror/state@^0.19.3": - version "0.19.9" - resolved "https://registry.npmjs.org/@codemirror/state/-/state-0.19.9.tgz#b797f9fbc204d6dc7975485e231693c09001b0dd" - integrity sha512-psOzDolKTZkx4CgUqhBQ8T8gBc0xN5z4gzed109aF6x7D7umpDRoimacI/O6d9UGuyl4eYuDCZmDFr2Rq7aGOw== + version "0.19.6" + resolved "https://registry.npmjs.org/@codemirror/state/-/state-0.19.6.tgz#d631f041d39ce41b7891b099fca26cb1fdb9763e" + integrity sha512-sqIQZE9VqwQj7D4c2oz9mfLhlT1ElAzGB5lO1lE33BPyrdNy1cJyCIOecT4cn4VeJOFrnjOeu+IftZ3zqdFETw== dependencies: "@codemirror/text" "^0.19.0" "@codemirror/stream-parser@^0.19.2": - version "0.19.6" - resolved "https://registry.npmjs.org/@codemirror/stream-parser/-/stream-parser-0.19.6.tgz#3cfba836f4e5daf6d0e87213b39027791c1e6329" - integrity sha512-dmPtoz/MR3IphxAsgywEyvSjOJCb2ikAgqp6BGIlwBEJVRiap0wFK4b3f/3DKIHUG4GezWRYQumXNyb3GNQevw== + version "0.19.2" + resolved "https://registry.npmjs.org/@codemirror/stream-parser/-/stream-parser-0.19.2.tgz#793428e55aa7b9daa64cb733973e5d5e3d9a2306" + integrity sha512-hBKRQlyu8GUOrY33xZ6/1kAfNZ8ZUm6cX9a7mPx8zAAqnpz/fpksC/qJRrkg1mPMBwxm+JG4fqAwDGJ3gLVniQ== dependencies: "@codemirror/highlight" "^0.19.0" "@codemirror/language" "^0.19.0" @@ -1585,26 +1629,21 @@ "@lezer/lr" "^0.15.0" "@codemirror/text@^0.19.0": - version "0.19.6" - resolved "https://registry.npmjs.org/@codemirror/text/-/text-0.19.6.tgz#9adcbd8137f69b75518eacd30ddb16fd67bbac45" - integrity sha512-T9jnREMIygx+TPC1bOuepz18maGq/92q2a+n4qTqObKwvNMg+8cMTslb8yxeEDEq7S3kpgGWxgO1UWbQRij0dA== + version "0.19.5" + resolved "https://registry.npmjs.org/@codemirror/text/-/text-0.19.5.tgz#75033af2476214e79eae22b81ada618815441c18" + integrity sha512-Syu5Xc7tZzeUAM/y4fETkT0zgGr48rDG+w4U38bPwSIUr+L9S/7w2wDE1WGNzjaZPz12F6gb1gxWiSTg9ocLow== "@codemirror/view@^0.19.0": - version "0.19.43" - resolved "https://registry.npmjs.org/@codemirror/view/-/view-0.19.43.tgz#4c77039d0462a6034797a6f0d38b7f547b2edaf4" - integrity sha512-caT53/FD4gDLgb1fcYWJ935oMfRmy4DwKcDuMFg56T5M5hzf20H6nl4+NxPB5eiV7AZ1ux3zy40LQVB4U6lFxg== + version "0.19.27" + resolved "https://registry.npmjs.org/@codemirror/view/-/view-0.19.27.tgz#76e5dc19ecb4ce53e9fef1d29245040d7ff64183" + integrity sha512-Uz/LecEf7CyvMWaQBlKtbJCYn0hRnEZ2yYvuZVy9YMhmvGmES6ec7FaKw7lDFFOMLwLbBThc9kfw4DCHreHN1w== dependencies: - "@codemirror/rangeset" "^0.19.5" + "@codemirror/rangeset" "^0.19.0" "@codemirror/state" "^0.19.3" "@codemirror/text" "^0.19.0" style-mod "^4.0.0" w3c-keyname "^2.2.4" -"@colors/colors@1.5.0": - version "1.5.0" - resolved "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" - integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== - "@cspotcode/source-map-consumer@0.8.0": version "0.8.0" resolved "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz#33bf4b7b39c178821606f669bbc447a6a629786b" @@ -1617,6 +1656,16 @@ dependencies: "@cspotcode/source-map-consumer" "0.8.0" +"@cypress/listr-verbose-renderer@^0.4.1": + version "0.4.1" + resolved "https://registry.npmjs.org/@cypress/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz#a77492f4b11dcc7c446a34b3e28721afd33c642a" + integrity sha1-p3SS9LEdzHxEajSz4ochr9M8ZCo= + dependencies: + chalk "^1.1.3" + cli-cursor "^1.0.2" + date-fns "^1.27.2" + figures "^1.7.0" + "@cypress/request@^2.88.5": version "2.88.10" resolved "https://registry.npmjs.org/@cypress/request/-/request-2.88.10.tgz#b66d76b07f860d3a4b8d7a0604d020c662752cce" @@ -1650,9 +1699,9 @@ lodash.once "^4.1.1" "@dabh/diagnostics@^2.0.2": - version "2.0.3" - resolved "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.3.tgz#7f7e97ee9a725dffc7808d93668cc984e1dc477a" - integrity sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA== + version "2.0.2" + resolved "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.2.tgz#290d08f7b381b8f94607dc8f471a12c675f9db31" + integrity sha512-+A1YivoVDNNVCdfozHSR8v/jyuuLTMXwjWuxPFlFlUapXoGc+Gj9mDlTDDfrwl7rXCl2tNZ0kE8sIBO6YOn96Q== dependencies: colorspace "1.1.x" enabled "2.0.x" @@ -1716,14 +1765,14 @@ ts-node "^9" tslib "^2" -"@eslint/eslintrc@^1.1.0": - version "1.1.0" - resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.1.0.tgz#583d12dbec5d4f22f333f9669f7d0b7c7815b4d3" - integrity sha512-C1DfL7XX4nPqGd6jcP01W9pVM1HYCuUkFk1432D7F0v3JSlUIeOYn9oCoi3eoLZ+iwBSb29BMFxxny0YrrEZqg== +"@eslint/eslintrc@^1.0.5": + version "1.0.5" + resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.5.tgz#33f1b838dbf1f923bfa517e008362b78ddbbf318" + integrity sha512-BLxsnmK3KyPunz5wmCCpqy0YelEoxxGmH73Is+Z74oOTMtExcjkr3dDR6quwrjh1YspA8DH9gnX1o069KiS9AQ== dependencies: ajv "^6.12.4" debug "^4.3.2" - espree "^9.3.1" + espree "^9.2.0" globals "^13.9.0" ignore "^4.0.6" import-fresh "^3.2.1" @@ -1739,16 +1788,16 @@ yaml-ast-parser "0.0.43" "@gar/promisify@^1.0.1": - version "1.1.3" - resolved "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" - integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw== + version "1.1.2" + resolved "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.2.tgz#30aa825f11d438671d585bd44e7fd564535fc210" + integrity sha512-82cpyJyKRoQoRi+14ibCeGPu0CwypgtBAdBhq1WfvagpCZNKqwXbKwXllYSMG91DhmG4jt9gN8eP6lGOtozuaw== "@gitbeaker/core@^34.6.0": - version "34.7.0" - resolved "https://registry.npmjs.org/@gitbeaker/core/-/core-34.7.0.tgz#2cd52f6c21127e9d8147ce34f0f4d98ba72acf16" - integrity sha512-D3JSvnD2PTm8pj+UJhYqOnEmszVN5ADP2LJAFe+eDnW46eEIK5Veq6kxrzy7Q6n3lvnUABKoPi8x4dnqJlmxoA== + version "34.6.0" + resolved "https://registry.npmjs.org/@gitbeaker/core/-/core-34.6.0.tgz#f774ea98ac079ba2edf495fdef738ac3f741178b" + integrity sha512-yKF+oxffPyzOnyuHCqLGJrBHhcFHuGHtcmqKhGKtnYPfqcNYA8rt4INAHaE5wMz4ILua9b4sB8p42fki+xn6WA== dependencies: - "@gitbeaker/requester-utils" "^34.7.0" + "@gitbeaker/requester-utils" "^34.6.0" form-data "^4.0.0" li "^1.3.0" mime "^3.0.0" @@ -1778,10 +1827,10 @@ got "11.8.3" xcase "^2.0.1" -"@gitbeaker/requester-utils@^34.7.0": - version "34.7.0" - resolved "https://registry.npmjs.org/@gitbeaker/requester-utils/-/requester-utils-34.7.0.tgz#85add7010663391e54d1b29f7c8d69da7e71d30d" - integrity sha512-SEvw6l9c+mRq33nsX/nyIIvZpUH/1CzK2tQAFj8io/5PeUWZ8oBRW1DUN7lW7uhbGdu3Sc3dA1S4H9OSvt679g== +"@gitbeaker/requester-utils@^34.6.0": + version "34.6.0" + resolved "https://registry.npmjs.org/@gitbeaker/requester-utils/-/requester-utils-34.6.0.tgz#4489009b759ca6f9a83f244453f4f610f1ac7349" + integrity sha512-H8utxbSP1kEdX0KcyVYrTDTT0A3UcPwrIV1ahyufX9ZLybYSUsA56B8Wx5kJSbWGFT1ffu2f8H2YDMwNCKKsBg== dependencies: form-data "^4.0.0" qs "^6.10.1" @@ -1796,10 +1845,10 @@ qs "^6.10.1" xcase "^2.0.1" -"@google-cloud/common@^3.8.1": - version "3.9.0" - resolved "https://registry.npmjs.org/@google-cloud/common/-/common-3.9.0.tgz#d93e62d13e66edacfad1cd25b20fdbbc11d9f6dd" - integrity sha512-R9PfmCKbpOizvcLY+fz/TS4HdOQhvmf4EY4xEXvWnotGbGXujuTLJTJ2URy8BGT8TDxlh6gjjfEwjJ8McnNPIg== +"@google-cloud/common@^3.7.0": + version "3.7.0" + resolved "https://registry.npmjs.org/@google-cloud/common/-/common-3.7.0.tgz#ee3fba75aeaa614978aebf8740380670026592aa" + integrity sha512-oFgpKLjH9JTOAyQd3kB36iSuH8wNSpDKb1TywlB6zcsG0xmJFxLutmfPhz03KUxRMNQOZ1K1Gc9BYvJifVnGVA== dependencies: "@google-cloud/projectify" "^2.0.0" "@google-cloud/promisify" "^2.0.0" @@ -1807,16 +1856,16 @@ duplexify "^4.1.1" ent "^2.2.0" extend "^3.0.2" - google-auth-library "^7.9.2" + google-auth-library "^7.0.2" retry-request "^4.2.2" teeny-request "^7.0.0" "@google-cloud/container@^2.2.0": - version "2.6.0" - resolved "https://registry.npmjs.org/@google-cloud/container/-/container-2.6.0.tgz#a35da386702a9499c64c2a070ec5ba8c2ba53709" - integrity sha512-B/noTkUW+URu3WIWlxuKcd/a3ndC4IHcRRSTdiX6CY6a3E8Q44oaoLIsD8f44/a1ac6o7KoFVBPBC0KmqChm0g== + version "2.3.0" + resolved "https://registry.npmjs.org/@google-cloud/container/-/container-2.3.0.tgz#a23f046948dbaf8cced008d419580cb600334efc" + integrity sha512-Tv8fR7JjlZr3oh476hMsf9yqGXbb/+81n0Va1Uc3reWjAdUXCYztH3/o/HMvh6yvd06j8VLLUxyBwAIb5PtW5g== dependencies: - google-gax "^2.24.1" + google-gax "^2.12.0" "@google-cloud/firestore@^5.0.2": version "5.0.2" @@ -1828,50 +1877,48 @@ google-gax "^2.24.1" protobufjs "^6.8.6" -"@google-cloud/paginator@^3.0.7": - version "3.0.7" - resolved "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-3.0.7.tgz#fb6f8e24ec841f99defaebf62c75c2e744dd419b" - integrity sha512-jJNutk0arIQhmpUUQJPJErsojqo834KcyB6X7a1mxuic8i1tKXxde8E69IZxNZawRIlZdIK2QY4WALvlK5MzYQ== +"@google-cloud/paginator@^3.0.0": + version "3.0.5" + resolved "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-3.0.5.tgz#9d6b96c421a89bd560c1bc2c197c7611ef21db6c" + integrity sha512-N4Uk4BT1YuskfRhKXBs0n9Lg2YTROZc6IMpkO/8DIHODtm5s3xY8K5vVBo23v/2XulY3azwITQlYWgT4GdLsUw== dependencies: arrify "^2.0.0" extend "^3.0.2" "@google-cloud/projectify@^2.0.0": - version "2.1.1" - resolved "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-2.1.1.tgz#ae6af4fee02d78d044ae434699a630f8df0084ef" - integrity sha512-+rssMZHnlh0twl122gXY4/aCrk0G1acBqkHFfYddtsqpYXGxA29nj9V5V9SfC+GyOG00l650f6lG9KL+EpFEWQ== + version "2.0.1" + resolved "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-2.0.1.tgz#13350ee609346435c795bbfe133a08dfeab78d65" + integrity sha512-ZDG38U/Yy6Zr21LaR3BTiiLtpJl6RkPS/JwoRT453G+6Q1DhlV0waNf8Lfu+YVYGIIxgKnLayJRfYlFJfiI8iQ== "@google-cloud/promisify@^2.0.0": - version "2.0.4" - resolved "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-2.0.4.tgz#9d8705ecb2baa41b6b2673f3a8e9b7b7e1abc52a" - integrity sha512-j8yRSSqswWi1QqUGKVEKOG03Q7qOoZP6/h2zN2YO+F5h2+DHU0bSrHCK9Y7lo2DI9fBd8qGAw795sf+3Jva4yA== + version "2.0.3" + resolved "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-2.0.3.tgz#f934b5cdc939e3c7039ff62b9caaf59a9d89e3a8" + integrity sha512-d4VSA86eL/AFTe5xtyZX+ePUjE8dIFu2T8zmdeNBSa5/kNgXPCx/o/wbFNHAGLJdGnk1vddRuMESD9HbOC8irw== "@google-cloud/storage@^5.6.0", "@google-cloud/storage@^5.8.0": - version "5.18.2" - resolved "https://registry.npmjs.org/@google-cloud/storage/-/storage-5.18.2.tgz#0ded98a69323d253e6dd986650edc89b5c504bf9" - integrity sha512-hL/6epBF2uPt7YtJoOKI6mVxe6RsKBs7S8o2grE0bFGdQKSOngVHBcstH8jDw7aN2rXGouA2TfVTxH+VapY5cg== + version "5.11.0" + resolved "https://registry.npmjs.org/@google-cloud/storage/-/storage-5.11.0.tgz#f2414358f093034410bb03410176a5dcabc7bdf8" + integrity sha512-UgdAwBelXpQhubYOHw0U/hDxCXIXFT2TqDc0JWUxtg+BeePZC0ohoFM/b/tJffE28AZW0urTQax5xbRNoDA1Sw== dependencies: - "@google-cloud/common" "^3.8.1" - "@google-cloud/paginator" "^3.0.7" + "@google-cloud/common" "^3.7.0" + "@google-cloud/paginator" "^3.0.0" "@google-cloud/promisify" "^2.0.0" - abort-controller "^3.0.0" arrify "^2.0.0" - async-retry "^1.3.3" + async-retry "^1.3.1" compressible "^2.0.12" - configstore "^5.0.0" - date-and-time "^2.0.0" + date-and-time "^1.0.0" duplexify "^4.0.0" extend "^3.0.2" - gaxios "^4.0.0" + gcs-resumable-upload "^3.3.0" get-stream "^6.0.0" - google-auth-library "^7.0.0" hash-stream-validation "^0.2.2" - mime "^3.0.0" + mime "^2.2.0" mime-types "^2.0.8" + onetime "^5.1.0" p-limit "^3.0.1" pumpify "^2.0.0" snakeize "^0.1.0" - stream-events "^1.0.4" + stream-events "^1.0.1" xdg-basedir "^4.0.0" "@graphiql/toolkit@^0.4.2": @@ -1883,12 +1930,12 @@ meros "^1.1.4" "@graphql-codegen/cli@^2.3.1": - version "2.6.2" - resolved "https://registry.npmjs.org/@graphql-codegen/cli/-/cli-2.6.2.tgz#a9aa4656141ee0998cae8c7ad7d0bf9ca8e0c9ae" - integrity sha512-UO75msoVgvLEvfjCezM09cQQqp32+mR8Ma1ACsBpr7nroFvHbgcu2ulx1cMovg4sxDBCsvd9Eq/xOOMpARUxtw== + version "2.3.1" + resolved "https://registry.npmjs.org/@graphql-codegen/cli/-/cli-2.3.1.tgz#66083293b60e3182603d70031210d59e6f1a16e5" + integrity sha512-xMSvYqFtnRXOp/sVJSyqiFTm70X8ouLXiq5o/R/D3yQtA6NNudAC+Q4oxg9/LZKnRDL6pehwdC8CNnQk0Tf7Sw== dependencies: - "@graphql-codegen/core" "2.5.1" - "@graphql-codegen/plugin-helpers" "^2.4.1" + "@graphql-codegen/core" "2.4.0" + "@graphql-codegen/plugin-helpers" "^2.3.2" "@graphql-tools/apollo-engine-loader" "^7.0.5" "@graphql-tools/code-file-loader" "^7.0.6" "@graphql-tools/git-loader" "^7.0.5" @@ -1918,7 +1965,7 @@ listr "^0.14.3" listr-update-renderer "^0.5.0" log-symbols "^4.0.0" - minimatch "^4.0.0" + minimatch "^3.0.4" mkdirp "^1.0.4" string-env-interpolation "^1.0.1" ts-log "^2.2.3" @@ -1928,32 +1975,32 @@ yaml "^1.10.0" yargs "^17.0.0" -"@graphql-codegen/core@2.5.1": - version "2.5.1" - resolved "https://registry.npmjs.org/@graphql-codegen/core/-/core-2.5.1.tgz#e3d50d3449b8c58b74ea08e97faf656a1b7fc8a1" - integrity sha512-alctBVl2hMnBXDLwkgmnFPrZVIiBDsWJSmxJcM4GKg1PB23+xuov35GE47YAyAhQItE1B1fbYnbb1PtGiDZ4LA== +"@graphql-codegen/core@2.4.0": + version "2.4.0" + resolved "https://registry.npmjs.org/@graphql-codegen/core/-/core-2.4.0.tgz#d94dcc088b5e117c847ce5b10c4fe1eb7325e180" + integrity sha512-5RiYE1+07jayp/3w/bkyaCXtfKNeKmRabpPP4aRi369WeH2cH37l2K8NbhkIU+zhpnhoqMID61TO56x2fKldZQ== dependencies: - "@graphql-codegen/plugin-helpers" "^2.4.1" + "@graphql-codegen/plugin-helpers" "^2.3.2" "@graphql-tools/schema" "^8.1.2" "@graphql-tools/utils" "^8.1.1" tslib "~2.3.0" "@graphql-codegen/graphql-modules-preset@^2.3.2": - version "2.3.5" - resolved "https://registry.npmjs.org/@graphql-codegen/graphql-modules-preset/-/graphql-modules-preset-2.3.5.tgz#07ef9ef6e66d4fbb76767097a7cc3cace34f8d08" - integrity sha512-y1PcTFr483Imzd346YdmNSvW3FlN4iYj4sRWCRys+WXpiFcXq+D7+1dFZvs75/9bIHoOEeQtusHHuRPy9qJVkA== + version "2.3.2" + resolved "https://registry.npmjs.org/@graphql-codegen/graphql-modules-preset/-/graphql-modules-preset-2.3.2.tgz#df88431e4cff656799b1ab0324e0795606162389" + integrity sha512-O3PPDQejqf3rF9sHqlrl00M+BSIKJAovFWt2zkDr/D3I/XwntR4QdQDKyY9zTotHfPpgJKyxyMzthpdqPD5XUA== dependencies: - "@graphql-codegen/plugin-helpers" "^2.4.0" - "@graphql-codegen/visitor-plugin-common" "2.7.1" - "@graphql-tools/utils" "8.6.1" + "@graphql-codegen/plugin-helpers" "^2.3.2" + "@graphql-codegen/visitor-plugin-common" "2.5.2" + "@graphql-tools/utils" "8.5.5" change-case-all "1.0.14" parse-filepath "^1.0.2" tslib "~2.3.0" -"@graphql-codegen/plugin-helpers@^2.3.2", "@graphql-codegen/plugin-helpers@^2.4.0", "@graphql-codegen/plugin-helpers@^2.4.1": - version "2.4.1" - resolved "https://registry.npmjs.org/@graphql-codegen/plugin-helpers/-/plugin-helpers-2.4.1.tgz#433845a89b0b4b3a2a0e959e0a2cfe444cf7aeac" - integrity sha512-OPMma7aUnES3Dh+M0BfiNBnJLmYuH60EnbULAhufxFDn/Y2OA0Ht/LQok9beX6VN4ASZEMCOAGItJezGJr5DJw== +"@graphql-codegen/plugin-helpers@^2.3.2": + version "2.3.2" + resolved "https://registry.npmjs.org/@graphql-codegen/plugin-helpers/-/plugin-helpers-2.3.2.tgz#3f9ba625791901d19be733db1dfc9a3dbd0dac44" + integrity sha512-19qFA5XMAWaAY64sBljjDPYfHjE+QMk/+oalCyY13WjSlcLDvYPfmFlCNgFSsydArDELlHR8T1GMbA7C42M8TA== dependencies: "@graphql-tools/utils" "^8.5.2" change-case-all "1.0.14" @@ -1972,34 +2019,34 @@ tslib "~2.3.0" "@graphql-codegen/typescript-resolvers@^2.4.3": - version "2.5.2" - resolved "https://registry.npmjs.org/@graphql-codegen/typescript-resolvers/-/typescript-resolvers-2.5.2.tgz#dc19cc4fd8b7750269651adfa331f9f5f6e33032" - integrity sha512-iYgAttxqE/1TFcKmApwC/VzPFiPa22WYXq6XKQH8eDZUQvG2O4yG+2RfBxfPNGM5DnNkiOGBPuGipTSxV7lmaA== + version "2.4.3" + resolved "https://registry.npmjs.org/@graphql-codegen/typescript-resolvers/-/typescript-resolvers-2.4.3.tgz#556dbaf23eac0ff9c321d3ce7126d96a839f793f" + integrity sha512-4m3E0zKLSXjGirZcYHHaZ0bxjy/gxvuumShFCKFmYTkHwTfqBaeh/pMhWqLkwC9wimrH6mQoPIYSQHLaF6Eqng== dependencies: - "@graphql-codegen/plugin-helpers" "^2.4.0" - "@graphql-codegen/typescript" "^2.4.5" - "@graphql-codegen/visitor-plugin-common" "2.7.1" + "@graphql-codegen/plugin-helpers" "^2.3.2" + "@graphql-codegen/typescript" "^2.4.2" + "@graphql-codegen/visitor-plugin-common" "2.5.2" "@graphql-tools/utils" "^8.1.1" auto-bind "~4.0.0" tslib "~2.3.0" -"@graphql-codegen/typescript@^2.4.2", "@graphql-codegen/typescript@^2.4.5": - version "2.4.5" - resolved "https://registry.npmjs.org/@graphql-codegen/typescript/-/typescript-2.4.5.tgz#80ca7a343511a27cd587c0b220b0a0dd99a4dc4b" - integrity sha512-Ytb8phNHKl/v/wxudsMOAV1dmzIbckWHm2J83PLNOvnu9CGEhgsd67vfe3ZoF95VU2BKSG8BXGa6uL9z2xDmuA== +"@graphql-codegen/typescript@^2.4.2": + version "2.4.2" + resolved "https://registry.npmjs.org/@graphql-codegen/typescript/-/typescript-2.4.2.tgz#a239d5fd8f11140d5d4c81cfae7ff02054b724dc" + integrity sha512-8ajWidiFqF1KNAywtb/692SjwTyjzrDHo1sf2Q7Z+rh9qDEIrh83VHB8naT/1CefOvxj3MS6GbcsvJMizaE/AQ== dependencies: - "@graphql-codegen/plugin-helpers" "^2.4.0" + "@graphql-codegen/plugin-helpers" "^2.3.2" "@graphql-codegen/schema-ast" "^2.4.1" - "@graphql-codegen/visitor-plugin-common" "2.7.1" + "@graphql-codegen/visitor-plugin-common" "2.5.2" auto-bind "~4.0.0" tslib "~2.3.0" -"@graphql-codegen/visitor-plugin-common@2.7.1": - version "2.7.1" - resolved "https://registry.npmjs.org/@graphql-codegen/visitor-plugin-common/-/visitor-plugin-common-2.7.1.tgz#bdcded24d1d6f329d32b90704397d6001374b893" - integrity sha512-Ew/+0GwGwL3ZSXS0cYz6lVvE7S5SkbTr7caRpLa4FpAdLGNskCgdA1n6W5tX5c7qsaYstqlxp30hJTfgTsYS6A== +"@graphql-codegen/visitor-plugin-common@2.5.2": + version "2.5.2" + resolved "https://registry.npmjs.org/@graphql-codegen/visitor-plugin-common/-/visitor-plugin-common-2.5.2.tgz#90aa4add41e17bca83f1c7c8ad674f2a06065efd" + integrity sha512-qDMraPmumG+vEGAz42/asRkdgIRmQWH5HTc320UX+I6CY6eE/Ey85cgzoqeQGLV8gu4sj3UkNx/3/r79eX4u+Q== dependencies: - "@graphql-codegen/plugin-helpers" "^2.4.0" + "@graphql-codegen/plugin-helpers" "^2.3.2" "@graphql-tools/optimize" "^1.0.1" "@graphql-tools/relay-operation-optimizer" "^6.3.7" "@graphql-tools/utils" "^8.3.0" @@ -2011,12 +2058,12 @@ tslib "~2.3.0" "@graphql-tools/apollo-engine-loader@^7.0.5": - version "7.2.2" - resolved "https://registry.npmjs.org/@graphql-tools/apollo-engine-loader/-/apollo-engine-loader-7.2.2.tgz#1463f5d2d95b5ca2b602b35b4922b38935013860" - integrity sha512-jrtA1IvgbaHzla9nyBngNyvajudTcQAVE3//mgrK+DoN7UpUhtoXfxTOOq2tzZN67o4a6Bv/RJsxB3rSI3NLzg== + version "7.2.1" + resolved "https://registry.npmjs.org/@graphql-tools/apollo-engine-loader/-/apollo-engine-loader-7.2.1.tgz#14e5d0b1032a7d882d22a7533c8969ee3fa797f2" + integrity sha512-Fj/A8+9SXPTXkpKqhcSq7O9WZuMdy5zynGrnMyewbCuw1kSfzgC4pJB76ILSPa5ajOcC5bBmmvXm+yVFVRgVMg== dependencies: "@graphql-tools/utils" "^8.5.1" - cross-undici-fetch "^0.1.19" + cross-undici-fetch "^0.0.20" sync-fetch "0.3.1" tslib "~2.3.0" @@ -2064,16 +2111,15 @@ tslib "~2.2.0" value-or-promise "1.0.6" -"@graphql-tools/delegate@^8.4.1", "@graphql-tools/delegate@^8.5.0": - version "8.5.0" - resolved "https://registry.npmjs.org/@graphql-tools/delegate/-/delegate-8.5.0.tgz#f835b413f9277a07dd6db09d401fbec1ee76af0b" - integrity sha512-P2LLahWpv8eFrqXQi9v/NDLxLBKAugd3rmB8lxeTnCqma19ZM/VaSpvGAgGyjjHKQe097mAeBEkM/7uYbG/NFg== +"@graphql-tools/delegate@^8.4.1", "@graphql-tools/delegate@^8.4.2": + version "8.4.2" + resolved "https://registry.npmjs.org/@graphql-tools/delegate/-/delegate-8.4.2.tgz#a61d45719855720304e3656800342cfa17d82558" + integrity sha512-CjggOhiL4WtyG2I3kux+1/p8lQxSFHBj0gwa0NxnQ6Vsnpw7Ig5VP1ovPnitFuBv2k4QdC37Nj2xv2n7DRn8fw== dependencies: "@graphql-tools/batch-execute" "^8.3.1" "@graphql-tools/schema" "^8.3.1" - "@graphql-tools/utils" "^8.5.4" + "@graphql-tools/utils" "^8.5.3" dataloader "2.0.0" - graphql-executor "0.0.18" tslib "~2.3.0" value-or-promise "1.0.11" @@ -2090,13 +2136,13 @@ unixify "^1.0.0" "@graphql-tools/github-loader@^7.0.5": - version "7.2.3" - resolved "https://registry.npmjs.org/@graphql-tools/github-loader/-/github-loader-7.2.3.tgz#1195150078e48c1b49b5106973c5ec5c928b24c1" - integrity sha512-enbMT5lWtKaLGw0PB9RL9Xg/oc9y89e6ihuxD/ZnnNXo60J1JVNtTy3+gRgXvGOX9WtJgy3UDVudDefrOHsqaA== + version "7.2.1" + resolved "https://registry.npmjs.org/@graphql-tools/github-loader/-/github-loader-7.2.1.tgz#53ce2bf215a0eb083ff985b213402a24f1302da2" + integrity sha512-vqwh2H11ZkAATDam/JqiP0CSqQRPUbjgCDxPdUu/xvST2QKyA4+uVXLBcpBRJc5kJCQjELijeRWVHSk9oN1q6g== dependencies: "@graphql-tools/graphql-tag-pluck" "^7.1.3" "@graphql-tools/utils" "^8.5.1" - cross-undici-fetch "^0.1.19" + cross-undici-fetch "^0.0.20" sync-fetch "0.3.1" tslib "~2.3.0" @@ -2121,22 +2167,30 @@ unixify "^1.0.0" "@graphql-tools/graphql-tag-pluck@^7.1.3": - version "7.1.5" - resolved "https://registry.npmjs.org/@graphql-tools/graphql-tag-pluck/-/graphql-tag-pluck-7.1.5.tgz#229ed40f38430cdea750f112cbfad89fbc29129c" - integrity sha512-NKbFcjlg7cbK+scLXc6eVxXIhX4k8QL6lZ/y5Ju7yrpIN18k2vA78dI6W3Qb5qdftxbDNuC+kDmScZfzzxVPjQ== + version "7.1.4" + resolved "https://registry.npmjs.org/@graphql-tools/graphql-tag-pluck/-/graphql-tag-pluck-7.1.4.tgz#174b69d40988c3450d310173c5be5af894929c41" + integrity sha512-0V2AY68ip3YmJ9rnIwQGxXsokCeGD9FTQOeSLzpwG74U0VY6bphfaCp5KVGW+W5sGJchTj3HvnmvdmWZnEZWZA== dependencies: - "@babel/parser" "^7.16.8" - "@babel/traverse" "^7.16.8" - "@babel/types" "^7.16.8" + "@babel/parser" "7.16.4" + "@babel/traverse" "7.16.3" + "@babel/types" "7.16.0" "@graphql-tools/utils" "^8.5.1" tslib "~2.3.0" -"@graphql-tools/import@^6.2.6", "@graphql-tools/import@^6.5.7": - version "6.6.5" - resolved "https://registry.npmjs.org/@graphql-tools/import/-/import-6.6.5.tgz#e1ec593960288ceda7d5c56c0073c702b1bdcfa0" - integrity sha512-w0/cYuhrr2apn+iGoTToCqt65x2NN2iHQyqRNk/Zw1NJ+e8/C3eKVw0jmW4pYQvSocuPxL4UCSI56SdKO7m3+Q== +"@graphql-tools/import@^6.2.6": + version "6.3.1" + resolved "https://registry.npmjs.org/@graphql-tools/import/-/import-6.3.1.tgz#731c47ab6c6ac9f7994d75c76b6c2fa127d2d483" + integrity sha512-1szR19JI6WPibjYurMLdadHKZoG9C//8I/FZ0Dt4vJSbrMdVNp8WFxg4QnZrDeMG4MzZc90etsyF5ofKjcC+jw== dependencies: - "@graphql-tools/utils" "8.6.1" + resolve-from "5.0.0" + tslib "~2.2.0" + +"@graphql-tools/import@^6.5.7": + version "6.6.1" + resolved "https://registry.npmjs.org/@graphql-tools/import/-/import-6.6.1.tgz#2a7e1ceda10103ffeb8652a48ddc47150b035485" + integrity sha512-i9WA6k+erJMci822o9w9DoX+uncVBK60LGGYW8mdbhX0l7wEubUpA000thJ1aarCusYh0u+ZT9qX0HyVPXu25Q== + dependencies: + "@graphql-tools/utils" "8.5.3" resolve-from "5.0.0" tslib "~2.3.0" @@ -2173,7 +2227,7 @@ unixify "1.0.0" valid-url "1.0.9" -"@graphql-tools/load@^7.3.0", "@graphql-tools/load@^7.4.1": +"@graphql-tools/load@^7.3.0": version "7.5.1" resolved "https://registry.npmjs.org/@graphql-tools/load/-/load-7.5.1.tgz#8c7f846d2185ddc1d44fdfbf1ed9cb678f69e40b" integrity sha512-j9XcLYZPZdl/TzzqA83qveJmwcCxgGizt5L1+C1/Z68brTEmQHLdQCOR3Ma3ewESJt6DU05kSTu2raKaunkjRg== @@ -2183,7 +2237,17 @@ p-limit "3.1.0" tslib "~2.3.0" -"@graphql-tools/merge@6.0.0 - 6.2.14": +"@graphql-tools/load@^7.4.1": + version "7.4.1" + resolved "https://registry.npmjs.org/@graphql-tools/load/-/load-7.4.1.tgz#aa572fcef11d6028097b6ef39c13fa9d62e5a441" + integrity sha512-UvBodW5hRHpgBUBVz5K5VIhJDOTFIbRRAGD6sQ2l9J5FDKBEs3u/6JjZDzbdL96br94D5cEd2Tk6auaHpTn7mQ== + dependencies: + "@graphql-tools/schema" "8.3.1" + "@graphql-tools/utils" "^8.5.1" + p-limit "3.1.0" + tslib "~2.3.0" + +"@graphql-tools/merge@^6.0.0", "@graphql-tools/merge@^6.2.12": version "6.2.14" resolved "https://registry.npmjs.org/@graphql-tools/merge/-/merge-6.2.14.tgz#694e2a2785ba47558e5665687feddd2935e9d94e" integrity sha512-RWT4Td0ROJai2eR66NHejgf8UwnXJqZxXgDWDI+7hua5vNA2OW8Mf9K1Wav1ZkjWnuRp4ztNtkZGie5ISw55ow== @@ -2192,19 +2256,10 @@ "@graphql-tools/utils" "^7.7.0" tslib "~2.2.0" -"@graphql-tools/merge@^6.2.12": - version "6.2.17" - resolved "https://registry.npmjs.org/@graphql-tools/merge/-/merge-6.2.17.tgz#4dedf87d8435a5e1091d7cc8d4f371ed1e029f1f" - integrity sha512-G5YrOew39fZf16VIrc49q3c8dBqQDD0ax5LYPiNja00xsXDi0T9zsEWVt06ApjtSdSF6HDddlu5S12QjeN8Tow== - dependencies: - "@graphql-tools/schema" "^8.0.2" - "@graphql-tools/utils" "8.0.2" - tslib "~2.3.0" - "@graphql-tools/merge@^8.2.1": - version "8.2.2" - resolved "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.2.2.tgz#433566c662a33f5a9c3cc5f3ce3753fb0019477a" - integrity sha512-2DyqhIOMUMKbCPqo8p6xSdll2OBcBxGdOrxlJJlFQvinsSaYqp/ct3dhAxNtzaIcvSVgXvttQqfD7O2ziFtE7Q== + version "8.2.1" + resolved "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.2.1.tgz#bf83aa06a0cfc6a839e52a58057a84498d0d51ff" + integrity sha512-Q240kcUszhXiAYudjuJgNuLgy9CryDP3wp83NOZQezfA6h3ByYKU7xI6DiKrdjyVaGpYN3ppUmdj0uf5GaXzMA== dependencies: "@graphql-tools/utils" "^8.5.1" tslib "~2.3.0" @@ -2220,11 +2275,11 @@ tslib "~2.3.0" "@graphql-tools/optimize@^1.0.1": - version "1.2.0" - resolved "https://registry.npmjs.org/@graphql-tools/optimize/-/optimize-1.2.0.tgz#292d0a269f95d04bc6d822c034569bb7e591fb26" - integrity sha512-l0PTqgHeorQdeOizUor6RB49eOAng9+abSxiC5/aHRo6hMmXVaqv5eqndlmxCpx9BkgNb3URQbK+ZZHVktkP/g== + version "1.0.1" + resolved "https://registry.npmjs.org/@graphql-tools/optimize/-/optimize-1.0.1.tgz#9933fffc5a3c63f95102b1cb6076fb16ac7bb22d" + integrity sha512-cRlUNsbErYoBtzzS6zXahXeTBZGPVlPHXCpnEZ0XiK/KY/sQL96cyzak0fM/Gk6qEI9/l32MYEICjasiBQrl5w== dependencies: - tslib "~2.3.0" + tslib "~2.0.1" "@graphql-tools/prisma-loader@^7.0.6": version "7.1.1" @@ -2261,7 +2316,7 @@ relay-compiler "12.0.0" tslib "~2.3.0" -"@graphql-tools/schema@8.3.1", "@graphql-tools/schema@^8.0.0", "@graphql-tools/schema@^8.0.2", "@graphql-tools/schema@^8.1.2", "@graphql-tools/schema@^8.3.1": +"@graphql-tools/schema@8.3.1", "@graphql-tools/schema@^8.0.0", "@graphql-tools/schema@^8.1.2", "@graphql-tools/schema@^8.3.1": version "8.3.1" resolved "https://registry.npmjs.org/@graphql-tools/schema/-/schema-8.3.1.tgz#1ee9da494d2da457643b3c93502b94c3c4b68c74" integrity sha512-3R0AJFe715p4GwF067G5i0KCr/XIdvSfDLvTLEiTDQ8V/hwbOHEKHKWlEBHGRQwkG5lwFQlW1aOn7VnlPERnWQ== @@ -2305,10 +2360,10 @@ valid-url "1.0.9" ws "7.4.5" -"@graphql-tools/url-loader@^7.0.11", "@graphql-tools/url-loader@^7.4.2": - version "7.7.1" - resolved "https://registry.npmjs.org/@graphql-tools/url-loader/-/url-loader-7.7.1.tgz#2faabdc1d2c47edc8edc9cc938eee2767189869f" - integrity sha512-K/5amdeHtKYI976HVd/AXdSNvLL7vx5QVjMlwN0OHeYyxSgC+UOH+KkS7cshYgL13SekGu0Mxbg9ABfgQ34ECA== +"@graphql-tools/url-loader@^7.0.11": + version "7.7.0" + resolved "https://registry.npmjs.org/@graphql-tools/url-loader/-/url-loader-7.7.0.tgz#504f0030c75b61bca4ac07da49e8cd872c316972" + integrity sha512-mBBb+aJqI4E0MVEzyfi76Pi/G6lGxGTVt/tP1YtKJly7UnonNoWOtDusdL3zIVAGhGgLsNrLbGhLDbwSd6TV6A== dependencies: "@graphql-tools/delegate" "^8.4.1" "@graphql-tools/utils" "^8.5.1" @@ -2316,7 +2371,7 @@ "@n1ru4l/graphql-live-query" "^0.9.0" "@types/websocket" "^1.0.4" "@types/ws" "^8.0.0" - cross-undici-fetch "^0.1.19" + cross-undici-fetch "^0.1.4" dset "^3.1.0" extract-files "^11.0.0" graphql-sse "^1.0.1" @@ -2330,17 +2385,42 @@ value-or-promise "^1.0.11" ws "^8.3.0" -"@graphql-tools/utils@8.0.2": - version "8.0.2" - resolved "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.0.2.tgz#795a8383cdfdc89855707d62491c576f439f3c51" - integrity sha512-gzkavMOgbhnwkHJYg32Adv6f+LxjbQmmbdD5Hty0+CWxvaiuJq+nU6tzb/7VSU4cwhbNLx/lGu2jbCPEW1McZQ== +"@graphql-tools/url-loader@^7.4.2": + version "7.5.3" + resolved "https://registry.npmjs.org/@graphql-tools/url-loader/-/url-loader-7.5.3.tgz#a594be40e3bc68d22f76746356e7f0b8117b7137" + integrity sha512-VKMRJ4TOeVIdulkCLGSBUr4stRRwOGcVRXDeoUF+86K32Ufo0H2V0lz7QwS/bCl8GXV19FMgHZCDl4BMJyOXEA== + dependencies: + "@graphql-tools/delegate" "^8.4.1" + "@graphql-tools/utils" "^8.5.1" + "@graphql-tools/wrap" "^8.3.1" + "@n1ru4l/graphql-live-query" "0.9.0" + "@types/websocket" "1.0.4" + "@types/ws" "^8.0.0" + cross-undici-fetch "^0.0.26" + dset "^3.1.0" + extract-files "11.0.0" + graphql-sse "^1.0.1" + graphql-ws "^5.4.1" + isomorphic-ws "4.0.1" + meros "1.1.4" + subscriptions-transport-ws "^0.11.0" + sync-fetch "0.3.1" + tslib "~2.3.0" + valid-url "1.0.9" + value-or-promise "1.0.11" + ws "8.3.0" + +"@graphql-tools/utils@8.5.3", "@graphql-tools/utils@^8.5.1", "@graphql-tools/utils@^8.5.3": + version "8.5.3" + resolved "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.5.3.tgz#404062e62cae9453501197039687749c4885356e" + integrity sha512-HDNGWFVa8QQkoQB0H1lftvaO1X5xUaUDk1zr1qDe0xN1NL0E/CrQdJ5UKLqOvH4hkqVUPxQsyOoAZFkaH6rLHg== dependencies: tslib "~2.3.0" -"@graphql-tools/utils@8.6.1", "@graphql-tools/utils@^8.1.1", "@graphql-tools/utils@^8.3.0", "@graphql-tools/utils@^8.5.1", "@graphql-tools/utils@^8.5.2", "@graphql-tools/utils@^8.5.3", "@graphql-tools/utils@^8.5.4", "@graphql-tools/utils@^8.6.0": - version "8.6.1" - resolved "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.6.1.tgz#52c7eb108f2ca2fd01bdba8eef85077ead1bf882" - integrity sha512-uxcfHCocp4ENoIiovPxUWZEHOnbXqj3ekWc0rm7fUhW93a1xheARNHcNKhwMTR+UKXVJbTFQdGI1Rl5XdyvDBg== +"@graphql-tools/utils@8.5.5": + version "8.5.5" + resolved "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.5.5.tgz#019ddb99719feb19602afdb537c06e463df674a9" + integrity sha512-y7zRXWIUI73X+9/rf/0KzrNFMlpRKFfzLiwdbIeWwgLs+NV9vfUOoVkX8luXX6LwQxhSypHATMiwZGM2ro/wJA== dependencies: tslib "~2.3.0" @@ -2353,6 +2433,20 @@ camel-case "4.1.2" tslib "~2.2.0" +"@graphql-tools/utils@^8.0.0": + version "8.6.1" + resolved "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.6.1.tgz#52c7eb108f2ca2fd01bdba8eef85077ead1bf882" + integrity sha512-uxcfHCocp4ENoIiovPxUWZEHOnbXqj3ekWc0rm7fUhW93a1xheARNHcNKhwMTR+UKXVJbTFQdGI1Rl5XdyvDBg== + dependencies: + tslib "~2.3.0" + +"@graphql-tools/utils@^8.1.1", "@graphql-tools/utils@^8.3.0", "@graphql-tools/utils@^8.5.2", "@graphql-tools/utils@^8.6.0": + version "8.6.0" + resolved "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.6.0.tgz#f424256a1f3b87d1dcf6f9f675739b2d3627be33" + integrity sha512-rnk+RHaOCeWnfekeQGRh5ycXK1ZAI7Nm0pbeLjA3SiysTdqhWyxNCp5ON4Mvtlid84OY/KB253fQq/2rotznCA== + dependencies: + tslib "~2.3.0" + "@graphql-tools/wrap@^7.0.1", "@graphql-tools/wrap@^7.0.4": version "7.0.8" resolved "https://registry.npmjs.org/@graphql-tools/wrap/-/wrap-7.0.8.tgz#ad41e487135ca3ea1ae0ea04bb3f596177fb4f50" @@ -2365,11 +2459,11 @@ value-or-promise "1.0.6" "@graphql-tools/wrap@^8.3.1": - version "8.4.0" - resolved "https://registry.npmjs.org/@graphql-tools/wrap/-/wrap-8.4.0.tgz#8fb2aa950ab68abe1fb63b6d62fc5b8fc4f8b025" - integrity sha512-fPB3+UnxLIPWDfMvAfBQnGmm8rrejeQjmCy7h9avWHBbkEELcvtrSWnKAvoKowe+WR9PVDM15XQ/PQvcddV0kQ== + version "8.3.2" + resolved "https://registry.npmjs.org/@graphql-tools/wrap/-/wrap-8.3.2.tgz#d3bcecb7529d071e4ecc4dfc75b9566e3da79d4f" + integrity sha512-7DcOBFB+Dd84x9dxSm7qS4iJONMyfLnCJb8A19vGPffpu4SMJ3sFcgwibKFu5l6mMUiigKgXna2RRgWI+02bKQ== dependencies: - "@graphql-tools/delegate" "^8.5.0" + "@graphql-tools/delegate" "^8.4.2" "@graphql-tools/schema" "^8.3.1" "@graphql-tools/utils" "^8.5.3" tslib "~2.3.0" @@ -2380,51 +2474,51 @@ resolved "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.1.1.tgz#076d78ce99822258cf813ecc1e7fa460fa74d052" integrity sha512-NQ17ii0rK1b34VZonlmT2QMJFI70m0TRwbknO/ihlbatXyaktDhN/98vBiUU6kNBPljqGqyIrl2T4nY2RpFANg== -"@grpc/grpc-js@~1.5.0": - version "1.5.5" - resolved "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.5.5.tgz#f850a1bb7de8a1d0bb4821aabd3655d1c928d4c6" - integrity sha512-FTd27ItHlsSG/7hp62xgI9YnqSwRbHRSVmDVR8DwOoC+6t8JhHRXe2JL0U8N9GLc0jS0HrtEbO/KP5+G0ebjLQ== +"@grpc/grpc-js@~1.4.0": + version "1.4.5" + resolved "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.4.5.tgz#0cd840b47180624eeedf066f2cdc422d052401f8" + integrity sha512-A6cOzSu7dqXZ7rzvh/9JZf+Jg/MOpLEMP0IdT8pT8hrWJZ6TB4ydN/MRuqOtAugInJe/VQ9F8BPricUpYZSaZA== dependencies: "@grpc/proto-loader" "^0.6.4" "@types/node" ">=12.12.47" "@grpc/proto-loader@^0.6.1", "@grpc/proto-loader@^0.6.4": - version "0.6.9" - resolved "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.6.9.tgz#4014eef366da733f8e04a9ddd7376fe8a58547b7" - integrity sha512-UlcCS8VbsU9d3XTXGiEVFonN7hXk+oMXZtoHHG2oSA1/GcDP1q6OUgs20PzHDGizzyi8ufGSUDlk3O2NyY7leg== + version "0.6.7" + resolved "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.6.7.tgz#e62a202f4cf5897bdd0e244dec1dbc80d84bdfa1" + integrity sha512-QzTPIyJxU0u+r2qGe8VMl3j/W2ryhEvBv7hc42OjYfthSj370fUrb7na65rG6w3YLZS/fb8p89iTBobfWGDgdw== dependencies: "@types/long" "^4.0.1" lodash.camelcase "^4.3.0" long "^4.0.0" protobufjs "^6.10.0" - yargs "^16.2.0" + yargs "^16.1.1" "@hapi/hoek@^9.0.0": - version "9.2.1" - resolved "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.2.1.tgz#9551142a1980503752536b5050fd99f4a7f13b17" - integrity sha512-gfta+H8aziZsm8pZa0vj04KO6biEiisppNgA1kbJvFrrWu9Vm7eaUEy76DIxsuTaWvti5fkJVhllWc6ZTE+Mdw== + version "9.0.4" + resolved "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.0.4.tgz#e80ad4e8e8d2adc6c77d985f698447e8628b6010" + integrity sha512-EwaJS7RjoXUZ2cXXKZZxZqieGtc7RbvQhUy8FwDoMQtxWVi14tFjeFCYPZAM1mBCpOpiBpyaZbb9NeHc7eGKgw== "@hapi/topo@^5.0.0": - version "5.1.0" - resolved "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz#dc448e332c6c6e37a4dc02fd84ba8d44b9afb012" - integrity sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg== + version "5.0.0" + resolved "https://registry.npmjs.org/@hapi/topo/-/topo-5.0.0.tgz#c19af8577fa393a06e9c77b60995af959be721e7" + integrity sha512-tFJlT47db0kMqVm3H4nQYgn6Pwg10GTZHb1pwmSiv1K4ks6drQOtfEF5ZnPjkvC+y4/bUPHK+bc87QvLcL+WMw== dependencies: "@hapi/hoek" "^9.0.0" "@hot-loader/react-dom@^16.13.0": - version "16.14.0" - resolved "https://registry.npmjs.org/@hot-loader/react-dom/-/react-dom-16.14.0.tgz#3cfc64e40bb78fa623e59b582b8f09dcdaad648a" - integrity sha512-EN9czvcLsMYmSDo5yRKZOAq3ZGRlDpad1gPtX0NdMMomJXcPE3yFSeFzE94X/NjOaiSVimB7LuqPYpkWVaIi4Q== + version "16.13.0" + resolved "https://registry.npmjs.org/@hot-loader/react-dom/-/react-dom-16.13.0.tgz#de245b42358110baf80aaf47a0592153d4047997" + integrity sha512-lJZrmkucz2MrQJTQtJobx5MICXcfQvKihszqv655p557HPi0hMOWxrNpiHv3DWD8ugNWjtWcVWqRnFvwsHq1mQ== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" prop-types "^15.6.2" - scheduler "^0.19.1" + scheduler "^0.19.0" "@humanwhocodes/config-array@^0.9.2": - version "0.9.3" - resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.3.tgz#f2564c744b387775b436418491f15fce6601f63e" - integrity sha512-3xSMlXHh03hCcCmFc0rbKp3Ivt2PFEJnQUJDDMTJQ2wkECZWdq4GePs2ctc5H8zV+cHPaq8k2vU8mrQjA6iHdQ== + version "0.9.2" + resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.2.tgz#68be55c737023009dfc5fe245d51181bb6476914" + integrity sha512-UXOuFCGcwciWckOpmfKDq/GyhlTf9pN/BzG//x8p8zTOFEcGuA68ANXheFS0AGvy3qgZqLBUkMs7hqzqCKOVwA== dependencies: "@humanwhocodes/object-schema" "^1.2.1" debug "^4.1.1" @@ -2451,20 +2545,19 @@ integrity sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ== "@istanbuljs/load-nyc-config@^1.0.0": - version "1.1.0" - resolved "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" - integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== + version "1.0.0" + resolved "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.0.0.tgz#10602de5570baea82f8afbfa2630b24e7a8cfe5b" + integrity sha512-ZR0rq/f/E4f4XcgnDvtMWXCUJpi8eO0rssVhmztsZqLIEFA9UUP9zmpE0VxlM+kv/E1ul2I876Fwil2ayptDVg== dependencies: camelcase "^5.3.1" find-up "^4.1.0" - get-package-type "^0.1.0" js-yaml "^3.13.1" resolve-from "^5.0.0" "@istanbuljs/schema@^0.1.2": - version "0.1.3" - resolved "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" - integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== + version "0.1.2" + resolved "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" + integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== "@jest/console@^26.6.2": version "26.6.2" @@ -2637,29 +2730,342 @@ "@types/yargs" "^15.0.0" chalk "^4.0.0" +"@jest/types@^27.2.5": + version "27.2.5" + resolved "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz#420765c052605e75686982d24b061b4cbba22132" + integrity sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^16.0.0" + chalk "^4.0.0" + +"@jimp/bmp@^0.10.3": + version "0.10.3" + resolved "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.10.3.tgz#79a23678e8389865c62e77b0dccc3e069dfc27f0" + integrity sha512-keMOc5woiDmONXsB/6aXLR4Z5Q+v8lFq3EY2rcj2FmstbDMhRuGbmcBxlEgOqfRjwvtf/wOtJ3Of37oAWtVfLg== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.10.3" + bmp-js "^0.1.0" + core-js "^3.4.1" + +"@jimp/core@^0.10.3": + version "0.10.3" + resolved "https://registry.npmjs.org/@jimp/core/-/core-0.10.3.tgz#4095f3bef43837c85d8f8373b912bc431cfe6d1f" + integrity sha512-Gd5IpL3U2bFIO57Fh/OA3HCpWm4uW/pU01E75rI03BXfTdz3T+J7TwvyG1XaqsQ7/DSlS99GXtLQPlfFIe28UA== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.10.3" + any-base "^1.1.0" + buffer "^5.2.0" + core-js "^3.4.1" + exif-parser "^0.1.12" + file-type "^9.0.0" + load-bmfont "^1.3.1" + mkdirp "^0.5.1" + phin "^2.9.1" + pixelmatch "^4.0.2" + tinycolor2 "^1.4.1" + +"@jimp/custom@^0.10.3": + version "0.10.3" + resolved "https://registry.npmjs.org/@jimp/custom/-/custom-0.10.3.tgz#eb6201b2e8fdd83afc3d8b514538e5faa1d30980" + integrity sha512-nZmSI+jwTi5IRyNLbKSXQovoeqsw+D0Jn0SxW08wYQvdkiWA8bTlDQFgQ7HVwCAKBm8oKkDB/ZEo9qvHJ+1gAQ== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/core" "^0.10.3" + core-js "^3.4.1" + +"@jimp/gif@^0.10.3": + version "0.10.3" + resolved "https://registry.npmjs.org/@jimp/gif/-/gif-0.10.3.tgz#7661280fd2b9cb70175b20e80f4e2b3e3ecf614e" + integrity sha512-vjlRodSfz1CrUvvrnUuD/DsLK1GHB/yDZXHthVdZu23zYJIW7/WrIiD1IgQ5wOMV7NocfrvPn2iqUfBP81/WWA== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.10.3" + core-js "^3.4.1" + omggif "^1.0.9" + +"@jimp/jpeg@^0.10.3": + version "0.10.3" + resolved "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.10.3.tgz#56f66874f204826291747ae12ff9eb337ab5cb8d" + integrity sha512-AAANwgUZOt6f6P7LZxY9lyJ9xclqutYJlsxt3JbriXUGJgrrFAIkcKcqv1nObgmQASSAQKYaMV9KdHjMlWFKlQ== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.10.3" + core-js "^3.4.1" + jpeg-js "^0.3.4" + +"@jimp/plugin-blit@^0.10.3": + version "0.10.3" + resolved "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.10.3.tgz#095bafbb2d82c300159334a49a094f0b7d362ae6" + integrity sha512-5zlKlCfx4JWw9qUVC7GI4DzXyxDWyFvgZLaoGFoT00mlXlN75SarlDwc9iZ/2e2kp4bJWxz3cGgG4G/WXrbg3Q== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.10.3" + core-js "^3.4.1" + +"@jimp/plugin-blur@^0.10.3": + version "0.10.3" + resolved "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.10.3.tgz#1bb91f730fda02b3c99d913e0191111327654766" + integrity sha512-cTOK3rjh1Yjh23jSfA6EHCHjsPJDEGLC8K2y9gM7dnTUK1y9NNmkFS23uHpyjgsWFIoH9oRh2SpEs3INjCpZhQ== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.10.3" + core-js "^3.4.1" + +"@jimp/plugin-circle@^0.10.3": + version "0.10.3" + resolved "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-0.10.3.tgz#c5a6ec275cf1e86b1356824637910a299c9fd662" + integrity sha512-51GAPIVelqAcfuUpaM5JWJ0iWl4vEjNXB7p4P7SX5udugK5bxXUjO6KA2qgWmdpHuCKtoNgkzWU9fNSuYp7tCA== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.10.3" + core-js "^3.4.1" + +"@jimp/plugin-color@^0.10.3": + version "0.10.3" + resolved "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.10.3.tgz#810c0f7cb4ceb21da1aecfbdb6ae09f00c1c0bfa" + integrity sha512-RgeHUElmlTH7vpI4WyQrz6u59spiKfVQbsG/XUzfWGamFSixa24ZDwX/yV/Ts+eNaz7pZeIuv533qmKPvw2ujg== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.10.3" + core-js "^3.4.1" + tinycolor2 "^1.4.1" + +"@jimp/plugin-contain@^0.10.3": + version "0.10.3" + resolved "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.10.3.tgz#cf62126a60260359061be456b2193818c5eb1df5" + integrity sha512-bYJKW9dqzcB0Ihc6u7jSyKa3juStzbLs2LFr6fu8TzA2WkMS/R8h+ddkiO36+F9ILTWHP0CIA3HFe5OdOGcigw== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.10.3" + core-js "^3.4.1" + +"@jimp/plugin-cover@^0.10.3": + version "0.10.3" + resolved "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.10.3.tgz#7cdf56ce878c24adc35c583735015118c6de38b4" + integrity sha512-pOxu0cM0BRPzdV468n4dMocJXoMbTnARDY/EpC3ZW15SpMuc/dr1KhWQHgoQX5kVW1Wt8zgqREAJJCQ5KuPKDA== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.10.3" + core-js "^3.4.1" + +"@jimp/plugin-crop@^0.10.3": + version "0.10.3" + resolved "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.10.3.tgz#03785181f62ddae9558ae73206f8d6217d7fa703" + integrity sha512-nB7HgOjjl9PgdHr076xZ3Sr6qHYzeBYBs9qvs3tfEEUeYMNnvzgCCGtUl6eMakazZFCMk3mhKmcB9zQuHFOvkg== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.10.3" + core-js "^3.4.1" + +"@jimp/plugin-displace@^0.10.3": + version "0.10.3" + resolved "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.10.3.tgz#cb5b225e6cf3cf44062b08cd2cf2115b3150d8c3" + integrity sha512-8t3fVKCH5IVqI4lewe4lFFjpxxr69SQCz5/tlpDLQZsrNScNJivHdQ09zljTrVTCSgeCqQJIKgH2Q7Sk/pAZ0w== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.10.3" + core-js "^3.4.1" + +"@jimp/plugin-dither@^0.10.3": + version "0.10.3" + resolved "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.10.3.tgz#c5c1cbbf157a771ba72b947dd9921a7bff3cf41a" + integrity sha512-JCX/oNSnEg1kGQ8ffZ66bEgQOLCY3Rn+lrd6v1jjLy/mn9YVZTMsxLtGCXpiCDC2wG/KTmi4862ysmP9do9dAQ== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.10.3" + core-js "^3.4.1" + +"@jimp/plugin-fisheye@^0.10.3": + version "0.10.3" + resolved "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-0.10.3.tgz#dee46d704df5c681556dc9ea9e87e8c77ac4fdda" + integrity sha512-RRZb1wqe+xdocGcFtj2xHU7sF7xmEZmIa6BmrfSchjyA2b32TGPWKnP3qyj7p6LWEsXn+19hRYbjfyzyebPElQ== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.10.3" + core-js "^3.4.1" + +"@jimp/plugin-flip@^0.10.3": + version "0.10.3" + resolved "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.10.3.tgz#12f894f85b283ad4f43b492e0755f8ec9459bc60" + integrity sha512-0epbi8XEzp0wmSjoW9IB0iMu0yNF17aZOxLdURCN3Zr+8nWPs5VNIMqSVa1Y62GSyiMDpVpKF/ITiXre+EqrPg== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.10.3" + core-js "^3.4.1" + +"@jimp/plugin-gaussian@^0.10.3": + version "0.10.3" + resolved "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.10.3.tgz#279222fc5d3aec24fab6162df2a1190309c71874" + integrity sha512-25eHlFbHUDnMMGpgRBBeQ2AMI4wsqCg46sue0KklI+c2BaZ+dGXmJA5uT8RTOrt64/K9Wz5E+2n7eBnny4dfpQ== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.10.3" + core-js "^3.4.1" + +"@jimp/plugin-invert@^0.10.3": + version "0.10.3" + resolved "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.10.3.tgz#6b7beacbe507fa03eec87b1d6343feba80e342eb" + integrity sha512-effYSApWY/FbtlzqsKXlTLkgloKUiHBKjkQnqh5RL4oQxh/33j6aX+HFdDyQKtsXb8CMd4xd7wyiD2YYabTa0g== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.10.3" + core-js "^3.4.1" + +"@jimp/plugin-mask@^0.10.3": + version "0.10.3" + resolved "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.10.3.tgz#72d994c3bb56c050a4edd6515f74b5b6d92dee69" + integrity sha512-twrg8q8TIhM9Z6Jcu9/5f+OCAPaECb0eKrrbbIajJqJ3bCUlj5zbfgIhiQIzjPJ6KjpnFPSqHQfHkU1Vvk/nVw== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.10.3" + core-js "^3.4.1" + +"@jimp/plugin-normalize@^0.10.3": + version "0.10.3" + resolved "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.10.3.tgz#f3cbb8a0fcc8e696619d5d46403b0620ee5240d6" + integrity sha512-xkb5eZI/mMlbwKkDN79+1/t/+DBo8bBXZUMsT4gkFgMRKNRZ6NQPxlv1d3QpRzlocsl6UMxrHnhgnXdLAcgrXw== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.10.3" + core-js "^3.4.1" + +"@jimp/plugin-print@^0.10.3": + version "0.10.3" + resolved "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.10.3.tgz#565d57a3a87dd59b4ede9cba7a6e34f8d01ed1b1" + integrity sha512-wjRiI6yjXsAgMe6kVjizP+RgleUCLkH256dskjoNvJzmzbEfO7xQw9g6M02VET+emnbY0CO83IkrGm2q43VRyg== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.10.3" + core-js "^3.4.1" + load-bmfont "^1.4.0" + +"@jimp/plugin-resize@^0.10.3": + version "0.10.3" + resolved "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.10.3.tgz#616fab55a1996a12e9583e7c1fb76815388fc14b" + integrity sha512-rf8YmEB1d7Sg+g4LpqF0Mp+dfXfb6JFJkwlAIWPUOR7lGsPWALavEwTW91c0etEdnp0+JB9AFpy6zqq7Lwkq6w== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.10.3" + core-js "^3.4.1" + +"@jimp/plugin-rotate@^0.10.3": + version "0.10.3" + resolved "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.10.3.tgz#cfcbdad664e13c84ce9b008ddbc157e03d7baa31" + integrity sha512-YXLlRjm18fkW9MOHUaVAxWjvgZM851ofOipytz5FyKp4KZWDLk+dZK1JNmVmK7MyVmAzZ5jsgSLhIgj+GgN0Eg== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.10.3" + core-js "^3.4.1" + +"@jimp/plugin-scale@^0.10.3": + version "0.10.3" + resolved "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.10.3.tgz#b593081ff35b0e9e11d5e0a3188c590eaa838434" + integrity sha512-5DXD7x7WVcX1gUgnlFXQa8F+Q3ThRYwJm+aesgrYvDOY+xzRoRSdQvhmdd4JEEue3lyX44DvBSgCIHPtGcEPaw== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.10.3" + core-js "^3.4.1" + +"@jimp/plugin-shadow@^0.10.3": + version "0.10.3" + resolved "https://registry.npmjs.org/@jimp/plugin-shadow/-/plugin-shadow-0.10.3.tgz#a9d54c8081a55152e5cc830cf5c898ab882b519a" + integrity sha512-/nkFXpt2zVcdP4ETdkAUL0fSzyrC5ZFxdcphbYBodqD7fXNqChS/Un1eD4xCXWEpW8cnG9dixZgQgStjywH0Mg== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.10.3" + core-js "^3.4.1" + +"@jimp/plugin-threshold@^0.10.3": + version "0.10.3" + resolved "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-0.10.3.tgz#8dd289c81de4bfbdb496f9c24496f9ee3b751ab5" + integrity sha512-Dzh0Yq2wXP2SOnxcbbiyA4LJ2luwrdf1MghNIt9H+NX7B+IWw/N8qA2GuSm9n4BPGSLluuhdAWJqHcTiREriVA== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.10.3" + core-js "^3.4.1" + +"@jimp/plugins@^0.10.3": + version "0.10.3" + resolved "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.10.3.tgz#e15d7ba3f9e2a6b479efad5c344c8b61e01b7cb2" + integrity sha512-jTT3/7hOScf0EIKiAXmxwayHhryhc1wWuIe3FrchjDjr9wgIGNN2a7XwCgPl3fML17DXK1x8EzDneCdh261bkw== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/plugin-blit" "^0.10.3" + "@jimp/plugin-blur" "^0.10.3" + "@jimp/plugin-circle" "^0.10.3" + "@jimp/plugin-color" "^0.10.3" + "@jimp/plugin-contain" "^0.10.3" + "@jimp/plugin-cover" "^0.10.3" + "@jimp/plugin-crop" "^0.10.3" + "@jimp/plugin-displace" "^0.10.3" + "@jimp/plugin-dither" "^0.10.3" + "@jimp/plugin-fisheye" "^0.10.3" + "@jimp/plugin-flip" "^0.10.3" + "@jimp/plugin-gaussian" "^0.10.3" + "@jimp/plugin-invert" "^0.10.3" + "@jimp/plugin-mask" "^0.10.3" + "@jimp/plugin-normalize" "^0.10.3" + "@jimp/plugin-print" "^0.10.3" + "@jimp/plugin-resize" "^0.10.3" + "@jimp/plugin-rotate" "^0.10.3" + "@jimp/plugin-scale" "^0.10.3" + "@jimp/plugin-shadow" "^0.10.3" + "@jimp/plugin-threshold" "^0.10.3" + core-js "^3.4.1" + timm "^1.6.1" + +"@jimp/png@^0.10.3": + version "0.10.3" + resolved "https://registry.npmjs.org/@jimp/png/-/png-0.10.3.tgz#5282cad239d02743137d88239e4cb1804ed877dd" + integrity sha512-YKqk/dkl+nGZxSYIDQrqhmaP8tC3IK8H7dFPnnzFVvbhDnyYunqBZZO3SaZUKTichClRw8k/CjBhbc+hifSGWg== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.10.3" + core-js "^3.4.1" + pngjs "^3.3.3" + +"@jimp/tiff@^0.10.3": + version "0.10.3" + resolved "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.10.3.tgz#6d143bbc42b40c9f618686a596311b35f7ff8502" + integrity sha512-7EsJzZ5Y/EtinkBGuwX3Bi4S+zgbKouxjt9c82VJTRJOQgLWsE/RHqcyRCOQBhHAZ9QexYmDz34medfLKdoX0g== + dependencies: + "@babel/runtime" "^7.7.2" + core-js "^3.4.1" + utif "^2.0.1" + +"@jimp/types@^0.10.3": + version "0.10.3" + resolved "https://registry.npmjs.org/@jimp/types/-/types-0.10.3.tgz#9122e0a3c70129c7f26c05bbeae5030ed3a6fd5d" + integrity sha512-XGmBakiHZqseSWr/puGN+CHzx0IKBSpsKlmEmsNV96HKDiP6eu8NSnwdGCEq2mmIHe0JNcg1hqg59hpwtQ7Tiw== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/bmp" "^0.10.3" + "@jimp/gif" "^0.10.3" + "@jimp/jpeg" "^0.10.3" + "@jimp/png" "^0.10.3" + "@jimp/tiff" "^0.10.3" + core-js "^3.4.1" + timm "^1.6.1" + +"@jimp/utils@^0.10.3": + version "0.10.3" + resolved "https://registry.npmjs.org/@jimp/utils/-/utils-0.10.3.tgz#69209dd6c2d6fd956a0beb67a47c26cb6f52f3fe" + integrity sha512-VcSlQhkil4ReYmg1KkN+WqHyYfZ2XfZxDsKAHSfST1GEz/RQHxKZbX+KhFKtKflnL0F4e6DlNQj3vznMNXCR2w== + dependencies: + "@babel/runtime" "^7.7.2" + core-js "^3.4.1" + regenerator-runtime "^0.13.3" + "@josephg/resolvable@^1.0.0": version "1.0.1" resolved "https://registry.npmjs.org/@josephg/resolvable/-/resolvable-1.0.1.tgz#69bc4db754d79e1a2f17a650d3466e038d94a5eb" integrity sha512-CtzORUwWTTOTqfVtHaKRJ0I1kNQd1bpn3sUh8I3nJDVY+5/M/Oe1DnEWzPQvqq/xPIIkzzzIP7mfCoAjFRvDhg== -"@jridgewell/resolve-uri@^3.0.3": - version "3.0.5" - resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz#68eb521368db76d040a6315cdb24bf2483037b9c" - integrity sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew== - -"@jridgewell/sourcemap-codec@^1.4.10": - version "1.4.11" - resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz#771a1d8d744eeb71b6adb35808e1a6c7b9b8c8ec" - integrity sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg== - -"@jridgewell/trace-mapping@^0.3.0": - version "0.3.4" - resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz#f6a0832dffd5b8a6aaa633b7d9f8e8e94c83a0c3" - integrity sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ== - dependencies: - "@jridgewell/resolve-uri" "^3.0.3" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jsdevtools/ono@^7.1.3": version "7.1.3" resolved "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz#9df03bbd7c696a5c58885c34aa06da41c8543796" @@ -2671,9 +3077,9 @@ integrity sha512-zMM9Ds+SawiUkakS7y94Ymqx+S0ORzpG3frZirN3l+UlXUmSUR7hF4wxCVqW+ei94JzV5kt0uXBcoOEAuiydrw== "@kubernetes/client-node@^0.16.0": - version "0.16.3" - resolved "https://registry.npmjs.org/@kubernetes/client-node/-/client-node-0.16.3.tgz#a26a5abbd6e45603b4f75f0baff00e19853e5be7" - integrity sha512-L7IckuyuPfhd+/Urib8MRas9D6sfKEq8IaITYcaE6LlU+Y8MeD7MTbuW6Yb2WdeRuFN8HPSS47mxPnOUNYBXEg== + version "0.16.1" + resolved "https://registry.npmjs.org/@kubernetes/client-node/-/client-node-0.16.1.tgz#c78ef667579777c1a532983922807e228dbc9b90" + integrity sha512-/Ah+3gFSjXFeqDMGGTyYBKug44Eu2D2qowKLdiZqxCkHdSNgy+CNk6FU1Vy80WrTvGkF/CZr4az6O5AopAiJEw== dependencies: "@types/js-yaml" "^4.0.1" "@types/node" "^10.12.0" @@ -2690,9 +3096,9 @@ openid-client "^4.1.1" request "^2.88.0" rfc4648 "^1.3.0" - shelljs "^0.8.5" + shelljs "^0.8.4" stream-buffers "^3.0.2" - tar "^6.1.11" + tar "^6.0.2" tmp-promise "^3.0.2" tslib "^1.9.3" underscore "^1.9.1" @@ -3370,14 +3776,14 @@ write-file-atomic "^3.0.3" "@lezer/common@^0.15.0", "@lezer/common@^0.15.5": - version "0.15.11" - resolved "https://registry.npmjs.org/@lezer/common/-/common-0.15.11.tgz#965b5067036305f12e8a3efc344076850be1d3a8" - integrity sha512-vv0nSdIaVCRcJ8rPuDdsrNVfBOYe/4Szr/LhF929XyDmBndLDuWiCCHooGlGlJfzELyO608AyDhVsuX/ZG36NA== + version "0.15.10" + resolved "https://registry.npmjs.org/@lezer/common/-/common-0.15.10.tgz#662da668f46244fb20bfaada67b43b3d0463b344" + integrity sha512-vlr+be73zTDoQBIknBVOh/633tmbQcjxUu9PIeVeYESeBK3V6TuBW96RRFg93Y2cyK9lglz241gOgSn452HFvA== "@lezer/lr@^0.15.0": - version "0.15.8" - resolved "https://registry.npmjs.org/@lezer/lr/-/lr-0.15.8.tgz#1564a911e62b0a0f75ca63794a6aa8c5dc63db21" - integrity sha512-bM6oE6VQZ6hIFxDNKk8bKPa14hqFrV07J/vHGOeiAbJReIaQXmkVb6xQu4MR+JBTLa5arGRyAAjJe1qaQt3Uvg== + version "0.15.5" + resolved "https://registry.npmjs.org/@lezer/lr/-/lr-0.15.5.tgz#4bce44169c441d9dda7be398f5202ea65c5f1138" + integrity sha512-DEcLyhdmBxD1foQe7RegLrSlfS/XaTMGLkO5evkzHWAQKh/JnFWp7j7iNB7s2EpxzRrBCh0U+W7JDCeFhv2mng== dependencies: "@lezer/common" "^0.15.0" @@ -3404,24 +3810,24 @@ read-yaml-file "^1.1.0" "@mapbox/node-pre-gyp@^1.0.0": - version "1.0.8" - resolved "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.8.tgz#32abc8a5c624bc4e46c43d84dfb8b26d33a96f58" - integrity sha512-CMGKi28CF+qlbXh26hDe6NxCd7amqeAzEqnS6IHeO6LoaKyM/n+Xw3HT1COdq8cuioOdlKdqn/hCmqPUOMOywg== + version "1.0.5" + resolved "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.5.tgz#2a0b32fcb416fb3f2250fd24cb2a81421a4f5950" + integrity sha512-4srsKPXWlIxp5Vbqz5uLfBN+du2fJChBoYn/f2h991WLdk7jUvcSk/McVLSv/X+xQIPI8eGD5GjrnygdyHnhPA== dependencies: detect-libc "^1.0.3" https-proxy-agent "^5.0.0" make-dir "^3.1.0" - node-fetch "^2.6.5" + node-fetch "^2.6.1" nopt "^5.0.0" - npmlog "^5.0.1" + npmlog "^4.1.2" rimraf "^3.0.2" - semver "^7.3.5" - tar "^6.1.11" + semver "^7.3.4" + tar "^6.1.0" "@material-table/core@^3.1.0": - version "3.2.5" - resolved "https://registry.npmjs.org/@material-table/core/-/core-3.2.5.tgz#37b3c665bed3ded6c147ad74adb330bf49efb213" - integrity sha512-TmVN/In15faabezW3COb4Ve5+YhqxFEQnf2Q2Cz3FVXXCFqJvtu3pkRLi+7N9UJ5bvistszz6wfHeiZZY1Rf9Q== + version "3.1.0" + resolved "https://registry.npmjs.org/@material-table/core/-/core-3.1.0.tgz#4fc3bd1553359e628413437a4102d8469852c253" + integrity sha512-46vpm1q9v2B5t/VgaEq2JmnftTBYle1yNAX3cfdQsTRZ1iWkpG34qBkNHx/hbOauQPsm5hmeUo1KJJZdwtGL1g== dependencies: "@babel/runtime" "^7.12.5" "@date-io/date-fns" "^1.3.13" @@ -3434,7 +3840,6 @@ prop-types "^15.7.2" react-beautiful-dnd "^13.0.0" react-double-scrollbar "0.0.15" - uuid "^3.4.0" "@material-ui/core@^4.11.0", "@material-ui/core@^4.11.3", "@material-ui/core@^4.12.1", "@material-ui/core@^4.12.2", "@material-ui/core@^4.9.13": version "4.12.3" @@ -3542,9 +3947,9 @@ react-is "^16.8.0 || ^17.0.0" "@microsoft/api-documenter@^7.15.0": - version "7.15.3" - resolved "https://registry.npmjs.org/@microsoft/api-documenter/-/api-documenter-7.15.3.tgz#2aeeb9ef95a59ad2328e7b7a3de66fa715c7eee0" - integrity sha512-tehv1f/aKwGBQp0sheQofz5NQfa61mvTdAe4IHQnVavsyyK71r+P+CVXWewznPYkqFzzVXaTdrCuNGPU5Yd3mg== + version "7.15.0" + resolved "https://registry.npmjs.org/@microsoft/api-documenter/-/api-documenter-7.15.0.tgz#e6cf24fc0e2f18a71dcf4c5c8100cc083167a81e" + integrity sha512-0KvwFamTIGZk6VE71F5gdDLxszLet0A1PEeb87RTdxr4KC0/yVFQvDyj+ck+HVr5+Exf6RyzIHfou0sgJl9SDA== dependencies: "@microsoft/api-extractor-model" "7.15.3" "@microsoft/tsdoc" "0.13.2" @@ -3587,9 +3992,9 @@ integrity sha512-W6CLUJ2eBMw3Rec70qrsEW0jOm/3twwJv21mrmj2yORiaVmVYGS4sSS5yUwvQc1ZlDLYGPnClVWmUUMagKNsfA== "@microsoft/microsoft-graph-types@^2.6.0": - version "2.14.0" - resolved "https://registry.npmjs.org/@microsoft/microsoft-graph-types/-/microsoft-graph-types-2.14.0.tgz#5c9ba1ad153b4a1ddeb330099e9ac55e379882c4" - integrity sha512-O4vcX6+2ivfUhDiZm/p4SIxGv+SQFe3qROcmvZpPluNAqL/Ho5/6LXysgjexvtUtNOUYXN/ZtfZdY30tlwQy+w== + version "2.13.0" + resolved "https://registry.npmjs.org/@microsoft/microsoft-graph-types/-/microsoft-graph-types-2.13.0.tgz#aa584e4897665df5a9c8869a226264cd6ec5882b" + integrity sha512-63FfWBLcyNo8tMP4oPcdqHQvk4ehuWpiUMjVLD7zJXPENIowpdwudP969AALkKzlwsjWImamdivGKd2Zc8Z1Uw== "@microsoft/tsdoc-config@~0.15.2": version "0.15.2" @@ -3606,10 +4011,10 @@ resolved "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.13.2.tgz#3b0efb6d3903bd49edb073696f60e90df08efb26" integrity sha512-WrHvO8PDL8wd8T2+zBGKrMwVL5IyzR3ryWUsl0PXgEV0QHup4mTLi0QcATefGI6Gx9Anu7vthPyyyLpY0EpiQg== -"@mswjs/cookies@^0.1.6", "@mswjs/cookies@^0.1.7": - version "0.1.7" - resolved "https://registry.npmjs.org/@mswjs/cookies/-/cookies-0.1.7.tgz#d334081b2c51057a61c1dd7b76ca3cac02251651" - integrity sha512-bDg1ReMBx+PYDB4Pk7y1Q07Zz1iKIEUWQpkEXiA2lEWg9gvOZ8UBmGXilCEUvyYoRFlmr/9iXTRR69TrgSwX/Q== +"@mswjs/cookies@^0.1.6": + version "0.1.6" + resolved "https://registry.npmjs.org/@mswjs/cookies/-/cookies-0.1.6.tgz#176f77034ab6d7373ae5c94bcbac36fee8869249" + integrity sha512-A53XD5TOfwhpqAmwKdPtg1dva5wrng2gH5xMvklzbd9WLTSVU953eCRa8rtrrm6G7Cy60BOGsBRN89YQK0mlKA== dependencies: "@types/set-cookie-parser" "^2.4.0" set-cookie-parser "^2.4.6" @@ -3626,35 +4031,35 @@ outvariant "^1.2.0" strict-event-emitter "^0.2.0" -"@n1ru4l/graphql-live-query@^0.9.0": +"@n1ru4l/graphql-live-query@0.9.0", "@n1ru4l/graphql-live-query@^0.9.0": version "0.9.0" resolved "https://registry.npmjs.org/@n1ru4l/graphql-live-query/-/graphql-live-query-0.9.0.tgz#defaebdd31f625bee49e6745934f36312532b2bc" integrity sha512-BTpWy1e+FxN82RnLz4x1+JcEewVdfmUhV1C6/XYD5AjS7PQp9QFF7K8bCD6gzPTr2l+prvqOyVueQhFJxB1vfg== "@n1ru4l/push-pull-async-iterable-iterator@^3.1.0": - version "3.2.0" - resolved "https://registry.npmjs.org/@n1ru4l/push-pull-async-iterable-iterator/-/push-pull-async-iterable-iterator-3.2.0.tgz#c15791112db68dd9315d329d652b7e797f737655" - integrity sha512-3fkKj25kEjsfObL6IlKPAlHYPq/oYwUkkQ03zsTTiDjD7vg/RxjdiLeCydqtxHZP0JgsXL3D/X5oAkMGzuUp/Q== + version "3.1.0" + resolved "https://registry.npmjs.org/@n1ru4l/push-pull-async-iterable-iterator/-/push-pull-async-iterable-iterator-3.1.0.tgz#be450c97d1c7cd6af1a992d53232704454345df9" + integrity sha512-K4scWxGhdQM0masHHy4gIQs2iGiLEXCrXttumknyPJqtdl4J179BjpibWSSQ1fxKdCcHgIlCTKXJU6cMM6D6Wg== -"@nodelib/fs.scandir@2.1.5": - version "2.1.5" - resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" - integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== +"@nodelib/fs.scandir@2.1.3": + version "2.1.3" + resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz#3a582bdb53804c6ba6d146579c46e52130cf4a3b" + integrity sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw== dependencies: - "@nodelib/fs.stat" "2.0.5" + "@nodelib/fs.stat" "2.0.3" run-parallel "^1.1.9" -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": - version "2.0.5" - resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" - integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== +"@nodelib/fs.stat@2.0.3", "@nodelib/fs.stat@^2.0.2": + version "2.0.3" + resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz#34dc5f4cabbc720f4e60f75a747e7ecd6c175bd3" + integrity sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA== "@nodelib/fs.walk@^1.2.3": - version "1.2.8" - resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" - integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + version "1.2.4" + resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz#011b9202a70a6366e436ca5c065844528ab04976" + integrity sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ== dependencies: - "@nodelib/fs.scandir" "2.1.5" + "@nodelib/fs.scandir" "2.1.3" fastq "^1.6.0" "@npmcli/arborist@^4.0.4": @@ -3696,19 +4101,19 @@ walk-up-path "^1.0.0" "@npmcli/ci-detect@^1.0.0": - version "1.4.0" - resolved "https://registry.npmjs.org/@npmcli/ci-detect/-/ci-detect-1.4.0.tgz#18478bbaa900c37bfbd8a2006a6262c62e8b0fe1" - integrity sha512-3BGrt6FLjqM6br5AhWRKTr3u5GIVkjRYeAFrMp3HjnfICrg4xOrVRwFavKT6tsp++bq5dluL5t8ME/Nha/6c1Q== + version "1.3.0" + resolved "https://registry.npmjs.org/@npmcli/ci-detect/-/ci-detect-1.3.0.tgz#6c1d2c625fb6ef1b9dea85ad0a5afcbef85ef22a" + integrity sha512-oN3y7FAROHhrAt7Rr7PnTSwrHrZVRTS2ZbyxeQwSSYD0ifwM3YNgQqbaRmjcWoPyq77MjchusjJDspbzMmip1Q== "@npmcli/fs@^1.0.0": - version "1.1.1" - resolved "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz#72f719fe935e687c56a4faecf3c03d06ba593257" - integrity sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ== + version "1.0.0" + resolved "https://registry.npmjs.org/@npmcli/fs/-/fs-1.0.0.tgz#589612cfad3a6ea0feafcb901d29c63fd52db09f" + integrity sha512-8ltnOpRR/oJbOp8vaGUnipOi3bqkcW+sLHFlyXIr08OGHmVJLB1Hn7QtGXbYcpVtH1gAYZTlmDXtE4YV0+AMMQ== dependencies: "@gar/promisify" "^1.0.1" semver "^7.3.5" -"@npmcli/git@^2.1.0": +"@npmcli/git@^2.0.1", "@npmcli/git@^2.1.0": version "2.1.0" resolved "https://registry.npmjs.org/@npmcli/git/-/git-2.1.0.tgz#2fbd77e147530247d37f325930d457b3ebe894f6" integrity sha512-/hBFX/QG1b+N7PZBFs0bi+evgRZcK9nWBxQKZkGoXUT5hJSwl5c4d7y8/hm+NQZRPhQ67RzFaj5UM9YeyKoryw== @@ -3750,7 +4155,14 @@ pacote "^12.0.0" semver "^7.3.2" -"@npmcli/move-file@^1.0.1", "@npmcli/move-file@^1.1.0": +"@npmcli/move-file@^1.0.1": + version "1.0.1" + resolved "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.0.1.tgz#de103070dac0f48ce49cf6693c23af59c0f70464" + integrity sha512-Uv6h1sT+0DrblvIrolFtbvM1FgWm+/sy4B3pvLp67Zys+thcukzS5ekn7HsZFGpWP4Q3fYJCljbWQE/XivMRLw== + dependencies: + mkdirp "^1.0.4" + +"@npmcli/move-file@^1.1.0": version "1.1.2" resolved "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz#1a82c3e372f7cae9253eb66d72543d6b8685c674" integrity sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg== @@ -3783,13 +4195,15 @@ infer-owner "^1.0.4" "@npmcli/run-script@^1.8.2": - version "1.8.6" - resolved "https://registry.npmjs.org/@npmcli/run-script/-/run-script-1.8.6.tgz#18314802a6660b0d4baa4c3afe7f1ad39d8c28b7" - integrity sha512-e42bVZnC6VluBZBAFEr3YrdqSspG3bgilyg4nSLBJ7TRGNCzxHa92XAHxQBLYg0BmgwO4b2mf3h/l5EkEWRn3g== + version "1.8.3" + resolved "https://registry.npmjs.org/@npmcli/run-script/-/run-script-1.8.3.tgz#07f440ed492400bb1114369bc37315eeaaae2bb3" + integrity sha512-ELPGWAVU/xyU+A+H3pEPj0QOvYwLTX71RArXcClFzeiyJ/b/McsZ+d0QxpznvfFtZzxGN/gz/1cvlqICR4/suQ== dependencies: "@npmcli/node-gyp" "^1.0.2" "@npmcli/promise-spawn" "^1.3.2" + infer-owner "^1.0.4" node-gyp "^7.1.0" + puka "^1.0.1" read-package-json-fast "^2.0.1" "@npmcli/run-script@^2.0.0": @@ -3815,7 +4229,7 @@ "@octokit/types" "^6.27.1" "@octokit/webhooks" "^9.0.1" -"@octokit/auth-app@^3.3.0", "@octokit/auth-app@^3.4.0": +"@octokit/auth-app@^3.3.0": version "3.6.1" resolved "https://registry.npmjs.org/@octokit/auth-app/-/auth-app-3.6.1.tgz#aa5b02cc211175cbc28ce6c03c73373c1206d632" integrity sha512-6oa6CFphIYI7NxxHrdVOzhG7hkcKyGyYocg7lNDSJVauVOLtylg8hNJzoUyPAYKKK0yUeoZamE/lMs2tG+S+JA== @@ -3831,6 +4245,22 @@ universal-github-app-jwt "^1.0.1" universal-user-agent "^6.0.0" +"@octokit/auth-app@^3.4.0": + version "3.4.0" + resolved "https://registry.npmjs.org/@octokit/auth-app/-/auth-app-3.4.0.tgz#af9f68512e7b8dd071b49e1470a1ddf88ff6a3a3" + integrity sha512-zBVgTnLJb0uoNMGCpcDkkAbPeavHX7oAjJkaDv2nqMmsXSsCw4AbUhjl99EtJQG/JqFY/kLFHM9330Wn0k70+g== + dependencies: + "@octokit/auth-oauth-app" "^4.1.0" + "@octokit/auth-oauth-user" "^1.2.3" + "@octokit/request" "^5.4.11" + "@octokit/request-error" "^2.0.0" + "@octokit/types" "^6.0.3" + "@types/lru-cache" "^5.1.0" + deprecation "^2.3.1" + lru-cache "^6.0.0" + universal-github-app-jwt "^1.0.1" + universal-user-agent "^6.0.0" + "@octokit/auth-oauth-app@^4.0.0", "@octokit/auth-oauth-app@^4.3.0": version "4.3.0" resolved "https://registry.npmjs.org/@octokit/auth-oauth-app/-/auth-oauth-app-4.3.0.tgz#de02f184360ffd7cfccef861053784fc4410e7ea" @@ -3844,17 +4274,42 @@ btoa-lite "^1.0.0" universal-user-agent "^6.0.0" +"@octokit/auth-oauth-app@^4.1.0": + version "4.1.2" + resolved "https://registry.npmjs.org/@octokit/auth-oauth-app/-/auth-oauth-app-4.1.2.tgz#bf3ff30c260e6e9f10b950386f279befb8fe907d" + integrity sha512-bdNGNRmuDJjKoHla3mUGtkk/xcxKngnQfBEnyk+7VwMqrABKvQB1wQRSrwSWkPPUX7Lcj2ttkPAPG7+iBkMRnw== + dependencies: + "@octokit/auth-oauth-device" "^3.1.1" + "@octokit/auth-oauth-user" "^1.2.1" + "@octokit/request" "^5.3.0" + "@octokit/types" "^6.0.3" + "@types/btoa-lite" "^1.0.0" + btoa-lite "^1.0.0" + universal-user-agent "^6.0.0" + "@octokit/auth-oauth-device@^3.1.1": - version "3.1.2" - resolved "https://registry.npmjs.org/@octokit/auth-oauth-device/-/auth-oauth-device-3.1.2.tgz#d299f51f491669f37fe7af8738f5ac921e63973c" - integrity sha512-w7Po4Ck6N2aAn2VQyKLuojruiyKROTBv4qs6IwE5rbwF7HhBXXp4A/NKmkpoFIZkiXQtM+N8QtkSck4ApYWdGg== + version "3.1.1" + resolved "https://registry.npmjs.org/@octokit/auth-oauth-device/-/auth-oauth-device-3.1.1.tgz#380499f9a850425e2c7bdeb62afc070181c536a9" + integrity sha512-ykDZROilszXZJ6pYdl6SZ15UZniCs0zDcKgwOZpMz3U0QDHPUhFGXjHToBCAIHwbncMu+jLt4/Nw4lq3FwAw/w== dependencies: "@octokit/oauth-methods" "^1.1.0" "@octokit/request" "^5.4.14" "@octokit/types" "^6.10.0" universal-user-agent "^6.0.0" -"@octokit/auth-oauth-user@^1.2.1", "@octokit/auth-oauth-user@^1.2.3", "@octokit/auth-oauth-user@^1.3.0": +"@octokit/auth-oauth-user@^1.2.1", "@octokit/auth-oauth-user@^1.2.3": + version "1.2.4" + resolved "https://registry.npmjs.org/@octokit/auth-oauth-user/-/auth-oauth-user-1.2.4.tgz#3594eb7d40cb462240e7e90849781dfa0045aed5" + integrity sha512-efOajupCZBP1veqx5w59Qey0lIud1rDUgxTRjjkQDU3eOBmkAasY1pXemDsQwW0I85jb1P/gn2dMejedVxf9kw== + dependencies: + "@octokit/auth-oauth-device" "^3.1.1" + "@octokit/oauth-methods" "^1.1.0" + "@octokit/request" "^5.4.14" + "@octokit/types" "^6.12.2" + btoa-lite "^1.0.0" + universal-user-agent "^6.0.0" + +"@octokit/auth-oauth-user@^1.3.0": version "1.3.0" resolved "https://registry.npmjs.org/@octokit/auth-oauth-user/-/auth-oauth-user-1.3.0.tgz#da4e4529145181a6aa717ae858afb76ebd6e3360" integrity sha512-3QC/TAdk7onnxfyZ24BnJRfZv8TRzQK7SEFUS9vLng4Vv6Hv6I64ujdk/CUkREec8lhrwU764SZ/d+yrjjqhaQ== @@ -3867,11 +4322,11 @@ universal-user-agent "^6.0.0" "@octokit/auth-token@^2.4.4": - version "2.5.0" - resolved "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz#27c37ea26c205f28443402477ffd261311f21e36" - integrity sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g== + version "2.4.4" + resolved "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.4.4.tgz#ee31c69b01d0378c12fd3ffe406030f3d94d3b56" + integrity sha512-LNfGu3Ro9uFAYh10MUZVaT7X2CnNm2C8IDQmabx+3DygYIQjs9FwzFAHN/0t6mu5HEPhxcb1XOuxdpY82vCg2Q== dependencies: - "@octokit/types" "^6.0.3" + "@octokit/types" "^6.0.0" "@octokit/auth-unauthenticated@^2.0.0", "@octokit/auth-unauthenticated@^2.0.4": version "2.1.0" @@ -3881,6 +4336,18 @@ "@octokit/request-error" "^2.1.0" "@octokit/types" "^6.0.3" +"@octokit/core@^3.2.3": + version "3.2.4" + resolved "https://registry.npmjs.org/@octokit/core/-/core-3.2.4.tgz#5791256057a962eca972e31818f02454897fd106" + integrity sha512-d9dTsqdePBqOn7aGkyRFe7pQpCXdibSJ5SFnrTr0axevObZrpz3qkWm7t/NjYv5a66z6vhfteriaq4FRz3e0Qg== + dependencies: + "@octokit/auth-token" "^2.4.4" + "@octokit/graphql" "^4.5.8" + "@octokit/request" "^5.4.12" + "@octokit/types" "^6.0.3" + before-after-hook "^2.1.0" + universal-user-agent "^6.0.0" + "@octokit/core@^3.3.2", "@octokit/core@^3.4.0", "@octokit/core@^3.5.1": version "3.5.1" resolved "https://registry.npmjs.org/@octokit/core/-/core-3.5.1.tgz#8601ceeb1ec0e1b1b8217b960a413ed8e947809b" @@ -3895,18 +4362,18 @@ universal-user-agent "^6.0.0" "@octokit/endpoint@^6.0.1": - version "6.0.12" - resolved "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz#3b4d47a4b0e79b1027fb8d75d4221928b2d05658" - integrity sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA== + version "6.0.3" + resolved "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.3.tgz#dd09b599662d7e1b66374a177ab620d8cdf73487" + integrity sha512-Y900+r0gIz+cWp6ytnkibbD95ucEzDSKzlEnaWS52hbCDNcCJYO5mRmWW7HRAnDc7am+N/5Lnd8MppSaTYx1Yg== dependencies: - "@octokit/types" "^6.0.3" - is-plain-object "^5.0.0" - universal-user-agent "^6.0.0" + "@octokit/types" "^5.0.0" + is-plain-object "^3.0.0" + universal-user-agent "^5.0.0" "@octokit/graphql@^4.5.8": - version "4.8.0" - resolved "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz#664d9b11c0e12112cbf78e10f49a05959aa22cc3" - integrity sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg== + version "4.7.0" + resolved "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.7.0.tgz#cbe12edc2bc61e9eaa5f9e5d092644c92b6fcb74" + integrity sha512-diY0qMPyQjfu4rDu3kDhJ9qIZadIm4IISO3RJSv9ajYUWJUCO0AykbgzLcg1xclxtXgzY583u3gAv66M6zz5SA== dependencies: "@octokit/request" "^5.6.0" "@octokit/types" "^6.0.3" @@ -3927,12 +4394,28 @@ fromentries "^1.3.1" universal-user-agent "^6.0.0" -"@octokit/oauth-authorization-url@^4.2.1", "@octokit/oauth-authorization-url@^4.3.1": +"@octokit/oauth-authorization-url@^4.2.1": version "4.3.3" resolved "https://registry.npmjs.org/@octokit/oauth-authorization-url/-/oauth-authorization-url-4.3.3.tgz#6a6ef38f243086fec882b62744f39b517528dfb9" integrity sha512-lhP/t0i8EwTmayHG4dqLXgU+uPVys4WD/qUNvC+HfB1S1dyqULm5Yx9uKc1x79aP66U1Cb4OZeW8QU/RA9A4XA== -"@octokit/oauth-methods@^1.1.0", "@octokit/oauth-methods@^1.2.2": +"@octokit/oauth-authorization-url@^4.3.1": + version "4.3.1" + resolved "https://registry.npmjs.org/@octokit/oauth-authorization-url/-/oauth-authorization-url-4.3.1.tgz#008d09bf427a7f61c70b5283040d60a456011a51" + integrity sha512-sI/SOEAvzRhqdzj+kJl+2ifblRve2XU6ZB36Lq25Su8R31zE3GoKToSLh64nWFnKePNi2RrdcMm94UEIQZslOw== + +"@octokit/oauth-methods@^1.1.0": + version "1.2.2" + resolved "https://registry.npmjs.org/@octokit/oauth-methods/-/oauth-methods-1.2.2.tgz#3d98c548aa2ace36ad8d0ce6593fd49dcbe103cc" + integrity sha512-CFMUMn9DdPLMcpffhKgkwIIClfv0ZToJM4qcg4O0egCoHMYkVlxl22bBoo9qCnuF1U/xn871KEXuozKIX+bA2w== + dependencies: + "@octokit/oauth-authorization-url" "^4.3.1" + "@octokit/request" "^5.4.14" + "@octokit/request-error" "^2.0.5" + "@octokit/types" "^6.12.2" + btoa-lite "^1.0.0" + +"@octokit/oauth-methods@^1.2.2": version "1.2.6" resolved "https://registry.npmjs.org/@octokit/oauth-methods/-/oauth-methods-1.2.6.tgz#b9ac65e374b2cc55ee9dd8dcdd16558550438ea7" integrity sha512-nImHQoOtKnSNn05uk2o76om1tJWiAo4lOu2xMAHYsNr0fwopP+Dv+2MlGvaMMlFjoqVd3fF3X5ZDTKCsqgmUaQ== @@ -3948,6 +4431,11 @@ resolved "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-11.2.0.tgz#b38d7fc3736d52a1e96b230c1ccd4a58a2f400a6" integrity sha512-PBsVO+15KSlGmiI8QAzaqvsNlZlrDlyAJYcrXBCvVUxCp7VnXjkwPoFHgjEJXx3WF9BAwkA6nfCUA7i9sODzKA== +"@octokit/openapi-types@^7.3.2": + version "7.3.2" + resolved "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-7.3.2.tgz#065ce49b338043ec7f741316ce06afd4d459d944" + integrity sha512-oJhK/yhl9Gt430OrZOzAl2wJqR0No9445vmZ9Ey8GjUZUpwuu/vmEFP0TDhDXdpGDoxD6/EIFHJEcY8nHXpDTA== + "@octokit/plugin-enterprise-rest@^6.0.1": version "6.0.1" resolved "https://registry.npmjs.org/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-6.0.1.tgz#e07896739618dab8da7d4077c658003775f95437" @@ -3960,11 +4448,31 @@ dependencies: "@octokit/types" "^6.34.0" +"@octokit/plugin-paginate-rest@^2.6.2": + version "2.7.0" + resolved "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.7.0.tgz#6bb7b043c246e0654119a6ec4e72a172c9e2c7f3" + integrity sha512-+zARyncLjt9b0FjqPAbJo4ss7HOlBi1nprq+cPlw5vu2+qjy7WvlXhtXFdRHQbSL1Pt+bfAKaLADEkkvg8sP8w== + dependencies: + "@octokit/types" "^6.0.1" + +"@octokit/plugin-request-log@^1.0.2": + version "1.0.2" + resolved "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.2.tgz#394d59ec734cd2f122431fbaf05099861ece3c44" + integrity sha512-oTJSNAmBqyDR41uSMunLQKMX0jmEXbwD1fpz8FG27lScV3RhtGfBa1/BBLym+PxcC16IBlF7KH9vP1BUYxA+Eg== + "@octokit/plugin-request-log@^1.0.4": version "1.0.4" resolved "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz#5e50ed7083a613816b1e4a28aeec5fb7f1462e85" integrity sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA== +"@octokit/plugin-rest-endpoint-methods@5.3.1": + version "5.3.1" + resolved "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.3.1.tgz#deddce769b4ec3179170709ab42e4e9e6195aaa9" + integrity sha512-3B2iguGmkh6bQQaVOtCsS0gixrz8Lg0v4JuXPqBcFqLKuJtxAUf3K88RxMEf/naDOI73spD+goJ/o7Ie7Cvdjg== + dependencies: + "@octokit/types" "^6.16.2" + deprecation "^2.3.1" + "@octokit/plugin-rest-endpoint-methods@^5.12.0": version "5.13.0" resolved "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.13.0.tgz#8c46109021a3412233f6f50d28786f8e552427ba" @@ -3989,7 +4497,7 @@ "@octokit/types" "^6.0.1" bottleneck "^2.15.3" -"@octokit/request-error@^2.0.2", "@octokit/request-error@^2.0.5", "@octokit/request-error@^2.1.0": +"@octokit/request-error@^2.0.0", "@octokit/request-error@^2.0.2", "@octokit/request-error@^2.0.5", "@octokit/request-error@^2.1.0": version "2.1.0" resolved "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz#9e150357831bfc788d13a4fd4b1913d60c74d677" integrity sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg== @@ -3998,19 +4506,29 @@ deprecation "^2.0.0" once "^1.4.0" -"@octokit/request@^5.3.0", "@octokit/request@^5.4.12", "@octokit/request@^5.4.14", "@octokit/request@^5.6.0": - version "5.6.3" - resolved "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz#19a022515a5bba965ac06c9d1334514eb50c48b0" - integrity sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A== +"@octokit/request@^5.3.0", "@octokit/request@^5.4.11", "@octokit/request@^5.4.12", "@octokit/request@^5.4.14", "@octokit/request@^5.6.0": + version "5.6.0" + resolved "https://registry.npmjs.org/@octokit/request/-/request-5.6.0.tgz#6084861b6e4fa21dc40c8e2a739ec5eff597e672" + integrity sha512-4cPp/N+NqmaGQwbh3vUsYqokQIzt7VjsgTYVXiwpUP2pxd5YiZB2XuTedbb0SPtv9XS7nzAKjAuQxmY8/aZkiA== dependencies: "@octokit/endpoint" "^6.0.1" "@octokit/request-error" "^2.1.0" "@octokit/types" "^6.16.1" is-plain-object "^5.0.0" - node-fetch "^2.6.7" + node-fetch "^2.6.1" universal-user-agent "^6.0.0" -"@octokit/rest@^18.1.0", "@octokit/rest@^18.12.0", "@octokit/rest@^18.5.3": +"@octokit/rest@^18.1.0", "@octokit/rest@^18.5.3": + version "18.5.6" + resolved "https://registry.npmjs.org/@octokit/rest/-/rest-18.5.6.tgz#8c9a7c9329c7bbf478af20df78ddeab0d21f6d89" + integrity sha512-8HdG6ZjQdZytU6tCt8BQ2XLC7EJ5m4RrbyU/EARSkAM1/HP3ceOzMG/9atEfe17EDMer3IVdHWLedz2wDi73YQ== + dependencies: + "@octokit/core" "^3.2.3" + "@octokit/plugin-paginate-rest" "^2.6.2" + "@octokit/plugin-request-log" "^1.0.2" + "@octokit/plugin-rest-endpoint-methods" "5.3.1" + +"@octokit/rest@^18.12.0": version "18.12.0" resolved "https://registry.npmjs.org/@octokit/rest/-/rest-18.12.0.tgz#f06bc4952fc87130308d810ca9d00e79f6988881" integrity sha512-gDPiOHlyGavxr72y0guQEhLsemgVjwRePayJ+FcKc2SJqKUbxbkvf5kAZEWA/MKvsfYlQAMVzNJE3ezQcxMJ2Q== @@ -4020,14 +4538,21 @@ "@octokit/plugin-request-log" "^1.0.4" "@octokit/plugin-rest-endpoint-methods" "^5.12.0" -"@octokit/types@^5.0.1": +"@octokit/types@^5.0.0", "@octokit/types@^5.0.1": version "5.5.0" resolved "https://registry.npmjs.org/@octokit/types/-/types-5.5.0.tgz#e5f06e8db21246ca102aa28444cdb13ae17a139b" integrity sha512-UZ1pErDue6bZNjYOotCNveTXArOMZQFG6hKJfOnGnulVCMcVVi7YIIuuR4WfBhjo7zgpmzn/BkPDnUXtNx+PcQ== dependencies: "@types/node" ">= 8" -"@octokit/types@^6.0.1", "@octokit/types@^6.0.3", "@octokit/types@^6.10.0", "@octokit/types@^6.12.2", "@octokit/types@^6.14.2", "@octokit/types@^6.16.1", "@octokit/types@^6.26.0", "@octokit/types@^6.27.1", "@octokit/types@^6.34.0", "@octokit/types@^6.8.2": +"@octokit/types@^6.0.0", "@octokit/types@^6.0.1", "@octokit/types@^6.0.3", "@octokit/types@^6.10.0", "@octokit/types@^6.12.2", "@octokit/types@^6.14.2", "@octokit/types@^6.16.1", "@octokit/types@^6.16.2", "@octokit/types@^6.8.2": + version "6.16.4" + resolved "https://registry.npmjs.org/@octokit/types/-/types-6.16.4.tgz#d24f5e1bacd2fe96d61854b5bda0e88cf8288dfe" + integrity sha512-UxhWCdSzloULfUyamfOg4dJxV9B+XjgrIZscI0VCbp4eNrjmorGEw+4qdwcpTsu6DIrm9tQsFQS2pK5QkqQ04A== + dependencies: + "@octokit/openapi-types" "^7.3.2" + +"@octokit/types@^6.26.0", "@octokit/types@^6.27.1", "@octokit/types@^6.34.0": version "6.34.0" resolved "https://registry.npmjs.org/@octokit/types/-/types-6.34.0.tgz#c6021333334d1ecfb5d370a8798162ddf1ae8218" integrity sha512-s1zLBjWhdEI2zwaoSgyOFoKSl109CUcVBCc7biPJ3aAf6LGLU6szDvi31JPU7bxfla2lqfhjbbg/5DdFNxOwHw== @@ -4060,17 +4585,35 @@ integrity sha512-Aq58f5HiWdyDlFffbbSjAlv596h/cOnt2DO1w3DOC7OJ5EHs0hd/nycJfiu9RJbT6Yk6F1knnRRXNSpxoIVZ9Q== "@openapi-contrib/openapi-schema-to-json-schema@^3.0.0": - version "3.1.1" - resolved "https://registry.npmjs.org/@openapi-contrib/openapi-schema-to-json-schema/-/openapi-schema-to-json-schema-3.1.1.tgz#e43b09680e652bf1b9e135db3f8648e979b76c07" - integrity sha512-FMvdhv9Jr9tULjJAQaQzhCmNYYj2vQFVnl7CGlLAImZvJal71oedXMGszpPaZTLftAk5TCHqjnirig+P6LZxug== + version "3.0.3" + resolved "https://registry.npmjs.org/@openapi-contrib/openapi-schema-to-json-schema/-/openapi-schema-to-json-schema-3.0.3.tgz#c626eab186938f2751ee54ec68b345133bc0065c" + integrity sha512-/WX/Jos8n7CxvtWPmhlKl9qCAAW0I+VR+V4yXfQxCmB8wmjiz6lPLTGjNk5zD15qi2MGv58++hQLLdow89KdkA== dependencies: fast-deep-equal "^3.1.3" + lodash.clonedeep "^4.5.0" + +"@opencensus/web-types@0.0.7": + version "0.0.7" + resolved "https://registry.npmjs.org/@opencensus/web-types/-/web-types-0.0.7.tgz#4426de1fe5aa8f624db395d2152b902874f0570a" + integrity sha512-xB+w7ZDAu3YBzqH44rCmG9/RlrOmFuDPt/bpf17eJr8eZSrLt7nc7LnWdxM9Mmoj/YKMHpxRg28txu3TcpiL+g== + +"@opentelemetry/api@^0.10.2": + version "0.10.2" + resolved "https://registry.npmjs.org/@opentelemetry/api/-/api-0.10.2.tgz#9647b881f3e1654089ff7ea59d587b2d35060654" + integrity sha512-GtpMGd6vkzDMYcpu2t9LlhEgMy/SzBwRnz48EejlRArYqZzqSzAsKmegUK7zHgl+EOIaK9mKHhnRaQu3qw20cA== + dependencies: + "@opentelemetry/context-base" "^0.10.2" "@opentelemetry/api@^1.0.1": version "1.0.4" resolved "https://registry.npmjs.org/@opentelemetry/api/-/api-1.0.4.tgz#a167e46c10d05a07ab299fc518793b0cff8f6924" integrity sha512-BuJuXRSJNQ3QoKA6GWWDyuLpOUck+9hAXNMCnrloc1aWVoy6Xq6t9PUV08aBZ4Lutqq2LEHM486bpZqoViScog== +"@opentelemetry/context-base@^0.10.2": + version "0.10.2" + resolved "https://registry.npmjs.org/@opentelemetry/context-base/-/context-base-0.10.2.tgz#55bea904b2b91aa8a8675df9eaba5961bddb1def" + integrity sha512-hZNKjKOYsckoOEgBziGMnBcX0M7EtstnCmwz5jZUOUYwlZ+/xxX6z3jPu1XVO2Jivk0eLfuP9GP+vFD49CMetw== + "@panva/asn1.js@^1.0.0": version "1.0.0" resolved "https://registry.npmjs.org/@panva/asn1.js/-/asn1.js-1.0.0.tgz#dd55ae7b8129e02049f009408b97c61ccf9032f6" @@ -4297,9 +4840,9 @@ picomatch "^2.2.2" "@rollup/pluginutils@^4.1.1": - version "4.1.2" - resolved "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.1.2.tgz#ed5821c15e5e05e32816f5fb9ec607cdf5a75751" - integrity sha512-ROn4qvkxP9SyPeHaf7uQC/GPFY6L/OWy9+bd9AwcjOAWQwxRscoEyAUD8qCY5o5iL4jqQwoLk2kaTKJPb/HwzQ== + version "4.1.1" + resolved "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.1.1.tgz#1d4da86dd4eded15656a57d933fda2b9a08d47ec" + integrity sha512-clDjivHqWGXi7u+0d2r2sBi4Ie6VLEAzWMIkvJLnDmxoOhBYOTfzGbOQBA32THHm11/LiJbd01tJUpJsbshSWQ== dependencies: estree-walker "^2.0.1" picomatch "^2.2.2" @@ -4338,16 +4881,16 @@ string-argv "~0.3.1" "@samverschueren/stream-to-observable@^0.3.0": - version "0.3.1" - resolved "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.1.tgz#a21117b19ee9be70c379ec1877537ef2e1c63301" - integrity sha512-c/qwwcHyafOQuVQJj0IlBjf5yYgBI7YPJ77k4fOJYesb41jio65eaJODRUmfYKhTOFBrIZ66kgvGPlNbjuoRdQ== + version "0.3.0" + resolved "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz#ecdf48d532c58ea477acfcab80348424f8d0662f" + integrity sha512-MI4Xx6LHs4Webyvi6EbspgyAb4D2Q2VtnCQ1blOJcoLS6mVa8lNN2rkIy1CVxfTUpoyIbCTkXES1rLXztFD1lg== dependencies: any-observable "^0.3.0" -"@sideway/address@^4.1.3": - version "4.1.3" - resolved "https://registry.npmjs.org/@sideway/address/-/address-4.1.3.tgz#d93cce5d45c5daec92ad76db492cc2ee3c64ab27" - integrity sha512-8ncEUtmnTsMmL7z1YPB47kPUq7LpKWJNFPsRzHiIajGC5uXlWGn+AmkYPcHNl8S4tcEGx+cnORnNYaw2wvL+LQ== +"@sideway/address@^4.1.0": + version "4.1.1" + resolved "https://registry.npmjs.org/@sideway/address/-/address-4.1.1.tgz#9e321e74310963fdf8eebfbee09c7bd69972de4d" + integrity sha512-+I5aaQr3m0OAmMr7RQ3fR9zx55sejEYR2BFJaxL+zT3VM2611X0SHvPWIbAUBZVTn/YzYKbV8gJ2oT/QELknfQ== dependencies: "@hapi/hoek" "^9.0.0" @@ -4367,23 +4910,23 @@ integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== "@sindresorhus/is@^4.0.0": - version "4.4.0" - resolved "https://registry.npmjs.org/@sindresorhus/is/-/is-4.4.0.tgz#e277e5bdbdf7cb1e20d320f02f5e2ed113cd3185" - integrity sha512-QppPM/8l3Mawvh4rn9CNEYIU9bxpXUCRMaX9yUpvBk1nMKusLKpfXGDEKExKaPhLzcn3lzil7pR6rnJ11HgeRQ== + version "4.0.0" + resolved "https://registry.npmjs.org/@sindresorhus/is/-/is-4.0.0.tgz#2ff674e9611b45b528896d820d3d7a812de2f0e4" + integrity sha512-FyD2meJpDPjyNQejSjvnhpgI/azsQkA4lGbuu5BQZfjvJ9cbRZXzeWL2HceCekW4lixO9JPesIIQkSoLjeJHNQ== -"@sinonjs/commons@^1.6.0", "@sinonjs/commons@^1.7.0", "@sinonjs/commons@^1.8.3": +"@sinonjs/commons@^1.6.0", "@sinonjs/commons@^1.8.3": version "1.8.3" resolved "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz#3802ddd21a50a949b6721ddd72da36e67e7f1b2d" integrity sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ== dependencies: type-detect "4.0.8" -"@sinonjs/fake-timers@>=5": - version "9.1.0" - resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-9.1.0.tgz#8c92c56f195e0bed4c893ba59c8e3d55831ca0df" - integrity sha512-M8vapsv9qQupMdzrVzkn5rb9jG7aUTEPAZdMtME2PuBaefksFZVE2C1g4LBRTkF/k3nRDNbDc5tp5NFC1PEYxA== +"@sinonjs/commons@^1.7.0": + version "1.7.1" + resolved "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.7.1.tgz#da5fd19a5f71177a53778073978873964f49acf1" + integrity sha512-Debi3Baff1Qu1Unc3mjJ96MgpbwTn43S1+9yJ0llWygPwDNu2aaWBD6yc9y/Z8XDRNhx7U+u2UDg2OGQXkclUQ== dependencies: - "@sinonjs/commons" "^1.7.0" + type-detect "4.0.8" "@sinonjs/fake-timers@^6.0.1": version "6.0.1" @@ -4392,7 +4935,7 @@ dependencies: "@sinonjs/commons" "^1.7.0" -"@sinonjs/fake-timers@^7.1.2": +"@sinonjs/fake-timers@^7.0.4", "@sinonjs/fake-timers@^7.1.0": version "7.1.2" resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-7.1.2.tgz#2524eae70c4910edccf99b2f4e6efc5894aff7b5" integrity sha512-iQADsW4LBMISqZ6Ci1dupJL9pprqwcVFTcOsEmQOEhW+KLCVn/Y4Jrvg2k19fIHCp+iFprriYPTdRcQR8NbUPg== @@ -4400,9 +4943,9 @@ "@sinonjs/commons" "^1.7.0" "@sinonjs/samsam@^6.0.2": - version "6.1.1" - resolved "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-6.1.1.tgz#627f7f4cbdb56e6419fa2c1a3e4751ce4f6a00b1" - integrity sha512-cZ7rKJTLiE7u7Wi/v9Hc2fs3Ucc3jrWeMgPHbbTCeVAB2S0wOBbYlkJVeNSL04i7fdhT8wIbDq1zhC/PXTD2SA== + version "6.0.2" + resolved "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-6.0.2.tgz#a0117d823260f282c04bff5f8704bdc2ac6910bb" + integrity sha512-jxPRPp9n93ci7b8hMfJOFDPRLFYadN6FSpeROFTR4UNF4i5b+EK6m4QXPO46BDhFgRy1JuS87zAnFOzCUwMJcQ== dependencies: "@sinonjs/commons" "^1.6.0" lodash.get "^4.4.2" @@ -4510,7 +5053,7 @@ camelcase "^6.2.0" cosmiconfig "^7.0.1" -"@svgr/hast-util-to-babel-ast@^6.2.1": +"@svgr/hast-util-to-babel-ast@^6.0.0", "@svgr/hast-util-to-babel-ast@^6.2.1": version "6.2.1" resolved "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-6.2.1.tgz#ae065567b74cbe745afae617053adf9a764bea25" integrity sha512-pt7MMkQFDlWJVy9ULJ1h+hZBDGFfSCwlBNW1HkLnVi7jUhyEXUaGYWi1x6bM2IXuAR9l265khBT4Av4lPmaNLQ== @@ -4518,7 +5061,17 @@ "@babel/types" "^7.15.6" entities "^3.0.1" -"@svgr/plugin-jsx@6.2.x", "@svgr/plugin-jsx@^6.2.1": +"@svgr/plugin-jsx@6.2.x": + version "6.2.0" + resolved "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-6.2.0.tgz#5e41a75b12b34cb66509e63e535606161770ff42" + integrity sha512-QJDEe7K5Hkd4Eewu4pcjiOKTCtjB47Ol6lDLXVhf+jEewi+EKJAaAmM+bNixfW6LSNEg8RwOYQN3GZcprqKfHw== + dependencies: + "@babel/core" "^7.15.5" + "@svgr/babel-preset" "^6.2.0" + "@svgr/hast-util-to-babel-ast" "^6.0.0" + svg-parser "^2.0.2" + +"@svgr/plugin-jsx@^6.2.1": version "6.2.1" resolved "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-6.2.1.tgz#5668f1d2aa18c2f1bb7a1fc9f682d3f9aed263bd" integrity sha512-u+MpjTsLaKo6r3pHeeSVsh9hmGRag2L7VzApWIaS8imNguqoUwDq/u6U/NDmYs/KAsrmtBjOEaAAPbwNGXXp1g== @@ -4574,9 +5127,9 @@ defer-to-connect "^1.0.1" "@szmarczak/http-timer@^4.0.5": - version "4.0.6" - resolved "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz#b4a914bb62e7c272d4e5989fe4440f812ab1d807" - integrity sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w== + version "4.0.5" + resolved "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.5.tgz#bfbd50211e9dfa51ba07da58a14cdfd333205152" + integrity sha512-PyRA9sm1Yayuj5OIoJ1hGt2YISX45w9WcFbh6ddT0Z/0yaFxOtGLInr4jUfU1EAFVs0Yfyfev4RNwBlUaHdlDQ== dependencies: defer-to-connect "^2.0.0" @@ -4589,23 +5142,23 @@ "@testing-library/dom" "^8.1.0" "@testing-library/dom@^7.28.1": - version "7.31.2" - resolved "https://registry.npmjs.org/@testing-library/dom/-/dom-7.31.2.tgz#df361db38f5212b88555068ab8119f5d841a8c4a" - integrity sha512-3UqjCpey6HiTZT92vODYLPxTBWlM8ZOOjr3LX5F37/VRipW2M1kX6I/Cm4VXzteZqfGfagg8yXywpcOgQBlNsQ== + version "7.29.6" + resolved "https://registry.npmjs.org/@testing-library/dom/-/dom-7.29.6.tgz#eb37844fb431186db7960a7ff6749ea65a19617c" + integrity sha512-vzTsAXa439ptdvav/4lsKRcGpAQX7b6wBIqia7+iNzqGJ5zjswApxA6jDAsexrc6ue9krWcbh8o+LYkBXW+GCQ== dependencies: "@babel/code-frame" "^7.10.4" "@babel/runtime" "^7.12.5" "@types/aria-query" "^4.2.0" aria-query "^4.2.2" chalk "^4.1.0" - dom-accessibility-api "^0.5.6" + dom-accessibility-api "^0.5.4" lz-string "^1.4.4" pretty-format "^26.6.2" "@testing-library/dom@^8.1.0": - version "8.11.3" - resolved "https://registry.npmjs.org/@testing-library/dom/-/dom-8.11.3.tgz#38fd63cbfe14557021e88982d931e33fb7c1a808" - integrity sha512-9LId28I+lx70wUiZjLvi1DB/WT2zGOxUh46glrSNMaWVx849kKAluezVzZrXJfTKKoQTmEOutLes/bHg4Bj3aA== + version "8.11.1" + resolved "https://registry.npmjs.org/@testing-library/dom/-/dom-8.11.1.tgz#03fa2684aa09ade589b460db46b4c7be9fc69753" + integrity sha512-3KQDyx9r0RKYailW2MiYrSSKEfH0GTkI51UGEvJenvcoDoeRYs0PZpi2SXqtnMClQvCqdtTTpOfFETDTVADpAg== dependencies: "@babel/code-frame" "^7.10.4" "@babel/runtime" "^7.12.5" @@ -4617,13 +5170,13 @@ pretty-format "^27.0.2" "@testing-library/jest-dom@^5.10.1": - version "5.16.2" - resolved "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.16.2.tgz#f329b36b44aa6149cd6ced9adf567f8b6aa1c959" - integrity sha512-6ewxs1MXWwsBFZXIk4nKKskWANelkdUehchEOokHsN8X7c2eKXGw+77aRV63UU8f/DTSVUPLaGxdrj4lN7D/ug== + version "5.14.1" + resolved "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.14.1.tgz#8501e16f1e55a55d675fe73eecee32cdaddb9766" + integrity sha512-dfB7HVIgTNCxH22M1+KU6viG5of2ldoA5ly8Ar8xkezKHKXjRvznCdbMbqjYGgO2xjRbwnR+rR8MLUIqF3kKbQ== dependencies: "@babel/runtime" "^7.9.2" "@types/testing-library__jest-dom" "^5.9.1" - aria-query "^5.0.0" + aria-query "^4.2.2" chalk "^3.0.0" css "^3.0.0" css.escape "^1.5.1" @@ -4643,17 +5196,17 @@ react-error-boundary "^3.1.0" "@testing-library/react@^11.2.5": - version "11.2.7" - resolved "https://registry.npmjs.org/@testing-library/react/-/react-11.2.7.tgz#b29e2e95c6765c815786c0bc1d5aed9cb2bf7818" - integrity sha512-tzRNp7pzd5QmbtXNG/mhdcl7Awfu/Iz1RaVHY75zTdOkmHCuzMhRL83gWHSgOAcjS3CCbyfwUHMZgRJb4kAfpA== + version "11.2.6" + resolved "https://registry.npmjs.org/@testing-library/react/-/react-11.2.6.tgz#586a23adc63615985d85be0c903f374dab19200b" + integrity sha512-TXMCg0jT8xmuU8BkKMtp8l7Z50Ykew5WNX8UoIKTaLFwKkP2+1YDhOLA2Ga3wY4x29jyntk7EWfum0kjlYiSjQ== dependencies: "@babel/runtime" "^7.12.5" "@testing-library/dom" "^7.28.1" "@testing-library/user-event@^13.1.8": - version "13.5.0" - resolved "https://registry.npmjs.org/@testing-library/user-event/-/user-event-13.5.0.tgz#69d77007f1e124d55314a2b73fd204b333b13295" - integrity sha512-5Kwtbo3Y/NowpkbRuSepbyMFkZmHgD+vPzYB/RJ4oxt5Gj/avFFBYjhw27cqSVPVw/3a67NK1PbiIr9k4Gwmdg== + version "13.1.8" + resolved "https://registry.npmjs.org/@testing-library/user-event/-/user-event-13.1.8.tgz#9cbf342b88d837ee188f9f9f4df6d1beaaf179c2" + integrity sha512-M04HgOlJvxILf5xyrkJaEQfFOtcvhy3usLldQIEg9zgFIYQofSmFGVfFlS7BWowqlBGLrItwGMlPXCoBgoHSiw== dependencies: "@babel/runtime" "^7.12.5" @@ -4734,9 +5287,9 @@ integrity sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA== "@types/aria-query@^4.2.0": - version "4.2.2" - resolved "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.2.tgz#ed4e0ad92306a704f9fb132a0cfcf77486dbe2bc" - integrity sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig== + version "4.2.0" + resolved "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.0.tgz#14264692a9d6e2fa4db3df5e56e94b5e25647ac0" + integrity sha512-iIgQNzCm0v7QMhhe4Jjn9uRh+I6GoPmt03CbEtwx3ao8/EfoQcmgtqH4vQ5Db/lxiIGaWDv6nwvunuh0RyX0+A== "@types/aws-lambda@^8.10.83": version "8.10.92" @@ -4751,9 +5304,9 @@ "@types/node" "*" "@types/babel__core@^7.0.0", "@types/babel__core@^7.1.7": - version "7.1.18" - resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.18.tgz#1a29abcc411a9c05e2094c98f9a1b7da6cdf49f8" - integrity sha512-S7unDjm/C7z2A2R9NzfKCK1I+BAALDtxEmsJBwlB3EzNfb929ykjL++1CK9LO++EIp2fQrC8O+BwjKvz6UeDyQ== + version "7.1.9" + resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.9.tgz#77e59d438522a6fb898fa43dc3455c6e72f3963d" + integrity sha512-sY2RsIJ5rpER1u3/aQ8OFSI7qGIy8o1NEEbgb2UaJcvOtXOMpd39ko723NBpjQFg9SIX7TXtjejZVGeIMLhoOw== dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" @@ -4762,24 +5315,24 @@ "@types/babel__traverse" "*" "@types/babel__generator@*": - version "7.6.4" - resolved "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz#1f20ce4c5b1990b37900b63f050182d28c2439b7" - integrity sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg== + version "7.6.1" + resolved "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.1.tgz#4901767b397e8711aeb99df8d396d7ba7b7f0e04" + integrity sha512-bBKm+2VPJcMRVwNhxKu8W+5/zT7pwNEqeokFOmbvVSqGzFneNxYcEBro9Ac7/N9tlsaPYnZLK8J1LWKkMsLAew== dependencies: "@babel/types" "^7.0.0" "@types/babel__template@*": - version "7.4.1" - resolved "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz#3d1a48fd9d6c0edfd56f2ff578daed48f36c8969" - integrity sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g== + version "7.0.2" + resolved "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.0.2.tgz#4ff63d6b52eddac1de7b975a5223ed32ecea9307" + integrity sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg== dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" "@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": - version "7.14.2" - resolved "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.14.2.tgz#ffcd470bbb3f8bf30481678fb5502278ca833a43" - integrity sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA== + version "7.0.15" + resolved "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.0.15.tgz#db9e4238931eb69ef8aab0ad6523d4d4caa39d03" + integrity sha512-Pzh9O3sTK8V6I1olsXpCfj2k/ygO2q1X0vhhnDrEQyYLHZesWz+zMZMVcwXLCYf0U36EtmyYaFGPfXlTtDHe3A== dependencies: "@babel/types" "^7.3.0" @@ -4804,9 +5357,9 @@ integrity sha512-wJsiX1tosQ+J5+bY5LrSahHxr2wT+uME5UDwdN1kg4frt40euqA+wzECkmq4t5QbveHiJepfdThgQrPw6KiSlg== "@types/cacheable-request@^6.0.1": - version "6.0.2" - resolved "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.2.tgz#c324da0197de0a98a2312156536ae262429ff6b9" - integrity sha512-B3xVo+dlKM6nnKTcmm5ZtY/OL8bOAOd2Olee9M1zft65ox50OzjEHW91sDiU9j6cvW8Ejg1/Qkf4xd2kugApUA== + version "6.0.1" + resolved "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.1.tgz#5d22f3dded1fd3a84c0bbeb5039a7419c2c91976" + integrity sha512-ykFq2zmBGOCbpIXtoVbz4SKY5QriWPh3AjyU4G74RYbtt5yOc5OfaY75ftjg7mikMOla1CTGpX3lLbuJh8DTrQ== dependencies: "@types/http-cache-semantics" "*" "@types/keyv" "*" @@ -4839,15 +5392,15 @@ dependencies: "@types/color-name" "*" -"@types/color-name@*": +"@types/color-name@*", "@types/color-name@^1.1.1": version "1.1.1" resolved "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== "@types/color@^3.0.1": - version "3.0.3" - resolved "https://registry.npmjs.org/@types/color/-/color-3.0.3.tgz#e6d8d72b7aaef4bb9fe80847c26c7c786191016d" - integrity sha512-X//qzJ3d3Zj82J9sC/C18ZY5f43utPbAJ6PhYt/M7uG6etcF6MRpKdN880KBy43B0BMzSfeT96MzrsNjFI3GbA== + version "3.0.2" + resolved "https://registry.npmjs.org/@types/color/-/color-3.0.2.tgz#3779043e782f562aa9157b5fc6bd07e14fd8e7f3" + integrity sha512-INiJl6sfNn8iyC5paxVzqiVUEj2boIlFki02uRTAkKwAj++7aAF+ZfEv/XrIeBa0XI/fTZuDHW8rEEcEVnON+Q== dependencies: "@types/color-convert" "*" @@ -4886,9 +5439,9 @@ "@types/node" "*" "@types/connect@*": - version "3.4.35" - resolved "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" - integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== + version "3.4.33" + resolved "https://registry.npmjs.org/@types/connect/-/connect-3.4.33.tgz#31610c901eca573b8713c3330abc6e6b9f588546" + integrity sha512-2+FrkXY4zllzTNfJth7jOqEHC+enpLeGslEhpnTAkg21GkRrWV4SsAtqchtT4YS9/nODBU2/ZfsBY2X4J/dX7A== dependencies: "@types/node" "*" @@ -4905,9 +5458,9 @@ integrity sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q== "@types/cookiejar@*": - version "2.1.2" - resolved "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.2.tgz#66ad9331f63fe8a3d3d9d8c6e3906dd10f6446e8" - integrity sha512-t73xJJrvdTjXrn4jLS9VSGRbz0nUY3cl2DMGDU48lKl+HR9dbbjW2A9r3g40VA++mQpy6uuHg33gy7du2BKpog== + version "2.1.1" + resolved "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.1.tgz#90b68446364baf9efd8e8349bb36bd3852b75b80" + integrity sha512-aRnpPa7ysx3aNW60hTiCtLHlQaIFsXFCgQlpakNgDNVFzbtusSY8PwjAQgRWfSk0ekNoBjO51eQRB6upA9uuyw== "@types/core-js@^2.5.4": version "2.5.5" @@ -4937,9 +5490,9 @@ integrity sha512-+0EtEjBfKEDtH9Rk3u3kLOUXM5F+iZK+WvASPb0MhIZl8J8NUvGeZRwKCXl+P3HkYx5TdU4YtcibpqHkSR9n7w== "@types/d3-force@^2.1.1": - version "2.1.4" - resolved "https://registry.npmjs.org/@types/d3-force/-/d3-force-2.1.4.tgz#98919b87db8a0ca5011d189c598d69251d20344d" - integrity sha512-1XVRc2QbeUSL1FRVE53Irdz7jY+drTwESHIMVirCwkAAMB/yVC8ezAfx/1Alq0t0uOnphoyhRle1ht5CuPgSJQ== + version "2.1.1" + resolved "https://registry.npmjs.org/@types/d3-force/-/d3-force-2.1.1.tgz#a18b6f029d056eb0f8f84a09471e6228e4469b14" + integrity sha512-3r+CQv2K/uDTAVg0DGxsbBjV02vgOxb8RhPIv3gd6cp3pdPAZ7wEXpDjUZSoqycAQLSDOxG/AZ54Vx6YXZSbmQ== "@types/d3-interpolate@*": version "3.0.1" @@ -4983,9 +5536,9 @@ integrity sha512-d29EDd0iUBrRoKhPndhDY6U/PYxOWqgIZwKTooy2UkBfU7TNZNpRho0yLWPxlatQrFWk2mnTu71IZQ4+LRgKlQ== "@types/d3-shape@^1": - version "1.3.8" - resolved "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-1.3.8.tgz#c3c15ec7436b4ce24e38de517586850f1fea8e89" - integrity sha512-gqfnMz6Fd5H6GOLYixOZP/xlrMtJms9BaS+6oWxTKHNqPGZ93BkWWupQSCYm6YHqx6h9wjRupuJb90bun6ZaYg== + version "1.3.5" + resolved "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-1.3.5.tgz#c0164c1be1429473016f855871d487f806c4e968" + integrity sha512-aPEax03owTAKynoK8ZkmkZEDZvvT4Y5pWgii4Jp4oQt0gH45j6siDl9gNDVC5kl64XHN2goN9jbYoHK88tFAcA== dependencies: "@types/d3-path" "^1" @@ -5056,18 +5609,18 @@ dependencies: "@types/trusted-types" "*" -"@types/eslint-scope@^3.7.3": - version "3.7.3" - resolved "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz#125b88504b61e3c8bc6f870882003253005c3224" - integrity sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g== +"@types/eslint-scope@^3.7.0": + version "3.7.0" + resolved "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.0.tgz#4792816e31119ebd506902a482caec4951fabd86" + integrity sha512-O/ql2+rrCUe2W2rs7wMR+GqPRcgB6UiqN5RhrR5xruFlY7l9YLMn0ZkDzjoHLeiFkR8MCQZVudUuuvQ2BLC9Qw== dependencies: "@types/eslint" "*" "@types/estree" "*" "@types/eslint@*": - version "8.4.1" - resolved "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.1.tgz#c48251553e8759db9e656de3efc846954ac32304" - integrity sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA== + version "6.1.8" + resolved "https://registry.npmjs.org/@types/eslint/-/eslint-6.1.8.tgz#7e868f89bc1e520323d405940e49cb912ede5bba" + integrity sha512-CJBhm9pYdUS8cFVbXACWlLxZWFBTQMiM0eI6RYxng3u9oQ9gHdQ5PN89DHPrK4RISRzX62nRsteUlbBgEIdSug== dependencies: "@types/estree" "*" "@types/json-schema" "*" @@ -5080,10 +5633,10 @@ "@types/estree" "*" "@types/json-schema" "*" -"@types/estree@*", "@types/estree@^0.0.51": - version "0.0.51" - resolved "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40" - integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ== +"@types/estree@*", "@types/estree@^0.0.50": + version "0.0.50" + resolved "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz#1e0caa9364d3fccd2931c3ed96fdbeaa5d4cca83" + integrity sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw== "@types/estree@0.0.39": version "0.0.39" @@ -5095,7 +5648,7 @@ resolved "https://registry.npmjs.org/@types/expect/-/expect-1.20.4.tgz#8288e51737bf7e3ab5d7c77bfa695883745264e5" integrity sha512-Q5Vn3yjTDyCMV50TB6VRIbQNxSE4OmZR86VSbGaNpfUolm0iePBB4KdEEHmxoY5sT2+2DIvXW0rvMDP2nHZ4Mg== -"@types/express-serve-static-core@*", "@types/express-serve-static-core@4.17.28", "@types/express-serve-static-core@^4.17.18", "@types/express-serve-static-core@^4.17.5": +"@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.18", "@types/express-serve-static-core@^4.17.5": version "4.17.28" resolved "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz#c47def9f34ec81dc6328d0b1b5303d1ec98d86b8" integrity sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig== @@ -5104,6 +5657,15 @@ "@types/qs" "*" "@types/range-parser" "*" +"@types/express-serve-static-core@4.17.27": + version "4.17.27" + resolved "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.27.tgz#7a776191e47295d2a05962ecbb3a4ce97e38b401" + integrity sha512-e/sVallzUTPdyOTiqi8O8pMdBBphscvI6E4JYaKlja4Lm+zh7UFSSdW5VMkRbhDtmrONqOUHOXRguPsDckzxNA== + dependencies: + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + "@types/express-session@^1.17.2": version "1.17.4" resolved "https://registry.npmjs.org/@types/express-session/-/express-session-1.17.4.tgz#97a30a35e853a61bdd26e727453b8ed314d6166b" @@ -5119,7 +5681,7 @@ "@types/express" "*" "@types/xml2js" "*" -"@types/express@*", "@types/express@4.17.13", "@types/express@^4.17.13", "@types/express@^4.17.6": +"@types/express@*", "@types/express@4.17.13", "@types/express@^4.17.6": version "4.17.13" resolved "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz#a76e2995728999bab51a33fabce1d705a3709034" integrity sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA== @@ -5129,7 +5691,14 @@ "@types/qs" "*" "@types/serve-static" "*" -"@types/fs-extra@^9.0.1", "@types/fs-extra@^9.0.3", "@types/fs-extra@^9.0.5", "@types/fs-extra@^9.0.6": +"@types/fs-extra@^9.0.1", "@types/fs-extra@^9.0.3", "@types/fs-extra@^9.0.5": + version "9.0.8" + resolved "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.8.tgz#32c3c07ddf8caa5020f84b5f65a48470519f78ba" + integrity sha512-bnlTVTwq03Na7DpWxFJ1dvnORob+Otb8xHyUqUWhqvz/Ksg8+JXPlR52oeMSZ37YEOa5PyccbgUNutiQdi13TA== + dependencies: + "@types/node" "*" + +"@types/fs-extra@^9.0.6": version "9.0.13" resolved "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz#7594fbae04fe7f1918ce8b3d213f74ff44ac1f45" integrity sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA== @@ -5137,14 +5706,14 @@ "@types/node" "*" "@types/git-url-parse@^9.0.0": - version "9.0.1" - resolved "https://registry.npmjs.org/@types/git-url-parse/-/git-url-parse-9.0.1.tgz#1c7cc89527ca8b5afcf260ead3b0e4e373c43938" - integrity sha512-Zf9mY4Mz7N3Nyi341nUkOtgVUQn4j6NS4ndqEha/lOgEbTkHzpD7wZuRagYKzrXNtvawWfsrojoC1nhsQexvNA== + version "9.0.0" + resolved "https://registry.npmjs.org/@types/git-url-parse/-/git-url-parse-9.0.0.tgz#aac1315a44fa4ed5a52c3820f6c3c2fb79cbd12d" + integrity sha512-kA2RxBT/r/ZuDDKwMl+vFWn1Z0lfm1/Ik6Qb91wnSzyzCDa/fkM8gIOq6ruB7xfr37n6Mj5dyivileUVKsidlg== "@types/glob@*": - version "7.2.0" - resolved "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb" - integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA== + version "7.1.3" + resolved "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz#e6ba80f36b7daad2c685acd9266382e68985c183" + integrity sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w== dependencies: "@types/minimatch" "*" "@types/node" "*" @@ -5155,9 +5724,9 @@ integrity sha512-6bgv24B+A2bo9AfzReeg5StdiijKzwwnRflA8RLd1V4Yv995LeTmo0z69/MPbBDFSiZWdZHQygLo/ccXhMEDgw== "@types/graceful-fs@^4.1.2": - version "4.1.5" - resolved "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15" - integrity sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw== + version "4.1.3" + resolved "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.3.tgz#039af35fe26bec35003e8d86d2ee9c586354348f" + integrity sha512-AiHRaEB50LQg0pZmm659vNBb9f4SJ0qrAnteuzhSeAUcJKxoYgEnprg/83kppCnc2zvtCKbdZry1a5pVY3lOTQ== dependencies: "@types/node" "*" @@ -5189,9 +5758,9 @@ integrity sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg== "@types/http-cache-semantics@*": - version "4.0.1" - resolved "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz#0ea7b61496902b95890dc4c3a116b60cb8dae812" - integrity sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ== + version "4.0.0" + resolved "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.0.tgz#9140779736aa2655635ee756e2467d787cfe8a2a" + integrity sha512-c3Xy026kOF7QOTn00hbIllV1dLR9hG9NkSrLQgCVs8NF6sBU+VGWjD3wLPhmh1TYAc7ugCFsvHYMN4VcBN1U1A== "@types/http-errors@^1.6.3": version "1.8.2" @@ -5214,10 +5783,15 @@ dependencies: "@types/node" "*" -"@types/humanize-duration@^3.18.1", "@types/humanize-duration@^3.25.1": - version "3.27.1" - resolved "https://registry.npmjs.org/@types/humanize-duration/-/humanize-duration-3.27.1.tgz#f14740d1f585a0a8e3f46359b62fda8b0eaa31e7" - integrity sha512-K3e+NZlpCKd6Bd/EIdqjFJRFHbrq5TzPPLwREk5Iv/YoIjQrs6ljdAUCo+Lb2xFlGNOjGSE0dqsVD19cZL137w== +"@types/humanize-duration@^3.18.1": + version "3.18.1" + resolved "https://registry.npmjs.org/@types/humanize-duration/-/humanize-duration-3.18.1.tgz#10090d596053703e7de0ac43a37b96cd9fc78309" + integrity sha512-MUgbY3CF7hg/a/jogixmAufLjJBQT7WEf8Q+kYJkOc47ytngg1IuZobCngdTjAgY83JWEogippge5O5fplaQlw== + +"@types/humanize-duration@^3.25.1": + version "3.25.1" + resolved "https://registry.npmjs.org/@types/humanize-duration/-/humanize-duration-3.25.1.tgz#b6140d5fc00ff3917b3f521784abef4bc0387ccc" + integrity sha512-WZU/4bb+lvzyDmZzjJtp++9mfKy6B3lH6gGISgkcz6SU8hMILKRM0vi08TxIsb0dQB4Gzo68MWLmctu6xqUi9g== "@types/inquirer@^7.3.3": version "7.3.3" @@ -5228,9 +5802,9 @@ rxjs "^6.4.0" "@types/inquirer@^8.1.3": - version "8.2.0" - resolved "https://registry.npmjs.org/@types/inquirer/-/inquirer-8.2.0.tgz#b9566d048f5ff65159f2ed97aff45fe0f00b35ec" - integrity sha512-BNoMetRf3gmkpAlV5we+kxyZTle7YibdOntIZbU5pyIfMdcwy784KfeZDAcuyMznkh5OLa17RVXZOGA5LTlkgQ== + version "8.1.3" + resolved "https://registry.npmjs.org/@types/inquirer/-/inquirer-8.1.3.tgz#dfda4c97cdbe304e4dceb378a80f79448ea5c8fe" + integrity sha512-AayK4ZL5ssPzR1OtnOLGAwpT0Dda3Xi/h1G0l1oJDNrowp7T1423q4Zb8/emr7tzRlCy4ssEri0LWVexAqHyKQ== dependencies: "@types/through" "*" rxjs "^7.2.0" @@ -5243,9 +5817,9 @@ ci-info "^3.1.0" "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - version "2.0.4" - resolved "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" - integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== + version "2.0.1" + resolved "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz#42995b446db9a48a11a07ec083499a860e9138ff" + integrity sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg== "@types/istanbul-lib-report@*": version "3.0.0" @@ -5255,9 +5829,9 @@ "@types/istanbul-lib-coverage" "*" "@types/istanbul-reports@^3.0.0": - version "3.0.1" - resolved "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff" - integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== + version "3.0.0" + resolved "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz#508b13aa344fa4976234e75dddcc34925737d821" + integrity sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA== dependencies: "@types/istanbul-lib-report" "*" @@ -5269,24 +5843,16 @@ "@types/node" "*" "@types/jest-when@^2.7.2": - version "2.7.4" - resolved "https://registry.npmjs.org/@types/jest-when/-/jest-when-2.7.4.tgz#1bedac232f4a54c1a1c01cc641c03ecfd0dad0ec" - integrity sha512-2OC69oyaD33tmSaOjtxvy7ZpBO85OWIw1AbpWVziL4bek5mr795H59qK5EKDpp4dLhtH1QIs54tXpoHEb2mE/A== + version "2.7.2" + resolved "https://registry.npmjs.org/@types/jest-when/-/jest-when-2.7.2.tgz#619fbc5f623bcd0b29efde0e4993c7f0d50d026d" + integrity sha512-vOtj0cev6vO1VX7Jbfg/qvy+sfLI64STsHbKVkggK+1kd11rcMGzFpZKBxUvQfsm4JRULCBISu+qrfs7fYZFGg== dependencies: "@types/jest" "*" -"@types/jest@*": - version "27.4.0" - resolved "https://registry.npmjs.org/@types/jest/-/jest-27.4.0.tgz#037ab8b872067cae842a320841693080f9cb84ed" - integrity sha512-gHl8XuC1RZ8H2j5sHv/JqsaxXkDDM9iDOgu0Wp8sjs4u/snb2PVehyWXJPr+ORA0RPpgw231mnutWI1+0hgjIQ== - dependencies: - jest-diff "^27.0.0" - pretty-format "^27.0.0" - -"@types/jest@^26.0.7": - version "26.0.24" - resolved "https://registry.npmjs.org/@types/jest/-/jest-26.0.24.tgz#943d11976b16739185913a1936e0de0c4a7d595a" - integrity sha512-E/X5Vib8BWqZNRlDxj9vYXhsDwPYbPINqKF9BsnSoon4RQ0D9moEuLD8txgyypFLH7J4+Lho9Nr/c8H0Fi+17w== +"@types/jest@*", "@types/jest@^26.0.7": + version "26.0.22" + resolved "https://registry.npmjs.org/@types/jest/-/jest-26.0.22.tgz#8308a1debdf1b807aa47be2838acdcd91e88fbe6" + integrity sha512-eeWwWjlqxvBxc4oQdkueW5OF/gtfSceKk4OnOAGlUSwS/liBRtZppbJuz1YkgbrbfGOoeBHun9fOvXnjNwrSOw== dependencies: jest-diff "^26.0.0" pretty-format "^26.0.0" @@ -5299,14 +5865,14 @@ "@types/sizzle" "*" "@types/js-cookie@^2.2.6": - version "2.2.7" - resolved "https://registry.npmjs.org/@types/js-cookie/-/js-cookie-2.2.7.tgz#226a9e31680835a6188e887f3988e60c04d3f6a3" - integrity sha512-aLkWa0C0vO5b4Sr798E26QgOkss68Un0bLjs7u9qxzPT5CG+8DuNTffWES58YzJs3hrVAOs1wonycqEBqNJubA== + version "2.2.6" + resolved "https://registry.npmjs.org/@types/js-cookie/-/js-cookie-2.2.6.tgz#f1a1cb35aff47bc5cfb05cb0c441ca91e914c26f" + integrity sha512-+oY0FDTO2GYKEV0YPvSshGq9t7YozVkgvXLty7zogQNuCxBhT9/3INX9Q7H1aRZ4SUDRXAKlJuA4EA5nTt7SNw== "@types/js-levenshtein@^1.1.0": - version "1.1.1" - resolved "https://registry.npmjs.org/@types/js-levenshtein/-/js-levenshtein-1.1.1.tgz#ba05426a43f9e4e30b631941e0aa17bf0c890ed5" - integrity sha512-qC4bCqYGy1y/NP7dDVr7KJarn+PbX1nSpwA7JXdu0HxT3QYjO8MJ+cntENtHFVy2dRAyBV23OZ6MxsW1AM1L8g== + version "1.1.0" + resolved "https://registry.npmjs.org/@types/js-levenshtein/-/js-levenshtein-1.1.0.tgz#9541eec4ad6e3ec5633270a3a2b55d981edc44a9" + integrity sha512-14t0v1ICYRtRVcHASzes0v/O+TIeASb8aD55cWF1PidtInhFWSXcmhzhHqGjUWf9SUq1w70cvd1cWKUULubAfQ== "@types/js-yaml@^4.0.0", "@types/js-yaml@^4.0.1": version "4.0.5" @@ -5334,9 +5900,9 @@ integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ== "@types/json-stable-stringify@^1.0.32": - version "1.0.33" - resolved "https://registry.npmjs.org/@types/json-stable-stringify/-/json-stable-stringify-1.0.33.tgz#099b0712d824d15e2660c20e1c16e6a8381f308c" - integrity sha512-qEWiQff6q2tA5gcJGWwzplQcXdJtm+0oy6IHGHzlOf3eFAkGE/FIPXZK9ofWgNSHVp8AFFI33PJJshS0ei3Gvw== + version "1.0.32" + resolved "https://registry.npmjs.org/@types/json-stable-stringify/-/json-stable-stringify-1.0.32.tgz#121f6917c4389db3923640b2e68de5fa64dda88e" + integrity sha512-q9Q6+eUEGwQkv4Sbst3J4PNgDOvpuVuKj79Hl/qnmBMEIPzB5QoFRUtjcgcg2xNUZyYUGXBk5wYIBKHt0A+Mxw== "@types/json5@^0.0.29": version "0.0.29" @@ -5344,9 +5910,9 @@ integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= "@types/jsonwebtoken@^8.3.3", "@types/jsonwebtoken@^8.5.0": - version "8.5.8" - resolved "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-8.5.8.tgz#01b39711eb844777b7af1d1f2b4cf22fda1c0c44" - integrity sha512-zm6xBQpFDIDM6o9r6HSgDeIcLy82TKWctCXEPbJJcXb5AKmi5BNNdLXneixK4lplX3PqIVcwLBCGE/kAGnlD4A== + version "8.5.0" + resolved "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-8.5.0.tgz#2531d5e300803aa63279b232c014acf780c981c5" + integrity sha512-9bVao7LvyorRGZCw0VmH/dr7Og+NdjYSsKAxB43OQoComFbBgsEpoR9JW6+qSq/ogwVBg8GI2MfAlk4SYI4OLg== dependencies: "@types/node" "*" @@ -5358,9 +5924,9 @@ jwt-decode "*" "@types/keyv@*": - version "3.1.3" - resolved "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.3.tgz#1c9aae32872ec1f20dcdaee89a9f3ba88f465e41" - integrity sha512-FXCJgyyN3ivVgRoml4h94G/p3kY+u/B86La+QptcqJaWtBWtmc6TtkNfS40n9bIvyLteHh7zXOtgbobORKPbDg== + version "3.1.1" + resolved "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.1.tgz#e45a45324fca9dab716ab1230ee249c9fb52cfa7" + integrity sha512-MPtoySlAZQ37VoLaPcTHCu1RWJ4llDkULYZIzOYxlhxBqYPB0RsRlmMU0R6tahtFe27mIdkHV+551ZWV4PLmVw== dependencies: "@types/node" "*" @@ -5382,24 +5948,29 @@ integrity sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w== "@types/lru-cache@^5.1.0": - version "5.1.1" - resolved "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.1.tgz#c48c2e27b65d2a153b19bfc1a317e30872e01eef" - integrity sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw== + version "5.1.0" + resolved "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.0.tgz#57f228f2b80c046b4a1bd5cac031f81f207f4f03" + integrity sha512-RaE0B+14ToE4l6UqdarKPnXwVDuigfFv+5j9Dze/Nqr23yyuqdNvzcZi3xB+3Agvi5R4EOgAksfv3lXX4vBt9w== "@types/lunr@^2.3.3": - version "2.3.4" - resolved "https://registry.npmjs.org/@types/lunr/-/lunr-2.3.4.tgz#728f445855818fb17776d10ef4678f278072eb03" - integrity sha512-j4x4XJwZvorEUbA519VdQ5b9AOU9TSvfi8tvxMAfP8XzNLtFex7A8vFQwqOx3WACbV0KMXbACV3cZl4/gynQ7g== + version "2.3.3" + resolved "https://registry.npmjs.org/@types/lunr/-/lunr-2.3.3.tgz#ec985618fd2712c010f8edab4f1ae7784ad7c583" + integrity sha512-09sXZZVsB3Ib41U0fC+O1O+4UOZT1bl/e+/QubPxpqDWHNEchvx/DEb1KJMOwq6K3MTNzZFoNSzVdR++o1DVnw== -"@types/luxon@^2.0.4", "@types/luxon@^2.0.5": - version "2.0.9" - resolved "https://registry.npmjs.org/@types/luxon/-/luxon-2.0.9.tgz#782a0edfa6d699191292c13168bd496cd66b87c6" - integrity sha512-ZuzIc7aN+i2ZDMWIiSmMdubR9EMMSTdEzF6R+FckP4p6xdnOYKqknTo/k+xXQvciSXlNGIwA4OPU5X7JIFzYdA== +"@types/luxon@^2.0.4": + version "2.0.4" + resolved "https://registry.npmjs.org/@types/luxon/-/luxon-2.0.4.tgz#f7b5a86ccd843c0ccaddfaedd9ee1081bc1cde3b" + integrity sha512-l3xuhmyF2kBldy15SeY6d6HbK2BacEcSK1qTF1ISPtPHr29JH0C1fndz9ExXLKpGl0J6pZi+dGp1i5xesMt60Q== -"@types/mdast@^3.0.0": - version "3.0.10" - resolved "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz#4724244a82a4598884cbbe9bcfd73dff927ee8af" - integrity sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA== +"@types/luxon@^2.0.5": + version "2.0.5" + resolved "https://registry.npmjs.org/@types/luxon/-/luxon-2.0.5.tgz#29d3b095d55ee50df8f4cf109b16009334d9828e" + integrity sha512-GKrG5v16BOs9XGpouu33hOkAFaiSDi3ZaDXG9F2yAoyzHRBtksZnI60VWY5aM/yAENCccBejrxw8jDY+9OVlxw== + +"@types/mdast@^3.0.0", "@types/mdast@^3.0.3": + version "3.0.3" + resolved "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.3.tgz#2d7d671b1cd1ea3deb306ea75036c2a0407d2deb" + integrity sha512-SXPBMnFVQg1s00dlMCc/jCdvPqdE4mXaMMCeRlxLDmTAEoegHT53xKtkDnzDTOcmMHUfcjyf36/YYZ6SxRdnsw== dependencies: "@types/unist" "*" @@ -5418,7 +5989,12 @@ resolved "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a" integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw== -"@types/minimatch@*", "@types/minimatch@^3.0.3", "@types/minimatch@^3.0.5": +"@types/minimatch@*", "@types/minimatch@^3.0.3": + version "3.0.3" + resolved "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" + integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== + +"@types/minimatch@^3.0.5": version "3.0.5" resolved "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== @@ -5429,9 +6005,9 @@ integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== "@types/minipass@*": - version "3.1.2" - resolved "https://registry.npmjs.org/@types/minipass/-/minipass-3.1.2.tgz#e2d7f9df0698aff421dcf145b4fc05b8183b9030" - integrity sha512-foLGjgrJkUjLG/o2t2ymlZGEoBNBa/TfoUZ7oCTkOjP1T43UGBJspovJou/l3ZuHvye2ewR5cZNtp2zyWgILMA== + version "2.2.0" + resolved "https://registry.npmjs.org/@types/minipass/-/minipass-2.2.0.tgz#51ad404e8eb1fa961f75ec61205796807b6f9651" + integrity sha512-wuzZksN4w4kyfoOv/dlpov4NOunwutLA/q7uc00xU02ZyUY+aoM5PWIXEKBMnm0NHd4a+N71BMjq+x7+2Af1fg== dependencies: "@types/node" "*" @@ -5460,52 +6036,42 @@ integrity sha512-BkMHHonDT8NJUE/pQ3kr5v2GLDKm5or9btLBoBx4F2MB2cuqYC748LYMDC55VlrLI5qZZv+Qgc3m4P3dBPcmeg== "@types/node-fetch@^2.5.0", "@types/node-fetch@^2.5.12", "@types/node-fetch@^2.5.7": - version "2.6.1" - resolved "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.1.tgz#8f127c50481db65886800ef496f20bbf15518975" - integrity sha512-oMqjURCaxoSIsHSr1E47QHzbmzNR5rK8McHuNb11BOM9cHcIK3Avy0s/b2JlXHoQGTYS3NsvWzV1M0iK7l0wbA== + version "2.5.12" + resolved "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.12.tgz#8a6f779b1d4e60b7a57fb6fd48d84fb545b9cc66" + integrity sha512-MKgC4dlq4kKNa/mYrwpKfzQMB5X3ee5U6fSprkKpToBqBmX4nFZL9cW5jl6sWn+xpRJ7ypWh2yyqqr8UUCstSw== dependencies: "@types/node" "*" form-data "^3.0.0" -"@types/node@*", "@types/node@>= 8", "@types/node@>=12.12.47", "@types/node@>=13.7.0": - version "17.0.18" - resolved "https://registry.npmjs.org/@types/node/-/node-17.0.18.tgz#3b4fed5cfb58010e3a2be4b6e74615e4847f1074" - integrity sha512-eKj4f/BsN/qcculZiRSujogjvp5O/k4lOW5m35NopjZM/QwLOR075a8pJW5hD+Rtdm2DaCVPENS6KtSQnUD6BA== +"@types/node@*", "@types/node@>= 8", "@types/node@>=12.12.47", "@types/node@>=13.7.0", "@types/node@^16.9.2": + version "16.11.6" + resolved "https://registry.npmjs.org/@types/node/-/node-16.11.6.tgz#6bef7a2a0ad684cf6e90fcfe31cecabd9ce0a3ae" + integrity sha512-ua7PgUoeQFjmWPcoo9khiPum3Pd60k4/2ZGXt18sm2Slk0W0xZTqt5Y0Ny1NyBiN1EVQ/+FaF9NcY4Qe6rwk5w== -"@types/node@12.20.24": +"@types/node@12.20.24", "@types/node@^12.7.1": version "12.20.24" resolved "https://registry.npmjs.org/@types/node/-/node-12.20.24.tgz#c37ac69cb2948afb4cef95f424fa0037971a9a5c" integrity sha512-yxDeaQIAJlMav7fH5AQqPH1u8YIuhYJXYBzxaQ4PifsU0GDO38MSdmEDeRlIxrKbC6NbEaaEHDanWb+y30U8SQ== "@types/node@^10.1.0", "@types/node@^10.12.0": - version "10.17.60" - resolved "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz#35f3d6213daed95da7f0f73e75bcc6980e90597b" - integrity sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw== - -"@types/node@^12.7.1": - version "12.20.46" - resolved "https://registry.npmjs.org/@types/node/-/node-12.20.46.tgz#7e49dee4c54fd19584e6a9e0da5f3dc2e9136bc7" - integrity sha512-cPjLXj8d6anFPzFvOPxS3fvly3Shm5nTfl6g8X5smexixbuGUf7hfr21J5tX9JW+UPStp/5P5R8qrKL5IyVJ+A== + version "10.17.13" + resolved "https://registry.npmjs.org/@types/node/-/node-10.17.13.tgz#ccebcdb990bd6139cd16e84c39dc2fb1023ca90c" + integrity sha512-pMCcqU2zT4TjqYFrWtYHKal7Sl30Ims6ulZ4UFXxI4xbtQqK/qqKwkDoBFCfooRqqmRu9vY3xaJRwxSh673aYg== "@types/node@^14.14.31", "@types/node@^14.14.32": - version "14.18.12" - resolved "https://registry.npmjs.org/@types/node/-/node-14.18.12.tgz#0d4557fd3b94497d793efd4e7d92df2f83b4ef24" - integrity sha512-q4jlIR71hUpWTnGhXWcakgkZeHa3CCjcQcnuzU8M891BAWA2jHiziiWEPEkdS5pFsz7H9HJiy8BrK7tBRNrY7A== + version "14.17.8" + resolved "https://registry.npmjs.org/@types/node/-/node-14.17.8.tgz#813b73ab7d82ac06ddfd2458b13c88459a3b319f" + integrity sha512-0CHLt50GbUmH/6MrlBIKNdWCglvlyQKkorRf08/0DIi0ryuTPP+ijWLSI19SbDTHSKaagGDELiImY4BSikt61w== "@types/node@^15.6.1": version "15.14.9" resolved "https://registry.npmjs.org/@types/node/-/node-15.14.9.tgz#bc43c990c3c9be7281868bbc7b8fdd6e2b57adfa" integrity sha512-qjd88DrCxupx/kJD5yQgZdcYKZKSIGBVDIBE1/LTGcNm3d2Np/jxojkdePDdfnBHJc5W7vSMpbJ1aB7p/Py69A== -"@types/node@^16.9.2": - version "16.11.25" - resolved "https://registry.npmjs.org/@types/node/-/node-16.11.25.tgz#bb812b58bacbd060ce85921250d8b4ca553cd4a2" - integrity sha512-NrTwfD7L1RTc2qrHQD4RTTy4p0CO2LatKBEKEds3CaVuhoM/+DJzmWZl5f+ikR8cm8F5mfJxK+9rQq07gRiSjQ== - "@types/normalize-package-data@^2.4.0": - version "2.4.1" - resolved "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301" - integrity sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw== + version "2.4.0" + resolved "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" + integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== "@types/npm-packlist@^1.1.2": version "1.1.2" @@ -5560,9 +6126,9 @@ "@types/passport-oauth2" "*" "@types/passport-oauth2@*": - version "1.4.11" - resolved "https://registry.npmjs.org/@types/passport-oauth2/-/passport-oauth2-1.4.11.tgz#fbca527ecb44258774d17bcb251630c321515fa9" - integrity sha512-KUNwmGhe/3xPbjkzkPwwcPmyFwfyiSgtV1qOrPBLaU4i4q9GSCdAOyCbkFG0gUxAyEmYwqo9OAF/rjPjJ6ImdA== + version "1.4.9" + resolved "https://registry.npmjs.org/@types/passport-oauth2/-/passport-oauth2-1.4.9.tgz#134007c4b505a82548c9cb19094c5baeb2205c92" + integrity sha512-QP0q+NVQOaIu2r0e10QWkiUA0Ya5mOBHRJN0UrI+LolMLOP1/VN4EVIpJ3xVwFo+xqNFRoFvFwJhBvKnk7kpUA== dependencies: "@types/express" "*" "@types/oauth" "*" @@ -5597,9 +6163,9 @@ integrity sha512-BYOID+l2Aco2nBik+iYS4SZX0Lf20KPILP5RGmM1IgzdwNdTs0eebiFriOPcej1sX9mLnSoiNte5zcFxssgpGA== "@types/prettier@^2.0.0": - version "2.4.4" - resolved "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.4.tgz#5d9b63132df54d8909fce1c3f8ca260fdd693e17" - integrity sha512-ReVR2rLTV1kvtlWFyuot+d1pkpG2Fw/XKE3PDAdj57rbM97ttSp9JZ2UsP+2EHTylra9cUf6JA7tGwW1INzUrA== + version "2.0.0" + resolved "https://registry.npmjs.org/@types/prettier/-/prettier-2.0.0.tgz#dc85454b953178cc6043df5208b9e949b54a3bc4" + integrity sha512-/rM+sWiuOZ5dvuVzV37sUuklsbg+JPOP8d+nNFlo2ZtfpzPiPvh1/gc8liWOLBqe+sR+ZM7guPaIcTt6UZTo7Q== "@types/prop-types@*", "@types/prop-types@^15.7.3": version "15.7.4" @@ -5614,19 +6180,19 @@ "@types/node" "*" "@types/qs@*": - version "6.9.7" - resolved "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" - integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== + version "6.9.6" + resolved "https://registry.npmjs.org/@types/qs/-/qs-6.9.6.tgz#df9c3c8b31a247ec315e6996566be3171df4b3b1" + integrity sha512-0/HnwIfW4ki2D8L8c9GVcG5I72s9jP5GSLVF0VIXDW00kmIpA6O33G7a8n59Tmh7Nz0WUC3rSb7PTY/sdW2JzA== "@types/range-parser@*": - version "1.2.4" - resolved "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" - integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== + version "1.2.3" + resolved "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz#7ee330ba7caafb98090bece86a5ee44115904c2c" + integrity sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA== "@types/react-dom@*", "@types/react-dom@>=16.9.0": - version "17.0.11" - resolved "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.11.tgz#e1eadc3c5e86bdb5f7684e00274ae228e7bcc466" - integrity sha512-f96K3k+24RaLGVu/Y2Ng3e1EbZ8/cVJvypZWd7cy0ofCBaf2lcM46xNhycMZ2xGwbBjRql7hOlZ+e2WlJ5MH3Q== + version "17.0.9" + resolved "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.9.tgz#441a981da9d7be117042e1a6fd3dac4b30f55add" + integrity sha512-wIvGxLfgpVDSAMH5utdL9Ngm5Owu0VsGmldro3ORLXV8CShrL8awVj06NuEXFQ5xyaYfdca7Sgbk/50Ri1GdPg== dependencies: "@types/react" "*" @@ -5637,10 +6203,10 @@ dependencies: "@types/react" "*" -"@types/react-redux@^7.1.20": - version "7.1.22" - resolved "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.22.tgz#0eab76a37ef477cc4b53665aeaf29cb60631b72a" - integrity sha512-GxIA1kM7ClU73I6wg9IRTVwSO9GS+SAKZKe0Enj+82HMU6aoESFU2HNAdNi3+J53IaOHPiUfT3kSG4L828joDQ== +"@types/react-redux@^7.1.16": + version "7.1.19" + resolved "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.19.tgz#477bd0a9b01bae6d6bf809418cdfa7d3c16d4c62" + integrity sha512-L37dSCT0aoJnCgpR8Iuginlbxoh7qhWOXiaDqEsxVMrER1CmVhFD+63NxgJeT4pkmEM28oX0NH4S4f+sXHTZjA== dependencies: "@types/hoist-non-react-statics" "^3.3.0" "@types/react" "*" @@ -5648,9 +6214,9 @@ redux "^4.0.0" "@types/react-sparklines@^1.7.0": - version "1.7.2" - resolved "https://registry.npmjs.org/@types/react-sparklines/-/react-sparklines-1.7.2.tgz#c14e80623abd3669a10f18d13f6fb9fbdc322f70" - integrity sha512-N1GwO7Ri5C5fE8+CxhiDntuSw1qYdGytBuedKrCxWpaojXm4WnfygbdBdc5sXGX7feMxDXBy9MNhxoUTwrMl4A== + version "1.7.0" + resolved "https://registry.npmjs.org/@types/react-sparklines/-/react-sparklines-1.7.0.tgz#f956d0f7b0e746ad445ce1cd250fe81f8a384684" + integrity sha512-Vd+cME7+Yy3kFNhnid9EBIKiyCQ/at8nqDczIs0UYfIB8AtaRJPqekigv02biOsIbQCvxyvIAIjiTKOC+hHNbA== dependencies: "@types/react" "*" @@ -5662,9 +6228,9 @@ "@types/react" "*" "@types/react-test-renderer@>=16.9.0": - version "17.0.1" - resolved "https://registry.npmjs.org/@types/react-test-renderer/-/react-test-renderer-17.0.1.tgz#3120f7d1c157fba9df0118dae20cb0297ee0e06b" - integrity sha512-3Fi2O6Zzq/f3QR9dRnlnHso9bMl7weKCviFmfF6B4LS1Uat6Hkm15k0ZAQuDz+UBq6B3+g+NM6IT2nr5QgPzCw== + version "16.9.2" + resolved "https://registry.npmjs.org/@types/react-test-renderer/-/react-test-renderer-16.9.2.tgz#e1c408831e8183e5ad748fdece02214a7c2ab6c5" + integrity sha512-4eJr1JFLIAlWhzDkBCkhrOIWOvOxcCAfQh+jiKg7l/nNZcCIL2MHl2dZhogIFKyHzedVWHaVP1Yydq/Ruu4agw== dependencies: "@types/react" "*" @@ -5676,9 +6242,9 @@ "@types/react" "*" "@types/react-transition-group@^4.2.0": - version "4.4.4" - resolved "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.4.tgz#acd4cceaa2be6b757db61ed7b432e103242d163e" - integrity sha512-7gAPz7anVK5xzbeQW9wFBDg7G++aPLAFY0QaSMOou9rJZpbuI58WAuJrgu+qR92l61grlnCUe7AFX8KGahAgug== + version "4.2.4" + resolved "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.2.4.tgz#c7416225987ccdb719262766c1483da8f826838d" + integrity sha512-8DMUaDqh0S70TjkqU0DxOu80tFUiiaS9rxkWip/nb7gtvAsbqOXm02UCmR8zdcjWujgeYPiPNTVpVpKzUDotwA== dependencies: "@types/react" "*" @@ -5726,9 +6292,9 @@ integrity sha512-i7KOGl6xdkfpq5+p2ooC+/XFIRUMkYymZ29SD8p+Ko9lesKGUsh6860ey3YM7Y+ZG7kEDGcjzyLO3sOhozqEeA== "@types/request@^2.47.1": - version "2.48.8" - resolved "https://registry.npmjs.org/@types/request/-/request-2.48.8.tgz#0b90fde3b655ab50976cb8c5ac00faca22f5a82c" - integrity sha512-whjk1EDJPcAR2kYHRbFl/lKeeKYTi05A15K9bnLInCVroNDCtXce57xKdI0/rQaA3K+6q0eFyUBPmqfSndUZdQ== + version "2.48.5" + resolved "https://registry.npmjs.org/@types/request/-/request-2.48.5.tgz#019b8536b402069f6d11bee1b2c03e7f232937a0" + integrity sha512-/LO7xRVnL3DxJ1WkPGDQrp4VTV1reX9RkC85mJ+Qzykj2Bdw+mG15aAfDahc76HtknjzE16SX/Yddn6MxVbmGQ== dependencies: "@types/caseless" "*" "@types/node" "*" @@ -5755,9 +6321,9 @@ "@types/node" "*" "@types/retry@^0.12.0": - version "0.12.1" - resolved "https://registry.npmjs.org/@types/retry/-/retry-0.12.1.tgz#d8f1c0d0dc23afad6dc16a9e993a0865774b4065" - integrity sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g== + version "0.12.0" + resolved "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" + integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== "@types/rollup-plugin-peer-deps-external@^2.2.0": version "2.2.1" @@ -5777,14 +6343,14 @@ rollup "^0.63.4" "@types/scheduler@*": - version "0.16.2" - resolved "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" - integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== + version "0.16.1" + resolved "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.1.tgz#18845205e86ff0038517aab7a18a62a6b9f71275" + integrity sha512-EaCxbanVeyxDRTQBkdLb3Bvl/HK7PBK6UJjsSixB0iHKoWxE5uu2Q/DgtpOhPIojN0Zl1whvOd7PoHs2P0s5eA== "@types/semver@^6.0.0": - version "6.2.3" - resolved "https://registry.npmjs.org/@types/semver/-/semver-6.2.3.tgz#5798ecf1bec94eaa64db39ee52808ec0693315aa" - integrity sha512-KQf+QAMWKMrtBMsB8/24w53tEsxllMj6TuA80TT/5igJalLI/zm0L3oXRbIAl4Ohfc85gyHX/jhMwsVkmhLU4A== + version "6.2.1" + resolved "https://registry.npmjs.org/@types/semver/-/semver-6.2.1.tgz#a236185670a7860f1597cf73bea2e16d001461ba" + integrity sha512-+beqKQOh9PYxuHvijhVl+tIHvT6tuwOrE9m14zd+MT2A38KoKZhh7pYJ0SNleLtwDsiIxHDsIk9bv01oOxvSvA== "@types/semver@^7.3.8": version "7.3.9" @@ -5806,29 +6372,29 @@ "@types/express" "*" "@types/serve-static@*": - version "1.13.10" - resolved "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz#f5e0ce8797d2d7cc5ebeda48a52c96c4fa47a8d9" - integrity sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ== + version "1.13.9" + resolved "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.9.tgz#aacf28a85a05ee29a11fb7c3ead935ac56f33e4e" + integrity sha512-ZFqF6qa48XsPdjXV5Gsz0Zqmux2PerNd3a/ktL45mHpa19cuMi/cL8tcxdAx497yRh+QtYPuofjT9oWw9P7nkA== dependencies: "@types/mime" "^1" "@types/node" "*" "@types/set-cookie-parser@^2.4.0": - version "2.4.2" - resolved "https://registry.npmjs.org/@types/set-cookie-parser/-/set-cookie-parser-2.4.2.tgz#b6a955219b54151bfebd4521170723df5e13caad" - integrity sha512-fBZgytwhYAUkj/jC/FAV4RQ5EerRup1YQsXQCh8rZfiHkc4UahC192oH0smGwsXol3cL3A5oETuAHeQHmhXM4w== + version "2.4.0" + resolved "https://registry.npmjs.org/@types/set-cookie-parser/-/set-cookie-parser-2.4.0.tgz#10cc0446bad372827671a5195fbd14ebce4a9baf" + integrity sha512-w7BFUq81sy7H/0jN0K5cax8MwRN6NOSURpY4YuO4+mOgoicxCZ33BUYz+gyF/sUf7uDl2We2yGJfppxzEXoAXQ== dependencies: "@types/node" "*" "@types/sinonjs__fake-timers@^6.0.2": - version "6.0.4" - resolved "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.4.tgz#0ecc1b9259b76598ef01942f547904ce61a6a77d" - integrity sha512-IFQTJARgMUBF+xVd2b+hIgXWrZEjND3vJtRCvIelcFB5SIXfjV4bOHbHJ0eXKh+0COrBRc8MqteKAz/j88rE0A== + version "6.0.2" + resolved "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.2.tgz#3a84cf5ec3249439015e14049bd3161419bf9eae" + integrity sha512-dIPoZ3g5gcx9zZEszaxLSVTvMReD3xxyyDnQUjA6IYDG9Ba2AV0otMPs+77sG9ojB4Qr2N2Vk5RnKeuA0X/0bg== "@types/sizzle@*", "@types/sizzle@^2.3.2": - version "2.3.3" - resolved "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.3.tgz#ff5e2f1902969d305225a047c8a0fd5c915cebef" - integrity sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ== + version "2.3.2" + resolved "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.2.tgz#a811b8c18e2babab7d542b3365887ae2e4d9de47" + integrity sha512-7EJYyKTL7tFR8+gDbB6Wwz/arpGa0Mywk1TJbNzKzHtzbwVmY4HR9WqS5VV7dsBUKQmPNr192jHr/VpBluj/hg== "@types/sockjs@^0.3.33": version "0.3.33" @@ -5838,24 +6404,32 @@ "@types/node" "*" "@types/ssh2-streams@*": - version "0.1.9" - resolved "https://registry.npmjs.org/@types/ssh2-streams/-/ssh2-streams-0.1.9.tgz#8ca51b26f08750a780f82ee75ff18d7160c07a87" - integrity sha512-I2J9jKqfmvXLR5GomDiCoHrEJ58hAOmFrekfFqmCFd+A6gaEStvWnPykoWUwld1PNg4G5ag1LwdA+Lz1doRJqg== + version "0.1.8" + resolved "https://registry.npmjs.org/@types/ssh2-streams/-/ssh2-streams-0.1.8.tgz#142af404dae059931aea7fcd1511b5478964feb6" + integrity sha512-I7gixRPUvVIyJuCEvnmhr3KvA2dC0639kKswqD4H5b4/FOcnPtNU+qWLiXdKIqqX9twUvi5j0U1mwKE5CUsrfA== dependencies: "@types/node" "*" -"@types/ssh2@*", "@types/ssh2@^0.5.48": - version "0.5.51" - resolved "https://registry.npmjs.org/@types/ssh2/-/ssh2-0.5.51.tgz#8fd9f9d7d3e8973b5227878f8f1e2b4eda1716b3" - integrity sha512-aIq7ownezauW/+VWYaeXwd5J1Evnn4EXyeKi7bT3H6ZLBLoqsmhdvkHYPLpnZPM6unKKKsxTHIyQAVOZnPiJBw== +"@types/ssh2@*": + version "0.5.47" + resolved "https://registry.npmjs.org/@types/ssh2/-/ssh2-0.5.47.tgz#67a8b35a0527b2bb668f6dea4c84be6ff1abdc19" + integrity sha512-ZhqJg8BRV7OsCi0KVqPr27lUMMmLEeHYw1VXUNGGDlQEDq9HTsKx+wYvi8E6oNC6gRZ7PV99ZMZmMr5vztcYYA== + dependencies: + "@types/node" "*" + "@types/ssh2-streams" "*" + +"@types/ssh2@^0.5.48": + version "0.5.48" + resolved "https://registry.npmjs.org/@types/ssh2/-/ssh2-0.5.48.tgz#0d9e8654a76eaaf4cfeaeb88d74c4489cfcf7aea" + integrity sha512-cmQu0gp/6RtDXe1r2xXGgi0V0TeCdueDSRMEvBX8cTRT/sSREkUpgCYZLyh+iI8Ql+VNV8Az9toQoYa/IdgHbQ== dependencies: "@types/node" "*" "@types/ssh2-streams" "*" "@types/stack-utils@^2.0.0": - version "2.0.1" - resolved "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" - integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== + version "2.0.0" + resolved "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.0.tgz#7036640b4e21cc2f259ae826ce843d277dad8cff" + integrity sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw== "@types/stoppable@^1.1.0": version "1.1.1" @@ -5865,23 +6439,23 @@ "@types/node" "*" "@types/stream-buffers@^3.0.3": - version "3.0.4" - resolved "https://registry.npmjs.org/@types/stream-buffers/-/stream-buffers-3.0.4.tgz#bf128182da7bc62722ca0ddf5458a9c65f76e648" - integrity sha512-qU/K1tb2yUdhXkLIATzsIPwbtX6BpZk0l3dPW6xqWyhfzzM1ECaQ/8faEnu3CNraLiQ9LHyQQPBGp7N9Fbs25w== + version "3.0.3" + resolved "https://registry.npmjs.org/@types/stream-buffers/-/stream-buffers-3.0.3.tgz#34e565bf64e3e4bdeee23fd4aa58d4636014a02b" + integrity sha512-NeFeX7YfFZDYsCfbuaOmFQ0OjSmHreKBpp7MQ4alWQBHeh2USLsj7qyMyn9t82kjqIX516CR/5SRHnARduRtbQ== dependencies: "@types/node" "*" "@types/styled-jsx@^2.2.8": - version "2.2.9" - resolved "https://registry.npmjs.org/@types/styled-jsx/-/styled-jsx-2.2.9.tgz#e50b3f868c055bcbf9bc353eca6c10fdad32a53f" - integrity sha512-W/iTlIkGEyTBGTEvZCey8EgQlQ5l0DwMqi3iOXlLs2kyBwYTXHKEiU6IZ5EwoRwngL8/dGYuzezSup89ttVHLw== + version "2.2.8" + resolved "https://registry.npmjs.org/@types/styled-jsx/-/styled-jsx-2.2.8.tgz#b50d13d8a3c34036282d65194554cf186bab7234" + integrity sha512-Yjye9VwMdYeXfS71ihueWRSxrruuXTwKCbzue4+5b2rjnQ//AtyM7myZ1BEhNhBQ/nL/RE7bdToUoLln2miKvg== dependencies: "@types/react" "*" "@types/superagent@*": - version "4.1.15" - resolved "https://registry.npmjs.org/@types/superagent/-/superagent-4.1.15.tgz#63297de457eba5e2bc502a7609426c4cceab434a" - integrity sha512-mu/N4uvfDN2zVQQ5AYJI/g4qxn2bHB6521t1UuH09ShNWjebTqN0ZFuYK9uYjcgmI0dTQEs+Owi1EO6U0OkOZQ== + version "4.1.7" + resolved "https://registry.npmjs.org/@types/superagent/-/superagent-4.1.7.tgz#a7d92d98c490ee0f802a127fdf149b9a114f77a5" + integrity sha512-JSwNPgRYjIC4pIeOqLwWwfGj6iP1n5NE6kNBEbGx2V8H78xCPwx7QpNp9plaI30+W3cFEzJO7BIIsXE+dbtaGg== dependencies: "@types/cookiejar" "*" "@types/node" "*" @@ -5924,9 +6498,9 @@ "@types/node" "*" "@types/tern@*": - version "0.23.4" - resolved "https://registry.npmjs.org/@types/tern/-/tern-0.23.4.tgz#03926eb13dbeaf3ae0d390caf706b2643a0127fb" - integrity sha512-JAUw1iXGO1qaWwEOzxTKJZ/5JxVeON9kvGZ/osgZaJImBnyjyn0cjovPsf6FNLmyGY8Vw9DoXZCMlfMkMwHRWg== + version "0.23.3" + resolved "https://registry.npmjs.org/@types/tern/-/tern-0.23.3.tgz#4b54538f04a88c9ff79de1f6f94f575a7f339460" + integrity sha512-imDtS4TAoTcXk0g7u4kkWqedB3E4qpjXzCpD2LU5M5NAXHzCDsypyvXSaG7mM8DKYkCRa7tFp4tS/lp/Wo7Q3w== dependencies: "@types/estree" "*" @@ -5952,26 +6526,26 @@ "@types/node" "*" "@types/tough-cookie@*": - version "4.0.1" - resolved "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.1.tgz#8f80dd965ad81f3e1bc26d6f5c727e132721ff40" - integrity sha512-Y0K95ThC3esLEYD6ZuqNek29lNX2EM1qxV8y2FTLUB0ff5wWrk7az+mLrnNFUnaXcgKye22+sFBRXOgpPILZNg== + version "4.0.0" + resolved "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.0.tgz#fef1904e4668b6e5ecee60c52cc6a078ffa6697d" + integrity sha512-I99sngh224D0M7XgW1s120zxCt3VYQ3IQsuw3P3jbq5GG4yc79+ZjyKznyOGIQrflfylLgcfekeZW/vk0yng6A== "@types/trusted-types@*": version "2.0.2" resolved "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.2.tgz#fc25ad9943bcac11cceb8168db4f275e0e72e756" integrity sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg== -"@types/tunnel@^0.0.3": - version "0.0.3" - resolved "https://registry.npmjs.org/@types/tunnel/-/tunnel-0.0.3.tgz#f109e730b072b3136347561fc558c9358bb8c6e9" - integrity sha512-sOUTGn6h1SfQ+gbgqC364jLFBw2lnFqkgF3q0WovEHRLMrVD1sd5aufqi/aJObLekJO+Aq5z646U4Oxy6shXMA== +"@types/tunnel@^0.0.1": + version "0.0.1" + resolved "https://registry.npmjs.org/@types/tunnel/-/tunnel-0.0.1.tgz#0d72774768b73df26f25df9184273a42da72b19c" + integrity sha512-AOqu6bQu5MSWwYvehMXLukFHnupHrpZ8nvgae5Ggie9UwzDR1CCwoXgSSWNZJuyOlCdfdsWMA5F2LlmvyoTv8A== dependencies: "@types/node" "*" "@types/underscore@^1.8.9": - version "1.11.4" - resolved "https://registry.npmjs.org/@types/underscore/-/underscore-1.11.4.tgz#62e393f8bc4bd8a06154d110c7d042a93751def3" - integrity sha512-uO4CD2ELOjw8tasUrAhvnn2W4A0ZECOvMjCivJr4gA9pGgjv+qxKWY9GLTMVEK8ej85BxQOocUyE7hImmSQYcg== + version "1.10.23" + resolved "https://registry.npmjs.org/@types/underscore/-/underscore-1.10.23.tgz#cc672e8864000d288e1e39c609fd9cab84391ff3" + integrity sha512-vX1NPekXhrLquFWskH2thcvFAha187F/lM6xYOoEMZWwJ/6alSk0/ttmGP/YRqcqtCv0TMbZjYAdZyHAEcuU4g== "@types/unist@*", "@types/unist@^2.0.0": version "2.0.6" @@ -5986,9 +6560,9 @@ "@types/node" "*" "@types/uuid@^8.0.0": - version "8.3.4" - resolved "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz#bd86a43617df0594787d38b735f55c805becf1bc" - integrity sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw== + version "8.3.0" + resolved "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.0.tgz#215c231dff736d5ba92410e6d602050cce7e273f" + integrity sha512-eQ9qFW/fhfGJF8WKHGEHZEyVWfZxrT+6CLIJGBcZPfxUh/+BnEj+UCGYMlr9qZuX/2AltsvwrGqp0LhEW8D0zQ== "@types/vinyl@^2.0.4": version "2.0.6" @@ -5998,7 +6572,12 @@ "@types/expect" "^1.20.4" "@types/node" "*" -"@types/webpack-env@^1.15.2", "@types/webpack-env@^1.15.3": +"@types/webpack-env@^1.15.2": + version "1.16.0" + resolved "https://registry.npmjs.org/@types/webpack-env/-/webpack-env-1.16.0.tgz#8c0a9435dfa7b3b1be76562f3070efb3f92637b4" + integrity sha512-Fx+NpfOO0CpeYX2g9bkvX8O5qh9wrU1sOF4g8sft4Mu7z+qfe387YlyY8w8daDyDsKY5vUxM0yxkAYnbkRbZEw== + +"@types/webpack-env@^1.15.3": version "1.16.3" resolved "https://registry.npmjs.org/@types/webpack-env/-/webpack-env-1.16.3.tgz#b776327a73e561b71e7881d0cd6d34a1424db86a" integrity sha512-9gtOPPkfyNoEqCQgx4qJKkuNm/x0R2hKR7fdl7zvTJyHnIisuE/LfvXOsYWL0o3qq6uiBnKZNNNzi3l0y/X+xw== @@ -6019,10 +6598,10 @@ dependencies: "@types/node" "*" -"@types/websocket@^1.0.4": - version "1.0.5" - resolved "https://registry.npmjs.org/@types/websocket/-/websocket-1.0.5.tgz#3fb80ed8e07f88e51961211cd3682a3a4a81569c" - integrity sha512-NbsqiNX9CnEfC1Z0Vf4mE1SgAJ07JnRYcNex7AJ9zAVzmiGHmjKFEk7O4TJIsgv2B1sLEb6owKFZrACwdYngsQ== +"@types/websocket@1.0.4", "@types/websocket@^1.0.4": + version "1.0.4" + resolved "https://registry.npmjs.org/@types/websocket/-/websocket-1.0.4.tgz#1dc497280d8049a5450854dd698ee7e6ea9e60b8" + integrity sha512-qn1LkcFEKK8RPp459jkjzsfpbsx36BBt3oC3pITYtkoBw/aVX+EZFa5j3ThCRTNpLFvIMr5dSTD4RaMdilIOpA== dependencies: "@types/node" "*" @@ -6041,21 +6620,28 @@ "@types/node" "*" "@types/xml2js@*", "@types/xml2js@^0.4.7": - version "0.4.9" - resolved "https://registry.npmjs.org/@types/xml2js/-/xml2js-0.4.9.tgz#a38267d8c2fe121c96922b12ee3bd89a58a6e20e" - integrity sha512-CHiCKIihl1pychwR2RNX5mAYmJDACgFVCMT5OArMaO3erzwXVcBqPcusr+Vl8yeeXukxZqtF8mZioqX+mpjjdw== + version "0.4.8" + resolved "https://registry.npmjs.org/@types/xml2js/-/xml2js-0.4.8.tgz#84c120c864a5976d0b5cf2f930a75d850fc2b03a" + integrity sha512-EyvT83ezOdec7BhDaEcsklWy7RSIdi6CNe95tmOAK0yx/Lm30C9K75snT3fYayK59ApC2oyW+rcHErdG05FHJA== dependencies: "@types/node" "*" "@types/yargs-parser@*": - version "20.2.1" - resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.1.tgz#3b9ce2489919d9e4fea439b76916abc34b2df129" - integrity sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw== + version "15.0.0" + resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d" + integrity sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw== "@types/yargs@^15.0.0": - version "15.0.14" - resolved "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz#26d821ddb89e70492160b66d10a0eb6df8f6fb06" - integrity sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ== + version "15.0.4" + resolved "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.4.tgz#7e5d0f8ca25e9d5849f2ea443cf7c402decd8299" + integrity sha512-9T1auFmbPZoxHz0enUFlUuKRy3it01R+hlggyVUMtnCTQRunsQYifnSGb8hET4Xo8yiC0o0r1paW3ud5+rbURg== + dependencies: + "@types/yargs-parser" "*" + +"@types/yargs@^16.0.0": + version "16.0.4" + resolved "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz#26aad98dd2c2a38e421086ea9ad42b9e51642977" + integrity sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw== dependencies: "@types/yargs-parser" "*" @@ -6082,13 +6668,13 @@ integrity sha512-fbF6oTd4sGGy0xjHPKAt+eS2CrxJ3+6gQ3FGcBoIJR2TLAyCkCyI8JqZNy+FeON0AhVgNJoUumVoZQjBFUqHkw== "@typescript-eslint/eslint-plugin@^5.9.0": - version "5.12.0" - resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.12.0.tgz#bb46dd7ce7015c0928b98af1e602118e97df6c70" - integrity sha512-fwCMkDimwHVeIOKeBHiZhRUfJXU8n6xW1FL9diDxAyGAFvKcH4csy0v7twivOQdQdA0KC8TDr7GGRd3L4Lv0rQ== + version "5.9.0" + resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.9.0.tgz#382182d5cb062f52aac54434cfc47c28898c8006" + integrity sha512-qT4lr2jysDQBQOPsCCvpPUZHjbABoTJW8V9ZzIYKHMfppJtpdtzszDYsldwhFxlhvrp7aCHeXD1Lb9M1zhwWwQ== dependencies: - "@typescript-eslint/scope-manager" "5.12.0" - "@typescript-eslint/type-utils" "5.12.0" - "@typescript-eslint/utils" "5.12.0" + "@typescript-eslint/experimental-utils" "5.9.0" + "@typescript-eslint/scope-manager" "5.9.0" + "@typescript-eslint/type-utils" "5.9.0" debug "^4.3.2" functional-red-black-tree "^1.0.1" ignore "^5.1.8" @@ -6096,76 +6682,103 @@ semver "^7.3.5" tsutils "^3.21.0" -"@typescript-eslint/experimental-utils@^5.0.0": - version "5.12.0" - resolved "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.12.0.tgz#b97c599a281f14a68015c25ee24966cb54ba9fc5" - integrity sha512-iFVADWH2CmiDF+E9kFK2r474BO2JILDKw1NVD5ytqHrM3ezsfdu5uo6B+77DH0suM7iUC/yOayHNziuiI9BPbQ== +"@typescript-eslint/experimental-utils@5.9.0", "@typescript-eslint/experimental-utils@^5.0.0": + version "5.9.0" + resolved "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.9.0.tgz#652762d37d6565ef07af285021b8347b6c79a827" + integrity sha512-ZnLVjBrf26dn7ElyaSKa6uDhqwvAi4jBBmHK1VxuFGPRAxhdi18ubQYSGA7SRiFiES3q9JiBOBHEBStOFkwD2g== dependencies: - "@typescript-eslint/utils" "5.12.0" + "@types/json-schema" "^7.0.9" + "@typescript-eslint/scope-manager" "5.9.0" + "@typescript-eslint/types" "5.9.0" + "@typescript-eslint/typescript-estree" "5.9.0" + eslint-scope "^5.1.1" + eslint-utils "^3.0.0" "@typescript-eslint/parser@^5.9.0": - version "5.12.0" - resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.12.0.tgz#0ca669861813df99ce54916f66f524c625ed2434" - integrity sha512-MfSwg9JMBojMUoGjUmX+D2stoQj1CBYTCP0qnnVtu9A+YQXVKNtLjasYh+jozOcrb/wau8TCfWOkQTiOAruBog== + version "5.9.1" + resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.9.1.tgz#b114011010a87e17b3265ca715e16c76a9834cef" + integrity sha512-PLYO0AmwD6s6n0ZQB5kqPgfvh73p0+VqopQQLuNfi7Lm0EpfKyDalchpVwkE+81k5HeiRrTV/9w1aNHzjD7C4g== dependencies: - "@typescript-eslint/scope-manager" "5.12.0" - "@typescript-eslint/types" "5.12.0" - "@typescript-eslint/typescript-estree" "5.12.0" + "@typescript-eslint/scope-manager" "5.9.1" + "@typescript-eslint/types" "5.9.1" + "@typescript-eslint/typescript-estree" "5.9.1" debug "^4.3.2" -"@typescript-eslint/scope-manager@5.12.0": - version "5.12.0" - resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.12.0.tgz#59619e6e5e2b1ce6cb3948b56014d3a24da83f5e" - integrity sha512-GAMobtIJI8FGf1sLlUWNUm2IOkIjvn7laFWyRx7CLrv6nLBI7su+B7lbStqVlK5NdLvHRFiJo2HhiDF7Ki01WQ== +"@typescript-eslint/scope-manager@5.9.0": + version "5.9.0" + resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.9.0.tgz#02dfef920290c1dcd7b1999455a3eaae7a1a3117" + integrity sha512-DKtdIL49Qxk2a8icF6whRk7uThuVz4A6TCXfjdJSwOsf+9ree7vgQWcx0KOyCdk0i9ETX666p4aMhrRhxhUkyg== dependencies: - "@typescript-eslint/types" "5.12.0" - "@typescript-eslint/visitor-keys" "5.12.0" + "@typescript-eslint/types" "5.9.0" + "@typescript-eslint/visitor-keys" "5.9.0" -"@typescript-eslint/type-utils@5.12.0": - version "5.12.0" - resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.12.0.tgz#aaf45765de71c6d9707c66ccff76ec2b9aa31bb6" - integrity sha512-9j9rli3zEBV+ae7rlbBOotJcI6zfc6SHFMdKI9M3Nc0sy458LJ79Os+TPWeBBL96J9/e36rdJOfCuyRSgFAA0Q== +"@typescript-eslint/scope-manager@5.9.1": + version "5.9.1" + resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.9.1.tgz#6c27be89f1a9409f284d95dfa08ee3400166fe69" + integrity sha512-8BwvWkho3B/UOtzRyW07ffJXPaLSUKFBjpq8aqsRvu6HdEuzCY57+ffT7QoV4QXJXWSU1+7g3wE4AlgImmQ9pQ== dependencies: - "@typescript-eslint/utils" "5.12.0" + "@typescript-eslint/types" "5.9.1" + "@typescript-eslint/visitor-keys" "5.9.1" + +"@typescript-eslint/type-utils@5.9.0": + version "5.9.0" + resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.9.0.tgz#fd5963ead04bc9b7af9c3a8e534d8d39f1ce5f93" + integrity sha512-uVCb9dJXpBrK1071ri5aEW7ZHdDHAiqEjYznF3HSSvAJXyrkxGOw2Ejibz/q6BXdT8lea8CMI0CzKNFTNI6TEQ== + dependencies: + "@typescript-eslint/experimental-utils" "5.9.0" debug "^4.3.2" tsutils "^3.21.0" -"@typescript-eslint/types@5.12.0": - version "5.12.0" - resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.12.0.tgz#5b4030a28222ee01e851836562c07769eecda0b8" - integrity sha512-JowqbwPf93nvf8fZn5XrPGFBdIK8+yx5UEGs2QFAYFI8IWYfrzz+6zqlurGr2ctShMaJxqwsqmra3WXWjH1nRQ== +"@typescript-eslint/types@5.9.0": + version "5.9.0" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.9.0.tgz#e5619803e39d24a03b3369506df196355736e1a3" + integrity sha512-mWp6/b56Umo1rwyGCk8fPIzb9Migo8YOniBGPAQDNC6C52SeyNGN4gsVwQTAR+RS2L5xyajON4hOLwAGwPtUwg== -"@typescript-eslint/typescript-estree@5.12.0": - version "5.12.0" - resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.12.0.tgz#cabf545fd592722f0e2b4104711e63bf89525cd2" - integrity sha512-Dd9gVeOqt38QHR0BEA8oRaT65WYqPYbIc5tRFQPkfLquVEFPD1HAtbZT98TLBkEcCkvwDYOAvuSvAD9DnQhMfQ== +"@typescript-eslint/types@5.9.1": + version "5.9.1" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.9.1.tgz#1bef8f238a2fb32ebc6ff6d75020d9f47a1593c6" + integrity sha512-SsWegWudWpkZCwwYcKoDwuAjoZXnM1y2EbEerTHho19Hmm+bQ56QG4L4jrtCu0bI5STaRTvRTZmjprWlTw/5NQ== + +"@typescript-eslint/typescript-estree@5.9.0": + version "5.9.0" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.9.0.tgz#0e5c6f03f982931abbfbc3c1b9df5fbf92a3490f" + integrity sha512-kxo3xL2mB7XmiVZcECbaDwYCt3qFXz99tBSuVJR4L/sR7CJ+UNAPrYILILktGj1ppfZ/jNt/cWYbziJUlHl1Pw== dependencies: - "@typescript-eslint/types" "5.12.0" - "@typescript-eslint/visitor-keys" "5.12.0" + "@typescript-eslint/types" "5.9.0" + "@typescript-eslint/visitor-keys" "5.9.0" debug "^4.3.2" globby "^11.0.4" is-glob "^4.0.3" semver "^7.3.5" tsutils "^3.21.0" -"@typescript-eslint/utils@5.12.0": - version "5.12.0" - resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.12.0.tgz#92fd3193191621ab863add2f553a7b38b65646af" - integrity sha512-k4J2WovnMPGI4PzKgDtQdNrCnmBHpMUFy21qjX2CoPdoBcSBIMvVBr9P2YDP8jOqZOeK3ThOL6VO/sy6jtnvzw== +"@typescript-eslint/typescript-estree@5.9.1": + version "5.9.1" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.9.1.tgz#d5b996f49476495070d2b8dd354861cf33c005d6" + integrity sha512-gL1sP6A/KG0HwrahVXI9fZyeVTxEYV//6PmcOn1tD0rw8VhUWYeZeuWHwwhnewnvEMcHjhnJLOBhA9rK4vmb8A== dependencies: - "@types/json-schema" "^7.0.9" - "@typescript-eslint/scope-manager" "5.12.0" - "@typescript-eslint/types" "5.12.0" - "@typescript-eslint/typescript-estree" "5.12.0" - eslint-scope "^5.1.1" - eslint-utils "^3.0.0" + "@typescript-eslint/types" "5.9.1" + "@typescript-eslint/visitor-keys" "5.9.1" + debug "^4.3.2" + globby "^11.0.4" + is-glob "^4.0.3" + semver "^7.3.5" + tsutils "^3.21.0" -"@typescript-eslint/visitor-keys@5.12.0": - version "5.12.0" - resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.12.0.tgz#1ac9352ed140b07ba144ebf371b743fdf537ec16" - integrity sha512-cFwTlgnMV6TgezQynx2c/4/tx9Tufbuo9LPzmWqyRC3QC4qTGkAG1C6pBr0/4I10PAI/FlYunI3vJjIcu+ZHMg== +"@typescript-eslint/visitor-keys@5.9.0": + version "5.9.0" + resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.9.0.tgz#7585677732365e9d27f1878150fab3922784a1a6" + integrity sha512-6zq0mb7LV0ThExKlecvpfepiB+XEtFv/bzx7/jKSgyXTFD7qjmSu1FoiS0x3OZaiS+UIXpH2vd9O89f02RCtgw== dependencies: - "@typescript-eslint/types" "5.12.0" + "@typescript-eslint/types" "5.9.0" + eslint-visitor-keys "^3.0.0" + +"@typescript-eslint/visitor-keys@5.9.1": + version "5.9.1" + resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.9.1.tgz#f52206f38128dd4f675cf28070a41596eee985b7" + integrity sha512-Xh37pNz9e9ryW4TVdwiFzmr4hloty8cFj8GTWMXh3Z8swGwyQWeCcNgF0hm6t09iZd6eiZmIf4zHedQVP6TVtg== + dependencies: + "@typescript-eslint/types" "5.9.1" eslint-visitor-keys "^3.0.0" "@vscode/sqlite3@^5.0.7": @@ -6334,7 +6947,12 @@ a-sync-waterfall@^1.0.0: resolved "https://registry.npmjs.org/a-sync-waterfall/-/a-sync-waterfall-1.0.1.tgz#75b6b6aa72598b497a125e7a2770f14f4c8a1fa7" integrity sha512-RYTOHHdWipFUliRFMCS4X2Yn2X8M87V/OpSqWzKKOGhzqyUxzyVmhHDH9sAvG+ZuQf/TAOFsLCpMw09I1ufUnA== -abab@^2.0.3, abab@^2.0.5: +abab@^2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/abab/-/abab-2.0.3.tgz#623e2075e02eb2d3f2475e49f99c91846467907a" + integrity sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg== + +abab@^2.0.5: version "2.0.5" resolved "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== @@ -6352,17 +6970,17 @@ abort-controller@3.0.0, abort-controller@^3.0.0: event-target-shim "^5.0.0" abstract-logging@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/abstract-logging/-/abstract-logging-2.0.1.tgz#6b0c371df212db7129b57d2e7fcf282b8bf1c839" - integrity sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA== + version "2.0.0" + resolved "https://registry.npmjs.org/abstract-logging/-/abstract-logging-2.0.0.tgz#08a85814946c98ef06f4256ad470aba1886d4490" + integrity sha512-/oA9z7JszpIioo6J6dB79LVUgJ3eD3cxkAmdCkvWWS+Y9tPtALs1rLqOekLUXUbYqM2fB9TTK0ibAyZJJOP/CA== -accepts@^1.3.5, accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: - version "1.3.8" - resolved "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" - integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== +accepts@^1.3.5, accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: + version "1.3.7" + resolved "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" + integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== dependencies: - mime-types "~2.1.34" - negotiator "0.6.3" + mime-types "~2.1.24" + negotiator "0.6.2" acorn-globals@^6.0.0: version "6.0.0" @@ -6373,19 +6991,19 @@ acorn-globals@^6.0.0: acorn-walk "^7.1.1" acorn-import-assertions@^1.7.6: - version "1.8.0" - resolved "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz#ba2b5939ce62c238db6d93d81c9b111b29b855e9" - integrity sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw== + version "1.7.6" + resolved "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.7.6.tgz#580e3ffcae6770eebeec76c3b9723201e9d01f78" + integrity sha512-FlVvVFA1TX6l3lp8VjDnYYq7R1nyW6x3svAt4nDgrWQ9SBaSh9CnbwgSUTasgfNfOG5HlM1ehugCvM+hjo56LA== acorn-jsx@^5.3.1: - version "5.3.2" - resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" - integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + version "5.3.1" + resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" + integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== acorn-walk@^7.1.1: - version "7.2.0" - resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" - integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== + version "7.1.1" + resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.1.1.tgz#345f0dffad5c735e7373d2fec9a1023e6a44b83e" + integrity sha512-wdlPY2tm/9XBr7QkKlq0WQVgiuGTX6YWPyRyBviSoScBuLfTVQhvwg6wJ369GJ/1nPfTLMfnrFIfjqVg6d+jQQ== acorn-walk@^8.1.1, acorn-walk@^8.2.0: version "8.2.0" @@ -6412,7 +7030,19 @@ address@^1.0.1, address@^1.1.2: resolved "https://registry.npmjs.org/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6" integrity sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA== -agent-base@6, agent-base@^6.0.2: +after@0.8.2: + version "0.8.2" + resolved "https://registry.npmjs.org/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" + integrity sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8= + +agent-base@6: + version "6.0.1" + resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.1.tgz#808007e4e5867decb0ab6ab2f928fbdb5a596db4" + integrity sha512-01q25QQDwLSsyfhrKbn8yuur+JNw0H+0Y4JiGIKd3z9aYk/w/2kxD/Upc+t2ZBBSUNff50VjPsSW2YxM8QYKVg== + dependencies: + debug "4" + +agent-base@^6.0.2: version "6.0.2" resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== @@ -6455,7 +7085,7 @@ ajv-keywords@^5.0.0: dependencies: fast-deep-equal "^3.1.3" -ajv@^6.10.0, ajv@^6.10.1, ajv@^6.12.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.7.0, ajv@~6.12.6: +ajv@^6.10.0, ajv@^6.10.1, ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.5.5, ajv@^6.7.0, ajv@~6.12.6: version "6.12.6" resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -6466,9 +7096,9 @@ ajv@^6.10.0, ajv@^6.10.1, ajv@^6.12.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5, aj uri-js "^4.2.2" ajv@^7.0.3: - version "7.2.4" - resolved "https://registry.npmjs.org/ajv/-/ajv-7.2.4.tgz#8e239d4d56cf884bccca8cca362f508446dc160f" - integrity sha512-nBeQgg/ZZA3u3SYxyaDvpvDtgZ/EZPF547ARgZBrG9Bhu1vKDwAIjtIf+sDtJUKa2zOcEbmRLBRSyMraS/Oy1A== + version "7.0.3" + resolved "https://registry.npmjs.org/ajv/-/ajv-7.0.3.tgz#13ae747eff125cafb230ac504b2406cf371eece2" + integrity sha512-R50QRlXSxqXcQP5SvKUrw8VZeypvo12i2IX0EeR5PiZ7bEKeHWgzgo264LDadUsCU42lTJVhFikTqJwNeH34gQ== dependencies: fast-deep-equal "^3.1.1" json-schema-traverse "^1.0.0" @@ -6476,15 +7106,20 @@ ajv@^7.0.3: uri-js "^4.2.2" ajv@^8.0.0, ajv@^8.8.0: - version "8.10.0" - resolved "https://registry.npmjs.org/ajv/-/ajv-8.10.0.tgz#e573f719bd3af069017e3b66538ab968d040e54d" - integrity sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw== + version "8.9.0" + resolved "https://registry.npmjs.org/ajv/-/ajv-8.9.0.tgz#738019146638824dea25edcf299dcba1b0e7eb18" + integrity sha512-qOKJyNj/h+OWx7s5DePL6Zu1KeM9jPZhwBqs+7DzP6bGOvqzVCSf0xueYmVuaC/oQ/VtS2zLMLHdQFbkka+XDQ== dependencies: fast-deep-equal "^3.1.1" json-schema-traverse "^1.0.0" require-from-string "^2.0.2" uri-js "^4.2.2" +alphanum-sort@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" + integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= + already@^3.2.0: version "3.3.0" resolved "https://registry.npmjs.org/already/-/already-3.3.0.tgz#a5e5becd167cf537b45f8f1c23d331488ed77003" @@ -6498,11 +7133,11 @@ anafanafo@2.0.0: char-width-table-consumer "^1.0.0" ansi-align@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz#0cdf12e111ace773a86e9a1fad1225c43cb19a59" - integrity sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w== + version "3.0.0" + resolved "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz#b536b371cf687caaef236c18d3e21fe3797467cb" + integrity sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw== dependencies: - string-width "^4.1.0" + string-width "^3.0.0" ansi-colors@^4.1.1: version "4.1.1" @@ -6515,11 +7150,11 @@ ansi-escapes@^3.0.0: integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== ansi-escapes@^4.2.1, ansi-escapes@^4.3.0, ansi-escapes@^4.3.1: - version "4.3.2" - resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" - integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + version "4.3.1" + resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" + integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== dependencies: - type-fest "^0.21.3" + type-fest "^0.11.0" ansi-html-community@^0.0.8: version "0.0.8" @@ -6564,10 +7199,11 @@ ansi-styles@^3.2.1: color-convert "^1.9.0" ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + version "4.2.1" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" + integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== dependencies: + "@types/color-name" "^1.1.1" color-convert "^2.0.1" ansi-styles@^5.0.0: @@ -6580,6 +7216,11 @@ ansi-styles@^6.0.0: resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.1.0.tgz#87313c102b8118abd57371afab34618bf7350ed3" integrity sha512-VbqNsoz55SYGczauuup0MFUyXNQviSpFTj1RQtFzmQLk18qbVSpTFFGMT293rmDaQuKCT6InmbuEyUne4mTuxQ== +any-base@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/any-base/-/any-base-1.1.0.tgz#ae101a62bc08a597b4c9ab5b7089d456630549fe" + integrity sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg== + any-observable@^0.3.0: version "0.3.0" resolved "https://registry.npmjs.org/any-observable/-/any-observable-0.3.0.tgz#af933475e5806a67d0d7df090dd5e8bef65d119b" @@ -6606,13 +7247,13 @@ anymatch@^3.0.3, anymatch@~3.1.2: normalize-path "^3.0.0" picomatch "^2.0.4" -apollo-datasource@^3.3.1: - version "3.3.1" - resolved "https://registry.npmjs.org/apollo-datasource/-/apollo-datasource-3.3.1.tgz#a1168dd68371930de3ed4245ad12fa8600efe2cc" - integrity sha512-Z3a8rEUXVPIZ1p8xrFL8bcNhWmhOmovgDArvwIwmJOBnh093ZpRfO+ESJEDAN4KswmyzCLDAwjsW4zQOONdRUw== +apollo-datasource@^3.3.0: + version "3.3.0" + resolved "https://registry.npmjs.org/apollo-datasource/-/apollo-datasource-3.3.0.tgz#ee84a802c45818e6a21a5f2d427f94851a4f9ebe" + integrity sha512-It8POTZTOCAnedRj2izEVeySN06LIfojigZjWaOY7voLe0DIgtvhql91xr27fuIWsR/Ew9twO3dLBjjvy34J4Q== dependencies: apollo-server-caching "^3.3.0" - apollo-server-env "^4.2.1" + apollo-server-env "^4.2.0" apollo-reporting-protobuf@^3.3.0: version "3.3.0" @@ -6628,23 +7269,24 @@ apollo-server-caching@^3.3.0: dependencies: lru-cache "^6.0.0" -apollo-server-core@^3.6.3: - version "3.6.3" - resolved "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-3.6.3.tgz#6b12ffa1af8bc8799930f72360090834915033d1" - integrity sha512-TFJmAlI6vPp1MHOSXqYkE6leAyMekWv/D/3ma11uETkcd3EPjERGmxtTXPJElMVEkOK9BEElYKthCrH7bjYLuw== +apollo-server-core@^3.6.1: + version "3.6.1" + resolved "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-3.6.1.tgz#e835198a2eda5bcb61d2a1174d44ecb0ac414d15" + integrity sha512-V2Us5x7d+w8dVdyFLxEygMgaQ3KZ6Z59HpaQBNHQ7C5wVZhjUXIsgbehBtfzQbMpyMx0z5/8Z8eIrC4zNoGJDw== dependencies: "@apollographql/apollo-tools" "^0.5.1" "@apollographql/graphql-playground-html" "1.6.29" "@graphql-tools/mock" "^8.1.2" "@graphql-tools/schema" "^8.0.0" + "@graphql-tools/utils" "^8.0.0" "@josephg/resolvable" "^1.0.0" - apollo-datasource "^3.3.1" + apollo-datasource "^3.3.0" apollo-reporting-protobuf "^3.3.0" apollo-server-caching "^3.3.0" - apollo-server-env "^4.2.1" - apollo-server-errors "^3.3.1" - apollo-server-plugin-base "^3.5.1" - apollo-server-types "^3.5.1" + apollo-server-env "^4.2.0" + apollo-server-errors "^3.3.0" + apollo-server-plugin-base "^3.5.0" + apollo-server-types "^3.5.0" async-retry "^1.2.1" fast-json-stable-stringify "^2.1.0" graphql-tag "^2.11.0" @@ -6654,58 +7296,58 @@ apollo-server-core@^3.6.3: sha.js "^2.4.11" uuid "^8.0.0" -apollo-server-env@^4.2.1: - version "4.2.1" - resolved "https://registry.npmjs.org/apollo-server-env/-/apollo-server-env-4.2.1.tgz#ea5b1944accdbdba311f179e4dfaeca482c20185" - integrity sha512-vm/7c7ld+zFMxibzqZ7SSa5tBENc4B0uye9LTfjJwGoQFY5xsUPH5FpO5j0bMUDZ8YYNbrF9SNtzc5Cngcr90g== +apollo-server-env@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/apollo-server-env/-/apollo-server-env-4.2.0.tgz#d7cb08a81cee3025cd47b08be80b359d61d85913" + integrity sha512-4xJ+PCoWsFLj4rU6iXrIhqD7nI42goi4Iqrhsof9680ljSzkzd+PCwZsja3mHOFXKUQQUvJ7StVSgwaiRu45+A== dependencies: - node-fetch "^2.6.7" + node-fetch "^2.6.1" -apollo-server-errors@^3.3.1: - version "3.3.1" - resolved "https://registry.npmjs.org/apollo-server-errors/-/apollo-server-errors-3.3.1.tgz#ba5c00cdaa33d4cbd09779f8cb6f47475d1cd655" - integrity sha512-xnZJ5QWs6FixHICXHxUfm+ZWqqxrNuPlQ+kj5m6RtEgIpekOPssH/SD9gf2B4HuWV0QozorrygwZnux8POvyPA== +apollo-server-errors@^3.3.0: + version "3.3.0" + resolved "https://registry.npmjs.org/apollo-server-errors/-/apollo-server-errors-3.3.0.tgz#ac8ceb1400064312f983d8d70195693fbcf2be3c" + integrity sha512-9/MNlPZBbEjcCdJcUSbKbVEBT9xZS8GSpX7T/TyzcxHSbsXJszSDSipQNGC+PRKTKAUnv61IONScVyLKEZ5XEQ== -apollo-server-express@^3.0.0, apollo-server-express@^3.6.3: - version "3.6.3" - resolved "https://registry.npmjs.org/apollo-server-express/-/apollo-server-express-3.6.3.tgz#5daf58bf0bdf0107ded7cd52c7e6ce6cd32c8b44" - integrity sha512-3CjahZ+n+1T7pHH1qW1B6Ns0BzwOMeupAp2u0+M8ruOmE/e7VKn0OSOQQckZ8Z2AcWxWeno9K89fIv3PoSYgYA== +apollo-server-express@^3.0.0, apollo-server-express@^3.6.1: + version "3.6.1" + resolved "https://registry.npmjs.org/apollo-server-express/-/apollo-server-express-3.6.1.tgz#b8bda303e05c551ac76c9c0b26bc651ca1466912" + integrity sha512-29imWvRPn5GsQq02Akt0+jejpWzpOIZfUmgoiFm4YB7somvhDNw15Pu7fv4sISK8ehNIDF68IpLd2cpY8sCkYQ== dependencies: "@types/accepts" "^1.3.5" "@types/body-parser" "1.19.2" "@types/cors" "2.8.12" "@types/express" "4.17.13" - "@types/express-serve-static-core" "4.17.28" + "@types/express-serve-static-core" "4.17.27" accepts "^1.3.5" - apollo-server-core "^3.6.3" - apollo-server-types "^3.5.1" + apollo-server-core "^3.6.1" + apollo-server-types "^3.5.0" body-parser "^1.19.0" cors "^2.8.5" parseurl "^1.3.3" -apollo-server-plugin-base@^3.5.1: - version "3.5.1" - resolved "https://registry.npmjs.org/apollo-server-plugin-base/-/apollo-server-plugin-base-3.5.1.tgz#73fc1591522e36e32eff3d033975333e30cf1a7c" - integrity sha512-wgDHz3lLrCqpecDky3z6AOQ0vik0qs0Cya/Ti6n3ESYXJ9MdK3jE/QunATIrOYYJaa+NKl9V7YwU+/bojNfFuQ== +apollo-server-plugin-base@^3.5.0: + version "3.5.0" + resolved "https://registry.npmjs.org/apollo-server-plugin-base/-/apollo-server-plugin-base-3.5.0.tgz#f3cb4f677152b60113f06f8d23b6234ecff847b4" + integrity sha512-dpi+W6wexT4H3cjIhxC9SJABkR8TCfxycoHK+U4jxQXUdg50da+KnMgoWlQbF1tuXtUs4gnJtij1RjuGtKwBhw== dependencies: - apollo-server-types "^3.5.1" + apollo-server-types "^3.5.0" -apollo-server-types@^3.5.1: - version "3.5.1" - resolved "https://registry.npmjs.org/apollo-server-types/-/apollo-server-types-3.5.1.tgz#73fc8aa82b3175fde3906fa3d6786ee4d3e8c982" - integrity sha512-zG7xLl4mmHuZMAYOfjWKHY/IC/GgIkJ3HnYuR7FRrnPpRA9Yt5Kf1M1rjm1Esuqzpb/dt8pM7cX40QaIQObCYQ== +apollo-server-types@^3.5.0: + version "3.5.0" + resolved "https://registry.npmjs.org/apollo-server-types/-/apollo-server-types-3.5.0.tgz#82f912d7765152fe1fde86cea8a076e9a0831a9d" + integrity sha512-4JaZNu1kjrzIbppgc78hhIe2DFe+XONf8grprcjTOe0v8dIsuV0tFUnl+awTvTpHU1sdjRCKwnj382BebiL+qw== dependencies: apollo-reporting-protobuf "^3.3.0" apollo-server-caching "^3.3.0" - apollo-server-env "^4.2.1" + apollo-server-env "^4.2.0" apollo-server@^3.0.0: - version "3.6.3" - resolved "https://registry.npmjs.org/apollo-server/-/apollo-server-3.6.3.tgz#0ba0ddb2835ccf27056d20b6f5b83b0ce9545a79" - integrity sha512-kNvOiDNkIaO+MsfR9v40Vz4ArlDdc9VwVKGJy5dniLW9AoDa/tSF99m8ItfGoMypqlRPMgrNGxkMuToBnvYXNQ== + version "3.6.1" + resolved "https://registry.npmjs.org/apollo-server/-/apollo-server-3.6.1.tgz#29420b1c0cddbf2e18147a3ca7299485f17137a2" + integrity sha512-Y2MY2/WvaTiofVoIR5ZIYt6c6wX8klZRaXI9x+7JBiFV9HMcOuLLpU3+P4r2EVXuN1LLe82m1PgiAYr+a1OmQg== dependencies: - apollo-server-core "^3.6.3" - apollo-server-express "^3.6.3" + apollo-server-core "^3.6.1" + apollo-server-express "^3.6.1" express "^4.17.1" aproba@^1.0.3: @@ -6769,9 +7411,9 @@ are-we-there-yet@^3.0.0: readable-stream "^3.6.0" are-we-there-yet@~1.1.2: - version "1.1.7" - resolved "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz#b15474a932adab4ff8a50d9adfa7e4e926f21146" - integrity sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g== + version "1.1.5" + resolved "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" + integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== dependencies: delegates "^1.0.0" readable-stream "^2.0.6" @@ -6836,6 +7478,11 @@ array-differ@^3.0.0: resolved "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz#3cbb3d0f316810eafcc47624734237d6aee4ae6b" integrity sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg== +array-filter@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/array-filter/-/array-filter-1.0.0.tgz#baf79e62e6ef4c2a4c0b831232daffec251f9d83" + integrity sha1-uveeYubvTCpMC4MSMtr/7CUfnYM= + array-flatten@1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" @@ -6851,7 +7498,7 @@ array-ify@^1.0.0: resolved "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" integrity sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4= -array-includes@^3.1.3, array-includes@^3.1.4: +array-includes@^3.1.2, array-includes@^3.1.3, array-includes@^3.1.4: version "3.1.4" resolved "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz#f5b493162c760f3539631f005ba2bb46acb45ba9" integrity sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw== @@ -6902,6 +7549,11 @@ array.prototype.flatmap@^1.2.5: define-properties "^1.1.3" es-abstract "^1.19.0" +arraybuffer.slice@~0.0.7: + version "0.0.7" + resolved "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz#3bbc4275dd584cc1b10809b89d4e8b63a69e7675" + integrity sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog== + arrify@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" @@ -6917,20 +7569,19 @@ asap@^2.0.0, asap@^2.0.3, asap@~2.0.3: resolved "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= -asn1.js@^5.2.0: - version "5.4.1" - resolved "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" - integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== +asn1.js@^4.0.0: + version "4.10.1" + resolved "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" + integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw== dependencies: bn.js "^4.0.0" inherits "^2.0.1" minimalistic-assert "^1.0.0" - safer-buffer "^2.1.0" asn1@^0.2.4, asn1@~0.2.3: - version "0.2.6" - resolved "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" - integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== + version "0.2.4" + resolved "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" + integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== dependencies: safer-buffer "~2.1.0" @@ -6970,16 +7621,16 @@ astral-regex@^2.0.0: integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== async-lock@^1.1.0: - version "1.3.1" - resolved "https://registry.npmjs.org/async-lock/-/async-lock-1.3.1.tgz#f2301c200600cde97acc386453b7126fa8aced3c" - integrity sha512-zK7xap9UnttfbE23JmcrNIyueAn6jWshihJqA33U/hEnKprF/lVGBDsBv/bqLm2YMMl1DnpHhUY044eA0t1TUw== + version "1.2.4" + resolved "https://registry.npmjs.org/async-lock/-/async-lock-1.2.4.tgz#80d0d612383045dd0c30eb5aad08510c1397cb91" + integrity sha512-UBQJC2pbeyGutIfYmErGc9RaJYnpZ1FHaxuKwb0ahvGiiCkPUf3p67Io+YLPmmv3RHY+mF6JEtNW8FlHsraAaA== -async-retry@^1.2.1, async-retry@^1.3.3: - version "1.3.3" - resolved "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz#0e7f36c04d8478e7a58bdbed80cedf977785f280" - integrity sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw== +async-retry@^1.2.1, async-retry@^1.3.1: + version "1.3.1" + resolved "https://registry.npmjs.org/async-retry/-/async-retry-1.3.1.tgz#139f31f8ddce50c0870b0ba558a6079684aaed55" + integrity sha512-aiieFW/7h3hY0Bq5d+ktDBejxuwR78vRu9hDUdR8rNhSaQ29VzPL4AoIRG7D/c7tdenwOcKvgPM6tIxB3cB6HA== dependencies: - retry "0.13.1" + retry "0.12.0" async@0.9.x: version "0.9.2" @@ -7024,30 +7675,32 @@ auto-bind@~4.0.0: integrity sha512-Hdw8qdNiqdJ8LqT0iK0sVzkFbzg6fhnQqqfWhBDxcHZvU75+B+ayzTy8x+k5Ix0Y92XOhOUlx74ps+bA6BeYMQ== autolinker@^3.11.0: - version "3.14.3" - resolved "https://registry.npmjs.org/autolinker/-/autolinker-3.14.3.tgz#c61c424bc6077bcf2fc62803803ec2f58e15a7ec" - integrity sha512-t81i2bCpS+s+5FIhatoww9DmpjhbdiimuU9ATEuLxtZMQ7jLv9fyFn7SWNG8IkEfD4AmYyirL1ss9k1aqVWRvg== + version "3.14.1" + resolved "https://registry.npmjs.org/autolinker/-/autolinker-3.14.1.tgz#6ae4b812b6eaf42d4d68138b9e67757cbf2bc1e4" + integrity sha512-yvsRHIaY51EYDml6MGlbqyJGfl4n7zezGYf+R7gvM8c5LNpRGc4SISkvgAswSS8SWxk/OrGCylKV9mJyVstz7w== dependencies: tslib "^1.9.3" -available-typed-arrays@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" - integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== +available-typed-arrays@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.2.tgz#6b098ca9d8039079ee3f77f7b783c4480ba513f5" + integrity sha512-XWX3OX8Onv97LMk/ftVyBibpGwY5a8SmuxZPzeOxqmuEqUCOM9ZE+uIaD1VNJ5QnvU2UQusvmKbuM1FR8QWGfQ== + dependencies: + array-filter "^1.0.0" aws-sdk-mock@^5.2.1: - version "5.6.2" - resolved "https://registry.npmjs.org/aws-sdk-mock/-/aws-sdk-mock-5.6.2.tgz#664771462953ca8d3806d5a50a63b4a6dbd5290f" - integrity sha512-GRJg8kjRJFLm2aLiPkYSqe/RreHqlqncAeFtWdAbtSxzBdct9EaV6rqSqjyWXKNJG45Rzn2Ojo3F6qVIgkQnSg== + version "5.2.1" + resolved "https://registry.npmjs.org/aws-sdk-mock/-/aws-sdk-mock-5.2.1.tgz#126d4d5362c96b7d1d0bd87708a99d626c19ffd4" + integrity sha512-dY7zA1p/lX335V4/aOJ2L8ggXC3a5zokTJFZlZVW3uU+Zej7u+V7WrEcN5TVaJAnk4auT263T6EK/OHW4WjKhw== dependencies: aws-sdk "^2.928.0" sinon "^11.1.1" traverse "^0.6.6" aws-sdk@^2.840.0, aws-sdk@^2.928.0, aws-sdk@^2.948.0: - version "2.1075.0" - resolved "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1075.0.tgz#609ef1e77b9b75cdbdd25b6084bcff571991a034" - integrity sha512-pYUwYidC2BGKNCz4a1ukA9FC+nYFrW1SxmacWMT/w5k/WBkU/kRgXH0D3poFCurhz/IUdSf34sQsSQ8d3TkNbw== + version "2.1065.0" + resolved "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1065.0.tgz#82b6e4e2a6fbccb1767339e309edd4f0daa958e6" + integrity sha512-OFvpXoL104dTFKpU14ILcLDPAlDbkJNIKXnnG2pK+2x++CvzIRJeNyERtUuEo7QMUOwq5U4nIQJKSPt5fBC/HA== dependencies: buffer "4.9.2" events "1.1.1" @@ -7070,9 +7723,9 @@ aws4@^1.11.0, aws4@^1.8.0: integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== axe-core@^4.3.5: - version "4.4.1" - resolved "https://registry.npmjs.org/axe-core/-/axe-core-4.4.1.tgz#7dbdc25989298f9ad006645cd396782443757413" - integrity sha512-gd1kmb21kwNuWr6BQz8fv6GNECPBnUasepcoLbekws23NVBLODdsClRZ+bQ8+9Uomf3Sm3+Vwn0oYG9NvwnJCw== + version "4.3.5" + resolved "https://registry.npmjs.org/axe-core/-/axe-core-4.3.5.tgz#78d6911ba317a8262bfee292aeafcc1e04b49cc5" + integrity sha512-WKTW1+xAzhMS5dJsxWkliixlO/PqC4VhmO9T4juNYcaTg9jzWiJsou6m5pxWYGfigWbwzJWeFY6z47a+4neRXA== axios-cached-dns-resolve@0.5.2: version "0.5.2" @@ -7133,14 +7786,14 @@ babel-plugin-dynamic-import-node@^2.3.3: object.assign "^4.1.0" babel-plugin-istanbul@^6.0.0: - version "6.1.1" - resolved "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" - integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== + version "6.0.0" + resolved "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz#e159ccdc9af95e0b570c75b4573b7c34d671d765" + integrity sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@istanbuljs/load-nyc-config" "^1.0.0" "@istanbuljs/schema" "^0.1.2" - istanbul-lib-instrument "^5.0.4" + istanbul-lib-instrument "^4.0.0" test-exclude "^6.0.0" babel-plugin-jest-hoist@^26.6.2: @@ -7163,12 +7816,12 @@ babel-plugin-polyfill-corejs2@^0.3.0: semver "^6.1.1" babel-plugin-polyfill-corejs3@^0.5.0: - version "0.5.2" - resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz#aabe4b2fa04a6e038b688c5e55d44e78cd3a5f72" - integrity sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ== + version "0.5.1" + resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.1.tgz#d66183bf10976ea677f4149a7fcc4d8df43d4060" + integrity sha512-TihqEe4sQcb/QcPJvxe94/9RZuLQuF1+To4WqQcRvc+3J3gLCPIPgDKzGLG6zmQLfH3nn25heRuDNkS2KR4I8A== dependencies: "@babel/helper-define-polyfill-provider" "^0.3.1" - core-js-compat "^3.21.0" + core-js-compat "^3.20.0" babel-plugin-polyfill-regenerator@^0.3.0: version "0.3.1" @@ -7192,9 +7845,9 @@ babel-polyfill@^6.26.0: regenerator-runtime "^0.10.5" babel-preset-current-node-syntax@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" - integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== + version "1.0.0" + resolved "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.0.tgz#cf5feef29551253471cfa82fc8e0f5063df07a77" + integrity sha512-mGkvkpocWJes1CmMKtgGUwCeeq0pOhALyymozzDWYomHTbDLwueDYG6p4TK1YOeYHCzBzYPsWkgTto10JubI1Q== dependencies: "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-syntax-bigint" "^7.8.3" @@ -7258,7 +7911,7 @@ babel-runtime@^6.26.0: core-js "^2.4.0" regenerator-runtime "^0.11.0" -backo2@^1.0.2: +backo2@1.0.2, backo2@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" integrity sha1-MasayLEpNjRj41s+u2n038+6eUc= @@ -7279,9 +7932,9 @@ badge-maker@^3.3.0: css-color-converter "^2.0.0" bail@^2.0.0: - version "2.0.2" - resolved "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz#d26f5cd8fe5d6f832a31517b9f7c356040ba6d5d" - integrity sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw== + version "2.0.1" + resolved "https://registry.npmjs.org/bail/-/bail-2.0.1.tgz#d676736373a374058a935aec81b94c12ba815771" + integrity sha512-d5FoTAr2S5DSUPKl85WNm2yUwsINN8eidIdIwsOge2t33DaOfOdSmmsI11jMN3GmALCXaw+Y6HMVHDzePshFAA== balanced-match@^0.4.2: version "0.4.2" @@ -7293,11 +7946,21 @@ balanced-match@^1.0.0: resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== +base64-arraybuffer@0.1.4: + version "0.1.4" + resolved "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz#9818c79e059b1355f97e0428a017c838e90ba812" + integrity sha1-mBjHngWbE1X5fgQooBfIOOkLqBI= + base64-js@^1.0.2, base64-js@^1.3.0, base64-js@^1.3.1, base64-js@^1.5.1: version "1.5.1" resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== +base64id@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz#2770ac6bc47d312af97a8bf9a634342e0cd25cb6" + integrity sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog== + base64url@3.x.x: version "3.0.1" resolved "https://registry.npmjs.org/base64url/-/base64url-3.0.1.tgz#6399d572e2bc3f90a9a8b22d5dbb0a32d33f788d" @@ -7340,6 +8003,11 @@ bdd-lazy-var@^2.6.0: resolved "https://registry.npmjs.org/bdd-lazy-var/-/bdd-lazy-var-2.6.1.tgz#ca03fb36d68c5a507c0ba9a4d53160b899e6b7cb" integrity sha512-X3ADwcFji/IHIrYJhTTpaiWhoOx4pl4whdAx1dmvdeUPsMUb7fVYFvf/Q33VEAEAVkEwi5rgNSZ0Y9oOVeQV+A== +before-after-hook@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.1.0.tgz#b6c03487f44e24200dd30ca5e6a1979c5d2fb635" + integrity sha512-IWIbu7pMqyw3EAJHzzHbWa85b6oud/yfKYg5rqB5hNE8CeMi3nX+2C2sj0HswfblST86hpVEOAb9x34NZd6P7A== + before-after-hook@^2.2.0: version "2.2.2" resolved "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.2.tgz#a6e8ca41028d90ee2c24222f201c90956091613e" @@ -7363,9 +8031,9 @@ bfj@^7.0.2: tryer "^1.0.1" big-integer@^1.6.17: - version "1.6.51" - resolved "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz#0df92a5d9880560d3ff2d5fd20245c889d130686" - integrity sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg== + version "1.6.48" + resolved "https://registry.npmjs.org/big-integer/-/big-integer-1.6.48.tgz#8fd88bd1632cba4a1c8c3e3d7159f08bb95b4b9e" + integrity sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w== big.js@^5.2.2: version "5.2.2" @@ -7373,9 +8041,9 @@ big.js@^5.2.2: integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== bignumber.js@^9.0.0: - version "9.0.2" - resolved "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.2.tgz#71c6c6bed38de64e24a65ebe16cfcf23ae693673" - integrity sha512-GAcQvbpsM0pUb0zw1EI0KhQEZ+lRwR5fYaAp3vPOYuP7aDvGy6cVN6XHLauvF8SOga2y0dcLcjt3iQDTSEliyw== + version "9.0.1" + resolved "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.1.tgz#8d7ba124c882bfd8e43260c67475518d0689e4e5" + integrity sha512-IdZR9mh6ahOBv/hYGiXyVuyCetmGJhtYkqLBpTStdhEGjegpPlUawydyaF3pbIOFynJTpllEs+NP+CS9jKFLjA== bin-links@^3.0.0: version "3.0.0" @@ -7390,9 +8058,9 @@ bin-links@^3.0.0: write-file-atomic "^4.0.0" binary-extensions@^2.0.0: - version "2.2.0" - resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" - integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + version "2.0.0" + resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz#23c0df14f6a88077f5f986c0d167ec03c3d5537c" + integrity sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow== binary-search@^1.3.5: version "1.3.6" @@ -7431,6 +8099,11 @@ blob-util@^2.0.2: resolved "https://registry.npmjs.org/blob-util/-/blob-util-2.0.2.tgz#3b4e3c281111bb7f11128518006cdc60b403a1eb" integrity sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ== +blob@0.0.5: + version "0.0.5" + resolved "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz#d680eeef25f8cd91ad533f5b01eed48e64caf683" + integrity sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig== + bluebird@3.7.2, bluebird@^3.3.5, bluebird@^3.5.5, bluebird@^3.7.2: version "3.7.2" resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" @@ -7441,30 +8114,30 @@ bluebird@~3.4.1: resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz#f72d760be09b7f76d08ed8fae98b289a8d05fab3" integrity sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM= -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: +bmp-js@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/bmp-js/-/bmp-js-0.1.0.tgz#e05a63f796a6c1ff25f4771ec7adadc148c07233" + integrity sha1-4Fpj95amwf8l9Hcex62twUjAcjM= + +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.11.9: version "4.12.0" resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== -bn.js@^5.0.0, bn.js@^5.1.1: - version "5.2.0" - resolved "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz#358860674396c6997771a9d051fcc1b57d4ae002" - integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw== - -body-parser@1.19.2, body-parser@^1.19.0: - version "1.19.2" - resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.19.2.tgz#4714ccd9c157d44797b8b5607d72c0b89952f26e" - integrity sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw== +body-parser@1.19.1, body-parser@^1.19.0: + version "1.19.1" + resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.19.1.tgz#1499abbaa9274af3ecc9f6f10396c995943e31d4" + integrity sha512-8ljfQi5eBk8EJfECMrgqNGWPEY5jWP+1IzkzkGdFFEwFQZZyaZ21UqdaHktgiMlH0xLHqIFtE/u2OYE5dOtViA== dependencies: - bytes "3.1.2" + bytes "3.1.1" content-type "~1.0.4" debug "2.6.9" depd "~1.1.2" http-errors "1.8.1" iconv-lite "0.4.24" on-finished "~2.3.0" - qs "6.9.7" - raw-body "2.4.3" + qs "6.9.6" + raw-body "2.4.2" type-is "~1.6.18" bonjour@^3.5.0: @@ -7582,28 +8255,26 @@ browserify-des@^1.0.0: inherits "^2.0.1" safe-buffer "^5.1.2" -browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: - version "4.1.0" - resolved "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" - integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== +browserify-rsa@^4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" + integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ= dependencies: - bn.js "^5.0.0" + bn.js "^4.1.0" randombytes "^2.0.1" browserify-sign@^4.0.0: - version "4.2.1" - resolved "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" - integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== + version "4.0.4" + resolved "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298" + integrity sha1-qk62jl17ZYuqa/alfmMMvXqT0pg= dependencies: - bn.js "^5.1.1" - browserify-rsa "^4.0.1" - create-hash "^1.2.0" - create-hmac "^1.1.7" - elliptic "^6.5.3" - inherits "^2.0.4" - parse-asn1 "^5.1.5" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" + bn.js "^4.1.1" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.2" + elliptic "^6.0.0" + inherits "^2.0.1" + parse-asn1 "^5.0.0" browserify-zlib@^0.2.0: version "0.2.0" @@ -7612,7 +8283,7 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.16.6, browserslist@^4.17.5, browserslist@^4.18.1, browserslist@^4.19.1: +browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.16.0, browserslist@^4.16.6, browserslist@^4.17.5, browserslist@^4.18.1, browserslist@^4.19.1: version "4.19.1" resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.19.1.tgz#4ac0435b35ab655896c31d53018b6dd5e9e4c9a3" integrity sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A== @@ -7650,10 +8321,15 @@ buffer-equal-constant-time@1.0.1: resolved "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819" integrity sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk= +buffer-equal@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz#91bc74b11ea405bc916bc6aa908faafa5b4aac4b" + integrity sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs= + buffer-from@^1.0.0: - version "1.1.2" - resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" - integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + version "1.1.1" + resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" + integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== buffer-indexof-polyfill@~1.0.0: version "1.0.2" @@ -7684,7 +8360,7 @@ buffer@4.9.2, buffer@^4.3.0: ieee754 "^1.1.4" isarray "^1.0.0" -buffer@^5.2.1, buffer@^5.5.0, buffer@^5.7.0: +buffer@^5.2.0, buffer@^5.2.1, buffer@^5.5.0, buffer@^5.7.0: version "5.7.1" resolved "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== @@ -7706,9 +8382,9 @@ buffers@~0.1.1: integrity sha1-skV5w77U1tOWru5tmorn9Ugqt7s= builtin-modules@^3.1.0: - version "3.2.0" - resolved "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz#45d5db99e7ee5e6bc4f362e008bf917ab5049887" - integrity sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA== + version "3.1.0" + resolved "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz#aad97c15131eb76b65b50ef208e7584cd76a7484" + integrity sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw== builtin-status-codes@^3.0.0: version "3.0.0" @@ -7726,19 +8402,19 @@ byline@^5.0.0: integrity sha1-dBxSFkaOrcRXsDQQEYrXfejB3bE= byte-size@^7.0.0: - version "7.0.1" - resolved "https://registry.npmjs.org/byte-size/-/byte-size-7.0.1.tgz#b1daf3386de7ab9d706b941a748dbfc71130dee3" - integrity sha512-crQdqyCwhokxwV1UyDzLZanhkugAgft7vt0qbbdt60C6Zf3CAiGmtUCylbtYwrU6loOUw3euGrNtW1J651ot1A== + version "7.0.0" + resolved "https://registry.npmjs.org/byte-size/-/byte-size-7.0.0.tgz#36528cd1ca87d39bd9abd51f5715dc93b6ceb032" + integrity sha512-NNiBxKgxybMBtWdmvx7ZITJi4ZG+CYUgwOSZTfqB1qogkRHrhbQE/R2r5Fh94X+InN5MCYz6SvB/ejHMj/HbsQ== bytes@3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= -bytes@3.1.2: - version "3.1.2" - resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" - integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== +bytes@3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.1.tgz#3f018291cb4cbad9accb6e6970bca9c8889e879a" + integrity sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg== cacache@^15.0.3, cacache@^15.0.5, cacache@^15.2.0, cacache@^15.3.0: version "15.3.0" @@ -7780,9 +8456,9 @@ cache-base@^1.0.1: unset-value "^1.0.0" cacheable-lookup@^5.0.3: - version "5.0.4" - resolved "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz#5a6b865b2c44357be3d5ebc2a467b032719a7005" - integrity sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA== + version "5.0.3" + resolved "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.3.tgz#049fdc59dffdd4fc285e8f4f82936591bd59fec3" + integrity sha512-W+JBqF9SWe18A72XFzN/V/CULFzPm7sBXzzR6ekkE+3tLG72wFZrBiBZhrZuDoYexop4PHJVdFAKb/Nj9+tm9w== cacheable-request@^6.0.0: version "6.1.0" @@ -7851,11 +8527,11 @@ camelcase-keys@^6.2.2: quick-lru "^4.0.1" camelcase-keys@^7.0.1: - version "7.0.2" - resolved "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-7.0.2.tgz#d048d8c69448745bb0de6fc4c1c52a30dfbe7252" - integrity sha512-Rjs1H+A9R+Ig+4E/9oyB66UC5Mj9Xq3N//vcLf2WzgdTi/3gUu3Z9KoqmlrEG4VuuLK8wJHofxzdQXz/knhiYg== + version "7.0.1" + resolved "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-7.0.1.tgz#5a57e6dfb3f6c7929dad15599ee4476a7e9a3b2d" + integrity sha512-P331lEls98pW8JLyodNWfzuz91BEDVA4VpW2/SwXnyv2K495tq1N777xzDbFgnEigfA7UIY0xa6PwR/H9jijjA== dependencies: - camelcase "^6.3.0" + camelcase "^6.2.0" map-obj "^4.1.0" quick-lru "^5.1.1" type-fest "^1.2.1" @@ -7875,10 +8551,10 @@ camelcase@^5.0.0, camelcase@^5.3.1: resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -camelcase@^6.0.0, camelcase@^6.2.0, camelcase@^6.3.0: - version "6.3.0" - resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" - integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== +camelcase@^6.0.0, camelcase@^6.2.0: + version "6.2.0" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" + integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== caniuse-api@^3.0.0: version "3.0.0" @@ -7890,18 +8566,23 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001286: - version "1.0.30001312" - resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001312.tgz#e11eba4b87e24d22697dae05455d5aea28550d5f" - integrity sha512-Wiz1Psk2MEK0pX3rUzWaunLTZzqS2JYZFzNKqAiJGiuxIjRPLgV6+VDPOg6lQOUxmDwhTlh198JsTTi8Hzw6aQ== +caniuse-lite@^1.0.0: + version "1.0.30001282" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001282.tgz#38c781ee0a90ccfe1fe7fefd00e43f5ffdcb96fd" + integrity sha512-YhF/hG6nqBEllymSIjLtR2iWDDnChvhnVJqp+vloyt2tEHFG1yBR+ac2B/rOw0qOK0m0lEXU2dv4E/sMk5P9Kg== + +caniuse-lite@^1.0.30001286: + version "1.0.30001296" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001296.tgz#d99f0f3bee66544800b93d261c4be55a35f1cec8" + integrity sha512-WfrtPEoNSoeATDlf4y3QvkwiELl9GyPLISV5GejTbbQRtQx4LhsXmc9IQ6XCL2d7UxCyEzToEZNMeqR79OUw8Q== canvas@^2.6.1: - version "2.9.0" - resolved "https://registry.npmjs.org/canvas/-/canvas-2.9.0.tgz#7df0400b141a7e42e597824f377935ba96880f2a" - integrity sha512-0l93g7uxp7rMyr7H+XRQ28A3ud0dKIUTIEkUe1Dxh4rjUYN7B93+SjC3r1PDKA18xcQN87OFGgUnyw7LSgNLSQ== + version "2.8.0" + resolved "https://registry.npmjs.org/canvas/-/canvas-2.8.0.tgz#f99ca7f25e6e26686661ffa4fec1239bbef74461" + integrity sha512-gLTi17X8WY9Cf5GZ2Yns8T5lfBOcGgFehDFb+JQwDqdOoBOcECS9ZWMEAqMSVcMYwXD659J8NyzjRY/2aE+C2Q== dependencies: "@mapbox/node-pre-gyp" "^1.0.0" - nan "^2.15.0" + nan "^2.14.0" simple-get "^3.0.3" capital-case@^1.0.4: @@ -7926,9 +8607,9 @@ caseless@~0.12.0: integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= ccount@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz#17a3bf82302e0870d6da43a01311a8bc02a3ecf5" - integrity sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg== + version "2.0.0" + resolved "https://registry.npmjs.org/ccount/-/ccount-2.0.0.tgz#3d6fb55803832766a24c6f339abc507297eb5d25" + integrity sha512-VOR0NWFYX65n9gELQdcpqsie5L5ihBXuZGAgaPEp/U7IOSjnPMEH6geE+2f6lcekaNEfWzAHS45mPvSo5bqsUA== chainsaw@~0.1.0: version "0.1.0" @@ -8032,21 +8713,31 @@ character-entities-legacy@^1.0.0: resolved "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz#94bc1845dce70a5bb9d2ecc748725661293d8fc1" integrity sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA== +character-entities-legacy@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-2.0.0.tgz#57f4d00974c696e8f74e9f493e7fcb75b44d7ee7" + integrity sha512-YwaEtEvWLpFa6Wh3uVLrvirA/ahr9fki/NUd/Bd4OR6EdJ8D22hovYQEOUCBfQfcqnC4IAMGMsHXY1eXgL4ZZA== + character-entities@^1.0.0: version "1.2.4" resolved "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz#e12c3939b7eaf4e5b15e7ad4c5e28e1d48c5b16b" integrity sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw== character-entities@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/character-entities/-/character-entities-2.0.1.tgz#98724833e1e27990dee0bd0f2b8a859c3476aac7" - integrity sha512-OzmutCf2Kmc+6DrFrrPS8/tDh2+DpnrfzdICHWhcVC9eOd0N1PXmQEE1a8iM4IziIAG+8tmTq3K+oo0ubH6RRQ== + version "2.0.0" + resolved "https://registry.npmjs.org/character-entities/-/character-entities-2.0.0.tgz#508355fcc8c73893e0909efc1a44d28da2b6fdf3" + integrity sha512-oHqMj3eAuJ77/P5PaIRcqk+C3hdfNwyCD2DAUcD5gyXkegAuF2USC40CEqPscDk4I8FRGMTojGJQkXDsN5QlJA== character-reference-invalid@^1.0.0: version "1.1.4" resolved "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz#083329cda0eae272ab3dbbf37e9a382c13af1560" integrity sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg== +character-reference-invalid@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.0.tgz#a0bdeb89c051fe7ed5d3158b2f06af06984f2813" + integrity sha512-pE3Z15lLRxDzWJy7bBHBopRwfI20sbrMVLQTC7xsPglCHf4Wv1e167OgYAFP78co2XlhojDyAqA+IAJse27//g== + chardet@^0.7.0: version "0.7.0" resolved "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" @@ -8088,9 +8779,11 @@ chownr@^2.0.0: integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== chrome-trace-event@^1.0.2: - version "1.0.3" - resolved "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" - integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== + version "1.0.2" + resolved "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" + integrity sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ== + dependencies: + tslib "^1.9.0" ci-info@^2.0.0: version "2.0.0" @@ -8138,9 +8831,9 @@ classnames@*, classnames@^2.2.5, classnames@^2.2.6, classnames@^2.3.1: integrity sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA== clean-css@^5.2.2: - version "5.2.4" - resolved "https://registry.npmjs.org/clean-css/-/clean-css-5.2.4.tgz#982b058f8581adb2ae062520808fb2429bd487a4" - integrity sha512-nKseG8wCzEuji/4yrgM/5cthL9oTDc5UOQyFMvW/Q53oP6gLH690o1NbuTh6Y18nujr7BxlsFuS7gXLnLzKJGg== + version "5.2.2" + resolved "https://registry.npmjs.org/clean-css/-/clean-css-5.2.2.tgz#d3a7c6ee2511011e051719838bdcf8314dc4548d" + integrity sha512-/eR8ru5zyxKzpBLv9YZvMXgTSSQn7AdkMItMYynsFgGwTveCRVam9IUPFloE85B4vAIj05IuKmmEoV7/AQjT0w== dependencies: source-map "~0.6.0" @@ -8159,6 +8852,13 @@ cli-boxes@^2.2.1: resolved "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== +cli-cursor@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987" + integrity sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc= + dependencies: + restore-cursor "^1.0.1" + cli-cursor@^2.0.0, cli-cursor@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" @@ -8174,23 +8874,24 @@ cli-cursor@^3.1.0: restore-cursor "^3.1.0" cli-spinners@^2.5.0: - version "2.6.1" - resolved "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz#adc954ebe281c37a6319bfa401e6dd2488ffb70d" - integrity sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g== + version "2.5.0" + resolved "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.5.0.tgz#12763e47251bf951cb75c201dfa58ff1bcb2d047" + integrity sha512-PC+AmIuK04E6aeSs/pUccSujsTzBhu4HzC2dL+CfJB/Jcc2qTRbEwZQDfIUpt2Xl8BodYBEq8w4fc0kU2I9DjQ== cli-table3@~0.6.0: - version "0.6.1" - resolved "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.1.tgz#36ce9b7af4847f288d3cdd081fbd09bf7bd237b8" - integrity sha512-w0q/enDHhPLq44ovMGdQeeDLvwxwavsJX7oQGYt/LrBlYsyaxyDnp6z3QzFut/6kLLKnlcUVJLrpB7KBfgG/RA== + version "0.6.0" + resolved "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.0.tgz#b7b1bc65ca8e7b5cef9124e13dc2b21e2ce4faee" + integrity sha512-gnB85c3MGC7Nm9I/FkiasNBOKjOiO1RNuXXarQms37q4QMpWdlbBgD/VnOStA2faG1dpXMv31RFApjX1/QdgWQ== dependencies: + object-assign "^4.1.0" string-width "^4.2.0" optionalDependencies: - colors "1.4.0" + colors "^1.1.2" cli-table@^0.3.1: - version "0.3.11" - resolved "https://registry.npmjs.org/cli-table/-/cli-table-0.3.11.tgz#ac69cdecbe81dccdba4889b9a18b7da312a9d3ee" - integrity sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ== + version "0.3.6" + resolved "https://registry.npmjs.org/cli-table/-/cli-table-0.3.6.tgz#e9d6aa859c7fe636981fd3787378c2a20bce92fc" + integrity sha512-ZkNZbnZjKERTY5NwC2SeMeLeifSPq/pubeRoTpdr3WchLlnZg6hEgvHkK5zL7KNFdd9PmHN8lxrENUwI3cE8vQ== dependencies: colors "1.0.3" @@ -8331,9 +9032,9 @@ codemirror-graphql@^1.2.11: graphql-language-service "^4.1.4" codemirror@^5.58.2: - version "5.65.1" - resolved "https://registry.npmjs.org/codemirror/-/codemirror-5.65.1.tgz#5988a812c974c467f964bcc1a00c944e373de502" - integrity sha512-s6aac+DD+4O2u1aBmdxhB7yz2XU7tG3snOyQ05Kxifahz7hoxnfxIRHxiCSEv3TUC38dIVH8G+lZH9UWSfGQxA== + version "5.63.3" + resolved "https://registry.npmjs.org/codemirror/-/codemirror-5.63.3.tgz#97042a242027fe0c87c09b36bc01931d37b76527" + integrity sha512-1C+LELr+5grgJYqwZKqxrcbPsHFHapVaVAloBsFBASbpLnQqLw1U8yXJ3gT5D+rhxIiSpo+kTqN+hQ+9ialIXw== codeowners-utils@^1.0.2: version "1.0.2" @@ -8346,9 +9047,9 @@ codeowners-utils@^1.0.2: locate-path "^5.0.0" collect-v8-coverage@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" - integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== + version "1.0.0" + resolved "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.0.tgz#150ee634ac3650b71d9c985eb7f608942334feb1" + integrity sha512-VKIhJgvk8E1W28m5avZ2Gv2Ruv5YiF56ug2oclvaG9md69BuZImMG2sk9g7QNKLUbtYAKQjXjYxbYZVUlMMKmQ== collection-visit@^1.0.0: version "1.0.0" @@ -8363,7 +9064,7 @@ color-convert@^0.5.2: resolved "https://registry.npmjs.org/color-convert/-/color-convert-0.5.3.tgz#bdb6c69ce660fadffe0b0007cc447e1b9f7282bd" integrity sha1-vbbGnOZg+t/+CwAHzER+G59ygr0= -color-convert@^1.9.0, color-convert@^1.9.3: +color-convert@^1.9.0, color-convert@^1.9.1: version "1.9.3" resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== @@ -8387,10 +9088,10 @@ color-name@^1.0.0, color-name@^1.1.4, color-name@~1.1.4: resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -color-string@^1.6.0, color-string@^1.9.0: - version "1.9.0" - resolved "https://registry.npmjs.org/color-string/-/color-string-1.9.0.tgz#63b6ebd1bec11999d1df3a79a7569451ac2be8aa" - integrity sha512-9Mrz2AQLefkH1UvASKj6v6hj/7eWgjnT/cVsR8CumieLoT+g900exWeNogqtweI8dxloXN9BDQTYro1oWu/5CQ== +color-string@^1.5.2, color-string@^1.6.0: + version "1.6.0" + resolved "https://registry.npmjs.org/color-string/-/color-string-1.6.0.tgz#c3915f61fe267672cb7e1e064c9d692219f6c312" + integrity sha512-c/hGS+kRWJutUBEngKKmk4iH3sD59MBkoxVapS/0wgpCz2u7XsNloxknyvBhzwEs1IbV36D9PwqLPJ2DTu3vMA== dependencies: color-name "^1.0.0" simple-swizzle "^0.2.2" @@ -8400,26 +9101,26 @@ color-support@^1.1.2: resolved "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== -color@^3.1.3: - version "3.2.1" - resolved "https://registry.npmjs.org/color/-/color-3.2.1.tgz#3544dc198caf4490c3ecc9a790b54fe9ff45e164" - integrity sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA== +color@3.0.x: + version "3.0.0" + resolved "https://registry.npmjs.org/color/-/color-3.0.0.tgz#d920b4328d534a3ac8295d68f7bd4ba6c427be9a" + integrity sha512-jCpd5+s0s0t7p3pHQKpnJ0TpQKKdleP71LWcA0aqiljpiuAkOSUFN/dyH8ZwF0hRmFlrIuRhufds1QyEP9EB+w== dependencies: - color-convert "^1.9.3" - color-string "^1.6.0" + color-convert "^1.9.1" + color-string "^1.5.2" color@^4.0.1: - version "4.2.1" - resolved "https://registry.npmjs.org/color/-/color-4.2.1.tgz#498aee5fce7fc982606c8875cab080ac0547c884" - integrity sha512-MFJr0uY4RvTQUKvPq7dh9grVOTYSFeXja2mBXioCGjnjJoXrAp9jJ1NQTDR73c9nwBSAQiNKloKl5zq9WB9UPw== + version "4.0.1" + resolved "https://registry.npmjs.org/color/-/color-4.0.1.tgz#21df44cd10245a91b1ccf5ba031609b0e10e7d67" + integrity sha512-rpZjOKN5O7naJxkH2Rx1sZzzBgaiWECc6BYXjeCE6kF0kcASJYbUq02u7JqIHwCb/j3NhV+QhRL2683aICeGZA== dependencies: color-convert "^2.0.1" - color-string "^1.9.0" + color-string "^1.6.0" colord@^2.9.1: - version "2.9.2" - resolved "https://registry.npmjs.org/colord/-/colord-2.9.2.tgz#25e2bacbbaa65991422c07ea209e2089428effb1" - integrity sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ== + version "2.9.1" + resolved "https://registry.npmjs.org/colord/-/colord-2.9.1.tgz#c961ea0efeb57c9f0f4834458f26cb9cc4a3f90e" + integrity sha512-4LBMSt09vR0uLnPVkOUBnmxgoaeN4ewRbx801wY/bXcltXfpR/G46OdWn96XpYmCWuYvO46aBZP4NgX8HpNAcw== colorette@2.0.16, colorette@^2.0.10, colorette@^2.0.16: version "2.0.16" @@ -8431,7 +9132,7 @@ colors@1.0.3: resolved "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" integrity sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs= -colors@1.4.0: +colors@1.4.0, colors@^1.1.2: version "1.4.0" resolved "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== @@ -8442,19 +9143,19 @@ colors@~1.2.1: integrity sha512-erNRLao/Y3Fv54qUa0LBB+//Uf3YwMUmdJinN20yMXm9zdKKqH9wt7R9IIVZ+K7ShzfpLV/Zg8+VyrBJYB4lpg== colorspace@1.1.x: - version "1.1.4" - resolved "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz#8d442d1186152f60453bf8070cd66eb364e59243" - integrity sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w== + version "1.1.2" + resolved "https://registry.npmjs.org/colorspace/-/colorspace-1.1.2.tgz#e0128950d082b86a2168580796a0aa5d6c68d8c5" + integrity sha512-vt+OoIP2d76xLhjwbBaucYlNSpPsrJWPlBTtwCpQKIu6/CSMutyzX93O/Do0qzpH3YoHEes8YEFXyZ797rEhzQ== dependencies: - color "^3.1.3" + color "3.0.x" text-hex "1.0.x" columnify@^1.5.4: - version "1.6.0" - resolved "https://registry.npmjs.org/columnify/-/columnify-1.6.0.tgz#6989531713c9008bb29735e61e37acf5bd553cf3" - integrity sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q== + version "1.5.4" + resolved "https://registry.npmjs.org/columnify/-/columnify-1.5.4.tgz#4737ddf1c7b69a8a7c340570782e947eec8e78bb" + integrity sha1-Rzfd8ce2mop8NAVweC6UfuyOeLs= dependencies: - strip-ansi "^6.0.1" + strip-ansi "^3.0.0" wcwidth "^1.0.0" combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: @@ -8479,10 +9180,10 @@ command-exists@^1.2.9: resolved "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz#c50725af3808c8ab0260fd60b01fbfa25b954f69" integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w== -commander@*: - version "9.0.0" - resolved "https://registry.npmjs.org/commander/-/commander-9.0.0.tgz#86d58f24ee98126568936bd1d3574e0308a99a40" - integrity sha512-JJfP2saEKbQqvW+FI93OYUB4ByV5cizMpFMiiJI8xDbBvQvSkIk0VvQdn1CZ8mqAO8Loq2h0gYTYtDFUZUeERw== +commander@*, commander@^8.3.0: + version "8.3.0" + resolved "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" + integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== commander@7.1.0: version "7.1.0" @@ -8514,21 +9215,21 @@ commander@^7.2.0: resolved "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== -commander@^8.3.0: - version "8.3.0" - resolved "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" - integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== - common-ancestor-path@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz#4f7d2d1394d91b7abdf51871c62f71eadb0182a7" integrity sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w== -common-tags@1.8.2, common-tags@^1.8.0: +common-tags@1.8.2: version "1.8.2" resolved "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz#94ebb3c076d26032745fd54face7f688ef5ac9c6" integrity sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA== +common-tags@^1.8.0: + version "1.8.0" + resolved "https://registry.npmjs.org/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937" + integrity sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw== + commondir@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" @@ -8542,18 +9243,33 @@ compare-func@^2.0.0: array-ify "^1.0.0" dot-prop "^5.1.0" -component-emitter@^1.2.1, component-emitter@^1.3.0: +component-bind@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1" + integrity sha1-AMYIq33Nk4l8AAllGx06jh5zu9E= + +component-emitter@1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" + integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY= + +component-emitter@^1.2.1, component-emitter@^1.3.0, component-emitter@~1.3.0: version "1.3.0" resolved "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== +component-inherit@0.0.3: + version "0.0.3" + resolved "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143" + integrity sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM= + compress-commons@^4.1.0: - version "4.1.1" - resolved "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.1.tgz#df2a09a7ed17447642bad10a85cc9a19e5c42a7d" - integrity sha512-QLdDLCKNV2dtoTorqgxngQCMA+gWXkM/Nwu7FpeBhk/RdkzimqC3jueb/FDmaZeXh+uby1jkBqE3xArsLBE5wQ== + version "4.1.0" + resolved "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.0.tgz#25ec7a4528852ccd1d441a7d4353cd0ece11371b" + integrity sha512-ofaaLqfraD1YRTkrRKPCrGJ1pFeDG/MVCkVVV2FNGeWquSlqw5wOrwOfPQ1xF2u+blpeWASie5EubHz+vsNIgA== dependencies: buffer-crc32 "^0.2.13" - crc32-stream "^4.0.2" + crc32-stream "^4.0.1" normalize-path "^3.0.0" readable-stream "^3.6.0" @@ -8601,6 +9317,16 @@ concat-map@0.0.1: resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= +concat-stream@^1.6.2: + version "1.6.2" + resolved "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + concat-stream@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz#414cf5af790a48c60ab9be4527d56d5e41133cb1" @@ -8633,9 +9359,9 @@ concurrently@^7.0.0: yargs "^16.2.0" config-chain@^1.1.12: - version "1.1.13" - resolved "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4" - integrity sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ== + version "1.1.12" + resolved "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz#0fde8d091200eb5e808caf25fe618c02f48e4efa" + integrity sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA== dependencies: ini "^1.3.4" proto-list "~1.2.1" @@ -8699,9 +9425,9 @@ content-type@~1.0.4: integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== conventional-changelog-angular@^5.0.12: - version "5.0.13" - resolved "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz#896885d63b914a70d4934b59d2fe7bde1832b28c" - integrity sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA== + version "5.0.12" + resolved "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.12.tgz#c979b8b921cbfe26402eb3da5bbfda02d865a2b9" + integrity sha512-5GLsbnkR/7A89RyHLvvoExbiGbd9xKdKqDTrArnPbOqBqG/2wIosu0fHwpeIRI8Tl94MhVNBXcLJZl92ZQ5USw== dependencies: compare-func "^2.0.0" q "^1.5.1" @@ -8755,9 +9481,9 @@ conventional-commits-filter@^2.0.7: modify-values "^1.0.0" conventional-commits-parser@^3.2.0: - version "3.2.4" - resolved "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz#a7d3b77758a202a9b2293d2112a8d8052c740972" - integrity sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q== + version "3.2.1" + resolved "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.1.tgz#ba44f0b3b6588da2ee9fd8da508ebff50d116ce2" + integrity sha512-OG9kQtmMZBJD/32NEw5IhN5+HnBqVjy03eC+I71I0oQRFA5rOgA4OtPOYG7mz1GkCfCNxn3gKIX8EiHJYuf1cA== dependencies: JSONStream "^1.0.4" is-text-path "^1.0.1" @@ -8765,6 +9491,7 @@ conventional-commits-parser@^3.2.0: meow "^8.0.0" split2 "^3.0.0" through2 "^4.0.0" + trim-off-newlines "^1.0.0" conventional-recommended-bump@^6.1.0: version "6.1.0" @@ -8781,18 +9508,18 @@ conventional-recommended-bump@^6.1.0: q "^1.5.1" convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: - version "1.8.0" - resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" - integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== + version "1.7.0" + resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" + integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== dependencies: safe-buffer "~5.1.1" cookie-parser@^1.4.5: - version "1.4.6" - resolved "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.6.tgz#3ac3a7d35a7a03bbc7e365073a26074824214594" - integrity sha512-z3IzaNjdwUC2olLIB5/ITd0/setiaFMLYiZJle7xg5Fe9KWAceil7xszYfHHBtDFYLSgJduS2Ty0P1uJdPDJeA== + version "1.4.5" + resolved "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.5.tgz#3e572d4b7c0c80f9c61daf604e4336831b5d1d49" + integrity sha512-f13bPUj/gG/5mDr+xLmSxxDsB9DQiTIfhJS/sqjrmfAWiAN+x2O4i/XguTL9yDZ+/IFDanJ+5x7hC4CXT9Tdzw== dependencies: - cookie "0.4.1" + cookie "0.4.0" cookie-signature "1.0.6" cookie-signature@1.0.6: @@ -8800,16 +9527,16 @@ cookie-signature@1.0.6: resolved "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= -cookie@0.4.1: +cookie@0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" + integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== + +cookie@0.4.1, cookie@^0.4.1, cookie@~0.4.1: version "0.4.1" resolved "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz#afd713fe26ebd21ba95ceb61f9a8116e50a537d1" integrity sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA== -cookie@0.4.2, cookie@^0.4.1, cookie@~0.4.1: - version "0.4.2" - resolved "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" - integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== - cookiejar@^2.1.3: version "2.1.3" resolved "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.3.tgz#fc7a6216e408e74414b90230050842dacda75acc" @@ -8827,39 +9554,44 @@ copy-to-clipboard@^3, copy-to-clipboard@^3.2.0, copy-to-clipboard@^3.3.1: dependencies: toggle-selection "^1.0.6" -core-js-compat@^3.20.2, core-js-compat@^3.21.0: - version "3.21.1" - resolved "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.21.1.tgz#cac369f67c8d134ff8f9bd1623e3bc2c42068c82" - integrity sha512-gbgX5AUvMb8gwxC7FLVWYT7Kkgu/y7+h/h1X43yJkNqhlK2fuYyQimqvKGNZFAY6CKii/GFKJ2cp/1/42TN36g== +core-js-compat@^3.20.0, core-js-compat@^3.20.2: + version "3.20.3" + resolved "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.20.3.tgz#d71f85f94eb5e4bea3407412e549daa083d23bd6" + integrity sha512-c8M5h0IkNZ+I92QhIpuSijOxGAcj3lgpsWdkCqmUTZNwidujF4r3pi6x1DCN+Vcs5qTS2XWWMfWSuCqyupX8gw== dependencies: browserslist "^4.19.1" semver "7.0.0" -core-js-pure@^3.20.2, core-js-pure@^3.6.5: - 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== +core-js-pure@^3.20.2: + version "3.20.2" + resolved "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.20.2.tgz#5d263565f0e34ceeeccdc4422fae3e84ca6b8c0f" + integrity sha512-CmWHvSKn2vNL6p6StNp1EmMIfVY/pqn3JLAjfZQ8WZGPOlGoO92EkX9/Mk81i6GxvoPXjUqEQnpM3rJ5QxxIOg== + +core-js-pure@^3.6.5: + version "3.16.2" + resolved "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.16.2.tgz#0ef4b79cabafb251ea86eb7d139b42bd98c533e8" + integrity sha512-oxKe64UH049mJqrKkynWp6Vu0Rlm/BTXO/bJZuN2mmR3RtOFNepLlSWDd1eo16PzHpQAoNG97rLU1V/YxesJjw== core-js@^2.4.0, core-js@^2.5.0, core-js@^2.6.10: version "2.6.12" resolved "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== -core-js@^3.6.5: +core-js@^3.4.1: version "3.21.1" resolved "https://registry.npmjs.org/core-js/-/core-js-3.21.1.tgz#f2e0ddc1fc43da6f904706e8e955bc19d06a0d94" integrity sha512-FRq5b/VMrWlrmCzwRrpDYNxyHP9BcAZC+xHJaqTgIE5091ZV1NTmyh0sGOg5XqpnHvR0svdy0sv1gWA1zmhxig== -core-util-is@1.0.2: +core-js@^3.6.5: + version "3.20.3" + resolved "https://registry.npmjs.org/core-js/-/core-js-3.20.3.tgz#c710d0a676e684522f3db4ee84e5e18a9d11d69a" + integrity sha512-vVl8j8ph6tRS3B8qir40H7yw7voy17xL0piAjlbBUsH7WIfzoedL/ZOr1OV9FyZQLWXsayOJyV4tnRyXR85/ag== + +core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= -core-util-is@~1.0.0: - version "1.0.3" - resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" - integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== - cors@^2.8.5: version "2.8.5" resolved "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" @@ -8916,30 +9648,30 @@ cpu-features@0.0.2: nan "^2.14.1" crc-32@^1.2.0: - version "1.2.1" - resolved "https://registry.npmjs.org/crc-32/-/crc-32-1.2.1.tgz#436d2bcaad27bcb6bd073a2587139d3024a16460" - integrity sha512-Dn/xm/1vFFgs3nfrpEVScHoIslO9NZRITWGz/1E/St6u4xw99vfZzVkW0OSnzx2h9egej9xwMCEut6sqwokM/w== + version "1.2.0" + resolved "https://registry.npmjs.org/crc-32/-/crc-32-1.2.0.tgz#cb2db6e29b88508e32d9dd0ec1693e7b41a18208" + integrity sha512-1uBwHxF+Y/4yF5G48fwnKq6QsIXheor3ZLPT80yGBV1oEUwpPojlEhQbWKVw1VwcTQyMGHK1/XMmTjmlsmTTGA== dependencies: exit-on-epipe "~1.0.1" - printj "~1.3.1" + printj "~1.1.0" -crc32-stream@^4.0.2: - version "4.0.2" - resolved "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.2.tgz#c922ad22b38395abe9d3870f02fa8134ed709007" - integrity sha512-DxFZ/Hk473b/muq1VJ///PMNLj0ZMnzye9thBpmjpJKCc5eMgB95aK8zCGrGfQ90cWo561Te6HK9D+j4KPdM6w== +crc32-stream@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.1.tgz#0f047d74041737f8a55e86837a1b826bd8ab0067" + integrity sha512-FN5V+weeO/8JaXsamelVYO1PHyeCsuL3HcG4cqsj0ceARcocxalaShCsohZMSAF+db7UYFwBy1rARK/0oFItUw== dependencies: crc-32 "^1.2.0" readable-stream "^3.4.0" create-ecdh@^4.0.0: - version "4.0.4" - resolved "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" - integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== + version "4.0.3" + resolved "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" + integrity sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw== dependencies: bn.js "^4.1.0" - elliptic "^6.5.3" + elliptic "^6.0.0" -create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: +create-hash@^1.1.0, create-hash@^1.1.2: version "1.2.0" resolved "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== @@ -8950,7 +9682,7 @@ create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: ripemd160 "^2.0.1" sha.js "^2.4.0" -create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: +create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: version "1.1.7" resolved "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== @@ -8986,7 +9718,7 @@ cross-fetch@3.1.4: dependencies: node-fetch "2.6.1" -cross-fetch@3.1.5, cross-fetch@^3.0.6, cross-fetch@^3.1.3, cross-fetch@^3.1.5: +cross-fetch@^3.0.4, cross-fetch@^3.0.6, cross-fetch@^3.1.3, cross-fetch@^3.1.4, cross-fetch@^3.1.5: version "3.1.5" resolved "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz#e1389f44d9e7ba767907f7af8454787952ab534f" integrity sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw== @@ -9022,17 +9754,36 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3: shebang-command "^2.0.0" which "^2.0.1" -cross-undici-fetch@^0.1.19: - version "0.1.24" - resolved "https://registry.npmjs.org/cross-undici-fetch/-/cross-undici-fetch-0.1.24.tgz#2ad23d096ba07cfa1260b1aeb9a78d2132ea3385" - integrity sha512-83KDV6+8pYCn51zSM2cFAwqQ5UQtDaPm89RkUwHxEMDq/cdqYgqo1q+2eM/Xhmd8HeAsGTtecsC4crrQkCn0zg== +cross-undici-fetch@^0.0.20: + version "0.0.20" + resolved "https://registry.npmjs.org/cross-undici-fetch/-/cross-undici-fetch-0.0.20.tgz#6b7c5ac82a3601edd439f37275ac0319d77a120a" + integrity sha512-5d3WBC4VRHpFndECK9bx4TngXrw0OUXdhX561Ty1ZoqMASz9uf55BblhTC1CO6GhMWnvk9SOqYEXQliq6D2P4A== + dependencies: + abort-controller "^3.0.0" + form-data "^4.0.0" + node-fetch "^2.6.5" + undici "^4.9.3" + +cross-undici-fetch@^0.0.26: + version "0.0.26" + resolved "https://registry.npmjs.org/cross-undici-fetch/-/cross-undici-fetch-0.0.26.tgz#29d93d56609f4d2334f9d5333d23ef7a242842a7" + integrity sha512-aMDRrLbWr0TGXfY92stlV+XOGpskeqFmWmrKSWsnc8w6gK5LPE83NBh7O7N6gCb2xjwHcm1Yn2nBXMEVH2RBcA== + dependencies: + abort-controller "^3.0.0" + form-data "^4.0.0" + node-fetch "^2.6.5" + undici "^4.9.3" + +cross-undici-fetch@^0.1.4: + version "0.1.13" + resolved "https://registry.npmjs.org/cross-undici-fetch/-/cross-undici-fetch-0.1.13.tgz#807d17ce5c524c21bc0a6486e97ecccb901c6529" + integrity sha512-nF+g932BrKPoK0RZQKRA9S2IKXeveGPJlaUWXyUEGjjSpAdxBhEHDrMDbiksP2iSNe8O5vn1bN3tTvrd6+yFSg== dependencies: abort-controller "^3.0.0" form-data-encoder "^1.7.1" formdata-node "^4.3.1" - node-fetch "^2.6.7" + node-fetch "^2.6.5" undici "^4.9.3" - web-streams-polyfill "^3.2.0" crypto-browserify@^3.11.0: version "3.12.0" @@ -9073,9 +9824,9 @@ css-color-converter@^2.0.0: css-unit-converter "^1.1.2" css-declaration-sorter@^6.0.3: - version "6.1.4" - resolved "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.1.4.tgz#b9bfb4ed9a41f8dcca9bf7184d849ea94a8294b4" - integrity sha512-lpfkqS0fctcmZotJGhnxkIyJWvBXgpyi2wsFd4J8VB7wzyrT6Ch/3Q+FMNJpjK4gu1+GN5khOnpU2ZVKrLbhCw== + version "6.1.3" + resolved "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.1.3.tgz#e9852e4cf940ba79f509d9425b137d1f94438dc2" + integrity sha512-SvjQjNRZgh4ULK1LDJ2AduPKUKxIqmtU7ZAyi47BTV+M90Qvxr9AB6lKlLbDUfXqI9IQeYA8LbAsCZPpJEV3aA== dependencies: timsort "^0.3.0" @@ -9102,17 +9853,25 @@ css-loader@^6.5.1: semver "^7.3.5" css-select@^4.1.3: - version "4.2.1" - resolved "https://registry.npmjs.org/css-select/-/css-select-4.2.1.tgz#9e665d6ae4c7f9d65dbe69d0316e3221fb274cdd" - integrity sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ== + version "4.1.3" + resolved "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz#a70440f70317f2669118ad74ff105e65849c7067" + integrity sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA== dependencies: boolbase "^1.0.0" - css-what "^5.1.0" - domhandler "^4.3.0" - domutils "^2.8.0" - nth-check "^2.0.1" + css-what "^5.0.0" + domhandler "^4.2.0" + domutils "^2.6.0" + nth-check "^2.0.0" -css-tree@^1.1.2, css-tree@^1.1.3: +css-tree@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/css-tree/-/css-tree-1.1.2.tgz#9ae393b5dafd7dae8a622475caec78d3d8fbd7b5" + integrity sha512-wCoWush5Aeo48GLhfHPbmvZs59Z+M7k5+B1xDnXbdWNcEF423DoFdqSWE0PM5aNk5nI5cp1q7ms36zGApY/sKQ== + dependencies: + mdn-data "2.0.14" + source-map "^0.6.1" + +css-tree@^1.1.3: version "1.1.3" resolved "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== @@ -9133,7 +9892,7 @@ css-vendor@^2.0.8: "@babel/runtime" "^7.8.3" is-in-browser "^1.0.2" -css-what@^5.1.0: +css-what@^5.0.0: version "5.1.0" resolved "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz#3f7b707aadf633baf62c2ceb8579b545bb40f7fe" integrity sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw== @@ -9162,52 +9921,53 @@ cssfilter@0.0.10: resolved "https://registry.npmjs.org/cssfilter/-/cssfilter-0.0.10.tgz#c6d2672632a2e5c83e013e6864a42ce8defd20ae" integrity sha1-xtJnJjKi5cg+AT5oZKQs6N79IK4= -cssnano-preset-default@^5.1.12: - version "5.1.12" - resolved "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.1.12.tgz#64e2ad8e27a279e1413d2d2383ef89a41c909be9" - integrity sha512-rO/JZYyjW1QNkWBxMGV28DW7d98UDLaF759frhli58QFehZ+D/LSmwQ2z/ylBAe2hUlsIWTq6NYGfQPq65EF9w== +cssnano-preset-default@^5.1.7: + version "5.1.7" + resolved "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.1.7.tgz#68c3ad1ec6a810482ec7d06b2d70fc34b6b0d70c" + integrity sha512-bWDjtTY+BOqrqBtsSQIbN0RLGD2Yr2CnecpP0ydHNafh9ZUEre8c8VYTaH9FEbyOt0eIfEUAYYk5zj92ioO8LA== dependencies: css-declaration-sorter "^6.0.3" - cssnano-utils "^3.0.2" - postcss-calc "^8.2.0" - postcss-colormin "^5.2.5" - postcss-convert-values "^5.0.4" - postcss-discard-comments "^5.0.3" - postcss-discard-duplicates "^5.0.3" - postcss-discard-empty "^5.0.3" - postcss-discard-overridden "^5.0.4" - postcss-merge-longhand "^5.0.6" - postcss-merge-rules "^5.0.6" - postcss-minify-font-values "^5.0.4" - postcss-minify-gradients "^5.0.6" - postcss-minify-params "^5.0.5" - postcss-minify-selectors "^5.1.3" - postcss-normalize-charset "^5.0.3" - postcss-normalize-display-values "^5.0.3" - postcss-normalize-positions "^5.0.4" - postcss-normalize-repeat-style "^5.0.4" - postcss-normalize-string "^5.0.4" - postcss-normalize-timing-functions "^5.0.3" - postcss-normalize-unicode "^5.0.4" - postcss-normalize-url "^5.0.5" - postcss-normalize-whitespace "^5.0.4" - postcss-ordered-values "^5.0.5" - postcss-reduce-initial "^5.0.3" - postcss-reduce-transforms "^5.0.4" - postcss-svgo "^5.0.4" - postcss-unique-selectors "^5.0.4" + cssnano-utils "^2.0.1" + postcss-calc "^8.0.0" + postcss-colormin "^5.2.1" + postcss-convert-values "^5.0.2" + postcss-discard-comments "^5.0.1" + postcss-discard-duplicates "^5.0.1" + postcss-discard-empty "^5.0.1" + postcss-discard-overridden "^5.0.1" + postcss-merge-longhand "^5.0.4" + postcss-merge-rules "^5.0.3" + postcss-minify-font-values "^5.0.1" + postcss-minify-gradients "^5.0.3" + postcss-minify-params "^5.0.2" + postcss-minify-selectors "^5.1.0" + postcss-normalize-charset "^5.0.1" + postcss-normalize-display-values "^5.0.1" + postcss-normalize-positions "^5.0.1" + postcss-normalize-repeat-style "^5.0.1" + postcss-normalize-string "^5.0.1" + postcss-normalize-timing-functions "^5.0.1" + postcss-normalize-unicode "^5.0.1" + postcss-normalize-url "^5.0.3" + postcss-normalize-whitespace "^5.0.1" + postcss-ordered-values "^5.0.2" + postcss-reduce-initial "^5.0.1" + postcss-reduce-transforms "^5.0.1" + postcss-svgo "^5.0.3" + postcss-unique-selectors "^5.0.2" -cssnano-utils@^3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.0.2.tgz#d82b4991a27ba6fec644b39bab35fe027137f516" - integrity sha512-KhprijuQv2sP4kT92sSQwhlK3SJTbDIsxcfIEySB0O+3m9esFOai7dP9bMx5enHAh2MwarVIcnwiWoOm01RIbQ== +cssnano-utils@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-2.0.1.tgz#8660aa2b37ed869d2e2f22918196a9a8b6498ce2" + integrity sha512-i8vLRZTnEH9ubIyfdZCAdIdgnHAUeQeByEeQ2I7oTilvP9oHO6RScpeq3GsFUVqeB8uZgOQ9pw8utofNn32hhQ== cssnano@^5.0.1: - version "5.0.17" - resolved "https://registry.npmjs.org/cssnano/-/cssnano-5.0.17.tgz#ff45713c05cfc780a1aeb3e663b6f224d091cabf" - integrity sha512-fmjLP7k8kL18xSspeXTzRhaFtRI7DL9b8IcXR80JgtnWBpvAzHT7sCR/6qdn0tnxIaINUN6OEQu83wF57Gs3Xw== + version "5.0.11" + resolved "https://registry.npmjs.org/cssnano/-/cssnano-5.0.11.tgz#743397a05e04cb87e9df44b7659850adfafc3646" + integrity sha512-5SHM31NAAe29jvy0MJqK40zZ/8dGlnlzcfHKw00bWMVFp8LWqtuyPSFwbaoIoxvt71KWJOfg8HMRGrBR3PExCg== dependencies: - cssnano-preset-default "^5.1.12" + cssnano-preset-default "^5.1.7" + is-resolvable "^1.1.0" lilconfig "^2.0.3" yaml "^1.10.2" @@ -9228,53 +9988,75 @@ cssom@~0.3.6: resolved "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== -cssstyle@^2.3.0: +cssstyle@^2.2.0, cssstyle@^2.3.0: version "2.3.0" resolved "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== dependencies: cssom "~0.3.6" -csstype@^2.5.2: - version "2.6.19" - resolved "https://registry.npmjs.org/csstype/-/csstype-2.6.19.tgz#feeb5aae89020bb389e1f63669a5ed490e391caa" - integrity sha512-ZVxXaNy28/k3kJg0Fou5MiYpp88j7H9hLZp8PDC3jV0WFjfH5E9xHb56L0W59cPbKbcHXeP4qyT8PrHp8t6LcQ== +csstype@^2.5.2, csstype@^2.6.7: + version "2.6.17" + resolved "https://registry.npmjs.org/csstype/-/csstype-2.6.17.tgz#4cf30eb87e1d1a005d8b6510f95292413f6a1c0e" + integrity sha512-u1wmTI1jJGzCJzWndZo8mk4wnPTZd1eOIYTYvuEyOQGfmDl3TrabCCfKnOC86FZwW/9djqTl933UF/cS425i9A== csstype@^3.0.2, csstype@^3.0.6: - version "3.0.10" - resolved "https://registry.npmjs.org/csstype/-/csstype-3.0.10.tgz#2ad3a7bed70f35b965707c092e5f30b327c290e5" - integrity sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA== + version "3.0.7" + resolved "https://registry.npmjs.org/csstype/-/csstype-3.0.7.tgz#2a5fb75e1015e84dd15692f71e89a1450290950b" + integrity sha512-KxnUB0ZMlnUWCsx2Z8MUsr6qV6ja1w9ArPErJaJaF8a5SOWoHLIszeCTKGRGRgtLgYrs1E8CHkNSP1VZTTPc9g== -csv-generate@^3.4.3: - version "3.4.3" - resolved "https://registry.npmjs.org/csv-generate/-/csv-generate-3.4.3.tgz#bc42d943b45aea52afa896874291da4b9108ffff" - integrity sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw== +csv-generate@^3.2.4: + version "3.2.4" + resolved "https://registry.npmjs.org/csv-generate/-/csv-generate-3.2.4.tgz#440dab9177339ee0676c9e5c16f50e2b3463c019" + integrity sha512-qNM9eqlxd53TWJeGtY1IQPj90b563Zx49eZs8e0uMyEvPgvNVmX1uZDtdzAcflB3PniuH9creAzcFOdyJ9YGvA== -csv-parse@^4.16.3: - version "4.16.3" - resolved "https://registry.npmjs.org/csv-parse/-/csv-parse-4.16.3.tgz#7ca624d517212ebc520a36873c3478fa66efbaf7" - integrity sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg== +csv-parse@^4.8.8: + version "4.12.0" + resolved "https://registry.npmjs.org/csv-parse/-/csv-parse-4.12.0.tgz#fd42d6291bbaadd51d3009f6cadbb3e53b4ce026" + integrity sha512-wPQl3H79vWLPI8cgKFcQXl0NBgYYEqVnT1i6/So7OjMpsI540oD7p93r3w6fDSyPvwkTepG05F69/7AViX2lXg== -csv-stringify@^5.6.5: - version "5.6.5" - resolved "https://registry.npmjs.org/csv-stringify/-/csv-stringify-5.6.5.tgz#c6d74badda4b49a79bf4e72f91cce1e33b94de00" - integrity sha512-PjiQ659aQ+fUTQqSrd1XEDnOr52jh30RBurfzkscaE2tPaFsDH5wOAHJiw8XAHphRknCwMUE9KRayc4K/NbO8A== +csv-stringify@^5.3.6: + version "5.5.1" + resolved "https://registry.npmjs.org/csv-stringify/-/csv-stringify-5.5.1.tgz#f42cdd379b0f7f142933a11f674b1a91ebd0fcd0" + integrity sha512-HM0/86Ks8OwFbaYLd495tqTs1NhscZL52dC4ieKYumy8+nawQYC0xZ63w1NqLf0M148T2YLYqowoImc1giPn0g== csv@^5.3.1: - version "5.5.3" - resolved "https://registry.npmjs.org/csv/-/csv-5.5.3.tgz#cd26c1e45eae00ce6a9b7b27dcb94955ec95207d" - integrity sha512-QTaY0XjjhTQOdguARF0lGKm5/mEq9PD9/VhZZegHDIBq2tQwgNpHc3dneD4mGo2iJs+fTKv5Bp0fZ+BRuY3Z0g== + version "5.3.2" + resolved "https://registry.npmjs.org/csv/-/csv-5.3.2.tgz#50b344e25dfbb8c62684a1bcec18c22468b2161e" + integrity sha512-odDyucr9OgJTdGM2wrMbJXbOkJx3nnUX3Pt8SFOwlAMOpsUQlz1dywvLMXJWX/4Ib0rjfOsaawuuwfI5ucqBGQ== dependencies: - csv-generate "^3.4.3" - csv-parse "^4.16.3" - csv-stringify "^5.6.5" - stream-transform "^2.1.3" + csv-generate "^3.2.4" + csv-parse "^4.8.8" + csv-stringify "^5.3.6" + stream-transform "^2.0.1" + +cypress-plugin-snapshots@^1.4.4: + version "1.4.4" + resolved "https://registry.npmjs.org/cypress-plugin-snapshots/-/cypress-plugin-snapshots-1.4.4.tgz#3a57f9763da1ab6df34950b8ad01803820885310" + integrity sha512-rijq3RTEZNtxQA4KCUwjXinmE1Ww+z6cQW0B14iodFM/HlX5LN16XT/2QS3X1nUXRKt0QdTrAC5MQfMUrjBkSQ== + dependencies: + diff2html "^2.7.0" + fs-extra "^7.0.1" + image-size "^0.7.2" + jimp "^0.10.3" + js-base64 "^2.5.1" + lodash "^4.17.13" + pixelmatch "^4.0.2" + pngjs "^3.3.3" + prettier "^1.16.4" + rimraf "^2.6.3" + sanitize-filename "^1.6.1" + socket.io "^2.2.0" + socket.io-client "^2.2.0" + source-map-support "^0.5.10" + unidiff "1.0.2" cypress@^7.3.0: - version "7.7.0" - resolved "https://registry.npmjs.org/cypress/-/cypress-7.7.0.tgz#0839ae28e5520536f9667d6c9ae81496b3836e64" - integrity sha512-uYBYXNoI5ym0UxROwhQXWTi8JbUEjpC6l/bzoGZNxoKGsLrC1SDPgIDJMgLX/MeEdPL0UInXLDUWN/rSyZUCjQ== + version "7.3.0" + resolved "https://registry.npmjs.org/cypress/-/cypress-7.3.0.tgz#17345b8d18681c120f033e7d8fd0f0271e9d0d51" + integrity sha512-aseRCH1tRVCrM6oEfja6fR/bo5l6e4SkHRRSATh27UeN4f/ANC8U7tGIulmrISJVy9xuOkOdbYKbUb2MNM+nrw== dependencies: + "@cypress/listr-verbose-renderer" "^0.4.1" "@cypress/request" "^2.88.5" "@cypress/xvfb" "^1.2.4" "@types/node" "^14.14.31" @@ -9286,24 +10068,21 @@ cypress@^7.3.0: cachedir "^2.3.0" chalk "^4.1.0" check-more-types "^2.24.0" - cli-cursor "^3.1.0" cli-table3 "~0.6.0" commander "^5.1.0" common-tags "^1.8.0" dayjs "^1.10.4" - debug "^4.3.2" - enquirer "^2.3.6" + debug "4.3.2" eventemitter2 "^6.4.3" execa "4.1.0" executable "^4.1.1" - extract-zip "2.0.1" - figures "^3.2.0" + extract-zip "^1.7.0" fs-extra "^9.1.0" getos "^3.2.1" is-ci "^3.0.0" is-installed-globally "~0.4.0" lazy-ass "^1.6.0" - listr2 "^3.8.3" + listr "^0.14.3" lodash "^4.17.21" log-symbols "^4.0.0" minimist "^1.2.5" @@ -9539,6 +10318,14 @@ d3-zoom@^3.0.0: d3-selection "2 - 3" d3-transition "2 - 3" +d@1, d@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" + integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== + dependencies: + es5-ext "^0.10.50" + type "^1.0.1" + dagre@^0.8.5: version "0.8.5" resolved "https://registry.npmjs.org/dagre/-/dagre-0.8.5.tgz#ba30b0055dac12b6c1fcc247817442777d06afee" @@ -9548,9 +10335,9 @@ dagre@^0.8.5: lodash "^4.17.15" damerau-levenshtein@^1.0.7: - version "1.0.8" - resolved "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7" - integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA== + version "1.0.7" + resolved "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.7.tgz#64368003512a1a6992593741a09a9d31a836f55d" + integrity sha512-VvdQIPGdWP0SqFXghj79Wf/5LArmreyMsGLa6FG6iC4t3j7j5s71TrwWmT/4akbDQIqjfACkLZmjXhA7g2oUZw== dargs@^7.0.0: version "7.0.0" @@ -9578,10 +10365,10 @@ dataloader@2.0.0, dataloader@^2.0.0: resolved "https://registry.npmjs.org/dataloader/-/dataloader-2.0.0.tgz#41eaf123db115987e21ca93c005cd7753c55fe6f" integrity sha512-YzhyDAwA4TaQIhM5go+vCLmU0UikghC/t9DTQYZR2M/UvZ1MdOhPezSDZcjj9uqQJOMqjLcpWtyW2iNINdlatQ== -date-and-time@^2.0.0: - version "2.1.2" - resolved "https://registry.npmjs.org/date-and-time/-/date-and-time-2.1.2.tgz#5b0e71296bbdd66ff1ce0e456c77d40f1479db5a" - integrity sha512-YlQUtuqYGPR58I7jzx4TIjknN9wCKjwewiylIp+P4xMuO23mlZje3Qe9gYCKp/6ncbeNpU8ZnPdhQNZnVphveQ== +date-and-time@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/date-and-time/-/date-and-time-1.0.0.tgz#0062394bdf6f44e961f0db00511cb19cdf3cc0a5" + integrity sha512-477D7ypIiqlXBkxhU7YtG9wWZJEQ+RUpujt2quTfgf4+E8g5fNUkB0QIL0bVyP5/TKBg8y55Hfa1R/c4bt3dEw== date-fns@^1.27.2: version "1.30.1" @@ -9589,9 +10376,9 @@ date-fns@^1.27.2: integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw== date-fns@^2.16.1, date-fns@^2.18.0: - version "2.28.0" - resolved "https://registry.npmjs.org/date-fns/-/date-fns-2.28.0.tgz#9570d656f5fc13143e50c975a3b6bbeb46cd08b2" - integrity sha512-8d35hViGYx/QH0icHYCeLmsLmMUheMmTyV9Fcm6gvNwdw31yXXH+O85sOBJ+OLnLQMKZowvpKb6FgMIQjcpvQw== + version "2.19.0" + resolved "https://registry.npmjs.org/date-fns/-/date-fns-2.19.0.tgz#65193348635a28d5d916c43ec7ce6fbd145059e1" + integrity sha512-X3bf2iTPgCAQp9wvjOQytnf5vO5rESYRXlPIVcgSbtT5OTScPcsf9eZU+B/YIkKAtYr5WeCii58BgATrNitlWg== dateformat@^3.0.0, dateformat@^3.0.3: version "3.0.3" @@ -9599,19 +10386,19 @@ dateformat@^3.0.0, dateformat@^3.0.3: integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== dateformat@^4.5.0: - version "4.6.3" - resolved "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz#556fa6497e5217fedb78821424f8a1c22fa3f4b5" - integrity sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA== + version "4.5.1" + resolved "https://registry.npmjs.org/dateformat/-/dateformat-4.5.1.tgz#c20e7a9ca77d147906b6dc2261a8be0a5bd2173c" + integrity sha512-OD0TZ+B7yP7ZgpJf5K2DIbj3FZvFvxgFUuaqA/V5zTjAtAAXZ1E8bktHxmAGs4x5b7PflqA9LeQ84Og7wYtF7Q== dayjs@^1.10.4: - version "1.10.7" - resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.10.7.tgz#2cf5f91add28116748440866a0a1d26f3a6ce468" - integrity sha512-P6twpd70BcPK34K26uJ1KT3wlhpuOAPoMwJzpsIWUxHZ7wpmbdZL/hQqBDfz7hGurYSa5PhzdhDHtt319hL3ig== + version "1.10.4" + resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.10.4.tgz#8e544a9b8683f61783f570980a8a80eaf54ab1e2" + integrity sha512-RI/Hh4kqRc1UKLOAf/T5zdMMX5DQIlDxwUe3wSyMMnEbGunnpENCdbUgM+dW7kXidZqCttBrmw7BhN4TMddkCw== debounce@^1.2.0: - version "1.2.1" - resolved "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz#38881d8f4166a5c5848020c11827b834bcb3e0a5" - integrity sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug== + version "1.2.0" + resolved "https://registry.npmjs.org/debounce/-/debounce-1.2.0.tgz#44a540abc0ea9943018dc0eaa95cce87f65cd131" + integrity sha512-mYtLl1xfZLi1m4RtQYlZgJUNQjl4ZxVnHzIR8nLLgi4q1YT8o/WM+MK/f8yfcc9s5Ir5zRaPZyZU6xs1Syoocg== debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.9: version "2.6.9" @@ -9641,6 +10428,20 @@ debug@^3.1.0, debug@^3.1.1, debug@^3.2.7: dependencies: ms "^2.1.1" +debug@~3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== + dependencies: + ms "2.0.0" + +debug@~4.1.0: + version "4.1.1" + resolved "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" + integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== + dependencies: + ms "^2.1.1" + debuglog@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" @@ -9660,9 +10461,14 @@ decamelize@^1.1.0, decamelize@^1.1.1, decamelize@^1.2.0: integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= decimal.js-light@^2.4.1: - version "2.5.1" - resolved "https://registry.npmjs.org/decimal.js-light/-/decimal.js-light-2.5.1.tgz#134fd32508f19e208f4fb2f8dac0d2626a867934" - integrity sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg== + version "2.5.0" + resolved "https://registry.npmjs.org/decimal.js-light/-/decimal.js-light-2.5.0.tgz#ca7faf504c799326df94b0ab920424fdfc125348" + integrity sha512-b3VJCbd2hwUpeRGG3Toob+CRo8W22xplipNhP3tN7TSVB/cyMX71P1vM2Xjc9H74uV6dS2hDDmo/rHq8L87Upg== + +decimal.js@^10.2.0: + version "10.2.0" + resolved "https://registry.npmjs.org/decimal.js/-/decimal.js-10.2.0.tgz#39466113a9e036111d02f82489b5fd6b0b5ed231" + integrity sha512-vDPw+rDgn3bZe1+F/pyEwb1oMG2XTlRVgAa6B4KccTEpYgF8w6eQllVbQcfIJnZyvzFtFpxnpGtx8dd7DJp/Rw== decimal.js@^10.2.1: version "10.3.1" @@ -9719,17 +10525,17 @@ deep-equal@^1.0.1: object-keys "^1.1.1" regexp.prototype.flags "^1.2.0" -deep-extend@0.6.0, deep-extend@^0.6.0: +deep-extend@0.6.0, deep-extend@^0.6.0, deep-extend@~0.6.0: version "0.6.0" resolved "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== deep-is@^0.1.3, deep-is@~0.1.3: - version "0.1.4" - resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" - integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + version "0.1.3" + resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= -deepmerge@^4.2.2, deepmerge@~4.2.2: +deepmerge@^4.2.2: version "4.2.2" resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== @@ -9754,9 +10560,9 @@ defer-to-connect@^1.0.1: integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== defer-to-connect@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" - integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== + version "2.0.0" + resolved "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.0.tgz#83d6b199db041593ac84d781b5222308ccf4c2c1" + integrity sha512-bYL2d05vOSf1JEZNx5vSAtPuBMkX8K9EUutg7zlKvTqKXHt7RhWJFbmd7qakVuf13i+IkGmp6FwSsONOf6VYIg== define-lazy-prop@^2.0.0: version "2.0.0" @@ -9870,9 +10676,9 @@ detect-indent@^5.0.0: integrity sha1-OHHMCmoALow+Wzz38zYmRnXwa50= detect-indent@^6.0.0: - version "6.1.0" - resolved "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz#592485ebbbf6b3b1ab2be175c8393d04ca0d57e6" - integrity sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA== + version "6.0.0" + resolved "https://registry.npmjs.org/detect-indent/-/detect-indent-6.0.0.tgz#0abd0f549f69fc6659a254fe96786186b6f528fd" + integrity sha512-oSyFlqaTHCItVRGK5RmrmjB+CmaMOW7IaNA/kdxqhoa6d17j/5ce9O9eWXmV/KEdRwqpQA+Vqe8a8Bsybu4YnA== detect-libc@^1.0.3: version "1.0.3" @@ -9885,9 +10691,9 @@ detect-newline@^3.0.0: integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== detect-node@^2.0.4: - version "2.1.0" - resolved "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" - integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== + version "2.0.4" + resolved "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" + integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw== detect-port-alt@^1.1.6: version "1.1.6" @@ -9897,10 +10703,10 @@ detect-port-alt@^1.1.6: address "^1.0.1" debug "^2.6.0" -devtools-protocol@0.0.960912: - version "0.0.960912" - resolved "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.960912.tgz#411c1fa355eddb72f06c4a8743f2808766db6245" - integrity sha512-I3hWmV9rWHbdnUdmMKHF2NuYutIM2kXz2mdXW8ha7TbRlGTVs+PF+PsB5QWvpCek4Fy9B+msiispCfwlhG5Sqg== +devtools-protocol@0.0.948846: + version "0.0.948846" + resolved "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.948846.tgz#bff47e2d1dba060130fa40ed2e5f78b916ba285f" + integrity sha512-5fGyt9xmMqUl2VI7+rnUkKCiAQIpLns8sfQtTENy5L70ktbNw0Z3TFJ1JoFNYdx/jffz4YXU45VF75wKZD7sZQ== dezalgo@1.0.3, dezalgo@^1.0.0: version "1.0.3" @@ -9915,16 +10721,26 @@ diff-sequences@^26.6.2: resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz#48ba99157de1923412eed41db6b6d4aa9ca7c0b1" integrity sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q== -diff-sequences@^27.5.1: - version "27.5.1" - resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz#eaecc0d327fd68c8d9672a1e64ab8dccb2ef5327" - integrity sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ== +diff2html@^2.7.0: + version "2.12.2" + resolved "https://registry.npmjs.org/diff2html/-/diff2html-2.12.2.tgz#356d35f9c87c42ebd11558bedf1c99c5b00886e8" + integrity sha512-G/Zn1KyG/OeC+67N/P26WHsQpjrjUiRyWGvg29ypy3MxSsBmF0bzsU/Irq70i2UAg+f/MzmLx4v/Nkt01TOU3g== + dependencies: + diff "^4.0.1" + hogan.js "^3.0.2" + merge "^1.2.1" + whatwg-fetch "^3.0.0" diff3@0.0.3: version "0.0.3" resolved "https://registry.npmjs.org/diff3/-/diff3-0.0.3.tgz#d4e5c3a4cdf4e5fe1211ab42e693fcb4321580fc" integrity sha1-1OXDpM305f4SEatC5pP8tDIVgPw= +diff@^2.2.2: + version "2.2.3" + resolved "https://registry.npmjs.org/diff/-/diff-2.2.3.tgz#60eafd0d28ee906e4e8ff0a52c1229521033bf99" + integrity sha1-YOr9DSjukG5Oj/ClLBIpUhAzv5k= + diff@^4.0.1: version "4.0.2" resolved "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" @@ -9979,9 +10795,9 @@ dns-txt@^2.0.2: buffer-indexof "^1.0.0" docker-compose@^0.23.13: - version "0.23.17" - resolved "https://registry.npmjs.org/docker-compose/-/docker-compose-0.23.17.tgz#8816bef82562d9417dc8c790aa4871350f93a2ba" - integrity sha512-YJV18YoYIcxOdJKeFcCFihE6F4M2NExWM/d4S1ITcS9samHKnNUihz9kjggr0dNtsrbpFNc7/Yzd19DWs+m1xg== + version "0.23.13" + resolved "https://registry.npmjs.org/docker-compose/-/docker-compose-0.23.13.tgz#77d37bd05b6a966345f631e6d05e961c79514f06" + integrity sha512-/9fYC4g3AO+qsqxIZhmbVnFvJJPcYEV2yJbAPPXH+6AytU3urIY8lUAXOlvY8sl4u25pdKu1JrOfAmWC7lJDJg== dependencies: yaml "^1.10.2" @@ -10017,10 +10833,15 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" -dom-accessibility-api@^0.5.6, dom-accessibility-api@^0.5.9: - version "0.5.11" - resolved "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.11.tgz#79d5846c4f90eba3e617d9031e921de9324f84ed" - integrity sha512-7X6GvzjYf4yTdRKuCVScV+aA9Fvh5r8WzWrXBH9w82ZWB/eYDMGCnazoC/YAqAzUJWHzLOnZqr46K3iEyUhUvw== +dom-accessibility-api@^0.5.4, dom-accessibility-api@^0.5.6: + version "0.5.6" + resolved "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.6.tgz#3f5d43b52c7a3bd68b5fb63fa47b4e4c1fdf65a9" + integrity sha512-DplGLZd8L1lN64jlT27N9TVSESFR5STaEJvX+thCby7fuCHonfPpAlodYc3vuUYbDuDec5w8AMP7oCM5TWFsqw== + +dom-accessibility-api@^0.5.9: + version "0.5.10" + resolved "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.10.tgz#caa6d08f60388d0bb4539dd75fe458a9a1d0014c" + integrity sha512-Xu9mD0UjrJisTmv7lmVSDMagQcU9R5hwAbxsaAE/35XPnPLJobbuREfV/rraiSaEj/UOvgrzQs66zyTWTlyd+g== dom-converter@^0.2.0: version "0.2.0" @@ -10037,33 +10858,38 @@ dom-helpers@^3.4.0: "@babel/runtime" "^7.1.2" dom-helpers@^5.0.1: - version "5.2.1" - resolved "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz#d9400536b2bf8225ad98fe052e029451ac40e902" - integrity sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA== + version "5.1.4" + resolved "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.1.4.tgz#4609680ab5c79a45f2531441f1949b79d6587f4b" + integrity sha512-TjMyeVUvNEnOnhzs6uAn9Ya47GmMo3qq7m+Lr/3ON0Rs5kHvb8I+SQYjLUSYn7qhEm0QjW0yrBkvz9yOrwwz1A== dependencies: "@babel/runtime" "^7.8.7" - csstype "^3.0.2" + csstype "^2.6.7" dom-serializer@^1.0.1: - version "1.3.2" - resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz#6206437d32ceefaec7161803230c7a20bc1b4d91" - integrity sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig== + version "1.2.0" + resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.2.0.tgz#3433d9136aeb3c627981daa385fc7f32d27c48f1" + integrity sha512-n6kZFH/KlCrqs/1GHMOd5i2fd/beQHuehKdWvNNffbGHTr/almdhuVvTVFb3V7fglz+nC50fFusu3lY33h12pA== dependencies: domelementtype "^2.0.1" - domhandler "^4.2.0" + domhandler "^4.0.0" entities "^2.0.0" dom-walk@^0.1.0: - version "0.1.2" - resolved "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84" - integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w== + version "0.1.1" + resolved "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.1.tgz#672226dc74c8f799ad35307df936aba11acd6018" + integrity sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg= domain-browser@^1.1.1: version "1.2.0" resolved "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== -domelementtype@^2.0.1, domelementtype@^2.2.0: +domelementtype@^2.0.1, domelementtype@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-2.1.0.tgz#a851c080a6d1c3d94344aed151d99f669edf585e" + integrity sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w== + +domelementtype@^2.2.0: version "2.2.0" resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57" integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A== @@ -10075,10 +10901,17 @@ domexception@^2.0.1: dependencies: webidl-conversions "^5.0.0" -domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.0: - version "4.3.0" - resolved "https://registry.npmjs.org/domhandler/-/domhandler-4.3.0.tgz#16c658c626cf966967e306f966b431f77d4a5626" - integrity sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g== +domhandler@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/domhandler/-/domhandler-4.0.0.tgz#01ea7821de996d85f69029e81fa873c21833098e" + integrity sha512-KPTbnGQ1JeEMQyO1iYXoagsI6so/C96HZiFyByU3T6iAzpXn8EGEvct6unm1ZGoed8ByO2oirxgwxBmqKF9haA== + dependencies: + domelementtype "^2.1.0" + +domhandler@^4.2.0: + version "4.2.2" + resolved "https://registry.npmjs.org/domhandler/-/domhandler-4.2.2.tgz#e825d721d19a86b8c201a35264e226c678ee755f" + integrity sha512-PzE9aBMsdZO8TK4BnuJwH0QT41wgMbRzuZrHUcpYncEjmQazq8QEaBWgLG7ZyC/DAZKEgglpIA6j4Qn/HmxS3w== dependencies: domelementtype "^2.2.0" @@ -10092,7 +10925,7 @@ dompurify@^2.2.7, dompurify@^2.2.9: resolved "https://registry.npmjs.org/dompurify/-/dompurify-2.3.6.tgz#2e019d7d7617aacac07cbbe3d88ae3ad354cf875" integrity sha512-OFP2u/3T1R5CEgWCEONuJ1a5+MFKnOYpkywpUSxv/dj1LeBT1erK+JwM7zK0ROy2BRhqVCf0LRw/kHqKuMkVGg== -domutils@^2.5.2, domutils@^2.8.0: +domutils@^2.5.2, domutils@^2.6.0: version "2.8.0" resolved "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== @@ -10129,9 +10962,9 @@ dotenv@^10.0.0: integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== dset@^3.1.0: - version "3.1.1" - resolved "https://registry.npmjs.org/dset/-/dset-3.1.1.tgz#07de5af7a8d03eab337ad1a8ba77fe17bba61a8c" - integrity sha512-hYf+jZNNqJBD2GiMYb+5mqOIX4R4RRHXU3qWMWYN+rqcR2/YpRL2bUHr8C8fU+5DNvqYjJ8YvMGSLuVPWU1cNg== + version "3.1.0" + resolved "https://registry.npmjs.org/dset/-/dset-3.1.0.tgz#23feb6df93816ea452566308b1374d6e869b0d7b" + integrity sha512-7xTQ5DzyE59Nn+7ZgXDXjKAGSGmXZHqttMVVz1r4QNfmGpyj+cm2YtI3II0c/+4zS4a9yq2mBhgdeq2QnpcYlw== duplexer2@~0.1.4: version "0.1.4" @@ -10145,15 +10978,20 @@ duplexer3@^0.1.4: resolved "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= -duplexer@^0.1.1, duplexer@^0.1.2, duplexer@~0.1.1: +duplexer@^0.1.1, duplexer@~0.1.1: + version "0.1.1" + resolved "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" + integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E= + +duplexer@^0.1.2: version "0.1.2" resolved "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== duplexify@^4.0.0, duplexify@^4.1.1: - version "4.1.2" - resolved "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz#18b4f8d28289132fa0b9573c898d9f903f81c7b0" - integrity sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw== + version "4.1.1" + resolved "https://registry.npmjs.org/duplexify/-/duplexify-4.1.1.tgz#7027dc374f157b122a8ae08c2d3ea4d2d953aa61" + integrity sha512-DY3xVEmVHTv1wSzKNbwoU6nVjzI369Y6sPoqfYr0/xlx3IdX2n94xIszTcjPO8W8ZIv0Wb0PXNcjuZyT4wiICA== dependencies: end-of-stream "^1.4.1" inherits "^2.0.3" @@ -10208,16 +11046,16 @@ elastic-builder@^2.16.0: lodash.omit "^4.5.0" electron-to-chromium@^1.4.17: - version "1.4.71" - resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.71.tgz#17056914465da0890ce00351a3b946fd4cd51ff6" - integrity sha512-Hk61vXXKRb2cd3znPE9F+2pLWdIOmP7GjiTj45y6L3W/lO+hSnUSUhq+6lEaERWBdZOHbk2s3YV5c9xVl3boVw== + version "1.4.35" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.35.tgz#69aabb73d7030733e71c1e970ec16f5ceefbaea4" + integrity sha512-wzTOMh6HGFWeALMI3bif0mzgRrVGyP1BdFRx7IvWukFrSC5QVQELENuy+Fm2dCrAdQH9T3nuqr07n94nPDFBWA== elegant-spinner@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e" integrity sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4= -elliptic@^6.5.3: +elliptic@^6.0.0: version "6.5.4" resolved "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== @@ -10231,9 +11069,14 @@ elliptic@^6.5.3: minimalistic-crypto-utils "^1.0.1" emittery@^0.7.1: - version "0.7.2" - resolved "https://registry.npmjs.org/emittery/-/emittery-0.7.2.tgz#25595908e13af0f5674ab419396e2fb394cdfa82" - integrity sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ== + version "0.7.1" + resolved "https://registry.npmjs.org/emittery/-/emittery-0.7.1.tgz#c02375a927a40948c0345cc903072597f5270451" + integrity sha512-d34LN4L6h18Bzz9xpoku2nPwKxCPlPMr3EEKTkoEBi+1/+b0lcRkRJ1UVyyZaKNeqGR3swcGl6s390DNO4YVgQ== + +emoji-regex@^7.0.1: + version "7.0.3" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" + integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== emoji-regex@^8.0.0: version "8.0.0" @@ -10274,15 +11117,55 @@ end-of-stream@^1.1.0, end-of-stream@^1.4.1: dependencies: once "^1.4.0" -enhanced-resolve@^5.9.0: - version "5.9.0" - resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.0.tgz#49ac24953ac8452ed8fed2ef1340fc8e043667ee" - integrity sha512-weDYmzbBygL7HzGGS26M3hGQx68vehdEg6VUmqSOaFzXExFqlnKuSvsEJCVGQHScS8CQMbrAqftT+AzzHNt/YA== +engine.io-client@~3.5.0: + version "3.5.2" + resolved "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.5.2.tgz#0ef473621294004e9ceebe73cef0af9e36f2f5fa" + integrity sha512-QEqIp+gJ/kMHeUun7f5Vv3bteRHppHH/FMBQX/esFj/fuYfjyUKWGMo3VCvIP/V8bE9KcjHmRZrhIz2Z9oNsDA== + dependencies: + component-emitter "~1.3.0" + component-inherit "0.0.3" + debug "~3.1.0" + engine.io-parser "~2.2.0" + has-cors "1.1.0" + indexof "0.0.1" + parseqs "0.0.6" + parseuri "0.0.6" + ws "~7.4.2" + xmlhttprequest-ssl "~1.6.2" + yeast "0.1.2" + +engine.io-parser@~2.2.0: + version "2.2.1" + resolved "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.2.1.tgz#57ce5611d9370ee94f99641b589f94c97e4f5da7" + integrity sha512-x+dN/fBH8Ro8TFwJ+rkB2AmuVw9Yu2mockR/p3W8f8YtExwFgDvBDi0GWyb4ZLkpahtDGZgtr3zLovanJghPqg== + dependencies: + after "0.8.2" + arraybuffer.slice "~0.0.7" + base64-arraybuffer "0.1.4" + blob "0.0.5" + has-binary2 "~1.0.2" + +engine.io@~3.5.0: + version "3.5.0" + resolved "https://registry.npmjs.org/engine.io/-/engine.io-3.5.0.tgz#9d6b985c8a39b1fe87cd91eb014de0552259821b" + integrity sha512-21HlvPUKaitDGE4GXNtQ7PLP0Sz4aWLddMPw2VTyFz1FVZqu/kZsJUO8WNpKuE/OCL7nkfRaOui2ZCJloGznGA== + dependencies: + accepts "~1.3.4" + base64id "2.0.0" + cookie "~0.4.1" + debug "~4.1.0" + engine.io-parser "~2.2.0" + ws "~7.4.2" + +enhanced-resolve@^5.8.3: + version "5.8.3" + resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz#6d552d465cce0423f5b3d718511ea53826a7b2f0" + integrity sha512-EGAbGvH7j7Xt2nc0E7D99La1OiEs8LnyimkRgwExpUMScN6O+3x9tIWs7PLQZVNx4YD+00skHXPXi1yQHpAmZA== dependencies: graceful-fs "^4.2.4" tapable "^2.2.0" -enquirer@^2.3.0, enquirer@^2.3.6: +enquirer@^2.3.0: version "2.3.6" resolved "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== @@ -10294,30 +11177,25 @@ ent@^2.2.0: resolved "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d" integrity sha1-6WQhkyWiHQX0RGai9obtbOX13R0= -entities@^2.0.0: - version "2.2.0" - resolved "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" - integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== +entities@^2.0.0, entities@~2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5" + integrity sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w== entities@^3.0.1: version "3.0.1" resolved "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz#2b887ca62585e96db3903482d336c1006c3001d4" integrity sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q== -entities@~2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5" - integrity sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w== - env-paths@^2.2.0: - version "2.2.1" - resolved "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" - integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== + version "2.2.0" + resolved "https://registry.npmjs.org/env-paths/-/env-paths-2.2.0.tgz#cdca557dc009152917d6166e2febe1f039685e43" + integrity sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA== envinfo@^7.7.4: - version "7.8.1" - resolved "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" - integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== + version "7.7.4" + resolved "https://registry.npmjs.org/envinfo/-/envinfo-7.7.4.tgz#c6311cdd38a0e86808c1c9343f667e4267c4a320" + integrity sha512-TQXTYFVVwwluWSFis6K2XKxgrD22jEv0FTuLCQI+OjH7rn93+iY0fSSFM5lrSxFY+H1+B0/cvvlamr3UsBivdQ== eol@^0.9.1: version "0.9.1" @@ -10337,9 +11215,9 @@ error-ex@^1.2.0, error-ex@^1.3.1: is-arrayish "^0.2.1" error-stack-parser@^2.0.6: - version "2.0.7" - resolved "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.7.tgz#b0c6e2ce27d0495cf78ad98715e0cad1219abb57" - integrity sha512-chLOW0ZGRf4s8raLrDxa5sdkvPec5YdvwbFnqJme4rk0rFajP8mPtrDL1+I+CwrQDCjswDA5sREX7jYQDQs9vA== + version "2.0.6" + resolved "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.6.tgz#5a99a707bd7a4c58a797902d48d82803ede6aad8" + integrity sha512-d51brTeqC+BHlwF0BhPtcYgF5nlzf9ZZ0ZIUQNZpc9ZB9qw5IJ2diTrBY9jlCJkTLITYPjmiX6OWCwH+fuyNgQ== dependencies: stackframe "^1.1.1" @@ -10348,7 +11226,29 @@ error@^10.4.0: resolved "https://registry.npmjs.org/error/-/error-10.4.0.tgz#6fcf0fd64bceb1e750f8ed9a3dd880f00e46a487" integrity sha512-YxIFEJuhgcICugOUvRx5th0UM+ActZ9sjY0QJmeVwsQdvosZ7kYzc9QqS0Da3R5iUmgU5meGIxh0xBeZpMVeLw== -es-abstract@^1.18.5, es-abstract@^1.19.0, es-abstract@^1.19.1: +es-abstract@^1.17.0-next.1, es-abstract@^1.18.0-next.1, es-abstract@^1.18.0-next.2: + version "1.18.0" + resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz#ab80b359eecb7ede4c298000390bc5ac3ec7b5a4" + integrity sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw== + dependencies: + call-bind "^1.0.2" + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + get-intrinsic "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.2" + is-callable "^1.2.3" + is-negative-zero "^2.0.1" + is-regex "^1.1.2" + is-string "^1.0.5" + object-inspect "^1.9.0" + object-keys "^1.1.1" + object.assign "^4.1.2" + string.prototype.trimend "^1.0.4" + string.prototype.trimstart "^1.0.4" + unbox-primitive "^1.0.0" + +es-abstract@^1.19.0, es-abstract@^1.19.1: version "1.19.1" resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz#d4885796876916959de78edaa0df456627115ec3" integrity sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w== @@ -10374,7 +11274,7 @@ es-abstract@^1.18.5, es-abstract@^1.19.0, es-abstract@^1.19.1: string.prototype.trimstart "^1.0.4" unbox-primitive "^1.0.1" -es-module-lexer@^0.9.0, es-module-lexer@^0.9.3: +es-module-lexer@^0.9.0: version "0.9.3" resolved "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19" integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ== @@ -10388,6 +11288,42 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" +es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@^0.10.53, es5-ext@~0.10.14, es5-ext@~0.10.2, es5-ext@~0.10.46: + version "0.10.53" + resolved "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1" + integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q== + dependencies: + es6-iterator "~2.0.3" + es6-symbol "~3.1.3" + next-tick "~1.0.0" + +es6-iterator@^2.0.3, es6-iterator@~2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" + integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= + dependencies: + d "1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" + +es6-symbol@^3.1.1, es6-symbol@~3.1.3: + version "3.1.3" + resolved "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" + integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== + dependencies: + d "^1.0.1" + ext "^1.1.2" + +es6-weak-map@^2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz#b6da1f16cc2cc0d9be43e6bdbfc5e7dfcdf31d53" + integrity sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA== + dependencies: + d "1" + es5-ext "^0.10.46" + es6-iterator "^2.0.3" + es6-symbol "^3.1.1" + esbuild-android-arm64@0.14.22: version "0.14.22" resolved "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.22.tgz#fb051169a63307d958aec85ad596cfc7d7770303" @@ -10555,6 +11491,18 @@ escape-string-regexp@^5.0.0: resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz#4683126b500b61762f2dbebace1806e8be31b1c8" integrity sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw== +escodegen@^1.14.1: + version "1.14.3" + resolved "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" + integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== + dependencies: + esprima "^4.0.1" + estraverse "^4.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + escodegen@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" @@ -10591,10 +11539,19 @@ eslint-import-resolver-node@^0.3.6: debug "^3.2.7" resolve "^1.20.0" -eslint-module-utils@^2.1.1, eslint-module-utils@^2.7.2: - version "2.7.3" - resolved "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz#ad7e3a10552fdd0642e1e55292781bd6e34876ee" - integrity sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ== +eslint-module-utils@^2.1.1: + version "2.7.1" + resolved "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.1.tgz#b435001c9f8dd4ab7f6d0efcae4b9696d4c24b7c" + integrity sha512-fjoetBXQZq2tSTWZ9yWVl2KuFrTZZH3V+9iD1V1RfpDgxzJR+mPd/KZmMiA8gbPqdBzpNiEHOuT7IYEWxrH0zQ== + dependencies: + debug "^3.2.7" + find-up "^2.1.0" + pkg-dir "^2.0.0" + +eslint-module-utils@^2.7.2: + version "2.7.2" + resolved "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.2.tgz#1d0aa455dcf41052339b63cada8ab5fd57577129" + integrity sha512-zquepFnWCY2ISMFwD/DqzaM++H+7PDzOpUvotJWm/y1BAFt5R4oeULgdrTejKqLkz7MA/tgstsUMNYc7wNdTrg== dependencies: debug "^3.2.7" find-up "^2.1.0" @@ -10636,9 +11593,9 @@ eslint-plugin-import@^2.25.4: tsconfig-paths "^3.12.0" eslint-plugin-jest@^25.3.4: - version "25.7.0" - resolved "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-25.7.0.tgz#ff4ac97520b53a96187bad9c9814e7d00de09a6a" - integrity sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ== + version "25.3.4" + resolved "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-25.3.4.tgz#2031dfe495be1463330f8b80096ddc91f8e6387f" + integrity sha512-CCnwG71wvabmwq/qkz0HWIqBHQxw6pXB1uqt24dxqJ9WB34pVg49bL1sjXphlJHgTMWGhBjN1PicdyxDxrfP5A== dependencies: "@typescript-eslint/experimental-utils" "^5.0.0" @@ -10715,10 +11672,10 @@ eslint-scope@5.1.1, eslint-scope@^5.1.1: esrecurse "^4.3.0" estraverse "^4.1.1" -eslint-scope@^7.1.1: - version "7.1.1" - resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642" - integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== +eslint-scope@^7.1.0: + version "7.1.0" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.0.tgz#c1f6ea30ac583031f203d65c73e723b01298f153" + integrity sha512-aWwkhnS0qAXqNOgKOK0dJ2nvzEbhEvpy8OlJ9kZ0FeZnA6zpjv1/Vei+puGFFX7zkPCkHHXb7IDX3A+7yPrRWg== dependencies: esrecurse "^4.3.0" estraverse "^5.2.0" @@ -10731,14 +11688,14 @@ eslint-utils@^3.0.0: eslint-visitor-keys "^2.0.0" eslint-visitor-keys@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" - integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== + version "2.0.0" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8" + integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ== -eslint-visitor-keys@^3.0.0, eslint-visitor-keys@^3.3.0: - version "3.3.0" - resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" - integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== +eslint-visitor-keys@^3.0.0, eslint-visitor-keys@^3.1.0, eslint-visitor-keys@^3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.2.0.tgz#6fbb166a6798ee5991358bc2daa1ba76cc1254a1" + integrity sha512-IOzT0X126zn7ALX0dwFiUQEdsfzrm4+ISsQS8nukaJXwEyYKRSnEIIDULYg1mCtGp7UUXgfGl7BIolXREQK+XQ== eslint-webpack-plugin@^2.6.0: version "2.6.0" @@ -10753,11 +11710,11 @@ eslint-webpack-plugin@^2.6.0: schema-utils "^3.1.1" eslint@^8.6.0: - version "8.9.0" - resolved "https://registry.npmjs.org/eslint/-/eslint-8.9.0.tgz#a2a8227a99599adc4342fd9b854cb8d8d6412fdb" - integrity sha512-PB09IGwv4F4b0/atrbcMFboF/giawbBLVC7fyDamk5Wtey4Jh2K+rYaBhCAbUyEI4QzB1ly09Uglc9iCtFaG2Q== + version "8.7.0" + resolved "https://registry.npmjs.org/eslint/-/eslint-8.7.0.tgz#22e036842ee5b7cf87b03fe237731675b4d3633c" + integrity sha512-ifHYzkBGrzS2iDU7KjhCAVMGCvF6M3Xfs8X8b37cgrUlDt6bWRTpRh6T/gtSXv1HJ/BUGgmjvNvOEGu85Iif7w== dependencies: - "@eslint/eslintrc" "^1.1.0" + "@eslint/eslintrc" "^1.0.5" "@humanwhocodes/config-array" "^0.9.2" ajv "^6.10.0" chalk "^4.0.0" @@ -10765,10 +11722,10 @@ eslint@^8.6.0: debug "^4.3.2" doctrine "^3.0.0" escape-string-regexp "^4.0.0" - eslint-scope "^7.1.1" + eslint-scope "^7.1.0" eslint-utils "^3.0.0" - eslint-visitor-keys "^3.3.0" - espree "^9.3.1" + eslint-visitor-keys "^3.2.0" + espree "^9.3.0" esquery "^1.4.0" esutils "^2.0.2" fast-deep-equal "^3.1.3" @@ -10798,14 +11755,14 @@ esm@^3.2.25: resolved "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz#342c18c29d56157688ba5ce31f8431fbb795cc10" integrity sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA== -espree@^9.3.1: - version "9.3.1" - resolved "https://registry.npmjs.org/espree/-/espree-9.3.1.tgz#8793b4bc27ea4c778c19908e0719e7b8f4115bcd" - integrity sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ== +espree@^9.2.0, espree@^9.3.0: + version "9.3.0" + resolved "https://registry.npmjs.org/espree/-/espree-9.3.0.tgz#c1240d79183b72aaee6ccfa5a90bc9111df085a8" + integrity sha512-d/5nCsb0JcqsSEeQzFZ8DH1RmxPcglRWh24EFTlUEmCKoehXGdpsx0RkHDubqUI8LSAIKMQp4r9SzQ3n+sm4HQ== dependencies: acorn "^8.7.0" acorn-jsx "^5.3.1" - eslint-visitor-keys "^3.3.0" + eslint-visitor-keys "^3.1.0" esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0: version "4.0.1" @@ -10826,7 +11783,7 @@ esrecurse@^4.3.0: dependencies: estraverse "^5.2.0" -estraverse@^4.1.1: +estraverse@^4.1.1, estraverse@^4.2.0: version "4.3.0" resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== @@ -10847,9 +11804,9 @@ estree-walker@^1.0.1: integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== estree-walker@^2.0.1: - version "2.0.2" - resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" - integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== + version "2.0.1" + resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.1.tgz#f8e030fb21cefa183b44b7ad516b747434e7a3e0" + integrity sha512-tF0hv+Yi2Ot1cwj9eYHtxC0jB9bmjacjQs6ZBTj82H8JwUywFuc+7E83NWfNMwHXZc11mjfFcVXPe9gEP4B8dg== esutils@^2.0.2: version "2.0.3" @@ -10861,6 +11818,14 @@ etag@~1.8.1: resolved "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= +event-emitter@^0.3.5: + version "0.3.5" + resolved "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" + integrity sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk= + dependencies: + d "1" + es5-ext "~0.10.14" + event-source-polyfill@^1.0.25: version "1.0.25" resolved "https://registry.npmjs.org/event-source-polyfill/-/event-source-polyfill-1.0.25.tgz#d8bb7f99cb6f8119c2baf086d9f6ee0514b6d9c8" @@ -10884,7 +11849,12 @@ event-target-shim@^5.0.0: resolved "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== -eventemitter2@^6.4.3, eventemitter2@^6.4.4: +eventemitter2@^6.4.3: + version "6.4.4" + resolved "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.4.tgz#aa96e8275c4dbeb017a5d0e03780c65612a1202b" + integrity sha512-HLU3NDY6wARrLCEwyGKRBvuWYyvW6mHYv72SJJAH3iJN3a6eVUvkjFkcxah1bcTgGVBBrFdIopBJPhCQFMLyXw== + +eventemitter2@^6.4.4: version "6.4.5" resolved "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.5.tgz#97380f758ae24ac15df8353e0cc27f8b95644655" integrity sha512-bXE7Dyc1i6oQElDG0jMRZJrRAn9QR2xyyFGmBdZleNmyQX0FqGYmhZIrIrpPfm/w//LTo4tVQGOGQcGCb5q9uw== @@ -10987,9 +11957,9 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: zen-observable "^0.8.15" exec-sh@^0.3.2: - version "0.3.6" - resolved "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.6.tgz#ff264f9e325519a60cb5e273692943483cca63bc" - integrity sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w== + version "0.3.4" + resolved "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.4.tgz#3a018ceb526cc6f6df2bb504b2bfe8e3a4934ec5" + integrity sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A== execa@4.1.0, execa@^4.0.0: version "4.1.0" @@ -11056,6 +12026,16 @@ executable@^4.1.1: dependencies: pify "^2.2.0" +exif-parser@^0.1.12: + version "0.1.12" + resolved "https://registry.npmjs.org/exif-parser/-/exif-parser-0.1.12.tgz#58a9d2d72c02c1f6f02a0ef4a9166272b7760922" + integrity sha1-WKnS1ywCwfbwKg70qRZicrd2CSI= + +exit-hook@^1.0.0: + version "1.1.1" + resolved "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" + integrity sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g= + exit-on-epipe@~1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz#0bdd92e87d5285d267daa8171d0eb06159689692" @@ -11130,16 +12110,16 @@ express-xml-bodyparser@^0.3.0: xml2js "^0.4.11" express@^4.17.1: - version "4.17.3" - resolved "https://registry.npmjs.org/express/-/express-4.17.3.tgz#f6c7302194a4fb54271b73a1fe7a06478c8f85a1" - integrity sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg== + version "4.17.2" + resolved "https://registry.npmjs.org/express/-/express-4.17.2.tgz#c18369f265297319beed4e5558753cc8c1364cb3" + integrity sha512-oxlxJxcQlYwqPWKVJJtvQiwHgosH/LrLSPA+H4UxpyvSS6jC5aH+5MoHFM+KABgTOt0APue4w66Ha8jCUo9QGg== dependencies: - accepts "~1.3.8" + accepts "~1.3.7" array-flatten "1.1.1" - body-parser "1.19.2" + body-parser "1.19.1" content-disposition "0.5.4" content-type "~1.0.4" - cookie "0.4.2" + cookie "0.4.1" cookie-signature "1.0.6" debug "2.6.9" depd "~1.1.2" @@ -11154,7 +12134,7 @@ express@^4.17.1: parseurl "~1.3.3" path-to-regexp "0.1.7" proxy-addr "~2.0.7" - qs "6.9.7" + qs "6.9.6" range-parser "~1.2.1" safe-buffer "5.2.1" send "0.17.2" @@ -11165,6 +12145,13 @@ express@^4.17.1: utils-merge "1.0.1" vary "~1.1.2" +ext@^1.1.2: + version "1.4.0" + resolved "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz#89ae7a07158f79d35517882904324077e4379244" + integrity sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A== + dependencies: + type "^2.0.0" + extend-shallow@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" @@ -11213,16 +12200,16 @@ extglob@^2.0.4: snapdragon "^0.8.1" to-regex "^3.0.1" +extract-files@11.0.0, extract-files@^11.0.0: + version "11.0.0" + resolved "https://registry.npmjs.org/extract-files/-/extract-files-11.0.0.tgz#b72d428712f787eef1f5193aff8ab5351ca8469a" + integrity sha512-FuoE1qtbJ4bBVvv94CC7s0oTnKUGvQs+Rjf1L2SJFfS+HTVVjhPFtehPdQ0JiGPqVNfSSZvL5yzHHQq2Z4WNhQ== + extract-files@9.0.0, extract-files@^9.0.0: version "9.0.0" resolved "https://registry.npmjs.org/extract-files/-/extract-files-9.0.0.tgz#8a7744f2437f81f5ed3250ed9f1550de902fe54a" integrity sha512-CvdFfHkC95B4bBBk36hcEmvdR2awOdhhVUYH6S/zrVj3477zven/fJMYg7121h4T1xHZC+tetUpubpAhxwI7hQ== -extract-files@^11.0.0: - version "11.0.0" - resolved "https://registry.npmjs.org/extract-files/-/extract-files-11.0.0.tgz#b72d428712f787eef1f5193aff8ab5351ca8469a" - integrity sha512-FuoE1qtbJ4bBVvv94CC7s0oTnKUGvQs+Rjf1L2SJFfS+HTVVjhPFtehPdQ0JiGPqVNfSSZvL5yzHHQq2Z4WNhQ== - extract-zip@2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a" @@ -11234,15 +12221,25 @@ extract-zip@2.0.1: optionalDependencies: "@types/yauzl" "^2.9.1" +extract-zip@^1.7.0: + version "1.7.0" + resolved "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz#556cc3ae9df7f452c493a0cfb51cc30277940927" + integrity sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA== + dependencies: + concat-stream "^1.6.2" + debug "^2.6.9" + mkdirp "^0.5.4" + yauzl "^2.10.0" + extsprintf@1.3.0: version "1.3.0" resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= extsprintf@^1.2.0: - version "1.4.1" - resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" - integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== + version "1.4.0" + resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" + integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= fast-decode-uri-component@^1.0.1: version "1.0.1" @@ -11259,16 +12256,17 @@ fast-equals@^2.0.0: resolved "https://registry.npmjs.org/fast-equals/-/fast-equals-2.0.4.tgz#3add9410585e2d7364c2deeb6a707beadb24b927" integrity sha512-caj/ZmjHljPrZtbzJ3kfH5ia/k4mTJe/qSiXAGzxZWRZgsgDV0cvNaQULqUX8t0/JVlzzEdYOwCN5DmzTxoD4w== -fast-glob@^3.1.1, fast-glob@^3.2.9: - version "3.2.11" - resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" - integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== +fast-glob@^3.1.1: + version "3.2.2" + resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.2.tgz#ade1a9d91148965d4bf7c51f72e1ca662d32e63d" + integrity sha512-UDV82o4uQyljznxwMxyVRJgZZt3O5wENYojjzbaGEGZgeOxkLFf+V4cnUD+krzb2F72E18RhamkMZ7AdeggF7A== dependencies: "@nodelib/fs.stat" "^2.0.2" "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.2" + glob-parent "^5.1.0" merge2 "^1.3.0" - micromatch "^4.0.4" + micromatch "^4.0.2" + picomatch "^2.2.1" fast-json-parse@^1.0.3: version "1.0.3" @@ -11276,9 +12274,9 @@ fast-json-parse@^1.0.3: integrity sha512-FRWsaZRWEJ1ESVNbDWmsAlqDk96gPQezzLghafp5J4GUKjbCz3OkAHuZs5TuPEtkbVQERysLp9xv6c24fBm8Aw== fast-json-patch@^3.0.0-1: - version "3.1.0" - resolved "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-3.1.0.tgz#ec8cd9b9c4c564250ec8b9140ef7a55f70acaee6" - integrity sha512-IhpytlsVTRndz0hU5t0/MGzS/etxLlfrpG5V5M9mVbuj9TrJLWaMfsox9REM5rkuGX0T+5qjpe8XA1o0gZ42nA== + version "3.0.0-1" + resolved "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-3.0.0-1.tgz#4c68f2e7acfbab6d29d1719c44be51899c93dabb" + integrity sha512-6pdFb07cknxvPzCeLsFHStEy+MysPJPgZQ9LbQ/2O67unQF93SNqfdSqnPPl71YMHX+AD8gbl7iuoGFzHEdDuw== fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: version "2.1.0" @@ -11295,7 +12293,12 @@ fast-redact@^2.0.0: resolved "https://registry.npmjs.org/fast-redact/-/fast-redact-2.1.0.tgz#dfe3c1ca69367fb226f110aa4ec10ec85462ffdf" integrity sha512-0LkHpTLyadJavq9sRzzyqIoMZemWli77K2/MGOkafrR64B9ItrvZ9aT+jluvNDsv0YEHjSNhlMBtbokuoqii4A== -fast-safe-stringify@^2.0.6, fast-safe-stringify@^2.0.7, fast-safe-stringify@^2.1.1: +fast-safe-stringify@^2.0.6, fast-safe-stringify@^2.0.7: + version "2.0.8" + resolved "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.8.tgz#dc2af48c46cf712b683e849b2bbd446b32de936f" + integrity sha512-lXatBjf3WPjmWD6DpIZxkeSsCOwqI0maYMpgDlx8g4U2qi4lbjA9oH/HD2a87G+KfsUmo5WbJFmqBZlPxtptag== + +fast-safe-stringify@^2.1.1: version "2.1.1" resolved "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== @@ -11323,9 +12326,9 @@ fastest-stable-stringify@^2.0.2: integrity sha512-bijHueCGd0LqqNK9b5oCMHc0MluJAx0cwqASgbWMvkO01lCYgIhacVRLcaDz3QnyYIRNJRDwMb41VuT6pHJ91Q== fastq@^1.6.0: - version "1.13.0" - resolved "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" - integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== + version "1.6.1" + resolved "https://registry.npmjs.org/fastq/-/fastq-1.6.1.tgz#4570c74f2ded173e71cf0beb08ac70bb85826791" + integrity sha512-mpIH5sKYueh3YyeJwqtVo8sORi0CgtmkVbK6kZStpQlZBYQuTzG2CZ7idSiJuA7bY0SFCWUc5WIs+oYumGCQNw== dependencies: reusify "^1.0.4" @@ -11337,9 +12340,9 @@ fault@^1.0.0: format "^0.2.0" faye-websocket@^0.11.3: - version "0.11.4" - resolved "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" - integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== + version "0.11.3" + resolved "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e" + integrity sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA== dependencies: websocket-driver ">=0.5.1" @@ -11356,17 +12359,17 @@ fbjs-css-vars@^1.0.0: integrity sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ== fbjs@^3.0.0: - version "3.0.4" - resolved "https://registry.npmjs.org/fbjs/-/fbjs-3.0.4.tgz#e1871c6bd3083bac71ff2da868ad5067d37716c6" - integrity sha512-ucV0tDODnGV3JCnnkmoszb5lf4bNpzjv80K41wd4k798Etq+UYD0y0TIfalLjZoKgjive6/adkRnszwapiDgBQ== + version "3.0.0" + resolved "https://registry.npmjs.org/fbjs/-/fbjs-3.0.0.tgz#0907067fb3f57a78f45d95f1eacffcacd623c165" + integrity sha512-dJd4PiDOFuhe7vk4F80Mba83Vr2QuK86FoxtgPmzBqEJahncp+13YCmfoa53KHCo6OnlXLG7eeMWPfB5CrpVKg== dependencies: - cross-fetch "^3.1.5" + cross-fetch "^3.0.4" fbjs-css-vars "^1.0.0" loose-envify "^1.0.0" object-assign "^4.1.0" promise "^7.1.1" setimmediate "^1.0.5" - ua-parser-js "^0.7.30" + ua-parser-js "^0.7.18" fd-slicer@~1.1.0: version "1.1.0" @@ -11376,9 +12379,9 @@ fd-slicer@~1.1.0: pend "~1.2.0" fecha@^4.2.0: - version "4.2.1" - resolved "https://registry.npmjs.org/fecha/-/fecha-4.2.1.tgz#0a83ad8f86ef62a091e22bb5a039cd03d23eecce" - integrity sha512-MMMQ0ludy/nBs1/o0zVOiKTpG7qMbonKUzjJgQFEuvq6INZ1OraKPRAWkBq5vlKLOUMpmNYG1JoN3oDPUQ9m3Q== + version "4.2.0" + resolved "https://registry.npmjs.org/fecha/-/fecha-4.2.0.tgz#3ffb6395453e3f3efff850404f0a59b6747f5f41" + integrity sha512-aN3pcx/DSmtyoovUudctc8+6Hl4T+hI9GBBHLjA76jdZl7+b1sgh5g4k+u/GL3dTy1/pnYzKp69FpJ0OicE3Wg== figures@^1.7.0: version "1.7.0" @@ -11395,7 +12398,7 @@ figures@^2.0.0: dependencies: escape-string-regexp "^1.0.5" -figures@^3.0.0, figures@^3.2.0: +figures@^3.0.0: version "3.2.0" resolved "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== @@ -11418,6 +12421,11 @@ file-type@16.5.3: strtok3 "^6.2.4" token-types "^4.1.1" +file-type@^9.0.0: + version "9.0.0" + resolved "https://registry.npmjs.org/file-type/-/file-type-9.0.0.tgz#a68d5ad07f486414dfb2c8866f73161946714a18" + integrity sha512-Qe/5NJrgIOlwijpq3B7BEpzPFcgzggOTagZmkXQY4LA6bsXKTUstK7Wp12lEJ/mLKTpvIZxmIuRcLYWT6ov9lw== + filelist@^1.0.1: version "1.0.2" resolved "https://registry.npmjs.org/filelist/-/filelist-1.0.2.tgz#80202f21462d4d1c2e214119b1807c1bc0380e5b" @@ -11426,9 +12434,9 @@ filelist@^1.0.1: minimatch "^3.0.4" filesize@^8.0.6: - version "8.0.7" - resolved "https://registry.npmjs.org/filesize/-/filesize-8.0.7.tgz#695e70d80f4e47012c132d57a059e80c6b580bd8" - integrity sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ== + version "8.0.6" + resolved "https://registry.npmjs.org/filesize/-/filesize-8.0.6.tgz#5f0c27aa1b507fa7d9f72c912a774ca6a44111b1" + integrity sha512-sHvRqTiwdmcuzqet7iVwsbwF6UrV3wIgDf2SHNdY1Hgl8PC45HZg/0xtdw6U2izIV4lccnrY9ftl6wZFNdjYMg== fill-range@^4.0.0: version "4.0.0" @@ -11565,14 +12573,14 @@ flatstr@^1.0.12: integrity sha512-4zPxDyhCyiN2wIAtSLI6gc82/EjqZc1onI4Mz/l0pWrAlsSfYH/2ZIcU+e3oA2wDwbzIWNKwa23F8rh6+DRWkw== flatted@^3.1.0: - version "3.2.5" - resolved "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz#76c8584f4fc843db64702a6bd04ab7a8bd666da3" - integrity sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg== + version "3.1.1" + resolved "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz#c4b489e80096d9df1dfc97c79871aea7c617c469" + integrity sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA== flow-parser@0.*: - version "0.172.0" - resolved "https://registry.npmjs.org/flow-parser/-/flow-parser-0.172.0.tgz#9f5ee62ebf6bad689d5de0b6b98445d8cf030a2f" - integrity sha512-WWqgvuJgD9Y1n2su9D73m0g5kQ4XVl8Dwk6DeW5V6bjt4XMtVLzSHg35s3iiZOvShY+7w7l8FzlK81PGXRcIYQ== + version "0.152.0" + resolved "https://registry.npmjs.org/flow-parser/-/flow-parser-0.152.0.tgz#a627aec1fdcfa243e2016469e44284a98169b996" + integrity sha512-qRXGE3ztuhyI2ovi4Ixwq7/GUYvKX9wmFdwBof2q5pWHteuveexFrlbwZxSonC0dWz2znA6sW+vce4RXgYLnnQ== fn.name@1.x.x: version "1.1.0" @@ -11619,9 +12627,9 @@ fork-ts-checker-webpack-plugin@^6.5.0: tapable "^1.0.0" fork-ts-checker-webpack-plugin@^7.0.0-alpha.8: - version "7.2.1" - resolved "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-7.2.1.tgz#c37a538e12730fe11fd725bcf0fce29487950833" - integrity sha512-uOfQdg/iQ8iokQ64qcbu8iZb114rOmaKLQFu7hU14/eJaKgsP91cQ7ts7v2iiDld6TzDe84Meksha8/MkWiCyw== + version "7.1.1" + resolved "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-7.1.1.tgz#9806c04f3aecaec8c9e8872806cd1f26d50d92a8" + integrity sha512-MgAv1g6+HLXz1iq2AZRfBjDhwBwk1HRSjuhNiMs8ax/3tsFo0rHedKwuE6ok44sJ5F5VgwPZae8gq0wiBAqYRw== dependencies: "@babel/code-frame" "^7.16.7" chalk "^4.1.2" @@ -11635,7 +12643,12 @@ fork-ts-checker-webpack-plugin@^7.0.0-alpha.8: semver "^7.3.5" tapable "^2.2.1" -form-data-encoder@^1.4.3, form-data-encoder@^1.7.1: +form-data-encoder@^1.4.3: + version "1.6.0" + resolved "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.6.0.tgz#9dd1f479836c1b1b47201667c68f8daafa800943" + integrity sha512-P97AVaOB8hZaniiKK3f46zxQcchQXI8EgBnX+2+719gLv5ZbDSf3J1XtIuAQ8xbGLU4vZYhy7xwhFtK8U5u9Nw== + +form-data-encoder@^1.7.1: version "1.7.1" resolved "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.7.1.tgz#ac80660e4f87ee0d3d3c3638b7da8278ddb8ec96" integrity sha512-EFRDrsMm/kyqbTQocNvRXMLjc7Es2Vk+IQFx/YW7hkUH1eBl4J1fqiP34l74Yt0pFLCNpc06fkbVk00008mzjg== @@ -11659,9 +12672,9 @@ form-data@^2.3.2, form-data@^2.5.0: mime-types "^2.1.12" form-data@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" - integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== + version "3.0.0" + resolved "https://registry.npmjs.org/form-data/-/form-data-3.0.0.tgz#31b7e39c85f1355b7139ee0c647cf0de7f83c682" + integrity sha512-CKMFDglpbMi6PyN+brwB9Q/GOw0eAnsrEZDgcsH5Krhz5Od/haKHAX0NmQfha2zPPz0JpWzA7GJHGSnvCRLWsg== dependencies: asynckit "^0.4.0" combined-stream "^1.0.8" @@ -11681,7 +12694,15 @@ format@^0.2.0: resolved "https://registry.npmjs.org/format/-/format-0.2.2.tgz#d6170107e9efdc4ed30c9dc39016df942b5cb58b" integrity sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs= -formdata-node@^4.0.0, formdata-node@^4.3.1: +formdata-node@^4.0.0: + version "4.3.0" + resolved "https://registry.npmjs.org/formdata-node/-/formdata-node-4.3.0.tgz#77be2add9092cbd1e1f4d35bc3293a89be117a04" + integrity sha512-TwqhWUZd2jB5l0kUhhcy1XYNsXq46NH6k60zmiu7xsxMztul+cCMuPSAQrSDV62zznhBKJdA9O+zeWj5i5Pbfg== + dependencies: + node-domexception "1.0.0" + web-streams-polyfill "4.0.0-beta.1" + +formdata-node@^4.3.1: version "4.3.2" resolved "https://registry.npmjs.org/formdata-node/-/formdata-node-4.3.2.tgz#0262e94931e36db7239c2b08bdb6aaf18ec47d21" integrity sha512-k7lYJyzDOSL6h917favP8j1L0/wNyylzU+x+1w4p5haGVHNlP58dbpdJhiCUsDbWsa9HwEtLp89obQgXl2e0qg== @@ -11841,9 +12862,9 @@ gauge@^3.0.0: wide-align "^1.1.2" gauge@^4.0.0: - version "4.0.1" - resolved "https://registry.npmjs.org/gauge/-/gauge-4.0.1.tgz#82984bc08c90357d60b0a46c03a296beb1affec4" - integrity sha512-zJ4jePUHR8cceduZ53b6temRalyGpkC2Kc2r3ecNphmL+uWNoJ3YcOcUjpbG6WwoE/Ef6/+aEZz63neI2WIa1Q== + version "4.0.0" + resolved "https://registry.npmjs.org/gauge/-/gauge-4.0.0.tgz#afba07aa0374a93c6219603b1fb83eaa2264d8f8" + integrity sha512-F8sU45yQpjQjxKkm1UOAhf0U/O0aFt//Fl7hsrNVto+patMHjs7dPI9mFOGUKbhrgKm0S3EjW3scMFuQmWSROw== dependencies: ansi-regex "^5.0.1" aproba "^1.0.3 || ^2.0.0" @@ -11870,24 +12891,37 @@ gauge@~2.7.3: wide-align "^1.1.0" gaxios@^4.0.0: - version "4.3.2" - resolved "https://registry.npmjs.org/gaxios/-/gaxios-4.3.2.tgz#845827c2dc25a0213c8ab4155c7a28910f5be83f" - integrity sha512-T+ap6GM6UZ0c4E6yb1y/hy2UB6hTrqhglp3XfmU9qbLCGRYhLVV5aRPpC4EmoG8N8zOnkYCgoBz+ScvGAARY6Q== + version "4.0.1" + resolved "https://registry.npmjs.org/gaxios/-/gaxios-4.0.1.tgz#bc7b205a89d883452822cc75e138620c35e3291e" + integrity sha512-jOin8xRZ/UytQeBpSXFqIzqU7Fi5TqgPNLlUsSB8kjJ76+FiGBfImF8KJu++c6J4jOldfJUtt0YmkRj2ZpSHTQ== dependencies: abort-controller "^3.0.0" extend "^3.0.2" https-proxy-agent "^5.0.0" is-stream "^2.0.0" - node-fetch "^2.6.1" + node-fetch "^2.3.0" gcp-metadata@^4.2.0: - version "4.3.1" - resolved "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-4.3.1.tgz#fb205fe6a90fef2fd9c85e6ba06e5559ee1eefa9" - integrity sha512-x850LS5N7V1F3UcV7PoupzGsyD6iVwTVvsh3tbXfkctZnBnjW5yu5z1/3k3SehF7TyoTIe78rJs02GMMy+LF+A== + version "4.2.1" + resolved "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-4.2.1.tgz#31849fbcf9025ef34c2297c32a89a1e7e9f2cd62" + integrity sha512-tSk+REe5iq/N+K+SK1XjZJUrFPuDqGZVzCy2vocIHIGmPlTGsa8owXMJwGkrXr73NO0AzhPW4MF2DEHz7P2AVw== dependencies: gaxios "^4.0.0" json-bigint "^1.0.0" +gcs-resumable-upload@^3.3.0: + version "3.3.0" + resolved "https://registry.npmjs.org/gcs-resumable-upload/-/gcs-resumable-upload-3.3.0.tgz#d1a866173f9b47e045d4406cafaa658dbb01e624" + integrity sha512-MQKWi+9hOSTyg5/SI1NBW4gAjL1wlkoevHefvr1PCBBXH4uKYLsug5qRrcotWKolDPLfWS51cWaHRN0CTtQNZw== + dependencies: + abort-controller "^3.0.0" + configstore "^5.0.0" + extend "^3.0.2" + gaxios "^4.0.0" + google-auth-library "^7.0.0" + pumpify "^2.0.0" + stream-events "^1.0.4" + generate-function@^2.3.1: version "2.3.1" resolved "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz#f069617690c10c868e73b8465746764f97c3479f" @@ -11895,12 +12929,12 @@ generate-function@^2.3.1: dependencies: is-property "^1.0.2" -generic-names@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/generic-names/-/generic-names-4.0.0.tgz#0bd8a2fd23fe8ea16cbd0a279acd69c06933d9a3" - integrity sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A== +generic-names@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/generic-names/-/generic-names-2.0.1.tgz#f8a378ead2ccaa7a34f0317b05554832ae41b872" + integrity sha512-kPCHWa1m9wGG/OwQpeweTwM/PYiQLrUIxXbt/P4Nic3LbGjCP0YwrALHW1uNLKZ0LIMg+RF+XRlj2ekT9ZlZAQ== dependencies: - loader-utils "^3.2.0" + loader-utils "^1.1.0" gensync@^1.0.0-beta.2: version "1.0.0-beta.2" @@ -11934,11 +12968,6 @@ get-monorepo-packages@^1.1.0: globby "^7.1.1" load-json-file "^4.0.0" -get-package-type@^0.1.0: - version "0.1.0" - resolved "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" - integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== - get-pkg-repo@^4.0.0: version "4.2.1" resolved "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz#75973e1c8050c73f48190c52047c4cee3acbf385" @@ -11967,16 +12996,16 @@ get-stream@^4.0.0, get-stream@^4.1.0: pump "^3.0.0" get-stream@^5.0.0, get-stream@^5.1.0: - version "5.2.0" - resolved "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" - integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== + version "5.1.0" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz#01203cdc92597f9b909067c3e656cc1f4d3c4dc9" + integrity sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw== dependencies: pump "^3.0.0" get-stream@^6.0.0: - version "6.0.1" - resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" - integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + version "6.0.0" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.0.tgz#3e0012cb6827319da2706e601a1583e8629a6718" + integrity sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg== get-symbol-description@^1.0.0: version "1.0.0" @@ -12011,9 +13040,9 @@ getpass@^0.1.1: assert-plus "^1.0.0" git-raw-commits@^2.0.8: - version "2.0.11" - resolved "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.11.tgz#bc3576638071d18655e1cc60d7f524920008d723" - integrity sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A== + version "2.0.10" + resolved "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.10.tgz#e2255ed9563b1c9c3ea6bd05806410290297bbc1" + integrity sha512-sHhX5lsbG9SOO6yXdlwgEMQ/ljIn7qMpAbJZCGfXX2fq5T8M5SrDnpYk9/4HswTildcIqatsWa91vty6VhWSaQ== dependencies: dargs "^7.0.0" lodash "^4.17.15" @@ -12038,12 +13067,12 @@ git-semver-tags@^4.1.1: semver "^6.0.0" git-up@^4.0.0: - version "4.0.5" - resolved "https://registry.npmjs.org/git-up/-/git-up-4.0.5.tgz#e7bb70981a37ea2fb8fe049669800a1f9a01d759" - integrity sha512-YUvVDg/vX3d0syBsk/CKUTib0srcQME0JyHkL5BaYdwLsiCslPWmDSi8PUMo9pXYjrryMcmsCoCgsTpSCJEQaA== + version "4.0.1" + resolved "https://registry.npmjs.org/git-up/-/git-up-4.0.1.tgz#cb2ef086653640e721d2042fe3104857d89007c0" + integrity sha512-LFTZZrBlrCrGCG07/dm1aCjjpL1z9L3+5aEeI9SBhAqSc+kiA9Or1bgZhQFNppJX6h/f5McrvJt1mQXTFm6Qrw== dependencies: is-ssh "^1.3.0" - parse-url "^6.0.0" + parse-url "^5.0.0" git-url-parse@^11.4.4, git-url-parse@^11.6.0: version "11.6.0" @@ -12059,7 +13088,7 @@ gitconfiglocal@^1.0.0: dependencies: ini "^1.3.2" -glob-parent@^5.1.1, glob-parent@^5.1.2, glob-parent@~5.1.2: +glob-parent@^5.1.0, glob-parent@^5.1.1, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== @@ -12125,7 +13154,7 @@ global-prefix@^3.0.0: kind-of "^6.0.2" which "^1.3.1" -global@^4.3.0: +global@^4.3.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== @@ -12139,9 +13168,9 @@ globals@^11.1.0, globals@^11.12.0: integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== globals@^13.6.0, globals@^13.9.0: - version "13.12.1" - resolved "https://registry.npmjs.org/globals/-/globals-13.12.1.tgz#ec206be932e6c77236677127577aa8e50bf1c5cb" - integrity sha512-317dFlgY2pdJZ9rspXDks7073GpDmXdfbM3vYYp0HAMKGDh1FfWPleI2ljVNLQX5M5lXcAslTcPTrOrMEFOjyw== + version "13.9.0" + resolved "https://registry.npmjs.org/globals/-/globals-13.9.0.tgz#4bf2bf635b334a173fb1daf7c5e6b218ecdc06cb" + integrity sha512-74/FduwI/JaIrr1H8e71UbDE+5x7pIPs1C2rrwC52SszOo043CsWOZEMW7o2Y58xwm9b+0RBKDxY5n2sUpEFxA== dependencies: type-fest "^0.20.2" @@ -12158,15 +13187,15 @@ globby@11.0.3: slash "^3.0.0" globby@^11.0.0, globby@^11.0.1, globby@^11.0.2, globby@^11.0.3, globby@^11.0.4: - version "11.1.0" - resolved "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" - integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + version "11.0.4" + resolved "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz#2cbaff77c2f2a62e71e9b2813a67b97a3a3001a5" + integrity sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg== dependencies: array-union "^2.1.0" dir-glob "^3.0.1" - fast-glob "^3.2.9" - ignore "^5.2.0" - merge2 "^1.4.1" + fast-glob "^3.1.1" + ignore "^5.1.4" + merge2 "^1.3.0" slash "^3.0.0" globby@^7.1.1: @@ -12181,10 +13210,10 @@ globby@^7.1.1: pify "^3.0.0" slash "^1.0.0" -google-auth-library@^7.0.0, google-auth-library@^7.6.1, google-auth-library@^7.9.2: - version "7.12.0" - resolved "https://registry.npmjs.org/google-auth-library/-/google-auth-library-7.12.0.tgz#7965db6bc20cb31f2df05a08a296bbed6af69426" - integrity sha512-RS/whvFPMoF1hQNxnoVET3DWKPBt1Xgqe2rY0k+Jn7TNhoHlwdnSe7Rlcbo2Nub3Mt2lUVz26X65aDQrWp6x8w== +google-auth-library@^7.0.0, google-auth-library@^7.0.2, google-auth-library@^7.6.1: + version "7.11.0" + resolved "https://registry.npmjs.org/google-auth-library/-/google-auth-library-7.11.0.tgz#b63699c65037310a424128a854ba7e736704cbdb" + integrity sha512-3S5jn2quRumvh9F/Ubf7GFrIq71HZ5a6vqosgdIu105kkk0WtSqc2jGCRqtWWOLRS8SX3AHACMOEDxhyWAQIcg== dependencies: arrify "^2.0.0" base64-js "^1.3.0" @@ -12196,12 +13225,12 @@ google-auth-library@^7.0.0, google-auth-library@^7.6.1, google-auth-library@^7.9 jws "^4.0.0" lru-cache "^6.0.0" -google-gax@^2.24.1: - version "2.29.7" - resolved "https://registry.npmjs.org/google-gax/-/google-gax-2.29.7.tgz#d238dad424f40f6809205dee3c7d4d6e61511e8b" - integrity sha512-yC0Q4OqX6s081jV72Idt9sxZnuRHOjg0SR0FFH15gT3LDE2u/78xqLjZwa3VuprBvaOLM29jzU19Vv4I7E8ETQ== +google-gax@^2.12.0, google-gax@^2.24.1: + version "2.28.1" + resolved "https://registry.npmjs.org/google-gax/-/google-gax-2.28.1.tgz#99bc234b5769d901d70959d40bd1651729eb4a34" + integrity sha512-2Xjd3FrjlVd6Cmw2B2Aicpc/q92SwTpIOvxPUlnRg9w+Do8nu7UR+eQrgoKlo2FIUcUuDTvppvcx8toND0pK9g== dependencies: - "@grpc/grpc-js" "~1.5.0" + "@grpc/grpc-js" "~1.4.0" "@grpc/proto-loader" "^0.6.1" "@types/long" "^4.0.0" abort-controller "^3.0.0" @@ -12211,11 +13240,11 @@ google-gax@^2.24.1: is-stream-ended "^0.1.4" node-fetch "^2.6.1" object-hash "^2.1.1" - proto3-json-serializer "^0.1.8" + proto3-json-serializer "^0.1.5" protobufjs "6.11.2" retry-request "^4.0.0" -google-p12-pem@^3.1.3: +google-p12-pem@^3.0.3: version "3.1.3" resolved "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-3.1.3.tgz#5497998798ee86c2fc1f4bb1f92b7729baf37537" integrity sha512-MC0jISvzymxePDVembypNefkAQp+DRP7dBE+zNUPaIjEspIlYg0++OrsNr248V9tPbz6iqtZ7rX1hxWA5B8qBQ== @@ -12256,7 +13285,12 @@ got@^9.6.0: to-readable-stream "^1.0.0" url-parse-lax "^3.0.0" -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.5, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2, graceful-fs@^4.2.3, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.5, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2, graceful-fs@^4.2.3, graceful-fs@^4.2.4, graceful-fs@^4.2.6: + version "4.2.6" + resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" + integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== + +graceful-fs@^4.2.9: version "4.2.9" resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96" integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ== @@ -12267,9 +13301,9 @@ grapheme-splitter@^1.0.4: integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== graphiql@^1.5.12: - version "1.5.19" - resolved "https://registry.npmjs.org/graphiql/-/graphiql-1.5.19.tgz#dc965daef462fc49a1ecd20f8427e6597e5cda90" - integrity sha512-r+MsBVm9y0Mv8705088sEErm1m+3jizfoiGetK0aeTg1o8zPCm8h4sFkHncrO6eTwzdlnhoZUd4HM0oanx9HlA== + version "1.5.16" + resolved "https://registry.npmjs.org/graphiql/-/graphiql-1.5.16.tgz#76876e6a9c07b7be26b9126b7c6801d6a7e27e3b" + integrity sha512-G1ucZ+1GS6Soq+ftr7eOihy6BcmJHYo29j1/GxXKclUr/z768WWjjIqDcF1/+geI0KOzVeEKkceA1bgT5hG4oQ== dependencies: "@graphiql/toolkit" "^0.4.2" codemirror "^5.58.2" @@ -12289,15 +13323,15 @@ graphlib@^2.1.8: lodash "^4.17.15" graphql-config@^3.0.2: - version "3.4.1" - resolved "https://registry.npmjs.org/graphql-config/-/graphql-config-3.4.1.tgz#59f937a1b4d3a3c2dcdb27ddf5b4d4d4b2c6e9e1" - integrity sha512-g9WyK4JZl1Ko++FSyE5Ir2g66njfxGzrDDhBOwnkoWf/t3TnnZG6BBkWP+pkqVJ5pqMJGPKHNrbew8jRxStjhw== + version "3.3.0" + resolved "https://registry.npmjs.org/graphql-config/-/graphql-config-3.3.0.tgz#24c3672a427cb67c0c717ca3b9d70e9f0c9e752b" + integrity sha512-mSQIsPMssr7QrgqhnjI+CyVH6oQgCrgS6irHsTvwf7RFDRnR2k9kqpQOQgVoOytBSn0DOYryS0w0SAg9xor/Jw== dependencies: "@endemolshinegroup/cosmiconfig-typescript-loader" "3.0.2" "@graphql-tools/graphql-file-loader" "^6.0.0" "@graphql-tools/json-file-loader" "^6.0.0" "@graphql-tools/load" "^6.0.0" - "@graphql-tools/merge" "6.0.0 - 6.2.14" + "@graphql-tools/merge" "^6.0.0" "@graphql-tools/url-loader" "^6.0.0" "@graphql-tools/utils" "^7.0.0" cosmiconfig "7.0.0" @@ -12322,11 +13356,6 @@ graphql-config@^4.1.0: minimatch "3.0.4" string-env-interpolation "1.0.1" -graphql-executor@0.0.18: - version "0.0.18" - resolved "https://registry.npmjs.org/graphql-executor/-/graphql-executor-0.0.18.tgz#6aa4b39e1ca773e159c2a602621e90606df0109a" - integrity sha512-upUSl7tfZCZ5dWG1XkOvpG70Yk3duZKcCoi/uJso4WxJVT6KIrcK4nZ4+2X/hzx46pL8wAukgYHY6iNmocRN+g== - graphql-language-service-interface@^2.10.2: version "2.10.2" resolved "https://registry.npmjs.org/graphql-language-service-interface/-/graphql-language-service-interface-2.10.2.tgz#de9386f699e446320256175e215cdc10ccf9f9b7" @@ -12383,9 +13412,9 @@ graphql-modules@^1.0.0: ramda "^0.27.1" graphql-request@^3.3.0: - version "3.7.0" - resolved "https://registry.npmjs.org/graphql-request/-/graphql-request-3.7.0.tgz#c7406e537084f8b9788541e3e6704340ca13055b" - integrity sha512-dw5PxHCgBneN2DDNqpWu8QkbbJ07oOziy8z+bK/TAXufsOLaETuVO4GkXrbs0WjhdKhBMN3BkpN/RIvUHkmNUQ== + version "3.4.0" + resolved "https://registry.npmjs.org/graphql-request/-/graphql-request-3.4.0.tgz#3a400cd5511eb3c064b1873afb059196bbea9c2b" + integrity sha512-acrTzidSlwAj8wBNO7Q/UQHS8T+z5qRGquCQRv9J1InwR01BBWV9ObnoE+JS5nCCEj8wSGS0yrDXVDoRiKZuOg== dependencies: cross-fetch "^3.0.6" extract-files "^9.0.0" @@ -12409,9 +13438,9 @@ graphql-type-json@^0.3.2: integrity sha512-J+vjof74oMlCWXSvt0DOf2APEdZOCdubEvGDUAlqH//VBYcOYsGgRW7Xzorr44LvkjiuvecWc8fChxuZZbChtg== graphql-ws@^4.4.1: - version "4.9.0" - resolved "https://registry.npmjs.org/graphql-ws/-/graphql-ws-4.9.0.tgz#5cfd8bb490b35e86583d8322f5d5d099c26e365c" - integrity sha512-sHkK9+lUm20/BGawNEWNtVAeJzhZeBg21VmvmLoT5NdGVeZWv5PdIhkcayQIAgjSyyQ17WMKmbDijIPG2On+Ag== + version "4.7.0" + resolved "https://registry.npmjs.org/graphql-ws/-/graphql-ws-4.7.0.tgz#b323fbf35a3736eed85dac24c0054d6d10c93e62" + integrity sha512-Md8SsmC9ZlsogFPd3Ot8HbIAAqsHh8Xoq7j4AmcIat1Bh6k91tjVyQvA0Au1/BolXSYq+RDvib6rATU2Hcf1Xw== graphql-ws@^5.4.1: version "5.5.5" @@ -12439,13 +13468,14 @@ growly@^1.3.0: integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= gtoken@^5.0.4: - version "5.3.2" - resolved "https://registry.npmjs.org/gtoken/-/gtoken-5.3.2.tgz#deb7dc876abe002178e0515e383382ea9446d58f" - integrity sha512-gkvEKREW7dXWF8NV8pVrKfW7WqReAmjjkMBh6lNCCGOM4ucS0r0YyXXl0r/9Yj8wcW/32ISkfc8h5mPTDbtifQ== + version "5.1.0" + resolved "https://registry.npmjs.org/gtoken/-/gtoken-5.1.0.tgz#4ba8d2fc9a8459098f76e7e8fd7beaa39fda9fe4" + integrity sha512-4d8N6Lk8TEAHl9vVoRVMh9BNOKWVgl2DdNtr3428O75r3QFrF/a5MMu851VmK0AA8+iSvbwRv69k5XnMLURGhg== dependencies: gaxios "^4.0.0" - google-p12-pem "^3.1.3" + google-p12-pem "^3.0.3" jws "^4.0.0" + mime "^2.2.0" gzip-size@^6.0.0: version "6.0.0" @@ -12455,9 +13485,9 @@ gzip-size@^6.0.0: duplexer "^0.1.2" handle-thing@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" - integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== + version "2.0.0" + resolved "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.0.tgz#0e039695ff50c93fc288557d696f3c1dc6776754" + integrity sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ== handlebars@^4.7.3, handlebars@^4.7.6, handlebars@^4.7.7: version "4.7.7" @@ -12477,11 +13507,11 @@ har-schema@^2.0.0: integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= har-validator@~5.1.3: - version "5.1.5" - resolved "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" - integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== + version "5.1.3" + resolved "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" + integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== dependencies: - ajv "^6.12.3" + ajv "^6.5.5" har-schema "^2.0.0" hard-rejection@^2.1.0: @@ -12490,9 +13520,9 @@ hard-rejection@^2.1.0: integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== harmony-reflect@^1.4.6: - version "1.6.2" - resolved "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz#31ecbd32e648a34d030d86adb67d4d47547fe710" - integrity sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g== + version "1.6.1" + resolved "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.1.tgz#c108d4f2bb451efef7a37861fdbdae72c9bdefa9" + integrity sha512-WJTeyp0JzGtHcuMsi7rw2VwtkvLa+JyfEKJCFyfcS0+CDkjQ5lHPu7zEhFZP+PDSRrEgXa5Ah0l1MbgbE41XjA== has-ansi@^2.0.0: version "2.0.0" @@ -12501,11 +13531,23 @@ has-ansi@^2.0.0: dependencies: ansi-regex "^2.0.0" -has-bigints@^1.0.1: +has-bigints@^1.0.0, has-bigints@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== +has-binary2@~1.0.2: + version "1.0.3" + resolved "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz#7776ac627f3ea77250cfc332dab7ddf5e4f5d11d" + integrity sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw== + dependencies: + isarray "2.0.1" + +has-cors@1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39" + integrity sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk= + has-flag@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" @@ -12516,7 +13558,7 @@ has-flag@^4.0.0: resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== -has-symbols@^1.0.1, has-symbols@^1.0.2: +has-symbols@^1.0.0, has-symbols@^1.0.1, has-symbols@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== @@ -12577,13 +13619,12 @@ has@^1.0.3: function-bind "^1.1.1" hash-base@^3.0.0: - version "3.1.0" - resolved "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" - integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== + version "3.0.4" + resolved "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" + integrity sha1-X8hoaEfs1zSZQDMZprCj8/auSRg= dependencies: - inherits "^2.0.4" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" + inherits "^2.0.1" + safe-buffer "^5.0.1" hash-it@^5.0.0: version "5.0.2" @@ -12604,9 +13645,9 @@ hash.js@^1.0.0, hash.js@^1.0.3: minimalistic-assert "^1.0.1" hast-util-parse-selector@^2.0.0: - version "2.2.5" - resolved "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz#d57c23f4da16ae3c63b3b6ca4616683313499c3a" - integrity sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ== + version "2.2.4" + resolved "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.4.tgz#60c99d0b519e12ab4ed32e58f150ec3f61ed1974" + integrity sha512-gW3sxfynIvZApL4L07wryYF4+C9VvH3AUi7LAnVXV4MneGEgwOByXvFo18BgmTWnm7oHAe874jKbIB1YhHSIzA== hast-util-whitespace@^2.0.0: version "2.0.0" @@ -12652,7 +13693,12 @@ hexoid@1.0.0: resolved "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz#ad10c6573fb907de23d9ec63a711267d9dc9bc18" integrity sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g== -highlight.js@^10.1.0, highlight.js@^10.4.1, highlight.js@^10.6.0, highlight.js@^10.7.2, highlight.js@~10.7.0: +highlight.js@^10.1.0, highlight.js@^10.4.1, highlight.js@^10.6.0: + version "10.7.2" + resolved "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.2.tgz#89319b861edc66c48854ed1e6da21ea89f847360" + integrity sha512-oFLl873u4usRM9K63j4ME9u3etNF0PLiJhSQ8rdfuL51Wn3zkD6drf9ZW0dOzjnZI22YYG24z30JcmfCZjMgYg== + +highlight.js@^10.7.2, highlight.js@~10.7.0: version "10.7.3" resolved "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz#697272e3991356e40c3cac566a74eef681756531" integrity sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A== @@ -12673,6 +13719,14 @@ hmac-drbg@^1.0.1: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" +hogan.js@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/hogan.js/-/hogan.js-3.0.2.tgz#4cd9e1abd4294146e7679e41d7898732b02c7bfd" + integrity sha1-TNnhq9QpQUbnZ55B14mHMrAse/0= + dependencies: + mkdirp "0.3.0" + nopt "1.0.10" + hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.2: version "3.3.2" resolved "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" @@ -12690,6 +13744,13 @@ hosted-git-info@^2.1.4: resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== +hosted-git-info@^3.0.6: + version "3.0.8" + resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.8.tgz#6e35d4cc87af2c5f816e4cb9ce350ba87a3f370d" + integrity sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw== + dependencies: + lru-cache "^6.0.0" + hosted-git-info@^4.0.0, hosted-git-info@^4.0.1: version "4.1.0" resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224" @@ -12725,9 +13786,9 @@ html-entities@^2.3.2: integrity sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ== html-escaper@^2.0.0: - version "2.0.2" - resolved "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" - integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== + version "2.0.1" + resolved "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.1.tgz#beed86b5d2b921e92533aa11bce6d8e3b583dee7" + integrity sha512-hNX23TjWwD3q56HpWjUHOKj1+4KKlnjv9PcmBUYKVpga+2cnb9nDx/B1o0yO4n+RZXZdiNxzx6B24C9aNMTkkQ== html-minifier-terser@^6.0.2: version "6.1.0" @@ -12805,12 +13866,17 @@ http-errors@~1.6.2: setprototypeof "1.1.0" statuses ">= 1.4.0 < 2" -http-parser-js@>=0.5.1: - version "0.5.5" - resolved "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.5.tgz#d7c30d5d3c90d865b4a2e870181f9d6f22ac7ac5" - integrity sha512-x+JVEkO2PoM8qqpbPbOL3cqHPwerep7OwzK7Ay+sMQjKzaKCqWvjoXm5tqMP9tXWWTnTzAjIhXg+J99XYuPhPA== +"http-parser-js@>=0.4.0 <0.4.11": + version "0.4.10" + resolved "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.10.tgz#92c9c1374c35085f75db359ec56cc257cbb93fa4" + integrity sha1-ksnBN0w1CF912zWexWzCV8u5P6Q= -http-proxy-agent@^4.0.1: +http-parser-js@>=0.5.1: + version "0.5.3" + resolved "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.3.tgz#01d2709c79d41698bb01d4decc5e9da4e4a033d9" + integrity sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg== + +http-proxy-agent@^4.0.0, http-proxy-agent@^4.0.1: version "4.0.1" resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== @@ -12829,9 +13895,9 @@ http-proxy-agent@^5.0.0: debug "4" http-proxy-middleware@^2.0.0: - version "2.0.3" - resolved "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.3.tgz#5df04f69a89f530c2284cd71eeaa51ba52243289" - integrity sha512-1bloEwnrHMnCoO/Gcwbz7eSVvW50KPES01PecpagI+YLNLci4AcuKJrujW4Mc3sBLpFxMSlsLNHS5Nl/lvrTPA== + version "2.0.2" + resolved "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.2.tgz#94d7593790aad6b3de48164f13792262f656c332" + integrity sha512-XtmDN5w+vdFTBZaYhdJAbMqn0DP/EhkUaAeo963mojwpKMMbw6nivtFKw07D7DDOH745L5k0VL0P8KRYNEVF/g== dependencies: "@types/http-proxy" "^1.17.8" http-proxy "^1.18.1" @@ -12867,9 +13933,9 @@ http-signature@~1.3.6: sshpk "^1.14.1" http2-wrapper@^1.0.0-beta.5.2: - version "1.0.3" - resolved "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz#b8f55e0c1f25d4ebd08b3b0c2c079f9590800b3d" - integrity sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg== + version "1.0.0-beta.5.2" + resolved "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.0-beta.5.2.tgz#8b923deb90144aea65cf834b016a340fc98556f3" + integrity sha512-xYz9goEyBnC8XwXDTuC/MZ6t+MrKVQZOk4s7+PaDkwIsQd8IwqvM+0M6bA/2lvG8GHXcPdf+MejTUeO2LCPCeQ== dependencies: quick-lru "^5.1.1" resolve-alpn "^1.0.0" @@ -12920,9 +13986,9 @@ husky@^7.0.4: integrity sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ== hyphenate-style-name@^1.0.2, hyphenate-style-name@^1.0.3: - version "1.0.4" - resolved "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz#691879af8e220aea5750e8827db4ef62a54e361d" - integrity sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ== + version "1.0.3" + resolved "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.3.tgz#097bb7fa0b8f1a9cf0bd5c734cf95899981a9b48" + integrity sha512-EcuixamT82oplpoJ2XU4pDtKGWQ7b00CD9f1ug9IaQ3p1bkHMiKCZ9ut9QDI6qsa6cpUuB+A/I+zLtdNK4n2DQ== iconv-lite@0.4.24, iconv-lite@^0.4.24: version "0.4.24" @@ -12971,9 +14037,9 @@ ignore-by-default@^1.0.1: integrity sha1-SMptcvbGo68Aqa1K5odr44ieKwk= ignore-walk@^3.0.3: - version "3.0.4" - resolved "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz#c9a09f69b7c7b479a5d74ac1a3c0d4236d2a6335" - integrity sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ== + version "3.0.3" + resolved "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37" + integrity sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw== dependencies: minimatch "^3.0.4" @@ -12999,6 +14065,11 @@ ignore@^5.1.4, ignore@^5.1.8, ignore@^5.2.0: resolved "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== +image-size@^0.7.2: + version "0.7.5" + resolved "https://registry.npmjs.org/image-size/-/image-size-0.7.5.tgz#269f357cf5797cb44683dfa99790e54c705ead04" + integrity sha512-Hiyv+mXHfFEP7LzUL/llg9RwFxxY+o9N3JVLIeG5E7iFIFAalxvRU9UZthBdYDEVnzHMgjnKJPPpay5BWf1g9g== + immer@9.0.7: version "9.0.7" resolved "https://registry.npmjs.org/immer/-/immer-9.0.7.tgz#b6156bd7db55db7abc73fd2fdadf4e579a701075" @@ -13027,9 +14098,9 @@ import-cwd@^3.0.0: import-from "^3.0.0" import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1: - version "3.3.0" - resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + version "3.2.1" + resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" + integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== dependencies: parent-module "^1.0.0" resolve-from "^4.0.0" @@ -13057,9 +14128,9 @@ import-lazy@~4.0.0: integrity sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw== import-local@^3.0.2: - version "3.1.0" - resolved "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" - integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== + version "3.0.2" + resolved "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz#a8cfd0431d1de4a2199703d003e3e62364fa6db6" + integrity sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA== dependencies: pkg-dir "^4.2.0" resolve-cwd "^3.0.0" @@ -13069,6 +14140,13 @@ imurmurhash@^0.1.4: resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= +indefinite-observable@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/indefinite-observable/-/indefinite-observable-2.0.1.tgz#574af29bfbc17eb5947793797bddc94c9d859400" + integrity sha512-G8vgmork+6H9S8lUAg1gtXEj2JxIQTo0g2PbFiYOdjkziSI0F7UYBiVwhZRuixhBCNGczAls34+5HJPyZysvxQ== + dependencies: + symbol-observable "1.2.0" + indent-string@^3.0.0: version "3.2.0" resolved "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" @@ -13079,6 +14157,16 @@ indent-string@^4.0.0: resolved "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== +indexes-of@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" + integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= + +indexof@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" + integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10= + infer-owner@^1.0.4: version "1.0.4" resolved "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" @@ -13118,15 +14206,16 @@ ini@^1.3.2, ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== init-package-json@^2.0.2: - version "2.0.5" - resolved "https://registry.npmjs.org/init-package-json/-/init-package-json-2.0.5.tgz#78b85f3c36014db42d8f32117252504f68022646" - integrity sha512-u1uGAtEFu3VA6HNl/yUWw57jmKEMx8SKOxHhxjGnOFUiIlFnohKDFg4ZrPpv9wWqk44nDxGJAtqjdQFm+9XXQA== + version "2.0.2" + resolved "https://registry.npmjs.org/init-package-json/-/init-package-json-2.0.2.tgz#d81a7e6775af9b618f20bba288e440b8d1ce05f3" + integrity sha512-PO64kVeArePvhX7Ff0jVWkpnE1DfGRvaWcStYrPugcJz9twQGYibagKJuIMHCX7ENcp0M6LJlcjLBuLD5KeJMg== dependencies: - npm-package-arg "^8.1.5" + glob "^7.1.1" + npm-package-arg "^8.1.0" promzard "^0.3.0" read "~1.0.1" - read-package-json "^4.1.1" - semver "^7.3.5" + read-package-json "^3.0.0" + semver "^7.3.2" validate-npm-package-license "^3.0.4" validate-npm-package-name "^3.0.0" @@ -13136,9 +14225,9 @@ inline-style-parser@0.1.1: integrity sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q== inline-style-prefixer@^6.0.0: - version "6.0.1" - resolved "https://registry.npmjs.org/inline-style-prefixer/-/inline-style-prefixer-6.0.1.tgz#c5c0e43ba8831707afc5f5bbfd97edf45c1fa7ae" - integrity sha512-AsqazZ8KcRzJ9YPN1wMH2aNM7lkWQ8tSPrW5uDk1ziYwiAPWSZnUsC7lfZq+BDqLqz0B4Pho5wscWcJzVvRzDQ== + version "6.0.0" + resolved "https://registry.npmjs.org/inline-style-prefixer/-/inline-style-prefixer-6.0.0.tgz#f73d5dbf2855733d6b153a4d24b7b47a73e9770b" + integrity sha512-XTHvRUS4ZJNzC1GixJRmOlWSS45fSt+DJoyQC9ytj0WxQfcgofQtDtyKKYxHUqEsWCs+LIWftPF1ie7+i012Fg== dependencies: css-in-js-utils "^2.0.0" @@ -13225,6 +14314,11 @@ invert-kv@^1.0.0: resolved "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= +ip-regex@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" + integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= + ip@^1.1.0, ip@^1.1.5: version "1.1.5" resolved "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" @@ -13240,6 +14334,11 @@ ipaddr.js@^2.0.1: resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz#eca256a7a877e917aeb368b0a7497ddf42ef81c0" integrity sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng== +is-absolute-url@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" + integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q== + is-absolute@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz#395e1ae84b11f26ad1795e73c17378e48a301576" @@ -13267,6 +14366,11 @@ is-alphabetical@^1.0.0: resolved "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz#9e7d6b94916be22153745d184c298cbf986a686d" integrity sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg== +is-alphabetical@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.0.tgz#ef6e2caea57c63450fffc7abb6cbdafc5eb96e96" + integrity sha512-5OV8Toyq3oh4eq6sbWTYzlGdnMT/DPI5I0zxUBxjiigQsZycpkKF3kskkao3JyYGuYDHvhgJF+DrjMQp9SX86w== + is-alphanumerical@^1.0.0: version "1.0.4" resolved "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz#7eb9a2431f855f6b1ef1a78e326df515696c4dbf" @@ -13275,13 +14379,18 @@ is-alphanumerical@^1.0.0: is-alphabetical "^1.0.0" is-decimal "^1.0.0" -is-arguments@^1.0.4: - version "1.1.1" - resolved "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" - integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== +is-alphanumerical@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.0.tgz#0fbfeb6a72d21d91143b3d182bf6cf5909ee66f6" + integrity sha512-t+2GlJ+hO9yagJ+jU3+HSh80VKvz/3cG2cxbGGm4S0hjKuhWQXgPVUVOZz3tqZzMjhmphZ+1TIJTlRZRoe6GCQ== dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" + is-alphabetical "^2.0.0" + is-decimal "^2.0.0" + +is-arguments@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" + integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA== is-arrayish@^0.2.1: version "0.2.1" @@ -13294,11 +14403,9 @@ is-arrayish@^0.3.1: integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== is-bigint@^1.0.1: - version "1.0.4" - resolved "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" - integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== - dependencies: - has-bigints "^1.0.1" + version "1.0.1" + resolved "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.1.tgz#6923051dfcbc764278540b9ce0e6b3213aa5ebc2" + integrity sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg== is-binary-path@~2.1.0: version "2.1.0" @@ -13308,12 +14415,11 @@ is-binary-path@~2.1.0: binary-extensions "^2.0.0" is-boolean-object@^1.1.0: - version "1.1.2" - resolved "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" - integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== + version "1.1.0" + resolved "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.0.tgz#e2aaad3a3a8fca34c28f6eee135b156ed2587ff0" + integrity sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA== dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" + call-bind "^1.0.0" is-buffer@^1.1.5: version "1.1.6" @@ -13321,11 +14427,16 @@ is-buffer@^1.1.5: integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== is-buffer@^2.0.0: - version "2.0.5" - resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" - integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== + version "2.0.4" + resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz#3e572f23c8411a5cfd9557c849e3665e0b290623" + integrity sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A== -is-callable@^1.1.4, is-callable@^1.2.4: +is-callable@^1.1.4, is-callable@^1.2.3: + version "1.2.3" + resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e" + integrity sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ== + +is-callable@^1.2.4: version "1.2.4" resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== @@ -13344,7 +14455,14 @@ is-ci@^3.0.0, is-ci@^3.0.1: dependencies: ci-info "^3.2.0" -is-core-module@^2.1.0, is-core-module@^2.2.0, is-core-module@^2.5.0, is-core-module@^2.8.0, is-core-module@^2.8.1: +is-core-module@^2.1.0, is-core-module@^2.2.0: + version "2.8.0" + resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz#0321336c3d0925e497fd97f5d95cb114a5ccd548" + integrity sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw== + dependencies: + has "^1.0.3" + +is-core-module@^2.8.0: version "2.8.1" resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211" integrity sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA== @@ -13366,17 +14484,20 @@ is-data-descriptor@^1.0.0: kind-of "^6.0.0" is-date-object@^1.0.1: - version "1.0.5" - resolved "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" - integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== - dependencies: - has-tostringtag "^1.0.0" + version "1.0.2" + resolved "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" + integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== is-decimal@^1.0.0: version "1.0.4" resolved "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz#65a3a5958a1c5b63a706e1b333d7cd9f630d3fa5" integrity sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw== +is-decimal@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.0.tgz#db1140337809fd043a056ae40a9bd1cdc563034c" + integrity sha512-QfrfjQV0LjoWQ1K1XSoEZkTAzSa14RKVMa5zg3SdAfzEmQzRM4+tbSFWb78creCeA9rNBzaZal92opi1TwPWZw== + is-descriptor@^0.1.0: version "0.1.6" resolved "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" @@ -13447,17 +14568,20 @@ is-fullwidth-code-point@^4.0.0: resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz#fae3167c729e7463f8461ce512b080a49268aa88" integrity sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ== +is-function@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz#4f097f30abf6efadac9833b17ca5dc03f8144e08" + integrity sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ== + is-generator-fn@^2.0.0: version "2.1.0" resolved "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== is-generator-function@^1.0.7: - version "1.0.10" - resolved "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" - integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== - dependencies: - has-tostringtag "^1.0.0" + version "1.0.8" + resolved "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.8.tgz#dfb5c2b120e02b0a8d9d2c6806cd5621aa922f7b" + integrity sha512-2Omr/twNtufVZFr1GhxjOMFPAj2sjc/dKaIqBhvo4qciXfJmITGH6ZGd8eZYNHza8t1y0e01AuqRhJwfWp26WQ== is-glob@4.0.1: version "4.0.1" @@ -13478,6 +14602,11 @@ is-hexadecimal@^1.0.0: resolved "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz#cc35c97588da4bd49a8eedd6bc4082d44dcb23a7" integrity sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw== +is-hexadecimal@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.0.tgz#8e1ec9f48fe3eabd90161109856a23e0907a65d5" + integrity sha512-vGOtYkiaxwIiR0+Ng/zNId+ZZehGfINwTzdrDqc6iubbnQWhnPuYymOzOKUDqa2cSl59yHnEh2h6MvRLQsyNug== + is-in-browser@^1.0.2, is-in-browser@^1.1.3: version "1.1.3" resolved "https://registry.npmjs.org/is-in-browser/-/is-in-browser-1.1.3.tgz#56ff4db683a078c6082eb95dad7dc62e1d04f835" @@ -13514,9 +14643,9 @@ is-module@^1.0.0: integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= is-negative-zero@^2.0.1: - version "2.0.2" - resolved "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" - integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== + version "2.0.1" + resolved "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" + integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== is-node-process@^1.0.1: version "1.0.1" @@ -13529,11 +14658,9 @@ is-npm@^5.0.0: integrity sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA== is-number-object@^1.0.4: - version "1.0.6" - resolved "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz#6a7aaf838c7f0686a50b4553f7e54a96494e89f0" - integrity sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g== - dependencies: - has-tostringtag "^1.0.0" + version "1.0.4" + resolved "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.4.tgz#36ac95e741cf18b283fc1ddf5e83da798e3ec197" + integrity sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw== is-number@^3.0.0: version "3.0.0" @@ -13553,9 +14680,9 @@ is-obj@^2.0.0: integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== is-object@^1.0.1: - version "1.0.2" - resolved "https://registry.npmjs.org/is-object/-/is-object-1.0.2.tgz#a56552e1c665c9e950b4a025461da87e72f86fcf" - integrity sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA== + version "1.0.1" + resolved "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz#8952688c5ec2ffd6b03ecc85e769e02903083470" + integrity sha1-iVJojF7C/9awPsyF52ngKQMINHA= is-observable@^1.1.0: version "1.1.0" @@ -13601,11 +14728,23 @@ is-plain-object@^2.0.3, is-plain-object@^2.0.4: dependencies: isobject "^3.0.1" +is-plain-object@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.0.tgz#47bfc5da1b5d50d64110806c199359482e75a928" + integrity sha512-tZIpofR+P05k8Aocp7UI/2UTa9lTJSebCXpFFoR9aibpokDj/uXBsJ8luUu0tTVYKkMU6URDUuOfJZ7koewXvg== + dependencies: + isobject "^4.0.0" + is-plain-object@^5.0.0: version "5.0.0" resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== +is-potential-custom-element-name@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.0.tgz#0c52e54bcca391bb2c494b21e8626d7336c6e397" + integrity sha1-DFLlS8yjkbssSUsh6GJtczbG45c= + is-potential-custom-element-name@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" @@ -13616,7 +14755,7 @@ is-promise@4.0.0, is-promise@^4.0.0: resolved "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz#42ff9f84206c1991d26debf520dd5c01042dd2f3" integrity sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ== -is-promise@^2.1.0: +is-promise@^2.1.0, is-promise@^2.2.2: version "2.2.2" resolved "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== @@ -13633,7 +14772,15 @@ is-reference@^1.2.1: dependencies: "@types/estree" "*" -is-regex@^1.0.4, is-regex@^1.1.4: +is-regex@^1.0.4, is-regex@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz#81c8ebde4db142f2cf1c53fc86d6a45788266251" + integrity sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg== + dependencies: + call-bind "^1.0.2" + has-symbols "^1.0.1" + +is-regex@^1.1.4: version "1.1.4" resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== @@ -13648,6 +14795,11 @@ is-relative@^1.0.0: dependencies: is-unc-path "^1.0.0" +is-resolvable@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" + integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== + is-root@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c" @@ -13666,9 +14818,9 @@ is-shared-array-buffer@^1.0.1: integrity sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA== is-ssh@^1.3.0: - version "1.3.3" - resolved "https://registry.npmjs.org/is-ssh/-/is-ssh-1.3.3.tgz#7f133285ccd7f2c2c7fc897b771b53d95a2b2c7e" - integrity sha512-NKzJmQzJfEEma3w5cJNcUMxoXfDjz0Zj0eyCalHn2E6VOwlzjZo0yuO2fcBSf8zhFuVCL/82/r5gRcoi6aEPVQ== + version "1.3.1" + resolved "https://registry.npmjs.org/is-ssh/-/is-ssh-1.3.1.tgz#f349a8cadd24e65298037a522cf7520f2e81a0f3" + integrity sha512-0eRIASHZt1E68/ixClI8bp2YK2wmBPVWEismTs6M+M099jKgrzl/3E976zIbImSIob48N2/XGe9y7ZiYdImSlg== dependencies: protocols "^1.1.0" @@ -13683,11 +14835,16 @@ is-stream@^1.1.0: integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= is-stream@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" - integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + version "2.0.0" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" + integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== -is-string@^1.0.5, is-string@^1.0.7: +is-string@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" + integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== + +is-string@^1.0.7: version "1.0.7" resolved "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== @@ -13695,18 +14852,18 @@ is-string@^1.0.5, is-string@^1.0.7: has-tostringtag "^1.0.0" is-subdir@^1.1.1: - version "1.2.0" - resolved "https://registry.npmjs.org/is-subdir/-/is-subdir-1.2.0.tgz#b791cd28fab5202e91a08280d51d9d7254fd20d4" - integrity sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw== + version "1.1.1" + resolved "https://registry.npmjs.org/is-subdir/-/is-subdir-1.1.1.tgz#423e66902f9c5f159b9cc4826c820df083059538" + integrity sha512-VYpq0S7gPBVkkmfwkvGnx1EL9UVIo87NQyNcgMiNUdQCws3CJm5wj2nB+XPL7zigvjxhuZgp3bl2yBcKkSIj1w== dependencies: better-path-resolve "1.0.0" is-symbol@^1.0.2, is-symbol@^1.0.3: - version "1.0.4" - resolved "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" - integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== + version "1.0.3" + resolved "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" + integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== dependencies: - has-symbols "^1.0.2" + has-symbols "^1.0.1" is-text-path@^1.0.1: version "1.0.1" @@ -13715,16 +14872,16 @@ is-text-path@^1.0.1: dependencies: text-extensions "^1.0.0" -is-typed-array@^1.1.3, is-typed-array@^1.1.7: - version "1.1.8" - resolved "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.8.tgz#cbaa6585dc7db43318bc5b89523ea384a6f65e79" - integrity sha512-HqH41TNZq2fgtGT8WHVFVJhBVGuY3AnP3Q36K8JKXUxSxRgk/d+7NjmwG2vo2mYmXK8UYZKu0qH8bVP5gEisjA== +is-typed-array@^1.1.3: + version "1.1.5" + resolved "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.5.tgz#f32e6e096455e329eb7b423862456aa213f0eb4e" + integrity sha512-S+GRDgJlR3PyEbsX/Fobd9cqpZBuvUS+8asRqYDMLCb2qMzt1oz5m5oxQCxOgUDxiWsOVNi4yaF+/uvdlHlYug== dependencies: - available-typed-arrays "^1.0.5" + available-typed-arrays "^1.0.2" call-bind "^1.0.2" - es-abstract "^1.18.5" + es-abstract "^1.18.0-next.2" foreach "^2.0.5" - has-tostringtag "^1.0.0" + has-symbols "^1.0.1" is-typedarray@^1.0.0, is-typedarray@~1.0.0: version "1.0.0" @@ -13756,11 +14913,11 @@ is-utf8@^0.2.0, is-utf8@^0.2.1: integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= is-weakref@^1.0.1: - version "1.0.2" - resolved "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" - integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== + version "1.0.1" + resolved "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.1.tgz#842dba4ec17fa9ac9850df2d6efbc1737274f2a2" + integrity sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ== dependencies: - call-bind "^1.0.2" + call-bind "^1.0.0" is-window@^1.0.2: version "1.0.2" @@ -13794,6 +14951,11 @@ isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= +isarray@2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz#a37d94ed9cda2d59865c9f76fe596ee1f338741e" + integrity sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4= + isbinaryfile@^4.0.8: version "4.0.8" resolved "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.8.tgz#5d34b94865bd4946633ecc78a026fc76c5b11fcf" @@ -13816,6 +14978,11 @@ isobject@^3.0.0, isobject@^3.0.1: resolved "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= +isobject@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/isobject/-/isobject-4.0.0.tgz#3f1c9155e73b192022a80819bacd0343711697b0" + integrity sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA== + isomorphic-dompurify@^0.13.0: version "0.13.0" resolved "https://registry.npmjs.org/isomorphic-dompurify/-/isomorphic-dompurify-0.13.0.tgz#a4dde357e8531018a85ebb2dd56c4794b6739ba3" @@ -13841,9 +15008,9 @@ isomorphic-form-data@^2.0.0: form-data "^2.3.2" isomorphic-git@^1.8.0: - version "1.11.2" - resolved "https://registry.npmjs.org/isomorphic-git/-/isomorphic-git-1.11.2.tgz#58fd47f3e797ed9cc1364bb2cae02355499d6bea" - integrity sha512-7gSW+dMftHYyDufoeLCOagxlN0KsAYvR/qddSke9pnPH8vwL4OwqQ2BvkG0O02OnEFqg1pZXyIzBPFBfOMYXUA== + version "1.10.0" + resolved "https://registry.npmjs.org/isomorphic-git/-/isomorphic-git-1.10.0.tgz#59a4604d1190d1e7fc52172085da25e6a428bc07" + integrity sha512-CijspEYaOQAnsHWXyq8ICZXzLJ/1wYQAa0jdfLcugA/68oNzrxykjGZz8Up7B8huA1VfkFHm4VviExtj/zpViw== dependencies: async-lock "^1.1.0" clean-git-ref "^2.0.1" @@ -13855,7 +15022,7 @@ isomorphic-git@^1.8.0: pify "^4.0.1" readable-stream "^3.4.0" sha.js "^2.4.9" - simple-get "^4.0.1" + simple-get "^3.0.2" isomorphic-ws@4.0.1, isomorphic-ws@^4.0.1: version "4.0.1" @@ -13867,12 +15034,12 @@ isstream@~0.1.2: resolved "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= -istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: - version "3.2.0" - resolved "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" - integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== +istanbul-lib-coverage@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" + integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== -istanbul-lib-instrument@^4.0.3: +istanbul-lib-instrument@^4.0.0, istanbul-lib-instrument@^4.0.3: version "4.0.3" resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ== @@ -13882,17 +15049,6 @@ istanbul-lib-instrument@^4.0.3: istanbul-lib-coverage "^3.0.0" semver "^6.3.0" -istanbul-lib-instrument@^5.0.4: - version "5.1.0" - resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz#7b49198b657b27a730b8e9cb601f1e1bff24c59a" - integrity sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q== - dependencies: - "@babel/core" "^7.12.3" - "@babel/parser" "^7.14.7" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-coverage "^3.2.0" - semver "^6.3.0" - istanbul-lib-report@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" @@ -13903,9 +15059,9 @@ istanbul-lib-report@^3.0.0: supports-color "^7.1.0" istanbul-lib-source-maps@^4.0.0: - version "4.0.1" - resolved "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" - integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== + version "4.0.0" + resolved "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz#75743ce6d96bb86dc7ee4352cf6366a23f0b1ad9" + integrity sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg== dependencies: debug "^4.1.1" istanbul-lib-coverage "^3.0.0" @@ -14010,16 +15166,6 @@ jest-diff@^26.0.0, jest-diff@^26.6.2: jest-get-type "^26.3.0" pretty-format "^26.6.2" -jest-diff@^27.0.0: - version "27.5.1" - resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz#a07f5011ac9e6643cf8a95a462b7b1ecf6680def" - integrity sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw== - dependencies: - chalk "^4.0.0" - diff-sequences "^27.5.1" - jest-get-type "^27.5.1" - pretty-format "^27.5.1" - jest-docblock@^26.0.0: version "26.0.0" resolved "https://registry.npmjs.org/jest-docblock/-/jest-docblock-26.0.0.tgz#3e2fa20899fc928cb13bd0ff68bd3711a36889b5" @@ -14068,11 +15214,6 @@ jest-get-type@^26.3.0: resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0" integrity sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig== -jest-get-type@^27.5.1: - version "27.5.1" - resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz#3cd613c507b0f7ace013df407a1c1cd578bcb4f1" - integrity sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw== - jest-haste-map@^26.6.2: version "26.6.2" resolved "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.2.tgz#dd7e60fe7dc0e9f911a23d79c5ff7fb5c2cafeaa" @@ -14326,9 +15467,9 @@ jest-watcher@^26.6.2: string-length "^4.0.1" jest-when@^3.1.0: - version "3.5.1" - resolved "https://registry.npmjs.org/jest-when/-/jest-when-3.5.1.tgz#33ab6f923661cf878cd08fe9df64b507934603db" - integrity sha512-o+HiaIVCg1IC95sMDKHU9G5v5N5l3UHqXvJpf0PgAMThZeQo4Hf5Sgoj+wpCBRGg4/KtzSAZZZEKNiLqE0i4eQ== + version "3.5.0" + resolved "https://registry.npmjs.org/jest-when/-/jest-when-3.5.0.tgz#364ab8dc149a5d683f9cc14e44d73d03b84b0d97" + integrity sha512-/IkPkG5lo2tyXH3a+VraYe7t/ma6UK9VPQko7hr6YgEtjoHyfAPpLXzyhnSNxxKRzNQDrw8YoGPCOkdTLR4mHA== jest-worker@^26.6.2: version "26.6.2" @@ -14339,10 +15480,10 @@ jest-worker@^26.6.2: merge-stream "^2.0.0" supports-color "^7.0.0" -jest-worker@^27.3.1, jest-worker@^27.4.5: - version "27.5.1" - resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" - integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== +jest-worker@^27.3.1, jest-worker@^27.4.1: + version "27.4.6" + resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-27.4.6.tgz#5d2d93db419566cb680752ca0792780e71b3273e" + integrity sha512-gHWJF/6Xi5CTG5QCvROr6GcmpIqNYpDJyc8A1h/DyXqH1tD6SnRCM0d3U5msV31D2LB/U+E0M+W4oyvKV44oNw== dependencies: "@types/node" "*" merge-stream "^2.0.0" @@ -14357,6 +15498,18 @@ jest@^26.0.1: import-local "^3.0.2" jest-cli "^26.6.3" +jimp@^0.10.3: + version "0.10.3" + resolved "https://registry.npmjs.org/jimp/-/jimp-0.10.3.tgz#285027b49eee3418259a8e1e9a20dd078cf8b7b1" + integrity sha512-meVWmDMtyUG5uYjFkmzu0zBgnCvvxwWNi27c4cg55vWNVC9ES4Lcwb+ogx+uBBQE3Q+dLKjXaLl0JVW+nUNwbQ== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/custom" "^0.10.3" + "@jimp/plugins" "^0.10.3" + "@jimp/types" "^0.10.3" + core-js "^3.4.1" + regenerator-runtime "^0.13.3" + jju@~1.4.0: version "1.4.0" resolved "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz#a3abe2718af241a2b2904f84a625970f389ae32a" @@ -14373,13 +15526,13 @@ jmespath@^0.15.0: integrity sha1-o/Iiqarp+Wb10nx5ZRDigJF2Qhc= joi@^17.4.0: - version "17.6.0" - resolved "https://registry.npmjs.org/joi/-/joi-17.6.0.tgz#0bb54f2f006c09a96e75ce687957bd04290054b2" - integrity sha512-OX5dG6DTbcr/kbMFj0KGYxuew69HPcAE3K/sZpEV2nP6e/j/C0HV+HNiBPCASxdx5T7DMoa0s8UeHWMnb6n2zw== + version "17.4.2" + resolved "https://registry.npmjs.org/joi/-/joi-17.4.2.tgz#02f4eb5cf88e515e614830239379dcbbe28ce7f7" + integrity sha512-Lm56PP+n0+Z2A2rfRvsfWVDXGEWjXxatPopkQ8qQ5mxCEhwHG+Ettgg5o98FFaxilOxozoa14cFhrE/hOzh/Nw== dependencies: "@hapi/hoek" "^9.0.0" "@hapi/topo" "^5.0.0" - "@sideway/address" "^4.1.3" + "@sideway/address" "^4.1.0" "@sideway/formula" "^3.0.0" "@sideway/pinpoint" "^2.0.0" @@ -14398,9 +15551,19 @@ jose@^2.0.5: "@panva/asn1.js" "^1.0.0" joycon@^3.0.1: - version "3.1.1" - resolved "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz#bce8596d6ae808f8b68168f5fc69280996894f03" - integrity sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw== + version "3.1.0" + resolved "https://registry.npmjs.org/joycon/-/joycon-3.1.0.tgz#33bb2b6b5a6849a1e251bed623bdf610f477d49f" + integrity sha512-5Y/YJghKF/IzaUXTut0JtbQyHfBShTaIsH7hHhGXEzYO07zWdWZm5hr3Q6miqhrwsRqqm3mgOnUEZdn+1aRxKQ== + +jpeg-js@^0.3.4: + version "0.3.7" + resolved "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.3.7.tgz#471a89d06011640592d314158608690172b1028d" + integrity sha512-9IXdWudL61npZjvLuVe/ktHiA41iE8qFyLB+4VDTblEsWBzeg8WQTlktdUK4CdncUqtUgUg0bbOmTE2bKBKaBQ== + +js-base64@^2.5.1: + version "2.6.4" + resolved "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz#f4e686c5de1ea1f867dbcad3d46d969428df98c4" + integrity sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ== js-base64@^3.6.0: version "3.7.2" @@ -14493,7 +15656,39 @@ jscodeshift@^0.13.0: temp "^0.8.4" write-file-atomic "^2.3.0" -jsdom@^16.4.0, jsdom@^16.5.2: +jsdom@^16.4.0: + version "16.4.0" + resolved "https://registry.npmjs.org/jsdom/-/jsdom-16.4.0.tgz#36005bde2d136f73eee1a830c6d45e55408edddb" + integrity sha512-lYMm3wYdgPhrl7pDcRmvzPhhrGVBeVhPIqeHjzeiHN3DFmD1RBpbExbi8vU7BJdH8VAZYovR8DMt0PNNDM7k8w== + dependencies: + abab "^2.0.3" + acorn "^7.1.1" + acorn-globals "^6.0.0" + cssom "^0.4.4" + cssstyle "^2.2.0" + data-urls "^2.0.0" + decimal.js "^10.2.0" + domexception "^2.0.1" + escodegen "^1.14.1" + html-encoding-sniffer "^2.0.1" + is-potential-custom-element-name "^1.0.0" + nwsapi "^2.2.0" + parse5 "5.1.1" + request "^2.88.2" + request-promise-native "^1.0.8" + saxes "^5.0.0" + symbol-tree "^3.2.4" + tough-cookie "^3.0.1" + w3c-hr-time "^1.0.2" + w3c-xmlserializer "^2.0.0" + webidl-conversions "^6.1.0" + whatwg-encoding "^1.0.5" + whatwg-mimetype "^2.3.0" + whatwg-url "^8.0.0" + ws "^7.2.3" + xml-name-validator "^3.0.0" + +jsdom@^16.5.2: version "16.7.0" resolved "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz#918ae71965424b197c819f8183a754e18977b710" integrity sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw== @@ -14691,11 +15886,11 @@ jsonfile@^4.0.0: graceful-fs "^4.1.6" jsonfile@^6.0.1: - version "6.1.0" - resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" - integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + version "6.0.1" + resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.0.1.tgz#98966cba214378c8c84b82e085907b40bf614179" + integrity sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg== dependencies: - universalify "^2.0.0" + universalify "^1.0.0" optionalDependencies: graceful-fs "^4.1.6" @@ -14766,76 +15961,85 @@ jsprim@^2.0.2: verror "1.10.0" jss-plugin-camel-case@^10.5.1: - version "10.9.0" - resolved "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.9.0.tgz#4921b568b38d893f39736ee8c4c5f1c64670aaf7" - integrity sha512-UH6uPpnDk413/r/2Olmw4+y54yEF2lRIV8XIZyuYpgPYTITLlPOsq6XB9qeqv+75SQSg3KLocq5jUBXW8qWWww== + version "10.6.0" + resolved "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.6.0.tgz#93d2cd704bf0c4af70cc40fb52d74b8a2554b170" + integrity sha512-JdLpA3aI/npwj3nDMKk308pvnhoSzkW3PXlbgHAzfx0yHWnPPVUjPhXFtLJzgKZge8lsfkUxvYSQ3X2OYIFU6A== dependencies: "@babel/runtime" "^7.3.1" hyphenate-style-name "^1.0.3" - jss "10.9.0" + jss "10.6.0" jss-plugin-default-unit@^10.5.1: - version "10.9.0" - resolved "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.9.0.tgz#bb23a48f075bc0ce852b4b4d3f7582bc002df991" - integrity sha512-7Ju4Q9wJ/MZPsxfu4T84mzdn7pLHWeqoGd/D8O3eDNNJ93Xc8PxnLmV8s8ZPNRYkLdxZqKtm1nPQ0BM4JRlq2w== + version "10.6.0" + resolved "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.6.0.tgz#af47972486819b375f0f3a9e0213403a84b5ef3b" + integrity sha512-7y4cAScMHAxvslBK2JRK37ES9UT0YfTIXWgzUWD5euvR+JR3q+o8sQKzBw7GmkQRfZijrRJKNTiSt1PBsLI9/w== dependencies: "@babel/runtime" "^7.3.1" - jss "10.9.0" + jss "10.6.0" jss-plugin-global@^10.5.1: - version "10.9.0" - resolved "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.9.0.tgz#fc07a0086ac97aca174e37edb480b69277f3931f" - integrity sha512-4G8PHNJ0x6nwAFsEzcuVDiBlyMsj2y3VjmFAx/uHk/R/gzJV+yRHICjT4MKGGu1cJq2hfowFWCyrr/Gg37FbgQ== + version "10.6.0" + resolved "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.6.0.tgz#3e8011f760f399cbadcca7f10a485b729c50e3ed" + integrity sha512-I3w7ji/UXPi3VuWrTCbHG9rVCgB4yoBQLehGDTmsnDfXQb3r1l3WIdcO8JFp9m0YMmyy2CU7UOV6oPI7/Tmu+w== dependencies: "@babel/runtime" "^7.3.1" - jss "10.9.0" + jss "10.6.0" jss-plugin-nested@^10.5.1: - version "10.9.0" - resolved "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.9.0.tgz#cc1c7d63ad542c3ccc6e2c66c8328c6b6b00f4b3" - integrity sha512-2UJnDrfCZpMYcpPYR16oZB7VAC6b/1QLsRiAutOt7wJaaqwCBvNsosLEu/fUyKNQNGdvg2PPJFDO5AX7dwxtoA== + version "10.6.0" + resolved "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.6.0.tgz#5f83c5c337d3b38004834e8426957715a0251641" + integrity sha512-fOFQWgd98H89E6aJSNkEh2fAXquC9aZcAVjSw4q4RoQ9gU++emg18encR4AT4OOIFl4lQwt5nEyBBRn9V1Rk8g== dependencies: "@babel/runtime" "^7.3.1" - jss "10.9.0" + jss "10.6.0" tiny-warning "^1.0.2" jss-plugin-props-sort@^10.5.1: - version "10.9.0" - resolved "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.9.0.tgz#30e9567ef9479043feb6e5e59db09b4de687c47d" - integrity sha512-7A76HI8bzwqrsMOJTWKx/uD5v+U8piLnp5bvru7g/3ZEQOu1+PjHvv7bFdNO3DwNPC9oM0a//KwIJsIcDCjDzw== + version "10.6.0" + resolved "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.6.0.tgz#297879f35f9fe21196448579fee37bcde28ce6bc" + integrity sha512-oMCe7hgho2FllNc60d9VAfdtMrZPo9n1Iu6RNa+3p9n0Bkvnv/XX5San8fTPujrTBScPqv9mOE0nWVvIaohNuw== dependencies: "@babel/runtime" "^7.3.1" - jss "10.9.0" + jss "10.6.0" jss-plugin-rule-value-function@^10.5.1: - version "10.9.0" - resolved "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.9.0.tgz#379fd2732c0746fe45168011fe25544c1a295d67" - integrity sha512-IHJv6YrEf8pRzkY207cPmdbBstBaE+z8pazhPShfz0tZSDtRdQua5jjg6NMz3IbTasVx9FdnmptxPqSWL5tyJg== + version "10.6.0" + resolved "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.6.0.tgz#3c1a557236a139d0151e70a82c810ccce1c1c5ea" + integrity sha512-TKFqhRTDHN1QrPTMYRlIQUOC2FFQb271+AbnetURKlGvRl/eWLswcgHQajwuxI464uZk91sPiTtdGi7r7XaWfA== dependencies: "@babel/runtime" "^7.3.1" - jss "10.9.0" + jss "10.6.0" tiny-warning "^1.0.2" jss-plugin-vendor-prefixer@^10.5.1: - version "10.9.0" - resolved "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.9.0.tgz#aa9df98abfb3f75f7ed59a3ec50a5452461a206a" - integrity sha512-MbvsaXP7iiVdYVSEoi+blrW+AYnTDvHTW6I6zqi7JcwXdc6I9Kbm234nEblayhF38EftoenbM+5218pidmC5gA== + version "10.6.0" + resolved "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.6.0.tgz#e1fcd499352846890c38085b11dbd7aa1c4f2c78" + integrity sha512-doJ7MouBXT1lypLLctCwb4nJ6lDYqrTfVS3LtXgox42Xz0gXusXIIDboeh6UwnSmox90QpVnub7au8ybrb0krQ== dependencies: "@babel/runtime" "^7.3.1" css-vendor "^2.0.8" - jss "10.9.0" + jss "10.6.0" -jss@10.9.0, jss@^10.5.1: - version "10.9.0" - resolved "https://registry.npmjs.org/jss/-/jss-10.9.0.tgz#7583ee2cdc904a83c872ba695d1baab4b59c141b" - integrity sha512-YpzpreB6kUunQBbrlArlsMpXYyndt9JATbt95tajx0t4MTJJcCJdd4hdNpHmOIDiUJrF/oX5wtVFrS3uofWfGw== +jss@10.6.0, jss@^10.5.1: + version "10.6.0" + resolved "https://registry.npmjs.org/jss/-/jss-10.6.0.tgz#d92ff9d0f214f65ca1718591b68e107be4774149" + integrity sha512-n7SHdCozmxnzYGXBHe0NsO0eUf9TvsHVq2MXvi4JmTn3x5raynodDVE/9VQmBdWFyyj9HpHZ2B4xNZ7MMy7lkw== dependencies: "@babel/runtime" "^7.3.1" csstype "^3.0.2" + indefinite-observable "^2.0.1" is-in-browser "^1.1.3" tiny-warning "^1.0.2" -"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.2.1: +"jsx-ast-utils@^2.4.1 || ^3.0.0": + version "3.2.0" + resolved "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.0.tgz#41108d2cec408c3453c1bbe8a4aae9e1e2bd8f82" + integrity sha512-EIsmt3O3ljsU6sot/J4E1zDRxfBNrhjyf/OKjlydwgEimQuznlM4Wv7U+ueONJMyEn1WRE0K8dhi3dVAXYT24Q== + dependencies: + array-includes "^3.1.2" + object.assign "^4.1.2" + +jsx-ast-utils@^3.2.1: version "3.2.1" resolved "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.1.tgz#720b97bfe7d901b927d87c3773637ae8ea48781b" integrity sha512-uP5vu8xfy2F9A6LGC22KO7e2/vGTS1MhP+18f++ZNlf0Ohaxbc9nIEwHAsejlJKyzfZzU5UIhe5ItYkitcZnZA== @@ -14898,14 +16102,14 @@ jwt-decode@*, jwt-decode@^3.1.0: integrity sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A== kafkajs@^1.16.0-beta.6: - version "1.16.0" - resolved "https://registry.npmjs.org/kafkajs/-/kafkajs-1.16.0.tgz#bfcc3ae2b69265ca8435b53a01ee9e8787b9fee5" - integrity sha512-+Rcfu2hyQ/jv5skqRY8xA7Ra+mmRkDAzCaLDYbkGtgsNKpzxPWiLbk8ub0dgr4EbWrN1Zb4BCXHUkD6+zYfdWg== + version "1.16.0-beta.32" + resolved "https://registry.npmjs.org/kafkajs/-/kafkajs-1.16.0-beta.32.tgz#c39fe37367e200eeb95c9ae1412d79db4cf55eca" + integrity sha512-fXnpfvQI7b0xJNRMMiDX05ezfG1/MtDJPdWhQ1e6SptDB/xe8JaGJwd/Fzd2viwgwYzhmHSg681PNOkX4Dz2DQ== keyv-memcache@^1.2.5: - version "1.2.9" - resolved "https://registry.npmjs.org/keyv-memcache/-/keyv-memcache-1.2.9.tgz#68776b098233e4305ec729fbeb5ad5905f6ac914" - integrity sha512-hcHeihL/LjAhP1qvLSWuwCxDQlSkkGwlvH7RfIIO+57s7J5dhFLQQko1WcAbcd1jlxV6iPHAEvkDwp8c7XQzgA== + version "1.2.7" + resolved "https://registry.npmjs.org/keyv-memcache/-/keyv-memcache-1.2.7.tgz#b8a43eeecdb11ad8f4d6d64abd4298d014c74955" + integrity sha512-lD7QaHf9M+bq9XLFZVEXJ2HNqEvO5CmtjiJjB2FHifbEQ18+YRDTfJCjo88Roc0hXtIqz/QZjYXpIYL8EWpL1g== dependencies: json-buffer "^3.0.1" memjs "^1.3.0" @@ -14918,9 +16122,9 @@ keyv@^3.0.0: json-buffer "3.0.0" keyv@^4.0.0, keyv@^4.0.3: - version "4.1.1" - resolved "https://registry.npmjs.org/keyv/-/keyv-4.1.1.tgz#02c538bfdbd2a9308cc932d4096f05ae42bfa06a" - integrity sha512-tGv1yP6snQVDSM4X6yxrv2zzq/EvpW+oYiUz6aueW1u9CtS8RzUQYxxmFwgZlO2jSgCxQbchhxaqXXp2hnKGpQ== + version "4.1.0" + resolved "https://registry.npmjs.org/keyv/-/keyv-4.1.0.tgz#8ab5ca4ae6a34e05c629531d9a7f871575af0d5b" + integrity sha512-YsY3wr6HabE11/sscee+3nZ03XjvkrPWGouAmJFBdZoK92wiOlJCzI5/sDEIKdJhdhHO144ei45U9gXfbu14Uw== dependencies: json-buffer "3.0.1" @@ -14959,9 +16163,9 @@ kleur@^4.0.3: integrity sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA== knex@^1.0.2: - version "1.0.3" - resolved "https://registry.npmjs.org/knex/-/knex-1.0.3.tgz#a5f97aa98e5e036cfd0209a90d53b2a411280e84" - integrity sha512-rY1T7cgTQGHAUD9TshMka37bd+SEK+koPXXvZQEIoE8yjJ/E8ShsenaAmr3oaNNzqXuKD/SC0qlYtp7Js8tAXA== + version "1.0.2" + resolved "https://registry.npmjs.org/knex/-/knex-1.0.2.tgz#1b79273f39f587a631c1a5515482c203d5971781" + integrity sha512-RuDKTylj6X/3nYomnsFV8sOdxTcehLHczOd3yrUdULE4pQR8jVlZxYt3vvIU04otJF0Cw9DCtRt05S4PN4kDpw== dependencies: colorette "2.0.16" commander "^8.3.0" @@ -15007,9 +16211,9 @@ lazy-ass@1.6.0, lazy-ass@^1.6.0: integrity sha1-eZllXoZGwX8In90YfRUNMyTVRRM= lazystream@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz#494c831062f1f9408251ec44db1cba29242a2638" - integrity sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw== + version "1.0.0" + resolved "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4" + integrity sha1-9plf4PggOS9hOWvolGJAe7dxaOQ= dependencies: readable-stream "^2.0.5" @@ -15114,47 +16318,47 @@ li@^1.3.0: integrity sha1-IsWbyu+qmo7zWc91l4TkvxBq6hs= libnpmaccess@^4.0.1: - version "4.0.3" - resolved "https://registry.npmjs.org/libnpmaccess/-/libnpmaccess-4.0.3.tgz#dfb0e5b0a53c315a2610d300e46b4ddeb66e7eec" - integrity sha512-sPeTSNImksm8O2b6/pf3ikv4N567ERYEpeKRPSmqlNt1dTZbvgpJIzg5vAhXHpw2ISBsELFRelk0jEahj1c6nQ== + version "4.0.1" + resolved "https://registry.npmjs.org/libnpmaccess/-/libnpmaccess-4.0.1.tgz#17e842e03bef759854adf6eb6c2ede32e782639f" + integrity sha512-ZiAgvfUbvmkHoMTzdwmNWCrQRsDkOC+aM5BDfO0C9aOSwF3R1LdFDBD+Rer1KWtsoQYO35nXgmMR7OUHpDRxyA== dependencies: aproba "^2.0.0" minipass "^3.1.1" - npm-package-arg "^8.1.2" - npm-registry-fetch "^11.0.0" + npm-package-arg "^8.0.0" + npm-registry-fetch "^9.0.0" libnpmpublish@^4.0.0: - version "4.0.2" - resolved "https://registry.npmjs.org/libnpmpublish/-/libnpmpublish-4.0.2.tgz#be77e8bf5956131bcb45e3caa6b96a842dec0794" - integrity sha512-+AD7A2zbVeGRCFI2aO//oUmapCwy7GHqPXFJh3qpToSRNU+tXKJ2YFUgjt04LPPAf2dlEH95s6EhIHM1J7bmOw== + version "4.0.0" + resolved "https://registry.npmjs.org/libnpmpublish/-/libnpmpublish-4.0.0.tgz#ad6413914e0dfd78df868ce14ba3d3a4cc8b385b" + integrity sha512-2RwYXRfZAB1x/9udKpZmqEzSqNd7ouBRU52jyG14/xG8EF+O9A62d7/XVR3iABEQHf1iYhkm0Oq9iXjrL3tsXA== dependencies: - normalize-package-data "^3.0.2" - npm-package-arg "^8.1.2" - npm-registry-fetch "^11.0.0" + normalize-package-data "^3.0.0" + npm-package-arg "^8.1.0" + npm-registry-fetch "^9.0.0" semver "^7.1.3" - ssri "^8.0.1" + ssri "^8.0.0" -lilconfig@2.0.4, lilconfig@^2.0.3, lilconfig@^2.0.4: +lilconfig@2.0.4, lilconfig@^2.0.3: version "2.0.4" resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.4.tgz#f4507d043d7058b380b6a8f5cb7bcd4b34cee082" integrity sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA== lines-and-columns@^1.1.6: - version "1.2.4" - resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" - integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + version "1.1.6" + resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" + integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= linkify-it@^3.0.1: - version "3.0.3" - resolved "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz#a98baf44ce45a550efb4d49c769d07524cc2fa2e" - integrity sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ== + version "3.0.2" + resolved "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.2.tgz#f55eeb8bc1d3ae754049e124ab3bb56d97797fb8" + integrity sha512-gDBO4aHNZS6coiZCKVhSNh43F9ioIL4JwRjLZPkoLIY4yZFwg264Y5lu2x6rb1Js42Gh6Yqm2f6L2AJcnkzinQ== dependencies: uc.micro "^1.0.1" lint-staged@^12.2.0: - version "12.3.4" - resolved "https://registry.npmjs.org/lint-staged/-/lint-staged-12.3.4.tgz#4b1ff8c394c3e6da436aaec5afd4db18b5dac360" - integrity sha512-yv/iK4WwZ7/v0GtVkNb3R82pdL9M+ScpIbJLJNyCXkJ1FGaXvRCOg/SeL59SZtPpqZhE7BD6kPKFLIDUhDx2/w== + version "12.3.3" + resolved "https://registry.npmjs.org/lint-staged/-/lint-staged-12.3.3.tgz#0a465962fe53baa2b4b9da50801ead49a910e03b" + integrity sha512-OqcLsqcPOqzvsfkxjeBpZylgJ3SRG1RYqc9LxC6tkt6tNsq1bNVkAixBwX09f6CobcHswzqVOCBpFR1Fck0+ag== dependencies: cli-truncate "^3.1.0" colorette "^2.0.16" @@ -15204,31 +16408,17 @@ listr-verbose-renderer@^0.5.0: date-fns "^1.27.2" figures "^2.0.0" -listr2@^3.8.3: - version "3.14.0" - resolved "https://registry.npmjs.org/listr2/-/listr2-3.14.0.tgz#23101cc62e1375fd5836b248276d1d2b51fdbe9e" - integrity sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g== - dependencies: - cli-truncate "^2.1.0" - colorette "^2.0.16" - log-update "^4.0.0" - p-map "^4.0.0" - rfdc "^1.3.0" - rxjs "^7.5.1" - through "^2.3.8" - wrap-ansi "^7.0.0" - listr2@^4.0.1: - version "4.0.4" - resolved "https://registry.npmjs.org/listr2/-/listr2-4.0.4.tgz#d098a1c419284fb26e184b5d5889b235e8912245" - integrity sha512-vJOm5KD6uZXjSsrwajr+mNacIjf87gWvlBEltPWLbTkslUscWAzquyK4xfe9Zd4RDgO5nnwFyV06FC+uVR+5mg== + version "4.0.2" + resolved "https://registry.npmjs.org/listr2/-/listr2-4.0.2.tgz#04d66f8c8694a14920d7df08ebe01568948fb500" + integrity sha512-YcgwfCWpvPbj9FLUGqvdFvd3hrFWKpOeuXznRgfWEJ7RNr8b/IKKIKZABHx3aU+4CWN/iSAFFSReziQG6vTeIA== dependencies: cli-truncate "^2.1.0" colorette "^2.0.16" log-update "^4.0.0" p-map "^4.0.0" rfdc "^1.3.0" - rxjs "^7.5.4" + rxjs "^7.5.2" through "^2.3.8" wrap-ansi "^7.0.0" @@ -15247,6 +16437,20 @@ listr@^0.14.3: p-map "^2.0.0" rxjs "^6.3.3" +load-bmfont@^1.3.1, load-bmfont@^1.4.0: + version "1.4.1" + resolved "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.4.1.tgz#c0f5f4711a1e2ccff725a7b6078087ccfcddd3e9" + integrity sha512-8UyQoYmdRDy81Brz6aLAUhfZLwr5zV0L3taTQ4hju7m6biuwiWiJXjPhBJxbUQJA8PrkvJ/7Enqmwk2sM14soA== + dependencies: + buffer-equal "0.0.1" + mime "^1.3.4" + parse-bmfont-ascii "^1.0.3" + parse-bmfont-binary "^1.0.5" + parse-bmfont-xml "^1.1.4" + phin "^2.9.1" + xhr "^2.0.1" + xtend "^4.0.0" + load-json-file@^1.0.0: version "1.1.0" resolved "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" @@ -15303,9 +16507,9 @@ loader-utils@^1.1.0: json5 "^1.0.1" loader-utils@^2.0.0: - version "2.0.2" - resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz#d6e3b4fb81870721ae4e0868ab11dd638368c129" - integrity sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A== + version "2.0.0" + resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz#e4cace5b816d425a166b5f097e10cd12b36064b0" + integrity sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ== dependencies: big.js "^5.2.2" emojis-list "^3.0.0" @@ -15541,7 +16745,7 @@ lodash.without@^4.4.0: resolved "https://registry.npmjs.org/lodash.without/-/lodash.without-4.4.0.tgz#3cd4574a00b67bae373a94b748772640507b7aac" integrity sha1-PNRXSgC2e643OpS3SHcmQFB7eqw= -lodash@4.17.21, lodash@^4.17.10, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.7.0, lodash@~4.17.0, lodash@~4.17.15, lodash@~4.17.4: +lodash@4.17.21, lodash@^4.17.10, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.7.0, lodash@~4.17.0, lodash@~4.17.15, lodash@~4.17.4: version "4.17.21" resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -15580,15 +16784,15 @@ log-update@^4.0.0: slice-ansi "^4.0.0" wrap-ansi "^6.2.0" -logform@^2.3.2, logform@^2.4.0: - version "2.4.0" - resolved "https://registry.npmjs.org/logform/-/logform-2.4.0.tgz#131651715a17d50f09c2a2c1a524ff1a4164bcfe" - integrity sha512-CPSJw4ftjf517EhXZGGvTHHkYobo7ZCc0kvwUoOYcjfR2UVrI66RHj8MCrfAdEitdmFqbu2BYdYs8FHHZSb6iw== +logform@^2.3.2: + version "2.3.2" + resolved "https://registry.npmjs.org/logform/-/logform-2.3.2.tgz#68babe6a74ab09a1fd15a9b1e6cbc7713d41cb5b" + integrity sha512-V6JiPThZzTsbVRspNO6TmHkR99oqYTs8fivMBYQkjZj6rxW92KxtDCPE6IkAk1DNBnYKNkjm4jYBm6JDUcyhOA== dependencies: - "@colors/colors" "1.5.0" + colors "1.4.0" fecha "^4.2.0" ms "^2.1.1" - safe-stable-stringify "^2.3.1" + safe-stable-stringify "^1.1.0" triple-beam "^1.3.0" loglevel@^1.6.8: @@ -15602,9 +16806,9 @@ long@^4.0.0: integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== longest-streak@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/longest-streak/-/longest-streak-3.0.1.tgz#c97315b7afa0e7d9525db9a5a2953651432bdc5d" - integrity sha512-cHlYSUpL2s7Fb3394mYxwTYj8niTaNHUCLr0qdiCXQfSjfuA7CKofpX2uSwEfFDQ0EB7JcnMnm+GjbqqoinYYg== + version "3.0.0" + resolved "https://registry.npmjs.org/longest-streak/-/longest-streak-3.0.0.tgz#f127e2bded83caa6a35ac5f7a2f2b2f94b36f3dc" + integrity sha512-XhUjWR5CFaQ03JOP+iSDS9koy8T5jfoImCZ4XprElw3BXsSk4MpVYOLw/6LTDKZhO13PlAXnB5gS4MHQTpkSOw== loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: version "1.4.0" @@ -15672,6 +16876,13 @@ lru-cache@^7.3.1: resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-7.3.1.tgz#7702e80694ec2bf19865567a469f2b081fcf53f5" integrity sha512-nX1x4qUrKqwbIAhv4s9et4FIUVzNOpeY07bsjGUy8gwJrXH/wScImSQqXErmo/b2jZY2r0mohbLA9zVj7u1cNw== +lru-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz#2738bd9f0d3cf4f84490c5736c48699ac632cda3" + integrity sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM= + dependencies: + es5-ext "~0.10.2" + lunr@^2.3.9: version "2.3.9" resolved "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz#18b123142832337dd6e964df1a5a7707b25d35e1" @@ -15687,6 +16898,11 @@ lz-string@^1.4.4: resolved "https://registry.npmjs.org/lz-string/-/lz-string-1.4.4.tgz#c0d8eaf36059f705796e1e344811cf4c498d3a26" integrity sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY= +macos-release@^2.2.0: + version "2.3.0" + resolved "https://registry.npmjs.org/macos-release/-/macos-release-2.3.0.tgz#eb1930b036c0800adebccd5f17bc4c12de8bb71f" + integrity sha512-OHhSbtcviqMPt7yfw5ef5aghS2jzFVKEFyCJndQt2YpSQ9qRVSEv2axSJI1paVThEu+FFGs584h/1YhxjVqajA== + magic-string@^0.25.7: version "0.25.7" resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" @@ -15702,7 +16918,14 @@ make-dir@^2.0.0, make-dir@^2.1.0: pify "^4.0.1" semver "^5.6.0" -make-dir@^3.0.0, make-dir@^3.1.0: +make-dir@^3.0.0: + version "3.0.2" + resolved "https://registry.npmjs.org/make-dir/-/make-dir-3.0.2.tgz#04a1acbf22221e1d6ef43559f43e05a90dbb4392" + integrity sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w== + dependencies: + semver "^6.0.0" + +make-dir@^3.1.0: version "3.1.0" resolved "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== @@ -15715,9 +16938,9 @@ make-error@^1, make-error@^1.1.1, make-error@^1.3.6: integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== make-fetch-happen@^10.0.1: - version "10.0.3" - resolved "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.0.3.tgz#94bbe675cf62a811dbab59668052388a078beaf2" - integrity sha512-CzarPHynPpHjhF5in/YapnO44rSZeYX5VCMfdXa99+gLwpbfFLh20CWa6dP/taV9Net9PWJwXNKtp/4ZTCQnag== + version "10.0.2" + resolved "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.0.2.tgz#0afb38d2f951b17ebc482b0b16c8d77f39dfe389" + integrity sha512-JSFLK53NJP22FL/eAGOyKsWbc2G3v+toPMD7Dq9PJKQCvK0i3t8hGkKxe+3YZzwYa+c0kxRHu7uxH3fvO+rsaA== dependencies: agentkeepalive "^4.2.0" cacache "^15.3.0" @@ -15757,7 +16980,7 @@ make-fetch-happen@^8.0.9: socks-proxy-agent "^5.0.0" ssri "^8.0.0" -make-fetch-happen@^9.0.1, make-fetch-happen@^9.1.0: +make-fetch-happen@^9.1.0: version "9.1.0" resolved "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz#53085a09e7971433e6765f7971bf63f4e05cb968" integrity sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg== @@ -15779,12 +17002,12 @@ make-fetch-happen@^9.0.1, make-fetch-happen@^9.1.0: socks-proxy-agent "^6.0.0" ssri "^8.0.0" -makeerror@1.0.12: - version "1.0.12" - resolved "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" - integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== +makeerror@1.0.x: + version "1.0.11" + resolved "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" + integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw= dependencies: - tmpl "1.0.5" + tmpl "1.0.x" map-cache@^0.2.0, map-cache@^0.2.2: version "0.2.2" @@ -15825,14 +17048,14 @@ markdown-it@^12.2.0: uc.micro "^1.0.5" markdown-table@^3.0.0: - version "3.0.2" - resolved "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.2.tgz#9b59eb2c1b22fe71954a65ff512887065a7bb57c" - integrity sha512-y8j3a5/DkJCmS5x4dMCQL+OR0+2EAq3DOtio1COSHsmW2BGXnNCK3v12hJt1LrUz5iZH5g0LmuYOjDdI+czghA== + version "3.0.1" + resolved "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.1.tgz#88c48957aaf2a8014ccb2ba026776a1d736fe3dc" + integrity sha512-CBbaYXKSGnE1uLRpKA1SWgIRb2PQrpkllNWpZtZe6VojOJ4ysqiq7/2glYcmKsOYN09QgH/HEBX5hIshAeiK6A== marked@^4.0.10: - version "4.0.12" - resolved "https://registry.npmjs.org/marked/-/marked-4.0.12.tgz#2262a4e6fd1afd2f13557726238b69a48b982f7d" - integrity sha512-hgibXWrEDNBWgGiK18j/4lkS6ihTe9sxtV4Q1OQppb/0zzyPSzoFANBa5MfsG/zgsWklmNnhm0XACZOH/0HBiQ== + version "4.0.10" + resolved "https://registry.npmjs.org/marked/-/marked-4.0.10.tgz#423e295385cc0c3a70fa495e0df68b007b879423" + integrity sha512-+QvuFj0nGgO970fySghXGmuw+Fd0gD2x3+MqCWLIPf5oxdv1Ka6b2q+z9RP01P/IaKPMEramy+7cNy/Lw8c3hw== material-ui-search-bar@^1.0.0: version "1.0.0" @@ -15843,9 +17066,9 @@ material-ui-search-bar@^1.0.0: prop-types "^15.5.8" math-expression-evaluator@^1.2.14: - version "1.3.14" - resolved "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.3.14.tgz#0ebeaccf65fea0f6f5a626f88df41814e5fcd9bf" - integrity sha512-M6AMrvq9bO8uL42KvQHPA2/SbAobA0R7gviUmPrcTcGfdwpaLitz4q2Euzx2lP9Oy88vxK3HOrsISgSwKsYS4A== + version "1.2.22" + resolved "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.2.22.tgz#c14dcb3d8b4d150e5dcea9c68c8dad80309b0d5e" + integrity sha512-L0j0tFVZBQQLeEjmWOvDLoRciIY8gQGWahvkztXUal8jH8R5Rlqo9GCvgqvXcy9LQhEWdQCVvzqAbxgYNt4blQ== md5.js@^1.3.4: version "1.3.5" @@ -15875,13 +17098,12 @@ mdast-util-find-and-replace@^2.0.0: unist-util-visit-parents "^4.0.0" mdast-util-from-markdown@^1.0.0: - version "1.2.0" - resolved "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.2.0.tgz#84df2924ccc6c995dec1e2368b2b208ad0a76268" - integrity sha512-iZJyyvKD1+K7QX1b5jXdE7Sc5dtoTry1vzV28UZZe8Z1xVnB/czKntJ7ZAkG0tANqRnBF6p3p7GpU1y19DTf2Q== + version "1.0.2" + resolved "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.0.2.tgz#7c793bb96b053d12f032e37382ae989efb70ee66" + integrity sha512-gXaxv/5fGdrr9TqSMlQK7FmshK8yR9DvW3+NapMBDm44inORxIZVJa1D3yjrUT9ISu8tB/jjblEkUzyzclquNg== dependencies: "@types/mdast" "^3.0.0" "@types/unist" "^2.0.0" - decode-named-character-reference "^1.0.0" mdast-util-to-string "^3.1.0" micromark "^3.0.0" micromark-util-decode-numeric-character-reference "^1.0.0" @@ -15889,8 +17111,8 @@ mdast-util-from-markdown@^1.0.0: micromark-util-normalize-identifier "^1.0.0" micromark-util-symbol "^1.0.0" micromark-util-types "^1.0.0" + parse-entities "^3.0.0" unist-util-stringify-position "^3.0.0" - uvu "^0.5.0" mdast-util-gfm-autolink-literal@^1.0.0: version "1.0.2" @@ -15903,37 +17125,38 @@ mdast-util-gfm-autolink-literal@^1.0.0: micromark-util-character "^1.0.0" mdast-util-gfm-footnote@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-1.0.1.tgz#11d2d40a1a673a399c459e467fa85e00223191fe" - integrity sha512-p+PrYlkw9DeCRkTVw1duWqPRHX6Ywh2BNKJQcZbCwAuP/59B0Lk9kakuAd7KbQprVO4GzdW8eS5++A9PUSqIyw== + version "1.0.0" + resolved "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-1.0.0.tgz#355c1e8dc9e17e871d1b3fa5da8824923fc756e0" + integrity sha512-qeg9YoS2YYP6OBmMyUFxKXb6BLwAsbGidIxgwDAXHIMYZQhIwe52L9BSJs+zP29Jp5nSERPkmG3tSwAN23/ZbQ== dependencies: "@types/mdast" "^3.0.0" - mdast-util-to-markdown "^1.3.0" + mdast-util-to-markdown "^1.0.0" micromark-util-normalize-identifier "^1.0.0" + unist-util-visit "^4.0.0" mdast-util-gfm-strikethrough@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-1.0.1.tgz#a4a74c36864ec6a6e3bbd31e1977f29beb475789" - integrity sha512-zKJbEPe+JP6EUv0mZ0tQUyLQOC+FADt0bARldONot/nefuISkaZFlmVK4tU6JgfyZGrky02m/I6PmehgAgZgqg== + version "1.0.0" + resolved "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-1.0.0.tgz#6cc72ef5d9539f4cee76af3f15dd0daa9e3af40f" + integrity sha512-gM9ipBUdRxYa6Yq1Hd8Otg6jEn/dRxFZ1F9ZX4QHosHOexLGqNZO2dh0A+YFbUEd10RcKjnjb4jOfJJzoXXUew== dependencies: - "@types/mdast" "^3.0.0" - mdast-util-to-markdown "^1.3.0" + "@types/mdast" "^3.0.3" + mdast-util-to-markdown "^1.0.0" mdast-util-gfm-table@^1.0.0: - version "1.0.3" - resolved "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-1.0.3.tgz#5f880aa6ecd1a9307cd7127f3d94c631ea88da07" - integrity sha512-B/tgpJjND1qIZM2WZst+NYnb0notPE6m0J+YOe3NOHXyEmvK38ytxaOsgz4BvrRPQQcNbRrTzSHMPnBkj1fCjg== + version "1.0.1" + resolved "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-1.0.1.tgz#07c269a219d66ec2deb6de38aed0ba1d1f9442df" + integrity sha512-NByKuaSg5+M6r9DZBPXFUmhMHGFf9u+WE76EeStN01ghi8hpnydiWBXr+qj0XCRWI7SAMNtEjGvip6zci9axQA== dependencies: markdown-table "^3.0.0" - mdast-util-to-markdown "^1.3.0" + mdast-util-to-markdown "^1.0.0" mdast-util-gfm-task-list-item@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-1.0.1.tgz#6f35f09c6e2bcbe88af62fdea02ac199cc802c5c" - integrity sha512-KZ4KLmPdABXOsfnM6JHUIjxEvcx2ulk656Z/4Balw071/5qgnhz+H1uGtf2zIGnrnvDC8xR4Fj9uKbjAFGNIeA== + version "1.0.0" + resolved "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-1.0.0.tgz#a0aa2a00c893f9f006d13ba096cbc64608559c7f" + integrity sha512-dwkzOTjQe8JCCHVE3Cb0pLHTYLudf7t9WCAnb20jI8/dW+VHjgWhjtIUVA3oigNkssgjEwX+i+3XesUdCnXGyA== dependencies: - "@types/mdast" "^3.0.0" - mdast-util-to-markdown "^1.3.0" + "@types/mdast" "^3.0.3" + mdast-util-to-markdown "^1.0.0" mdast-util-gfm@^2.0.0: version "2.0.0" @@ -15962,10 +17185,10 @@ mdast-util-to-hast@^12.1.0: unist-util-position "^4.0.0" unist-util-visit "^4.0.0" -mdast-util-to-markdown@^1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-1.3.0.tgz#38b6cdc8dc417de642a469c4fc2abdf8c931bd1e" - integrity sha512-6tUSs4r+KK4JGTTiQ7FfHmVOaDrLQJPmpjD6wPMlHGUVXoG9Vjc3jIeP+uyBWRf8clwB2blM+W7+KrlMYQnftA== +mdast-util-to-markdown@^1.0.0: + version "1.2.3" + resolved "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-1.2.3.tgz#2b3af92bf0e29080927eb59a8a10cd0a7398e093" + integrity sha512-040jJYtjOUdbvYAXCfPrpLJRdvMOmR33KRqlhT4r+fEbVM+jao1RMbA8RmGeRmw8RAj3vQ+HvhIaJPijvnOwCg== dependencies: "@types/mdast" "^3.0.0" "@types/unist" "^2.0.0" @@ -15996,9 +17219,9 @@ media-typer@0.3.0: integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= "mem-fs-editor@^8.1.2 || ^9.0.0": - version "9.4.0" - resolved "https://registry.npmjs.org/mem-fs-editor/-/mem-fs-editor-9.4.0.tgz#0cc1cf61350e33c25fc364c97fb0551eb32b8c9b" - integrity sha512-HSSOLSVRrsDdui9I6i96dDtG+oAez/4EB2g4cjSrNhgNQ3M+L57/+22NuPdORSoxvOHjIg/xeOE+C0wwF91D2g== + version "9.3.0" + resolved "https://registry.npmjs.org/mem-fs-editor/-/mem-fs-editor-9.3.0.tgz#85ce80541b1961d1d9f433e275c7cee9d0a1c9a2" + integrity sha512-QKFbPwGCh1ypmc2H8BUYpbapwT/x2AOCYZQogzSui4rUNes7WVMagQXsirPIfp18EarX0SSY9Fpg426nSjew4Q== dependencies: binaryextensions "^4.16.0" commondir "^1.0.1" @@ -16021,7 +17244,7 @@ media-typer@0.3.0: vinyl "^2.0.1" vinyl-file "^3.0.0" -memfs@^3.1.2, memfs@^3.4.1: +memfs@^3.1.2, memfs@^3.2.2, memfs@^3.4.1: version "3.4.1" resolved "https://registry.npmjs.org/memfs/-/memfs-3.4.1.tgz#b78092f466a0dce054d63d39275b24c71d3f1305" integrity sha512-1c9VPVvW5P7I85c35zAdEr1TD5+F11IToIHIlrVIcflfnzPkJa0ZoYEoEdYDP8KgPFoSZ/opDrUsAoZWym3mtw== @@ -16033,11 +17256,30 @@ memjs@^1.3.0: resolved "https://registry.npmjs.org/memjs/-/memjs-1.3.0.tgz#b7959b4ff3770e4c785463fd147f1e4fafd47a24" integrity sha512-y/V9a0auepA9Lgyr4QieK6K2FczjHucEdTpSS+hHVNmVEkYxruXhkHu8n6DSRQ4HXHEE3cc6Sf9f88WCJXGXsQ== -"memoize-one@>=3.1.1 <6", memoize-one@^5.1.1: +"memoize-one@>=3.1.1 <6": version "5.2.1" resolved "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz#8337aa3c4335581839ec01c3d594090cebe8f00e" integrity sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q== +memoize-one@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/memoize-one/-/memoize-one-5.1.1.tgz#047b6e3199b508eaec03504de71229b8eb1d75c0" + integrity sha512-HKeeBpWvqiVJD57ZUAsJNm71eHTykffzcLZVYWiVfQeI1rJtuEaS7hQiEpWfVVk18donPwJEcFKIkCmPJNOhHA== + +memoizee@^0.4.15: + version "0.4.15" + resolved "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz#e6f3d2da863f318d02225391829a6c5956555b72" + integrity sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ== + dependencies: + d "^1.0.1" + es5-ext "^0.10.53" + es6-weak-map "^2.0.3" + event-emitter "^0.3.5" + is-promise "^2.2.2" + lru-queue "^0.1.0" + next-tick "^1.1.0" + timers-ext "^0.1.7" + meow@^6.0.0: version "6.1.1" resolved "https://registry.npmjs.org/meow/-/meow-6.1.1.tgz#1ad64c4b76b2a24dfb2f635fddcadf320d251467" @@ -16082,10 +17324,15 @@ merge-stream@^2.0.0: resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== -merge2@^1.3.0, merge2@^1.4.1: - version "1.4.1" - resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== +merge2@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/merge2/-/merge2-1.3.0.tgz#5b366ee83b2f1582c48f87e47cf1a9352103ca81" + integrity sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw== + +merge@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/merge/-/merge-1.2.1.tgz#38bebf80c3220a8a487b6fcfb3941bb11720c145" + integrity sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ== meros@1.1.4, meros@^1.1.4: version "1.1.4" @@ -16102,7 +17349,7 @@ metric-lcs@^0.1.2: resolved "https://registry.npmjs.org/metric-lcs/-/metric-lcs-0.1.2.tgz#87913f149410e39c7c5a19037512814eaf155e11" integrity sha512-+TZ5dUDPKPJaU/rscTzxyN8ZkX7eAVLAiQU/e+YINleXPv03SCmJShaMT1If1liTH8OcmWXZs0CmzCBRBLcMpA== -micromark-core-commonmark@^1.0.0, micromark-core-commonmark@^1.0.1: +micromark-core-commonmark@^1.0.0: version "1.0.6" resolved "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-1.0.6.tgz#edff4c72e5993d93724a3c206970f5a15b0585ad" integrity sha512-K+PkJTxqjFfSNkfAhp4GB+cZPfQd6dxtTXnf+RjZOV7T4EEXnvgzOcnp+eSTmpGk9d1S9sL6/lqrgSNn/s0HZA== @@ -16124,16 +17371,36 @@ micromark-core-commonmark@^1.0.0, micromark-core-commonmark@^1.0.1: micromark-util-types "^1.0.1" uvu "^0.5.0" +micromark-core-commonmark@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-1.0.1.tgz#a64987cafe872e8b80bc8f2352a5d988586ac4f1" + integrity sha512-vEOw8hcQ3nwHkKKNIyP9wBi8M50zjNajtmI+cCUWcVfJS+v5/3WCh4PLKf7PPRZFUutjzl4ZjlHwBWUKfb/SkA== + dependencies: + micromark-factory-destination "^1.0.0" + micromark-factory-label "^1.0.0" + micromark-factory-space "^1.0.0" + micromark-factory-title "^1.0.0" + micromark-factory-whitespace "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-chunked "^1.0.0" + micromark-util-classify-character "^1.0.0" + micromark-util-html-tag-name "^1.0.0" + micromark-util-normalize-identifier "^1.0.0" + micromark-util-resolve-all "^1.0.0" + micromark-util-subtokenize "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.1" + parse-entities "^3.0.0" + micromark-extension-gfm-autolink-literal@^1.0.0: - version "1.0.3" - resolved "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-1.0.3.tgz#dc589f9c37eaff31a175bab49f12290edcf96058" - integrity sha512-i3dmvU0htawfWED8aHMMAzAVp/F0Z+0bPh3YrbTPPL1v4YAlCZpy5rBO5p0LPYiZo0zFVkoYh7vDU7yQSiCMjg== + version "1.0.0" + resolved "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-1.0.0.tgz#1a49a62bfcb00f9dff87ab39f3b21a108612dc24" + integrity sha512-t+K0aPK32mXypVTEKV+WRfoT/Rb7MERDgHZVRr56NXpyQQhgMk72QnK4NljYUlrgbuesH+MxiPQwThzqRDIwvA== dependencies: micromark-util-character "^1.0.0" micromark-util-sanitize-uri "^1.0.0" micromark-util-symbol "^1.0.0" micromark-util-types "^1.0.0" - uvu "^0.5.0" micromark-extension-gfm-footnote@^1.0.0: version "1.0.3" @@ -16149,45 +17416,42 @@ micromark-extension-gfm-footnote@^1.0.0: uvu "^0.5.0" micromark-extension-gfm-strikethrough@^1.0.0: - version "1.0.4" - resolved "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-1.0.4.tgz#162232c284ffbedd8c74e59c1525bda217295e18" - integrity sha512-/vjHU/lalmjZCT5xt7CcHVJGq8sYRm80z24qAKXzaHzem/xsDYb2yLL+NNVbYvmpLx3O7SYPuGL5pzusL9CLIQ== + version "1.0.1" + resolved "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-1.0.1.tgz#9f53ab4f5dc8c0525a889850bae615f074a98a27" + integrity sha512-fzGYXWz9HPWH1uHqYwdyR8XpEtuoYVHUjTdPQTnl3ETVZOQe1NXMwE3RA7AMqeON52hG+kO9g1/P1+pLONBSMQ== dependencies: micromark-util-chunked "^1.0.0" micromark-util-classify-character "^1.0.0" micromark-util-resolve-all "^1.0.0" micromark-util-symbol "^1.0.0" micromark-util-types "^1.0.0" - uvu "^0.5.0" micromark-extension-gfm-table@^1.0.0: - version "1.0.5" - resolved "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-1.0.5.tgz#7b708b728f8dc4d95d486b9e7a2262f9cddbcbb4" - integrity sha512-xAZ8J1X9W9K3JTJTUL7G6wSKhp2ZYHrFk5qJgY/4B33scJzE2kpfRL6oiw/veJTbt7jiM/1rngLlOKPWr1G+vg== + version "1.0.0" + resolved "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-1.0.0.tgz#f0d35dbf008b6182311049f9137323d34a54c7a0" + integrity sha512-OATRuHDgEAT/aaJJRSdU12V+s01kNSnJ0jumdfLq5mPy0F5DkR3zbTSFLH4tjVYM0/kEG6umxIhHY62mFe4z5Q== dependencies: micromark-factory-space "^1.0.0" micromark-util-character "^1.0.0" micromark-util-symbol "^1.0.0" micromark-util-types "^1.0.0" - uvu "^0.5.0" micromark-extension-gfm-tagfilter@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-1.0.1.tgz#fb2e303f7daf616db428bb6a26e18fda14a90a4d" - integrity sha512-Ty6psLAcAjboRa/UKUbbUcwjVAv5plxmpUTy2XC/3nJFL37eHej8jrHrRzkqcpipJliuBH30DTs7+3wqNcQUVA== + version "1.0.0" + resolved "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-1.0.0.tgz#a38c7c462c2007b534fcb485e9310165879654a7" + integrity sha512-GGUZhzQrOdHR8RHU2ru6K+4LMlj+pBdNuXRtw5prOflDOk2hHqDB0xEgej1AHJ2VETeycX7tzQh2EmaTUOmSKg== dependencies: micromark-util-types "^1.0.0" micromark-extension-gfm-task-list-item@^1.0.0: - version "1.0.3" - resolved "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-1.0.3.tgz#7683641df5d4a09795f353574d7f7f66e47b7fc4" - integrity sha512-PpysK2S1Q/5VXi72IIapbi/jliaiOFzv7THH4amwXeYXLq3l1uo8/2Be0Ac1rEwK20MQEsGH2ltAZLNY2KI/0Q== + version "1.0.0" + resolved "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-1.0.0.tgz#ab38b2b4ead4e746189d6323c32cacab2c63599d" + integrity sha512-3tkHCq1NNwijtwpjYba9+rl1yvQ4xYg8iQpUAfTJRyq8MtIEsBUF/vW6B9Gh8Qwy1hE2FmpyHhP4jnFAt61zLg== dependencies: micromark-factory-space "^1.0.0" micromark-util-character "^1.0.0" micromark-util-symbol "^1.0.0" micromark-util-types "^1.0.0" - uvu "^0.5.0" micromark-extension-gfm@^2.0.0: version "2.0.1" @@ -16213,14 +17477,13 @@ micromark-factory-destination@^1.0.0: micromark-util-types "^1.0.0" micromark-factory-label@^1.0.0: - version "1.0.2" - resolved "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-1.0.2.tgz#6be2551fa8d13542fcbbac478258fb7a20047137" - integrity sha512-CTIwxlOnU7dEshXDQ+dsr2n+yxpP0+fn271pu0bwDIS8uqfFcumXpj5mLn3hSC8iw2MUr6Gx8EcKng1dD7i6hg== + version "1.0.0" + resolved "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-1.0.0.tgz#b316ec479b474232973ff13b49b576f84a6f2cbb" + integrity sha512-XWEucVZb+qBCe2jmlOnWr6sWSY6NHx+wtpgYFsm4G+dufOf6tTQRRo0bdO7XSlGPu5fyjpJenth6Ksnc5Mwfww== dependencies: micromark-util-character "^1.0.0" micromark-util-symbol "^1.0.0" micromark-util-types "^1.0.0" - uvu "^0.5.0" micromark-factory-space@^1.0.0: version "1.0.0" @@ -16231,15 +17494,14 @@ micromark-factory-space@^1.0.0: micromark-util-types "^1.0.0" micromark-factory-title@^1.0.0: - version "1.0.2" - resolved "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-1.0.2.tgz#7e09287c3748ff1693930f176e1c4a328382494f" - integrity sha512-zily+Nr4yFqgMGRKLpTVsNl5L4PMu485fGFDOQJQBl2NFpjGte1e86zC0da93wf97jrc4+2G2GQudFMHn3IX+A== + version "1.0.0" + resolved "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-1.0.0.tgz#708f7a8044f34a898c0efdb4f55e4da66b537273" + integrity sha512-flvC7Gx0dWVWorXuBl09Cr3wB5FTuYec8pMGVySIp2ZlqTcIjN/lFohZcP0EG//krTptm34kozHk7aK/CleCfA== dependencies: micromark-factory-space "^1.0.0" micromark-util-character "^1.0.0" micromark-util-symbol "^1.0.0" micromark-util-types "^1.0.0" - uvu "^0.5.0" micromark-factory-whitespace@^1.0.0: version "1.0.0" @@ -16291,19 +17553,18 @@ micromark-util-decode-numeric-character-reference@^1.0.0: micromark-util-symbol "^1.0.0" micromark-util-decode-string@^1.0.0: - version "1.0.2" - resolved "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-1.0.2.tgz#942252ab7a76dec2dbf089cc32505ee2bc3acf02" - integrity sha512-DLT5Ho02qr6QWVNYbRZ3RYOSSWWFuH3tJexd3dgN1odEuPNxCngTCXJum7+ViRAd9BbdxCvMToPOD/IvVhzG6Q== + version "1.0.0" + resolved "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-1.0.0.tgz#f97946825231d9c97df767875064401774578a6e" + integrity sha512-4g5UJ8P/J8wuRKUXCcB7udQuOBXpLyvBQSLSuznfBLCG+thKG6UTwFnXfHkrr/1wddprkUbPatCzxDjrJ+5zDg== dependencies: - decode-named-character-reference "^1.0.0" micromark-util-character "^1.0.0" micromark-util-decode-numeric-character-reference "^1.0.0" - micromark-util-symbol "^1.0.0" + parse-entities "^3.0.0" micromark-util-encode@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-1.0.1.tgz#2c1c22d3800870ad770ece5686ebca5920353383" - integrity sha512-U2s5YdnAYexjKDel31SVMPbfi+eF8y1U4pfiRW/Y8EFVCy/vgxk/2wWTxzcqE71LHtCuCzlBDRU2a5CQ5j+mQA== + version "1.0.0" + resolved "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-1.0.0.tgz#c409ecf751a28aa9564b599db35640fccec4c068" + integrity sha512-cJpFVM768h6zkd8qJ1LNRrITfY4gwFt+tziPcIf71Ui8yFzY9wG3snZQqiWVq93PG4Sw6YOtcNiKJfVIs9qfGg== micromark-util-html-tag-name@^1.0.0: version "1.0.0" @@ -16334,33 +17595,31 @@ micromark-util-sanitize-uri@^1.0.0: micromark-util-symbol "^1.0.0" micromark-util-subtokenize@^1.0.0: - version "1.0.2" - resolved "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-1.0.2.tgz#ff6f1af6ac836f8bfdbf9b02f40431760ad89105" - integrity sha512-d90uqCnXp/cy4G881Ub4psE57Sf8YD0pim9QdjCRNjfas2M1u6Lbt+XZK9gnHL2XFhnozZiEdCa9CNfXSfQ6xA== + version "1.0.0" + resolved "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-1.0.0.tgz#6f006fa719af92776c75a264daaede0fb3943c6a" + integrity sha512-EsnG2qscmcN5XhkqQBZni/4oQbLFjz9yk3ZM/P8a3YUjwV6+6On2wehr1ALx0MxK3+XXXLTzuBKHDFeDFYRdgQ== dependencies: micromark-util-chunked "^1.0.0" micromark-util-symbol "^1.0.0" micromark-util-types "^1.0.0" - uvu "^0.5.0" micromark-util-symbol@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.0.1.tgz#b90344db62042ce454f351cf0bebcc0a6da4920e" - integrity sha512-oKDEMK2u5qqAptasDAwWDXq0tG9AssVwAx3E9bBF3t/shRIGsWIRG+cGafs2p/SnDSOecnt6hZPCE2o6lHfFmQ== + version "1.0.0" + resolved "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.0.0.tgz#91cdbcc9b2a827c0129a177d36241bcd3ccaa34d" + integrity sha512-NZA01jHRNCt4KlOROn8/bGi6vvpEmlXld7EHcRH+aYWUfL3Wc8JLUNNlqUMKa0hhz6GrpUWsHtzPmKof57v0gQ== micromark-util-types@^1.0.0, micromark-util-types@^1.0.1: - version "1.0.2" - resolved "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.0.2.tgz#f4220fdb319205812f99c40f8c87a9be83eded20" - integrity sha512-DCfg/T8fcrhrRKTPjRrw/5LLvdGV7BHySf/1LOZx7TzWZdYRjogNtyNq885z3nNallwr3QUKARjqvHqX1/7t+w== + version "1.0.1" + resolved "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.0.1.tgz#8bb8a092d93d326bd29fe29602799f2d0d922fd4" + integrity sha512-UT0ylWEEy80RFYzK9pEaugTqaxoD/j0Y9WhHpSyitxd99zjoQz7JJ+iKuhPAgOW2MiPSUAx+c09dcqokeyaROA== micromark@^3.0.0: - version "3.0.10" - resolved "https://registry.npmjs.org/micromark/-/micromark-3.0.10.tgz#1eac156f0399d42736458a14b0ca2d86190b457c" - integrity sha512-ryTDy6UUunOXy2HPjelppgJ2sNfcPz1pLlMdA6Rz9jPzhLikWXv/irpWV/I2jd68Uhmny7hHxAlAhk4+vWggpg== + version "3.0.5" + resolved "https://registry.npmjs.org/micromark/-/micromark-3.0.5.tgz#d24792c8a06f201d5608c106dbfadef34c299684" + integrity sha512-QfjERBnPw0G9mxhOCkkbRP0n8SX8lIBLrEKeEVceviUukqVMv3hWE4AgNTOK/W6GWqtPvvIHg2Apl3j1Dxm6aQ== dependencies: "@types/debug" "^4.0.0" debug "^4.0.0" - decode-named-character-reference "^1.0.0" micromark-core-commonmark "^1.0.1" micromark-factory-space "^1.0.0" micromark-util-character "^1.0.0" @@ -16374,7 +17633,7 @@ micromark@^3.0.0: micromark-util-subtokenize "^1.0.0" micromark-util-symbol "^1.0.0" micromark-util-types "^1.0.1" - uvu "^0.5.0" + parse-entities "^3.0.0" micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" @@ -16428,18 +17687,23 @@ mime-types@2.1.18: dependencies: mime-db "~1.33.0" -mime-types@^2.0.8, mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34: +mime-types@^2.0.8, mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24: version "2.1.34" resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz#5a712f9ec1503511a945803640fafe09d3793c24" integrity sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A== dependencies: mime-db "1.51.0" -mime@1.6.0: +mime@1.6.0, mime@^1.3.4: version "1.6.0" resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== +mime@^2.2.0: + version "2.5.2" + resolved "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz#6e3dc6cc2b9510643830e5f19d5cb753da5eeabe" + integrity sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg== + mime@^2.5.0: version "2.6.0" resolved "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" @@ -16483,9 +17747,9 @@ min-document@^2.19.0: dom-walk "^0.1.0" min-indent@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" - integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== + version "1.0.0" + resolved "https://registry.npmjs.org/min-indent/-/min-indent-1.0.0.tgz#cfc45c37e9ec0d8f0a0ec3dd4ef7f7c3abe39256" + integrity sha1-z8RcN+nsDY8KDsPdTvf3w6vjklY= mini-css-extract-plugin@^2.4.2: version "2.5.3" @@ -16504,27 +17768,13 @@ minimalistic-crypto-utils@^1.0.1: resolved "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= -minimatch@3.0.4: +minimatch@3.0.4, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== dependencies: brace-expansion "^1.1.7" -minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4: - version "3.1.2" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - -minimatch@^4.0.0: - version "4.2.1" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz#40d9d511a46bdc4e563c22c3080cde9c0d8299b4" - integrity sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g== - dependencies: - brace-expansion "^1.1.7" - minimist-options@4.1.0, minimist-options@^4.0.2: version "4.1.0" resolved "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" @@ -16637,9 +17887,9 @@ mixme@^0.5.1: integrity sha512-3KYa4m4Vlqx98GPdOHghxSdNtTvcP8E0kkaJ5Dlh+h2DRzF7zpuVVcA8B0QpKd11YJeP9QQ7ASkKzOeu195Wzw== mkdirp-classic@^0.5.2: - version "0.5.3" - resolved "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" - integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== + version "0.5.2" + resolved "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.2.tgz#54c441ce4c96cd7790e10b41a87aa51068ecab2b" + integrity sha512-ejdnDQcR75gwknmMw/tx02AuRs8jCtqFoFqDZMjiNxsu85sRIJVXDKHuLYvUUPRBUtV2FpSZa9bL1BUa3BdR2g== mkdirp-infer-owner@^2.0.0: version "2.0.0" @@ -16650,7 +17900,12 @@ mkdirp-infer-owner@^2.0.0: infer-owner "^1.0.4" mkdirp "^1.0.3" -"mkdirp@>=0.5 0", mkdirp@^0.5.1, mkdirp@^0.5.5: +mkdirp@0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz#1bbf5ab1ba827af23575143490426455f481fe1e" + integrity sha1-G79asbqCevI1dRQ0kEJkVfSB/h4= + +"mkdirp@>=0.5 0", mkdirp@^0.5.1, mkdirp@^0.5.4, mkdirp@^0.5.5: version "0.5.5" resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== @@ -16673,9 +17928,9 @@ modify-values@^1.0.0: integrity sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw== moment-timezone@^0.5.31: - version "0.5.34" - resolved "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.34.tgz#a75938f7476b88f155d3504a9343f7519d9a405c" - integrity sha512-3zAEHh2hKUs3EXLESx/wsgw6IQdusOT8Bxm3D9UrHPQR7zlMmzwybC8zHEM1tQ4LJwP7fcxrWr8tuBg05fFCbg== + version "0.5.33" + resolved "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.33.tgz#b252fd6bb57f341c9b59a5ab61a8e51a73bbd22c" + integrity sha512-PTc2vcT8K9J5/9rDEPe5czSIKgLoGsH8UNpA4qZTVw0Vd/Uz19geE9abbIOQKaAQFcnQ3v5YEXrbSc5BpshH+w== dependencies: moment ">= 2.9.0" @@ -16747,11 +18002,11 @@ msw@^0.35.0: yargs "^17.0.1" msw@^0.36.3: - version "0.36.8" - resolved "https://registry.npmjs.org/msw/-/msw-0.36.8.tgz#33ff8bfb0299626a95f43d0e4c3dc2c73c17f1ba" - integrity sha512-K7lOQoYqhGhTSChsmHMQbf/SDCsxh/m0uhN6Ipt206lGoe81fpTmaGD0KLh4jUxCONMOUnwCSj0jtX2CM4pEdw== + version "0.36.3" + resolved "https://registry.npmjs.org/msw/-/msw-0.36.3.tgz#7feb243a5fcf563806d45edc027bc36144741170" + integrity sha512-Itzp/QhKaleZoslXDrNik3ramW9ynqzOdbwydX2ehBSSaZd5QoiAl/bHYcV33R6CEZcJgIX1N4s+G6XkF/bhkA== dependencies: - "@mswjs/cookies" "^0.1.7" + "@mswjs/cookies" "^0.1.6" "@mswjs/interceptors" "^0.12.7" "@open-draft/until" "^1.0.3" "@types/cookie" "^0.4.1" @@ -16765,7 +18020,7 @@ msw@^0.36.3: inquirer "^8.2.0" is-node-process "^1.0.1" js-levenshtein "^1.1.6" - node-fetch "^2.6.7" + node-fetch "^2.6.1" path-to-regexp "^6.2.0" statuses "^2.0.0" strict-event-emitter "^0.2.0" @@ -16831,15 +18086,20 @@ named-placeholders@^1.1.2: dependencies: lru-cache "^4.1.3" +nan@^2.14.0: + version "2.14.1" + resolved "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01" + integrity sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw== + nan@^2.14.1, nan@^2.15.0: version "2.15.0" resolved "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz#3f34a473ff18e15c1b5626b62903b5ad6e665fee" integrity sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ== nano-css@^5.3.1: - version "5.3.4" - resolved "https://registry.npmjs.org/nano-css/-/nano-css-5.3.4.tgz#40af6a83a76f84204f346e8ccaa9169cdae9167b" - integrity sha512-wfcviJB6NOxDIDfr7RFn/GlaN7I/Bhe4d39ZRCJ3xvZX60LVe2qZ+rDqM49nm4YT81gAjzS+ZklhKP/Gnfnubg== + version "5.3.1" + resolved "https://registry.npmjs.org/nano-css/-/nano-css-5.3.1.tgz#b709383e07ad3be61f64edffacb9d98250b87a1f" + integrity sha512-ENPIyNzANQRyYVvb62ajDd7PAyIgS2LIUnT9ewih4yrXSZX4hKoUwssy8WjUH++kEOA5wUTMgNnV7ko5n34kUA== dependencies: css-tree "^1.1.2" csstype "^3.0.6" @@ -16855,10 +18115,15 @@ nanoclone@^0.2.1: resolved "https://registry.npmjs.org/nanoclone/-/nanoclone-0.2.1.tgz#dd4090f8f1a110d26bb32c49ed2f5b9235209ed4" integrity sha512-wynEP02LmIbLpcYw8uBKpcfF6dmg2vcpKqxeH5UcoKEYdExslsdUA4ugFauuaeYdTB76ez6gJW8XAZ6CgkXYxA== -nanoid@^3.1.23, nanoid@^3.2.0: - version "3.3.1" - resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz#6347a18cac88af88f58af0b3594b723d5e99bb35" - integrity sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw== +nanoid@^3.1.23: + version "3.2.0" + resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.2.0.tgz#62667522da6673971cca916a6d3eff3f415ff80c" + integrity sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA== + +nanoid@^3.2.0: + version "3.3.0" + resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.0.tgz#5906f776fd886c66c24f3653e0c46fcb1d4ad6b0" + integrity sha512-JzxqqT5u/x+/KOFSd7JP15DOo9nOoHpx6DYatqIHUW2+flybkm+mdcraotSQR5WcnZr+qhGVh8Ted0KdfSMxlg== nanomatch@^1.2.9: version "1.2.13" @@ -16882,7 +18147,12 @@ natural-compare@^1.4.0: resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= -negotiator@0.6.3, negotiator@^0.6.2, negotiator@^0.6.3: +negotiator@0.6.2, negotiator@^0.6.2: + version "0.6.2" + resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" + integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== + +negotiator@^0.6.3: version "0.6.3" resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== @@ -16892,18 +18162,28 @@ neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.2: resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== +next-tick@1, next-tick@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" + integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== + +next-tick@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" + integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= + nice-try@^1.0.4: version "1.0.5" resolved "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== nise@^5.1.0: - version "5.1.1" - resolved "https://registry.npmjs.org/nise/-/nise-5.1.1.tgz#ac4237e0d785ecfcb83e20f389185975da5c31f3" - integrity sha512-yr5kW2THW1AkxVmCnKEh4nbYkJdB3I7LUkiUgOvEkOp414mc2UMaHMA7pjq1nYowhdoJZGwEKGaQVbxfpWj10A== + version "5.1.0" + resolved "https://registry.npmjs.org/nise/-/nise-5.1.0.tgz#713ef3ed138252daef20ec035ab62b7a28be645c" + integrity sha512-W5WlHu+wvo3PaKLsJJkgPup2LrsXCcm7AWwyNZkUnn5rwPkuPBi3Iwk5SQtN0mv+K65k7nKKjwNQ30wg3wLAQQ== dependencies: - "@sinonjs/commons" "^1.8.3" - "@sinonjs/fake-timers" ">=5" + "@sinonjs/commons" "^1.7.0" + "@sinonjs/fake-timers" "^7.0.4" "@sinonjs/text-encoding" "^0.7.1" just-extend "^4.0.2" path-to-regexp "^1.7.0" @@ -16957,7 +18237,14 @@ node-fetch@2.6.1: resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== -node-fetch@2.6.7, node-fetch@^2.6.0, node-fetch@^2.6.1, node-fetch@^2.6.5, node-fetch@^2.6.7: +node-fetch@2.6.5: + version "2.6.5" + resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.5.tgz#42735537d7f080a7e5f78b6c549b7146be1742fd" + integrity sha512-mmlIVHJEu5rnIxgEgez6b9GgWXbkZj5YZ7fx+2r94a2E+Uirsp6HsPTPlomfdHtpt/B0cdKviwkoaM6pyvUOpQ== + dependencies: + whatwg-url "^5.0.0" + +node-fetch@2.6.7, node-fetch@^2.3.0, node-fetch@^2.6.0, node-fetch@^2.6.1, node-fetch@^2.6.5, node-fetch@^2.6.7: version "2.6.7" resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== @@ -16970,9 +18257,9 @@ node-forge@^1.0.0, node-forge@^1.2.0: integrity sha512-Fcvtbb+zBcZXbTTVwqGA5W+MKBj56UjVRevvchv5XrcyXbmNdesfZL37nlcWOfpgHhgmxApw3tQbTr4CqNmX4w== node-gyp@^5.0.2: - version "5.1.1" - resolved "https://registry.npmjs.org/node-gyp/-/node-gyp-5.1.1.tgz#eb915f7b631c937d282e33aed44cb7a025f62a3e" - integrity sha512-WH0WKGi+a4i4DUt2mHnvocex/xPLp9pYt5R6M2JdFB7pJ7Z34hveZ4nDTGTiLXCkitA9T8HFZjhinBCiVHYcWw== + version "5.1.0" + resolved "https://registry.npmjs.org/node-gyp/-/node-gyp-5.1.0.tgz#8e31260a7af4a2e2f994b0673d4e0b3866156332" + integrity sha512-OUTryc5bt/P8zVgNUmC6xdXiDJxLMAW8cF5tLQOT9E5sOQj+UeQxnnPy74K3CLCa/SOjjBlbuzDLR8ANwA+wmw== dependencies: env-paths "^2.2.0" glob "^7.1.4" @@ -17057,6 +18344,11 @@ node-match-path@^0.6.3: resolved "https://registry.npmjs.org/node-match-path/-/node-match-path-0.6.3.tgz#55dd8443d547f066937a0752dce462ea7dc27551" integrity sha512-fB1reOHKLRZCJMAka28hIxCwQLxGmd7WewOCBDYKpyA1KXi68A7vaGgdZAPhY2E6SXoYt3KqYCCvXLJ+O0Fu/Q== +node-modules-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" + integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= + node-notifier@^8.0.0: version "8.0.2" resolved "https://registry.npmjs.org/node-notifier/-/node-notifier-8.0.2.tgz#f3167a38ef0d2c8a866a83e318c1ba0efeb702c5" @@ -17070,9 +18362,9 @@ node-notifier@^8.0.0: which "^2.0.2" node-releases@^2.0.1: - version "2.0.2" - resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.2.tgz#7139fe71e2f4f11b47d4d2986aaf8c48699e0c01" - integrity sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg== + version "2.0.1" + resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz#3d1d395f204f1f2f29a54358b9fb678765ad2fc5" + integrity sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA== nodemon@^2.0.2: version "2.0.15" @@ -17090,6 +18382,13 @@ nodemon@^2.0.2: undefsafe "^2.0.5" update-notifier "^5.1.0" +nopt@1.0.10, nopt@~1.0.10: + version "1.0.10" + resolved "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" + integrity sha1-bd0hvSoxQXuScn3Vhfim83YI6+4= + dependencies: + abbrev "1" + nopt@^4.0.1: version "4.0.3" resolved "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48" @@ -17105,13 +18404,6 @@ nopt@^5.0.0: dependencies: abbrev "1" -nopt@~1.0.10: - version "1.0.10" - resolved "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" - integrity sha1-bd0hvSoxQXuScn3Vhfim83YI6+4= - dependencies: - abbrev "1" - normalize-package-data@^2.0.0, normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: version "2.5.0" resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" @@ -17122,14 +18414,14 @@ normalize-package-data@^2.0.0, normalize-package-data@^2.3.2, normalize-package- semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" -normalize-package-data@^3.0.0, normalize-package-data@^3.0.2: - version "3.0.3" - resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz#dbcc3e2da59509a0983422884cd172eefdfa525e" - integrity sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA== +normalize-package-data@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.0.tgz#1f8a7c423b3d2e85eb36985eaf81de381d01301a" + integrity sha512-6lUjEI0d3v6kFrtgA/lOx4zHCWULXsFNIjHolnZCKCTLA6m/G625cdn3O7eNmT0iD3jfo6HZ9cdImGZwf21prw== dependencies: - hosted-git-info "^4.0.1" - is-core-module "^2.5.0" - semver "^7.3.4" + hosted-git-info "^3.0.6" + resolve "^1.17.0" + semver "^7.3.2" validate-npm-package-license "^3.0.1" normalize-path@^2.1.1: @@ -17144,20 +18436,25 @@ normalize-path@^3.0.0, normalize-path@~3.0.0: resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== +normalize-url@^3.3.0: + version "3.3.0" + resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" + integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== + normalize-url@^4.1.0: version "4.5.1" resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a" integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA== -normalize-url@^6.0.1, normalize-url@^6.1.0: +normalize-url@^6.0.1: version "6.1.0" resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== npm-bundled@^1.1.1: - version "1.1.2" - resolved "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz#944c78789bd739035b70baa2ca5cc32b8d860bc1" - integrity sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ== + version "1.1.1" + resolved "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.1.tgz#1edd570865a94cdb1bc8220775e29466c9fb234b" + integrity sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA== dependencies: npm-normalize-package-bin "^1.0.1" @@ -17187,7 +18484,16 @@ npm-normalize-package-bin@^1.0.0, npm-normalize-package-bin@^1.0.1: resolved "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== -npm-package-arg@^8.0.0, npm-package-arg@^8.0.1, npm-package-arg@^8.1.0, npm-package-arg@^8.1.2, npm-package-arg@^8.1.5: +npm-package-arg@^8.0.0, npm-package-arg@^8.0.1, npm-package-arg@^8.1.0: + version "8.1.0" + resolved "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.0.tgz#b5f6319418c3246a1c38e1a8fbaa06231bc5308f" + integrity sha512-/ep6QDxBkm9HvOhOg0heitSd7JHA1U7y1qhhlRlteYYAi9Pdb/ZV7FW5aHpkrpM8+P+4p/jjR8zCyKPBMBjSig== + dependencies: + hosted-git-info "^3.0.6" + semver "^7.0.0" + validate-npm-package-name "^3.0.0" + +npm-package-arg@^8.1.2, npm-package-arg@^8.1.5: version "8.1.5" resolved "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.5.tgz#3369b2d5fe8fdc674baa7f1786514ddc15466e44" integrity sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q== @@ -17197,9 +18503,9 @@ npm-package-arg@^8.0.0, npm-package-arg@^8.0.1, npm-package-arg@^8.1.0, npm-pack validate-npm-package-name "^3.0.0" npm-packlist@^2.1.4: - version "2.2.2" - resolved "https://registry.npmjs.org/npm-packlist/-/npm-packlist-2.2.2.tgz#076b97293fa620f632833186a7a8f65aaa6148c8" - integrity sha512-Jt01acDvJRhJGthnUJVF/w6gumWOZxO7IkpY/lsX9//zqQgnF7OJaxgQXcerd4uQOLu7W5bkb4mChL9mdfm+Zg== + version "2.1.4" + resolved "https://registry.npmjs.org/npm-packlist/-/npm-packlist-2.1.4.tgz#40e96b2b43787d0546a574542d01e066640d09da" + integrity sha512-Qzg2pvXC9U4I4fLnUrBmcIT4x0woLtUgxUi9eC+Zrcv1Xx5eamytGAfbDWQ67j7xOcQ2VW1I3su9smVTIdu7Hw== dependencies: glob "^7.1.6" ignore-walk "^3.0.3" @@ -17216,7 +18522,16 @@ npm-packlist@^3.0.0: npm-bundled "^1.1.1" npm-normalize-package-bin "^1.0.1" -npm-pick-manifest@^6.0.0, npm-pick-manifest@^6.1.0, npm-pick-manifest@^6.1.1: +npm-pick-manifest@^6.0.0: + version "6.1.0" + resolved "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-6.1.0.tgz#2befed87b0fce956790f62d32afb56d7539c022a" + integrity sha512-ygs4k6f54ZxJXrzT0x34NybRlLeZ4+6nECAIbr2i0foTnijtS1TJiyzpqtuUAJOps/hO0tNDr8fRV5g+BtRlTw== + dependencies: + npm-install-checks "^4.0.0" + npm-package-arg "^8.0.0" + semver "^7.0.0" + +npm-pick-manifest@^6.1.0, npm-pick-manifest@^6.1.1: version "6.1.1" resolved "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-6.1.1.tgz#7b5484ca2c908565f43b7f27644f36bb816f5148" integrity sha512-dBsdBtORT84S8V8UTad1WlUyKIY9iMsAmqxHbLdeEeBNMLQDlDWWra3wYUx9EBEIiG/YwAy0XyNHDd2goAsfuA== @@ -17226,18 +18541,6 @@ npm-pick-manifest@^6.0.0, npm-pick-manifest@^6.1.0, npm-pick-manifest@^6.1.1: npm-package-arg "^8.1.2" semver "^7.3.4" -npm-registry-fetch@^11.0.0: - version "11.0.0" - resolved "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-11.0.0.tgz#68c1bb810c46542760d62a6a965f85a702d43a76" - integrity sha512-jmlgSxoDNuhAtxUIG6pVwwtz840i994dL14FoNVZisrmZW5kWd63IUTNv1m/hyRSGSqWjCUp/YZlS1BJyNp9XA== - dependencies: - make-fetch-happen "^9.0.1" - minipass "^3.1.3" - minipass-fetch "^1.3.0" - minipass-json-stream "^1.0.1" - minizlib "^2.0.0" - npm-package-arg "^8.0.0" - npm-registry-fetch@^12.0.0, npm-registry-fetch@^12.0.1: version "12.0.2" resolved "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-12.0.2.tgz#ae583bb3c902a60dae43675b5e33b5b1f6159f1e" @@ -17308,7 +18611,7 @@ npmlog@^6.0.0: gauge "^4.0.0" set-blocking "^2.0.0" -nth-check@^2.0.1: +nth-check@^2.0.0: version "2.0.1" resolved "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz#2efe162f5c3da06a28959fbd3db75dbeea9f0fc2" integrity sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w== @@ -17374,12 +18677,9 @@ object-inspect@^1.11.0, object-inspect@^1.12.0, object-inspect@^1.9.0: integrity sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g== object-is@^1.0.1: - version "1.1.5" - resolved "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" - integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" + version "1.0.2" + resolved "https://registry.npmjs.org/object-is/-/object-is-1.0.2.tgz#6b80eb84fe451498f65007982f035a5b445edec4" + integrity sha512-Epah+btZd5wrrfjkJZq1AOB9O6OxUQto45hzFd7lXGrpHPGE0W1k+426yrZV+k6NJOzLNNW/nVsmZdIWsAqoOQ== object-keys@^1.0.12, object-keys@^1.1.1: version "1.1.1" @@ -17422,13 +18722,12 @@ object.fromentries@^2.0.5: es-abstract "^1.19.1" object.getownpropertydescriptors@^2.0.3: - version "2.1.3" - resolved "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.3.tgz#b223cf38e17fefb97a63c10c91df72ccb386df9e" - integrity sha512-VdDoCwvJI4QdC6ndjpqFmoL3/+HxffFBbcJzKi5hwLLqqx3mdbedRpfZDdK0SrOSauj8X4GzBvnDZl4vTN7dOw== + version "2.1.0" + resolved "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" + integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg== dependencies: - call-bind "^1.0.2" define-properties "^1.1.3" - es-abstract "^1.19.1" + es-abstract "^1.17.0-next.1" object.hasown@^1.1.0: version "1.1.0" @@ -17485,6 +18784,11 @@ oidc-token-hash@^5.0.1: resolved "https://registry.npmjs.org/oidc-token-hash/-/oidc-token-hash-5.0.1.tgz#ae6beec3ec20f0fd885e5400d175191d6e2f10c6" integrity sha512-EvoOtz6FIEBzE+9q253HsLCVRiK/0doEJ2HCvvqMQb3dHZrP3WlJKYtJ55CRTw4jmYomzH4wkPuCj/I3ZvpKxQ== +omggif@^1.0.9: + version "1.0.10" + resolved "https://registry.npmjs.org/omggif/-/omggif-1.0.10.tgz#ddaaf90d4a42f532e9e7cb3a95ecdd47f17c7b19" + integrity sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw== + on-finished@^2.3.0, on-finished@~2.3.0: version "2.3.0" resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" @@ -17511,6 +18815,11 @@ one-time@^1.0.0: dependencies: fn.name "1.x.x" +onetime@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" + integrity sha1-ofeDj4MUxRbwXs78vEzP4EtO14k= + onetime@^2.0.0: version "2.0.1" resolved "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" @@ -17535,17 +18844,17 @@ open@^8.0.0, open@^8.0.9, open@^8.4.0: is-wsl "^2.2.0" openapi-sampler@^1.1.0: - version "1.2.0" - resolved "https://registry.npmjs.org/openapi-sampler/-/openapi-sampler-1.2.0.tgz#2e82e4e32c1506a42f370be726d759d5275a9d4d" - integrity sha512-Y0tFg2iH7NWnNHYnesxhMfkXc7wWXyJXYMUTTxkGkfpl0U9u/ZOf6BxrdEXBD4sgs9uMlVWsbWLDLesVmSUU7Q== + version "1.1.1" + resolved "https://registry.npmjs.org/openapi-sampler/-/openapi-sampler-1.1.1.tgz#7bba7000a03cd8a4630bfbe5b3ef258990c78400" + integrity sha512-WAFsl5SPYuhQwaMTDFOcKhnEY1G1rmamrMiPmJdqwfl1lr81g63/befcsN9BNi0w5/R0L+hfcUj13PANEBeLgg== dependencies: "@types/json-schema" "^7.0.7" json-pointer "^0.6.1" openid-client@^4.1.1, openid-client@^4.2.1: - version "4.9.1" - resolved "https://registry.npmjs.org/openid-client/-/openid-client-4.9.1.tgz#4f00a9d1566c0fa08f0dd5986cf0e6b1e5d14186" - integrity sha512-DYUF07AHjI3QDKqKbn2F7RqozT4hyi4JvmpodLrq0HHoNP7t/AjeG/uqiBK1/N2PZSAQEThVjDLHSmJN4iqu/w== + version "4.9.0" + resolved "https://registry.npmjs.org/openid-client/-/openid-client-4.9.0.tgz#bdfc9194435316df419f759ce177635146b43074" + integrity sha512-ThBbvRUUZwxUKBVK2UpDNIZ3eJkvtqWI8s5Dm+naV+gJdL+yRhT+8ywqct1gy5uL+xVS5+A/nhFcpJIisH2x6Q== dependencies: aggregate-error "^3.1.0" got "^11.8.0" @@ -17611,6 +18920,14 @@ os-locale@^1.4.0: dependencies: lcid "^1.0.0" +os-name@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/os-name/-/os-name-3.1.0.tgz#dec19d966296e1cd62d701a5a66ee1ddeae70801" + integrity sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg== + dependencies: + macos-release "^2.2.0" + windows-release "^3.1.0" + os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" @@ -17645,14 +18962,14 @@ p-cancelable@^1.0.0: integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== p-cancelable@^2.0.0: - version "2.1.1" - resolved "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz#aab7fbd416582fa32a3db49859c122487c5ed2cf" - integrity sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg== + version "2.0.0" + resolved "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.0.0.tgz#4a3740f5bdaf5ed5d7c3e34882c6fb5d6b266a6e" + integrity sha512-wvPXDmbMmu2ksjkB4Z3nZWTSkJEb9lqVdMaCKpZUGJG9TMiNp9XcbG3fn9fPKjem04fJMJnXoyFPk2FmgiaiNg== p-each-series@^2.1.0: - version "2.2.0" - resolved "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz#105ab0357ce72b202a8a8b94933672657b5e2a9a" - integrity sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA== + version "2.1.0" + resolved "https://registry.npmjs.org/p-each-series/-/p-each-series-2.1.0.tgz#961c8dd3f195ea96c747e636b262b800a6b1af48" + integrity sha512-ZuRs1miPT4HrjFa+9fRfOFXxGJfORgelKV9f9nNOWw2gl6gVsRaVDOQP0+MI0G0wGKns1Yacsu0GjOFbTK0JFQ== p-filter@^2.1.0: version "2.1.0" @@ -17686,9 +19003,9 @@ p-limit@^1.1.0: p-try "^1.0.0" p-limit@^2.0.0, p-limit@^2.2.0: - version "2.3.0" - resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + version "2.2.2" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz#61279b67721f5287aa1c13a9a7fbbc48c9291b1e" + integrity sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ== dependencies: p-try "^2.0.0" @@ -17756,12 +19073,12 @@ p-reduce@^2.0.0, p-reduce@^2.1.0: integrity sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw== p-retry@^4.5.0: - version "4.6.1" - resolved "https://registry.npmjs.org/p-retry/-/p-retry-4.6.1.tgz#8fcddd5cdf7a67a0911a9cf2ef0e5df7f602316c" - integrity sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA== + version "4.5.0" + resolved "https://registry.npmjs.org/p-retry/-/p-retry-4.5.0.tgz#6685336b3672f9ee8174d3769a660cb5e488521d" + integrity sha512-5Hwh4aVQSu6BEP+w2zKlVXtFAaYQe1qWuVADSgoeVlLjwe/Q/AMSoRR4MDeaAfu8llT+YNbEijWu/YF3m6avkg== dependencies: "@types/retry" "^0.12.0" - retry "^0.13.1" + retry "^0.12.0" p-timeout@^3.2.0: version "3.2.0" @@ -17811,11 +19128,11 @@ packet-reader@1.0.0: integrity sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ== pacote@^11.2.6: - version "11.3.5" - resolved "https://registry.npmjs.org/pacote/-/pacote-11.3.5.tgz#73cf1fc3772b533f575e39efa96c50be8c3dc9d2" - integrity sha512-fT375Yczn4zi+6Hkk2TBe1x1sP8FgFsEIZ2/iWaXY2r/NkhDJfxbcn5paz1+RTFCyNf+dPnaoBDJoAxXSU8Bkg== + version "11.2.6" + resolved "https://registry.npmjs.org/pacote/-/pacote-11.2.6.tgz#c0426e5d5c8d33aeea3461a75e1390f1ba78f953" + integrity sha512-xCl++Hb3aBC7LaWMimbO4xUqZVsEbKDVc6KKDIIyAeBYrmMwY1yJC2nES/lsGd8sdQLUosgBxQyuVNncZ2Ru0w== dependencies: - "@npmcli/git" "^2.1.0" + "@npmcli/git" "^2.0.1" "@npmcli/installed-package-contents" "^1.0.6" "@npmcli/promise-spawn" "^1.2.0" "@npmcli/run-script" "^1.8.2" @@ -17828,7 +19145,7 @@ pacote@^11.2.6: npm-package-arg "^8.0.1" npm-packlist "^2.1.4" npm-pick-manifest "^6.0.0" - npm-registry-fetch "^11.0.0" + npm-registry-fetch "^9.0.0" promise-retry "^2.0.1" read-package-json-fast "^2.0.1" rimraf "^3.0.2" @@ -17860,7 +19177,7 @@ pacote@^12.0.0, pacote@^12.0.2: ssri "^8.0.1" tar "^6.1.0" -pako@^1.0.10, pako@~1.0.5: +pako@^1.0.10, pako@^1.0.5, pako@~1.0.5: version "1.0.11" resolved "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== @@ -17885,17 +19202,36 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" -parse-asn1@^5.0.0, parse-asn1@^5.1.5: - version "5.1.6" - resolved "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" - integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== +parse-asn1@^5.0.0: + version "5.1.5" + resolved "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz#003271343da58dc94cace494faef3d2147ecea0e" + integrity sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ== dependencies: - asn1.js "^5.2.0" + asn1.js "^4.0.0" browserify-aes "^1.0.0" + create-hash "^1.1.0" evp_bytestokey "^1.0.0" pbkdf2 "^3.0.3" safe-buffer "^5.1.1" +parse-bmfont-ascii@^1.0.3: + version "1.0.6" + resolved "https://registry.npmjs.org/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz#11ac3c3ff58f7c2020ab22769079108d4dfa0285" + integrity sha1-Eaw8P/WPfCAgqyJ2kHkQjU36AoU= + +parse-bmfont-binary@^1.0.5: + version "1.0.6" + resolved "https://registry.npmjs.org/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz#d038b476d3e9dd9db1e11a0b0e53a22792b69006" + integrity sha1-0Di0dtPp3Z2x4RoLDlOiJ5K2kAY= + +parse-bmfont-xml@^1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/parse-bmfont-xml/-/parse-bmfont-xml-1.1.4.tgz#015319797e3e12f9e739c4d513872cd2fa35f389" + integrity sha512-bjnliEOmGv3y1aMEfREMBJ9tfL3WR0i0CKPj61DnSLaoxWR3nLrsQrEbCId/8rF4NyRF0cCqisSVXyQYWM+mCQ== + dependencies: + xml-parse-from-string "^1.0.0" + xml2js "^0.4.5" + parse-conflict-json@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/parse-conflict-json/-/parse-conflict-json-2.0.1.tgz#76647dd072e6068bcaff20be6ccea68a18e1fb58" @@ -17917,6 +19253,18 @@ parse-entities@^2.0.0: is-decimal "^1.0.0" is-hexadecimal "^1.0.0" +parse-entities@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/parse-entities/-/parse-entities-3.0.0.tgz#9ed6d6569b6cfc95ade058d683ddef239dad60dc" + integrity sha512-AJlcIFDNPEP33KyJLguv0xJc83BNvjxwpuUIcetyXUsLpVXAUCePJ5kIoYtEN2R1ac0cYaRu/vk9dVFkewHQhQ== + dependencies: + character-entities "^2.0.0" + character-entities-legacy "^2.0.0" + character-reference-invalid "^2.0.0" + is-alphanumerical "^2.0.0" + is-decimal "^2.0.0" + is-hexadecimal "^2.0.0" + parse-filepath@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz#a632127f53aaf3d15876f5872f3ffac763d6c891" @@ -17926,6 +19274,11 @@ parse-filepath@^1.0.2: map-cache "^0.2.0" path-root "^0.1.1" +parse-headers@^2.0.0: + version "2.0.4" + resolved "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.4.tgz#9eaf2d02bed2d1eff494331ce3df36d7924760bf" + integrity sha512-psZ9iZoCNFLrgRjZ1d8mn0h9WRqJwFxM9q3x7iUjN/YT2OksthDJ5TiPCu2F38kS4zutqfW+YdVVkBZZx3/1aw== + parse-json@^2.2.0: version "2.2.0" resolved "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" @@ -17942,13 +19295,13 @@ parse-json@^4.0.0: json-parse-better-errors "^1.0.1" parse-json@^5.0.0: - version "5.2.0" - resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" - integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + version "5.0.0" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz#73e5114c986d143efa3712d4ea24db9a4266f60f" + integrity sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw== dependencies: "@babel/code-frame" "^7.0.0" error-ex "^1.3.1" - json-parse-even-better-errors "^2.3.0" + json-parse-better-errors "^1.0.1" lines-and-columns "^1.1.6" parse-package-name@^0.1.0: @@ -17957,30 +19310,43 @@ parse-package-name@^0.1.0: integrity sha1-P0Tdg4/rTCvkvzGLrkR313BrreQ= parse-path@^4.0.0: - version "4.0.3" - resolved "https://registry.npmjs.org/parse-path/-/parse-path-4.0.3.tgz#82d81ec3e071dcc4ab49aa9f2c9c0b8966bb22bf" - integrity sha512-9Cepbp2asKnWTJ9x2kpw6Fe8y9JDbqwahGCTvklzd/cEq5C5JC59x2Xb0Kx+x0QZ8bvNquGO8/BWP0cwBHzSAA== + version "4.0.1" + resolved "https://registry.npmjs.org/parse-path/-/parse-path-4.0.1.tgz#0ec769704949778cb3b8eda5e994c32073a1adff" + integrity sha512-d7yhga0Oc+PwNXDvQ0Jv1BuWkLVPXcAoQ/WREgd6vNNoKYaW52KI+RdOFjI63wjkmps9yUE8VS4veP+AgpQ/hA== dependencies: is-ssh "^1.3.0" protocols "^1.4.0" - qs "^6.9.4" - query-string "^6.13.8" -parse-url@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/parse-url/-/parse-url-6.0.0.tgz#f5dd262a7de9ec00914939220410b66cff09107d" - integrity sha512-cYyojeX7yIIwuJzledIHeLUBVJ6COVLeT4eF+2P6aKVzwvgKQPndCBv3+yQ7pcWjqToYwaligxzSYNNmGoMAvw== +parse-url@^5.0.0: + version "5.0.1" + resolved "https://registry.npmjs.org/parse-url/-/parse-url-5.0.1.tgz#99c4084fc11be14141efa41b3d117a96fcb9527f" + integrity sha512-flNUPP27r3vJpROi0/R3/2efgKkyXqnXwyP1KQ2U0SfFRgdizOdWfvrrvJg1LuOoxs7GQhmxJlq23IpQ/BkByg== dependencies: is-ssh "^1.3.0" - normalize-url "^6.1.0" + normalize-url "^3.3.0" parse-path "^4.0.0" protocols "^1.4.0" +parse5@5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178" + integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug== + parse5@6.0.1: version "6.0.1" resolved "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== +parseqs@0.0.6: + version "0.0.6" + resolved "https://registry.npmjs.org/parseqs/-/parseqs-0.0.6.tgz#8e4bb5a19d1cdc844a08ac974d34e273afa670d5" + integrity sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w== + +parseuri@0.0.6: + version "0.0.6" + resolved "https://registry.npmjs.org/parseuri/-/parseuri-0.0.6.tgz#e1496e829e3ac2ff47f39a4dd044b32823c4a25a" + integrity sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow== + parseurl@^1.3.3, parseurl@~1.3.2, parseurl@~1.3.3: version "1.3.3" resolved "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" @@ -18037,9 +19403,9 @@ passport-microsoft@^0.1.0: pkginfo "0.2.x" passport-oauth1@1.x.x: - version "1.2.0" - resolved "https://registry.npmjs.org/passport-oauth1/-/passport-oauth1-1.2.0.tgz#5229d431781bf5b265bec86ce9a9cce58a756cf9" - integrity sha512-Sv2YWodC6jN12M/OXwmR4BIXeeIHjjbwYTQw4kS6tHK4zYzSEpxBgSJJnknBjICA5cj0ju3FSnG1XmHgIhYnLg== + version "1.1.0" + resolved "https://registry.npmjs.org/passport-oauth1/-/passport-oauth1-1.1.0.tgz#a7de988a211f9cf4687377130ea74df32730c918" + integrity sha1-p96YiiEfnPRoc3cTDqdN8ycwyRg= dependencies: oauth "0.9.x" passport-strategy "1.x.x" @@ -18240,9 +19606,9 @@ pause@0.0.1: integrity sha1-HUCLP9t2kjuVQ9lvtMnf1TXZy10= pbkdf2@^3.0.3: - version "3.1.2" - resolved "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" - integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== + version "3.0.17" + resolved "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" + integrity sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA== dependencies: create-hash "^1.1.2" create-hmac "^1.1.4" @@ -18250,10 +19616,10 @@ pbkdf2@^3.0.3: safe-buffer "^5.0.1" sha.js "^2.4.8" -peek-readable@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/peek-readable/-/peek-readable-4.1.0.tgz#4ece1111bf5c2ad8867c314c81356847e8a62e72" - integrity sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg== +peek-readable@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/peek-readable/-/peek-readable-4.0.1.tgz#9a045f291db254111c3412c1ce4fec27ddd4d202" + integrity sha512-7qmhptnR0WMSpxT5rMHG9bW/mYSR1uqaPFj2MHvT+y/aOUu6msJijpKt5SkTDKySwg65OWG2JwTMBlgcbwMHrQ== pend@~1.2.0: version "1.2.0" @@ -18310,11 +19676,11 @@ pg@^8.3.0, pg@^8.4.0: pgpass "1.x" pgpass@1.x: - version "1.0.5" - resolved "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz#9b873e4a564bb10fa7a7dbd55312728d422a223d" - integrity sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug== + version "1.0.2" + resolved "https://registry.npmjs.org/pgpass/-/pgpass-1.0.2.tgz#2a7bb41b6065b67907e91da1b07c1847c877b306" + integrity sha1-Knu0G2BltnkH6R2hsHwYR8h3swY= dependencies: - split2 "^4.1.0" + split "^1.0.0" pgtools@^0.3.0: version "0.3.2" @@ -18326,15 +19692,20 @@ pgtools@^0.3.0: pg-connection-string "^2.4.0" yargs "^5.0.0" +phin@^2.9.1: + version "2.9.3" + resolved "https://registry.npmjs.org/phin/-/phin-2.9.3.tgz#f9b6ac10a035636fb65dfc576aaaa17b8743125c" + integrity sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA== + picocolors@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3: - version "2.3.1" - resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + version "2.3.0" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" + integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== pify@^2.0.0, pify@^2.2.0, pify@^2.3.0: version "2.3.0" @@ -18400,10 +19771,19 @@ pino@^5.12.2: quick-format-unescaped "^3.0.3" sonic-boom "^0.7.5" -pirates@^4.0.1, pirates@^4.0.5: - version "4.0.5" - resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" - integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== +pirates@^4.0.0, pirates@^4.0.1: + 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" + +pixelmatch@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/pixelmatch/-/pixelmatch-4.0.2.tgz#8f47dcec5011b477b67db03c243bc1f3085e8854" + integrity sha1-j0fc7FARtHe2fbA8JDvB8wheiFQ= + dependencies: + pngjs "^3.0.0" pkg-dir@4.2.0, pkg-dir@^4.2.0: version "4.2.0" @@ -18412,6 +19792,13 @@ pkg-dir@4.2.0, pkg-dir@^4.2.0: dependencies: find-up "^4.0.0" +pkg-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" + integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= + dependencies: + find-up "^2.1.0" + pkg-dir@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" @@ -18436,6 +19823,11 @@ pluralize@^8.0.0: resolved "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1" integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== +pngjs@^3.0.0, pngjs@^3.3.3: + version "3.4.0" + resolved "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz#99ca7d725965fb655814eaf65f38f12bbdbf555f" + integrity sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w== + popper.js@1.16.1-lts: version "1.16.1-lts" resolved "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1-lts.tgz#cf6847b807da3799d80ee3d6d2f90df8a3f50b05" @@ -18455,107 +19847,109 @@ posix-character-classes@^0.1.0: resolved "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= -postcss-calc@^8.2.0: - version "8.2.4" - resolved "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz#77b9c29bfcbe8a07ff6693dc87050828889739a5" - integrity sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q== +postcss-calc@^8.0.0: + version "8.0.0" + resolved "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.0.0.tgz#a05b87aacd132740a5db09462a3612453e5df90a" + integrity sha512-5NglwDrcbiy8XXfPM11F3HeC6hoT9W7GUH/Zi5U/p7u3Irv4rHhdDcIZwG0llHXV4ftsBjpfWMXAnXNl4lnt8g== dependencies: - postcss-selector-parser "^6.0.9" - postcss-value-parser "^4.2.0" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.0.2" -postcss-colormin@^5.2.5: - version "5.2.5" - resolved "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.2.5.tgz#d1fc269ac2ad03fe641d462b5d1dada35c69968a" - integrity sha512-+X30aDaGYq81mFqwyPpnYInsZQnNpdxMX0ajlY7AExCexEFkPVV+KrO7kXwayqEWL2xwEbNQ4nUO0ZsRWGnevg== +postcss-colormin@^5.2.1: + version "5.2.1" + resolved "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.2.1.tgz#6e444a806fd3c578827dbad022762df19334414d" + integrity sha512-VVwMrEYLcHYePUYV99Ymuoi7WhKrMGy/V9/kTS0DkCoJYmmjdOMneyhzYUxcNgteKDVbrewOkSM7Wje/MFwxzA== dependencies: browserslist "^4.16.6" caniuse-api "^3.0.0" colord "^2.9.1" - postcss-value-parser "^4.2.0" + postcss-value-parser "^4.1.0" -postcss-convert-values@^5.0.4: - version "5.0.4" - resolved "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.0.4.tgz#3e74dd97c581f475ae7b4500bc0a7c4fb3a6b1b6" - integrity sha512-bugzSAyjIexdObovsPZu/sBCTHccImJxLyFgeV0MmNBm/Lw5h5XnjfML6gzEmJ3A6nyfCW7hb1JXzcsA4Zfbdw== +postcss-convert-values@^5.0.2: + version "5.0.2" + resolved "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.0.2.tgz#879b849dc3677c7d6bc94b6a2c1a3f0808798059" + integrity sha512-KQ04E2yadmfa1LqXm7UIDwW1ftxU/QWZmz6NKnHnUvJ3LEYbbcX6i329f/ig+WnEByHegulocXrECaZGLpL8Zg== dependencies: - postcss-value-parser "^4.2.0" + postcss-value-parser "^4.1.0" -postcss-discard-comments@^5.0.3: - version "5.0.3" - resolved "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.0.3.tgz#011acb63418d600fdbe18804e1bbecb543ad2f87" - integrity sha512-6W5BemziRoqIdAKT+1QjM4bNcJAQ7z7zk073730NHg4cUXh3/rQHHj7pmYxUB9aGhuRhBiUf0pXvIHkRwhQP0Q== +postcss-discard-comments@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.0.1.tgz#9eae4b747cf760d31f2447c27f0619d5718901fe" + integrity sha512-lgZBPTDvWrbAYY1v5GYEv8fEO/WhKOu/hmZqmCYfrpD6eyDWWzAOsl2rF29lpvziKO02Gc5GJQtlpkTmakwOWg== -postcss-discard-duplicates@^5.0.3: - version "5.0.3" - resolved "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.0.3.tgz#10f202a4cfe9d407b73dfea7a477054d21ea0c1f" - integrity sha512-vPtm1Mf+kp7iAENTG7jI1MN1lk+fBqL5y+qxyi4v3H+lzsXEdfS3dwUZD45KVhgzDEgduur8ycB4hMegyMTeRw== +postcss-discard-duplicates@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.0.1.tgz#68f7cc6458fe6bab2e46c9f55ae52869f680e66d" + integrity sha512-svx747PWHKOGpAXXQkCc4k/DsWo+6bc5LsVrAsw+OU+Ibi7klFZCyX54gjYzX4TH+f2uzXjRviLARxkMurA2bA== -postcss-discard-empty@^5.0.3: - version "5.0.3" - resolved "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.0.3.tgz#ec185af4a3710b88933b0ff751aa157b6041dd6a" - integrity sha512-xGJugpaXKakwKI7sSdZjUuN4V3zSzb2Y0LOlmTajFbNinEjTfVs9PFW2lmKBaC/E64WwYppfqLD03P8l9BuueA== +postcss-discard-empty@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.0.1.tgz#ee136c39e27d5d2ed4da0ee5ed02bc8a9f8bf6d8" + integrity sha512-vfU8CxAQ6YpMxV2SvMcMIyF2LX1ZzWpy0lqHDsOdaKKLQVQGVP1pzhrI9JlsO65s66uQTfkQBKBD/A5gp9STFw== -postcss-discard-overridden@^5.0.4: - version "5.0.4" - resolved "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.0.4.tgz#cc999d6caf18ea16eff8b2b58f48ec3ddee35c9c" - integrity sha512-3j9QH0Qh1KkdxwiZOW82cId7zdwXVQv/gRXYDnwx5pBtR1sTkU4cXRK9lp5dSdiM0r0OICO/L8J6sV1/7m0kHg== +postcss-discard-overridden@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.0.1.tgz#454b41f707300b98109a75005ca4ab0ff2743ac6" + integrity sha512-Y28H7y93L2BpJhrdUR2SR2fnSsT+3TVx1NmVQLbcnZWwIUpJ7mfcTC6Za9M2PG6w8j7UQRfzxqn8jU2VwFxo3Q== postcss-load-config@^3.0.0: - version "3.1.3" - resolved "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.3.tgz#21935b2c43b9a86e6581a576ca7ee1bde2bd1d23" - integrity sha512-5EYgaM9auHGtO//ljHH+v/aC/TQ5LHXtL7bQajNAUBKUVKiYE8rYpFms7+V26D9FncaGe2zwCoPQsFKb5zF/Hw== + version "3.0.1" + resolved "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.0.1.tgz#d214bf9cfec1608ffaf0f4161b3ba20664ab64b9" + integrity sha512-/pDHe30UYZUD11IeG8GWx9lNtu1ToyTsZHnyy45B4Mrwr/Kb6NgYl7k753+05CJNKnjbwh4975amoPJ+TEjHNQ== dependencies: - lilconfig "^2.0.4" - yaml "^1.10.2" + cosmiconfig "^7.0.0" + import-cwd "^3.0.0" -postcss-merge-longhand@^5.0.6: - version "5.0.6" - resolved "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.0.6.tgz#090e60d5d3b3caad899f8774f8dccb33217d2166" - integrity sha512-rkmoPwQO6ymJSmWsX6l2hHeEBQa7C4kJb9jyi5fZB1sE8nSCv7sqchoYPixRwX/yvLoZP2y6FA5kcjiByeJqDg== +postcss-merge-longhand@^5.0.4: + version "5.0.4" + resolved "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.0.4.tgz#41f4f3270282ea1a145ece078b7679f0cef21c32" + integrity sha512-2lZrOVD+d81aoYkZDpWu6+3dTAAGkCKbV5DoRhnIR7KOULVrI/R7bcMjhrH9KTRy6iiHKqmtG+n/MMj1WmqHFw== dependencies: - postcss-value-parser "^4.2.0" - stylehacks "^5.0.3" + postcss-value-parser "^4.1.0" + stylehacks "^5.0.1" -postcss-merge-rules@^5.0.6: - version "5.0.6" - resolved "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.0.6.tgz#26b37411fe1e80202fcef61cab027265b8925f2b" - integrity sha512-nzJWJ9yXWp8AOEpn/HFAW72WKVGD2bsLiAmgw4hDchSij27bt6TF+sIK0cJUBAYT3SGcjtGGsOR89bwkkMuMgQ== +postcss-merge-rules@^5.0.3: + version "5.0.3" + resolved "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.0.3.tgz#b5cae31f53129812a77e3eb1eeee448f8cf1a1db" + integrity sha512-cEKTMEbWazVa5NXd8deLdCnXl+6cYG7m2am+1HzqH0EnTdy8fRysatkaXb2dEnR+fdaDxTvuZ5zoBdv6efF6hg== dependencies: browserslist "^4.16.6" caniuse-api "^3.0.0" - cssnano-utils "^3.0.2" + cssnano-utils "^2.0.1" postcss-selector-parser "^6.0.5" -postcss-minify-font-values@^5.0.4: - version "5.0.4" - resolved "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.0.4.tgz#627d824406b0712243221891f40a44fffe1467fd" - integrity sha512-RN6q3tyuEesvyCYYFCRGJ41J1XFvgV+dvYGHr0CeHv8F00yILlN8Slf4t8XW4IghlfZYCeyRrANO6HpJ948ieA== +postcss-minify-font-values@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.0.1.tgz#a90cefbfdaa075bd3dbaa1b33588bb4dc268addf" + integrity sha512-7JS4qIsnqaxk+FXY1E8dHBDmraYFWmuL6cgt0T1SWGRO5bzJf8sUoelwa4P88LEWJZweHevAiDKxHlofuvtIoA== dependencies: - postcss-value-parser "^4.2.0" + postcss-value-parser "^4.1.0" -postcss-minify-gradients@^5.0.6: - version "5.0.6" - resolved "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.0.6.tgz#b07cef51a93f075e94053fd972ff1cba2eaf6503" - integrity sha512-E/dT6oVxB9nLGUTiY/rG5dX9taugv9cbLNTFad3dKxOO+BQg25Q/xo2z2ddG+ZB1CbkZYaVwx5blY8VC7R/43A== +postcss-minify-gradients@^5.0.3: + version "5.0.3" + resolved "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.0.3.tgz#f970a11cc71e08e9095e78ec3a6b34b91c19550e" + integrity sha512-Z91Ol22nB6XJW+5oe31+YxRsYooxOdFKcbOqY/V8Fxse1Y3vqlNRpi1cxCqoACZTQEhl+xvt4hsbWiV5R+XI9Q== dependencies: colord "^2.9.1" - cssnano-utils "^3.0.2" - postcss-value-parser "^4.2.0" + cssnano-utils "^2.0.1" + postcss-value-parser "^4.1.0" -postcss-minify-params@^5.0.5: - version "5.0.5" - resolved "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.0.5.tgz#86cb624358cd45c21946f8c317893f0449396646" - integrity sha512-YBNuq3Rz5LfLFNHb9wrvm6t859b8qIqfXsWeK7wROm3jSKNpO1Y5e8cOyBv6Acji15TgSrAwb3JkVNCqNyLvBg== +postcss-minify-params@^5.0.2: + version "5.0.2" + resolved "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.0.2.tgz#1b644da903473fbbb18fbe07b8e239883684b85c" + integrity sha512-qJAPuBzxO1yhLad7h2Dzk/F7n1vPyfHfCCh5grjGfjhi1ttCnq4ZXGIW77GSrEbh9Hus9Lc/e/+tB4vh3/GpDg== dependencies: + alphanum-sort "^1.0.2" browserslist "^4.16.6" - cssnano-utils "^3.0.2" - postcss-value-parser "^4.2.0" + cssnano-utils "^2.0.1" + postcss-value-parser "^4.1.0" -postcss-minify-selectors@^5.1.3: - version "5.1.3" - resolved "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.1.3.tgz#6ac12d52aa661fd509469d87ab2cebb0a1e3a1b5" - integrity sha512-9RJfTiQEKA/kZhMaEXND893nBqmYQ8qYa/G+uPdVnXF6D/FzpfI6kwBtWEcHx5FqDbA79O9n6fQJfrIj6M8jvQ== +postcss-minify-selectors@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.1.0.tgz#4385c845d3979ff160291774523ffa54eafd5a54" + integrity sha512-NzGBXDa7aPsAcijXZeagnJBKBPMYLaJJzB8CQh6ncvyl2sIndLVWfbcDi0SBjRWk5VqEjXvf8tYwzoKf4Z07og== dependencies: + alphanum-sort "^1.0.2" postcss-selector-parser "^6.0.5" postcss-modules-extract-imports@^3.0.0: @@ -18587,11 +19981,11 @@ postcss-modules-values@^4.0.0: icss-utils "^5.0.0" postcss-modules@^4.0.0: - version "4.3.0" - resolved "https://registry.npmjs.org/postcss-modules/-/postcss-modules-4.3.0.tgz#1cb32f16a8cfffe2b989598f8135eb6427106ec7" - integrity sha512-zoUttLDSsbWDinJM9jH37o7hulLRyEgH6fZm2PchxN7AZ8rkdWiALyNhnQ7+jg7cX9f10m6y5VhHsrjO0Mf/DA== + version "4.0.0" + resolved "https://registry.npmjs.org/postcss-modules/-/postcss-modules-4.0.0.tgz#2bc7f276ab88f3f1b0fadf6cbd7772d43b5f3b9b" + integrity sha512-ghS/ovDzDqARm4Zj6L2ntadjyQMoyJmi0JkLlYtH2QFLrvNlxH5OAVRPWPeKilB0pY7SbuhO173KOWkPAxRJcw== dependencies: - generic-names "^4.0.0" + generic-names "^2.0.1" icss-replace-symbols "^1.1.0" lodash.camelcase "^4.3.0" postcss-modules-extract-imports "^3.0.0" @@ -18600,113 +19994,129 @@ postcss-modules@^4.0.0: postcss-modules-values "^4.0.0" string-hash "^1.1.1" -postcss-normalize-charset@^5.0.3: +postcss-normalize-charset@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.0.1.tgz#121559d1bebc55ac8d24af37f67bd4da9efd91d0" + integrity sha512-6J40l6LNYnBdPSk+BHZ8SF+HAkS4q2twe5jnocgd+xWpz/mx/5Sa32m3W1AA8uE8XaXN+eg8trIlfu8V9x61eg== + +postcss-normalize-display-values@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.0.1.tgz#62650b965981a955dffee83363453db82f6ad1fd" + integrity sha512-uupdvWk88kLDXi5HEyI9IaAJTE3/Djbcrqq8YgjvAVuzgVuqIk3SuJWUisT2gaJbZm1H9g5k2w1xXilM3x8DjQ== + dependencies: + cssnano-utils "^2.0.1" + postcss-value-parser "^4.1.0" + +postcss-normalize-positions@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.0.1.tgz#868f6af1795fdfa86fbbe960dceb47e5f9492fe5" + integrity sha512-rvzWAJai5xej9yWqlCb1OWLd9JjW2Ex2BCPzUJrbaXmtKtgfL8dBMOOMTX6TnvQMtjk3ei1Lswcs78qKO1Skrg== + dependencies: + postcss-value-parser "^4.1.0" + +postcss-normalize-repeat-style@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.0.1.tgz#cbc0de1383b57f5bb61ddd6a84653b5e8665b2b5" + integrity sha512-syZ2itq0HTQjj4QtXZOeefomckiV5TaUO6ReIEabCh3wgDs4Mr01pkif0MeVwKyU/LHEkPJnpwFKRxqWA/7O3w== + dependencies: + cssnano-utils "^2.0.1" + postcss-value-parser "^4.1.0" + +postcss-normalize-string@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.0.1.tgz#d9eafaa4df78c7a3b973ae346ef0e47c554985b0" + integrity sha512-Ic8GaQ3jPMVl1OEn2U//2pm93AXUcF3wz+OriskdZ1AOuYV25OdgS7w9Xu2LO5cGyhHCgn8dMXh9bO7vi3i9pA== + dependencies: + postcss-value-parser "^4.1.0" + +postcss-normalize-timing-functions@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.0.1.tgz#8ee41103b9130429c6cbba736932b75c5e2cb08c" + integrity sha512-cPcBdVN5OsWCNEo5hiXfLUnXfTGtSFiBU9SK8k7ii8UD7OLuznzgNRYkLZow11BkQiiqMcgPyh4ZqXEEUrtQ1Q== + dependencies: + cssnano-utils "^2.0.1" + postcss-value-parser "^4.1.0" + +postcss-normalize-unicode@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.0.1.tgz#82d672d648a411814aa5bf3ae565379ccd9f5e37" + integrity sha512-kAtYD6V3pK0beqrU90gpCQB7g6AOfP/2KIPCVBKJM2EheVsBQmx/Iof+9zR9NFKLAx4Pr9mDhogB27pmn354nA== + dependencies: + browserslist "^4.16.0" + postcss-value-parser "^4.1.0" + +postcss-normalize-url@^5.0.3: version "5.0.3" - resolved "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.0.3.tgz#719fb9f9ca9835fcbd4fed8d6e0d72a79e7b5472" - integrity sha512-iKEplDBco9EfH7sx4ut7R2r/dwTnUqyfACf62Unc9UiyFuI7uUqZZtY+u+qp7g8Qszl/U28HIfcsI3pEABWFfA== - -postcss-normalize-display-values@^5.0.3: - version "5.0.3" - resolved "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.0.3.tgz#94cc82e20c51cc4ffba6b36e9618adc1e50db8c1" - integrity sha512-FIV5FY/qs4Ja32jiDb5mVj5iWBlS3N8tFcw2yg98+8MkRgyhtnBgSC0lxU+16AMHbjX5fbSJgw5AXLMolonuRQ== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-positions@^5.0.4: - version "5.0.4" - resolved "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.0.4.tgz#4001f38c99675437b83277836fb4291887fcc6cc" - integrity sha512-qynirjBX0Lc73ROomZE3lzzmXXTu48/QiEzKgMeqh28+MfuHLsuqC9po4kj84igZqqFGovz8F8hf44hA3dPYmQ== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-repeat-style@^5.0.4: - version "5.0.4" - resolved "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.0.4.tgz#d005adf9ee45fae78b673031a376c0c871315145" - integrity sha512-Innt+wctD7YpfeDR7r5Ik6krdyppyAg2HBRpX88fo5AYzC1Ut/l3xaxACG0KsbX49cO2n5EB13clPwuYVt8cMA== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-string@^5.0.4: - version "5.0.4" - resolved "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.0.4.tgz#b5e00a07597e7aa8a871817bfeac2bfaa59c3333" - integrity sha512-Dfk42l0+A1CDnVpgE606ENvdmksttLynEqTQf5FL3XGQOyqxjbo25+pglCUvziicTxjtI2NLUR6KkxyUWEVubQ== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-timing-functions@^5.0.3: - version "5.0.3" - resolved "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.0.3.tgz#47210227bfcba5e52650d7a18654337090de7072" - integrity sha512-QRfjvFh11moN4PYnJ7hia4uJXeFotyK3t2jjg8lM9mswleGsNw2Lm3I5wO+l4k1FzK96EFwEVn8X8Ojrp2gP4g== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-unicode@^5.0.4: - version "5.0.4" - resolved "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.0.4.tgz#02866096937005cdb2c17116c690f29505a1623d" - integrity sha512-W79Regn+a+eXTzB+oV/8XJ33s3pDyFTND2yDuUCo0Xa3QSy1HtNIfRVPXNubHxjhlqmMFADr3FSCHT84ITW3ig== - dependencies: - browserslist "^4.16.6" - postcss-value-parser "^4.2.0" - -postcss-normalize-url@^5.0.5: - version "5.0.5" - resolved "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.0.5.tgz#c39efc12ff119f6f45f0b4f516902b12c8080e3a" - integrity sha512-Ws3tX+PcekYlXh+ycAt0wyzqGthkvVtZ9SZLutMVvHARxcpu4o7vvXcNoiNKyjKuWecnjS6HDI3fjBuDr5MQxQ== + resolved "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.0.3.tgz#42eca6ede57fe69075fab0f88ac8e48916ef931c" + integrity sha512-qWiUMbvkRx3kc1Dp5opzUwc7MBWZcSDK2yofCmdvFBCpx+zFPkxBC1FASQ59Pt+flYfj/nTZSkmF56+XG5elSg== dependencies: + is-absolute-url "^3.0.3" normalize-url "^6.0.1" - postcss-value-parser "^4.2.0" + postcss-value-parser "^4.1.0" -postcss-normalize-whitespace@^5.0.4: - version "5.0.4" - resolved "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.0.4.tgz#1d477e7da23fecef91fc4e37d462272c7b55c5ca" - integrity sha512-wsnuHolYZjMwWZJoTC9jeI2AcjA67v4UuidDrPN9RnX8KIZfE+r2Nd6XZRwHVwUiHmRvKQtxiqo64K+h8/imaw== +postcss-normalize-whitespace@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.0.1.tgz#b0b40b5bcac83585ff07ead2daf2dcfbeeef8e9a" + integrity sha512-iPklmI5SBnRvwceb/XH568yyzK0qRVuAG+a1HFUsFRf11lEJTiQQa03a4RSCQvLKdcpX7XsI1Gen9LuLoqwiqA== dependencies: - postcss-value-parser "^4.2.0" + postcss-value-parser "^4.1.0" -postcss-ordered-values@^5.0.5: - version "5.0.5" - resolved "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.0.5.tgz#e878af822a130c3f3709737e24cb815ca7c6d040" - integrity sha512-mfY7lXpq+8bDEHfP+muqibDPhZ5eP9zgBEF9XRvoQgXcQe2Db3G1wcvjbnfjXG6wYsl+0UIjikqq4ym1V2jGMQ== +postcss-ordered-values@^5.0.2: + version "5.0.2" + resolved "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.0.2.tgz#1f351426977be00e0f765b3164ad753dac8ed044" + integrity sha512-8AFYDSOYWebJYLyJi3fyjl6CqMEG/UVworjiyK1r573I56kb3e879sCJLGvR3merj+fAdPpVplXKQZv+ey6CgQ== dependencies: - cssnano-utils "^3.0.2" - postcss-value-parser "^4.2.0" + cssnano-utils "^2.0.1" + postcss-value-parser "^4.1.0" -postcss-reduce-initial@^5.0.3: - version "5.0.3" - resolved "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.0.3.tgz#68891594defd648253703bbd8f1093162f19568d" - integrity sha512-c88TkSnQ/Dnwgb4OZbKPOBbCaauwEjbECP5uAuFPOzQ+XdjNjRH7SG0dteXrpp1LlIFEKK76iUGgmw2V0xeieA== +postcss-reduce-initial@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.0.1.tgz#9d6369865b0f6f6f6b165a0ef5dc1a4856c7e946" + integrity sha512-zlCZPKLLTMAqA3ZWH57HlbCjkD55LX9dsRyxlls+wfuRfqCi5mSlZVan0heX5cHr154Dq9AfbH70LyhrSAezJw== dependencies: - browserslist "^4.16.6" + browserslist "^4.16.0" caniuse-api "^3.0.0" -postcss-reduce-transforms@^5.0.4: - version "5.0.4" - resolved "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.0.4.tgz#717e72d30befe857f7d2784dba10eb1157863712" - integrity sha512-VIJB9SFSaL8B/B7AXb7KHL6/GNNbbCHslgdzS9UDfBZYIA2nx8NLY7iD/BXFSO/1sRUILzBTfHCoW5inP37C5g== +postcss-reduce-transforms@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.0.1.tgz#93c12f6a159474aa711d5269923e2383cedcf640" + integrity sha512-a//FjoPeFkRuAguPscTVmRQUODP+f3ke2HqFNgGPwdYnpeC29RZdCBvGRGTsKpMURb/I3p6jdKoBQ2zI+9Q7kA== dependencies: - postcss-value-parser "^4.2.0" + cssnano-utils "^2.0.1" + postcss-value-parser "^4.1.0" -postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9: - version "6.0.9" - resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.9.tgz#ee71c3b9ff63d9cd130838876c13a2ec1a992b2f" - integrity sha512-UO3SgnZOVTwu4kyLR22UQ1xZh086RyNZppb7lLAKBFK8a32ttG5i87Y/P3+2bRSjZNyJ1B7hfFNo273tKe9YxQ== +postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4: + version "6.0.4" + resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz#56075a1380a04604c38b063ea7767a129af5c2b3" + integrity sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw== + dependencies: + cssesc "^3.0.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + util-deprecate "^1.0.2" + +postcss-selector-parser@^6.0.5: + version "6.0.6" + resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz#2c5bba8174ac2f6981ab631a42ab0ee54af332ea" + integrity sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg== dependencies: cssesc "^3.0.0" util-deprecate "^1.0.2" -postcss-svgo@^5.0.4: - version "5.0.4" - resolved "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.0.4.tgz#cfa8682f47b88f7cd75108ec499e133b43102abf" - integrity sha512-yDKHvULbnZtIrRqhZoA+rxreWpee28JSRH/gy9727u0UCgtpv1M/9WEWY3xySlFa0zQJcqf6oCBJPR5NwkmYpg== +postcss-svgo@^5.0.3: + version "5.0.3" + resolved "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.0.3.tgz#d945185756e5dfaae07f9edb0d3cae7ff79f9b30" + integrity sha512-41XZUA1wNDAZrQ3XgWREL/M2zSw8LJPvb5ZWivljBsUQAGoEKMYm6okHsTjJxKYI4M75RQEH4KYlEM52VwdXVA== dependencies: - postcss-value-parser "^4.2.0" + postcss-value-parser "^4.1.0" svgo "^2.7.0" -postcss-unique-selectors@^5.0.4: - version "5.0.4" - resolved "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.0.4.tgz#08e188126b634ddfa615fb1d6c262bafdd64826e" - integrity sha512-5ampwoSDJCxDPoANBIlMgoBcYUHnhaiuLYJR5pj1DLnYQvMRVyFuTA5C3Bvt+aHtiqWpJkD/lXT50Vo1D0ZsAQ== +postcss-unique-selectors@^5.0.2: + version "5.0.2" + resolved "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.0.2.tgz#5d6893daf534ae52626708e0d62250890108c0c1" + integrity sha512-w3zBVlrtZm7loQWRPVC0yjUwwpty7OM6DnEHkxcSQXO1bMS3RJ+JUS5LFMSDZHJcvGsRwhZinCWVqn8Kej4EDA== dependencies: + alphanum-sort "^1.0.2" postcss-selector-parser "^6.0.5" postcss-value-parser@^3.3.0: @@ -18714,7 +20124,7 @@ postcss-value-parser@^3.3.0: resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== -postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: +postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: version "4.2.0" resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== @@ -18739,9 +20149,9 @@ postgres-bytea@~1.0.0: integrity sha1-AntTPAqokOJtFy1Hz5zOzFIazTU= postgres-date@~1.0.4: - version "1.0.7" - resolved "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz#51bc086006005e5061c591cee727f2531bf641a8" - integrity sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q== + version "1.0.5" + resolved "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.5.tgz#710b27de5f27d550f6e80b5d34f7ba189213c2ee" + integrity sha512-pdau6GRPERdAYUQwkBnGKxEfPyhVZXG/JiS44iZWiNdSOWE09N2lUgN6yshuq6fVSon4Pm0VMXd1srUUkLe9iA== postgres-interval@^1.1.0: version "1.2.0" @@ -18780,7 +20190,7 @@ prepend-http@^2.0.0: resolved "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= -prettier@^1.19.1: +prettier@^1.16.4, prettier@^1.19.1: version "1.19.1" resolved "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== @@ -18813,19 +20223,20 @@ pretty-format@^26.0.0, pretty-format@^26.6.2: ansi-styles "^4.0.0" react-is "^17.0.1" -pretty-format@^27.0.0, pretty-format@^27.0.2, pretty-format@^27.5.1: - version "27.5.1" - resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" - integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== +pretty-format@^27.0.2: + version "27.3.1" + resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-27.3.1.tgz#7e9486365ccdd4a502061fa761d3ab9ca1b78df5" + integrity sha512-DR/c+pvFc52nLimLROYjnXPtolawm+uWDxr4FjuLDLUn+ktWnSN851KoHwHzzqq6rfCOjkzN8FLgDrSub6UDuA== dependencies: + "@jest/types" "^27.2.5" ansi-regex "^5.0.1" ansi-styles "^5.0.0" react-is "^17.0.1" -printj@~1.3.1: - version "1.3.1" - resolved "https://registry.npmjs.org/printj/-/printj-1.3.1.tgz#9af6b1d55647a1587ac44f4c1654a4b95b8e12cb" - integrity sha512-GA3TdL8szPK4AQ2YnOe/b+Y1jUFwmmGMMK/qbY7VcE3Z7FU8JstbKiKRzO6CIiAKPhTO8m01NoQ0V5f3jc4OGg== +printj@~1.1.0: + version "1.1.2" + resolved "https://registry.npmjs.org/printj/-/printj-1.1.2.tgz#d90deb2975a8b9f600fb3a1c94e3f4c53c78a222" + integrity sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ== prismjs@^1.25.0: version "1.26.0" @@ -18837,6 +20248,11 @@ prismjs@~1.25.0: resolved "https://registry.npmjs.org/prismjs/-/prismjs-1.25.0.tgz#6f822df1bdad965734b310b315a23315cf999756" integrity sha512-WCjJHl1KEWbnkQom1+SzftbtXMKQoezOCYs5rECqMN+jP+apI7ftoflyqigqzopSO3hMhTEb0mFClA8lkolgEg== +private@^0.1.8: + version "0.1.8" + resolved "https://registry.npmjs.org/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" + integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== + proc-log@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/proc-log/-/proc-log-1.0.0.tgz#0d927307401f69ed79341e83a0b2c9a13395eb77" @@ -18931,9 +20347,9 @@ properties-reader@^2.2.0: mkdirp "^1.0.4" property-expr@^2.0.4: - version "2.0.5" - resolved "https://registry.npmjs.org/property-expr/-/property-expr-2.0.5.tgz#278bdb15308ae16af3e3b9640024524f4dc02cb4" - integrity sha512-IJUkICM5dP5znhCckHSv30Q4b5/JA5enCtkRHYaOVOAocnH/1BQEYTC5NMfT3AVl/iXKdr3aqQbQn9DxyWknwA== + version "2.0.4" + resolved "https://registry.npmjs.org/property-expr/-/property-expr-2.0.4.tgz#37b925478e58965031bb612ec5b3260f8241e910" + integrity sha512-sFPkHQjVKheDNnPvotjQmm3KD3uk1fWKUN7CrpdbwmUx3CrG3QiM8QpTSimvig5vTXmTvjz7+TDvXOI9+4rkcg== property-information@^5.0.0: version "5.6.0" @@ -18943,19 +20359,19 @@ property-information@^5.0.0: xtend "^4.0.0" property-information@^6.0.0: - version "6.1.1" - resolved "https://registry.npmjs.org/property-information/-/property-information-6.1.1.tgz#5ca85510a3019726cb9afed4197b7b8ac5926a22" - integrity sha512-hrzC564QIl0r0vy4l6MvRLhafmUowhO/O3KgVSoXIbbA2Sz4j8HGpJc6T2cubRVwMwpdiG/vKGfhT4IixmKN9w== + version "6.0.1" + resolved "https://registry.npmjs.org/property-information/-/property-information-6.0.1.tgz#7c668d9f2b9cb63bc3e105d8b8dfee7221a17800" + integrity sha512-F4WUUAF7fMeF4/JUFHNBWDaKDXi2jbvqBW/y6o5wsf3j19wTZ7S60TmtB5HoBhtgw7NKQRMWuz5vk2PR0CygUg== proto-list@~1.2.1: version "1.2.4" resolved "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk= -proto3-json-serializer@^0.1.8: - version "0.1.8" - resolved "https://registry.npmjs.org/proto3-json-serializer/-/proto3-json-serializer-0.1.8.tgz#f80f9afc1efe5ed9a9856bbbd17dc7cabd7ce9a3" - integrity sha512-ACilkB6s1U1gWnl5jtICpnDai4VCxmI9GFxuEaYdxtDG2oVI3sVFIUsvUZcQbJgtPM6p+zqKbjTKQZp6Y4FpQw== +proto3-json-serializer@^0.1.5: + version "0.1.6" + resolved "https://registry.npmjs.org/proto3-json-serializer/-/proto3-json-serializer-0.1.6.tgz#67cf3b8d5f4c8bebfc410698ad3b1ed64da39c7b" + integrity sha512-tGbV6m6Kad8NqxMh5hw87euPS0YoZSAOIfvR01zYkQV8Gpx1V/8yU/0gCKCvfCkhAJsjvzzhnnsdQxA1w7PSog== dependencies: protobufjs "^6.11.2" @@ -18979,9 +20395,9 @@ protobufjs@6.11.2, protobufjs@^6.10.0, protobufjs@^6.11.2, protobufjs@^6.8.6: long "^4.0.0" protocols@^1.1.0, protocols@^1.4.0: - version "1.4.8" - resolved "https://registry.npmjs.org/protocols/-/protocols-1.4.8.tgz#48eea2d8f58d9644a4a32caae5d5db290a075ce8" - integrity sha512-IgjKyaUSjsROSO8/D49Ab7hP8mJgTYcqApOqdPhLoPxAplXmkp+zRvsrSQjFn5by0rhm4VH0GAUELIPpx7B1yg== + version "1.4.7" + resolved "https://registry.npmjs.org/protocols/-/protocols-1.4.7.tgz#95f788a4f0e979b291ffefcf5636ad113d037d32" + integrity sha512-Fx65lf9/YDn3hUX08XUc0J8rSux36rEsyiv21ZGUC1mOyeM3lTRpZLcrm8aAolzS4itwVfm7TAPyxC2E5zd6xg== proxy-addr@~2.0.7: version "2.0.7" @@ -19030,6 +20446,11 @@ public-encrypt@^4.0.0: randombytes "^2.0.1" safe-buffer "^5.1.2" +puka@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/puka/-/puka-1.0.1.tgz#a2df782b7eb4cf9564e4c93a5da422de0dfacc02" + integrity sha512-ssjRZxBd7BT3dte1RR3VoeT2cT/ODH8x+h0rUF1rMqB0srHYf48stSDWfiYakTp5UBZMxroZhB2+ExLDHm7W3g== + pump@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" @@ -19070,22 +20491,22 @@ pupa@^2.1.1: escape-goat "^2.0.0" puppeteer@^13.1.1: - version "13.3.2" - resolved "https://registry.npmjs.org/puppeteer/-/puppeteer-13.3.2.tgz#4ff1cf6e2009df29fd80038bc702dc067776f79d" - integrity sha512-TIt8/R0eaUwY1c0/O0sCJpSglvGEWVoWFfGZ2dNtxX3eHuBo1ln9abaWfxTjZfsrkYATLSs8oqEdRZpMNnCsvg== + version "13.1.1" + resolved "https://registry.npmjs.org/puppeteer/-/puppeteer-13.1.1.tgz#63771eb744202aa91918c49123f846e1747da121" + integrity sha512-GwdFy1JQ43Hhxj6MraXme+XfCX2CKe18MuwToXTMEAk0txg6vUEgwqBnzErTTqDVZ7sWYrDtDaRCfD2y7ZwgGw== dependencies: - cross-fetch "3.1.5" - debug "4.3.3" - devtools-protocol "0.0.960912" + debug "4.3.2" + devtools-protocol "0.0.948846" extract-zip "2.0.1" https-proxy-agent "5.0.0" + node-fetch "2.6.5" pkg-dir "4.2.0" progress "2.0.3" proxy-from-env "1.1.0" rimraf "3.0.2" tar-fs "2.1.1" unbzip2-stream "1.4.3" - ws "8.5.0" + ws "8.2.3" q@^1.5.1: version "1.5.1" @@ -19097,10 +20518,10 @@ qs@6.9.3: resolved "https://registry.npmjs.org/qs/-/qs-6.9.3.tgz#bfadcd296c2d549f1dffa560619132c977f5008e" integrity sha512-EbZYNarm6138UKKq46tdx08Yo/q9ZhFoAXAI1meAFd2GtbRDhbZY2WQSICskT0c5q99aFzLG1D4nvTk9tqfXIw== -qs@6.9.7: - version "6.9.7" - resolved "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz#4610846871485e1e048f44ae3b94033f0e675afe" - integrity sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw== +qs@6.9.6: + version "6.9.6" + resolved "https://registry.npmjs.org/qs/-/qs-6.9.6.tgz#26ed3c8243a431b2924aca84cc90471f35d5a0ee" + integrity sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ== qs@^6.10.1, qs@^6.10.2, qs@^6.9.1, qs@^6.9.4, qs@^6.9.6: version "6.10.3" @@ -19110,24 +20531,14 @@ qs@^6.10.1, qs@^6.10.2, qs@^6.9.1, qs@^6.9.4, qs@^6.9.6: side-channel "^1.0.4" qs@~6.5.2: - version "6.5.3" - resolved "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" - integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== - -query-string@^6.13.8: - version "6.14.1" - resolved "https://registry.npmjs.org/query-string/-/query-string-6.14.1.tgz#7ac2dca46da7f309449ba0f86b1fd28255b0c86a" - integrity sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw== - dependencies: - decode-uri-component "^0.2.0" - filter-obj "^1.1.0" - split-on-first "^1.0.0" - strict-uri-encode "^2.0.0" + version "6.5.2" + resolved "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" + integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== query-string@^7.0.0: - version "7.1.1" - resolved "https://registry.npmjs.org/query-string/-/query-string-7.1.1.tgz#754620669db978625a90f635f12617c271a088e1" - integrity sha512-MplouLRDHBZSG9z7fpuAAcI7aAYjDLhtsiVZsevsfaHWDS2IDdORKbSd1kWUA+V4zyva/HZoSfpwnYMMQDhb0w== + version "7.0.0" + resolved "https://registry.npmjs.org/query-string/-/query-string-7.0.0.tgz#aaad2c8d5c6a6d0c6afada877fecbd56af79e609" + integrity sha512-Iy7moLybliR5ZgrK/1R3vjrXq03S13Vz4Rbm5Jg3EFq1LUmQppto0qtXz4vqZ386MSRjZgnTSZ9QC+NZOSd/XA== dependencies: decode-uri-component "^0.2.0" filter-obj "^1.1.0" @@ -19149,11 +20560,6 @@ querystringify@^2.1.1: resolved "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== -queue-microtask@^1.2.2: - version "1.2.3" - resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== - quick-format-unescaped@^3.0.3: version "3.0.3" resolved "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-3.0.3.tgz#fb3e468ac64c01d22305806c39f121ddac0d1fb9" @@ -19170,9 +20576,9 @@ quick-lru@^5.1.1: integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== raf-schd@^4.0.2: - version "4.0.3" - resolved "https://registry.npmjs.org/raf-schd/-/raf-schd-4.0.3.tgz#5d6c34ef46f8b2a0e880a8fcdb743efc5bfdbc1a" - integrity sha512-tQkJl2GRWh83ui2DiPTJz9wEiMN20syf+5oKfB03yYP7ioZcJwsIK8FjrtLwH1m7C7e+Tt2yYBlrOpdT+dyeIQ== + version "4.0.2" + resolved "https://registry.npmjs.org/raf-schd/-/raf-schd-4.0.2.tgz#bd44c708188f2e84c810bf55fcea9231bcaed8a0" + integrity sha512-VhlMZmGy6A6hrkJWHLNTGl5gtgMUm+xfGza6wbwnE914yeQ5Ybm18vgM734RZhMgfw4tacUrWseGZlpUrrakEQ== raf@^3.4.0: version "3.4.1" @@ -19181,11 +20587,16 @@ raf@^3.4.0: dependencies: performance-now "^2.1.0" -ramda@^0.27.1, ramda@~0.27.1: +ramda@^0.27.1: version "0.27.2" resolved "https://registry.npmjs.org/ramda/-/ramda-0.27.2.tgz#84463226f7f36dc33592f6f4ed6374c48306c3f1" integrity sha512-SbiLPU40JuJniHexQSAgad32hfwd+DRUdwF2PlVuI5RZD0/vahUco7R8vD86J/tcEKKF9vZrUVwgtmGCqlCKyA== +ramda@~0.27.1: + version "0.27.1" + resolved "https://registry.npmjs.org/ramda/-/ramda-0.27.1.tgz#66fc2df3ef873874ffc2da6aa8984658abacf5c9" + integrity sha512-PgIdVpn5y5Yns8vqb8FzBUEYn98V3xcPgawAkkgj0YJ0qDsnHCiNmZYfOGMgOvoB0eWFLpYbhxUR3mxfDIMvpw== + random-bytes@~1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz#4f68a1dc0ae58bd3fb95848c30324db75d64360b" @@ -19216,12 +20627,12 @@ range-parser@^1.2.1, range-parser@~1.2.1: resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== -raw-body@2.4.3, raw-body@^2.4.1: - version "2.4.3" - resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.4.3.tgz#8f80305d11c2a0a545c2d9d89d7a0286fcead43c" - integrity sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g== +raw-body@2.4.2, raw-body@^2.4.1: + version "2.4.2" + resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.4.2.tgz#baf3e9c21eebced59dd6533ac872b71f7b61cb32" + integrity sha512-RPMAFUJP19WIet/99ngh6Iv8fzAbqum4Li7AD6DtGaW2RpMB/11xDoalPiJMTbu6I3hkbMVkATvZrqb9EEqeeQ== dependencies: - bytes "3.1.2" + bytes "3.1.1" http-errors "1.8.1" iconv-lite "0.4.24" unpipe "1.0.0" @@ -19236,9 +20647,9 @@ rc-progress@3.2.4: rc-util "^5.16.1" rc-util@^5.16.1: - version "5.18.1" - resolved "https://registry.npmjs.org/rc-util/-/rc-util-5.18.1.tgz#80bd1450b5254655d2fbea63e3d34f6871e9be79" - integrity sha512-24xaSrMZUEKh1+suDOtJWfPe9E6YrwryViZcoPO0miJTKzP4qhUlV5AAlKQ82AJilz/AOHfi3l6HoX8qa1ye8w== + version "5.16.1" + resolved "https://registry.npmjs.org/rc-util/-/rc-util-5.16.1.tgz#374db7cb735512f05165ddc3d6b2c61c21b8b4e3" + integrity sha512-kSCyytvdb3aRxQacS/71ta6c+kBWvM1v8/2h9d/HaNWauc3qB8pLnF20PJ8NajkNN8gb+rR1l0eWO+D4Pz+LLQ== dependencies: "@babel/runtime" "^7.12.5" react-is "^16.12.0" @@ -19255,15 +20666,15 @@ rc@^1.2.8: strip-json-comments "~2.0.1" react-beautiful-dnd@^13.0.0: - version "13.1.0" - resolved "https://registry.npmjs.org/react-beautiful-dnd/-/react-beautiful-dnd-13.1.0.tgz#ec97c81093593526454b0de69852ae433783844d" - integrity sha512-aGvblPZTJowOWUNiwd6tNfEpgkX5OxmpqxHKNW/4VmvZTNTbeiq7bA3bn5T+QSF2uibXB0D1DmJsb1aC/+3cUA== + version "13.0.0" + resolved "https://registry.npmjs.org/react-beautiful-dnd/-/react-beautiful-dnd-13.0.0.tgz#f70cc8ff82b84bc718f8af157c9f95757a6c3b40" + integrity sha512-87It8sN0ineoC3nBW0SbQuTFXM6bUqM62uJGY4BtTf0yzPl8/3+bHMWkgIe0Z6m8e+gJgjWxefGRVfpE3VcdEg== dependencies: - "@babel/runtime" "^7.9.2" + "@babel/runtime" "^7.8.4" css-box-model "^1.2.0" memoize-one "^5.1.1" raf-schd "^4.0.2" - react-redux "^7.2.0" + react-redux "^7.1.1" redux "^4.0.4" use-memo-one "^1.1.1" @@ -19328,9 +20739,9 @@ react-double-scrollbar@0.0.15: integrity sha1-6RWrjLO5WYdwdfSUNt6/2wQoj+Q= react-error-boundary@^3.1.0: - version "3.1.4" - resolved "https://registry.npmjs.org/react-error-boundary/-/react-error-boundary-3.1.4.tgz#255db92b23197108757a888b01e5b729919abde0" - integrity sha512-uM9uPzZJTF6wRQORmSrvOIgt4lJ9MC1sNgEOj2XGsDTRE4kmpWxg7ENK9EWNKJRMAOY9z0MuF4yIfl6gp4sotA== + version "3.1.3" + resolved "https://registry.npmjs.org/react-error-boundary/-/react-error-boundary-3.1.3.tgz#276bfa05de8ac17b863587c9e0647522c25e2a0b" + integrity sha512-A+F9HHy9fvt9t8SNDlonq01prnU8AmkjvGKV4kk8seB9kU3xMEO8J/PQlLVmoOIDODl5U2kufSBs4vrWIqhsAA== dependencies: "@babel/runtime" "^7.12.5" @@ -19359,10 +20770,15 @@ react-helmet@6.1.0: react-fast-compare "^3.1.1" react-side-effect "^2.1.0" -react-hook-form@^7.12.2, react-hook-form@^7.13.0: - version "7.27.0" - resolved "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.27.0.tgz#2c05e54ca557f71c55f645311ff612ec936c6c7c" - integrity sha512-NEh3Qbz1Rg3w95SRZv0kHorHN3frtMKasplznMBr8RkFrE4pVxjd/zo3clnFXpD0FppUVHBMfsTMtTsa6wyQrA== +react-hook-form@^7.12.2: + version "7.16.1" + resolved "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.16.1.tgz#669046df378a71949e5cf8a2398cbe20d5cb27bc" + integrity sha512-kcLDmSmlyLUFx2UU5bG/o4+3NeK753fhKodJa8gkplXohGkpAq0/p+TR24OWjZmkEc3ES7ppC5v5d6KUk+fJTA== + +react-hook-form@^7.13.0: + version "7.17.4" + resolved "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.17.4.tgz#232b6aaccddb91eb4a228ac20b154abd90866fdb" + integrity sha512-7XhbCr7d9fDC1TgcK/BUbt7D3q0VJMu7jPErfsa0JrxVjv/nni41xWdJcy0Zb7R+Np8OsCkQ2lMyloAtE3DLiQ== react-hot-loader@^4.13.0: version "4.13.0" @@ -19404,7 +20820,7 @@ react-is@^16.10.2, react-is@^16.12.0, react-is@^16.13.1, react-is@^16.7.0, react resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== -"react-is@^16.8.0 || ^17.0.0", react-is@^17.0.0, react-is@^17.0.1, react-is@^17.0.2: +"react-is@^16.8.0 || ^17.0.0", react-is@^17.0.0, react-is@^17.0.1: version "17.0.2" resolved "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== @@ -19434,17 +20850,17 @@ react-markdown@^8.0.0: unist-util-visit "^4.0.0" vfile "^5.0.0" -react-redux@^7.2.0, react-redux@^7.2.4: - version "7.2.6" - resolved "https://registry.npmjs.org/react-redux/-/react-redux-7.2.6.tgz#49633a24fe552b5f9caf58feb8a138936ddfe9aa" - integrity sha512-10RPdsz0UUrRL1NZE0ejTkucnclYSgXp5q+tB5SWx2qeG2ZJQJyymgAhwKy73yiL/13btfB6fPr+rgbMAaZIAQ== +react-redux@^7.1.1, react-redux@^7.2.4: + version "7.2.5" + resolved "https://registry.npmjs.org/react-redux/-/react-redux-7.2.5.tgz#213c1b05aa1187d9c940ddfc0b29450957f6a3b8" + integrity sha512-Dt29bNyBsbQaysp6s/dN0gUodcq+dVKKER8Qv82UrpeygwYeX1raTtil7O/fftw/rFqzaf6gJhDZRkkZnn6bjg== dependencies: - "@babel/runtime" "^7.15.4" - "@types/react-redux" "^7.1.20" + "@babel/runtime" "^7.12.1" + "@types/react-redux" "^7.1.16" hoist-non-react-statics "^3.3.2" loose-envify "^1.4.0" prop-types "^15.7.2" - react-is "^17.0.2" + react-is "^16.13.1" react-resize-detector@^2.3.0: version "2.3.0" @@ -19488,14 +20904,14 @@ react-router@^6.0.0-beta.0: history "^5.2.0" react-side-effect@^2.1.0: - version "2.1.1" - resolved "https://registry.npmjs.org/react-side-effect/-/react-side-effect-2.1.1.tgz#66c5701c3e7560ab4822a4ee2742dee215d72eb3" - integrity sha512-2FoTQzRNTncBVtnzxFOk2mCpcfxQpenBMbk5kSVBg5UcPqV9fRbgY2zhb7GTWWOlpFmAxhClBDlIq8Rsubz1yQ== + version "2.1.0" + resolved "https://registry.npmjs.org/react-side-effect/-/react-side-effect-2.1.0.tgz#1ce4a8b4445168c487ed24dab886421f74d380d3" + integrity sha512-IgmcegOSi5SNX+2Snh1vqmF0Vg/CbkycU9XZbOHJlZ6kMzTmi3yc254oB1WCkgA7OQtIAoLmcSFuHTc/tlcqXg== react-smooth@^1.0.5: - version "1.0.6" - resolved "https://registry.npmjs.org/react-smooth/-/react-smooth-1.0.6.tgz#18b964f123f7bca099e078324338cd8739346d0a" - integrity sha512-B2vL4trGpNSMSOzFiAul9kFAsxTukL9Wyy9EXtkQy3GJr6sZqW9e1nShdVOJ3hRYamPZ94O17r3Q0bjSw3UYtg== + version "1.0.5" + resolved "https://registry.npmjs.org/react-smooth/-/react-smooth-1.0.5.tgz#94ae161d7951cdd893ccb7099d031d342cb762ad" + integrity sha512-eW057HT0lFgCKh8ilr0y2JaH2YbNcuEdFpxyg7Gf/qDKk9hqGMyXryZJ8iMGJEuKH0+wxS0ccSsBBB3W8yCn8w== dependencies: lodash "~4.17.4" prop-types "^15.6.0" @@ -19530,9 +20946,9 @@ react-syntax-highlighter@^15.4.5: refractor "^3.2.0" react-test-renderer@^16.13.1: - version "16.14.0" - resolved "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-16.14.0.tgz#e98360087348e260c56d4fe2315e970480c228ae" - integrity sha512-L8yPjqPE5CZO6rKsKXRO/rVPiaCOy0tQQJbC+UjPNlobl5mad59lvPjwFsQHTvL03caVDIVr9x9/OSgDe6I5Eg== + version "16.13.1" + resolved "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-16.13.1.tgz#de25ea358d9012606de51e012d9742e7f0deabc1" + integrity sha512-Sn2VRyOK2YJJldOqoh8Tn/lWQ+ZiKhyZTPtaO0Q6yNj+QDbmRkVFap6pZPy3YQk8DScRDfyqm/KxKYP9gCMRiQ== dependencies: object-assign "^4.1.1" prop-types "^15.6.2" @@ -19557,9 +20973,9 @@ react-transition-group@2.9.0, react-transition-group@^2.5.0: react-lifecycles-compat "^3.0.4" react-transition-group@^4.0.0, react-transition-group@^4.4.0: - version "4.4.2" - resolved "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.2.tgz#8b59a56f09ced7b55cbd53c36768b922890d5470" - integrity sha512-/RNYfRAMlZwDSr6z4zNKV6xu53/e2BuaBbGhbyYIXTrmgu/bGHzmqOs7mJSJBHy9Ud+ApHx3QjrkKSp1pxvlFg== + version "4.4.1" + resolved "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.1.tgz#63868f9325a38ea5ee9535d828327f85773345c9" + integrity sha512-Djqr7OQ2aPUiYurhPalTrVy9ddmFCCzwhqQmtN+J3+3DzLO209Fdr70QrN8Z3DsglWql6iY1lDWAfpFiBtuKGw== dependencies: "@babel/runtime" "^7.5.5" dom-helpers "^5.0.1" @@ -19571,7 +20987,27 @@ react-universal-interface@^0.6.2: resolved "https://registry.npmjs.org/react-universal-interface/-/react-universal-interface-0.6.2.tgz#5e8d438a01729a4dbbcbeeceb0b86be146fe2b3b" integrity sha512-dg8yXdcQmvgR13RIlZbTRQOoUrDciFVoSBZILwjE2LFISxZZ8loVJKAkuzswl5js8BHda79bIb2b84ehU8IjXw== -react-use@^17.2.4, react-use@^17.3.1, react-use@^17.3.2: +react-use@^17.2.4: + version "17.2.4" + resolved "https://registry.npmjs.org/react-use/-/react-use-17.2.4.tgz#1f89be3db0a8237c79253db0a15e12bbe3cfeff1" + integrity sha512-vQGpsAM0F5UIlshw5UI8ULGPS4yn5rm7/qvn3T1Gnkrz7YRMEEMh+ynKcmRloOyiIeLvKWiQjMiwRGtdbgs5qQ== + dependencies: + "@types/js-cookie" "^2.2.6" + "@xobotyi/scrollbar-width" "^1.9.5" + copy-to-clipboard "^3.3.1" + fast-deep-equal "^3.1.3" + fast-shallow-equal "^1.0.0" + js-cookie "^2.2.1" + nano-css "^5.3.1" + react-universal-interface "^0.6.2" + resize-observer-polyfill "^1.5.1" + screenfull "^5.1.0" + set-harmonic-interval "^1.0.1" + throttle-debounce "^3.0.1" + ts-easing "^0.2.0" + tslib "^2.1.0" + +react-use@^17.3.1, react-use@^17.3.2: version "17.3.2" resolved "https://registry.npmjs.org/react-use/-/react-use-17.3.2.tgz#448abf515f47c41c32455024db28167cb6e53be8" integrity sha512-bj7OD0/1wL03KyWmzFXAFe425zziuTf7q8olwCYBfOeFHY1qfO1FAMjROQLsLZYwG4Rx63xAfb7XAbBrJsZmEw== @@ -19617,7 +21053,15 @@ read-cmd-shim@^2.0.0: resolved "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-2.0.0.tgz#4a50a71d6f0965364938e9038476f7eede3928d9" integrity sha512-HJpV9bQpkl6KwjxlJcBoqu9Ba0PQg8TqSNIOrulGt54a0uup0HtevreFHzYzkm0lpnleRdNBzXznKrgxglEHQw== -read-package-json-fast@^2.0.1, read-package-json-fast@^2.0.2: +read-package-json-fast@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.1.tgz#c767f6c634873ffb6bb73788191b65559734f555" + integrity sha512-bp6z0tdgLy9KzdfENDIw/53HWAolOVoQTRWXv7PUiqAo3YvvoUVeLr7RWPWq+mu7KUOu9kiT4DvxhUgNUBsvug== + dependencies: + json-parse-even-better-errors "^2.3.0" + npm-normalize-package-bin "^1.0.1" + +read-package-json-fast@^2.0.2: version "2.0.3" resolved "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz#323ca529630da82cb34b36cc0b996693c98c2b83" integrity sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ== @@ -19626,29 +21070,21 @@ read-package-json-fast@^2.0.1, read-package-json-fast@^2.0.2: npm-normalize-package-bin "^1.0.1" read-package-json@^2.0.0: - version "2.1.2" - resolved "https://registry.npmjs.org/read-package-json/-/read-package-json-2.1.2.tgz#6992b2b66c7177259feb8eaac73c3acd28b9222a" - integrity sha512-D1KmuLQr6ZSJS0tW8hf3WGpRlwszJOXZ3E8Yd/DNRaM5d+1wVRZdHlpGBLAuovjr28LbWvjpWkBHMxpRGGjzNA== + version "2.1.1" + resolved "https://registry.npmjs.org/read-package-json/-/read-package-json-2.1.1.tgz#16aa66c59e7d4dad6288f179dd9295fd59bb98f1" + integrity sha512-dAiqGtVc/q5doFz6096CcnXhpYk0ZN8dEKVkGLU0CsASt8SrgF6SF7OTKAYubfvFhWaqofl+Y8HK19GR8jwW+A== dependencies: glob "^7.1.1" - json-parse-even-better-errors "^2.3.0" + json-parse-better-errors "^1.0.1" normalize-package-data "^2.0.0" npm-normalize-package-bin "^1.0.0" + optionalDependencies: + graceful-fs "^4.1.2" read-package-json@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/read-package-json/-/read-package-json-3.0.1.tgz#c7108f0b9390257b08c21e3004d2404c806744b9" - integrity sha512-aLcPqxovhJTVJcsnROuuzQvv6oziQx4zd3JvG0vGCL5MjTONUc4uJ90zCBC6R7W7oUKBNoR/F8pkyfVwlbxqng== - dependencies: - glob "^7.1.1" - json-parse-even-better-errors "^2.3.0" - normalize-package-data "^3.0.0" - npm-normalize-package-bin "^1.0.0" - -read-package-json@^4.1.1: - version "4.1.1" - resolved "https://registry.npmjs.org/read-package-json/-/read-package-json-4.1.1.tgz#153be72fce801578c1c86b8ef2b21188df1b9eea" - integrity sha512-P82sbZJ3ldDrWCOSKxJT0r/CXMWR0OR3KRh55SgKo3p91GSIEEC32v3lSHAvO/UcH3/IoL7uqhOFBduAnwdldw== + version "3.0.0" + resolved "https://registry.npmjs.org/read-package-json/-/read-package-json-3.0.0.tgz#2219328e77c9be34f035a4ce58d1fb8e2979adf9" + integrity sha512-4TnJZ5fnDs+/3deg1AuMExL4R1SFNRLQeOhV9c8oDKm3eoG6u8xU0r0mNNRJHi3K6B+jXmT7JOhwhAklWw9SSQ== dependencies: glob "^7.1.1" json-parse-even-better-errors "^2.3.0" @@ -19743,7 +21179,7 @@ readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.2, readable-stre string_decoder "^1.1.1" util-deprecate "^1.0.1" -readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: +readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -19788,16 +21224,23 @@ readdirp@~3.6.0: picomatch "^2.2.1" recast@^0.20.3, recast@^0.20.4: - version "0.20.5" - resolved "https://registry.npmjs.org/recast/-/recast-0.20.5.tgz#8e2c6c96827a1b339c634dd232957d230553ceae" - integrity sha512-E5qICoPoNL4yU0H0NoBDntNB0Q5oMSNh9usFctYniLBluTthi3RsQVBXIJNbApOlvSwW/RGxIuokPcAc59J5fQ== + version "0.20.4" + resolved "https://registry.npmjs.org/recast/-/recast-0.20.4.tgz#db55983eac70c46b3fff96c8e467d65ffb4a7abc" + integrity sha512-6qLIBGGRcwjrTZGIiBpJVC/NeuXpogXNyRQpqU1zWPUigCphvApoCs9KIwDYh1eDuJ6dAFlQoi/QUyE5KQ6RBQ== dependencies: ast-types "0.14.2" esprima "~4.0.0" source-map "~0.6.1" tslib "^2.0.1" -recharts-scale@^0.4.2, recharts-scale@^0.4.4: +recharts-scale@^0.4.2: + version "0.4.3" + resolved "https://registry.npmjs.org/recharts-scale/-/recharts-scale-0.4.3.tgz#040b4f638ed687a530357292ecac880578384b59" + integrity sha512-t8p5sccG9Blm7c1JQK/ak9O8o95WGhNXD7TXg/BW5bYbVlr6eCeRBNpgyigD4p6pSSMehC5nSvBUPj6F68rbFA== + dependencies: + decimal.js-light "^2.4.1" + +recharts-scale@^0.4.4: version "0.4.5" resolved "https://registry.npmjs.org/recharts-scale/-/recharts-scale-0.4.5.tgz#0969271f14e732e642fcc5bd4ab270d6e87dd1d9" integrity sha512-kivNFO+0OcUNu7jQquLXAxz1FIwZj8nrj+YkOKc5694NbjCvcT6aSZiIzNzd2Kul4o4rTto8QVR9lMNtxD4G1w== @@ -19822,9 +21265,9 @@ recharts@^1.8.5: reduce-css-calc "^1.3.0" recharts@^2.1.5: - version "2.1.9" - resolved "https://registry.npmjs.org/recharts/-/recharts-2.1.9.tgz#a52d411a7d822d118f7754cfc9c50db8fab46fb9" - integrity sha512-VozH5uznUvGqD7n224FGj7cmMAenlS0HPCs+7r2HeeHiQK6un6z0CTZfWVAB860xbcr4m+BN/EGMPZmYWd34Rg== + version "2.1.8" + resolved "https://registry.npmjs.org/recharts/-/recharts-2.1.8.tgz#ca8774fcec5f5d7ec15dedd638db9ee12faf1c09" + integrity sha512-Wi7ufdDGyvy/BPf1za1Ok7VeWB2KtEejaewO9ulmlUhvn5l5RPS4AOkrUfhtMRTTjgJ4K6AbWMDpwtDjczUHJA== dependencies: "@types/d3-interpolate" "^2.0.0" "@types/d3-scale" "^3.0.0" @@ -19899,7 +21342,22 @@ redux-immutable@^4.0.0: resolved "https://registry.npmjs.org/redux-immutable/-/redux-immutable-4.0.0.tgz#3a1a32df66366462b63691f0e1dc35e472bbc9f3" integrity sha1-Ohoy32Y2ZGK2NpHw4dw15HK7yfM= -redux@^4.0.0, redux@^4.0.4, redux@^4.1.2: +redux@^4.0.0: + version "4.1.1" + resolved "https://registry.npmjs.org/redux/-/redux-4.1.1.tgz#76f1c439bb42043f985fbd9bf21990e60bd67f47" + integrity sha512-hZQZdDEM25UY2P493kPYuKqviVwZ58lEmGQNeQ+gXa+U0gYPUBf7NKYazbe3m+bs/DzM/ahN12DbF+NG8i0CWw== + dependencies: + "@babel/runtime" "^7.9.2" + +redux@^4.0.4: + version "4.0.5" + resolved "https://registry.npmjs.org/redux/-/redux-4.0.5.tgz#4db5de5816e17891de8a80c424232d06f051d93f" + integrity sha512-VSz1uMAH24DM6MF72vcojpYPtrTUu3ByVWfPL1nPfVRb5mZVTve5GnNCUV53QM/BZ66xfWrm0CTWoM+Xlz8V1w== + dependencies: + loose-envify "^1.4.0" + symbol-observable "^1.2.0" + +redux@^4.1.2: version "4.1.2" resolved "https://registry.npmjs.org/redux/-/redux-4.1.2.tgz#140f35426d99bb4729af760afcf79eaaac407104" integrity sha512-SH8PglcebESbd/shgf6mii6EIoRM0zrQyjcuQ+ojmfxjTtE0z9Y8pa62iA/OJ58qjP6j27uyW4kUF4jl/jd6sw== @@ -19920,17 +21378,17 @@ refractor@^3.2.0: parse-entities "^2.0.0" prismjs "~1.25.0" -regenerate-unicode-properties@^10.0.1: - version "10.0.1" - resolved "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz#7f442732aa7934a3740c779bb9b3340dccc1fb56" - integrity sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw== +regenerate-unicode-properties@^8.2.0: + version "8.2.0" + resolved "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" + integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA== dependencies: - regenerate "^1.4.2" + regenerate "^1.4.0" -regenerate@^1.4.2: - version "1.4.2" - resolved "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" - integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== +regenerate@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" + integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== regenerator-runtime@^0.10.5: version "0.10.5" @@ -19942,17 +21400,23 @@ regenerator-runtime@^0.11.0: resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== -regenerator-runtime@^0.13.4: +regenerator-runtime@^0.13.3: version "0.13.9" resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== +regenerator-runtime@^0.13.4: + version "0.13.7" + resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" + integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== + regenerator-transform@^0.14.2: - version "0.14.5" - resolved "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4" - integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw== + version "0.14.4" + resolved "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.4.tgz#5266857896518d1616a78a0479337a30ea974cc7" + integrity sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw== dependencies: "@babel/runtime" "^7.8.4" + private "^0.1.8" regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" @@ -19962,10 +21426,18 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" -regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.3.1: - version "1.4.1" - resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz#b3f4c0059af9e47eca9f3f660e51d81307e72307" - integrity sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ== +regexp.prototype.flags@^1.2.0: + version "1.3.0" + resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" + integrity sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + +regexp.prototype.flags@^1.3.1: + version "1.3.1" + resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz#7ef352ae8d159e758c0eadca6f8fcb4eef07be26" + integrity sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA== dependencies: call-bind "^1.0.2" define-properties "^1.1.3" @@ -19975,22 +21447,22 @@ regexpp@^3.2.0: resolved "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== -regexpu-core@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.0.1.tgz#c531122a7840de743dcf9c83e923b5560323ced3" - integrity sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw== +regexpu-core@^4.7.1: + version "4.7.1" + resolved "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz#2dea5a9a07233298fbf0db91fa9abc4c6e0f8ad6" + integrity sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ== dependencies: - regenerate "^1.4.2" - regenerate-unicode-properties "^10.0.1" - regjsgen "^0.6.0" - regjsparser "^0.8.2" - unicode-match-property-ecmascript "^2.0.0" - unicode-match-property-value-ecmascript "^2.0.0" + regenerate "^1.4.0" + regenerate-unicode-properties "^8.2.0" + regjsgen "^0.5.1" + regjsparser "^0.6.4" + unicode-match-property-ecmascript "^1.0.4" + unicode-match-property-value-ecmascript "^1.2.0" registry-auth-token@^4.0.0: - version "4.2.1" - resolved "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz#6d7b4006441918972ccd5fedcd41dc322c79b250" - integrity sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw== + version "4.1.1" + resolved "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.1.1.tgz#40a33be1e82539460f94328b0f7f0f84c16d9479" + integrity sha512-9bKS7nTl9+/A1s7tnPeGrUpRcVY+LUh7bfFgzpndALdPfXQBfQV77rQVtqgUV3ti4vc/Ik81Ex8UJDWDQ12zQA== dependencies: rc "^1.2.8" @@ -20001,15 +21473,15 @@ registry-url@^5.0.0: dependencies: rc "^1.2.8" -regjsgen@^0.6.0: - version "0.6.0" - resolved "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz#83414c5354afd7d6627b16af5f10f41c4e71808d" - integrity sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA== +regjsgen@^0.5.1: + version "0.5.1" + resolved "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.1.tgz#48f0bf1a5ea205196929c0d9798b42d1ed98443c" + integrity sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg== -regjsparser@^0.8.2: - version "0.8.4" - resolved "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz#8a14285ffcc5de78c5b95d62bbf413b6bc132d5f" - integrity sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA== +regjsparser@^0.6.4: + version "0.6.4" + resolved "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz#a769f8684308401a66e9b529d2436ff4d0666272" + integrity sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw== dependencies: jsesc "~0.5.0" @@ -20066,9 +21538,9 @@ remark-gfm@^3.0.1: unified "^10.0.0" remark-parse@^10.0.0: - version "10.0.1" - resolved "https://registry.npmjs.org/remark-parse/-/remark-parse-10.0.1.tgz#6f60ae53edbf0cf38ea223fe643db64d112e0775" - integrity sha512-1fUyHr2jLsVOkhbvPRBJ5zTKZZyD6yZzYaWCS6BPBdQ8vEMBCH+9zNCDA6tET/zHCi/jLqjCWtlJZUPk+DbnFw== + version "10.0.0" + resolved "https://registry.npmjs.org/remark-parse/-/remark-parse-10.0.0.tgz#65e2b2b34d8581d36b97f12a2926bb2126961cb4" + integrity sha512-07ei47p2Xl7Bqbn9H2VYQYirnAFJPwdMuypdozWsSbnmrkgA2e2sZLZdnDNrrsxR4onmIzH/J6KXqKxCuqHtPQ== dependencies: "@types/mdast" "^3.0.0" mdast-util-from-markdown "^1.0.0" @@ -20119,9 +21591,9 @@ renderkid@^3.0.0: strip-ansi "^6.0.1" repeat-element@^1.1.2: - version "1.1.4" - resolved "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" - integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== + version "1.1.3" + resolved "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" + integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== repeat-string@^1.5.2, repeat-string@^1.6.1: version "1.6.1" @@ -20154,6 +21626,22 @@ request-progress@^3.0.0: dependencies: throttleit "^1.0.0" +request-promise-core@1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.3.tgz#e9a3c081b51380dfea677336061fea879a829ee9" + integrity sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ== + dependencies: + lodash "^4.17.15" + +request-promise-native@^1.0.8: + version "1.0.8" + resolved "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.8.tgz#a455b960b826e44e2bf8999af64dff2bfe58cb36" + integrity sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ== + dependencies: + request-promise-core "1.1.3" + stealthy-require "^1.1.1" + tough-cookie "^2.3.3" + request@^2.88.0, request@^2.88.2: version "2.88.2" resolved "https://registry.npmjs.org/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" @@ -20205,10 +21693,10 @@ requires-port@^1.0.0: resolved "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= -reselect@^4.1.5: - version "4.1.5" - resolved "https://registry.npmjs.org/reselect/-/reselect-4.1.5.tgz#852c361247198da6756d07d9296c2b51eddb79f6" - integrity sha512-uVdlz8J7OO+ASpBYoz1Zypgx0KasCY20H+N8JD13oUMtPvSHQuscrHop4KbXrbsBcdB9Ds7lVK7eRkBIfO43vQ== +reselect@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/reselect/-/reselect-4.0.0.tgz#f2529830e5d3d0e021408b246a206ef4ea4437f7" + integrity sha512-qUgANli03jjAyGlnbYVAV5vvnOmJnODyABz51RdBN7M4WaVu8mecZWgyQNkG8Yqe3KRGRt0l4K4B3XVEULC4CA== resize-observer-polyfill@^1.5.0, resize-observer-polyfill@^1.5.1: version "1.5.1" @@ -20216,9 +21704,9 @@ resize-observer-polyfill@^1.5.0, resize-observer-polyfill@^1.5.1: integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg== resolve-alpn@^1.0.0: - version "1.2.1" - resolved "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" - integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g== + version "1.0.0" + resolved "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.0.0.tgz#745ad60b3d6aff4b4a48e01b8c0bdc70959e0e8c" + integrity sha512-rTuiIEqFmGxne4IovivKSDzld2lWW9QCjqv80SYjPgf+gS35eaCAjaP54CCwGAwBtnCsvNLYtqxe1Nw+i6JEmA== resolve-cwd@^3.0.0: version "3.0.0" @@ -20243,11 +21731,11 @@ resolve-url@^0.2.1: integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= resolve@^1.1.6, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.18.1, resolve@^1.19.0, resolve@^1.20.0: - version "1.22.0" - resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198" - integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw== + version "1.21.0" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.21.0.tgz#b51adc97f3472e6a5cf4444d34bc9d6b9037591f" + integrity sha512-3wCbTpk5WJlyE4mSOtDLhqQmGFi0/TD9VPwmiolnk8U0wRgMEktqCXd3vy5buTO3tljvalNvKrjHEfrd2WpEKA== dependencies: - is-core-module "^2.8.1" + is-core-module "^2.8.0" path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" @@ -20288,6 +21776,14 @@ responselike@^2.0.0: dependencies: lowercase-keys "^2.0.0" +restore-cursor@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541" + integrity sha1-NGYfRohjJ/7SmRR5FSJS35LapUE= + dependencies: + exit-hook "^1.0.0" + onetime "^1.0.0" + restore-cursor@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" @@ -20314,7 +21810,14 @@ ret@~0.2.0: resolved "https://registry.npmjs.org/ret/-/ret-0.2.2.tgz#b6861782a1f4762dce43402a71eb7a283f44573c" integrity sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ== -retry-request@^4.0.0, retry-request@^4.2.2: +retry-request@^4.0.0: + version "4.1.3" + resolved "https://registry.npmjs.org/retry-request/-/retry-request-4.1.3.tgz#d5f74daf261372cff58d08b0a1979b4d7cab0fde" + integrity sha512-QnRZUpuPNgX0+D1xVxul6DbJ9slvo4Rm6iV/dn63e048MvGbUZiKySVt6Tenp04JqmchxjiLltGerOJys7kJYQ== + dependencies: + debug "^4.1.1" + +retry-request@^4.2.2: version "4.2.2" resolved "https://registry.npmjs.org/retry-request/-/retry-request-4.2.2.tgz#b7d82210b6d2651ed249ba3497f07ea602f1a903" integrity sha512-xA93uxUD/rogV7BV59agW/JHPGXeREMWiZc9jhcwY4YdZ7QOtC7qbomYg0n4wyk2lJhggjvKvhNX8wln/Aldhg== @@ -20322,12 +21825,7 @@ retry-request@^4.0.0, retry-request@^4.2.2: debug "^4.1.1" extend "^3.0.2" -retry@0.13.1, retry@^0.13.1: - version "0.13.1" - resolved "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" - integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== - -retry@^0.12.0: +retry@0.12.0, retry@^0.12.0: version "0.12.0" resolved "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= @@ -20338,9 +21836,9 @@ reusify@^1.0.4: integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== rfc4648@^1.3.0: - version "1.5.1" - resolved "https://registry.npmjs.org/rfc4648/-/rfc4648-1.5.1.tgz#b0b16756e33d9de8c0c7833e94b28e627ec372a4" - integrity sha512-60e/YWs2/D3MV1ErdjhJHcmlgnyLUiG4X/14dgsfm9/zmCWLN16xI6YqJYSCd/OANM7bUNzJqPY5B8/02S9Ibw== + version "1.4.0" + resolved "https://registry.npmjs.org/rfc4648/-/rfc4648-1.4.0.tgz#c75b2856ad2e2d588b6ddb985d556f1f7f2a2abd" + integrity sha512-3qIzGhHlMHA6PoT6+cdPKZ+ZqtxkIvg8DZGKA5z6PQ33/uuhoJ+Ws/D/J9rXW6gXodgH8QYlz2UCl+sdUDmNIg== rfdc@^1.3.0: version "1.3.0" @@ -20393,13 +21891,11 @@ rollup-plugin-dts@^4.0.1: "@babel/code-frame" "^7.16.0" rollup-plugin-esbuild@^4.7.2: - version "4.8.2" - resolved "https://registry.npmjs.org/rollup-plugin-esbuild/-/rollup-plugin-esbuild-4.8.2.tgz#c097b93cd4b622e62206cadb5797589f548cf48c" - integrity sha512-wsaYNOjzTb6dN1qCIZsMZ7Q0LWiPJklYs2TDI8vJA2LUbvtPUY+17TC8C0vSat3jPMInfR9XWKdA7ttuwkjsGQ== + version "4.7.2" + resolved "https://registry.npmjs.org/rollup-plugin-esbuild/-/rollup-plugin-esbuild-4.7.2.tgz#1a496a9f96257cdf5ed800e818932859232471f8" + integrity sha512-rBS2hTedtG+wL/yyIWQ84zju5rtfF15gkaCLN0vsWGmBdRd0UPm52meAwkmrsPQf3mB/H2o+k9Q8Ce8A66SE5A== dependencies: "@rollup/pluginutils" "^4.1.1" - debug "^4.3.3" - es-module-lexer "^0.9.3" joycon "^3.0.1" jsonc-parser "^3.0.0" @@ -20455,23 +21951,23 @@ rsvp@^4.8.4: integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== rtl-css-js@^1.14.0: - version "1.15.0" - resolved "https://registry.npmjs.org/rtl-css-js/-/rtl-css-js-1.15.0.tgz#680ed816e570a9ebccba9e1cd0f202c6a8bb2dc0" - integrity sha512-99Cu4wNNIhrI10xxUaABHsdDqzalrSRTie4GeCmbGVuehm4oj+fIy8fTzB+16pmKe8Bv9rl+hxIBez6KxExTew== + version "1.14.0" + resolved "https://registry.npmjs.org/rtl-css-js/-/rtl-css-js-1.14.0.tgz#daa4f192a92509e292a0519f4b255e6e3c076b7d" + integrity sha512-Dl5xDTeN3e7scU1cWX8c9b6/Nqz3u/HgR4gePc1kWXYiQWVQbKCEyK6+Hxve9LbcJ5EieHy1J9nJCN3grTtGwg== dependencies: "@babel/runtime" "^7.1.2" run-async@^2.4.0: - version "2.4.1" - resolved "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" - integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== + version "2.4.0" + resolved "https://registry.npmjs.org/run-async/-/run-async-2.4.0.tgz#e59054a5b86876cfae07f431d18cbaddc594f1e8" + integrity sha512-xJTbh/d7Lm7SBhc1tNvTpeCHaEzoyxPrqNlvSdMfBTYwaY++UJFyXUOxAtsRUXjlqOfj8luNaR9vjCh4KeV+pg== + dependencies: + is-promise "^2.1.0" run-parallel@^1.1.9: - version "1.2.0" - resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" - integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== - dependencies: - queue-microtask "^1.2.2" + version "1.1.9" + resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz#c9dd3a7cf9f4b2c4b6244e173a6ed866e61dd679" + integrity sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q== run-script-webpack-plugin@^0.0.11: version "0.0.11" @@ -20485,10 +21981,10 @@ rxjs@^6.3.3, rxjs@^6.4.0, rxjs@^6.6.0, rxjs@^6.6.3: dependencies: tslib "^1.9.0" -rxjs@^7.1.0, rxjs@^7.2.0, rxjs@^7.5.1, rxjs@^7.5.4: - version "7.5.4" - resolved "https://registry.npmjs.org/rxjs/-/rxjs-7.5.4.tgz#3d6bd407e6b7ce9a123e76b1e770dc5761aa368d" - integrity sha512-h5M3Hk78r6wAheJF0a5YahB1yRQKCsZ4MsGdZ5O9ETbVtjPcScGfrMmoOq7EBsCRzd4BDkvDJ7ogP8Sz5tTFiQ== +rxjs@^7.1.0, rxjs@^7.2.0, rxjs@^7.5.2: + version "7.5.2" + resolved "https://registry.npmjs.org/rxjs/-/rxjs-7.5.2.tgz#11e4a3a1dfad85dbf7fb6e33cbba17668497490b" + integrity sha512-PwDt186XaL3QN5qXj/H9DGyHhP3/RYYgZZwqBv9Tv8rsAaiwFH1IsJJlcgD37J7UW5a6O67qX0KWKS3/pu0m4w== dependencies: tslib "^2.1.0" @@ -20504,7 +22000,7 @@ safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1, safe-buffer@~5.2.0: +safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.1, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -20528,6 +22024,11 @@ safe-regex@^1.1.0: dependencies: ret "~0.1.10" +safe-stable-stringify@^1.1.0: + version "1.1.1" + resolved "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-1.1.1.tgz#c8a220ab525cd94e60ebf47ddc404d610dc5d84a" + integrity sha512-ERq4hUjKDbJfE4+XtZLFPCDi8Vb1JqaxAPTxWFLBx8XcAlf9Bda/ZJdVezs/NAfsMQScyIlUMx+Yeu7P7rx5jw== + safe-stable-stringify@^2.2.0, safe-stable-stringify@^2.3.1: version "2.3.1" resolved "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.3.1.tgz#ab67cbe1fe7d40603ca641c5e765cb942d04fc73" @@ -20553,6 +22054,13 @@ sane@^4.0.3: minimist "^1.1.1" walker "~1.0.5" +sanitize-filename@^1.6.1: + version "1.6.3" + resolved "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz#755ebd752045931977e30b2025d340d7c9090378" + integrity sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg== + dependencies: + truncate-utf8-bytes "^1.0.0" + sax@1.2.1: version "1.2.1" resolved "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz#7b8e656190b228e81a66aea748480d828cd2d37a" @@ -20563,14 +22071,14 @@ sax@>=0.6.0: resolved "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== -saxes@^5.0.1: +saxes@^5.0.0, saxes@^5.0.1: version "5.0.1" resolved "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== dependencies: xmlchars "^2.2.0" -scheduler@^0.19.1: +scheduler@^0.19.0, scheduler@^0.19.1: version "0.19.1" resolved "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz#4f3e2ed2c1a7d65681f4c854fa8c5a1ccb40f196" integrity sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA== @@ -20620,9 +22128,9 @@ scoped-regex@^2.0.0: integrity sha512-g3WxHrqSWCZHGHlSrF51VXFdjImhwvH8ZO/pryFH56Qi0cDsZfylQa/t0jCzVQFNbNvM00HfHjkDPEuarKDSWQ== screenfull@^5.1.0: - version "5.2.0" - resolved "https://registry.npmjs.org/screenfull/-/screenfull-5.2.0.tgz#6533d524d30621fc1283b9692146f3f13a93d1ba" - integrity sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA== + version "5.1.0" + resolved "https://registry.npmjs.org/screenfull/-/screenfull-5.1.0.tgz#85c13c70f4ead4c1b8a935c70010dfdcd2c0e5c8" + integrity sha512-dYaNuOdzr+kc6J6CFcBrzkLCfyGcMg+gWkJ8us93IQ7y1cevhQAugFsaCdMHb6lw8KV3xPzSxzH7zM1dQap9mA== scuid@^1.1.0: version "1.1.0" @@ -20673,7 +22181,7 @@ semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -semver@^7.1.1, semver@^7.1.3, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@~7.3.0: +semver@^7.0.0, semver@^7.1.1, semver@^7.1.3, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@~7.3.0: version "7.3.5" resolved "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== @@ -20853,7 +22361,7 @@ shell-quote@^1.7.3: resolved "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz#aa40edac170445b9a431e17bb62c0b881b9c4123" integrity sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw== -shelljs@^0.8.5: +shelljs@^0.8.4, shelljs@^0.8.5: version "0.8.5" resolved "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz#de055408d8361bed66c669d2f000538ced8ee20c" integrity sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow== @@ -20899,7 +22407,7 @@ simple-concat@^1.0.0: resolved "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== -simple-get@^3.0.3: +simple-get@^3.0.2, simple-get@^3.0.3: version "3.1.1" resolved "https://registry.npmjs.org/simple-get/-/simple-get-3.1.1.tgz#cc7ba77cfbe761036fbfce3d021af25fc5584d55" integrity sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA== @@ -20908,15 +22416,6 @@ simple-get@^3.0.3: once "^1.3.1" simple-concat "^1.0.0" -simple-get@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz#4a39db549287c979d352112fa03fd99fd6bc3543" - integrity sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA== - dependencies: - decompress-response "^6.0.0" - once "^1.3.1" - simple-concat "^1.0.0" - simple-swizzle@^0.2.2: version "0.2.2" resolved "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" @@ -20925,12 +22424,12 @@ simple-swizzle@^0.2.2: is-arrayish "^0.3.1" sinon@^11.1.1: - version "11.1.2" - resolved "https://registry.npmjs.org/sinon/-/sinon-11.1.2.tgz#9e78850c747241d5c59d1614d8f9cbe8840e8674" - integrity sha512-59237HChms4kg7/sXhiRcUzdSkKuydDeTiamT/jesUVHshBgL8XAmhgFo0GfK6RruMDM/iRSij1EybmMog9cJw== + version "11.1.1" + resolved "https://registry.npmjs.org/sinon/-/sinon-11.1.1.tgz#99a295a8b6f0fadbbb7e004076f3ae54fc6eab91" + integrity sha512-ZSSmlkSyhUWbkF01Z9tEbxZLF/5tRC9eojCdFh33gtQaP7ITQVaMWQHGuFM7Cuf/KEfihuh1tTl3/ABju3AQMg== dependencies: "@sinonjs/commons" "^1.8.3" - "@sinonjs/fake-timers" "^7.1.2" + "@sinonjs/fake-timers" "^7.1.0" "@sinonjs/samsam" "^6.0.2" diff "^5.0.0" nise "^5.1.0" @@ -20987,10 +22486,10 @@ slide@^1.1.6: resolved "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" integrity sha1-VusCfWW00tzmyy4tMsTUr8nh1wc= -smart-buffer@^4.2.0: - version "4.2.0" - resolved "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" - integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== +smart-buffer@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.1.0.tgz#91605c25d91652f4661ea69ccf45f1b331ca21ba" + integrity sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw== smartwrap@^1.2.3: version "1.2.5" @@ -21046,21 +22545,73 @@ snapdragon@^0.8.1: source-map-resolve "^0.5.0" use "^3.1.0" +socket.io-adapter@~1.1.0: + version "1.1.2" + resolved "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.2.tgz#ab3f0d6f66b8fc7fca3959ab5991f82221789be9" + integrity sha512-WzZRUj1kUjrTIrUKpZLEzFZ1OLj5FwLlAFQs9kuZJzJi5DKdU7FsWc36SNmA8iDOtwBQyT8FkrriRM8vXLYz8g== + +socket.io-client@2.4.0, socket.io-client@^2.2.0: + version "2.4.0" + resolved "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.4.0.tgz#aafb5d594a3c55a34355562fc8aea22ed9119a35" + integrity sha512-M6xhnKQHuuZd4Ba9vltCLT9oa+YvTsP8j9NcEiLElfIg8KeYPyhWOes6x4t+LTAC8enQbE/995AdTem2uNyKKQ== + dependencies: + backo2 "1.0.2" + component-bind "1.0.0" + component-emitter "~1.3.0" + debug "~3.1.0" + engine.io-client "~3.5.0" + has-binary2 "~1.0.2" + indexof "0.0.1" + parseqs "0.0.6" + parseuri "0.0.6" + socket.io-parser "~3.3.0" + to-array "0.1.4" + +socket.io-parser@~3.3.0: + version "3.3.2" + resolved "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.2.tgz#ef872009d0adcf704f2fbe830191a14752ad50b6" + integrity sha512-FJvDBuOALxdCI9qwRrO/Rfp9yfndRtc1jSgVgV8FDraihmSP/MLGD5PEuJrNfjALvcQ+vMDM/33AWOYP/JSjDg== + dependencies: + component-emitter "~1.3.0" + debug "~3.1.0" + isarray "2.0.1" + +socket.io-parser@~3.4.0: + version "3.4.1" + resolved "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.4.1.tgz#b06af838302975837eab2dc980037da24054d64a" + integrity sha512-11hMgzL+WCLWf1uFtHSNvliI++tcRUWdoeYuwIl+Axvwy9z2gQM+7nJyN3STj1tLj5JyIUH8/gpDGxzAlDdi0A== + dependencies: + component-emitter "1.2.1" + debug "~4.1.0" + isarray "2.0.1" + +socket.io@^2.2.0: + version "2.4.1" + resolved "https://registry.npmjs.org/socket.io/-/socket.io-2.4.1.tgz#95ad861c9a52369d7f1a68acf0d4a1b16da451d2" + integrity sha512-Si18v0mMXGAqLqCVpTxBa8MGqriHGQh8ccEOhmsmNS3thNCGBwO8WGrwMibANsWtQQ5NStdZwHqZR3naJVFc3w== + dependencies: + debug "~4.1.0" + engine.io "~3.5.0" + has-binary2 "~1.0.2" + socket.io-adapter "~1.1.0" + socket.io-client "2.4.0" + socket.io-parser "~3.4.0" + sockjs@^0.3.21: - version "0.3.24" - resolved "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz#c9bc8995f33a111bea0395ec30aa3206bdb5ccce" - integrity sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ== + version "0.3.21" + resolved "https://registry.npmjs.org/sockjs/-/sockjs-0.3.21.tgz#b34ffb98e796930b60a0cfa11904d6a339a7d417" + integrity sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw== dependencies: faye-websocket "^0.11.3" - uuid "^8.3.2" + uuid "^3.4.0" websocket-driver "^0.7.4" socks-proxy-agent@^5.0.0: - version "5.0.1" - resolved "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-5.0.1.tgz#032fb583048a29ebffec2e6a73fca0761f48177e" - integrity sha512-vZdmnjb9a2Tz6WEQVIurybSwElwPxMZaIc7PzqbJTrezcKNznv6giT7J7tZDZ1BojVaa1jvO/UiUdhDVB0ACoQ== + version "5.0.0" + resolved "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-5.0.0.tgz#7c0f364e7b1cf4a7a437e71253bed72e9004be60" + integrity sha512-lEpa1zsWCChxiynk+lCycKuC502RxDWLKJZoIhnxrWNjLSDGYRFflHA1/228VkRcnv9TIb8w98derGbpKxJRgA== dependencies: - agent-base "^6.0.2" + agent-base "6" debug "4" socks "^2.3.3" @@ -21073,13 +22624,21 @@ socks-proxy-agent@^6.0.0, socks-proxy-agent@^6.1.1: debug "^4.3.1" socks "^2.6.1" -socks@^2.3.3, socks@^2.6.1: - version "2.6.2" - resolved "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz#ec042d7960073d40d94268ff3bb727dc685f111a" - integrity sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA== +socks@^2.3.3: + version "2.5.1" + resolved "https://registry.npmjs.org/socks/-/socks-2.5.1.tgz#7720640b6b5ec9a07d556419203baa3f0596df5f" + integrity sha512-oZCsJJxapULAYJaEYBSzMcz8m3jqgGrHaGhkmU/o/PQfFWYWxkAaA0UMGImb6s6tEXfKi959X6VJjMMQ3P6TTQ== dependencies: ip "^1.1.5" - smart-buffer "^4.2.0" + smart-buffer "^4.1.0" + +socks@^2.6.1: + version "2.6.1" + resolved "https://registry.npmjs.org/socks/-/socks-2.6.1.tgz#989e6534a07cf337deb1b1c94aaa44296520d30e" + integrity sha512-kLQ9N5ucj8uIcxrDwjm0Jsqk06xdpBjGNQtpXy4Q8/QY2k+fY7nZH8CARy+hkbG+SGAovmzzuauCpBlb8FrnBA== + dependencies: + ip "^1.1.5" + smart-buffer "^4.1.0" sonic-boom@^0.7.5: version "0.7.7" @@ -21132,7 +22691,7 @@ source-map-resolve@^0.6.0: atob "^2.1.2" decode-uri-component "^0.2.0" -source-map-support@^0.5.16, source-map-support@^0.5.17, source-map-support@^0.5.6, source-map-support@~0.5.20: +source-map-support@^0.5.10: version "0.5.21" resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== @@ -21140,10 +22699,18 @@ source-map-support@^0.5.16, source-map-support@^0.5.17, source-map-support@^0.5. buffer-from "^1.0.0" source-map "^0.6.0" +source-map-support@^0.5.16, source-map-support@^0.5.17, source-map-support@^0.5.6, source-map-support@~0.5.20: + version "0.5.20" + resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.20.tgz#12166089f8f5e5e8c56926b377633392dd2cb6c9" + integrity sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + source-map-url@^0.4.0: - version "0.4.1" - resolved "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" - integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== + version "0.4.0" + resolved "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" + integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= source-map@0.5.6: version "0.5.6" @@ -21194,30 +22761,30 @@ spawndamnit@^2.0.0: signal-exit "^3.0.2" spdx-correct@^3.0.0: - version "3.1.1" - resolved "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" - integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== + version "3.1.0" + resolved "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" + integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q== dependencies: spdx-expression-parse "^3.0.0" spdx-license-ids "^3.0.0" spdx-exceptions@^2.1.0: - version "2.3.0" - resolved "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" - integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== + version "2.2.0" + resolved "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977" + integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA== spdx-expression-parse@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" - integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== + version "3.0.0" + resolved "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" + integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg== dependencies: spdx-exceptions "^2.1.0" spdx-license-ids "^3.0.0" spdx-license-ids@^3.0.0: - version "3.0.11" - resolved "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz#50c0d8c40a14ec1bf449bae69a0ea4685a9d9f95" - integrity sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g== + version "3.0.5" + resolved "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" + integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== spdy-transport@^3.0.0: version "3.0.0" @@ -21266,11 +22833,6 @@ split2@^3.0.0: dependencies: readable-stream "^3.0.0" -split2@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/split2/-/split2-4.1.0.tgz#101907a24370f85bb782f08adaabe4e281ecf809" - integrity sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ== - split@0.3: version "0.3.3" resolved "https://registry.npmjs.org/split/-/split-0.3.3.tgz#cd0eea5e63a211dfff7eb0f091c4133e2d0dd28f" @@ -21311,9 +22873,9 @@ ssh-remote-port-forward@^1.0.4: ssh2 "^1.4.0" ssh2@^1.4.0: - version "1.6.0" - resolved "https://registry.npmjs.org/ssh2/-/ssh2-1.6.0.tgz#61aebc3a6910fe488f9c85cd8355bdf8d4724e05" - integrity sha512-lxc+uvXqOxyQ99N2M7k5o4pkYDO5GptOTYduWw7hIM41icxvoBcCNHcj+LTKrjkL0vFcAl+qfZekthoSFRJn2Q== + version "1.5.0" + resolved "https://registry.npmjs.org/ssh2/-/ssh2-1.5.0.tgz#4dc559ba98a1cbb420e8d42998dfe35d0eda92bc" + integrity sha512-iUmRkhH9KGeszQwDW7YyyqjsMTf4z+0o48Cp4xOwlY5LjtbIAvyd3fwnsoUZW/hXmTCRA3yt7S/Jb9uVjErVlA== dependencies: asn1 "^0.2.4" bcrypt-pbkdf "^1.0.2" @@ -21322,9 +22884,9 @@ ssh2@^1.4.0: nan "^2.15.0" sshpk@^1.14.1, sshpk@^1.7.0: - version "1.17.0" - resolved "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5" - integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ== + version "1.16.1" + resolved "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" + integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== dependencies: asn1 "~0.2.3" assert-plus "^1.0.0" @@ -21361,16 +22923,16 @@ stack-trace@0.0.x: integrity sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA= stack-utils@^2.0.2: - version "2.0.5" - resolved "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz#d25265fca995154659dbbfba3b49254778d2fdd5" - integrity sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA== + version "2.0.2" + resolved "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.2.tgz#5cf48b4557becb4638d0bc4f21d23f5d19586593" + integrity sha512-0H7QK2ECz3fyZMzQ8rH0j2ykpfbnd20BFtfg/SqVC2+sCTtcw0aDTGB7dk+de4U4uUeuz6nOtJcrkFFLG1B0Rg== dependencies: escape-string-regexp "^2.0.0" stackframe@^1.1.1: - version "1.2.1" - resolved "https://registry.npmjs.org/stackframe/-/stackframe-1.2.1.tgz#1033a3473ee67f08e2f2fc8eba6aef4f845124e1" - integrity sha512-h88QkzREN/hy8eRdyNhhsO7RSJ5oyTqxxmmn0dzBIMUclZsjpfmrsg81vp8mjjAs2vAZ72nyWxRUwSwmh0e4xg== + version "1.1.1" + resolved "https://registry.npmjs.org/stackframe/-/stackframe-1.1.1.tgz#ffef0a3318b1b60c3b58564989aca5660729ec71" + integrity sha512-0PlYhdKh6AfFxRyK/v+6/k+/mMfyiEBbTM5L94D0ZytQnJ166wuwoTYLHFWGbs2dpA8Rgq763KGWmN1EQEYHRQ== stacktrace-gps@^3.0.4: version "3.0.4" @@ -21420,6 +22982,11 @@ statuses@2.0.1, statuses@^2.0.0: resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= +stealthy-require@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" + integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= + stoppable@^1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/stoppable/-/stoppable-1.1.0.tgz#32da568e83ea488b08e4d7ea2c3bcc9d75015d5b" @@ -21445,7 +23012,7 @@ stream-combiner@~0.0.4: dependencies: duplexer "~0.1.1" -stream-events@^1.0.4, stream-events@^1.0.5: +stream-events@^1.0.1, stream-events@^1.0.4, stream-events@^1.0.5: version "1.0.5" resolved "https://registry.npmjs.org/stream-events/-/stream-events-1.0.5.tgz#bbc898ec4df33a4902d892333d47da9bf1c406d5" integrity sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg== @@ -21468,7 +23035,7 @@ stream-shift@^1.0.0: resolved "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== -stream-transform@^2.1.3: +stream-transform@^2.0.1: version "2.1.3" resolved "https://registry.npmjs.org/stream-transform/-/stream-transform-2.1.3.tgz#a1c3ecd72ddbf500aa8d342b0b9df38f5aa598e3" integrity sha512-9GHUiM5hMiCi6Y03jD2ARC1ettBXkQBoQAe7nJsPknnI0ow10aXjTnew8QtYQmLjzn974BnmWEAJgCY6ZP1DeQ== @@ -21503,9 +23070,9 @@ string-hash@^1.1.1: integrity sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs= string-length@^4.0.1: - version "4.0.2" - resolved "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" - integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== + version "4.0.1" + resolved "https://registry.npmjs.org/string-length/-/string-length-4.0.1.tgz#4a973bf31ef77c4edbceadd6af2611996985f8a1" + integrity sha512-PKyXUd0LK0ePjSOnWn34V2uD6acUWev9uy0Ft05k0E8xRW+SKcA0F7eMr7h5xlzfn+4O3N+55rduYyet3Jk+jw== dependencies: char-regex "^1.0.2" strip-ansi "^6.0.0" @@ -21536,6 +23103,15 @@ string-width@^2.1.1: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" +string-width@^3.0.0: + version "3.1.0" + resolved "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" + integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== + dependencies: + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.1.0" + string-width@^5.0.0: version "5.1.0" resolved "https://registry.npmjs.org/string-width/-/string-width-5.1.0.tgz#5ab00980cfb29f43e736b113a120a73a0fb569d3" @@ -21589,7 +23165,7 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -strip-ansi@5.2.0: +strip-ansi@5.2.0, strip-ansi@^5.1.0: version "5.2.0" resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== @@ -21693,12 +23269,12 @@ strong-log-transformer@^2.1.0: through "^2.3.4" strtok3@^6.2.4: - version "6.3.0" - resolved "https://registry.npmjs.org/strtok3/-/strtok3-6.3.0.tgz#358b80ffe6d5d5620e19a073aa78ce947a90f9a0" - integrity sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw== + version "6.2.4" + resolved "https://registry.npmjs.org/strtok3/-/strtok3-6.2.4.tgz#302aea64c0fa25d12a0385069ba66253fdc38a81" + integrity sha512-GO8IcFF9GmFDvqduIspUBwCzCbqzegyVKIsSymcMgiZKeCfrN9SowtUoi8+b59WZMAjIzVZic/Ft97+pynR3Iw== dependencies: "@tokenizer/token" "^0.3.0" - peek-readable "^4.1.0" + peek-readable "^4.0.1" stubs@^3.0.0: version "3.0.0" @@ -21727,18 +23303,18 @@ style-to-object@^0.3.0: dependencies: inline-style-parser "0.1.1" -stylehacks@^5.0.3: - version "5.0.3" - resolved "https://registry.npmjs.org/stylehacks/-/stylehacks-5.0.3.tgz#2ef3de567bfa2be716d29a93bf3d208c133e8d04" - integrity sha512-ENcUdpf4yO0E1rubu8rkxI+JGQk4CgjchynZ4bDBJDfqdy+uhTRSWb8/F3Jtu+Bw5MW45Po3/aQGeIyyxgQtxg== +stylehacks@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/stylehacks/-/stylehacks-5.0.1.tgz#323ec554198520986806388c7fdaebc38d2c06fb" + integrity sha512-Es0rVnHIqbWzveU1b24kbw92HsebBepxfcqe5iix7t9j0PQqhs0IxXVXv0pY2Bxa08CgMkzD6OWql7kbGOuEdA== dependencies: - browserslist "^4.16.6" + browserslist "^4.16.0" postcss-selector-parser "^6.0.4" stylis@^4.0.6: - version "4.0.13" - resolved "https://registry.npmjs.org/stylis/-/stylis-4.0.13.tgz#f5db332e376d13cc84ecfe5dace9a2a51d954c91" - integrity sha512-xGPXiFVl4YED9Jh7Euv2V220mriG9u4B2TA6Ybjc1catrstKD2PpIdU3U0RKpkVBC2EhmL/F0sPCr9vrFTNRag== + version "4.0.7" + resolved "https://registry.npmjs.org/stylis/-/stylis-4.0.7.tgz#412a90c28079417f3d27c028035095e4232d2904" + integrity sha512-OFFeUXFgwnGOKvEXaSv0D0KQ5ADP0n6g3SVONx6I/85JzNZ3u50FRwB3lVIk1QO2HNdI75tbVzc4Z66Gdp9voA== subscriptions-transport-ws@^0.11.0: version "0.11.0" @@ -21831,9 +23407,9 @@ supports-color@^9.2.1: integrity sha512-Obv7ycoCTG51N7y175StI9BlAXrmgZrFhZOb0/PyjHBher/NmsdBgbbQ1Inhq+gIhz6+7Gb+jWF2Vqi7Mf1xnQ== supports-hyperlinks@^2.0.0: - version "2.2.0" - resolved "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz#4f77b42488765891774b70c79babd87f9bd594bb" - integrity sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ== + version "2.1.0" + resolved "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.1.0.tgz#f663df252af5f37c5d49bbd7eeefa9e0b9e59e47" + integrity sha512-zoE5/e+dnEijk6ASB6/qrK+oYdm2do1hjoLWrqUC/8WEIW1gbxFcKuBof7sW8ArN6e+AYvsE8HBGiVRWL/F5CA== dependencies: has-flag "^4.0.0" supports-color "^7.0.0" @@ -21861,16 +23437,16 @@ svgo@^2.5.0, svgo@^2.7.0: picocolors "^1.0.0" stable "^0.1.8" -swagger-client@^3.18.4: - version "3.18.4" - resolved "https://registry.npmjs.org/swagger-client/-/swagger-client-3.18.4.tgz#71be9df585157a3335a542c407733d2134fa75e9" - integrity sha512-Wj26oEctONq/u0uM+eSj18675YM5e2vFnx7Kr4neLeXEHKUsfceVQ/OdtrBXdrT3VbtdBbZfMTfl1JOBpix2MA== +swagger-client@^3.17.0: + version "3.18.0" + resolved "https://registry.npmjs.org/swagger-client/-/swagger-client-3.18.0.tgz#2e59e666b38ded983e26fb512421ef8ff82547f0" + integrity sha512-lNfwTXHim0QiCNuZ4BKgWle7N7+9WlFLtcP02n0xSchFtdzsKJb2kWsOlwplRU3appVFjnHRy+1eVabRc3ZhbA== dependencies: "@babel/runtime-corejs3" "^7.11.2" btoa "^1.2.1" cookie "~0.4.1" - cross-fetch "^3.1.5" - deepmerge "~4.2.2" + cross-fetch "^3.1.4" + deep-extend "~0.6.0" fast-json-patch "^3.0.0-1" form-data-encoder "^1.4.3" formdata-node "^4.0.0" @@ -21882,11 +23458,11 @@ swagger-client@^3.18.4: url "~0.11.0" swagger-ui-react@^4.1.3: - version "4.5.0" - resolved "https://registry.npmjs.org/swagger-ui-react/-/swagger-ui-react-4.5.0.tgz#e79253d112a18fbf28874792c6ead47dee160074" - integrity sha512-fcLvjudm4u0GjKtuMCB2hFFkJ5Dqtv4PcP4e0h4HbnZ6MVU4v/J6gMK0e9/5VnGlana5TpXbU32muO59cEt5/w== + version "4.1.3" + resolved "https://registry.npmjs.org/swagger-ui-react/-/swagger-ui-react-4.1.3.tgz#a722ecbe54ef237fa9080447a7c708c4c72d846a" + integrity sha512-o1AoXUTNH40cxWus0QOeWQ8x9tSIEmrLBrOgAOHDnvWJ1qyjT8PjgHjPbUVjMbja18coyuaAAeUdyLKvLGmlDA== dependencies: - "@babel/runtime-corejs3" "^7.16.8" + "@babel/runtime-corejs3" "^7.16.3" "@braintree/sanitize-url" "^5.0.2" base64-js "^1.5.1" classnames "^2.3.1" @@ -21898,6 +23474,7 @@ swagger-ui-react@^4.1.3: js-file-download "^0.4.12" js-yaml "=4.1.0" lodash "^4.17.21" + memoizee "^0.4.15" prop-types "^15.7.2" randombytes "^2.1.0" react-copy-to-clipboard "5.0.4" @@ -21910,10 +23487,10 @@ swagger-ui-react@^4.1.3: redux "^4.1.2" redux-immutable "^4.0.0" remarkable "^2.0.1" - reselect "^4.1.5" + reselect "^4.0.0" serialize-error "^8.1.0" sha.js "^2.4.11" - swagger-client "^3.18.4" + swagger-client "^3.17.0" url-parse "^1.5.3" xml "=1.0.1" xml-but-prettier "^1.0.1" @@ -21927,11 +23504,11 @@ swap-case@^2.0.2: tslib "^2.0.3" swr@^1.1.2: - version "1.2.1" - resolved "https://registry.npmjs.org/swr/-/swr-1.2.1.tgz#c21a4fe2139cb1c4630450589b5b5add947a9d41" - integrity sha512-1cuWXqJqXcFwbgONGCY4PHZ8v05009JdHsC3CIC6u7d00kgbMswNr1sHnnhseOBxtzVqcCNpOHEgVDciRer45w== + version "1.1.2" + resolved "https://registry.npmjs.org/swr/-/swr-1.1.2.tgz#9f3de2541931fccf03c48f322f1fc935a7551612" + integrity sha512-UsM0eo5T+kRPyWFZtWRx2XR5qzohs/LS4lDC0GCyLpCYFmsfTk28UCVDbOE9+KtoXY4FnwHYiF+ZYEU3hnJ1lQ== -symbol-observable@^1.0.4, symbol-observable@^1.1.0: +symbol-observable@1.2.0, symbol-observable@^1.0.4, symbol-observable@^1.1.0, symbol-observable@^1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== @@ -22011,7 +23588,7 @@ tar@^4.4.12: safe-buffer "^5.2.1" yallist "^3.1.1" -tar@^6.0.2, tar@^6.1.0, tar@^6.1.11, tar@^6.1.2: +tar@^6.0.2, tar@^6.1.0, tar@^6.1.2: version "6.1.11" resolved "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621" integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA== @@ -22060,11 +23637,11 @@ tdigest@^0.1.1: react-use "^17.2.4" teeny-request@^7.0.0: - version "7.1.3" - resolved "https://registry.npmjs.org/teeny-request/-/teeny-request-7.1.3.tgz#5a3d90c559a6c664a993477b138e331a518765ba" - integrity sha512-Ew3aoFzgQEatLA5OBIjdr1DWJUaC1xardG+qbPPo5k/y/3fMwXLxpjh5UB5dVfElktLaQbbMs80chkz53ByvSg== + version "7.0.1" + resolved "https://registry.npmjs.org/teeny-request/-/teeny-request-7.0.1.tgz#bdd41fdffea5f8fbc0d29392cb47bec4f66b2b4c" + integrity sha512-sasJmQ37klOlplL4Ia/786M5YlOcoLGQyq2TE4WHSRupbAuDaQW0PfVxV4MtdBtRJ4ngzS+1qim8zP6Zp35qCw== dependencies: - http-proxy-agent "^5.0.0" + http-proxy-agent "^4.0.0" https-proxy-agent "^5.0.0" node-fetch "^2.6.1" stream-events "^1.0.5" @@ -22094,9 +23671,9 @@ temp@^0.8.4: rimraf "~2.6.2" term-size@^2.1.0: - version "2.2.1" - resolved "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz#2a6a54840432c2fb6320fea0f415531e90189f54" - integrity sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg== + version "2.2.0" + resolved "https://registry.npmjs.org/term-size/-/term-size-2.2.0.tgz#1f16adedfe9bdc18800e1776821734086fcc6753" + integrity sha512-a6sumDlzyHVJWb8+YofY4TW112G6p2FCPEAFk+59gIYHv3XHRhm9ltVQ9kli4hNWeQBwSpe8cRN25x0ROunMOw== terminal-link@^2.0.0: version "2.1.1" @@ -22107,17 +23684,17 @@ terminal-link@^2.0.0: supports-hyperlinks "^2.0.0" terser-webpack-plugin@*, terser-webpack-plugin@^5.1.3: - version "5.3.1" - resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz#0320dcc270ad5372c1e8993fabbd927929773e54" - integrity sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g== + version "5.3.0" + resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.0.tgz#21641326486ecf91d8054161c816e464435bae9f" + integrity sha512-LPIisi3Ol4chwAaPP8toUJ3L4qCM1G0wao7L3qNv57Drezxj6+VEyySpPw4B1HSO2Eg/hDY/MNF5XihCAoqnsQ== dependencies: - jest-worker "^27.4.5" + jest-worker "^27.4.1" schema-utils "^3.1.1" serialize-javascript "^6.0.0" source-map "^0.6.1" terser "^5.7.2" -terser@^5.10.0, terser@^5.7.2: +terser@^5.10.0: version "5.10.0" resolved "https://registry.npmjs.org/terser/-/terser-5.10.0.tgz#b86390809c0389105eb0a0b62397563096ddafcc" integrity sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA== @@ -22126,6 +23703,15 @@ terser@^5.10.0, terser@^5.7.2: source-map "~0.7.2" source-map-support "~0.5.20" +terser@^5.7.2: + version "5.9.0" + resolved "https://registry.npmjs.org/terser/-/terser-5.9.0.tgz#47d6e629a522963240f2b55fcaa3c99083d2c351" + integrity sha512-h5hxa23sCdpzcye/7b8YqbE5OwKca/ni0RQz1uRX3tGh8haaGHqcuSqbGRybuAKNdntZ0mDgFNXPJ48xQ2RXKQ== + dependencies: + commander "^2.20.0" + source-map "~0.7.2" + source-map-support "~0.5.20" + test-exclude@^6.0.0: version "6.0.0" resolved "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" @@ -22234,21 +23820,34 @@ tildify@2.0.0: integrity sha512-Cc+OraorugtXNfs50hU9KS369rFXCfgGLpfCfvlc+Ud5u6VWmUQsOAa9HbTvheQdYnrdJqqv1e5oIqXppMYnSw== timers-browserify@^2.0.4: - version "2.0.12" - resolved "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" - integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ== + version "2.0.11" + resolved "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz#800b1f3eee272e5bc53ee465a04d0e804c31211f" + integrity sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ== dependencies: setimmediate "^1.0.4" +timers-ext@^0.1.7: + version "0.1.7" + resolved "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz#6f57ad8578e07a3fb9f91d9387d65647555e25c6" + integrity sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ== + dependencies: + es5-ext "~0.10.46" + next-tick "1" + +timm@^1.6.1: + version "1.7.1" + resolved "https://registry.npmjs.org/timm/-/timm-1.7.1.tgz#96bab60c7d45b5a10a8a4d0f0117c6b7e5aff76f" + integrity sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw== + timsort@^0.3.0, timsort@~0.3.0: version "0.3.0" resolved "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= tiny-invariant@^1.0.6: - version "1.2.0" - resolved "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.2.0.tgz#a1141f86b672a9148c72e978a19a73b9b94a15a9" - integrity sha512-1Uhn/aqw5C6RI4KejVeTg6mIS7IqxnLJ8Mv2tV5rTc0qWobay7pDUz6Wi392Cnc8ak1H0F2cjoRzb2/AW4+Fvg== + version "1.1.0" + resolved "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.1.0.tgz#634c5f8efdc27714b7f386c35e6760991d230875" + integrity sha512-ytxQvrb1cPc9WBEI/HSeYYoGD0kWnGEOR8RY6KomWLBVhqz0RgTwVO9dLrGz7dC+nN9llyI7OKAgRq8Vq4ZBSw== tiny-merge-patch@^0.1.2: version "0.1.2" @@ -22260,6 +23859,11 @@ tiny-warning@^1.0.2: resolved "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754" integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== +tinycolor2@^1.4.1: + version "1.4.2" + resolved "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.2.tgz#3f6a4d1071ad07676d7fa472e1fac40a719d8803" + integrity sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA== + title-case@^3.0.3: version "3.0.3" resolved "https://registry.npmjs.org/title-case/-/title-case-3.0.3.tgz#bc689b46f02e411f1d1e1d081f7c3deca0489982" @@ -22268,9 +23872,9 @@ title-case@^3.0.3: tslib "^2.0.3" tmp-promise@^3.0.2: - version "3.0.3" - resolved "https://registry.npmjs.org/tmp-promise/-/tmp-promise-3.0.3.tgz#60a1a1cc98c988674fcbfd23b6e3367bdeac4ce7" - integrity sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ== + version "3.0.2" + resolved "https://registry.npmjs.org/tmp-promise/-/tmp-promise-3.0.2.tgz#6e933782abff8b00c3119d63589ca1fb9caaa62a" + integrity sha512-OyCLAKU1HzBjL6Ev3gxUeraJNlbNingmi8IrHHEsYH8LTmEuhvYfqvhn2F/je+mjf4N58UmZ96OMEy1JanSCpA== dependencies: tmp "^0.2.0" @@ -22288,11 +23892,16 @@ tmp@^0.2.0, tmp@~0.2.1: dependencies: rimraf "^3.0.0" -tmpl@1.0.5: +tmpl@1.0.x: version "1.0.5" resolved "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== +to-array@0.1.4: + version "0.1.4" + resolved "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890" + integrity sha1-F+bBH3PdTz10zaek/zI46a2b+JA= + to-arraybuffer@^1.0.0: version "1.0.1" resolved "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" @@ -22375,6 +23984,23 @@ touch@^3.1.0: dependencies: nopt "~1.0.10" +tough-cookie@^2.3.3, tough-cookie@~2.5.0: + version "2.5.0" + resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + dependencies: + psl "^1.1.28" + punycode "^2.1.1" + +tough-cookie@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz#9df4f57e739c26930a018184887f4adb7dca73b2" + integrity sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg== + dependencies: + ip-regex "^2.1.0" + psl "^1.1.28" + punycode "^2.1.1" + tough-cookie@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4" @@ -22384,12 +24010,11 @@ tough-cookie@^4.0.0: punycode "^2.1.1" universalify "^0.1.2" -tough-cookie@~2.5.0: - version "2.5.0" - resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" - integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== +tr46@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/tr46/-/tr46-2.0.2.tgz#03273586def1595ae08fedb38d7733cee91d2479" + integrity sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg== dependencies: - psl "^1.1.28" punycode "^2.1.1" tr46@^2.1.0: @@ -22429,6 +24054,11 @@ trim-newlines@^3.0.0: resolved "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== +trim-off-newlines@^1.0.0: + version "1.0.3" + resolved "https://registry.npmjs.org/trim-off-newlines/-/trim-off-newlines-1.0.3.tgz#8df24847fcb821b0ab27d58ab6efec9f2fe961a1" + integrity sha512-kh6Tu6GbeSNMGfrrZh6Bb/4ZEHV1QlB4xNDBeog8Y9/QwFlKTRyWvY3Fs9tRDAMZliVUwieMgEdIeL/FtqjkJg== + triple-beam@^1.3.0: version "1.3.0" resolved "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz#a595214c7298db8339eeeee083e4d10bd8cb8dd9" @@ -22439,6 +24069,13 @@ trough@^2.0.0: resolved "https://registry.npmjs.org/trough/-/trough-2.0.2.tgz#94a3aa9d5ce379fc561f6244905b3f36b7458d96" integrity sha512-FnHq5sTMxC0sk957wHDzRnemFnNBvt/gSY99HzK8F7UP5WAbvP70yX5bd7CjEQkN+TjdxwI7g7lJ6podqrG2/w== +truncate-utf8-bytes@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz#405923909592d56f78a5818434b0b78489ca5f2b" + integrity sha1-QFkjkJWS1W94pYGENLC3hInKXys= + dependencies: + utf8-byte-length "^1.0.1" + tryer@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8" @@ -22450,14 +24087,14 @@ ts-easing@^0.2.0: integrity sha512-Z86EW+fFFh/IFB1fqQ3/+7Zpf9t2ebOAxNI/V6Wo7r5gqiqtxmgTlQ1qbqQcjLKYeSHPTsEmvlJUDg/EuL0uHQ== 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== + 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== ts-log@^2.2.3: - version "2.2.4" - resolved "https://registry.npmjs.org/ts-log/-/ts-log-2.2.4.tgz#d672cf904b33735eaba67a7395c93d45fba475b3" - integrity sha512-DEQrfv6l7IvN2jlzc/VTdZJYsWUnQNCsueYjMkC/iXoEoi5fNan6MjeDqkvhfzbmHgdz9UxDUluX3V5HdjTydQ== + version "2.2.3" + resolved "https://registry.npmjs.org/ts-log/-/ts-log-2.2.3.tgz#4da5640fe25a9fb52642cd32391c886721318efb" + integrity sha512-XvB+OdKSJ708Dmf9ore4Uf/q62AYDTzFcAdxc8KNML1mmAWywRFVt/dn1KYJH8Agt5UJNujfM3znU5PxgAzA2w== ts-node@^10.0.0, ts-node@^10.2.1, ts-node@^10.4.0: version "10.5.0" @@ -22585,6 +24222,11 @@ type-detect@4.0.8, type-detect@^4.0.8: resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== +type-fest@^0.11.0: + version "0.11.0" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" + integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== + type-fest@^0.13.1: version "0.13.1" resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz#0172cb5bce80b0bd542ea348db50c7e21834d934" @@ -22600,11 +24242,6 @@ type-fest@^0.20.2: resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== -type-fest@^0.21.3: - version "0.21.3" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" - integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== - type-fest@^0.4.1: version "0.4.1" resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.4.1.tgz#8bdf77743385d8a4f13ba95f610f5ccd68c728f8" @@ -22633,10 +24270,20 @@ type-is@~1.6.18: media-typer "0.3.0" mime-types "~2.1.24" +type@^1.0.1: + version "1.2.0" + resolved "https://registry.npmjs.org/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" + integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== + +type@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/type/-/type-2.0.0.tgz#5f16ff6ef2eb44f260494dae271033b29c09a9c3" + integrity sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow== + typed-rest-client@^1.8.4: - version "1.8.6" - resolved "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.8.6.tgz#d8facd6abd98cbd8ad14cccf056ca5cc306919d7" - integrity sha512-xcQpTEAJw2DP7GqVNECh4dD+riS+C1qndXLfBCJ3xk0kqprtGN491P5KlmrDbKdtuW8NEcP/5ChxiJI3S9WYTA== + version "1.8.4" + resolved "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.8.4.tgz#ba3fb788e5b9322547406392533f12d660a5ced6" + integrity sha512-MyfKKYzk3I6/QQp6e1T50py4qg+c+9BzOEl2rBmQIpStwNUoqQ73An+Tkfy9YuV7O+o2mpVVJpe+fH//POZkbg== dependencies: qs "^6.9.1" tunnel "0.0.6" @@ -22677,10 +24324,10 @@ typescript@~4.5.2, typescript@~4.5.4: resolved "https://registry.npmjs.org/typescript/-/typescript-4.5.5.tgz#d8c953832d28924a9e3d37c73d729c846c5896f3" integrity sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA== -ua-parser-js@^0.7.30: - version "0.7.31" - resolved "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.31.tgz#649a656b191dffab4f21d5e053e27ca17cbff5c6" - integrity sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ== +ua-parser-js@^0.7.18: + version "0.7.28" + resolved "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.28.tgz#8ba04e653f35ce210239c64661685bf9121dec31" + integrity sha512-6Gurc1n//gjp9eQNXjD9O3M/sMwVtN5S8Lv9bvOYBfKfDNiIIhqiyi01vMBO45u4zkDE420w/e0se7Vs+sIg+g== uc.micro@^1.0.1, uc.micro@^1.0.5: version "1.0.6" @@ -22688,9 +24335,9 @@ uc.micro@^1.0.1, uc.micro@^1.0.5: integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA== uglify-js@^3.1.4: - version "3.15.1" - resolved "https://registry.npmjs.org/uglify-js/-/uglify-js-3.15.1.tgz#9403dc6fa5695a6172a91bc983ea39f0f7c9086d" - integrity sha512-FAGKF12fWdkpvNJZENacOH0e/83eG6JyVQyanIJaBXCN1J11TUQv1T1/z8S+Z0CG0ZPk1nPcreF/c7lrTd0TEQ== + version "3.14.3" + resolved "https://registry.npmjs.org/uglify-js/-/uglify-js-3.14.3.tgz#c0f25dfea1e8e5323eccf59610be08b6043c15cf" + integrity sha512-mic3aOdiq01DuSVx0TseaEzMIVqebMZ0Z3vaeDhFEh9bsc24hV1TFvN74reA2vs08D0ZWfNjAcJ3UbVLaBss+g== uid-number@0.0.6: version "0.0.6" @@ -22704,21 +24351,26 @@ uid-safe@~2.1.5: dependencies: random-bytes "~1.0.0" -uid2@0.0.3: +uid2@0.0.3, uid2@0.0.x: version "0.0.3" resolved "https://registry.npmjs.org/uid2/-/uid2-0.0.3.tgz#483126e11774df2f71b8b639dcd799c376162b82" integrity sha1-SDEm4Rd03y9xuLY53NeZw3YWK4I= -uid2@0.0.x: - version "0.0.4" - resolved "https://registry.npmjs.org/uid2/-/uid2-0.0.4.tgz#033f3b1d5d32505f5ce5f888b9f3b667123c0a44" - integrity sha512-IevTus0SbGwQzYh3+fRsAMTVVPOoIVufzacXcHPmdlle1jUpq7BRL+mw3dgeLanvGZdwwbWhRV6XrcFNdBmjWA== - umask@^1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/umask/-/umask-1.1.0.tgz#f29cebf01df517912bb58ff9c4e50fde8e33320d" integrity sha1-8pzr8B31F5ErtY/5xOUP3o4zMg0= +unbox-primitive@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.0.tgz#eeacbc4affa28e9b3d36b5eaeccc50b3251b1d3f" + integrity sha512-P/51NX+JXyxK/aigg1/ZgyccdAxm5K1+n8+tvqSntjOivPt19gvm1VC49RWYetsiub8WViUchdxl/KWHHB0kzA== + dependencies: + function-bind "^1.1.1" + has-bigints "^1.0.0" + has-symbols "^1.0.0" + which-boxed-primitive "^1.0.1" + unbox-primitive@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" @@ -22748,42 +24400,49 @@ undefsafe@^2.0.5: integrity sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA== underscore@^1.12.1, underscore@^1.9.1: - version "1.13.2" - resolved "https://registry.npmjs.org/underscore/-/underscore-1.13.2.tgz#276cea1e8b9722a8dbed0100a407dda572125881" - integrity sha512-ekY1NhRzq0B08g4bGuX4wd2jZx5GnKz6mKSqFL4nqBlfyMGiG10gDFhDTMEfYmDL6Jy0FUIZp7wiRB+0BP7J2g== + version "1.13.1" + resolved "https://registry.npmjs.org/underscore/-/underscore-1.13.1.tgz#0c1c6bd2df54b6b69f2314066d65b6cde6fcf9d1" + integrity sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g== undici@^4.9.3: - version "4.14.1" - resolved "https://registry.npmjs.org/undici/-/undici-4.14.1.tgz#7633b143a8a10d6d63335e00511d071e8d52a1d9" - integrity sha512-WJ+g+XqiZcATcBaUeluCajqy4pEDcQfK1vy+Fo+bC4/mqXI9IIQD/XWHLS70fkGUT6P52Drm7IFslO651OdLPQ== + version "4.11.0" + resolved "https://registry.npmjs.org/undici/-/undici-4.11.0.tgz#41fb4f944704d77e1c9fb472d40d2dbece64ccf2" + integrity sha512-gofXRqAdm81rzaZgPbMf98qvrNGd3ptJ26+mCcF3EXoC817p//MtL8XcDpTvHUXxdW27rAM2jvTae+KyAchorw== -unicode-canonical-property-names-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" - integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== +unicode-canonical-property-names-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" + integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== -unicode-match-property-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" - integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== +unicode-match-property-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" + integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== dependencies: - unicode-canonical-property-names-ecmascript "^2.0.0" - unicode-property-aliases-ecmascript "^2.0.0" + unicode-canonical-property-names-ecmascript "^1.0.4" + unicode-property-aliases-ecmascript "^1.0.4" -unicode-match-property-value-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz#1a01aa57247c14c568b89775a54938788189a714" - integrity sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw== +unicode-match-property-value-ecmascript@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" + integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== -unicode-property-aliases-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz#0a36cb9a585c4f6abd51ad1deddb285c165297c8" - integrity sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ== +unicode-property-aliases-ecmascript@^1.0.4: + version "1.1.0" + resolved "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" + integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== + +unidiff@1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/unidiff/-/unidiff-1.0.2.tgz#8706eb36e4aa182a6ca699ecd2f8877f4b906ce0" + integrity sha512-2sbEzki5fBmjgAqoafwxRenfMcumMlmVAoJDwYJa3CI4ZVugkdR6qjTw5sVsl29/4JfBBXhWEAd5ars8nRdqXg== + dependencies: + diff "^2.2.2" unified@^10.0.0: - version "10.1.1" - resolved "https://registry.npmjs.org/unified/-/unified-10.1.1.tgz#345e349e3ab353ab612878338eb9d57b4dea1d46" - integrity sha512-v4ky1+6BN9X3pQrOdkFIPWAaeDsHPE1svRDxq7YpTc2plkIqFMwukfqM+l0ewpP9EfwARlt9pPFAeWYhHm8X9w== + version "10.1.0" + resolved "https://registry.npmjs.org/unified/-/unified-10.1.0.tgz#4e65eb38fc2448b1c5ee573a472340f52b9346fe" + integrity sha512-4U3ru/BRXYYhKbwXV6lU6bufLikoAavTwev89H5UxY8enDFaAT2VXmIXYNm6hb5oHPng/EXr77PVyDFcptbk5g== dependencies: "@types/unist" "^2.0.0" bail "^2.0.0" @@ -22803,6 +24462,11 @@ union-value@^1.0.0: is-extendable "^0.1.1" set-value "^2.0.1" +uniq@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" + integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= + unique-filename@^1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" @@ -22895,6 +24559,13 @@ universal-github-app-jwt@^1.0.1: "@types/jsonwebtoken" "^8.3.3" jsonwebtoken "^8.5.1" +universal-user-agent@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-5.0.0.tgz#a3182aa758069bf0e79952570ca757de3579c1d9" + integrity sha512-B5TPtzZleXyPrUMKCpEHFmVhMN6EhmJYjG5PQna9s7mXeSqGTLap4OpqLl5FCEFUI3UBmllkETwKf/db66Y54Q== + dependencies: + os-name "^3.1.0" + universal-user-agent@^6.0.0: version "6.0.0" resolved "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz#3381f8503b251c0d9cd21bc1de939ec9df5480ee" @@ -22905,6 +24576,11 @@ universalify@^0.1.0, universalify@^0.1.2: resolved "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== +universalify@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d" + integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug== + universalify@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" @@ -22991,9 +24667,9 @@ upper-case@^2.0.2: tslib "^2.0.3" uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + version "4.2.2" + resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" + integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== dependencies: punycode "^2.1.0" @@ -23010,17 +24686,17 @@ url-parse-lax@^3.0.0: prepend-http "^2.0.0" url-parse@^1.5.3: - version "1.5.7" - resolved "https://registry.npmjs.org/url-parse/-/url-parse-1.5.7.tgz#00780f60dbdae90181f51ed85fb24109422c932a" - integrity sha512-HxWkieX+STA38EDk7CE9MEryFeHCKzgagxlGvsdS7WBImq9Mk+PGwiT56w82WI3aicwJA8REp42Cxo98c8FZMA== + version "1.5.3" + resolved "https://registry.npmjs.org/url-parse/-/url-parse-1.5.3.tgz#71c1303d38fb6639ade183c2992c8cc0686df862" + integrity sha512-IIORyIQD9rvj0A4CLWsHkBBJuNqWpFQe224b6j9t/ABmquIS0qDU2pY6kl6AuOrL5OkCXHMCFNe1jBcuAggjvQ== dependencies: querystringify "^2.1.1" requires-port "^1.0.0" url-value-parser@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/url-value-parser/-/url-value-parser-2.1.0.tgz#fe1ae776122b2eea4bbf284896bbdcd7fc75e1fa" - integrity sha512-gIYPWXujdUdwd/9TGCHTf5Vvgw6lOxjE5Q/k+7WNByYyS0vW5WX0k+xuVlhvPq6gRNhzXVv/ezC+OfeAet5Kcw== + version "2.0.3" + resolved "https://registry.npmjs.org/url-value-parser/-/url-value-parser-2.0.3.tgz#cd4b8d6754e458d65e8125260c09718d926e6e21" + integrity sha512-FjIX+Q9lYmDM9uYIGdMYfQW0uLbWVwN2NrL2ayAI7BTOvEwzH+VoDdNquwB9h4dFAx+u6mb0ONLa3sHD5DvyvA== url@0.10.3: version "0.10.3" @@ -23044,9 +24720,9 @@ use-immer@^0.6.0: integrity sha512-dFGRfvWCqPDTOt/S431ETYTg6+uxbpb7A1pptufwXVzGJY3RlXr38+3wyLNpc6SbbmAKjWl6+EP6uW74fkEsXQ== use-memo-one@^1.1.1: - version "1.1.2" - resolved "https://registry.npmjs.org/use-memo-one/-/use-memo-one-1.1.2.tgz#0c8203a329f76e040047a35a1197defe342fab20" - integrity sha512-u2qFKtxLsia/r8qG0ZKkbytbztzRb317XCkT7yP8wxL0tZ/CzK2G+WWie5vWvpyeP7+YoPIwbJoIHJ4Ba4k0oQ== + version "1.1.1" + resolved "https://registry.npmjs.org/use-memo-one/-/use-memo-one-1.1.1.tgz#39e6f08fe27e422a7d7b234b5f9056af313bd22c" + integrity sha512-oFfsyun+bP7RX8X2AskHNTxu+R3QdE/RC5IefMbqptmACAA/gfol1KDD5KRzPsGMa62sWxGZw+Ui43u6x4ddoQ== use-resize-observer@^7.0.0: version "7.1.0" @@ -23060,6 +24736,18 @@ use@^3.1.0: resolved "https://registry.npmjs.org/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== +utf8-byte-length@^1.0.1: + version "1.0.4" + resolved "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz#f45f150c4c66eee968186505ab93fcbb8ad6bf61" + integrity sha1-9F8VDExm7uloGGUFq5P8u4rWv2E= + +utif@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/utif/-/utif-2.0.1.tgz#9e1582d9bbd20011a6588548ed3266298e711759" + integrity sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg== + dependencies: + pako "^1.0.5" + util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" @@ -23139,14 +24827,14 @@ v8-compile-cache-lib@^3.0.0: integrity sha512-mpSYqfsFvASnSn5qMiwrr4VKfumbPyONLCOPmsR3A6pTY/r0+tSaVbgPWSAIuzbk3lCTa+FForeTiO+wBQGkjA== v8-compile-cache@^2.0.3: - version "2.3.0" - resolved "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" - integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== + version "2.1.0" + resolved "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" + integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g== v8-to-istanbul@^7.0.0: - version "7.1.2" - resolved "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-7.1.2.tgz#30898d1a7fa0c84d225a2c1434fb958f290883c1" - integrity sha512-TxNb7YEUwkLXCQYeudi6lgQ/SZrzNO4kMdlqVxaZPUIUjCv6iSSypUQX70kNBSERpQ8fk48+d61FXk+tgqcWow== + version "7.0.0" + resolved "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-7.0.0.tgz#b4fe00e35649ef7785a9b7fcebcea05f37c332fc" + integrity sha512-fLL2rFuQpMtm9r8hrAV2apXX/WqHJ6+IC4/eQVdMDGBUgH/YMV4Gv3duk3kjmyg6uiQWBAA9nJwue4iJUOkHeA== dependencies: "@types/istanbul-lib-coverage" "^2.0.1" convert-source-map "^1.6.0" @@ -23223,13 +24911,13 @@ vary@^1, vary@~1.1.2: integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= vasync@^2.2.0: - version "2.2.1" - resolved "https://registry.npmjs.org/vasync/-/vasync-2.2.1.tgz#d881379ff3685e4affa8e775cf0fd369262a201b" - integrity sha512-Hq72JaTpcTFdWiNA4Y22Amej2GH3BFmBaKPPlDZ4/oC8HNn2ISHLkFrJU4Ds8R3jcUi7oo5Y9jcMHKjES+N9wQ== + version "2.2.0" + resolved "https://registry.npmjs.org/vasync/-/vasync-2.2.0.tgz#cfde751860a15822db3b132bc59b116a4adaf01b" + integrity sha1-z951GGChWCLbOxMrxZsRakra8Bs= dependencies: verror "1.10.0" -verror@1.10.0: +verror@1.10.0, verror@^1.8.1: version "1.10.0" resolved "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= @@ -23238,27 +24926,18 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" -verror@^1.8.1: - version "1.10.1" - resolved "https://registry.npmjs.org/verror/-/verror-1.10.1.tgz#4bf09eeccf4563b109ed4b3d458380c972b0cdeb" - integrity sha512-veufcmxri4e3XSrT0xwfUR7kguIkaxBeosDg00yDWhk49wdwkSUrvvsm7nc75e1PUyvIeZj6nS8VQRYz2/S4Xg== - dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" - vfile-message@^3.0.0: - version "3.1.0" - resolved "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.0.tgz#5437035aa43185ff4b9210d32fada6c640e59143" - integrity sha512-4QJbBk+DkPEhBXq3f260xSaWtjE4gPKOfulzfMFF8ZNwaPZieWsg3iVlcmF04+eebzpcpeXOOFMfrYzJHVYg+g== + version "3.0.2" + resolved "https://registry.npmjs.org/vfile-message/-/vfile-message-3.0.2.tgz#db7eaebe7fecb853010f2ef1664427f52baf8f74" + integrity sha512-UUjZYIOg9lDRwwiBAuezLIsu9KlXntdxwG+nXnjuQAHvBpcX3x0eN8h+I7TkY5nkCXj+cWVp4ZqebtGBvok8ww== dependencies: "@types/unist" "^2.0.0" unist-util-stringify-position "^3.0.0" vfile@^5.0.0: - version "5.3.0" - resolved "https://registry.npmjs.org/vfile/-/vfile-5.3.0.tgz#4990c78cb3157005590ee8c930b71cd7fa6a006e" - integrity sha512-Tj44nY/48OQvarrE4FAjUfrv7GZOYzPbl5OD65HxVKwLJKMPU7zmfV8cCgCnzKWnSfYG2f3pxu+ALqs7j22xQQ== + version "5.1.0" + resolved "https://registry.npmjs.org/vfile/-/vfile-5.1.0.tgz#18e78016f0f71e98d737d40f0fca921dc264a600" + integrity sha512-4o7/DJjEaFPYSh0ckv5kcYkJTHQgCKdL8ozMM1jLAxO9ox95IzveDPXCZp08HamdWq8JXTkClDvfAKaeLQeKtg== dependencies: "@types/unist" "^2.0.0" is-buffer "^2.0.0" @@ -23294,17 +24973,17 @@ vm-browserify@^1.0.1: integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== vm2@^3.9.6: - version "3.9.8" - resolved "https://registry.npmjs.org/vm2/-/vm2-3.9.8.tgz#e99c000db042735cd2f94d8db6c42163a17be04e" - integrity sha512-/1PYg/BwdKzMPo8maOZ0heT7DLI0DAFTm7YQaz/Lim9oIaFZsJs3EdtalvXuBfZwczNwsYhju75NW4d6E+4q+w== + version "3.9.7" + resolved "https://registry.npmjs.org/vm2/-/vm2-3.9.7.tgz#bb87aa677c97c61e23a6cb6547e44e990517a6f6" + integrity sha512-g/GZ7V0Mlmch3eDVOATvAXr1GsJNg6kQ5PjvYy3HbJMCRn5slNbo/u73Uy7r5yUej1cRa3ZjtoVwcWSQuQ/fow== dependencies: acorn "^8.7.0" acorn-walk "^8.2.0" vscode-languageserver-types@^3.15.1: - version "3.16.0" - resolved "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0.tgz#ecf393fc121ec6974b2da3efb3155644c514e247" - integrity sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA== + version "3.15.1" + resolved "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.15.1.tgz#17be71d78d2f6236d414f0001ce1ef4d23e6b6de" + integrity sha512-+a9MPUQrNGRrGU630OGbYVQ+11iOIovjCkqxajPa9w57Sd5ruK8WQNsslzpa0x/QJqC8kRc2DUxWjIFwoNm4ZQ== w3c-hr-time@^1.0.2: version "1.0.2" @@ -23347,11 +25026,11 @@ walk-up-path@^1.0.0: integrity sha512-hwj/qMDUEjCU5h0xr90KGCf0tg0/LgJbmOWgrWKYlcJZM7XvquvUJZ0G/HMGr7F7OQMOUuPHWP9JpriinkAlkg== walker@^1.0.7, walker@~1.0.5: - version "1.0.8" - resolved "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" - integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== + version "1.0.7" + resolved "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" + integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= dependencies: - makeerror "1.0.12" + makeerror "1.0.x" watchpack@^2.3.1: version "2.3.1" @@ -23380,11 +25059,6 @@ web-streams-polyfill@4.0.0-beta.1: resolved "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.1.tgz#3b19b9817374b7cee06d374ba7eeb3aeb80e8c95" integrity sha512-3ux37gEX670UUphBF9AMCq8XM6iQ8Ac6A+DSRRjDoRBm1ufCkaCDdNVbaqq60PsEkdNlLKrGtv/YBP4EJXqNtQ== -web-streams-polyfill@^3.2.0: - version "3.2.0" - resolved "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.0.tgz#a6b74026b38e4885869fb5c589e90b95ccfc7965" - integrity sha512-EqPmREeOzttaLRm5HS7io98goBgZ7IVz79aDvqjD0kYXLtFZTc0T/U6wHTPKyIjb+MdN7DFIIX6hgdBEpWmfPA== - webidl-conversions@^3.0.0: version "3.0.1" resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" @@ -23400,31 +25074,30 @@ webidl-conversions@^6.1.0: resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== -webpack-dev-middleware@^5.3.1: - version "5.3.1" - resolved "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.1.tgz#aa079a8dedd7e58bfeab358a9af7dab304cee57f" - integrity sha512-81EujCKkyles2wphtdrnPg/QqegC/AtqNH//mQkBYSMqwFVCQrxM6ktB2O/SPlZy7LqeEfTbV3cZARGQz6umhg== +webpack-dev-middleware@^5.3.0: + version "5.3.0" + resolved "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.0.tgz#8fc02dba6e72e1d373eca361623d84610f27be7c" + integrity sha512-MouJz+rXAm9B1OTOYaJnn6rtD/lWZPy2ufQCH3BPs8Rloh/Du6Jze4p7AeLYHkVi0giJnYLaSGDC7S+GM9arhg== dependencies: colorette "^2.0.10" - memfs "^3.4.1" + memfs "^3.2.2" mime-types "^2.1.31" range-parser "^1.2.1" schema-utils "^4.0.0" webpack-dev-server@^4.7.3: - version "4.7.4" - resolved "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.7.4.tgz#d0ef7da78224578384e795ac228d8efb63d5f945" - integrity sha512-nfdsb02Zi2qzkNmgtZjkrMOcXnYZ6FLKcQwpxT7MvmHKc+oTtDsBju8j+NMyAygZ9GW1jMEUpy3itHtqgEhe1A== + version "4.7.3" + resolved "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.7.3.tgz#4e995b141ff51fa499906eebc7906f6925d0beaa" + integrity sha512-mlxq2AsIw2ag016nixkzUkdyOE8ST2GTy34uKSABp1c4nhjZvH90D5ZRR+UOLSsG4Z3TFahAi72a3ymRtfRm+Q== dependencies: "@types/bonjour" "^3.5.9" "@types/connect-history-api-fallback" "^1.3.5" - "@types/express" "^4.17.13" "@types/serve-index" "^1.9.1" "@types/sockjs" "^0.3.33" "@types/ws" "^8.2.2" ansi-html-community "^0.0.8" bonjour "^3.5.0" - chokidar "^3.5.3" + chokidar "^3.5.2" colorette "^2.0.10" compression "^1.7.4" connect-history-api-fallback "^1.6.0" @@ -23444,8 +25117,8 @@ webpack-dev-server@^4.7.3: sockjs "^0.3.21" spdy "^4.0.2" strip-ansi "^7.0.0" - webpack-dev-middleware "^5.3.1" - ws "^8.4.2" + webpack-dev-middleware "^5.3.0" + ws "^8.1.0" webpack-node-externals@^3.0.0: version "3.0.0" @@ -23466,12 +25139,12 @@ webpack-sources@^3.2.3: integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== webpack@^5, webpack@^5.66.0: - version "5.69.0" - resolved "https://registry.npmjs.org/webpack/-/webpack-5.69.0.tgz#c9eb607d4f6c49f1e5755492323a7b055c3450e3" - integrity sha512-E5Fqu89Gu8fR6vejRqu26h8ld/k6/dCVbeGUcuZjc+goQHDfCPU9rER71JmdtBYGmci7Ec2aFEATQ2IVXKy2wg== + version "5.67.0" + resolved "https://registry.npmjs.org/webpack/-/webpack-5.67.0.tgz#cb43ca2aad5f7cc81c4cd36b626e6b819805dbfd" + integrity sha512-LjFbfMh89xBDpUMgA1W9Ur6Rn/gnr2Cq1jjHFPo4v6a79/ypznSYbAyPgGhwsxBtMIaEmDD1oJoA7BEYw/Fbrw== dependencies: - "@types/eslint-scope" "^3.7.3" - "@types/estree" "^0.0.51" + "@types/eslint-scope" "^3.7.0" + "@types/estree" "^0.0.50" "@webassemblyjs/ast" "1.11.1" "@webassemblyjs/wasm-edit" "1.11.1" "@webassemblyjs/wasm-parser" "1.11.1" @@ -23479,7 +25152,7 @@ webpack@^5, webpack@^5.66.0: acorn-import-assertions "^1.7.6" browserslist "^4.14.5" chrome-trace-event "^1.0.2" - enhanced-resolve "^5.9.0" + enhanced-resolve "^5.8.3" es-module-lexer "^0.9.0" eslint-scope "5.1.1" events "^3.2.0" @@ -23495,7 +25168,16 @@ webpack@^5, webpack@^5.66.0: watchpack "^2.3.1" webpack-sources "^3.2.3" -websocket-driver@>=0.5.1, websocket-driver@^0.7.4: +websocket-driver@>=0.5.1: + version "0.7.3" + resolved "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.3.tgz#a2d4e0d4f4f116f1e6297eba58b05d430100e9f9" + integrity sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg== + dependencies: + http-parser-js ">=0.4.0 <0.4.11" + safe-buffer ">=5.1.0" + websocket-extensions ">=0.1.1" + +websocket-driver@^0.7.4: version "0.7.4" resolved "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== @@ -23516,11 +25198,16 @@ whatwg-encoding@^1.0.5: dependencies: iconv-lite "0.4.24" -whatwg-fetch@^3.4.1: +whatwg-fetch@^3.0.0: version "3.6.2" resolved "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz#dced24f37f2624ed0281725d51d0e2e3fe677f8c" integrity sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA== +whatwg-fetch@^3.4.1: + version "3.4.1" + resolved "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.4.1.tgz#e5f871572d6879663fa5674c8f833f15a8425ab3" + integrity sha512-sofZVzE1wKwO+EYPbWfiwzaKovWiZXf4coEzjGP9b2GBVgQRLQUZ2QcuPpQExGDAW5GItpEm6Tl4OU5mywnAoQ== + whatwg-mimetype@^2.3.0: version "2.3.0" resolved "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" @@ -23534,7 +25221,16 @@ whatwg-url@^5.0.0: tr46 "~0.0.3" webidl-conversions "^3.0.0" -whatwg-url@^8.0.0, whatwg-url@^8.4.0, whatwg-url@^8.5.0: +whatwg-url@^8.0.0, whatwg-url@^8.4.0: + version "8.4.0" + resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.4.0.tgz#50fb9615b05469591d2b2bd6dfaed2942ed72837" + integrity sha512-vwTUFf6V4zhcPkWp/4CQPr1TW9Ml6SF4lVyaIMBdJw5i6qUUJ1QWM4Z6YYVkfka0OUIzVo/0aNtGVGk256IKWw== + dependencies: + lodash.sortby "^4.7.0" + tr46 "^2.0.2" + webidl-conversions "^6.1.0" + +whatwg-url@^8.5.0: version "8.7.0" resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz#656a78e510ff8f3937bc0bcbe9f5c0ac35941b77" integrity sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg== @@ -23543,7 +25239,7 @@ whatwg-url@^8.0.0, whatwg-url@^8.4.0, whatwg-url@^8.5.0: tr46 "^2.1.0" webidl-conversions "^6.1.0" -which-boxed-primitive@^1.0.2: +which-boxed-primitive@^1.0.1, which-boxed-primitive@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== @@ -23573,16 +25269,17 @@ which-pm@2.0.0: path-exists "^4.0.0" which-typed-array@^1.1.2: - version "1.1.7" - resolved "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.7.tgz#2761799b9a22d4b8660b3c1b40abaa7739691793" - integrity sha512-vjxaB4nfDqwKI0ws7wZpxIlde1XrLX5uB0ZjpfshgmapJMD7jJWhZI+yToJTqaFByF0eNBcYxbjmCzoRP7CfEw== + version "1.1.4" + resolved "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.4.tgz#8fcb7d3ee5adf2d771066fba7cf37e32fe8711ff" + integrity sha512-49E0SpUe90cjpoc7BOJwyPHRqSAd12c10Qm2amdEZrJPCY2NDxaW01zHITrem+rnETY3dwrbH3UUrUwagfCYDA== dependencies: - available-typed-arrays "^1.0.5" - call-bind "^1.0.2" - es-abstract "^1.18.5" + available-typed-arrays "^1.0.2" + call-bind "^1.0.0" + es-abstract "^1.18.0-next.1" foreach "^2.0.5" - has-tostringtag "^1.0.0" - is-typed-array "^1.1.7" + function-bind "^1.1.1" + has-symbols "^1.0.1" + is-typed-array "^1.1.3" which@^1.2.9, which@^1.3.1: version "1.3.1" @@ -23617,7 +25314,14 @@ window-size@^0.2.0: resolved "https://registry.npmjs.org/window-size/-/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075" integrity sha1-tDFbtCFKPXBY6+7okuE/ok2YsHU= -winston-transport@^4.5.0: +windows-release@^3.1.0: + version "3.2.0" + resolved "https://registry.npmjs.org/windows-release/-/windows-release-3.2.0.tgz#8122dad5afc303d833422380680a79cdfa91785f" + integrity sha512-QTlz2hKLrdqukrsapKsINzqMgOUpQW268eJ0OaOpJN32h272waxR9fkB9VoWRtK7uKHG5EHJcTXQBD8XZVJkFA== + dependencies: + execa "^1.0.0" + +winston-transport@^4.4.2: version "4.5.0" resolved "https://registry.npmjs.org/winston-transport/-/winston-transport-4.5.0.tgz#6e7b0dd04d393171ed5e4e4905db265f7ab384fa" integrity sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q== @@ -23627,20 +25331,20 @@ winston-transport@^4.5.0: triple-beam "^1.3.0" winston@^3.2.1: - version "3.6.0" - resolved "https://registry.npmjs.org/winston/-/winston-3.6.0.tgz#be32587a099a292b88c49fac6fa529d478d93fb6" - integrity sha512-9j8T75p+bcN6D00sF/zjFVmPp+t8KMPB1MzbbzYjeN9VWxdsYnTB40TkbNUEXAmILEfChMvAMgidlX64OG3p6w== + version "3.5.1" + resolved "https://registry.npmjs.org/winston/-/winston-3.5.1.tgz#b25cc899d015836dbf8c583dec8c4c4483a0da2e" + integrity sha512-tbRtVy+vsSSCLcZq/8nXZaOie/S2tPXPFt4be/Q3vI/WtYwm7rrwidxVw2GRa38FIXcJ1kUM6MOZ9Jmnk3F3UA== dependencies: "@dabh/diagnostics" "^2.0.2" async "^3.2.3" is-stream "^2.0.0" - logform "^2.4.0" + logform "^2.3.2" one-time "^1.0.0" readable-stream "^3.4.0" safe-stable-stringify "^2.3.1" stack-trace "0.0.x" triple-beam "^1.3.0" - winston-transport "^4.5.0" + winston-transport "^4.4.2" word-wrap@^1.2.3, word-wrap@~1.2.3: version "1.2.3" @@ -23756,15 +25460,25 @@ ws@7.4.5: resolved "https://registry.npmjs.org/ws/-/ws-7.4.5.tgz#a484dd851e9beb6fdb420027e3885e8ce48986c1" integrity sha512-xzyu3hFvomRfXKH8vOFMU3OguG6oOvhXMo3xsGy3xWExqaM2dxBbVxuD99O7m3ZUFMvvscsZDqxfgMaRr/Nr1g== -ws@8.5.0, ws@^8.4.2: - version "8.5.0" - resolved "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz#bfb4be96600757fe5382de12c670dab984a1ed4f" - integrity sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg== +ws@8.2.3: + version "8.2.3" + resolved "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz#63a56456db1b04367d0b721a0b80cae6d8becbba" + integrity sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA== -"ws@^5.2.0 || ^6.0.0 || ^7.0.0", ws@^7.3.1, ws@^7.4.6, ws@^8.3.0: - version "7.5.7" - resolved "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz#9e0ac77ee50af70d58326ecff7e85eb3fa375e67" - integrity sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A== +ws@8.3.0, "ws@^5.2.0 || ^6.0.0 || ^7.0.0", ws@^7.2.3, ws@^7.3.1, ws@^7.4.6, ws@^8.3.0: + version "7.5.6" + resolved "https://registry.npmjs.org/ws/-/ws-7.5.6.tgz#e59fc509fb15ddfb65487ee9765c5a51dec5fe7b" + integrity sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA== + +ws@^8.1.0: + version "8.4.2" + resolved "https://registry.npmjs.org/ws/-/ws-8.4.2.tgz#18e749868d8439f2268368829042894b6907aa0b" + integrity sha512-Kbk4Nxyq7/ZWqr/tarI9yIt/+iNNFOjBXEWgTb4ydaNHBNGgvf2QHbS9fdfsndfjFlFwEd4Al+mw83YkaD10ZA== + +ws@~7.4.2: + version "7.4.6" + resolved "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" + integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== xcase@^2.0.1: version "2.0.1" @@ -23776,6 +25490,16 @@ xdg-basedir@^4.0.0: resolved "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13" integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q== +xhr@^2.0.1: + version "2.6.0" + resolved "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz#b69d4395e792b4173d6b7df077f0fc5e4e2b249d" + integrity sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA== + dependencies: + global "~4.4.0" + is-function "^1.0.1" + parse-headers "^2.0.0" + xtend "^4.0.0" + xml-but-prettier@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/xml-but-prettier/-/xml-but-prettier-1.0.1.tgz#f5a33267ed42ccd4e355c62557a5e39b01fb40f3" @@ -23805,6 +25529,11 @@ xml-name-validator@^3.0.0: resolved "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== +xml-parse-from-string@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz#a9029e929d3dbcded169f3c6e28238d95a5d5a28" + integrity sha1-qQKekp09vN7RafPG4oI42VpdWig= + xml2js@0.4.19: version "0.4.19" resolved "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz#686c20f213209e94abf0d1bcf1efaa291c7827a7" @@ -23813,7 +25542,7 @@ xml2js@0.4.19: sax ">=0.6.0" xmlbuilder "~9.0.1" -xml2js@^0.4.11, xml2js@^0.4.19, xml2js@^0.4.23: +xml2js@^0.4.11, xml2js@^0.4.19, xml2js@^0.4.23, xml2js@^0.4.5: version "0.4.23" resolved "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz#a0c69516752421eb2ac758ee4d4ccf58843eac66" integrity sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug== @@ -23846,6 +25575,11 @@ xmlchars@^2.2.0: resolved "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== +xmlhttprequest-ssl@~1.6.2: + version "1.6.3" + resolved "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.6.3.tgz#03b713873b01659dfa2c1c5d056065b27ddc2de6" + integrity sha512-3XfeQE/wNkvrIktn2Kf0869fC0BN6UpydVasGIeSm2B1Llihf7/0UfZM+eCkOw3P7bP4+qPgqhm7ZoxuJtFU0Q== + xpath@0.0.32: version "0.0.32" resolved "https://registry.npmjs.org/xpath/-/xpath-0.0.32.tgz#1b73d3351af736e17ec078d6da4b8175405c48af" @@ -23904,7 +25638,7 @@ yaml@^1.10.0, yaml@^1.10.2, yaml@^1.7.2, yaml@^1.9.2: resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== -yargs-parser@20.2.4: +yargs-parser@20.2.4, yargs-parser@^20.2.2, yargs-parser@^20.2.3: version "20.2.4" resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== @@ -23917,11 +25651,6 @@ yargs-parser@^18.1.2, yargs-parser@^18.1.3: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^20.2.2, yargs-parser@^20.2.3: - version "20.2.9" - resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" - integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== - yargs-parser@^21.0.0: version "21.0.0" resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.0.tgz#a485d3966be4317426dd56bdb6a30131b281dc55" @@ -23952,7 +25681,7 @@ yargs@^15.1.0, yargs@^15.3.1, yargs@^15.4.1: y18n "^4.0.0" yargs-parser "^18.1.2" -yargs@^16.2.0: +yargs@^16.1.1, yargs@^16.2.0: version "16.2.0" resolved "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== @@ -24015,6 +25744,11 @@ yauzl@^2.10.0: buffer-crc32 "~0.2.3" fd-slicer "~1.1.0" +yeast@0.1.2: + version "0.1.2" + resolved "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" + integrity sha1-AI4G2AlDIMNy28L47XagymyKxBk= + yeoman-environment@^3.9.1: version "3.9.1" resolved "https://registry.npmjs.org/yeoman-environment/-/yeoman-environment-3.9.1.tgz#21912bdee4b1d302a5c25a7d31338fa092ea7116" From 209fd128e6c84e7c679721e44c2e9918cddcdc1c Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Thu, 17 Feb 2022 14:48:29 +0100 Subject: [PATCH 217/383] removed all references to the removed SCM-specific location types Signed-off-by: Patrik Oldsberg --- .changeset/cold-ravens-grin.md | 5 + .changeset/quiet-waves-film.md | 5 + .changeset/silent-kiwis-allow.md | 6 + docs/features/techdocs/cli.md | 2 +- packages/techdocs-cli/src/commands/index.ts | 2 +- packages/techdocs-common/README.md | 2 +- .../src/stages/prepare/dir.test.ts | 6 +- .../DefaultApiExplorerPage.test.tsx | 2 +- .../src/ingestion/CatalogRules.test.ts | 8 +- .../processors/CodeOwnersProcessor.test.ts | 2 +- .../processors/CodeOwnersProcessor.ts | 10 +- .../processors/PlaceholderProcessor.test.ts | 12 +- .../CatalogPage/DefaultCatalogPage.test.tsx | 2 +- plugins/github-deployments/src/api/index.ts | 2 +- .../components/GithubDeploymentsCard.test.tsx | 8 +- scripts/migrate-location-types.js | 110 ------------------ 16 files changed, 41 insertions(+), 143 deletions(-) create mode 100644 .changeset/cold-ravens-grin.md create mode 100644 .changeset/quiet-waves-film.md create mode 100644 .changeset/silent-kiwis-allow.md delete mode 100755 scripts/migrate-location-types.js diff --git a/.changeset/cold-ravens-grin.md b/.changeset/cold-ravens-grin.md new file mode 100644 index 0000000000..5ca43809ea --- /dev/null +++ b/.changeset/cold-ravens-grin.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend': minor +--- + +The `CodeOwnersProcessor` no longer supports the deprecated SCM-specific location types like `'github/api'`. This is a breaking change but it is unlikely to have an impact, as these location types haven't been supported by the rest of the catalog for a long time. diff --git a/.changeset/quiet-waves-film.md b/.changeset/quiet-waves-film.md new file mode 100644 index 0000000000..206cef6287 --- /dev/null +++ b/.changeset/quiet-waves-film.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-github-deployments': patch +--- + +The removed `'github'` catalog location type no longer triggers a GitHub integration configuration lookup. diff --git a/.changeset/silent-kiwis-allow.md b/.changeset/silent-kiwis-allow.md new file mode 100644 index 0000000000..cfe5e9d1b7 --- /dev/null +++ b/.changeset/silent-kiwis-allow.md @@ -0,0 +1,6 @@ +--- +'@techdocs/cli': patch +'@backstage/techdocs-common': patch +--- + +Updated usage of `github:` location types in docs to use `url:` instead. diff --git a/docs/features/techdocs/cli.md b/docs/features/techdocs/cli.md index 8122fefdcd..a5dc8c3c54 100644 --- a/docs/features/techdocs/cli.md +++ b/docs/features/techdocs/cli.md @@ -123,7 +123,7 @@ Options: --no-pull Do not pull the latest docker image --no-docker Do not use Docker, use MkDocs executable and plugins in current user environment. --techdocs-ref The repository hosting documentation source files e.g. - github:https://ghe.mycompany.net.com/org/repo. + url:https://ghe.mycompany.net.com/org/repo. This value is same as the backstage.io/techdocs-ref annotation of the corresponding Backstage entity. It is completely fine to skip this as it is only being used to set repo_url in mkdocs.yml diff --git a/packages/techdocs-cli/src/commands/index.ts b/packages/techdocs-cli/src/commands/index.ts index d4f41cf7a3..115fe8e364 100644 --- a/packages/techdocs-cli/src/commands/index.ts +++ b/packages/techdocs-cli/src/commands/index.ts @@ -45,7 +45,7 @@ export function registerCommands(program: CommanderStatic) { ) .option( '--techdocs-ref ', - 'The repository hosting documentation source files e.g. github:https://ghe.mycompany.net.com/org/repo.' + + 'The repository hosting documentation source files e.g. url:https://ghe.mycompany.net.com/org/repo.' + '\nThis value is same as the backstage.io/techdocs-ref annotation of the corresponding Backstage entity.' + '\nIt is completely fine to skip this as it is only being used to set repo_url in mkdocs.yml if not found.\n', ) diff --git a/packages/techdocs-common/README.md b/packages/techdocs-common/README.md index e4889d6f79..bbaac85e9b 100644 --- a/packages/techdocs-common/README.md +++ b/packages/techdocs-common/README.md @@ -39,7 +39,7 @@ Currently the build process is split up in these three stages. - Generators - Publishers -Preparers read your entity data and creates a working directory with your documentation source code. For example if you have set your `backstage.io/techdocs-ref` to `github:https://github.com/backstage/backstage.git` it will clone that repository to a temp folder and pass that on to the generator. +Preparers read your entity data and creates a working directory with your documentation source code. For example if you have set your `backstage.io/techdocs-ref` to `url:https://github.com/backstage/backstage.git` it will clone that repository to a temp folder and pass that on to the generator. Generators takes the prepared source and runs the `techdocs-container` on it. It then passes on the output folder of that build to the publisher. diff --git a/packages/techdocs-common/src/stages/prepare/dir.test.ts b/packages/techdocs-common/src/stages/prepare/dir.test.ts index 019bf51fe9..2bf3fe29fc 100644 --- a/packages/techdocs-common/src/stages/prepare/dir.test.ts +++ b/packages/techdocs-common/src/stages/prepare/dir.test.ts @@ -86,7 +86,7 @@ describe('directory preparer', () => { ); }); - it('should reject when managed-by-location is a git repository', async () => { + it('should reject when managed-by-location has an unknown type', async () => { const directoryPreparer = new DirectoryPreparer( mockConfig, logger, @@ -95,12 +95,12 @@ describe('directory preparer', () => { const mockEntity = createMockEntity({ 'backstage.io/managed-by-location': - 'github:https://github.com/backstage/backstage/blob/master/catalog-info.yaml', + 'does-not-exist:https://github.com/backstage/backstage/blob/master/catalog-info.yaml', 'backstage.io/techdocs-ref': 'dir:./docs', }); await expect(directoryPreparer.prepare(mockEntity)).rejects.toThrow( - /Unable to resolve location type github/, + /Unable to resolve location type does-not-exist/, ); }); }); diff --git a/plugins/api-docs/src/components/ApiExplorerPage/DefaultApiExplorerPage.test.tsx b/plugins/api-docs/src/components/ApiExplorerPage/DefaultApiExplorerPage.test.tsx index 9b79263b5f..18222eea3a 100644 --- a/plugins/api-docs/src/components/ApiExplorerPage/DefaultApiExplorerPage.test.tsx +++ b/plugins/api-docs/src/components/ApiExplorerPage/DefaultApiExplorerPage.test.tsx @@ -57,7 +57,7 @@ describe('DefaultApiExplorerPage', () => { ] as Entity[], }), getLocationByRef: () => - Promise.resolve({ id: 'id', type: 'github', target: 'url' }), + Promise.resolve({ id: 'id', type: 'url', target: 'url' }), getEntityByName: async entityName => { return { apiVersion: 'backstage.io/v1alpha1', diff --git a/plugins/catalog-backend/src/ingestion/CatalogRules.test.ts b/plugins/catalog-backend/src/ingestion/CatalogRules.test.ts index 24d6b2fd66..88245d9b81 100644 --- a/plugins/catalog-backend/src/ingestion/CatalogRules.test.ts +++ b/plugins/catalog-backend/src/ingestion/CatalogRules.test.ts @@ -35,11 +35,11 @@ const entity = { const location: Record = { x: { - type: 'github', + type: 'url', target: 'https://github.com/a/b/blob/master/x.yaml', }, y: { - type: 'github', + type: 'url', target: 'https://github.com/a/b/blob/master/y.yaml', }, z: { @@ -180,7 +180,7 @@ describe('DefaultCatalogRulesEnforcer', () => { rules: [{ allow: ['user'] }], locations: [ { - type: 'github', + type: 'url', target: 'https://github.com/a/b/blob/master/x.yaml', rules: [ { @@ -204,7 +204,7 @@ describe('DefaultCatalogRulesEnforcer', () => { const enforcer = DefaultCatalogRulesEnforcer.fromConfig( new ConfigReader({ catalog: { - rules: [{ allow: ['Group'], locations: [{ type: 'github' }] }], + rules: [{ allow: ['Group'], locations: [{ type: 'url' }] }], }, }), ); diff --git a/plugins/catalog-backend/src/ingestion/processors/CodeOwnersProcessor.test.ts b/plugins/catalog-backend/src/ingestion/processors/CodeOwnersProcessor.test.ts index 2f52a1ddd9..3d7d6fde84 100644 --- a/plugins/catalog-backend/src/ingestion/processors/CodeOwnersProcessor.test.ts +++ b/plugins/catalog-backend/src/ingestion/processors/CodeOwnersProcessor.test.ts @@ -27,7 +27,7 @@ const mockCodeOwnersText = () => ` describe('CodeOwnersProcessor', () => { const mockLocation = ({ basePath = '', - type = 'github', + type = 'url', } = {}): LocationSpec => ({ type, target: `https://github.com/backstage/backstage/blob/master/${basePath}catalog-info.yaml`, diff --git a/plugins/catalog-backend/src/ingestion/processors/CodeOwnersProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/CodeOwnersProcessor.ts index b46070d173..ff5dedcbbf 100644 --- a/plugins/catalog-backend/src/ingestion/processors/CodeOwnersProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/CodeOwnersProcessor.ts @@ -27,15 +27,7 @@ import { CatalogProcessor } from './types'; const ALLOWED_KINDS = ['API', 'Component', 'Domain', 'Resource', 'System']; -const ALLOWED_LOCATION_TYPES = [ - 'url', - 'azure/api', - 'bitbucket/api', - 'github', - 'github/api', - 'gitlab', - 'gitlab/api', -]; +const ALLOWED_LOCATION_TYPES = ['url']; export class CodeOwnersProcessor implements CatalogProcessor { private readonly integrations: ScmIntegrationRegistry; diff --git a/plugins/catalog-backend/src/ingestion/processors/PlaceholderProcessor.test.ts b/plugins/catalog-backend/src/ingestion/processors/PlaceholderProcessor.test.ts index c7a49353ae..7bfc66276e 100644 --- a/plugins/catalog-backend/src/ingestion/processors/PlaceholderProcessor.test.ts +++ b/plugins/catalog-backend/src/ingestion/processors/PlaceholderProcessor.test.ts @@ -154,7 +154,7 @@ describe('PlaceholderProcessor', () => { spec: { data: { $text: '../file.txt' } }, }, { - type: 'github', + type: 'url', target: 'https://github.com/backstage/backstage/a/b/catalog-info.yaml', }, @@ -190,7 +190,7 @@ describe('PlaceholderProcessor', () => { spec: { data: { $json: './file.json' } }, }, { - type: 'github', + type: 'url', target: 'https://github.com/backstage/backstage/a/b/catalog-info.yaml', }, @@ -224,7 +224,7 @@ describe('PlaceholderProcessor', () => { spec: { data: { $yaml: '../file.yaml' } }, }, { - type: 'github', + type: 'url', target: 'https://github.com/backstage/backstage/a/b/catalog-info.yaml', }, @@ -262,7 +262,7 @@ describe('PlaceholderProcessor', () => { }, }, { - type: 'github', + type: 'url', target: 'https://github.com/backstage/backstage/a/b/catalog-info.yaml', }, @@ -300,7 +300,7 @@ describe('PlaceholderProcessor', () => { }, }, { - type: 'github', + type: 'url', target: './a/b/catalog-info.yaml', }, ), @@ -340,7 +340,7 @@ describe('PlaceholderProcessor', () => { }, }, { - type: 'github', + type: 'url', target: './a/b/catalog-info.yaml', }, ), diff --git a/plugins/catalog/src/components/CatalogPage/DefaultCatalogPage.test.tsx b/plugins/catalog/src/components/CatalogPage/DefaultCatalogPage.test.tsx index aa93d25c82..34aee0bbf3 100644 --- a/plugins/catalog/src/components/CatalogPage/DefaultCatalogPage.test.tsx +++ b/plugins/catalog/src/components/CatalogPage/DefaultCatalogPage.test.tsx @@ -101,7 +101,7 @@ describe('DefaultCatalogPage', () => { ] as Entity[], }), getLocationByRef: () => - Promise.resolve({ id: 'id', type: 'github', target: 'url' }), + Promise.resolve({ id: 'id', type: 'url', target: 'url' }), getEntityByName: async entityName => { return { apiVersion: 'backstage.io/v1alpha1', diff --git a/plugins/github-deployments/src/api/index.ts b/plugins/github-deployments/src/api/index.ts index e0eef7cc1d..48363557ff 100644 --- a/plugins/github-deployments/src/api/index.ts +++ b/plugins/github-deployments/src/api/index.ts @@ -28,7 +28,7 @@ const getBaseUrl = ( } const location = parseLocationRef(host); - if (location.type !== 'github' && location.type !== 'url') { + if (location.type !== 'url') { return 'https://api.github.com'; } diff --git a/plugins/github-deployments/src/components/GithubDeploymentsCard.test.tsx b/plugins/github-deployments/src/components/GithubDeploymentsCard.test.tsx index dba5bbfe1c..dedd2c3082 100644 --- a/plugins/github-deployments/src/components/GithubDeploymentsCard.test.tsx +++ b/plugins/github-deployments/src/components/GithubDeploymentsCard.test.tsx @@ -254,7 +254,7 @@ describe('github-deployments', () => { entity.entity.metadata.annotations = { 'github.com/project-slug': 'org/repo', 'backstage.io/source-location': - 'github:https://my-github-1.com/org/repo/tree/master/', + 'url:https://my-github-1.com/org/repo/tree/master/', }; }); @@ -276,7 +276,7 @@ describe('github-deployments', () => { entity.entity.metadata.annotations = { 'github.com/project-slug': 'org/repo', 'backstage.io/managed-by-location': - 'github:https://my-github-2.com/org/repo/blob/master/catalog-info.yaml', + 'url:https://my-github-2.com/org/repo/blob/master/catalog-info.yaml', }; }); @@ -298,7 +298,7 @@ describe('github-deployments', () => { entity.entity.metadata.annotations = { 'github.com/project-slug': 'org/repo', 'backstage.io/managed-by-location': - 'github:https://my-github-3.com/org/repo/blob/master/catalog-info.yaml', + 'url:https://my-github-3.com/org/repo/blob/master/catalog-info.yaml', }; }); @@ -323,7 +323,7 @@ describe('github-deployments', () => { entity.entity.metadata.annotations = { 'github.com/project-slug': 'org/repo', 'backstage.io/managed-by-location': - 'github:https://my-github-unknown.com/org/repo/blob/master/catalog-info.yaml', + 'url:https://my-github-unknown.com/org/repo/blob/master/catalog-info.yaml', }; }); diff --git a/scripts/migrate-location-types.js b/scripts/migrate-location-types.js deleted file mode 100755 index 168a5e825c..0000000000 --- a/scripts/migrate-location-types.js +++ /dev/null @@ -1,110 +0,0 @@ -#!/usr/bin/env node -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -// This is a script that helps you migrate any locations that are using -// deprecated location types. Change the below URL to point towards your -// catalog API endpoint and execute the script. It will delete and add -// back the locations with the correct type one by one. - -const BASE_URL = 'http://localhost:7007/api/catalog'; // Change me - -const deprecatedTypes = [ - 'github', - 'github/api', - 'bitbucket/api', - 'gitlab/api', - 'azure/api', -]; - -async function main() { - const locations = await request('GET', `${BASE_URL}/locations`); - - for (const { data: location } of locations) { - if (!deprecatedTypes.includes(location.type)) { - continue; - } - console.log(`${location.type} -> url : ${location.target}`); - await request('DELETE', `${BASE_URL}/locations/${location.id}`); - try { - await request('POST', `${BASE_URL}/locations`, { - type: 'url', - target: location.target, - }); - } catch (error) { - console.log(`Failed to add back location ${location.target}`); - throw error; - } - } -} - -async function request(method, url, body) { - return new Promise((resolve, reject) => { - const parsedUrl = require('url').parse(url); - - const req = require('http').request( - { - method, - ...parsedUrl, - headers: body - ? { - 'Content-Type': 'application/json', - } - : {}, - }, - res => { - const chunks = []; - res.on('data', chunk => { - chunks.push(chunk); - }); - - res.on('end', () => { - if (res.statusCode >= 300) { - reject( - new Error( - `${method} to ${url} failed with status ${res.statusCode}`, - ), - ); - return; - } - try { - const responseBody = Buffer.concat(chunks).toString('utf8').trim(); - if (responseBody) { - resolve(JSON.parse(responseBody)); - } else { - resolve(); - } - } catch (error) { - reject(error); - } - }); - }, - ); - - req.on('error', reject); - - if (body) { - req.write(JSON.stringify(body)); - } - - req.end(); - }); -} - -main().catch(error => { - console.error(error.stack); - process.exit(1); -}); From 082c32f9485adaea5fdee5675c0a1d5436f94f06 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Thu, 17 Feb 2022 15:29:06 +0100 Subject: [PATCH 218/383] catalog-backend: deprecated location result optional flag Signed-off-by: Patrik Oldsberg --- .changeset/grumpy-grapes-type.md | 23 +++++++++++++++++ plugins/catalog-backend/api-report.md | 4 +-- .../AzureDevOpsDiscoveryProcessor.ts | 13 ++++------ .../BitbucketDiscoveryProcessor.test.ts | 12 ++++----- .../processors/GitLabDiscoveryProcessor.ts | 25 ++++++++----------- .../processors/GithubDiscoveryProcessor.ts | 13 ++++------ .../processors/LocationEntityProcessor.ts | 2 +- .../processors/StaticLocationProcessor.ts | 2 +- .../BitbucketRepositoryParser.test.ts | 13 ++++------ .../bitbucket/BitbucketRepositoryParser.ts | 13 ++++------ .../src/ingestion/processors/results.ts | 2 +- .../src/ingestion/processors/types.ts | 3 ++- 12 files changed, 66 insertions(+), 59 deletions(-) create mode 100644 .changeset/grumpy-grapes-type.md diff --git a/.changeset/grumpy-grapes-type.md b/.changeset/grumpy-grapes-type.md new file mode 100644 index 0000000000..cd1e9f4430 --- /dev/null +++ b/.changeset/grumpy-grapes-type.md @@ -0,0 +1,23 @@ +--- +'@backstage/plugin-catalog-backend': patch +--- + +Deprecated the second parameter of `results.location()` that determines whether an emitted location is optional. In cases where this is currently being set to `false`, the parameter can simply be dropped, as that is the default. Usage where this was being set to `true` should be migrated to set the `presence` option of the emitted location to `optional`. For example: + +```ts +results.location( + { + type: 'url', + target: 'http://example.com/foo', + }, + true, +); + +// migrated to + +results.location({ + type: 'url', + target: 'http://example.com/foo', + presence: 'optional', +}); +``` diff --git a/plugins/catalog-backend/api-report.md b/plugins/catalog-backend/api-report.md index f52bbdc22e..1db5ca1e5e 100644 --- a/plugins/catalog-backend/api-report.md +++ b/plugins/catalog-backend/api-report.md @@ -430,7 +430,7 @@ export type CatalogProcessorErrorResult = { export type CatalogProcessorLocationResult = { type: 'location'; location: LocationSpec; - optional: boolean; + optional?: boolean; }; // Warning: (ae-missing-release-tag) "CatalogProcessorParser" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) @@ -903,7 +903,7 @@ function inputError( // @public (undocumented) function location_2( newLocation: LocationSpec, - optional: boolean, + optional?: boolean, ): CatalogProcessorResult; // Warning: (ae-missing-release-tag) "LocationAnalyzer" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) diff --git a/plugins/catalog-backend/src/ingestion/processors/AzureDevOpsDiscoveryProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/AzureDevOpsDiscoveryProcessor.ts index 693cc61bd8..c1cc610495 100644 --- a/plugins/catalog-backend/src/ingestion/processors/AzureDevOpsDiscoveryProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/AzureDevOpsDiscoveryProcessor.ts @@ -101,17 +101,14 @@ export class AzureDevOpsDiscoveryProcessor implements CatalogProcessor { for (const file of files) { emit( - results.location( - { - type: 'url', - target: `${baseUrl}/${org}/${project}/_git/${file.repository.name}?path=${file.path}`, - presence: 'optional', - }, + results.location({ + type: 'url', + target: `${baseUrl}/${org}/${project}/_git/${file.repository.name}?path=${file.path}`, // Not all locations may actually exist, since the user defined them as a wildcard pattern. // Thus, we emit them as optional and let the downstream processor find them while not outputting // an error if it couldn't. - true, - ), + presence: 'optional', + }), ); } diff --git a/plugins/catalog-backend/src/ingestion/processors/BitbucketDiscoveryProcessor.test.ts b/plugins/catalog-backend/src/ingestion/processors/BitbucketDiscoveryProcessor.test.ts index 7ace995fda..b60a55a156 100644 --- a/plugins/catalog-backend/src/ingestion/processors/BitbucketDiscoveryProcessor.test.ts +++ b/plugins/catalog-backend/src/ingestion/processors/BitbucketDiscoveryProcessor.test.ts @@ -766,13 +766,11 @@ describe('BitbucketDiscoveryProcessor', () => { describe('Custom repository parser', () => { const customRepositoryParser: BitbucketRepositoryParser = async function* customRepositoryParser({}) { - yield results.location( - { - type: 'custom-location-type', - target: 'custom-target', - }, - true, - ); + yield results.location({ + type: 'custom-location-type', + target: 'custom-target', + presence: 'optional', + }); }; const processor = BitbucketDiscoveryProcessor.fromConfig( diff --git a/plugins/catalog-backend/src/ingestion/processors/GitLabDiscoveryProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/GitLabDiscoveryProcessor.ts index 0822d40ef6..776ec1e7a8 100644 --- a/plugins/catalog-backend/src/ingestion/processors/GitLabDiscoveryProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/GitLabDiscoveryProcessor.ts @@ -117,20 +117,17 @@ export class GitLabDiscoveryProcessor implements CatalogProcessor { const project_branch = branch === '*' ? project.default_branch : branch; emit( - results.location( - { - type: 'url', - // The format expected by the GitLabUrlReader: - // https://gitlab.com/groupA/teams/teamA/subgroupA/repoA/-/blob/branch/filepath - // - // This unfortunately will trigger another API call in `getGitLabFileFetchUrl` to get the project ID. - // The alternative is using the `buildRawUrl` function, which does not support subgroups, so providing a raw - // URL here won't work either. - target: `${project.web_url}/-/blob/${project_branch}/${catalogPath}`, - presence: 'optional', - }, - true, - ), + results.location({ + type: 'url', + // The format expected by the GitLabUrlReader: + // https://gitlab.com/groupA/teams/teamA/subgroupA/repoA/-/blob/branch/filepath + // + // This unfortunately will trigger another API call in `getGitLabFileFetchUrl` to get the project ID. + // The alternative is using the `buildRawUrl` function, which does not support subgroups, so providing a raw + // URL here won't work either. + target: `${project.web_url}/-/blob/${project_branch}/${catalogPath}`, + presence: 'optional', + }), ); } diff --git a/plugins/catalog-backend/src/ingestion/processors/GithubDiscoveryProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/GithubDiscoveryProcessor.ts index e0d2c3ca16..ec0de74b00 100644 --- a/plugins/catalog-backend/src/ingestion/processors/GithubDiscoveryProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/GithubDiscoveryProcessor.ts @@ -140,17 +140,14 @@ export class GithubDiscoveryProcessor implements CatalogProcessor { const path = `/blob/${branchName}${catalogPath}`; emit( - results.location( - { - type: 'url', - target: `${repository.url}${path}`, - presence: 'optional', - }, + results.location({ + type: 'url', + target: `${repository.url}${path}`, // Not all locations may actually exist, since the user defined them as a wildcard pattern. // Thus, we emit them as optional and let the downstream processor find them while not outputting // an error if it couldn't. - true, - ), + presence: 'optional', + }), ); } diff --git a/plugins/catalog-backend/src/ingestion/processors/LocationEntityProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/LocationEntityProcessor.ts index ded6bd5ecf..60941486c3 100644 --- a/plugins/catalog-backend/src/ingestion/processors/LocationEntityProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/LocationEntityProcessor.ts @@ -81,7 +81,7 @@ export class LocationEntityProcessor implements CatalogProcessor { location, maybeRelativeTarget, ); - emit(result.location({ type, target }, false)); + emit(result.location({ type, target })); } } diff --git a/plugins/catalog-backend/src/ingestion/processors/StaticLocationProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/StaticLocationProcessor.ts index a4bd8b5afa..c23c14bac9 100644 --- a/plugins/catalog-backend/src/ingestion/processors/StaticLocationProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/StaticLocationProcessor.ts @@ -48,7 +48,7 @@ export class StaticLocationProcessor implements StaticLocationProcessor { } for (const staticLocation of this.staticLocations) { - emit(result.location(staticLocation, false)); + emit(result.location(staticLocation)); } return true; diff --git a/plugins/catalog-backend/src/ingestion/processors/bitbucket/BitbucketRepositoryParser.test.ts b/plugins/catalog-backend/src/ingestion/processors/bitbucket/BitbucketRepositoryParser.test.ts index 397d259bae..35e24ed4cb 100644 --- a/plugins/catalog-backend/src/ingestion/processors/bitbucket/BitbucketRepositoryParser.test.ts +++ b/plugins/catalog-backend/src/ingestion/processors/bitbucket/BitbucketRepositoryParser.test.ts @@ -25,14 +25,11 @@ describe('BitbucketRepositoryParser', () => { 'https://bitbucket.mycompany.com/projects/project-key/repos/repo-slug/browse'; const path = '/catalog-info.yaml'; const expected = [ - results.location( - { - type: 'url', - target: `${browseUrl}${path}`, - presence: 'optional', - }, - true, - ), + results.location({ + type: 'url', + target: `${browseUrl}${path}`, + presence: 'optional', + }), ]; const actual = await defaultRepositoryParser({ integration: {} as BitbucketIntegration, diff --git a/plugins/catalog-backend/src/ingestion/processors/bitbucket/BitbucketRepositoryParser.ts b/plugins/catalog-backend/src/ingestion/processors/bitbucket/BitbucketRepositoryParser.ts index 34a9284b3e..3407fae16a 100644 --- a/plugins/catalog-backend/src/ingestion/processors/bitbucket/BitbucketRepositoryParser.ts +++ b/plugins/catalog-backend/src/ingestion/processors/bitbucket/BitbucketRepositoryParser.ts @@ -26,15 +26,12 @@ export type BitbucketRepositoryParser = (options: { export const defaultRepositoryParser: BitbucketRepositoryParser = async function* defaultRepositoryParser({ target }) { - yield results.location( - { - type: 'url', - target: target, - presence: 'optional', - }, + yield results.location({ + type: 'url', + target: target, // Not all locations may actually exist, since the user defined them as a wildcard pattern. // Thus, we emit them as optional and let the downstream processor find them while not outputting // an error if it couldn't. - true, - ); + presence: 'optional', + }); }; diff --git a/plugins/catalog-backend/src/ingestion/processors/results.ts b/plugins/catalog-backend/src/ingestion/processors/results.ts index 5b6f07bae4..5401f9c933 100644 --- a/plugins/catalog-backend/src/ingestion/processors/results.ts +++ b/plugins/catalog-backend/src/ingestion/processors/results.ts @@ -53,7 +53,7 @@ export function generalError( export function location( newLocation: LocationSpec, - optional: boolean, + optional?: boolean, ): CatalogProcessorResult { return { type: 'location', location: newLocation, optional }; } diff --git a/plugins/catalog-backend/src/ingestion/processors/types.ts b/plugins/catalog-backend/src/ingestion/processors/types.ts index b011281d55..722df42a04 100644 --- a/plugins/catalog-backend/src/ingestion/processors/types.ts +++ b/plugins/catalog-backend/src/ingestion/processors/types.ts @@ -158,7 +158,8 @@ export type CatalogProcessorEmit = (generated: CatalogProcessorResult) => void; export type CatalogProcessorLocationResult = { type: 'location'; location: LocationSpec; - optional: boolean; + /** @deprecated Set `location.presence = 'optional'` instead */ + optional?: boolean; }; export type CatalogProcessorEntityResult = { From 78bff9f4c6e348ef19824680546e4101eb9dd420 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Thu, 17 Feb 2022 17:53:04 +0100 Subject: [PATCH 219/383] docs/publishing: minor tweak to master commit creation flow Signed-off-by: Patrik Oldsberg --- docs/publishing.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/publishing.md b/docs/publishing.md index 2951f7d30b..fbbef93493 100644 --- a/docs/publishing.md +++ b/docs/publishing.md @@ -65,8 +65,8 @@ process is used to release an emergency fix as version `6.5.1` in the patch rele master branch as well. Create a PR that contains the following: - [ ] The fix, which you can likely cherry-pick from your patch branch: `git cherry-pick origin/patch/v1.18.0^` - - [ ] An updated `CHANGELOG.md` of all patched patches from the tip of the patch branch, which you can get using `git checkout origin/patch/v1.18.0 -- plugins/foo/CHANGELOG.md`. - - [ ] A changeset with the message "Applied the fix from version `6.5.1` of this package, which is part of the `v1.18.1` release of Backstage.", + - [ ] An updated `CHANGELOG.md` of all patched packages from the tip of the patch branch, `git checkout origin/patch/v1.18.0 -- {packages,plugins}/*/CHANGELOG.md`. + - [ ] A changeset with the message "Applied the fix from version `6.5.1` of this package, which is part of the `v1.18.1` release of Backstage." - [ ] An entry in `.changeset/patched.json` that sets the current release version to `6.5.1`: ```json From 630340287f27fd7e9dfc8a1b8bd8cbe5418b27f9 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Thu, 17 Feb 2022 18:27:48 +0100 Subject: [PATCH 220/383] integration,catalog-backend: tweak changesets to make vale happy Signed-off-by: Patrik Oldsberg --- packages/integration/CHANGELOG.md | 2 +- plugins/catalog-backend/CHANGELOG.md | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/packages/integration/CHANGELOG.md b/packages/integration/CHANGELOG.md index 05147977aa..a809074e68 100644 --- a/packages/integration/CHANGELOG.md +++ b/packages/integration/CHANGELOG.md @@ -221,7 +221,7 @@ - 0fd4ea443: Updates the `GithubCredentialsProvider` to return the token type, it can either be `token` or `app` depending on the authentication method. - Update the `GithubOrgReaderProcessor` NOT to query for email addresses if GitHub Apps is used for authentication, this is due to inconsistencies in the GitHub API when using server to server communications and installation tokens. https://github.community/t/api-v4-unable-to-retrieve-email-resource-not-accessible-by-integration/13831/4 for more info. + Update the `GithubOrgReaderProcessor` NOT to query for email addresses if GitHub Apps is used for authentication, this is due to inconsistencies in the GitHub API when using server to server communications and installation tokens. See [this community discussion](https://github.community/t/api-v4-unable-to-retrieve-email-resource-not-accessible-by-integration/13831/4) for more info. **Removes** deprecated GithubOrgReaderProcessor provider configuration(`catalog.processors.githubOrg`). If you're using the deprecated config section make sure to migrate to [integrations](https://backstage.io/docs/integrations/github/locations) instead. diff --git a/plugins/catalog-backend/CHANGELOG.md b/plugins/catalog-backend/CHANGELOG.md index 524856d4c2..53faaf0739 100644 --- a/plugins/catalog-backend/CHANGELOG.md +++ b/plugins/catalog-backend/CHANGELOG.md @@ -765,16 +765,16 @@ ### Minor Changes -- 8bfc0571c: Add a default catalog value for BitBucketDiscoveryProcessor. This allows to have a target like so: https://bitbucket.mycompany.com/projects/backstage/repos/service-* - which will be expanded to https://bitbucket.mycompany.com/projects/backstage/repos/service-a/catalog-info.yaml given that repository 'service-a' exists. +- 8bfc0571c: Add a default catalog value for BitBucketDiscoveryProcessor. This allows to have a target like so: `https://bitbucket.mycompany.com/projects/backstage/repos/service-*` + which will be expanded to `https://bitbucket.mycompany.com/projects/backstage/repos/service-a/catalog-info.yaml` given that repository 'service-a' exists. ## Migration If you are using a custom [Bitbucket parser](https://backstage.io/docs/integrations/bitbucket/discovery#custom-repository-processing) and your `bitbucket-discovery` target (e.g. in your app-config.yaml) omits the catalog path in any of the following ways: - - https://bitbucket.mycompany.com/projects/backstage/repos/service-* - - https://bitbucket.mycompany.com/projects/backstage/repos/* - - https://bitbucket.mycompany.com/projects/backstage/repos/*/ + - `https://bitbucket.mycompany.com/projects/backstage/repos/service-*` + - `https://bitbucket.mycompany.com/projects/backstage/repos/*` + - `https://bitbucket.mycompany.com/projects/backstage/repos/*/` then you will be affected by this change. The 'target' input to your parser before this commit would be '/', and after this commit it will be '/catalog-info.yaml', and as such needs to be handled to maintain the same functionality. @@ -1092,7 +1092,7 @@ - 0fd4ea443: Updates the `GithubCredentialsProvider` to return the token type, it can either be `token` or `app` depending on the authentication method. - Update the `GithubOrgReaderProcessor` NOT to query for email addresses if GitHub Apps is used for authentication, this is due to inconsistencies in the GitHub API when using server to server communications and installation tokens. https://github.community/t/api-v4-unable-to-retrieve-email-resource-not-accessible-by-integration/13831/4 for more info. + Update the `GithubOrgReaderProcessor` NOT to query for email addresses if GitHub Apps is used for authentication, this is due to inconsistencies in the GitHub API when using server to server communications and installation tokens. See [this community discussion](https://github.community/t/api-v4-unable-to-retrieve-email-resource-not-accessible-by-integration/13831/4) for more info. **Removes** deprecated GithubOrgReaderProcessor provider configuration(`catalog.processors.githubOrg`). If you're using the deprecated config section make sure to migrate to [integrations](https://backstage.io/docs/integrations/github/locations) instead. From dda3f42dddd9f8e9068ef251bc08ae355869ddcc Mon Sep 17 00:00:00 2001 From: kim5566 <28945404+kim5566@users.noreply.github.com> Date: Fri, 18 Feb 2022 07:02:46 +1100 Subject: [PATCH 221/383] updated to config as func Signed-off-by: kim5566 <28945404+kim5566@users.noreply.github.com> --- .changeset/mean-pumpkins-search.md | 22 ++++- plugins/todo-backend/api-report.md | 1 + .../src/lib/TodoReader/TodoScmReader.test.ts | 80 ++++++++++++------- .../src/lib/TodoReader/TodoScmReader.ts | 18 +++-- 4 files changed, 85 insertions(+), 36 deletions(-) diff --git a/.changeset/mean-pumpkins-search.md b/.changeset/mean-pumpkins-search.md index 78a92ff5eb..ddaea98b9e 100644 --- a/.changeset/mean-pumpkins-search.md +++ b/.changeset/mean-pumpkins-search.md @@ -2,4 +2,24 @@ '@backstage/plugin-todo-backend': patch --- -Add support to exclude vendor folder in `todo` plugin. +Add support to exclude certain folders in `todo` plugin. + +You can add function by configuring your own exclusion logic, for example: + +```ts +import { + TodoScmReader, + createTodoParser, +} from '@backstage/plugin-todo-backend'; + +// ... + +const todoReader = TodoScmReader.fromConfig(config, { + logger, + reader, + filePathFilter: (filePath: string): boolean => { + ... + YOUR LOGIC HERE + }, +}); +``` diff --git a/plugins/todo-backend/api-report.md b/plugins/todo-backend/api-report.md index ac8b2ce957..84ebc88299 100644 --- a/plugins/todo-backend/api-report.md +++ b/plugins/todo-backend/api-report.md @@ -131,6 +131,7 @@ export type TodoScmReaderOptions = { reader: UrlReader; integrations: ScmIntegrations; parser?: TodoParser; + filePathFilter?: (path: string) => boolean; }; // @public (undocumented) diff --git a/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.test.ts b/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.test.ts index 0036e748ff..1ca836162e 100644 --- a/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.test.ts +++ b/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.test.ts @@ -190,23 +190,18 @@ describe('TodoScmReader', () => { ); }); - it('should filter out exclude folders', async () => { + it('should not filter out exclude folders', async () => { const reader = mockReader(); + const filePathFilter = jest.fn(() => true); + const todoReader = new TodoScmReader({ logger: getVoidLogger(), reader, integrations: ScmIntegrations.fromConfig(new ConfigReader({})), + filePathFilter, }); reader.readTree.mockResolvedValueOnce({ files: async () => [ - { - content: async () => Buffer.from('// TODO: my-todo', 'utf8'), - path: 'vendor/another-file.go', - }, - { - content: async () => Buffer.from('// TODO: my-todo', 'utf8'), - path: 'test/vendor/another-file.go', - }, { content: async () => Buffer.from('// TODO: my-todo', 'utf8'), path: 'my-folder/my-file.js', @@ -219,22 +214,6 @@ describe('TodoScmReader', () => { }), ).resolves.toEqual({ items: [ - { - text: 'my-todo', - tag: 'TODO', - lineNumber: 1, - repoFilePath: 'vendor/another-file.go', - viewUrl: - 'https://github.com/backstage/backstage/vendor/another-file.go#L1', - }, - { - text: 'my-todo', - tag: 'TODO', - lineNumber: 1, - repoFilePath: 'test/vendor/another-file.go', - viewUrl: - 'https://github.com/backstage/backstage/test/vendor/another-file.go#L1', - }, { text: 'my-todo', tag: 'TODO', @@ -255,10 +234,55 @@ describe('TodoScmReader', () => { ); // Filter function should filter out exclude folders const filterFunc = reader.readTree.mock.calls[0][1]!.filter!; - expect(filterFunc('another-file.go')).toBe(true); - expect(filterFunc('vendor/another-file.go')).toBe(false); - expect(filterFunc('test/vendor/another-file.go')).toBe(false); expect(filterFunc('my-file.js')).toBe(true); expect(filterFunc('my-folder/my-file.js')).toBe(true); }); + + it('should filter out exclude folders', async () => { + const reader = mockReader(); + const filePathFilter = jest.fn(() => false); + + const todoReader = new TodoScmReader({ + logger: getVoidLogger(), + reader, + integrations: ScmIntegrations.fromConfig(new ConfigReader({})), + filePathFilter, + }); + reader.readTree.mockResolvedValueOnce({ + files: async () => [ + { + content: async () => Buffer.from('// TODO: my-todo', 'utf8'), + path: 'my-folder/my-file.js', + }, + ], + } as ReadTreeResponse); + await expect( + todoReader.readTodos({ + url: 'https://github.com/backstage/backstage/catalog-info.yaml', + }), + ).resolves.toEqual({ + items: [ + { + text: 'my-todo', + tag: 'TODO', + lineNumber: 1, + repoFilePath: 'my-folder/my-file.js', + viewUrl: + 'https://github.com/backstage/backstage/my-folder/my-file.js#L1', + }, + ], + }); + expect(reader.readTree).toHaveBeenCalledTimes(1); + expect(reader.readTree).toHaveBeenCalledWith( + 'https://github.com/backstage/backstage/catalog-info.yaml', + { + etag: undefined, + filter: expect.any(Function), + }, + ); + // Filter function should filter out exclude folders + const filterFunc = reader.readTree.mock.calls[0][1]!.filter!; + expect(filterFunc('my-file.js')).toBe(false); + expect(filterFunc('my-folder/my-file.js')).toBe(false); + }); }); diff --git a/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.ts b/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.ts index ade15343d5..9514a8a2cf 100644 --- a/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.ts +++ b/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.ts @@ -41,14 +41,13 @@ const excludedExtensions = [ ]; const MAX_FILE_SIZE = 200000; -const excludeFolders = ['vendor']; - /** @public */ export type TodoScmReaderOptions = { logger: Logger; reader: UrlReader; integrations: ScmIntegrations; parser?: TodoParser; + filePathFilter?: (filePath: string) => boolean; }; type CacheItem = { @@ -62,6 +61,7 @@ export class TodoScmReader implements TodoReader { private readonly reader: UrlReader; private readonly parser: TodoParser; private readonly integrations: ScmIntegrations; + private readonly filePathFilter: (filePath: string) => boolean; private readonly cache = new Map(); private readonly inFlightReads = new Map>(); @@ -81,6 +81,7 @@ export class TodoScmReader implements TodoReader { this.reader = options.reader; this.parser = options.parser ?? createTodoParser(); this.integrations = options.integrations; + this.filePathFilter = options.filePathFilter ?? (() => true); } async readTodos(options: ReadTodosOptions): Promise { @@ -91,7 +92,12 @@ export class TodoScmReader implements TodoReader { } const cacheItem = this.cache.get(url); - const newRead = this.doReadTodos({ url }, cacheItem?.etag).catch(error => { + const filePathFilter = this.filePathFilter; + const newRead = this.doReadTodos( + { url }, + filePathFilter, + cacheItem?.etag, + ).catch(error => { if (cacheItem && error.name === 'NotModifiedError') { return cacheItem; } @@ -110,13 +116,11 @@ export class TodoScmReader implements TodoReader { private async doReadTodos( options: ReadTodosOptions, + filePathFilter: (filePath: string) => boolean, etag?: string, ): Promise { const { url } = options; - const filePathFilter = (filePath: string): boolean => { - const splitPath = filePath.split('/'); - return !excludeFolders.some(r => splitPath.includes(r)); - }; + const tree = await this.reader.readTree(url, { etag, filter(filePath, info) { From 31b3a63347c778852a34666df4bfbf77798af18d Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Thu, 17 Feb 2022 21:13:07 +0100 Subject: [PATCH 222/383] scripts/create-github-release: prefer listPullRequestsAssociatedWithCommit Signed-off-by: Patrik Oldsberg --- scripts/create-github-release.js | 70 ++++++++++++++++++++------------ 1 file changed, 43 insertions(+), 27 deletions(-) diff --git a/scripts/create-github-release.js b/scripts/create-github-release.js index f25c6838fb..4b3891c5ce 100755 --- a/scripts/create-github-release.js +++ b/scripts/create-github-release.js @@ -63,7 +63,7 @@ const octokit = new Octokit({ }); // Get the message of the commit responsible for a tag -async function getCommitMessageUsingTagName(tagName) { +async function getCommitUsingTagName(tagName) { // Get the tag SHA using the provided tag name const refData = await octokit.git.getRef({ owner: GH_OWNER, @@ -114,39 +114,57 @@ async function getCommitMessageUsingTagName(tagName) { // Example Commit Message // Merge pull request #3555 from backstage/changeset-release/master Version Packages - return commitData.data.message; + return { sha: commitSha, message: commitData.data.message }; } // There is a PR number in our expected commit message. Get the description of that PR. -async function getReleaseDescriptionFromCommitMessage(commitMessage) { - // It should exactly match the pattern of changeset commit message, or else will abort. - const expectedMessage = RegExp(EXPECTED_COMMIT_MESSAGE); - if (!expectedMessage.test(commitMessage)) { - throw new Error( - `Expected regex did not match commit message: ${commitMessage}`, +async function getReleaseDescriptionFromCommit(commit) { + let pullRequestBody = undefined; + + const { data: pullRequests } = + await octokit.repos.listPullRequestsAssociatedWithCommit({ + owner: GH_OWNER, + repo: GH_REPO, + commit_sha: commit.sha, + }); + if (pullRequests.length === 1) { + pullRequestBody = pullRequests[0].body; + } else { + console.warn( + `Found ${pullRequests.length} pull requests for commit ${commit.sha}, falling back to parsing commit message`, ); + + // It should exactly match the pattern of changeset commit message, or else will abort. + const expectedMessage = RegExp(EXPECTED_COMMIT_MESSAGE); + if (!expectedMessage.test(commit.message)) { + throw new Error( + `Expected regex did not match commit message: ${commit.message}`, + ); + } + + // Get the PR description from the commit message + const prNumber = commit.message.match(expectedMessage).groups.prNumber; + console.log( + `Identified the changeset Pull request - https://github.com/backstage/backstage/pull/${prNumber}`, + ); + + const { data } = await octokit.pulls.get({ + owner: GH_OWNER, + repo: GH_REPO, + pull_number: prNumber, + }); + + pullRequestBody = data.body; } - // Get the PR description from the commit message - const prNumber = commitMessage.match(expectedMessage).groups.prNumber; - console.log( - `Identified the changeset Pull request - https://github.com/backstage/backstage/pull/${prNumber}`, - ); - - const { data } = await octokit.pulls.get({ - owner: GH_OWNER, - repo: GH_REPO, - pull_number: prNumber, - }); - // Use the PR description to prepare for the release description - const isChangesetRelease = commitMessage.includes(CHANGESET_RELEASE_BRANCH); + const isChangesetRelease = commit.message.includes(CHANGESET_RELEASE_BRANCH); if (isChangesetRelease) { - const lines = data.body.split('\n'); + const lines = pullRequestBody.split('\n'); return lines.slice(lines.indexOf('# Releases') + 1).join('\n'); } - return data.body; + return pullRequestBody; } // Create Release on GitHub. @@ -179,10 +197,8 @@ async function createRelease(releaseDescription) { } async function main() { - const commitMessage = await getCommitMessageUsingTagName(TAG_NAME); - const releaseDescription = await getReleaseDescriptionFromCommitMessage( - commitMessage, - ); + const commit = await getCommitUsingTagName(TAG_NAME); + const releaseDescription = await getReleaseDescriptionFromCommit(commit); await createRelease(releaseDescription); } From bdab94f276122297a43c53c188cd2694a2d6507b Mon Sep 17 00:00:00 2001 From: kim5566 <28945404+kim5566@users.noreply.github.com> Date: Fri, 18 Feb 2022 07:17:19 +1100 Subject: [PATCH 223/383] updated api-report.md Signed-off-by: kim5566 <28945404+kim5566@users.noreply.github.com> --- plugins/todo-backend/api-report.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/todo-backend/api-report.md b/plugins/todo-backend/api-report.md index 84ebc88299..71094e03f8 100644 --- a/plugins/todo-backend/api-report.md +++ b/plugins/todo-backend/api-report.md @@ -131,7 +131,7 @@ export type TodoScmReaderOptions = { reader: UrlReader; integrations: ScmIntegrations; parser?: TodoParser; - filePathFilter?: (path: string) => boolean; + filePathFilter?: (filePath: string) => boolean; }; // @public (undocumented) From 10a3cbf4218eb58a9869769ee78f8cb4b4d8472f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 18 Feb 2022 04:12:13 +0000 Subject: [PATCH 224/383] chore(deps): bump @types/webpack-env from 1.16.0 to 1.16.3 Bumps [@types/webpack-env](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/webpack-env) from 1.16.0 to 1.16.3. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/webpack-env) --- updated-dependencies: - dependency-name: "@types/webpack-env" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- yarn.lock | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/yarn.lock b/yarn.lock index 3fe8543023..66e34a2592 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6245,12 +6245,7 @@ "@types/expect" "^1.20.4" "@types/node" "*" -"@types/webpack-env@^1.15.2": - version "1.16.0" - resolved "https://registry.npmjs.org/@types/webpack-env/-/webpack-env-1.16.0.tgz#8c0a9435dfa7b3b1be76562f3070efb3f92637b4" - integrity sha512-Fx+NpfOO0CpeYX2g9bkvX8O5qh9wrU1sOF4g8sft4Mu7z+qfe387YlyY8w8daDyDsKY5vUxM0yxkAYnbkRbZEw== - -"@types/webpack-env@^1.15.3": +"@types/webpack-env@^1.15.2", "@types/webpack-env@^1.15.3": version "1.16.3" resolved "https://registry.npmjs.org/@types/webpack-env/-/webpack-env-1.16.3.tgz#b776327a73e561b71e7881d0cd6d34a1424db86a" integrity sha512-9gtOPPkfyNoEqCQgx4qJKkuNm/x0R2hKR7fdl7zvTJyHnIisuE/LfvXOsYWL0o3qq6uiBnKZNNNzi3l0y/X+xw== From d2e9d2a34fc94a079e0ce5234e6bc3a5f7b85713 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 18 Feb 2022 04:18:52 +0000 Subject: [PATCH 225/383] chore(deps): bump @hot-loader/react-dom from 16.13.0 to 17.0.2 Bumps [@hot-loader/react-dom](https://github.com/hot-loader/react-dom) from 16.13.0 to 17.0.2. - [Release notes](https://github.com/hot-loader/react-dom/releases) - [Commits](https://github.com/hot-loader/react-dom/commits) --- updated-dependencies: - dependency-name: "@hot-loader/react-dom" dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .changeset/dependabot-ff26237.md | 5 +++++ packages/cli/package.json | 2 +- yarn.lock | 13 ++++++------- 3 files changed, 12 insertions(+), 8 deletions(-) create mode 100644 .changeset/dependabot-ff26237.md diff --git a/.changeset/dependabot-ff26237.md b/.changeset/dependabot-ff26237.md new file mode 100644 index 0000000000..e390ef12b5 --- /dev/null +++ b/.changeset/dependabot-ff26237.md @@ -0,0 +1,5 @@ +--- +'@backstage/cli': patch +--- + +chore(deps): bump `@hot-loader/react-dom` from 16.13.0 to 17.0.2 diff --git a/packages/cli/package.json b/packages/cli/package.json index 0f80d710d5..b340e87e05 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -37,7 +37,7 @@ "@backstage/errors": "^0.2.1", "@backstage/release-manifests": "^0.0.2", "@backstage/types": "^0.1.2", - "@hot-loader/react-dom": "^16.13.0", + "@hot-loader/react-dom": "^17.0.2", "@manypkg/get-packages": "^1.1.3", "@octokit/request": "^5.4.12", "@rollup/plugin-commonjs": "^21.0.1", diff --git a/yarn.lock b/yarn.lock index 3fe8543023..aecffa6c92 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2498,15 +2498,14 @@ dependencies: "@hapi/hoek" "^9.0.0" -"@hot-loader/react-dom@^16.13.0": - version "16.13.0" - resolved "https://registry.npmjs.org/@hot-loader/react-dom/-/react-dom-16.13.0.tgz#de245b42358110baf80aaf47a0592153d4047997" - integrity sha512-lJZrmkucz2MrQJTQtJobx5MICXcfQvKihszqv655p557HPi0hMOWxrNpiHv3DWD8ugNWjtWcVWqRnFvwsHq1mQ== +"@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" - prop-types "^15.6.2" - scheduler "^0.19.0" + scheduler "^0.20.2" "@humanwhocodes/config-array@^0.9.2": version "0.9.2" @@ -21438,7 +21437,7 @@ saxes@^5.0.0, saxes@^5.0.1: dependencies: xmlchars "^2.2.0" -scheduler@^0.19.0, scheduler@^0.19.1: +scheduler@^0.19.1: version "0.19.1" resolved "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz#4f3e2ed2c1a7d65681f4c854fa8c5a1ccb40f196" integrity sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA== From 306c366fc9458846d42bbf54b21a63ed4bebaaf6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 18 Feb 2022 04:21:08 +0000 Subject: [PATCH 226/383] chore(deps): bump @asyncapi/react-component Bumps [@asyncapi/react-component](https://github.com/asyncapi/asyncapi-react) from 1.0.0-next.32 to 1.0.0-next.33. - [Release notes](https://github.com/asyncapi/asyncapi-react/releases) - [Commits](https://github.com/asyncapi/asyncapi-react/compare/v1.0.0-next.32...v1.0.0-next.33) --- updated-dependencies: - dependency-name: "@asyncapi/react-component" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .changeset/dependabot-9b1dde3.md | 5 +++++ plugins/api-docs/package.json | 2 +- yarn.lock | 35 ++++++++++++++------------------ 3 files changed, 21 insertions(+), 21 deletions(-) create mode 100644 .changeset/dependabot-9b1dde3.md diff --git a/.changeset/dependabot-9b1dde3.md b/.changeset/dependabot-9b1dde3.md new file mode 100644 index 0000000000..6c4a0a030c --- /dev/null +++ b/.changeset/dependabot-9b1dde3.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-api-docs': patch +--- + +chore(deps): bump `@asyncapi/react-component` diff --git a/plugins/api-docs/package.json b/plugins/api-docs/package.json index 7c61c65423..6a6432ea03 100644 --- a/plugins/api-docs/package.json +++ b/plugins/api-docs/package.json @@ -33,7 +33,7 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@asyncapi/react-component": "1.0.0-next.32", + "@asyncapi/react-component": "1.0.0-next.33", "@backstage/catalog-model": "^0.10.0", "@backstage/core-components": "^0.8.9", "@backstage/core-plugin-api": "^0.6.1", diff --git a/yarn.lock b/yarn.lock index 3fe8543023..ad3877cfe8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -68,13 +68,13 @@ dependencies: "@openapi-contrib/openapi-schema-to-json-schema" "^3.0.0" -"@asyncapi/parser@^1.13.0": - version "1.13.0" - resolved "https://registry.npmjs.org/@asyncapi/parser/-/parser-1.13.0.tgz#bc20d53ba870ead9d26d5a4e3a838c5765ba8d4c" - integrity sha512-UnTYSjx2Sc+VKWIIeIV5I+ogFbN5iWzNgx1UgTXQ5oPhtNlsdIkF+w7qV8GyiraaKbBqAuwepv4xbBvlEi8hkw== +"@asyncapi/parser@^1.14.0": + version "1.14.1" + resolved "https://registry.npmjs.org/@asyncapi/parser/-/parser-1.14.1.tgz#2f474f9d5ba1ce5b144e487fd956c0809ab11a9e" + integrity sha512-ZsNQc/HXmGDrxkYBRrGou/JrWn+FLHYdQQI0WPOylSL+LNfaWtLlIcYwbcj61l+jLLFqIe0DK/yZbmjxm0ydqw== dependencies: "@apidevtools/json-schema-ref-parser" "^9.0.6" - "@asyncapi/specs" "^2.11.0" + "@asyncapi/specs" "^2.13.0" "@fmvilas/pseudo-yaml-ast" "^0.3.1" ajv "^6.10.1" js-yaml "^3.13.1" @@ -83,24 +83,24 @@ node-fetch "^2.6.0" tiny-merge-patch "^0.1.2" -"@asyncapi/react-component@1.0.0-next.32": - version "1.0.0-next.32" - resolved "https://registry.npmjs.org/@asyncapi/react-component/-/react-component-1.0.0-next.32.tgz#ccb99466b1b6cfd3e789cf3cead5e35ba26b5687" - integrity sha512-hUmLc8YCEhLsBdO+w3eoqFTtR0IZN3isNvgy7xL1WuYBXHNkB9DAhB7mnogLFUmcuLH6xAQnC/Li6CKtgIxaGw== +"@asyncapi/react-component@1.0.0-next.33": + version "1.0.0-next.33" + resolved "https://registry.npmjs.org/@asyncapi/react-component/-/react-component-1.0.0-next.33.tgz#13bc0327ceb818753dbe1fef99a570dd77b8fe6b" + integrity sha512-3uUvOOimgqtqowGb+h73PvGKEgCMykEVxMQWHye/NH/+yDivelj6gX9mprGZQL3pWG2CVsUyPUd0vUuCrXOzcg== dependencies: "@asyncapi/avro-schema-parser" "^0.3.0" "@asyncapi/openapi-schema-parser" "^2.0.0" - "@asyncapi/parser" "^1.13.0" + "@asyncapi/parser" "^1.14.0" highlight.js "^10.7.2" isomorphic-dompurify "^0.13.0" marked "^4.0.10" openapi-sampler "^1.1.0" use-resize-observer "^7.0.0" -"@asyncapi/specs@^2.11.0": - version "2.12.0" - resolved "https://registry.npmjs.org/@asyncapi/specs/-/specs-2.12.0.tgz#15534ca9e518b561d33edfdfdbb234f9b274f261" - integrity sha512-X4Xkrl+9WXSk5EJhsueIxNx6ymHI5wpkw4ofetV+VRnPLNob/XO4trPSJClrL5hlknxbGADLvlrkI5d3XJ996g== +"@asyncapi/specs@^2.13.0": + version "2.13.0" + resolved "https://registry.npmjs.org/@asyncapi/specs/-/specs-2.13.0.tgz#c0f46d00e8a67c1c9ea445eb3e8bca90f7dca795" + integrity sha512-X0OrxJtzwRH8iLILO/gUTDqjGVPmagmdlgdyuBggYAoGXzF6ZuAws3XCLxtPNve5eA/0V/1puwpUYEGekI22og== "@azure/abort-controller@^1.0.0": version "1.0.2" @@ -13194,12 +13194,7 @@ hexoid@1.0.0: resolved "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz#ad10c6573fb907de23d9ec63a711267d9dc9bc18" integrity sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g== -highlight.js@^10.1.0, highlight.js@^10.4.1, highlight.js@^10.6.0: - version "10.7.2" - resolved "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.2.tgz#89319b861edc66c48854ed1e6da21ea89f847360" - integrity sha512-oFLl873u4usRM9K63j4ME9u3etNF0PLiJhSQ8rdfuL51Wn3zkD6drf9ZW0dOzjnZI22YYG24z30JcmfCZjMgYg== - -highlight.js@^10.7.2, highlight.js@~10.7.0: +highlight.js@^10.1.0, highlight.js@^10.4.1, highlight.js@^10.6.0, highlight.js@^10.7.2, highlight.js@~10.7.0: version "10.7.3" resolved "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz#697272e3991356e40c3cac566a74eef681756531" integrity sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A== From 51e655bdac4afea1044ea96ec185da1f2285057f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 18 Feb 2022 04:23:34 +0000 Subject: [PATCH 227/383] chore(deps-dev): bump canvas from 2.8.0 to 2.9.0 Bumps [canvas](https://github.com/Automattic/node-canvas) from 2.8.0 to 2.9.0. - [Release notes](https://github.com/Automattic/node-canvas/releases) - [Changelog](https://github.com/Automattic/node-canvas/blob/master/CHANGELOG.md) - [Commits](https://github.com/Automattic/node-canvas/compare/v2.8.0...v2.9.0) --- updated-dependencies: - dependency-name: canvas dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- yarn.lock | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/yarn.lock b/yarn.lock index 3fe8543023..428223a5ae 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8210,12 +8210,12 @@ caniuse-lite@^1.0.30001286: integrity sha512-WfrtPEoNSoeATDlf4y3QvkwiELl9GyPLISV5GejTbbQRtQx4LhsXmc9IQ6XCL2d7UxCyEzToEZNMeqR79OUw8Q== canvas@^2.6.1: - version "2.8.0" - resolved "https://registry.npmjs.org/canvas/-/canvas-2.8.0.tgz#f99ca7f25e6e26686661ffa4fec1239bbef74461" - integrity sha512-gLTi17X8WY9Cf5GZ2Yns8T5lfBOcGgFehDFb+JQwDqdOoBOcECS9ZWMEAqMSVcMYwXD659J8NyzjRY/2aE+C2Q== + version "2.9.0" + resolved "https://registry.npmjs.org/canvas/-/canvas-2.9.0.tgz#7df0400b141a7e42e597824f377935ba96880f2a" + integrity sha512-0l93g7uxp7rMyr7H+XRQ28A3ud0dKIUTIEkUe1Dxh4rjUYN7B93+SjC3r1PDKA18xcQN87OFGgUnyw7LSgNLSQ== dependencies: "@mapbox/node-pre-gyp" "^1.0.0" - nan "^2.14.0" + nan "^2.15.0" simple-get "^3.0.3" capital-case@^1.0.4: @@ -17513,11 +17513,6 @@ named-placeholders@^1.1.2: dependencies: lru-cache "^4.1.3" -nan@^2.14.0: - version "2.14.1" - resolved "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01" - integrity sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw== - nan@^2.14.1, nan@^2.15.0: version "2.15.0" resolved "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz#3f34a473ff18e15c1b5626b62903b5ad6e665fee" From 2919d2721696251cd4fd8add13e599d7e98c4111 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 18 Feb 2022 04:39:28 +0000 Subject: [PATCH 228/383] chore(deps-dev): bump storybook-dark-mode in /storybook Bumps [storybook-dark-mode](https://github.com/hipstersmoothie/storybook-dark-mode) from 1.0.8 to 1.0.9. - [Release notes](https://github.com/hipstersmoothie/storybook-dark-mode/releases) - [Changelog](https://github.com/hipstersmoothie/storybook-dark-mode/blob/master/CHANGELOG.md) - [Commits](https://github.com/hipstersmoothie/storybook-dark-mode/compare/v1.0.8...v1.0.9) --- updated-dependencies: - dependency-name: storybook-dark-mode dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- storybook/package.json | 2 +- storybook/yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/storybook/package.json b/storybook/package.json index 5a3437f697..d4ef3861d7 100644 --- a/storybook/package.json +++ b/storybook/package.json @@ -21,7 +21,7 @@ "@storybook/addon-storysource": "^6.4.19", "@storybook/addons": "^6.4.19", "@storybook/react": "^6.4.19", - "storybook-dark-mode": "^1.0.8" + "storybook-dark-mode": "^1.0.9" }, "peerDependencies": { "@backstage/theme": "link:../packages/theme", diff --git a/storybook/yarn.lock b/storybook/yarn.lock index 94f7e109ae..c53f5fe7be 100644 --- a/storybook/yarn.lock +++ b/storybook/yarn.lock @@ -7859,10 +7859,10 @@ store2@^2.12.0: resolved "https://registry.npmjs.org/store2/-/store2-2.13.1.tgz#fae7b5bb9d35fc53dc61cd262df3abb2f6e59022" integrity sha512-iJtHSGmNgAUx0b/MCS6ASGxb//hGrHHRgzvN+K5bvkBTN7A9RTpPSf1WSp+nPGvWCJ1jRnvY7MKnuqfoi3OEqg== -storybook-dark-mode@^1.0.8: - version "1.0.8" - resolved "https://registry.npmjs.org/storybook-dark-mode/-/storybook-dark-mode-1.0.8.tgz#bbd64b382fd62d38685fdd769e2cac4e32ec293d" - integrity sha512-uY6yTSd1vYE0YwlON50u+iIoNF/fmMj59ww1cpd/naUcmOmCjwawViKFG5YjichwdR/yJ5ybWRUF0tnRQfaSiw== +storybook-dark-mode@^1.0.9: + version "1.0.9" + resolved "https://registry.npmjs.org/storybook-dark-mode/-/storybook-dark-mode-1.0.9.tgz#40c15aa340bc700df2fb4f1345250e6fdace0b3a" + integrity sha512-ITPXM2OSaga1zM5blpZy5HxMWAhrAqYi9aJtLgRtSdgoRrxVNAInDRD14TjmObdgLHNWxINoNbnEB+sKETa+iw== dependencies: fast-deep-equal "^3.0.0" memoizerific "^1.11.3" From 793be72b35ac62fb9229f387dff87318a96f4acd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 18 Feb 2022 04:40:32 +0000 Subject: [PATCH 229/383] chore(deps): bump express from 4.17.2 to 4.17.3 Bumps [express](https://github.com/expressjs/express) from 4.17.2 to 4.17.3. - [Release notes](https://github.com/expressjs/express/releases) - [Changelog](https://github.com/expressjs/express/blob/master/History.md) - [Commits](https://github.com/expressjs/express/compare/4.17.2...4.17.3) --- updated-dependencies: - dependency-name: express dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- yarn.lock | 86 ++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 53 insertions(+), 33 deletions(-) diff --git a/yarn.lock b/yarn.lock index 3fe8543023..bcc2dd41d8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6647,13 +6647,13 @@ abstract-logging@^2.0.0: resolved "https://registry.npmjs.org/abstract-logging/-/abstract-logging-2.0.0.tgz#08a85814946c98ef06f4256ad470aba1886d4490" integrity sha512-/oA9z7JszpIioo6J6dB79LVUgJ3eD3cxkAmdCkvWWS+Y9tPtALs1rLqOekLUXUbYqM2fB9TTK0ibAyZJJOP/CA== -accepts@^1.3.5, accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: - version "1.3.7" - resolved "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" - integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== +accepts@^1.3.5, accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: + version "1.3.8" + resolved "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== dependencies: - mime-types "~2.1.24" - negotiator "0.6.2" + mime-types "~2.1.34" + negotiator "0.6.3" acorn-globals@^6.0.0: version "6.0.0" @@ -7762,20 +7762,20 @@ bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.11.9: resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== -body-parser@1.19.1, body-parser@^1.19.0: - version "1.19.1" - resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.19.1.tgz#1499abbaa9274af3ecc9f6f10396c995943e31d4" - integrity sha512-8ljfQi5eBk8EJfECMrgqNGWPEY5jWP+1IzkzkGdFFEwFQZZyaZ21UqdaHktgiMlH0xLHqIFtE/u2OYE5dOtViA== +body-parser@1.19.2, body-parser@^1.19.0: + version "1.19.2" + resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.19.2.tgz#4714ccd9c157d44797b8b5607d72c0b89952f26e" + integrity sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw== dependencies: - bytes "3.1.1" + bytes "3.1.2" content-type "~1.0.4" debug "2.6.9" depd "~1.1.2" http-errors "1.8.1" iconv-lite "0.4.24" on-finished "~2.3.0" - qs "6.9.6" - raw-body "2.4.2" + qs "6.9.7" + raw-body "2.4.3" type-is "~1.6.18" bonjour@^3.5.0: @@ -8049,6 +8049,11 @@ bytes@3.1.1: resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.1.tgz#3f018291cb4cbad9accb6e6970bca9c8889e879a" integrity sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg== +bytes@3.1.2: + version "3.1.2" + resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== + cacache@^15.0.3, cacache@^15.0.5, cacache@^15.2.0, cacache@^15.3.0: version "15.3.0" resolved "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz#dc85380fb2f556fe3dda4c719bfa0ec875a7f1eb" @@ -9150,11 +9155,16 @@ cookie@0.4.0: resolved "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== -cookie@0.4.1, cookie@^0.4.1, cookie@~0.4.1: +cookie@0.4.1: version "0.4.1" resolved "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz#afd713fe26ebd21ba95ceb61f9a8116e50a537d1" integrity sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA== +cookie@0.4.2, cookie@^0.4.1, cookie@~0.4.1: + version "0.4.2" + resolved "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" + integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== + cookiejar@^2.1.3: version "2.1.3" resolved "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.3.tgz#fc7a6216e408e74414b90230050842dacda75acc" @@ -11628,16 +11638,16 @@ express-xml-bodyparser@^0.3.0: xml2js "^0.4.11" express@^4.17.1: - version "4.17.2" - resolved "https://registry.npmjs.org/express/-/express-4.17.2.tgz#c18369f265297319beed4e5558753cc8c1364cb3" - integrity sha512-oxlxJxcQlYwqPWKVJJtvQiwHgosH/LrLSPA+H4UxpyvSS6jC5aH+5MoHFM+KABgTOt0APue4w66Ha8jCUo9QGg== + version "4.17.3" + resolved "https://registry.npmjs.org/express/-/express-4.17.3.tgz#f6c7302194a4fb54271b73a1fe7a06478c8f85a1" + integrity sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg== dependencies: - accepts "~1.3.7" + accepts "~1.3.8" array-flatten "1.1.1" - body-parser "1.19.1" + body-parser "1.19.2" content-disposition "0.5.4" content-type "~1.0.4" - cookie "0.4.1" + cookie "0.4.2" cookie-signature "1.0.6" debug "2.6.9" depd "~1.1.2" @@ -11652,7 +11662,7 @@ express@^4.17.1: parseurl "~1.3.3" path-to-regexp "0.1.7" proxy-addr "~2.0.7" - qs "6.9.6" + qs "6.9.7" range-parser "~1.2.1" safe-buffer "5.2.1" send "0.17.2" @@ -17119,7 +17129,7 @@ mime-types@2.1.18: dependencies: mime-db "~1.33.0" -mime-types@^2.0.8, mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24: +mime-types@^2.0.8, mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34: version "2.1.34" resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz#5a712f9ec1503511a945803640fafe09d3793c24" integrity sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A== @@ -17574,16 +17584,16 @@ natural-compare@^1.4.0: resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= -negotiator@0.6.2, negotiator@^0.6.2: - version "0.6.2" - resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" - integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== - -negotiator@^0.6.3: +negotiator@0.6.3, negotiator@^0.6.3: version "0.6.3" resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== +negotiator@^0.6.2: + version "0.6.2" + resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" + integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== + neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.2: version "2.6.2" resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" @@ -19890,10 +19900,10 @@ qs@6.9.3: resolved "https://registry.npmjs.org/qs/-/qs-6.9.3.tgz#bfadcd296c2d549f1dffa560619132c977f5008e" integrity sha512-EbZYNarm6138UKKq46tdx08Yo/q9ZhFoAXAI1meAFd2GtbRDhbZY2WQSICskT0c5q99aFzLG1D4nvTk9tqfXIw== -qs@6.9.6: - version "6.9.6" - resolved "https://registry.npmjs.org/qs/-/qs-6.9.6.tgz#26ed3c8243a431b2924aca84cc90471f35d5a0ee" - integrity sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ== +qs@6.9.7: + version "6.9.7" + resolved "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz#4610846871485e1e048f44ae3b94033f0e675afe" + integrity sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw== qs@^6.10.1, qs@^6.10.2, qs@^6.9.1, qs@^6.9.4, qs@^6.9.6: version "6.10.3" @@ -19999,7 +20009,17 @@ range-parser@^1.2.1, range-parser@~1.2.1: resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== -raw-body@2.4.2, raw-body@^2.4.1: +raw-body@2.4.3: + version "2.4.3" + resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.4.3.tgz#8f80305d11c2a0a545c2d9d89d7a0286fcead43c" + integrity sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g== + dependencies: + bytes "3.1.2" + http-errors "1.8.1" + iconv-lite "0.4.24" + unpipe "1.0.0" + +raw-body@^2.4.1: version "2.4.2" resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.4.2.tgz#baf3e9c21eebced59dd6533ac872b71f7b61cb32" integrity sha512-RPMAFUJP19WIet/99ngh6Iv8fzAbqum4Li7AD6DtGaW2RpMB/11xDoalPiJMTbu6I3hkbMVkATvZrqb9EEqeeQ== From 49ae6c95734321fdc8179b9a2774e6e9352a238e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 18 Feb 2022 04:42:15 +0000 Subject: [PATCH 230/383] chore(deps-dev): bump @types/rollup-plugin-postcss from 2.0.1 to 3.1.4 Bumps [@types/rollup-plugin-postcss](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/rollup-plugin-postcss) from 2.0.1 to 3.1.4. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/rollup-plugin-postcss) --- updated-dependencies: - dependency-name: "@types/rollup-plugin-postcss" dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .changeset/dependabot-5625654.md | 5 +++++ packages/cli/package.json | 2 +- yarn.lock | 23 +++++++---------------- 3 files changed, 13 insertions(+), 17 deletions(-) create mode 100644 .changeset/dependabot-5625654.md diff --git a/.changeset/dependabot-5625654.md b/.changeset/dependabot-5625654.md new file mode 100644 index 0000000000..b61e198d24 --- /dev/null +++ b/.changeset/dependabot-5625654.md @@ -0,0 +1,5 @@ +--- +'@backstage/cli': patch +--- + +chore(deps-dev): bump `@types/rollup-plugin-postcss` from 2.0.1 to 3.1.4 diff --git a/packages/cli/package.json b/packages/cli/package.json index 0f80d710d5..d6284df688 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -140,7 +140,7 @@ "@types/npm-packlist": "^1.1.2", "@types/recursive-readdir": "^2.2.0", "@types/rollup-plugin-peer-deps-external": "^2.2.0", - "@types/rollup-plugin-postcss": "^2.0.0", + "@types/rollup-plugin-postcss": "^3.1.4", "@types/svgo": "^2.6.2", "@types/tar": "^6.1.1", "@types/terser-webpack-plugin": "^5.0.4", diff --git a/yarn.lock b/yarn.lock index 3fe8543023..7af7dcffcb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5145,13 +5145,6 @@ resolved "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz#6b2c510a7ad7039e98e7b8d3d6598f4359e5c080" integrity sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw== -"@types/cssnano@*": - version "5.0.0" - resolved "https://registry.npmjs.org/@types/cssnano/-/cssnano-5.0.0.tgz#9463679a7f11ea375e0ed4ada46c04de6c908ef0" - integrity sha512-z98V7ICNAojxj9YV9+Q8qV+F7fW0poLWJRjed9tu7KNdYzHwAvLOAsTMI8xWjkOY9yzO+HmMxRRixlIvRsZwXg== - dependencies: - postcss "^8" - "@types/d3-color@*": version "3.0.2" resolved "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.0.2.tgz#53f2d6325f66ee79afd707c05ac849e8ae0edbb0" @@ -6006,14 +5999,12 @@ "@types/node" "*" rollup "^0.63.4" -"@types/rollup-plugin-postcss@^2.0.0": - version "2.0.1" - resolved "https://registry.npmjs.org/@types/rollup-plugin-postcss/-/rollup-plugin-postcss-2.0.1.tgz#f2c73a458b035db8af361c4a7d921f74c6d4dffa" - integrity sha512-q+o1V6536wwIIlwJzEjm09emg/1QIceJXo01h6fTA1JJY4p/QQTOc10mizp4NhmwRMB8LVOThCgkwvQgzvJFjQ== +"@types/rollup-plugin-postcss@^3.1.4": + version "3.1.4" + resolved "https://registry.npmjs.org/@types/rollup-plugin-postcss/-/rollup-plugin-postcss-3.1.4.tgz#064054efb779a4ab6f1ea5d67f46f26acfc13a51" + integrity sha512-r1udsfjOlDiErJAvpsU12LNqwYfaMtom4wTKkm8lAu/cZBYbEN7Mcfyucpicl+R3GoBkgNXE+39bEnMjXxGRdA== dependencies: - "@types/cssnano" "*" - "@types/node" "*" - rollup "^0.63.4" + rollup-plugin-postcss "*" "@types/scheduler@*": version "0.16.1" @@ -19501,7 +19492,7 @@ postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0, postcss-value-parser@^ resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== -postcss@^8, postcss@^8.1.0, postcss@^8.4.5: +postcss@^8.1.0, postcss@^8.4.5: version "8.4.6" resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.6.tgz#c5ff3c3c457a23864f32cb45ac9b741498a09ae1" integrity sha512-OovjwIzs9Te46vlEx7+uXB0PLijpwjXGKXjVGGPIGubGpq7uh5Xgf6D6FiJ/SzJMBosHDp6a2hiXOS97iBXcaA== @@ -21271,7 +21262,7 @@ rollup-plugin-peer-deps-external@^2.2.2: resolved "https://registry.npmjs.org/rollup-plugin-peer-deps-external/-/rollup-plugin-peer-deps-external-2.2.4.tgz#8a420bbfd6dccc30aeb68c9bf57011f2f109570d" integrity sha512-AWdukIM1+k5JDdAqV/Cxd+nejvno2FVLVeZ74NKggm3Q5s9cbbcOgUPGdbxPi4BXu7xGaZ8HG12F+thImYu/0g== -rollup-plugin-postcss@^4.0.0: +rollup-plugin-postcss@*, rollup-plugin-postcss@^4.0.0: version "4.0.2" resolved "https://registry.npmjs.org/rollup-plugin-postcss/-/rollup-plugin-postcss-4.0.2.tgz#15e9462f39475059b368ce0e49c800fa4b1f7050" integrity sha512-05EaY6zvZdmvPUDi3uCcAQoESDcYnv8ogJJQRp6V5kZ6J6P7uAVJlrTZcaaA20wTH527YTnKfkAoPxWI/jPp4w== From baf12bd049ce80efd8c5bc78d4ccb21ce4549478 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 18 Feb 2022 04:43:58 +0000 Subject: [PATCH 231/383] chore(deps): bump swr from 1.1.2 to 1.2.1 Bumps [swr](https://github.com/vercel/swr) from 1.1.2 to 1.2.1. - [Release notes](https://github.com/vercel/swr/releases) - [Commits](https://github.com/vercel/swr/compare/1.1.2...1.2.1) --- updated-dependencies: - dependency-name: swr dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 3fe8543023..dbcb8d2d1d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -22804,9 +22804,9 @@ swap-case@^2.0.2: tslib "^2.0.3" swr@^1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/swr/-/swr-1.1.2.tgz#9f3de2541931fccf03c48f322f1fc935a7551612" - integrity sha512-UsM0eo5T+kRPyWFZtWRx2XR5qzohs/LS4lDC0GCyLpCYFmsfTk28UCVDbOE9+KtoXY4FnwHYiF+ZYEU3hnJ1lQ== + version "1.2.1" + resolved "https://registry.npmjs.org/swr/-/swr-1.2.1.tgz#c21a4fe2139cb1c4630450589b5b5add947a9d41" + integrity sha512-1cuWXqJqXcFwbgONGCY4PHZ8v05009JdHsC3CIC6u7d00kgbMswNr1sHnnhseOBxtzVqcCNpOHEgVDciRer45w== symbol-observable@1.2.0, symbol-observable@^1.0.4, symbol-observable@^1.1.0, symbol-observable@^1.2.0: version "1.2.0" From 4954daa5a31da5cc05876ef7b36e1135a5012dc9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 18 Feb 2022 08:44:17 +0000 Subject: [PATCH 232/383] chore(deps): bump url-parse from 1.5.3 to 1.5.7 in /microsite Bumps [url-parse](https://github.com/unshiftio/url-parse) from 1.5.3 to 1.5.7. - [Release notes](https://github.com/unshiftio/url-parse/releases) - [Commits](https://github.com/unshiftio/url-parse/compare/1.5.3...1.5.7) --- updated-dependencies: - dependency-name: url-parse dependency-type: indirect ... Signed-off-by: dependabot[bot] --- microsite/yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/microsite/yarn.lock b/microsite/yarn.lock index 01226a9bf9..81d28c7ab7 100644 --- a/microsite/yarn.lock +++ b/microsite/yarn.lock @@ -6499,9 +6499,9 @@ url-parse-lax@^3.0.0: prepend-http "^2.0.0" url-parse@^1.4.3: - version "1.5.3" - resolved "https://registry.npmjs.org/url-parse/-/url-parse-1.5.3.tgz#71c1303d38fb6639ade183c2992c8cc0686df862" - integrity sha512-IIORyIQD9rvj0A4CLWsHkBBJuNqWpFQe224b6j9t/ABmquIS0qDU2pY6kl6AuOrL5OkCXHMCFNe1jBcuAggjvQ== + version "1.5.7" + resolved "https://registry.npmjs.org/url-parse/-/url-parse-1.5.7.tgz#00780f60dbdae90181f51ed85fb24109422c932a" + integrity sha512-HxWkieX+STA38EDk7CE9MEryFeHCKzgagxlGvsdS7WBImq9Mk+PGwiT56w82WI3aicwJA8REp42Cxo98c8FZMA== dependencies: querystringify "^2.1.1" requires-port "^1.0.0" From 32393e45c4cd482941188da259079b0ab7510ef6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 18 Feb 2022 09:14:49 +0000 Subject: [PATCH 233/383] chore(deps): bump url-parse from 1.5.3 to 1.5.7 Bumps [url-parse](https://github.com/unshiftio/url-parse) from 1.5.3 to 1.5.7. - [Release notes](https://github.com/unshiftio/url-parse/releases) - [Commits](https://github.com/unshiftio/url-parse/compare/1.5.3...1.5.7) --- updated-dependencies: - dependency-name: url-parse dependency-type: indirect ... Signed-off-by: dependabot[bot] --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 28574e64ce..d539b0c51a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -23968,9 +23968,9 @@ url-parse-lax@^3.0.0: prepend-http "^2.0.0" url-parse@^1.5.3: - version "1.5.3" - resolved "https://registry.npmjs.org/url-parse/-/url-parse-1.5.3.tgz#71c1303d38fb6639ade183c2992c8cc0686df862" - integrity sha512-IIORyIQD9rvj0A4CLWsHkBBJuNqWpFQe224b6j9t/ABmquIS0qDU2pY6kl6AuOrL5OkCXHMCFNe1jBcuAggjvQ== + version "1.5.7" + resolved "https://registry.npmjs.org/url-parse/-/url-parse-1.5.7.tgz#00780f60dbdae90181f51ed85fb24109422c932a" + integrity sha512-HxWkieX+STA38EDk7CE9MEryFeHCKzgagxlGvsdS7WBImq9Mk+PGwiT56w82WI3aicwJA8REp42Cxo98c8FZMA== dependencies: querystringify "^2.1.1" requires-port "^1.0.0" From c3c3418912687fc332884f092b469a498b94e384 Mon Sep 17 00:00:00 2001 From: Camila Belo Date: Wed, 16 Feb 2022 08:54:50 +0100 Subject: [PATCH 234/383] feat(plugin-techdocs): adjust theme styles Signed-off-by: Camila Belo --- .../components/TechDocsPage/TechDocsPage.tsx | 117 +++- packages/techdocs-cli/README.md | 2 +- .../techdocs/src/reader/components/Reader.tsx | 528 +++++++++++++----- .../transformers/simplifyMkdocsFooter.test.ts | 4 +- .../transformers/simplifyMkdocsFooter.ts | 2 +- .../src/test-utils/fixtures/mkdocs-index.ts | 2 +- 6 files changed, 496 insertions(+), 159 deletions(-) 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 b90a49fb22..c2519df420 100644 --- a/packages/techdocs-cli-embedded-app/src/components/TechDocsPage/TechDocsPage.tsx +++ b/packages/techdocs-cli-embedded-app/src/components/TechDocsPage/TechDocsPage.tsx @@ -14,7 +14,22 @@ * limitations under the License. */ -import React from 'react'; +import React, { + FC, + createContext, + useContext, + useState, + useCallback, +} from 'react'; + +import { Theme, makeStyles } from '@material-ui/core'; + +import { ThemeProvider, Toolbar, Tooltip, IconButton } from '@material-ui/core'; +import LightIcon from '@material-ui/icons/Brightness7'; +import DarkIcon from '@material-ui/icons/Brightness4'; + +import { lightTheme, darkTheme } from '@backstage/theme'; +import { EntityName } from '@backstage/catalog-model'; import { Content } from '@backstage/core-components'; @@ -24,6 +39,90 @@ import { TechDocsPageHeader, } from '@backstage/plugin-techdocs'; +const useStyles = makeStyles((theme: Theme) => ({ + content: { + backgroundColor: theme.palette.background.default, + }, + contentToolbar: { + display: 'flex', + justifyContent: 'flex-end', + padding: 0, + }, +})); + +enum Themes { + LIGHT = 'light', + DARK = 'dark', +} + +type TechDocsThemeValue = { + theme: Themes; + toggleTheme: () => void; +}; + +const TechDocsThemeContext = createContext({ + theme: Themes.LIGHT, + toggleTheme: () => {}, +}); + +const TechdocsThemeProvider: FC = ({ children }) => { + const [theme, setTheme] = useState(Themes.LIGHT); + + const toggleTheme = useCallback(() => { + setTheme(prevTheme => + prevTheme === Themes.LIGHT ? Themes.DARK : Themes.LIGHT, + ); + }, [setTheme]); + + const value = { theme, toggleTheme }; + + const themes = { + [Themes.LIGHT]: lightTheme, + [Themes.DARK]: darkTheme, + }; + + return ( + + {children} + + ); +}; + +const useTechDocsTheme = () => useContext(TechDocsThemeContext); + +const TechDocsPageContent = ({ + onReady, + entityRef, +}: { + entityRef: EntityName; + onReady: () => void; +}) => { + const classes = useStyles(); + const { theme, toggleTheme } = useTechDocsTheme(); + + const themes = { + [Themes.LIGHT]: { + icon: , + title: 'Dark theme', + }, + [Themes.DARK]: { + icon: , + title: 'Light theme', + }, + }; + + return ( + + + + {themes[theme].icon} + + + + + ); +}; + const DefaultTechDocsPage = () => { const techDocsMetadata = { site_name: 'Live preview environment', @@ -35,20 +134,18 @@ const DefaultTechDocsPage = () => { {({ entityRef, onReady }) => ( <> - - - + )} ); }; -export const techDocsPage = ; +export const techDocsPage = ( + + + +); diff --git a/packages/techdocs-cli/README.md b/packages/techdocs-cli/README.md index 3ac423cb38..db0ef2dc40 100644 --- a/packages/techdocs-cli/README.md +++ b/packages/techdocs-cli/README.md @@ -17,7 +17,7 @@ bundle into the `packages/techdocs-cli/dist` which is then published with the ```sh # From the root of this repository run # NOTE: This will build the techdocs-cli-embedded-app and copy the output into the cli dist directory -yarn build --scope @techdocs/cli +yarn workspace @techdocs/cli build # Now execute the binary packages/techdocs-cli/bin/techdocs-cli diff --git a/plugins/techdocs/src/reader/components/Reader.tsx b/plugins/techdocs/src/reader/components/Reader.tsx index c12b17b486..2289a645e4 100644 --- a/plugins/techdocs/src/reader/components/Reader.tsx +++ b/plugins/techdocs/src/reader/components/Reader.tsx @@ -25,7 +25,15 @@ import React, { useState, } from 'react'; import { useNavigate, useParams } from 'react-router-dom'; -import { Grid, makeStyles, useTheme } from '@material-ui/core'; +import { + Grid, + makeStyles, + useTheme, + Theme, + lighten, + alpha, +} from '@material-ui/core'; +import { red, pink, green, purple, yellow } from '@material-ui/core/colors'; import { EntityName } from '@backstage/catalog-model'; import { useApi, configApiRef } from '@backstage/core-plugin-api'; @@ -121,6 +129,15 @@ export const withTechDocsReaderProvider = */ export const useTechDocsReader = () => useContext(TechDocsReaderContext); +type TypographyHeadings = Pick< + Theme['typography'], + 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' +>; + +type TypographyHeadingsKeys = keyof TypographyHeadings; + +const headings: TypographyHeadingsKeys[] = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6']; + /** * Hook that encapsulates the behavior of getting raw HTML and applying * transforms to it in order to make it function at a basic level in the @@ -209,187 +226,410 @@ export const useTechDocsReaderDom = (entityRef: EntityName): Element | null => { simplifyMkdocsFooter(), addGitFeedbackLink(scmIntegrationsApi), injectCss({ + // Variables css: ` - body { - font-family: ${theme.typography.fontFamily}; - --md-text-color: ${theme.palette.text.primary}; - --md-text-link-color: ${theme.palette.primary.main}; + /* + As the MkDocs output is rendered in shadow DOM, the CSS variable definitions on the root selector are not applied. Instead, they have to be applied on :host. + As there is no way to transform the served main*.css yet (for example in the backend), we have to copy from main*.css and modify them. + */ + :host { + /* FONT */ + --md-default-fg-color: ${theme.palette.text.primary}; - --md-code-fg-color: ${theme.palette.text.primary}; - --md-code-bg-color: ${theme.palette.background.paper}; - --md-accent-fg-color: ${theme.palette.primary.main}; - --md-default-fg-color--lightest: ${theme.palette.textVerySubtle}; - } - .codehilite .gd, .highlight .gd { - background-color: ${isDarkTheme ? 'rgba(248,81,73,0.65)' : '#fdd'}; - } - .codehilite .gi, .highlight .gi { - background-color: ${isDarkTheme ? 'rgba(46,160,67,0.65)' : '#dfd'}; - } - .highlight .kd { - color: ${isDarkTheme ? '#4aaaf7' : '#3b78e7'}; - } - .highlight .k { - color: ${isDarkTheme ? '#4aaaf7' : '#3b78e7'}; - } - .highlight .nx { - color: ${isDarkTheme ? '#ff53a3' : '#ec407a'}; - } - .highlight .s1 { - color: ${isDarkTheme ? '#1cad46' : 'rgb(13, 144, 79)'}; - } - .highlight .kt { - color: ${isDarkTheme ? '#4aaaf7' : '#3e61a2'}; - } - .md-main__inner { margin-top: 0; } - .md-sidebar { position: fixed; bottom: 100px; width: 20rem; } - .md-sidebar--secondary { right: 2rem; } - .md-content { margin-bottom: 50px } - .md-footer { position: fixed; bottom: 0px; } - .md-footer-nav__link { width: 20rem;} - .md-content { margin-left: 20rem; max-width: calc(100% - 20rem * 2 - 3rem); } - .md-typeset { font-size: 1rem; } - .md-typeset h1, .md-typeset h2, .md-typeset h3 { font-weight: bold; } - .md-nav { font-size: 1rem; } - .md-grid { max-width: 90vw; margin: 0 } - .md-typeset blockquote { - color: ${theme.palette.textSubtle}; - border-left: 0.2rem solid ${theme.palette.textVerySubtle}; - } - .md-typeset hr { - border-bottom: 0.05rem dotted ${theme.palette.textVerySubtle}; - } - .md-typeset table:not([class]) { - font-size: 1rem; - border: 1px solid ${theme.palette.text.primary}; - border-bottom: none; - border-collapse: collapse; - } - .md-typeset table:not([class]) td, .md-typeset table:not([class]) th { - border-bottom: 1px solid ${theme.palette.text.primary}; - } - .md-typeset table:not([class]) th { font-weight: bold; } - .md-typeset .admonition, .md-typeset details { - font-size: inherit; + /* BACKGROUND */ + --md-default-bg-color:${theme.palette.background.default}; + --md-default-bg-color--light: ${lighten( + theme.palette.text.primary, + 0.7, + )}; + --md-default-bg-color--lighter: ${lighten( + theme.palette.text.primary, + 0.3, + )}; + --md-default-bg-color--lightest: ${lighten( + theme.palette.text.primary, + 0.12, + )}; + + /* PRIMARY */ + --md-primary-fg-color: ${theme.palette.primary.main}; + --md-primary-fg-color--light: ${theme.palette.primary.light}; + --md-primary-fg-color--dark: ${theme.palette.primary.dark}; + --md-primary-bg-color: ${theme.palette.primary.contrastText}; + --md-primary-bg-color--light: ${lighten( + theme.palette.primary.contrastText, + 0.7, + )}; + + /* ACCENT */ + --md-accent-fg-color: var(--md-primary-fg-color); + + /* SHADOW */ + --md-shadow-z1: ${theme.shadows[1]}; + --md-shadow-z2: ${theme.shadows[2]}; + --md-shadow-z3: ${theme.shadows[3]}; + + /* ICON */ + /* Admonitions and others are using SVG masks to define icons. These masks are defined as CSS variables. */ + --md-admonition-icon--note: url('data:image/svg+xml;charset=utf-8,'); + --md-admonition-icon--abstract: url('data:image/svg+xml;charset=utf-8,'); + --md-admonition-icon--info: url('data:image/svg+xml;charset=utf-8,'); + --md-admonition-icon--tip: url('data:image/svg+xml;charset=utf-8,'); + --md-admonition-icon--success: url('data:image/svg+xml;charset=utf-8,'); + --md-admonition-icon--question: url('data:image/svg+xml;charset=utf-8,'); + --md-admonition-icon--warning: url('data:image/svg+xml;charset=utf-8,'); + --md-admonition-icon--failure: url('data:image/svg+xml;charset=utf-8,'); + --md-admonition-icon--danger: url('data:image/svg+xml;charset=utf-8,'); + --md-admonition-icon--bug: url('data:image/svg+xml;charset=utf-8,'); + --md-admonition-icon--example: url('data:image/svg+xml;charset=utf-8,'); + --md-admonition-icon--quote: url('data:image/svg+xml;charset=utf-8,'); + --md-footnotes-icon: url('data:image/svg+xml;charset=utf-8,'); + --md-details-icon: url('data:image/svg+xml;charset=utf-8,'); + --md-tasklist-icon: url('data:image/svg+xml;charset=utf-8,'); + --md-tasklist-icon--checked: url('data:image/svg+xml;charset=utf-8,'); + --md-nav-icon--prev: url('data:image/svg+xml;charset=utf-8,'); + --md-nav-icon--next: url('data:image/svg+xml;charset=utf-8,'); + --md-toc-icon: url('data:image/svg+xml;charset=utf-8,'); + --md-clipboard-icon: url('data:image/svg+xml;charset=utf-8,'); + --md-search-result-icon: url('data:image/svg+xml;charset=utf-8,'); + --md-source-forks-icon: url('data:image/svg+xml;charset=utf-8,'); + --md-source-repositories-icon: url('data:image/svg+xml;charset=utf-8,'); + --md-source-stars-icon: url('data:image/svg+xml;charset=utf-8,'); + --md-source-version-icon: url('data:image/svg+xml;charset=utf-8,'); + --md-version-icon: url('data:image/svg+xml;charset=utf-8,'); } - /* style the checkmarks of the task list */ - .md-typeset .task-list-control .task-list-indicator::before { - background-color: ${theme.palette.action.disabledBackground}; + :host > * { + /* CODE */ + --md-code-fg-color: ${theme.palette.text.primary}; + --md-code-bg-color: ${theme.palette.background.paper}; + --md-code-hl-color: ${alpha(yellow[500], 0.5)}; + --md-code-hl-number-color: ${red[500]}; + --md-code-hl-string-color: ${green[500]}; + --md-code-hl-special-color: ${pink[500]}; + --md-code-hl-constant-color: ${purple[500]}; + --md-code-hl-keyword-color: ${ + isDarkTheme + ? theme.palette.primary.light + : theme.palette.primary.dark + }; + --md-code-hl-function-color: ${ + isDarkTheme + ? theme.palette.secondary.light + : theme.palette.secondary.dark + }; + --md-code-hl-name-color: var(--md-code-fg-color); + --md-code-hl-comment-color: var(--md-default-fg-color--light); + --md-code-hl-generic-color: var(--md-default-fg-color--light); + --md-code-hl-variable-color: var(--md-default-fg-color--light); + --md-code-hl-operator-color: var(--md-default-fg-color--light); + --md-code-hl-punctuation-color: var(--md-default-fg-color--light); + + /* TYPESET */ + --md-typeset-font-size: 1rem; + --md-typeset-color: var(--md-default-fg-color); + --md-typeset-a-color: var(--md-accent-fg-color); + --md-typeset-table-color: ${theme.palette.text.primary}; + --md-typeset-del-color: ${ + isDarkTheme + ? alpha(theme.palette.error.dark, 0.5) + : alpha(theme.palette.error.light, 0.5) + }; + --md-typeset-ins-color: ${ + isDarkTheme + ? alpha(theme.palette.success.dark, 0.5) + : alpha(theme.palette.success.light, 0.5) + }; + --md-typeset-mark-color: ${ + isDarkTheme + ? alpha(theme.palette.warning.dark, 0.5) + : alpha(theme.palette.warning.light, 0.5) + }; } - .md-typeset .task-list-control [type="checkbox"]:checked + .task-list-indicator:before { - background-color: ${theme.palette.success.main}; - } - /**/ @media screen and (max-width: 76.1875em) { - .md-nav { - background-color: ${theme.palette.background.default}; - transition: none !important - } - .md-sidebar--secondary { display: none; } - .md-sidebar--primary { left: ${ - isPinned ? '242px' : '72px' - }; width: 10rem } - .md-content { margin-left: 10rem; max-width: calc(100% - 10rem); } - .md-content__inner { font-size: 0.9rem } - .md-footer { - position: static; - padding-left: 10rem; - } - .md-footer-nav__link { - /* footer links begin to overlap at small sizes without setting width */ - width: 50%; - } - .md-nav--primary .md-nav__title { - white-space: normal; - height: auto; - line-height: 1rem; - cursor: auto; - } - .md-nav--primary > .md-nav__title [for="none"] { - padding-top: 0; + :host > * { + /* TYPESET */ + --md-typeset-font-size: .8rem; } } - `, + `, }), injectCss({ - // Disable CSS animations on link colors as they lead to issues in dark - // mode. The dark mode color theme is applied later and theirfore there - // is always an animation from light to dark mode when navigation - // between pages. + // Reset css: ` - .md-nav__link, .md-typeset a, .md-typeset a::before, .md-typeset .headerlink { - transition: none; + body { + --md-text-color: var(--md-default-fg-color); + --md-text-link-color: var(--md-accent-fg-color); + --md-text-font-family: ${theme.typography.fontFamily}; + font-family: var(--md-text-font-family); + background-color: unset; } `, }), injectCss({ - // Properly style code blocks. + // Layout css: ` + .md-grid { + max-width: 90vw; + margin: 0; + } + + .md-nav { + font-size: ${theme.typography.body1.fontSize}; + } + .md-nav + + .md-main__inner { + margin-top: 0; + } + + .md-sidebar { + position: fixed; + bottom: 100px; + width: 20rem; + } + .md-sidebar--secondary { + right: 2rem; + } + + .md-content { + max-width: calc(100% - 20rem * 2 - 3rem); + margin-left: 20rem; + margin-bottom: 50px; + } + + .md-footer { + position: fixed; + bottom: 0px; + } + .md-footer__title { + background-color: unset; + } + .md-footer-nav__link { + width: 20rem; + } + + .md-dialog { + background-color: unset; + } + + @media screen and (max-width: 76.1875em) { + .md-nav { + transition: none !important + background-color: ${theme.palette.background.default}; + } + + .md-nav--primary .md-nav__title { + cursor: auto; + white-space: normal; + line-height: 1rem; + height: auto; + } + .md-nav--primary > .md-nav__title [for="none"] { + padding-top: 0; + } + .md-nav--primary .md-nav__title .md-nav__button { + display: none; + } + + .md-sidebar--secondary { + display: none; + } + .md-sidebar--primary { + width: 10rem; + left: ${isPinned ? '242px' : '72px'} !important; + } + + .md-content { + max-width: calc(100% - 10rem); + margin-left: 10rem; + } + + .md-footer { + position: static; + padding-left: 10rem; + } + .md-footer-nav__link { + /* footer links begin to overlap at small sizes without setting width */ + width: 50%; + } + } + `, + }), + injectCss({ + // Typeset + css: ` + .md-typeset { + font-size: var(--md-typeset-font-size); + } + + ${headings.reduce((style, heading) => { + const styles = theme.typography[heading]; + const { lineHeight, fontFamily, fontWeight, fontSize } = styles; + const calculate = (value: typeof fontSize) => { + let factor: number | string = 1; + if (typeof value === 'number') { + // 60% of the size defined because it is too big + factor = (value / 16) * 0.6; + } + if (typeof value === 'string') { + factor = value.replace('rem', ''); + } + return `calc(${factor} * var(--md-typeset-font-size))`; + }; + return style.concat(` + .md-typeset ${heading} { + line-height: ${lineHeight}; + font-family: ${fontFamily}; + font-weight: ${fontWeight}; + font-size: ${calculate(fontSize)}; + } + `); + }, '')} + + .md-typeset hr { + border-bottom: 0.05rem dotted ${theme.palette.divider}; + } + + .md-typeset details { + font-size: var(--md-typeset-font-size); + } + + .md-typeset blockquote { + color: ${theme.palette.textSubtle}; + border-left: 0.2rem solid ${theme.palette.textVerySubtle}; + } + + .md-typeset table:not([class]) { + font-size: var(--md-typeset-font-size); + border: 1px solid ${theme.palette.text.primary}; + border-bottom: none; + border-collapse: collapse; + } + .md-typeset table:not([class]) th { + font-weight: bold; + } + .md-typeset table:not([class]) td, .md-typeset table:not([class]) th { + border-bottom: 1px solid ${theme.palette.text.primary}; + } + .md-typeset pre > code::-webkit-scrollbar-thumb { background-color: hsla(0, 0%, 0%, 0.32); } .md-typeset pre > code::-webkit-scrollbar-thumb:hover { background-color: hsla(0, 0%, 0%, 0.87); } - `, + `, }), injectCss({ - // Admonitions and others are using SVG masks to define icons. These - // masks are defined as CSS variables. - // As the MkDocs output is rendered in shadow DOM, the CSS variable - // definitions on the root selector are not applied. Instead, the have - // to be applied on :host. - // As there is no way to transform the served main*.css yet (for - // example in the backend), we have to copy from main*.css and modify - // them. + // Animations css: ` - :host { - --md-admonition-icon--note: url('data:image/svg+xml;charset=utf-8,'); - --md-admonition-icon--abstract: url('data:image/svg+xml;charset=utf-8,'); - --md-admonition-icon--info: url('data:image/svg+xml;charset=utf-8,'); - --md-admonition-icon--tip: url('data:image/svg+xml;charset=utf-8,'); - --md-admonition-icon--success: url('data:image/svg+xml;charset=utf-8,'); - --md-admonition-icon--question: url('data:image/svg+xml;charset=utf-8,'); - --md-admonition-icon--warning: url('data:image/svg+xml;charset=utf-8,'); - --md-admonition-icon--failure: url('data:image/svg+xml;charset=utf-8,'); - --md-admonition-icon--danger: url('data:image/svg+xml;charset=utf-8,'); - --md-admonition-icon--bug: url('data:image/svg+xml;charset=utf-8,'); - --md-admonition-icon--example: url('data:image/svg+xml;charset=utf-8,'); - --md-admonition-icon--quote: url('data:image/svg+xml;charset=utf-8,'); + /* + Disable CSS animations on link colors as they lead to issues in dark mode. + The dark mode color theme is applied later and theirfore there is always an animation from light to dark mode when navigation between pages. + */ + .md-dialog, .md-nav__link, .md-footer__link, .md-typeset a, .md-typeset a::before, .md-typeset .headerlink { + transition: none; + } + `, + }), + injectCss({ + // Extensions + css: ` + /* HIGHLIGHT */ + .highlight .md-clipboard:after { + content: unset; } - :host { - --md-footnotes-icon: url('data:image/svg+xml;charset=utf-8,'); + + .highlight .nx { + color: ${isDarkTheme ? '#ff53a3' : '#ec407a'}; } - :host { - --md-details-icon: url('data:image/svg+xml;charset=utf-8,'); + + /* CODE HILITE */ + .codehilite .gd { + background-color: ${ + isDarkTheme ? 'rgba(248,81,73,0.65)' : '#fdd' + }; } - :host { - --md-tasklist-icon: url('data:image/svg+xml;charset=utf-8,'); - --md-tasklist-icon--checked: url('data:image/svg+xml;charset=utf-8,'); + + .codehilite .gi { + background-color: ${ + isDarkTheme ? 'rgba(46,160,67,0.65)' : '#dfd' + }; } - `, + + /* TABBED */ + .tabbed-set>input:nth-child(1):checked~.tabbed-labels>:nth-child(1), + .tabbed-set>input:nth-child(2):checked~.tabbed-labels>:nth-child(2), + .tabbed-set>input:nth-child(3):checked~.tabbed-labels>:nth-child(3), + .tabbed-set>input:nth-child(4):checked~.tabbed-labels>:nth-child(4), + .tabbed-set>input:nth-child(5):checked~.tabbed-labels>:nth-child(5), + .tabbed-set>input:nth-child(6):checked~.tabbed-labels>:nth-child(6), + .tabbed-set>input:nth-child(7):checked~.tabbed-labels>:nth-child(7), + .tabbed-set>input:nth-child(8):checked~.tabbed-labels>:nth-child(8), + .tabbed-set>input:nth-child(9):checked~.tabbed-labels>:nth-child(9), + .tabbed-set>input:nth-child(10):checked~.tabbed-labels>:nth-child(10), + .tabbed-set>input:nth-child(11):checked~.tabbed-labels>:nth-child(11), + .tabbed-set>input:nth-child(12):checked~.tabbed-labels>:nth-child(12), + .tabbed-set>input:nth-child(13):checked~.tabbed-labels>:nth-child(13), + .tabbed-set>input:nth-child(14):checked~.tabbed-labels>:nth-child(14), + .tabbed-set>input:nth-child(15):checked~.tabbed-labels>:nth-child(15), + .tabbed-set>input:nth-child(16):checked~.tabbed-labels>:nth-child(16), + .tabbed-set>input:nth-child(17):checked~.tabbed-labels>:nth-child(17), + .tabbed-set>input:nth-child(18):checked~.tabbed-labels>:nth-child(18), + .tabbed-set>input:nth-child(19):checked~.tabbed-labels>:nth-child(19), + .tabbed-set>input:nth-child(20):checked~.tabbed-labels>:nth-child(20) { + color: var(--md-accent-fg-color); + border-color: var(--md-accent-fg-color); + } + + /* TASK-LIST */ + .task-list-control .task-list-indicator::before { + background-color: ${theme.palette.action.disabledBackground}; + } + .task-list-control [type="checkbox"]:checked + .task-list-indicator:before { + background-color: ${theme.palette.success.main}; + } + + /* ADMONITION */ + .admonition { + font-size: var(--md-typeset-font-size); + } + `, }), ]), [ - techdocsSanitizer, - techdocsStorageApi, kind, name, namespace, - scmIntegrationsApi, - theme.typography.fontFamily, - theme.palette.text.primary, - theme.palette.primary.main, - theme.palette.background.paper, - theme.palette.background.default, - theme.palette.textVerySubtle, - theme.palette.textSubtle, - theme.palette.action.disabledBackground, - theme.palette.success.main, isDarkTheme, isPinned, + scmIntegrationsApi, + techdocsSanitizer, + techdocsStorageApi, + theme.shadows, + theme.typography, + theme.palette.divider, + theme.palette.text.primary, + theme.palette.textVerySubtle, + theme.palette.background.paper, + theme.palette.background.default, + theme.palette.textSubtle, + theme.palette.primary.main, + theme.palette.primary.dark, + theme.palette.primary.light, + theme.palette.primary.contrastText, + theme.palette.secondary.dark, + theme.palette.secondary.light, + theme.palette.error.dark, + theme.palette.error.light, + theme.palette.success.main, + theme.palette.success.dark, + theme.palette.success.light, + theme.palette.warning.dark, + theme.palette.warning.light, + theme.palette.action.disabledBackground, ], ); diff --git a/plugins/techdocs/src/reader/transformers/simplifyMkdocsFooter.test.ts b/plugins/techdocs/src/reader/transformers/simplifyMkdocsFooter.test.ts index 020befd522..ac4c9fa986 100644 --- a/plugins/techdocs/src/reader/transformers/simplifyMkdocsFooter.test.ts +++ b/plugins/techdocs/src/reader/transformers/simplifyMkdocsFooter.test.ts @@ -27,7 +27,7 @@ describe('simplifyMkdocsFooter', () => { }, ); - expect(shadowDom.querySelector('.md-footer-copyright')).toBeTruthy(); + expect(shadowDom.querySelector('.md-footer .md-copyright')).toBeTruthy(); }); it('does remove mkdocs copyright', async () => { @@ -39,6 +39,6 @@ describe('simplifyMkdocsFooter', () => { }, ); - expect(shadowDom.querySelector('.md-footer-copyright')).toBeFalsy(); + expect(shadowDom.querySelector('.md-footer .md-copyright')).toBeFalsy(); }); }); diff --git a/plugins/techdocs/src/reader/transformers/simplifyMkdocsFooter.ts b/plugins/techdocs/src/reader/transformers/simplifyMkdocsFooter.ts index 2b96926270..b583a72fbf 100644 --- a/plugins/techdocs/src/reader/transformers/simplifyMkdocsFooter.ts +++ b/plugins/techdocs/src/reader/transformers/simplifyMkdocsFooter.ts @@ -19,7 +19,7 @@ import type { Transformer } from './transformer'; export const simplifyMkdocsFooter = (): Transformer => { return dom => { // Remove mkdocs copyright - dom.querySelector('.md-footer-copyright')?.remove(); + dom.querySelector('.md-footer .md-copyright')?.remove(); return dom; }; diff --git a/plugins/techdocs/src/test-utils/fixtures/mkdocs-index.ts b/plugins/techdocs/src/test-utils/fixtures/mkdocs-index.ts index afb84dc10b..21d703fa2e 100644 --- a/plugins/techdocs/src/test-utils/fixtures/mkdocs-index.ts +++ b/plugins/techdocs/src/test-utils/fixtures/mkdocs-index.ts @@ -1520,7 +1520,7 @@ css img js mkdocs sitemap.xml

stories deterministic for snapshot testing - -commit 9dd563e3a9c90d4558010d91571bcc48362e86c5 -Author: nikek -Date: Tue May 19 10:04:58 2020 +0200 - - Make
stories deterministic for snapshot testing - -commit f8cdfdb1aa8f1206f01b7feced61576c2558e2ab -Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> -Date: Tue May 19 09:05:36 2020 +0200 - - build(deps-dev): bump tsc-watch from 4.2.5 to 4.2.6 (#911) - - Bumps [tsc-watch](https://github.com/gilamran/tsc-watch) from 4.2.5 to 4.2.6. - - [Release notes](https://github.com/gilamran/tsc-watch/releases) - - [Changelog](https://github.com/gilamran/tsc-watch/blob/master/CHANGELOG.md) - - [Commits](https://github.com/gilamran/tsc-watch/commits) - - Signed-off-by: dependabot-preview[bot] - - Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> - -commit bbcdeea91f9b3952593b59bc9e5fb5f5c2efbd49 -Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> -Date: Tue May 19 09:05:08 2020 +0200 - - build(deps-dev): bump @types/webpack from 4.41.12 to 4.41.13 (#910) - - Bumps [@types/webpack](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/webpack) from 4.41.12 to 4.41.13. - - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/webpack) - - Signed-off-by: dependabot-preview[bot] - - Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> - -commit 10ee5eb5b47064cb6791d8a1bd174e0d36faf44a -Author: Nikita Nek Dudnik -Date: Mon May 18 20:17:49 2020 +0200 - - fix: remove obsolete package and fix tests - -commit 8bd06d9882ef932f95fc094b7710300b47afa03e -Author: Patrik Oldsberg -Date: Mon May 18 20:09:35 2020 +0200 - - packages/core: add unimplemented auth api definitions - -commit 5a67b901424447d264d39922cb005375c0aa97ff -Author: Nikita Nek Dudnik -Date: Mon May 18 20:01:07 2020 +0200 - - fix: remove obsolete package - -commit 7359d2f67943f4847734e1edf70f94d9a051d7b5 -Merge: 9c75999701 7dd484d4df -Author: Nikita Nek Dudnik -Date: Mon May 18 19:56:27 2020 +0200 - - Merge remote-tracking branch 'origin/master' - -commit 7dd484d4df3190b9f615e63a201c62fd22f2e276 -Author: Ivan Shmidt -Date: Mon May 18 19:50:45 2020 +0200 - - fix: pr edits - -commit 9c7599970125bfd9e6016b4b14b264ba1e9f4e8e -Author: Ivan Shmidt -Date: Mon May 18 19:50:45 2020 +0200 - - fix: pr edits - -commit 860bf5172834685229ccd5724d1134daf5aa07a4 -Author: Ivan Shmidt -Date: Mon May 18 19:44:05 2020 +0200 - - fix: navTarget, remove assets - -commit 2c2d10b08937284e7700b97b634b36c6fc779894 -Merge: 931342c92f 89a4f6a31b -Author: Nikita Nek Dudnik -Date: Mon May 18 19:35:23 2020 +0200 - - Merge branch 'master' of github.com:Nek/backstage - -commit 931342c92f3309798fdd845e5b0733f2c16d8bfd -Author: Nikita Nek Dudnik -Date: Mon May 18 19:33:10 2020 +0200 - - feat: navtarget and explore card - -commit 89a4f6a31b487f2e4ae2d64300208843ff88399d -Author: Ivan Shmidt -Date: Mon May 18 19:30:39 2020 +0200 - - fix: quick fix - -commit 3565d13f91e8dc997a5f5f0d182081c7599f4cc2 -Merge: c90110f6ab 8428d95791 -Author: Ivan Shmidt -Date: Mon May 18 19:27:03 2020 +0200 - - Merge branch 'master' of github.com:Nek/backstage - -commit c90110f6ab0b2a472c60eee45a5d94870260ddb8 -Author: Ivan Shmidt -Date: Mon May 18 19:26:52 2020 +0200 - - feat: export as a widget - -commit 8428d957918fe29bd967a9873ed2ea95890e009e -Author: Nikita Nek Dudnik -Date: Mon May 18 19:11:42 2020 +0200 - - fix: tests - -commit d06d35fec0685eb6ad9586aa9b8fb70f69a493ce -Merge: 1d428128f0 f3da9cd7ef -Author: Nikita Nek Dudnik -Date: Mon May 18 18:52:55 2020 +0200 - - Merge branch 'master' of github.com:Nek/backstage - -commit f3da9cd7eff33d3f1b6810606773e52c838d8ffe -Author: Ivan Shmidt -Date: Mon May 18 18:52:41 2020 +0200 - - fix: type imports - -commit 1d428128f04ec865e06409b4ee71dc0662a8e135 -Author: Nikita Nek Dudnik -Date: Mon May 18 18:52:10 2020 +0200 - - fix: remove logo from plugin header - -commit aa1eaf4b33ce3e4eff5031a5a806351ec1dd0949 -Merge: e78eaa9bb6 a6c3256ad7 -Author: Ivan Shmidt -Date: Mon May 18 18:50:08 2020 +0200 - - Merge branch 'master' of github.com:spotify/backstage - -commit a6c3256ad754ad1b92018d2aa938081447f22463 -Merge: d15789ea4a aef288b6cb -Author: Patrik Oldsberg -Date: Mon May 18 18:48:24 2020 +0200 - - Merge pull request #908 from shmidt-i/feat/proxy - - Use proxy package.json field for app:serve and plugin:serve - -commit e78eaa9bb630bb05d42ffda7ab910fc082208ecd -Author: Ivan Shmidt -Date: Mon May 18 18:44:19 2020 +0200 - - fix: lint - -commit aef288b6cbd27c3c70287dce2ea6bbc032017f4b -Author: Ivan Shmidt -Date: Mon May 18 18:19:56 2020 +0200 - - refactor: move to serveBundle - -commit 3d019401910f7da3f8ea9613716bf60bca9c2078 -Author: Ivan Shmidt -Date: Mon May 18 18:06:19 2020 +0200 - - fix: tsc - -commit 0a592af4dedbb8a9660960a7080aa7c77daf0fe2 -Author: Ivan Shmidt -Date: Mon May 18 17:59:12 2020 +0200 - - feat: settings -> dialog - -commit dd93bc9ced36525599b12247a56ead66d51701b8 -Author: Ivan Shmidt -Date: Mon May 18 17:56:36 2020 +0200 - - feat: proxy - - Allowing to put a proxy field into a package.json for both app and - plugin to use it with a wds build-in proxy - -commit 6084eeeb4343b05d638cddca269358c1c0461329 -Author: Ivan Shmidt -Date: Mon May 18 17:52:51 2020 +0200 - - fix: leftovers - -commit 93b76b2ef06853415360e1fb2f1a387fd699de02 -Merge: 4ca8e3370e d15789ea4a -Author: Ivan Shmidt -Date: Mon May 18 17:42:14 2020 +0200 - - Merge branch 'master' of github.com:spotify/backstage into catalog/deduplicate-locations - -commit d15789ea4a2e5824027c050a90e805e7a0889a99 -Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> -Date: Mon May 18 17:27:22 2020 +0200 - - build(deps-dev): bump ts-node from 8.8.1 to 8.10.1 (#896) - - Bumps [ts-node](https://github.com/TypeStrong/ts-node) from 8.8.1 to 8.10.1. - - [Release notes](https://github.com/TypeStrong/ts-node/releases) - - [Commits](https://github.com/TypeStrong/ts-node/compare/v8.8.1...v8.10.1) - - Signed-off-by: dependabot-preview[bot] - - Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> - -commit 4ec6890b111f5d9efe30dd1fc813fdbab82574cb -Merge: 9c9250faf0 3e459857cf -Author: Ivan Shmidt -Date: Mon May 18 17:19:45 2020 +0200 - - Merge branch 'master' of github.com:Nek/backstage - -commit 9c9250faf0c97aeb9fe99089639f655f705adc9c -Author: Ivan Shmidt -Date: Mon May 18 17:18:25 2020 +0200 - - feat: remove polling, add pagination, refactor - -commit 3e459857cfabff3cb3e1372c2010a85af52fde04 -Merge: cfd6508e98 3c075c3093 -Author: Nikita Nek Dudnik -Date: Mon May 18 16:03:04 2020 +0200 - - Merge remote-tracking branch 'upstream/master' - -commit cfd6508e98341d52237bd55f276b6ebb9e81b645 -Author: Nikita Nek Dudnik -Date: Mon May 18 15:54:55 2020 +0200 - - Fix merge conflicts - -commit 3c075c3093eb867f4811031744ce005bfa6132b9 -Merge: cd83f5a43f 324245586f -Author: Patrik Oldsberg -Date: Mon May 18 15:08:17 2020 +0200 - - Merge pull request #900 from spotify/eide/bump-tl-jest-dom-5-7-0 - - Manually bump @testing-library/jest-dom from 4.2.4 to 5.7.0 - -commit adee4e29873adc5b556b533c44e6d485d67f090f -Merge: 44389c61b8 cd83f5a43f -Author: Nikita Nek Dudnik -Date: Mon May 18 14:41:45 2020 +0200 - - Merge remote-tracking branch 'upstream/master' - -commit 44389c61b866929807a60580c173ddc46ba0ef49 -Author: Nikita Nek Dudnik -Date: Mon May 18 14:14:03 2020 +0200 - - Fix functions crossreference - -commit 86bb6cc6a8d3424a7f75393a05ebe225f9f68d55 -Author: Fredrik Adelöw -Date: Sun May 17 20:21:17 2020 +0200 - - ADR002: Default Software Catalog File Format - -commit cd83f5a43f4615e5c563474805f3980447c65a86 -Merge: 3189871c26 98816d648a -Author: Patrik Oldsberg -Date: Mon May 18 13:53:27 2020 +0200 - - Merge pull request #885 from spotify/rugvip/subjects - - packages/core: add behavior and publish subjects to make it easier to produce observables - -commit 3189871c26e4cce2ef9c7afbec55838965e4325d -Merge: 8a53a43424 fb3e003272 -Author: Marcus Eide -Date: Mon May 18 13:36:53 2020 +0200 - - Merge pull request #905 from spotify/eide/bump-tl-user-event-10-2-4 - - Manually bump @testing-library/user-event from 7.2.1 to 10.2.4 - -commit 8a53a4342407cff4b7f8a1ca9d38b54377a1ff99 -Merge: 792220a9da 9b3e7b345d -Author: Patrik Oldsberg -Date: Mon May 18 13:33:26 2020 +0200 - - Merge pull request #901 from spotify/rugvip/cleanup - - build setup cleanup / PR feedback - -commit 98816d648af41c423be4feb28adcd8801c9f2792 -Author: Patrik Oldsberg -Date: Fri May 15 14:55:32 2020 +0200 - - packages/core: use BehaviorSubject in OAuthRequestManager - -commit df8aac9739d2be6b123281baf974878992593c8a -Author: Patrik Oldsberg -Date: Fri May 15 14:19:12 2020 +0200 - - packages/core: use BehavorSubject in OAuthRequestManager - -commit 73f478380cb1fb5e5884bb2ec728e435698594a6 -Author: Patrik Oldsberg -Date: Fri May 15 13:39:47 2020 +0200 - - packages/core: use BehavorSubject in AppThemeSelector - -commit 06bf6fa6aa81e9c024092984ce5b49a7c5de7df6 -Author: Patrik Oldsberg -Date: Fri May 15 13:36:49 2020 +0200 - - packages/core: add basic implementations of bahavior and publish RX subjects - -commit 792220a9da607f47772feb7a27583227ea2a6575 -Merge: cefdc422ac e8f2b88990 -Author: Patrik Oldsberg -Date: Mon May 18 13:29:25 2020 +0200 - - Merge pull request #904 from spotify/rugvip/nodecls - - packages/cli: remove redundant type declarations for rollup-plugin-esbuild - -commit 4ca8e3370e079592b8cd8506c735b5b96a2ab805 -Author: Ivan Shmidt -Date: Mon May 18 13:10:10 2020 +0200 - - fix: moved into transaction for atomicity - -commit 9b3e7b345d665a4caa3e5977f2d758823551fe35 -Author: Patrik Oldsberg -Date: Mon May 18 11:44:52 2020 +0200 - - packages/cli: clarify jest module mapper config - -commit 26e259d7bd793cc7bda229dcd32ebb38c8e2b286 -Author: Patrik Oldsberg -Date: Mon May 18 11:41:38 2020 +0200 - - packages/cli: remove old comment in packager - -commit 0242c8a3442f3a74f48569dbcdb7a864516afef1 -Author: Patrik Oldsberg -Date: Mon May 18 11:35:08 2020 +0200 - - packages/cli: add more explanations to installWithLocalDeps + remove console.log - -commit a1efd0d76db620dd41dd1d56012dcd74f89df847 -Author: Patrik Oldsberg -Date: Mon May 18 11:29:54 2020 +0200 - - packages/cli: nicer handling of waiting for bundler to exit - -commit e8f2b8899081bd4e93b4622d0b50b51d29073cfe -Author: Patrik Oldsberg -Date: Mon May 18 12:48:59 2020 +0200 - - packages/cli: remove redundant type declarations for rollup-plugin-esbuild - -commit cefdc422ac1d94617f739a5c37c7687a190689be -Merge: 5da07d5bbf 1362820792 -Author: Patrik Oldsberg -Date: Mon May 18 13:05:24 2020 +0200 - - Merge pull request #903 from spotify/rugvip/buildfix - - github/workflows: fix build step to include dependencies as well - -commit fb3e003272a7db2b8a714756e8221e11d79b9317 -Author: Marcus Eide -Date: Mon May 18 12:59:58 2020 +0200 - - Bump testing-library/user-event to 10.2.4 - -commit 1362820792cd705b87555d15b182259a756a8e78 -Author: Patrik Oldsberg -Date: Mon May 18 12:39:30 2020 +0200 - - packages/core: export sidebar context type - -commit 33c412d961de540e3e1eaf303f1b57b416218317 -Author: Patrik Oldsberg -Date: Mon May 18 12:25:55 2020 +0200 - - packages/core: fix type issues in sidebar - -commit 74d25d1550ca1517366a95bcb8fa65343e8ea38e -Author: Patrik Oldsberg -Date: Mon May 18 12:10:56 2020 +0200 - - github/workflows: fix build step to include dependencies as well - -commit 5da07d5bbf03f6f86e1c5a496fb1815f6623555e -Author: Victor Viale -Date: Mon May 18 11:56:11 2020 +0200 - - Improve side navigation (#589) - - * Implement sidebar items - - * Add intro component - - * Add user badge component - - * Add Sidebar simple story component - - Co-authored-by: Victor Viale - Co-authored-by: Stefan Ålund - -commit 7db02e5e58d96cfac784ecbd34df887d5495f778 -Merge: ee176324d2 b49e6a9a4b -Author: Marcus Eide -Date: Mon May 18 11:52:16 2020 +0200 - - Merge pull request #897 from spotify/dependabot/npm_and_yarn/rollup/plugin-commonjs-11.1.0 - - build(deps): bump @rollup/plugin-commonjs from 11.0.2 to 11.1.0 - -commit 324245586f5e86f55df85f8d442a7685bb6d81c1 -Author: Marcus Eide -Date: Mon May 18 11:11:58 2020 +0200 - - Change import of jest-dom in setupTests.ts according to change in api - -commit 84297107604bcb4d768c1f5419422c5c61eb73de -Author: Marcus Eide -Date: Mon May 18 11:11:26 2020 +0200 - - Bump testing-library/jest-dom to 5.7.0 - -commit ee176324d2cbf32a1cdace5e675d3404c8ffe9ae -Merge: 55e45500fe af934d4173 -Author: Patrik Oldsberg -Date: Mon May 18 11:11:05 2020 +0200 - - Merge pull request #890 from spotify/rugvip/themedocs - - docs: add docs for how to create and use custom themes - -commit b49e6a9a4b982c84c5be3620fe31fd6fe73e15af -Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> -Date: Mon May 18 09:04:42 2020 +0000 - - build(deps): bump @rollup/plugin-commonjs from 11.0.2 to 11.1.0 - - Bumps [@rollup/plugin-commonjs](https://github.com/rollup/plugins) from 11.0.2 to 11.1.0. - - [Release notes](https://github.com/rollup/plugins/releases) - - [Commits](https://github.com/rollup/plugins/compare/commonjs-v11.0.2...commonjs-v11.1.0) - - Signed-off-by: dependabot-preview[bot] - -commit 55e45500fe8c23aa9f36af8deab553fbf6a39fe1 -Merge: b5e2d9a1e8 9977724144 -Author: Patrik Oldsberg -Date: Mon May 18 10:59:29 2020 +0200 - - Merge pull request #895 from spotify/rugvip/build - - New Build Setup - -commit 2d5787214aa9f548722cdfbb46660608cf0b1cee -Author: Nikita Nek Dudnik -Date: Mon May 18 10:52:56 2020 +0200 - - Fix linting - -commit cce9e9ad73cfc442e4218ad693cb330593d9f328 -Merge: 95f1500866 b5e2d9a1e8 -Author: Nikita Nek Dudnik -Date: Mon May 18 09:20:07 2020 +0200 - - Merge remote-tracking branch 'upstream/master' - -commit b5e2d9a1e87c28a91ee2d48c518b873218a0064e -Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> -Date: Mon May 18 08:53:30 2020 +0200 - - build(deps-dev): bump @types/react-router-dom from 5.1.3 to 5.1.5 (#899) - - Bumps [@types/react-router-dom](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-router-dom) from 5.1.3 to 5.1.5. - - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react-router-dom) - - Signed-off-by: dependabot-preview[bot] - - Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> - -commit 9977724144225f2792354dbc48041e65055d127e -Author: Patrik Oldsberg -Date: Mon May 18 01:15:00 2020 +0200 - - packages/cli: disabled bundler performance hints - -commit fe28a4ccf8749072a2d9256c5614dfc67659f710 -Author: Patrik Oldsberg -Date: Mon May 18 01:04:03 2020 +0200 - - packages/cli: bump sucrase and revert re-export syntax changes - -commit 8232b0931f1383eb9106873c82cda41bf6e7731d -Author: Patrik Oldsberg -Date: Mon May 18 00:59:33 2020 +0200 - - plugins/graphiql: fix src-relative mock in test - -commit 5649632bde4559f506451acd54f3d8f6997db737 -Author: Patrik Oldsberg -Date: Mon May 18 00:51:16 2020 +0200 - - github/workflows: no --coverage flag for build - -commit 53211aa6d57af87a63265488fc74cd77798b12ea -Author: Patrik Oldsberg -Date: Mon May 18 00:46:44 2020 +0200 - - github/workflows: run tsc in cli build - -commit 296a7871602c59fdbfc4bc9e3fd94f31210f3c04 -Author: Patrik Oldsberg -Date: Mon May 18 00:45:57 2020 +0200 - - plugins/auth-,catalog-backend: point types to src - -commit 5d11dba5dba32370ae54f0a668db7aefe844a8af -Author: Patrik Oldsberg -Date: Mon May 18 00:19:27 2020 +0200 - - packages/cli: keep comments in ts declarations - -commit 78a75669270bef8e8783c85a684ed76db59fbb02 -Author: Patrik Oldsberg -Date: Mon May 18 00:14:56 2020 +0200 - - docs: added more docs explaining the build setup - -commit 738704f1d18141a53aa8533ccb7fec0f50389825 -Author: Patrik Oldsberg -Date: Mon May 18 00:05:32 2020 +0200 - - packages/cli: fix for bundler looking for tsconfig in the wrong place - -commit d1d7c564e76333cab848fa6ba2f53f25e70e6757 -Author: Patrik Oldsberg -Date: Sun May 17 23:26:13 2020 +0200 - - github/workflows: update to new build setup - -commit 1d6b9564b3db0358698d98953d884342f3c22598 -Author: Patrik Oldsberg -Date: Sun May 17 21:13:13 2020 +0200 - - packages/cli: common yarn install for e2e tests + point to dist - -commit 5d61636f7f85734d2afd0a2b1eaf1ab754c82538 -Author: Patrik Oldsberg -Date: Sun May 17 20:59:50 2020 +0200 - - packages/cli: update app template for new build system - -commit 281f7d512e33f776e4b3781cfb7e0438121e5983 -Author: Patrik Oldsberg -Date: Sun May 17 17:42:33 2020 +0200 - - packages/core: list types as dependencies - -commit 12ef5f6764380107d0af094e5dad986174f583e4 -Author: Patrik Oldsberg -Date: Sun May 17 17:42:18 2020 +0200 - - packages/cli: make create-app patch entrypoints of local deps - -commit 65805ca70bec0d330fa6d23ae78f44c55aac132f -Author: Patrik Oldsberg -Date: Sun May 17 17:41:51 2020 +0200 - - packages: update root package.json and template tsconfig - -commit 7cb0bdb282979d6ef17a5d01a24afecc9c182b56 -Author: Patrik Oldsberg -Date: Sun May 17 16:56:17 2020 +0200 - - packages/cli: fix bad bundler loader options - -commit 176085e7a1c907318a305668025b6d819009847d -Author: Patrik Oldsberg -Date: Sun May 17 16:53:23 2020 +0200 - - packages/cli: skip caching of plugin builds - -commit 1dd33e8e33345157c91101e9376b4ab4644d35bd -Author: Patrik Oldsberg -Date: Sun May 17 16:44:47 2020 +0200 - - packages,plugins: remove extra tsconfig files - -commit 8cee042e13a685ed02b4e9ed67c08e2c974a68ce -Author: Patrik Oldsberg -Date: Sun May 17 16:23:23 2020 +0200 - - packages/storybook: point to src/ and use sucrase - -commit 04c66c14df94f26277ac74c62c048776e130e315 -Author: Patrik Oldsberg -Date: Sun May 17 16:13:20 2020 +0200 - - packages/cli: revert jest tranform to use ts-jest, as sucrase doesn't hoist mocks - -commit 1595bf11ddc85fe76cee9a6251a8f80c30527577 -Author: Patrik Oldsberg -Date: Sun May 17 15:15:24 2020 +0200 - - packages/cli: update jest config to point to src and use sucrase - -commit 7170a8c174432c9126238e2d09ab8ea6c0162a28 -Author: Patrik Oldsberg -Date: Sun May 17 13:25:17 2020 +0200 - - packages/cli: added d.ts rollup build to packager - -commit a2db7ff37d46c70bc0991bc3a2e95ba968086e44 -Author: Patrik Oldsberg -Date: Sun May 17 13:05:13 2020 +0200 - - packages/cli: support multiple packager configs - -commit 07cb8ed190c4515486c833049fa5edffcaf47f64 -Author: Patrik Oldsberg -Date: Sun May 17 12:50:30 2020 +0200 - - packages/cli: rename lib/bundle to bundler + serveBundle - -commit c0336122c05a1e751737d467c0f948c19af51205 -Author: Patrik Oldsberg -Date: Sun May 17 12:48:38 2020 +0200 - - tsconfig: switch to top-level type checking - -commit c9f435638ae5d3a878d498fd6eddc3d406d5a672 -Author: Patrik Oldsberg -Date: Sun May 17 12:46:57 2020 +0200 - - plugins/graphiql: add missing codemirror types - -commit 3445778b2b4b501fc048c23099e650f39c7f2664 -Author: Patrik Oldsberg -Date: Sun May 17 12:46:41 2020 +0200 - - plugins/{auth,catalog}-backend: type fix - -commit 0ccff561c0c997612e458a3c4c835e0a645102bb -Author: Patrik Oldsberg -Date: Sun May 17 12:45:58 2020 +0200 - - added patches for bad types in dependencies - -commit 1f159c0f99a4d1ecb08bbf711197c4e9e814c747 -Author: Patrik Oldsberg -Date: Sun May 17 11:48:42 2020 +0200 - - packages/cli: switch rollup to use esbuild - -commit b071dc0e9440be4883f8c3c0a5cabb8c8f18718b -Author: Patrik Oldsberg -Date: Sun May 17 11:12:52 2020 +0200 - - packages/cli: throw error message in packages instead of exit - -commit 590276c67779ed9df8d7ec9aa97a2530c115f8dc -Author: Patrik Oldsberg -Date: Sun May 17 11:06:39 2020 +0200 - - packages/cli: move rollup build to lib/packager - -commit f202e30c2c01ed74a0ca244a6e63499e28df17d9 -Author: Patrik Oldsberg -Date: Sun May 17 10:57:32 2020 +0200 - - packages/cli: removed plugin:build watch mode - -commit d1939be66417825245be519937a530ce628e91a2 -Author: Patrik Oldsberg -Date: Sat May 16 23:45:53 2020 +0200 - - packages/cli: extract css in bundle prod builds - -commit d911db4105d9f599406ef43c7b4048c67a09f678 -Author: Patrik Oldsberg -Date: Sat May 16 22:59:11 2020 +0200 - - packages/cli: rename bundle loaders to transforms and include plugins - -commit 33df212ae7f939a9188ebf0028f72ae6da9ef065 -Author: Patrik Oldsberg -Date: Sat May 16 20:25:49 2020 +0200 - - packages/cli: remove react-scripts dependency - -commit f3b54ae6180419951f927098ff9b044a852b503b -Author: Patrik Oldsberg -Date: Sat May 16 19:04:51 2020 +0200 - - packages/cli: pick up bundle html template from next to index - -commit 65220f3ef0334348857f10f111e0c41035f6e87b -Author: Patrik Oldsberg -Date: Sat May 16 19:01:20 2020 +0200 - - packages/cli: nicer bundle and chunk names for bundler - -commit 1694bbd7ccd35ea07b52d48a76cc6f219a4b0f2e -Author: Patrik Oldsberg -Date: Sat May 16 18:53:33 2020 +0200 - - packages/cli: separate dev and prod config - -commit 0de24c3ce946afcc2631166b20694670dbbba138 -Author: Patrik Oldsberg -Date: Sat May 16 18:50:38 2020 +0200 - - packages/cli: add basic bundle build and use for app:build - -commit 0fb2440d972c1298db2f047c796edc9df9129a3d -Author: Patrik Oldsberg -Date: Sat May 16 18:04:26 2020 +0200 - - packages/cli: add flag for toggling type checking as a part of plugin and app serve - -commit 5cb37b504a08551a924c54ac2ba2dabc0c04dca5 -Author: Patrik Oldsberg -Date: Sat May 16 17:50:32 2020 +0200 - - packages/cli: use bundle instead of react-scripts for app:start - -commit afae83ba8d3a536ccc6e32cfb9d0071684f3d211 -Author: Patrik Oldsberg -Date: Sat May 16 17:49:04 2020 +0200 - - packages/cli: make it possible to configure bundle entrypoint - -commit 989b13ca75bbf8e40a49a9d2eaa547921696efc9 -Author: Patrik Oldsberg -Date: Sat May 16 17:36:23 2020 +0200 - - packages/cli: tweak bundle dev server setup - -commit c744f5e4a38b58d48420aa135dc7ff8915b61e6c -Author: Patrik Oldsberg -Date: Sat May 16 17:23:39 2020 +0200 - - packages/cli: better HTTPS switch for bundle - -commit 9a123ac0a905944df2e646fcf924233f1daa4a36 -Author: Patrik Oldsberg -Date: Sat May 16 16:47:22 2020 +0200 - - packages/cli: add bundle chunk splitting optimization - -commit 8e8808993c4c7a6b65250fbd543d5d31af58d127 -Author: Patrik Oldsberg -Date: Sat May 16 16:41:03 2020 +0200 - - packages/cli: split bundle loaders into separate module - -commit 0f718ca55878ac8aa9b4866f4d87a8cc8a883b95 -Author: Patrik Oldsberg -Date: Sat May 16 16:36:14 2020 +0200 - - packages/cli: use asset loader for bundling all assets - -commit 9c3de313fcc2e4d45faf487bfd96a8a8618b337e -Author: Patrik Oldsberg -Date: Sat May 16 16:08:12 2020 +0200 - - packages/cli: remove redundant eslint-loader from bundle config - -commit 90aee3b1aa628b5af5ca788763af862b596b5e1a -Author: Patrik Oldsberg -Date: Sat May 16 16:07:18 2020 +0200 - - packages/cli,dev-utils: add react hot loading support - -commit 3643faf3d47d445fc0961b1e6c77435edcbefe29 -Author: Patrik Oldsberg -Date: Sat May 16 15:56:32 2020 +0200 - - packages/cli: switch bundling config to use sucrase - -commit a6376ee7f506b6e9537e88f60a1514921673c145 -Author: Patrik Oldsberg -Date: Sat May 16 12:33:14 2020 +0200 - - packages/cli: make plugin:serve point to src of deps - -commit fb78fb2da45c42373b4f43872a59e87a515a6c98 -Author: Patrik Oldsberg -Date: Sat May 16 12:15:07 2020 +0200 - - packages,plugins: add main:src package.json field to all built packages - -commit 34ad05575e73025694510f2e17cfa9b4112edbc6 -Author: Patrik Oldsberg -Date: Sat May 16 12:07:30 2020 +0200 - - packages/cli: move plugin serve config into lib - -commit 05941b7c5ac7728cfb7c5df97bea7fb0a5e7f18b -Merge: 5517a11a89 91c395830d -Author: Patrik Oldsberg -Date: Sun May 17 16:47:14 2020 +0200 - - Merge pull request #892 from spotify/rugvip/icons - - packages/cli: disallow importing all of @material-ui/icons - -commit 5517a11a89ec0ccc6f1539afa3958f3bb34c3aa6 -Author: Nick Noble -Date: Sat May 16 13:05:44 2020 -0400 - - Fix a typo (#893) - -commit 91c395830de32cd16779b096a0b3bd488c30eec4 -Author: Patrik Oldsberg -Date: Sat May 16 16:21:00 2020 +0200 - - packages/cli: disallow importing all of @material-ui/icons - -commit f4f687019bf0fa6d70d88c2e6d1cfe3a919d3511 -Merge: 75fc0fa706 a8a373bdad -Author: Patrik Oldsberg -Date: Sat May 16 11:29:20 2020 +0200 - - Merge pull request #877 from spotify/rugvip/toggle - - packages/app: move theme toggle sidebar item to core - -commit 75fc0fa706741d865d0dd6053ce1159baa4605ef -Merge: a3be133979 0563fde3b6 -Author: Patrik Oldsberg -Date: Fri May 15 19:08:34 2020 +0200 - - Merge pull request #876 from spotify/rugvip/theme - - package/core: make themes configurable as a part of app creation, and add API for switching themes - -commit 0563fde3b6f8380da922f7d795e9675e7e20ce8b -Author: Patrik Oldsberg -Date: Fri May 15 14:14:07 2020 +0200 - - packages/core: clearer naming in AppThemeProvider - -commit af934d41736d463aae1aa58f6449ae9d1e1f9099 -Author: Patrik Oldsberg -Date: Fri May 15 17:58:15 2020 +0200 - - docs: add docs for how to create and use custom themes - -commit a3be13397977f368cb88283101d80563c548d1f8 -Merge: 9fc9f972fc d17b62cd31 -Author: Patrik Oldsberg -Date: Fri May 15 15:43:17 2020 +0200 - - Merge pull request #888 from spotify/rugvip/themeoptions - - packages/theme: make it easier no override default font - -commit 9fc9f972fc31e05a31826513f3e731faca568c05 -Author: Wojciech Adaszyński -Date: Fri May 15 15:40:15 2020 +0200 - - Add component page with unregister button (#866) - - * Add component page with unregister button - - * Use errorApi and redirect on ComponentPage - - Co-authored-by: Wojciech Adaszynski - -commit d17b62cd31d93ef1dc09a1a70cda9d1229d79e0d -Author: Patrik Oldsberg -Date: Fri May 15 15:27:30 2020 +0200 - - packages/theme: make it easier no override default font - -commit 95f1500866bcae707973da9f93c723664bccdf87 -Author: Ivan Shmidt -Date: Fri May 15 15:23:03 2020 +0200 - - feat: external link - -commit e7c8369c32c81b412115d9466ca3fb3aad521976 -Merge: de7c553a0a 7cbd6f5b20 -Author: Raghunandan Balachandran -Date: Fri May 15 15:16:25 2020 +0200 - - Merge pull request #879 from spotify/auth-backend-skeleton - - Auth Backend: add a skeleton service - -commit 7cbd6f5b20ad567d4033d4345cc0f4315088dbda -Author: Raghunandan -Date: Fri May 15 13:02:25 2020 +0200 - - add a skeleton service for auth - -commit 360be6f9357999f82e9176d017c6a55cd20f4f05 -Merge: 6bee3ce985 de7c553a0a -Author: Ivan Shmidt -Date: Fri May 15 14:36:52 2020 +0200 - - Merge branch 'master' of github.com:spotify/backstage into catalog/deduplicate-locations - -commit 6bee3ce985a5de59dd87d6d230e997bafb40822c -Author: Ivan Shmidt -Date: Fri May 15 14:25:07 2020 +0200 - - feat: deduplicate locations on insert - -commit 1720b5ea8eeb4187e3ebd7bce0739a51c50ea933 -Merge: b4ef484e85 de7c553a0a -Author: Nikita Nek Dudnik -Date: Fri May 15 14:18:45 2020 +0200 - - Merge remote-tracking branch 'upstream/master' - -commit f3abf95f7f33d9f62f32037bd14f55a25f83f456 -Author: Patrik Oldsberg -Date: Fri May 15 14:13:24 2020 +0200 - - packages/core: fix localStorage check in AppThemeSelector - -commit de7c553a0adb4d5f0eca7032f7beb5da113a2022 -Merge: 16df7e9ce0 303fd521da -Author: Fredrik Adelöw -Date: Fri May 15 13:01:41 2020 +0200 - - Merge pull request #869 from spotify/freben/refresh-split - - Separate out and generalise concerns of reading and parsing - -commit b4ef484e8591c7b8be0d06d8e741d9f452d62487 -Author: Nikita Nek Dudnik -Date: Fri May 15 11:49:38 2020 +0200 - - fix: replace missing icons - -commit 28f71fb0d98d25d032b5a9f9076abf77f93151a2 -Merge: 9949ee6880 e3972a527e -Author: Nikita Nek Dudnik -Date: Fri May 15 11:37:02 2020 +0200 - - Merge remote-tracking branch 'upstream/master' - -commit 303fd521da3aaa42eb31ebe62e41d48f47115e05 -Author: Fredrik Adelöw -Date: Thu May 14 16:07:41 2020 +0200 - - Separate out and generalize concerns of reading and parsing - -commit a8a373bdad258c480493d629cd5cf2ef1b2553e6 -Author: Patrik Oldsberg -Date: Fri May 15 10:47:36 2020 +0200 - - packages/app: move theme toggle sidebar item to core - -commit 16df7e9ce06f6567162f33267b4ec58d3e150446 -Merge: e3972a527e 4a0f37b98a -Author: Patrik Oldsberg -Date: Fri May 15 10:38:30 2020 +0200 - - Merge pull request #867 from spotify/rugvip/createApp - - packages/core: refactor createApp to just take options + separate out AppContext - -commit e3972a527e6dfeb8e5466a6c5ce5cb46494dfdc7 -Merge: b16ad78bee 75395ecff1 -Author: Patrik Oldsberg -Date: Fri May 15 10:13:32 2020 +0200 - - Merge pull request #862 from spotify/rugvip/pc - - packages/cli: add publish config sync to plugin:diff - -commit a386750b7da8ea7e58106593ecbe847613f08872 -Author: Patrik Oldsberg -Date: Fri May 15 10:03:33 2020 +0200 - - packages/cli: remove reduntant theme provider from app template - -commit 6b5ac0a8e102adf90bfc4154e07276002d4e18ba -Author: Patrik Oldsberg -Date: Fri May 15 09:37:04 2020 +0200 - - packages/dev-utils: remove redundant theme wrapping - -commit 30c082bc40ae815c93349d696749bf6fac4c74b2 -Author: Patrik Oldsberg -Date: Fri May 15 09:29:03 2020 +0200 - - packages/app: switch to using theme config - -commit 77d989f3835d79889f800874b7cf472ebb547af1 -Author: Patrik Oldsberg -Date: Fri May 15 09:28:37 2020 +0200 - - packages/core: fix for AppThemeProvider and use it in App Provider - -commit d9f0d734cfeedfc132a8f516aa0575c4a82369ec -Author: Patrik Oldsberg -Date: Fri May 15 09:25:18 2020 +0200 - - packages/core: simplify app theme configuration - -commit 75733e2857c75c866c9cc0884cee112ef5eb2ca3 -Author: Patrik Oldsberg -Date: Fri May 15 01:18:56 2020 +0200 - - packages/core: make AppThemeProvider listen for media query changes - -commit 152aa51a2821816eaabb232ba7316286f7c86435 -Author: Patrik Oldsberg -Date: Fri May 15 01:03:56 2020 +0200 - - packages/core: added localStorage support for AppThemeSelector - -commit 05ac0bef26d88a73d6c0dbde38f0737e7c6cf1db -Author: Patrik Oldsberg -Date: Fri May 15 00:46:59 2020 +0200 - - packages/core: added AppThemeSelector - -commit b8e3f9736ee4d2d6271c28460340b88ec22d74b6 -Author: Patrik Oldsberg -Date: Fri May 15 00:09:23 2020 +0200 - - packages/core: added ApiAggregator class - -commit 5de9517d2cfed1a9e1c5d52cc3a9af02f08e8dc0 -Author: Patrik Oldsberg -Date: Thu May 14 21:32:31 2020 +0200 - - packages/core: tweak AppThemeApi and add AppThemeProvider - -commit 66adb0dfe7ae277039033cbcee82dce94db24dc6 -Author: Patrik Oldsberg -Date: Thu May 14 17:30:56 2020 +0200 - - packages/core: added theme options to createApp - -commit 2d365809f1c965817e2e99b92e45a59001b9a175 -Author: Patrik Oldsberg -Date: Thu May 14 16:53:03 2020 +0200 - - packages/core: added initial AppThemeApi - -commit 4a0f37b98a5cdba4527536bbed443463786938d6 -Author: Patrik Oldsberg -Date: Thu May 14 15:56:57 2020 +0200 - - packages/cli: update app template to use new createApp - -commit ce55e67f31b1dd3deaf09032b8a2106e4b704747 -Author: Patrik Oldsberg -Date: Thu May 14 15:36:26 2020 +0200 - - packages/core: refactor createApp to just take options + separate out AppContext - -commit 299589040faf7ff112cd8c74625a0103f03f54fa -Author: Patrik Oldsberg -Date: Thu May 14 15:14:24 2020 +0200 - - packages/core: use useHistory in ErrorPage instead of passing via props - -commit b16ad78bee48f576c7050e74fdddeb1146b930c5 -Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> -Date: Fri May 15 08:57:18 2020 +0200 - - build(deps-dev): bump tsc-watch from 4.2.3 to 4.2.5 (#873) - - Bumps [tsc-watch](https://github.com/gilamran/tsc-watch) from 4.2.3 to 4.2.5. - - [Release notes](https://github.com/gilamran/tsc-watch/releases) - - [Changelog](https://github.com/gilamran/tsc-watch/blob/master/CHANGELOG.md) - - [Commits](https://github.com/gilamran/tsc-watch/commits) - - Signed-off-by: dependabot-preview[bot] - - Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> - -commit 0f57dd2aacbcfc3e65be3170828cc0b979fb1107 -Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> -Date: Fri May 15 08:54:56 2020 +0200 - - build(deps): bump rc-progress from 2.5.3 to 3.0.0 (#872) - - Bumps [rc-progress](https://github.com/react-component/progress) from 2.5.3 to 3.0.0. - - [Release notes](https://github.com/react-component/progress/releases) - - [Changelog](https://github.com/react-component/progress/blob/master/HISTORY.md) - - [Commits](https://github.com/react-component/progress/compare/2.5.3...3.0.0) - - Signed-off-by: dependabot-preview[bot] - - Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> - -commit 6e4d7866ce2d0bc227c980ddf5af9f8860331208 -Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> -Date: Fri May 15 08:36:04 2020 +0200 - - build(deps): bump @rollup/plugin-json from 4.0.2 to 4.0.3 (#874) - - Bumps [@rollup/plugin-json](https://github.com/rollup/plugins) from 4.0.2 to 4.0.3. - - [Release notes](https://github.com/rollup/plugins/releases) - - [Commits](https://github.com/rollup/plugins/compare/url-v4.0.2...json-v4.0.3) - - Signed-off-by: dependabot-preview[bot] - - Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> - -commit f6d9b18a4e047eb2380609fc50d848866f5cfbbe -Author: Bilawal Hameed -Date: Thu May 14 17:54:51 2020 +0200 - - fix: add blog post for tech radar (#870) - -commit 218f38f569c318a49028dd410a0f8f39ad29f0bd -Merge: 4ffea230fc ebab927425 -Author: Patrik Oldsberg -Date: Thu May 14 17:48:49 2020 +0200 - - Merge pull request #868 from spotify/rugvip/APIS - - packages/core: rename api definitions to CamelCaseApi - -commit 9949ee68808dbccba113f539d9eb368b45ab242c -Author: Nikita Nek Dudnik -Date: Thu May 14 17:15:16 2020 +0200 - - Implement useAsyncPolling - -commit ebab9274254e30dafe9f83f22b341de72dfb3e7e -Author: Patrik Oldsberg -Date: Thu May 14 16:12:05 2020 +0200 - - packages/core: rename api definitions to CamelCaseApi - -commit ab9f48ab103be720ec22d4a2c1b4c0a52ebb1370 -Merge: 1627b490b4 9ff391681b -Author: Ivan Shmidt -Date: Thu May 14 16:13:21 2020 +0200 - - Merge pull request #11 from Nek/feature/state - - Feature/state - -commit 9ff391681bfe7af53f10017f111a12355a716848 -Author: Ivan Shmidt -Date: Thu May 14 16:07:46 2020 +0200 - - refactor: renaming - -commit 4ffea230fcf5ecc9f29c1b42a8ed4a38a3549575 -Merge: 8658bc1a2a 9a2d473346 -Author: Fredrik Adelöw -Date: Thu May 14 16:06:01 2020 +0200 - - Merge pull request #863 from spotify/freben/responsibility - - Link components to the location that created them - -commit bd2ac2c68357cfdf10998d12474b73334babf0b5 -Author: Ivan Shmidt -Date: Thu May 14 16:05:22 2020 +0200 - - refactor: move state - - Co-authored-by: Patrik Oldsberg - Co-authored-by: Nikita Dudnik - -commit 8658bc1a2a12a213b02b45d2834f49988d5a0ad1 -Merge: a82d2a523d f0b97f5ff9 -Author: Niklas Ek -Date: Thu May 14 15:50:20 2020 +0200 - - Merge pull request #865 from spotify/nikek/bools - - fix(catalog-backend): Make env string 'false' set cors to false - -commit a82d2a523d1bf5dabb01c5f1f4c8e7433bc7d4ae -Merge: d10325da29 2414267cc0 -Author: Patrik Oldsberg -Date: Thu May 14 15:48:34 2020 +0200 - - Merge pull request #864 from spotify/rugvip/srct - - packages,plugins: point types to src/ for development - -commit f0b97f5ff98657b37d69989c885fefb99e755e42 -Author: nikek -Date: Thu May 14 15:04:18 2020 +0200 - - make env string 'false' set cors to false - -commit 3e1854f805d29575105859f2bcabb2aa10ea3272 -Merge: 6a3cc27048 34e021ff59 -Author: Nikita Dudnik -Date: Thu May 14 14:34:39 2020 +0200 - - Merge pull request #12 from Nek/feat/state-routing - - feat: routing - -commit 34e021ff596ee67226a6f51dd2d202556c45b5e8 -Author: Ivan Shmidt -Date: Thu May 14 14:32:58 2020 +0200 - - feat: routing - -commit 2414267cc05083629cc1ce05a3dbbb57fd8d0164 -Author: Patrik Oldsberg -Date: Thu May 14 14:25:05 2020 +0200 - - tsconfig: skip declaration map creation - -commit 682d9ce6125cec397cad1ff4c3719993a8c0d1e4 -Author: Patrik Oldsberg -Date: Thu May 14 12:03:02 2020 +0200 - - packages,plugins: point types to src/ for development + add pre/post back cli commands - -commit d10325da2945c19520252e52aecdb428490950a3 -Merge: a038b5595e d76f8714a4 -Author: Patrik Oldsberg -Date: Thu May 14 13:47:50 2020 +0200 - - Merge pull request #860 from spotify/rugvip/cleandist - - packages,plugins: only publish .js and .d.ts files in dist - -commit a038b5595e07602ffef874ff2c330bb816e6ee9d -Merge: 71ead7eb35 b23c6d3276 -Author: Marcus Eide -Date: Thu May 14 13:19:20 2020 +0200 - - Merge pull request #816 from spotify/dependabot/npm_and_yarn/rollup-plugin-postcss-3.1.1 - - build(deps): bump rollup-plugin-postcss from 2.5.0 to 3.1.1 - -commit 9a2d473346cd00ac9bd11268041af35b06f2fe51 -Author: Fredrik Adelöw -Date: Thu May 14 13:16:04 2020 +0200 - - Link components to the location that created them - -commit 71ead7eb35be8133ccb56d1eb96c0093abbd884f -Merge: 920607ea8b 4fb230e48f -Author: Patrik Oldsberg -Date: Thu May 14 12:01:11 2020 +0200 - - Merge pull request #861 from spotify/rugvip/nodiff - - github/workflows: add check to make sure plugin templates stay in sync - -commit 75395ecff189e69c02229f4e117ab5a404ee282e -Author: Patrik Oldsberg -Date: Thu May 14 11:51:45 2020 +0200 - - packages/cli: add publish config sync to plugin:diff - -commit 6a3cc270487f7ce7e8bc816180cc9a09cb42e866 -Author: Ivan Shmidt -Date: Thu May 14 11:53:25 2020 +0200 - - refactor: remove redux, some rearrangement - -commit 920607ea8bb59b00b3899b81e35bbb1d827a7909 -Merge: 3077fa9965 eec599738d -Author: Patrik Oldsberg -Date: Thu May 14 11:44:37 2020 +0200 - - Merge pull request #852 from spotify/rugvip/oauth - - packages/core: lift out and adapt internal oauth request API - -commit 3077fa99657bf724050d06d2c5e420097021ec24 -Merge: 47b3efffe9 922e783150 -Author: Fredrik Adelöw -Date: Thu May 14 11:44:11 2020 +0200 - - Merge pull request #847 from spotify/mob/refreshlogic - - Move out the refresh logic into a separate class - -commit 47b3efffe93816c2a90a3e5884fb129854aaff3a -Merge: 579ba54480 97711d2cc4 -Author: Patrik Oldsberg -Date: Thu May 14 11:42:08 2020 +0200 - - Merge pull request #859 from spotify/rugvip/cleancli - - packages/cli: only ship js files in dist - -commit 7b424c0337cdd0ecfc7e8f3ea34804e65c10aa31 -Author: Ivan Shmidt -Date: Thu May 14 11:38:39 2020 +0200 - - refactor: detailedViewPage moved to hooks - - Co-authored-by: Nikita Dudnik - -commit 4fb230e48f1d851c587857b3bf85ea9bb40b06ff -Author: Patrik Oldsberg -Date: Thu May 14 11:37:33 2020 +0200 - - github/workflows: add check to make sure plugin templates stay in sync - -commit b4afc0bc9b36bf675d337a5bb010fb979a51b5c7 -Author: Patrik Oldsberg -Date: Thu May 14 11:36:15 2020 +0200 - - package.json: add root lerna diff command - -commit bdec811fe1736d119040aa48664dbf09c120ca87 -Author: Patrik Oldsberg -Date: Thu May 14 11:34:21 2020 +0200 - - packages/cli: update templates to use latest @types/jest version - -commit d76f8714a44f4e93859205663c74c08f46cbd1d2 -Author: Patrik Oldsberg -Date: Thu May 14 11:31:35 2020 +0200 - - packages,plugins: only publish .js and .d.ts files in dist - -commit 97711d2cc412c3af3c82dfa05331531bc9598a80 -Author: Patrik Oldsberg -Date: Thu May 14 11:17:13 2020 +0200 - - packages/cli: only ship js files in dist - -commit eec599738d436fa467251a388841be4c9a0d9041 -Author: Patrik Oldsberg -Date: Thu May 14 11:02:35 2020 +0200 - - packages/core: naming and docs updates for OAuthRequest API - -commit 1c50ded618dddadc85b299652cc42ef7310b253f -Author: Patrik Oldsberg -Date: Thu May 14 01:17:32 2020 +0200 - - packages/core: added some basic docs for OAuthRequestManager - -commit c689244a177c32a43feb56a4f3b19f1698b788d2 -Author: Patrik Oldsberg -Date: Thu May 14 00:48:34 2020 +0200 - - packages/core: added OAuthRequestDialog - -commit 5553d2dc94ed8b22a26f13fef87747b695a3b0f9 -Author: Patrik Oldsberg -Date: Thu May 14 00:45:34 2020 +0200 - - bump react-use to 14.2.0 + add to core - -commit 08732d57d0548d25e4ea358ed4af266478d37ffe -Author: Patrik Oldsberg -Date: Thu May 14 00:35:46 2020 +0200 - - packages/core: add implementation of OAuthRequest API - -commit 348e35d60b8ce6ee07225957ea0a6c8ef910c16d -Author: Patrik Oldsberg -Date: Thu May 14 00:35:06 2020 +0200 - - packages/core: added zen-observable dependency - -commit 4cd23d0231dfabbc7c00360db14e12ddb14bdf6e -Author: Patrik Oldsberg -Date: Thu May 14 00:22:40 2020 +0200 - - packages/core: added oauthRequest API definition - -commit 150908ae5500992b441e3e6159f4c5e8a3cc0cfc -Author: Patrik Oldsberg -Date: Thu May 14 00:12:23 2020 +0200 - - packages/core: add common Observable type based on TC39 - -commit aac4ac0df62b4d884a356b59e04582287cd7c0dd -Author: Nikita Nek Dudnik -Date: Thu May 14 10:47:23 2020 +0200 - - Fix builds polling - -commit 579ba544805163d589ce5ab7279dc6ace2bcda98 -Merge: 685c962a94 3f00f82e28 -Author: Patrik Oldsberg -Date: Thu May 14 10:35:08 2020 +0200 - - Merge pull request #850 from spotify/rugvip/cleancore - - packages/core: use cleaner tree of index files in api + remove default exports - -commit 685c962a947b3ace63bfbd9937d11ee5a78091f9 -Author: Victor Viale -Date: Thu May 14 09:38:43 2020 +0200 - - Use the /contribute URL for the Good First Issues link (#858) - - GitHub proposes a `/contribute` URL as a page to get people into contributing, which declutters the usual issues page a bit. - Issuing this PR as a suggestion, feel free to close it. - - Example: https://github.com/spotify/backstage/contribute - -commit 922e7831500dad2d3bdbd99d8e92e4f947d432a3 -Author: Fredrik Adelöw -Date: Thu May 14 09:31:04 2020 +0200 - - Address comments - -commit 2d3412cf34e499ce60f8120ba466df1e20683dbf -Author: Kat Zhou <61153904+katz95@users.noreply.github.com> -Date: Thu May 14 09:08:06 2020 +0200 - - Contributor Header (#580) - -commit 359649086f6b9f940b82064b755352951e17b61f -Author: Wojciech Adaszyński -Date: Thu May 14 08:46:45 2020 +0200 - - Add component table front-end (#848) - - Co-authored-by: Wojciech Adaszynski - -commit b23c6d3276e1a497d6f2a4a1cca1cf7d666c65fc -Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> -Date: Thu May 14 06:44:01 2020 +0000 - - build(deps): bump rollup-plugin-postcss from 2.5.0 to 3.1.1 - - Bumps [rollup-plugin-postcss](https://github.com/egoist/rollup-plugin-postcss) from 2.5.0 to 3.1.1. - - [Release notes](https://github.com/egoist/rollup-plugin-postcss/releases) - - [Changelog](https://github.com/egoist/rollup-plugin-postcss/blob/master/CHANGELOG-OLD.md) - - [Commits](https://github.com/egoist/rollup-plugin-postcss/compare/v2.5.0...v3.1.1) - - Signed-off-by: dependabot-preview[bot] - -commit 5ed0ec374a8ae9da715efa4e7b1254c9e0c8383f -Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> -Date: Thu May 14 08:39:16 2020 +0200 - - build(deps): bump ts-loader from 6.2.1 to 7.0.4 (#838) - - Bumps [ts-loader](https://github.com/TypeStrong/ts-loader) from 6.2.1 to 7.0.4. - - [Release notes](https://github.com/TypeStrong/ts-loader/releases) - - [Changelog](https://github.com/TypeStrong/ts-loader/blob/master/CHANGELOG.md) - - [Commits](https://github.com/TypeStrong/ts-loader/compare/v6.2.1...v7.0.4) - - Signed-off-by: dependabot-preview[bot] - - Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> - -commit da149fc19528486dd421e379d4865ef9b97c8245 -Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> -Date: Thu May 14 08:38:53 2020 +0200 - - build(deps-dev): bump @types/jquery from 3.3.34 to 3.3.38 (#854) - - Bumps [@types/jquery](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jquery) from 3.3.34 to 3.3.38. - - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jquery) - - Signed-off-by: dependabot-preview[bot] - - Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> - -commit dbf0ae6cbac114f95c3ef8657bbf8a80b9006bd5 -Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> -Date: Thu May 14 08:38:26 2020 +0200 - - build(deps-dev): bump @types/supertest from 2.0.8 to 2.0.9 (#857) - - Bumps [@types/supertest](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/supertest) from 2.0.8 to 2.0.9. - - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/supertest) - - Signed-off-by: dependabot-preview[bot] - - Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> - -commit da034b0ef6c4d7991ba6b42070390d1aaca15e9d -Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> -Date: Thu May 14 08:37:41 2020 +0200 - - build(deps-dev): bump @types/yup from 0.28.2 to 0.28.3 (#855) - - Bumps [@types/yup](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/yup) from 0.28.2 to 0.28.3. - - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/yup) - - Signed-off-by: dependabot-preview[bot] - - Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> - -commit 1b6a9538c1cf78b7747a6ca4d475a3a96ede053f -Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> -Date: Thu May 14 08:37:24 2020 +0200 - - build(deps-dev): bump @storybook/addon-links from 5.3.17 to 5.3.18 (#856) - - Bumps [@storybook/addon-links](https://github.com/storybookjs/storybook/tree/HEAD/addons/links) from 5.3.17 to 5.3.18. - - [Release notes](https://github.com/storybookjs/storybook/releases) - - [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md) - - [Commits](https://github.com/storybookjs/storybook/commits/v5.3.18/addons/links) - - Signed-off-by: dependabot-preview[bot] - - Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> - -commit 64bd3982c315952fc7c44449e72a557b2aa707f0 -Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> -Date: Thu May 14 08:37:04 2020 +0200 - - build(deps-dev): bump nodemon from 2.0.2 to 2.0.3 (#853) - - Bumps [nodemon](https://github.com/remy/nodemon) from 2.0.2 to 2.0.3. - - [Release notes](https://github.com/remy/nodemon/releases) - - [Commits](https://github.com/remy/nodemon/compare/v2.0.2...v2.0.3) - - Signed-off-by: dependabot-preview[bot] - - Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> - -commit 7f56215da6c58c7e7ee9ec0df3dc28ea4a7b8b24 -Author: Nikita Nek Dudnik -Date: Wed May 13 19:08:41 2020 +0200 - - Add non working settings implemented with hooks - -commit 3f00f82e28de4785e4a4b82c06f32dc38941291b -Author: Patrik Oldsberg -Date: Wed May 13 18:47:53 2020 +0200 - - packages/core: use cleaner tree of index files in api + remove default exports - -commit a0d59c1472a7db40393b92ff3f2d157a41042b1f -Merge: 114ef404c2 7cb381b664 -Author: Patrik Oldsberg -Date: Wed May 13 18:05:38 2020 +0200 - - Merge pull request #837 from spotify/dependabot/npm_and_yarn/replace-in-file-6.0.0 - - build(deps): bump replace-in-file from 5.0.2 to 6.0.0 - -commit ba2b19d4c0b3086b378307ebc244d984986f953e -Author: Nikita Nek Dudnik -Date: Wed May 13 17:36:02 2020 +0200 - - Add missing file - -commit 7cb381b664858995f3da0c82ce0db77d5d3985e6 -Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> -Date: Wed May 13 15:07:22 2020 +0000 - - build(deps): bump replace-in-file from 5.0.2 to 6.0.0 - - Bumps [replace-in-file](https://github.com/adamreisnz/replace-in-file) from 5.0.2 to 6.0.0. - - [Release notes](https://github.com/adamreisnz/replace-in-file/releases) - - [Changelog](https://github.com/adamreisnz/replace-in-file/blob/master/CHANGELOG.md) - - [Commits](https://github.com/adamreisnz/replace-in-file/commits) - - Signed-off-by: dependabot-preview[bot] - -commit 114ef404c242bfafe3aa3e0a64472b2edab5975b (tag: v0.1.1-alpha.5) -Merge: 4b260bf70a 2bde9d3854 -Author: Patrik Oldsberg -Date: Wed May 13 17:00:51 2020 +0200 - - Merge pull request #807 from spotify/rugvip/release - - Release v0.1.1-alpha.5 - -commit 2bde9d385458f6eb106bc35b177e9c2fc70844a2 -Author: Patrik Oldsberg -Date: Wed May 13 16:28:41 2020 +0200 - - v0.1.1-alpha.5 - -commit 4b260bf70a8820dc6f7135d376ef79d6a9a97008 -Merge: 0f0f0405ff 930752a453 -Author: Patrik Oldsberg -Date: Wed May 13 16:22:53 2020 +0200 - - Merge pull request #836 from spotify/dependabot/npm_and_yarn/types/helmet-0.0.47 - - build(deps-dev): bump @types/helmet from 0.0.45 to 0.0.47 - -commit 0f0f0405ff9b0e5ece8195c4e5bd549ee74db1f2 -Merge: fb54d1d300 ab5c7c533c -Author: Patrik Oldsberg -Date: Wed May 13 16:22:18 2020 +0200 - - Merge pull request #819 from spotify/dependabot/npm_and_yarn/types/jest-25.2.1 - - build(deps): bump @types/jest from 24.9.1 to 25.2.1 - -commit d86baf0ec53ebb104b6d5ed5500963e0ea408689 -Author: Fredrik Adelöw -Date: Wed May 13 11:57:22 2020 +0200 - - Move out the refresh logic into a separate class - -commit fb54d1d300143070f77971805f5dad76fc19d875 -Merge: 9c4317ea39 29abee4c31 -Author: Patrik Oldsberg -Date: Wed May 13 15:53:41 2020 +0200 - - Merge pull request #844 from spotify/rugvip/release-fix - - packages/cli: fix create-app package resolution in e2e test mode - -commit 9c4317ea3907343f83df2297ff8496645faae388 -Merge: fdbd650902 5753652dd4 -Author: Niklas Ek -Date: Wed May 13 15:22:02 2020 +0200 - - Merge pull request #831 from Nishikoh/stop-animation - - Change 'Running' status to static - -commit fdbd650902f005d70a3c0725a2e92c044e96863d -Merge: c61400c6e7 6faf3709d6 -Author: Patrik Oldsberg -Date: Wed May 13 15:21:27 2020 +0200 - - Merge pull request #757 from spotify/rugvip/nav-targets - - packages/core: added basic nav target implementation - -commit 6faf3709d649024dcde0cc6fb389991bed0882da -Author: Patrik Oldsberg -Date: Fri May 8 12:41:25 2020 +0200 - - packages/core: fix layout/Sidebar icon prop type - -commit aa7eb96829126feff1839355d4b0cd3d56ec3f72 -Author: Patrik Oldsberg -Date: Fri May 8 12:26:32 2020 +0200 - - plugins/graphiql: use nav-target route - -commit 14c551c616954fa8df0b3ad13ca45c2f482aeb36 -Author: Patrik Oldsberg -Date: Fri May 8 12:25:36 2020 +0200 - - packages/dev-utils: add nav targets to the sidebar - -commit 97877ca296a08ac0c7009e6be64a1052dd584260 -Author: Patrik Oldsberg -Date: Fri May 8 12:25:05 2020 +0200 - - packages/core: new addRoute to router hook that adds a nav-target route - -commit f298700ba98bb6c62796c4a008aa1bd803b23eeb -Author: Patrik Oldsberg -Date: Sun May 3 17:44:48 2020 +0200 - - packages/core: added basic nav target implementation - -commit 29abee4c3165b8604dbcaf04679ebfaebe599427 -Author: Patrik Oldsberg -Date: Wed May 13 12:09:27 2020 +0200 - - packages/cli: fix create-app package resolution in e2e test mode - -commit c61400c6e759b669b31e7d633b836edde2f1521b -Merge: 06fef794b0 1579a9dded -Author: Patrik Oldsberg -Date: Wed May 13 14:55:26 2020 +0200 - - Merge pull request #846 from spotify/rugvip/testem - - github/workflows: run all tests on yarn.lock changes - -commit 5753652dd4f00b756d2f9d1580dd541950ad6009 -Author: KoukiNishihara -Date: Wed May 13 03:26:11 2020 +0900 - - Refactor background on animation - -commit 78c3c08de7149b021fbcc44b5c62285287aaa036 -Author: KoukiNishihara -Date: Wed May 13 03:05:27 2020 +0900 - - Delete animation - -commit ab5c7c533cdf3bcf96ffdd196f48170a6a1b668f -Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> -Date: Wed May 13 12:29:29 2020 +0000 - - build(deps): bump @types/jest from 24.9.1 to 25.2.1 - - Bumps [@types/jest](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jest) from 24.9.1 to 25.2.1. - - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jest) - - Signed-off-by: dependabot-preview[bot] - -commit 1579a9dded713a797b62fe8c6bc116f6a51af3ba -Author: Patrik Oldsberg -Date: Wed May 13 14:28:30 2020 +0200 - - github/workflows: run all tests on changes to yarn.lock - -commit f577f50fdcde687b95d086c297bd2504bfa3e3c8 -Author: Patrik Oldsberg -Date: Wed May 13 13:50:52 2020 +0200 - - github/workflows: run cli workflow on yarn.lock changes - -commit 06fef794b01c4bf2070a3609df248ffe2170f114 -Merge: 2d0c1afe62 1713fac765 -Author: Patrik Oldsberg -Date: Wed May 13 14:23:30 2020 +0200 - - Merge pull request #845 from spotify/rugvip/bumproute - - packages,plugins: bump react-router-dom to 5.2.0 - -commit 1713fac765c7f9b7f8f14811903ac7a543eef45b -Author: Patrik Oldsberg -Date: Wed May 13 13:56:56 2020 +0200 - - packages,plugins: bump react-router-dom to 5.2.0 - -commit 2d0c1afe624e73258aed26ca5b23d38ab77d47e4 -Merge: eb2b85fba4 9114a08081 -Author: Fredrik Adelöw -Date: Wed May 13 11:09:27 2020 +0200 - - Merge pull request #842 from spotify/mob/rearrange - - Rearrange ingestion and descriptor parsing - -commit 9114a08081856bfa1cec63132a2c5b17aeee9964 -Author: Fredrik Adelöw -Date: Wed May 13 10:34:53 2020 +0200 - - Rearrange ingestion and descriptor parsing - -commit eb2b85fba4dd3d4a8bd22a3f7c7ddb66ef52a2e3 -Merge: 23e2bf1e05 92ec964b98 -Author: Fredrik Adelöw -Date: Wed May 13 10:33:47 2020 +0200 - - Merge pull request #829 from spotify/mob/refresh - - Implement first-light location refresh loop - -commit 23e2bf1e055b3f83a4e5965ed9e2bb9889b3ccd4 -Merge: b103a16c88 b9604720a6 -Author: Niklas Ek -Date: Wed May 13 10:32:30 2020 +0200 - - Merge pull request #839 from spotify/dependabot/npm_and_yarn/react-router-5.2.0 - - build(deps): bump react-router from 5.1.2 to 5.2.0 - -commit 930752a453e5ad29181e2f020bf98eb99ea2932d -Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> -Date: Wed May 13 07:29:35 2020 +0000 - - build(deps-dev): bump @types/helmet from 0.0.45 to 0.0.47 - - Bumps [@types/helmet](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/helmet) from 0.0.45 to 0.0.47. - - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/helmet) - - Signed-off-by: dependabot-preview[bot] - -commit b103a16c88d59f06910c986a3439351df9f8f32c -Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> -Date: Wed May 13 09:27:47 2020 +0200 - - build(deps): bump @lerna/project from 3.18.0 to 3.21.0 (#840) - - Bumps [@lerna/project](https://github.com/lerna/lerna/tree/HEAD/core/project) from 3.18.0 to 3.21.0. - - [Release notes](https://github.com/lerna/lerna/releases) - - [Changelog](https://github.com/lerna/lerna/blob/master/core/project/CHANGELOG.md) - - [Commits](https://github.com/lerna/lerna/commits/v3.21.0/core/project) - - Signed-off-by: dependabot-preview[bot] - - Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> - -commit 37c2c8f671fb7224f0c2819583a75d75261c8976 -Merge: 3435ae9a13 1e8ad4b163 -Author: Fredrik Adelöw -Date: Wed May 13 09:24:28 2020 +0200 - - Merge pull request #841 from spotify/freben/ts39 - - Bump TS to 3.9 - -commit 061ffc60ac8535bc22e3216b1a9b8e921846f1b0 -Author: Nikita Nek Dudnik -Date: Wed May 13 09:14:34 2020 +0200 - - Clean up comments - -commit 1e8ad4b1631b1dc756e19d7fa84162f32966d550 -Author: Fredrik Adelöw -Date: Wed May 13 08:34:08 2020 +0200 - - Bump TS to 3.9 - -commit b9604720a6bbdd4897282594a8662903135ea052 -Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> -Date: Wed May 13 06:27:52 2020 +0000 - - build(deps): bump react-router from 5.1.2 to 5.2.0 - - Bumps [react-router](https://github.com/ReactTraining/react-router) from 5.1.2 to 5.2.0. - - [Release notes](https://github.com/ReactTraining/react-router/releases) - - [Changelog](https://github.com/ReactTraining/react-router/blob/master/CHANGELOG.md) - - [Commits](https://github.com/ReactTraining/react-router/compare/v5.1.2...v5.2.0) - - Signed-off-by: dependabot-preview[bot] - -commit 3435ae9a134ed2184a162ddd143babc8c7c09013 -Author: Wojciech Adaszyński -Date: Wed May 13 08:11:06 2020 +0200 - - Add Register Component plugin (#826) - - Co-authored-by: Wojciech Adaszynski - -commit 408435eb842dbcbeaa9f042528464a92b390536f -Author: Nikita Nek Dudnik -Date: Tue May 12 18:03:39 2020 +0200 - - Move settings effects into a hook - -commit 86350c23a2ceca9ddd071da8c5cdb010405d1c5f -Author: Nikita Nek Dudnik -Date: Tue May 12 17:15:05 2020 +0200 - - Break stuff but add useReducer for settings - -commit 92ec964b98ab4deb509d3dc52415a7d05caa6b1e -Author: Fredrik Adelöw -Date: Tue May 12 16:17:41 2020 +0200 - - Implement first-light location refresh loop - -commit e399a3f8d0e38973e98b7182c584839dbd13a81f -Author: Wojciech Adaszyński -Date: Tue May 12 15:10:59 2020 +0200 - - Update status component: new color and shape of indicator (#811) - - Co-authored-by: Wojciech Adaszynski - -commit fb3649625b57a099528fd49050d8e338e6c63d71 -Merge: 017b5b8c1d e121fc6cad -Author: Fredrik Adelöw -Date: Tue May 12 14:10:49 2020 +0200 - - Merge pull request #821 from spotify/mob/rename-catalog - - Rename inventory to catalog - -commit 017b5b8c1d9ad307ae2952821fcbf29ce814b7ab -Author: Bilawal Hameed -Date: Tue May 12 13:17:00 2020 +0200 - - Added Zalando's copyright info to our NOTICE (#822) - -commit e121fc6cad493bae586d4a35786f9259bebcab6c -Author: Fredrik Adelöw -Date: Tue May 12 11:16:09 2020 +0200 - - Rename inventory to catalog - -commit 7a8c30ef1ef1036d17bcd72574fadf3f3253b12d -Merge: 748a0858d4 52c48ce1a7 -Author: Fredrik Adelöw -Date: Tue May 12 10:40:57 2020 +0200 - - Merge pull request #813 from spotify/freben/inventory_move_migrations - - Move inventory migrations into the plugin itself - -commit 748a0858d4447e2582e924ba2d450e00e8e6ccd2 -Merge: 10c85d97f9 d682714249 -Author: Fredrik Adelöw -Date: Tue May 12 10:32:03 2020 +0200 - - Merge pull request #812 from spotify/freben/inventory2 - - Implement location management - -commit 10c85d97f98637291e89b205df36bd48d7e3ea4d -Merge: 4e4dd67095 f74ebf31ca -Author: Patrik Oldsberg -Date: Tue May 12 09:57:26 2020 +0200 - - Merge pull request #817 from spotify/dependabot/npm_and_yarn/types/webpack-4.41.12 - - build(deps-dev): bump @types/webpack from 4.41.8 to 4.41.12 - -commit 4e4dd67095c7a1c0a352e620695201c5009aee74 -Merge: 41f32d90ae da53c87fb7 -Author: Fredrik Adelöw -Date: Tue May 12 08:28:04 2020 +0200 - - Merge pull request #746 from spotify/dependabot/npm_and_yarn/fs-extra-9.0.0 - - build(deps): bump fs-extra from 8.1.0 to 9.0.0 - -commit 41f32d90aeb9c760e1b2b98aad7d7a306b574590 -Merge: a4b0e78ad9 978fcee4a9 -Author: Fredrik Adelöw -Date: Tue May 12 08:26:15 2020 +0200 - - Merge pull request #818 from spotify/dependabot/npm_and_yarn/husky-4.2.5 - - build(deps-dev): bump husky from 4.2.3 to 4.2.5 - -commit a4b0e78ad9d6ec42977683762cf4d32a4f9a7276 -Merge: 8b2dd21fd0 e8bbf91647 -Author: Fredrik Adelöw -Date: Tue May 12 08:25:07 2020 +0200 - - Merge pull request #815 from spotify/dependabot/npm_and_yarn/tar-6.0.2 - - build(deps): bump tar from 6.0.1 to 6.0.2 - -commit 978fcee4a9920630a72ab24e2a9a072cfc70e806 -Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> -Date: Tue May 12 06:17:02 2020 +0000 - - build(deps-dev): bump husky from 4.2.3 to 4.2.5 - - Bumps [husky](https://github.com/typicode/husky) from 4.2.3 to 4.2.5. - - [Release notes](https://github.com/typicode/husky/releases) - - [Changelog](https://github.com/typicode/husky/blob/master/CHANGELOG.md) - - [Commits](https://github.com/typicode/husky/compare/v4.2.3...v4.2.5) - - Signed-off-by: dependabot-preview[bot] - -commit f74ebf31ca9e438786e5d82d0dc236fe64500476 -Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> -Date: Tue May 12 06:16:08 2020 +0000 - - build(deps-dev): bump @types/webpack from 4.41.8 to 4.41.12 - - Bumps [@types/webpack](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/webpack) from 4.41.8 to 4.41.12. - - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/webpack) - - Signed-off-by: dependabot-preview[bot] - -commit e8bbf91647f7682d78c5260c1a611dd5e1061d00 -Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> -Date: Tue May 12 06:12:13 2020 +0000 - - build(deps): bump tar from 6.0.1 to 6.0.2 - - Bumps [tar](https://github.com/npm/node-tar) from 6.0.1 to 6.0.2. - - [Release notes](https://github.com/npm/node-tar/releases) - - [Changelog](https://github.com/npm/node-tar/blob/master/CHANGELOG.md) - - [Commits](https://github.com/npm/node-tar/compare/v6.0.1...v6.0.2) - - Signed-off-by: dependabot-preview[bot] - -commit 52c48ce1a7e3daac1c08647e2166a0021cfd64fd -Author: Fredrik Adelöw -Date: Mon May 11 22:06:38 2020 +0200 - - Move inventory migrations into the plugin itself - -commit d6827142492e8ab5c47f7f722d11c7f76ed1aa0e -Author: Fredrik Adelöw -Date: Mon May 11 16:51:54 2020 +0200 - - Implement location management - -commit 8b2dd21fd0dc3783f41bef81944e07aaa472f4d6 -Author: Nathan Calvank -Date: Mon May 11 07:28:20 2020 -0700 - - Issue 660: CodeSnippet Reuseable component (#803) - - * Initial CodeSnippet setup in Storybook - - * Add support for line numbers - - * Pseudo-code some basic tests and leverage useTheme hook - - The test suite cannot currently be run, as the react-syntax-highlighter - appears to be using ESM, which are not supported by Jest out-of-the-box. - - This should only require a simple Babel loader to remedy, but I want to - make sure first that I have not misconfigured something, as configuring - Babel is likely a notable scope increase for this relatively small - issue. - - * Fix ESM Jest issue and update tests - - It would be ideal to have snapshot tests to cover the lightmode vs - darkmode rendering. I started experimenting with directly testing the - styling, and it quickly became very sloppy. - - * Provide more examples in stories - - * Add showLineNumbers to PropType validation - -commit 901562a0b2595f33ff9ff20280dc4ede37e56135 -Merge: 2955b4e862 242427be7b -Author: Niklas Ek -Date: Mon May 11 15:07:17 2020 +0200 - - Merge pull request #779 from spotify/rugvip/serve - - plugins: applied diff for all plugins to enable plugin:serve - -commit 2955884047b1d98d0490cc43553fb11ef0cc68dd -Author: Fredrik Adelöw -Date: Mon May 11 14:20:08 2020 +0200 - - Rename item/items -> component/components - -commit 2955b4e8629740b745e64390b45d4c86bd93245d -Merge: dd44730719 4b1d80b43a -Author: Fredrik Adelöw -Date: Mon May 11 14:05:09 2020 +0200 - - Merge pull request #810 from spotify/freben/inventory1 - - Implement first knex database basics - -commit 4b1d80b43a122b71e51d93d32c47ed7d9831bacc -Author: Fredrik Adelöw -Date: Mon May 11 13:54:27 2020 +0200 - - Implement first knex database basics - -commit 1627b490b4ee17f819b7b5ec4edb5f28c9235afa -Author: Nikita Nek Dudnik -Date: Mon May 11 13:45:59 2020 +0200 - - Get rid of
- -commit 313da9d660f48d280ab09f08f2539836e1ace88d -Author: Nikita Nek Dudnik -Date: Mon May 11 13:37:38 2020 +0200 - - Fix a typo in notice heading - -commit b9c4eb955f5dee66c586578b871781de6c50256e -Author: Nikita Nek Dudnik -Date: Mon May 11 13:19:10 2020 +0200 - - Remove "huh?" - -commit ddfa3e70f4ecaf755f7918c2caf119758cb619c1 -Author: Nikita Nek Dudnik -Date: Mon May 11 13:18:09 2020 +0200 - - Remove double heading - -commit f841accbef2bb8b6d40462a4b2ea11061ed6c0df -Author: Nikita Nek Dudnik -Date: Mon May 11 12:04:23 2020 +0200 - - fix linting: add missing notice header - -commit dd44730719df0a57a7801b7752396bf9a264810b -Merge: 24928cf283 b1400b9896 -Author: Patrik Oldsberg -Date: Mon May 11 11:47:54 2020 +0200 - - Merge pull request #808 from spotify/rugvip/noresolve - - packages/cli: remove cypress version override from app template - -commit ce936856199d76e8cfb9c6096b825df3ca363da6 -Merge: cae74aac85 fdc0cf9254 -Author: Nikita Nek Dudnik -Date: Mon May 11 11:29:05 2020 +0200 - - Merge branch 'master' of github.com:Nek/backstage - -commit b1400b98963c394e847df6411620fec129336380 -Author: Patrik Oldsberg -Date: Mon May 11 11:23:33 2020 +0200 - - packages/cli: remove cypress version override from app template - -commit fdc0cf9254797b26f599d0bf203c60569927820f -Merge: 9cd104a103 efb498a364 -Author: Ivan Shmidt -Date: Mon May 11 11:19:49 2020 +0200 - - Merge pull request #10 from Nek/feat/routing-through-plugin-api - - feat/routing-through-plugin-api - -commit efb498a3645a5ddcdb6e7a67c9978eac3a0b3c3c -Author: Ivan Shmidt -Date: Mon May 11 11:15:57 2020 +0200 - - feat/routing-through-plugin-api - -commit cae74aac853fe484f9f6ed2f9aeb963f2c0422f2 -Merge: 9cd104a103 24928cf283 -Author: Nikita Nek Dudnik -Date: Mon May 11 11:12:52 2020 +0200 - - Merge remote-tracking branch 'upstream/master' - - # Conflicts: - # packages/core/src/components/Table/Table.tsx - # yarn.lock - -commit 24928cf2837442fb8b9931b907f1d425438a2565 -Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> -Date: Mon May 11 08:25:06 2020 +0200 - - build(deps): bump rc-progress from 2.5.2 to 2.5.3 (#806) - - Bumps [rc-progress](https://github.com/react-component/progress) from 2.5.2 to 2.5.3. - - [Release notes](https://github.com/react-component/progress/releases) - - [Changelog](https://github.com/react-component/progress/blob/master/HISTORY.md) - - [Commits](https://github.com/react-component/progress/compare/2.5.2...2.5.3) - - Signed-off-by: dependabot-preview[bot] - - Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> - -commit d07101cffe157ee2fb18fd055ea48036e600e19a -Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> -Date: Sun May 10 18:01:28 2020 +0200 - - build(deps): bump chokidar from 3.3.1 to 3.4.0 (#739) - - Bumps [chokidar](https://github.com/paulmillr/chokidar) from 3.3.1 to 3.4.0. - - [Release notes](https://github.com/paulmillr/chokidar/releases) - - [Commits](https://github.com/paulmillr/chokidar/compare/3.3.1...3.4.0) - - Signed-off-by: dependabot-preview[bot] - - Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> - -commit 6f0cb5de5d2820d1b336a3e7bc356d8228781e64 -Author: Adil Alimbetov -Date: Sun May 10 12:04:01 2020 +0600 - - Updated colors for table in dark mode (#802) - - * Updated colors for dark mode - - * Updated type on useTheme - - * Fixed code style - - * Revert "Fixed code style" - - This reverts commit 1969fce9a511e7f1b7390948b7b31ff13d4d9165. - - * Changed hook position - -commit 70195df296f55b388c07ce0c1cf65415f5a68e8b -Merge: 25987dc467 657834e485 -Author: Patrik Oldsberg -Date: Sat May 9 11:01:19 2020 +0200 - - Merge pull request #777 from spotify/rugvip/cleanup - - packages/core: fix import and remove bonus code - -commit 25987dc467f74516dc0e40de0338d092695260b8 -Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> -Date: Sat May 9 00:01:07 2020 +0200 - - build(deps): bump @rollup/plugin-node-resolve from 7.1.1 to 7.1.3 (#738) - - Bumps [@rollup/plugin-node-resolve](https://github.com/rollup/plugins) from 7.1.1 to 7.1.3. - - [Release notes](https://github.com/rollup/plugins/releases) - - [Commits](https://github.com/rollup/plugins/compare/node-resolve-v7.1.1...node-resolve-v7.1.3) - - Signed-off-by: dependabot-preview[bot] - - Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> - -commit fca586b7040d15a13b10e8d4d52dc7d50a08f057 -Merge: 0c3a91e058 0fc188d8a4 -Author: Patrik Oldsberg -Date: Fri May 8 20:28:17 2020 +0200 - - Merge pull request #781 from spotify/rugvip/nodefault - - packages/dev-utils: fix for default api factories being omitted - -commit 0c3a91e0588abdb05c50667e8cd3c0dec19a4130 -Merge: 24cb7a7f9d 77d0e9a10f -Author: Patrik Oldsberg -Date: Fri May 8 19:47:07 2020 +0200 - - Merge pull request #780 from spotify/rugvip/nosrc - - package/cli: remove src-relative imports from plugin:serve - -commit 0fc188d8a4f0597b16040eda01a9eea5c99c10f5 -Author: Patrik Oldsberg -Date: Fri May 8 18:52:10 2020 +0200 - - packages/dev-utils: fix for default api factories being omitted - -commit 77d0e9a10f20ed9ea8845fb8f52009247c927f84 -Author: Patrik Oldsberg -Date: Fri May 8 18:55:28 2020 +0200 - - package/cli: remove src-relative imports from plugin:serve - -commit 242427be7ba55c834cab93cefad1b84d99007b29 -Author: Patrik Oldsberg -Date: Fri May 8 18:53:32 2020 +0200 - - plugins/tech-radar: add lighthouse api to dev env - -commit 81cb54d52b3ffb7f91371a5f43712e8b56b0c714 -Author: Patrik Oldsberg -Date: Fri May 8 18:53:04 2020 +0200 - - plugins/lighthouse: add lighthouse api to dev env - -commit 198bf2d1a60a122ba5dc8152fd46782471d2f494 -Author: Patrik Oldsberg -Date: Fri May 8 17:18:36 2020 +0200 - - plugins: applied diff for all plugins to enable plugin:serve - -commit 24cb7a7f9d1df1c1f36b92a083b38b7b6c083986 -Merge: f913777de9 36b0dc849c -Author: Patrik Oldsberg -Date: Fri May 8 17:05:59 2020 +0200 - - Merge pull request #768 from spotify/rugvip/noremove - - packages/cli: avoid removing empty lines in remove-plugin - -commit 657834e485e6cbc5f2d1ff4d1c84863a759e0d45 -Author: Patrik Oldsberg -Date: Fri May 8 17:04:47 2020 +0200 - - packages/core: remove bonus file - -commit c723fc33e5c2ea88ba7ee2ab96a0e5e06b49f5ec -Author: Patrik Oldsberg -Date: Fri May 8 17:04:31 2020 +0200 - - packages/core: fix src-relative import - -commit 9cd104a1030635974ddf793187c6dd5ca18fc48f -Merge: d0066a2dd9 520503b85c -Author: Ivan Shmidt -Date: Fri May 8 16:48:45 2020 +0200 - - Merge branch 'master' of github.com:Nek/backstage - -commit d0066a2dd9f12f08fd0dd4330243564fa01c9dff -Author: Ivan Shmidt -Date: Fri May 8 16:48:11 2020 +0200 - - feat: plugin description - -commit 520503b85c3c315fbd2259a7782a32f29aaf40b5 -Author: Nikita Nek Dudnik -Date: Fri May 8 16:34:07 2020 +0200 - - Fix tests failing on image import - -commit f3c42578c4c484338fb72655d298cfb953158825 -Author: Nikita Nek Dudnik -Date: Fri May 8 15:59:50 2020 +0200 - - Fix linting - -commit d182818081c1270441289b4f395ce751582cd451 -Author: Nikita Nek Dudnik -Date: Fri May 8 15:41:27 2020 +0200 - - Fix linting - -commit 158c38b850cb73896595c070f42b33d183e9f044 -Author: Nikita Nek Dudnik -Date: Fri May 8 15:19:36 2020 +0200 - - Fix linting - -commit 7242c1b15552c9c21b70fda9e8a9c190375d1310 -Author: Nikita Nek Dudnik -Date: Fri May 8 15:10:15 2020 +0200 - - Fix linting - -commit f913777de9677595cbe0f709713e0cf6ddddf467 -Merge: ad1e2fec2b 7f06008496 -Author: Patrik Oldsberg -Date: Fri May 8 16:06:15 2020 +0200 - - Merge pull request #761 from spotify/rugvip/adiff - - plugins: almost fully sync plugins with templates - -commit ad1e2fec2b1ce807fe48433d2b1cd9bd37682517 -Merge: 66d056a46c fca8b3211e -Author: Patrik Oldsberg -Date: Fri May 8 16:05:45 2020 +0200 - - Merge pull request #764 from spotify/rugvip/pdocs - - packages/cli: update plugin template README to explain next steps and plugin:serve - -commit 66d056a46c53dbec0a1f4e31da725b9f1992d8e7 -Merge: fa7001007d c615ba09c4 -Author: Patrik Oldsberg -Date: Fri May 8 16:05:34 2020 +0200 - - Merge pull request #763 from spotify/rugvip/pserve - - packages/cli: update templates to include plugin:serve setup - -commit fa7001007d20bfd711e0c2cc721138359247304c -Merge: 298c6979e7 8fa65fc519 -Author: Patrik Oldsberg -Date: Fri May 8 16:05:24 2020 +0200 - - Merge pull request #760 from spotify/rugvip/pdiff - - plugins: added diff command to all plugins and templates - -commit 6de6c71eafbe7ce826cf70bd9ac1be126ffd79c5 -Author: Ivan Shmidt -Date: Fri May 8 15:03:42 2020 +0200 - - fix: pr fixes - -commit 36b0dc849c35237e7a22128deebe516181ecf506 -Author: Patrik Oldsberg -Date: Fri May 8 14:59:58 2020 +0200 - - packages/cli: avoid removing empty lines in remove-plugin - -commit fca8b3211ef5067b6ce6eaef273dfa078b0e8a5f -Author: Patrik Oldsberg -Date: Fri May 8 14:08:15 2020 +0200 - - packages/cli: update plugin template README to explain next steps and plugin:serve - -commit e4e5c02ed52a38430b4a0a95f5c7401c03831041 -Author: Ivan Shmidt -Date: Fri May 8 14:18:17 2020 +0200 - - fix: some leftovers - -commit 298c6979e78d4e845e2250e71a2bc16f3dcc65b5 -Merge: 91963eb572 1afd6c7d92 -Author: Patrik Oldsberg -Date: Fri May 8 14:09:14 2020 +0200 - - Merge pull request #759 from spotify/rugvip/template-deps - - packages/cli: update templates dependencies - -commit 91963eb5727b7177ef47bddad4d885e7f191e1e6 -Merge: bf4ad8d84f 53b9c0766d -Author: Fredrik Adelöw -Date: Fri May 8 14:06:07 2020 +0200 - - Merge pull request #762 from spotify/freben/moved - - Move the plugin init into their own files to keep index clean - -commit 53b9c0766deb5305cb20ad54f1d70d4a42fa451e -Author: Fredrik Adelöw -Date: Thu May 7 16:10:05 2020 +0200 - - Move the plugin init into their own files to keep index clean - -commit c615ba09c45b04e5d9d398a356346130bb7c11ec -Author: Patrik Oldsberg -Date: Fri May 8 13:39:06 2020 +0200 - - packages/cli: update templates to include plugin:serve setup - -commit 8fa65fc5196698baafa3e2c3c2ebb974d3442918 -Author: Patrik Oldsberg -Date: Fri May 8 13:19:09 2020 +0200 - - plugins: added diff command to all plugins and templates - -commit 7f060084962fc86d722303ab8e0f6cf9e9e86400 -Author: Patrik Oldsberg -Date: Fri May 8 13:24:46 2020 +0200 - - plugins: almost fully sync plugins with templates - -commit bf4ad8d84fc97058d03ece9a5fd2948cfe229de6 -Merge: 8b6d05abbf d568edb876 -Author: Patrik Oldsberg -Date: Fri May 8 13:25:28 2020 +0200 - - Merge pull request #758 from spotify/rugvip/diffcheck - - packages/cli: make plugin:diff --check output all errors - -commit 1afd6c7d925e4ad90872163c00d4be233f8debfc -Author: Patrik Oldsberg -Date: Fri May 8 13:09:31 2020 +0200 - - packages/cli: update templates dependencies - -commit 8b6d05abbfc24455c8fccf4b60012a8b6f015761 -Author: Stefan Ålund -Date: Fri May 8 13:07:36 2020 +0200 - - Adjust header label spacing (#756) - -commit dbf6b462bc8978da491bea3d1f56645584f8e3a3 -Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> -Date: Fri May 8 13:06:36 2020 +0200 - - build(deps): bump webpack from 4.42.0 to 4.43.0 (#744) - - Bumps [webpack](https://github.com/webpack/webpack) from 4.42.0 to 4.43.0. - - [Release notes](https://github.com/webpack/webpack/releases) - - [Commits](https://github.com/webpack/webpack/compare/v4.42.0...v4.43.0) - - Signed-off-by: dependabot-preview[bot] - - Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> - -commit d568edb87663c825aad5594d7f9a241c03caafa4 -Author: Patrik Oldsberg -Date: Fri May 8 13:02:29 2020 +0200 - - packages/cli: make plugin:diff --check output all errors - -commit 7474a67738ca3c16b31e44fac5f330a9f980625f -Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> -Date: Fri May 8 12:12:32 2020 +0200 - - build(deps): bump ora from 4.0.3 to 4.0.4 (#745) - - Bumps [ora](https://github.com/sindresorhus/ora) from 4.0.3 to 4.0.4. - - [Release notes](https://github.com/sindresorhus/ora/releases) - - [Commits](https://github.com/sindresorhus/ora/compare/v4.0.3...v4.0.4) - - Signed-off-by: dependabot-preview[bot] - - Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> - -commit bd461b94c9fea575026df484303a59522396fc2b -Merge: 2830369c52 c6a4d74cce -Author: Ivan Shmidt -Date: Fri May 8 09:31:07 2020 +0200 - - Merge branch 'master' of github.com:spotify/backstage - -commit 2830369c52a3d8c53141b18fbb4c9d51b52d3775 -Author: Ivan Shmidt -Date: Fri May 8 09:19:14 2020 +0200 - - refactor: clean comments - -commit a8495a37bb012b954eb6665434272b65ca56aa33 -Merge: e88b290b9b cb64acdf82 -Author: Nikita Dudnik -Date: Fri May 8 09:12:19 2020 +0200 - - Merge pull request #9 from Nek/circleci-plugin - - Circleci plugin - -commit c6a4d74ccec320ed398c7babe8e6985aeed7282a -Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> -Date: Fri May 8 08:30:34 2020 +0200 - - build(deps-dev): bump @storybook/addon-actions from 5.3.17 to 5.3.18 (#747) - - Bumps [@storybook/addon-actions](https://github.com/storybookjs/storybook/tree/HEAD/addons/actions) from 5.3.17 to 5.3.18. - - [Release notes](https://github.com/storybookjs/storybook/releases) - - [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md) - - [Commits](https://github.com/storybookjs/storybook/commits/v5.3.18/addons/actions) - - Signed-off-by: dependabot-preview[bot] - - Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> - -commit e44125e66629b3b555eb16916958c5ada99b508c -Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> -Date: Fri May 8 08:28:10 2020 +0200 - - build(deps-dev): bump @types/testing-library__jest-dom (#743) - - Bumps [@types/testing-library__jest-dom](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/testing-library__jest-dom) from 5.0.3 to 5.0.4. - - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/testing-library__jest-dom) - - Signed-off-by: dependabot-preview[bot] - - Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> - -commit da53c87fb77cd265cfcdd3e4637c04024ae52252 -Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> -Date: Fri May 8 06:14:49 2020 +0000 - - build(deps): bump fs-extra from 8.1.0 to 9.0.0 - - Bumps [fs-extra](https://github.com/jprichardson/node-fs-extra) from 8.1.0 to 9.0.0. - - [Release notes](https://github.com/jprichardson/node-fs-extra/releases) - - [Changelog](https://github.com/jprichardson/node-fs-extra/blob/master/CHANGELOG.md) - - [Commits](https://github.com/jprichardson/node-fs-extra/compare/8.1.0...9.0.0) - - Signed-off-by: dependabot-preview[bot] - -commit cb64acdf82ead8882d94c652bfcee2bdb135a777 -Author: Ivan Shmidt -Date: Fri May 8 00:02:31 2020 +0200 - - fix: readme - -commit ad353f859f797c239d1d0446d748ddb80b1d19f0 -Author: Ivan Shmidt -Date: Thu May 7 23:56:05 2020 +0200 - - feat: readme - -commit 563148998e25c70098ba5337faef907da117fbee -Author: Ivan Shmidt -Date: Thu May 7 23:26:18 2020 +0200 - - feat: good plugin state - -commit b8429894566cc5fc38a85afcc8c0de0a61b577c4 -Author: Ivan Shmidt -Date: Thu May 7 22:22:38 2020 +0200 - - feat: total upgrade - -commit fc9cfa0c755d11ca7ec1dfdb1f9cb0b780af00b6 -Author: Ivan Shmidt -Date: Thu May 7 17:40:32 2020 +0200 - - feat: settings optimizations - -commit d19c17830cb203f51e9ae3ca6f02f469e11f958a -Author: Nikita Nek Dudnik -Date: Thu May 7 17:27:28 2020 +0200 - - Fix things - -commit 50a5c52a359470d3b2850c8e9ebc6013ae609594 -Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> -Date: Thu May 7 17:12:36 2020 +0200 - - build(deps-dev): bump @types/testing-library__jest-dom (#737) - - Bumps [@types/testing-library__jest-dom](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/testing-library__jest-dom) from 5.0.2 to 5.0.3. - - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/testing-library__jest-dom) - - Signed-off-by: dependabot-preview[bot] - - Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> - -commit 85e5e1f70e3f5198fccb35096731d1f7c7844e86 -Author: Ivan Shmidt -Date: Thu May 7 17:02:27 2020 +0200 - - feat: builds - -commit 2e475ff00a3ada7534a77dbccf65a62c84dbc380 -Author: Wesley Yee -Date: Thu May 7 10:42:55 2020 -0400 - - Fix: Add initial stepper step to step history (#740) - -commit fa05620b45c41bb55fab17604bc4742fa5907449 -Author: Ivan Shmidt -Date: Thu May 7 15:46:01 2020 +0200 - - fix: settings page works - -commit 74e561812c800b784c3070f9a7c217bb764cd026 -Author: Nikita Nek Dudnik -Date: Thu May 7 15:31:05 2020 +0200 - - Fix persistance - -commit f60b6df5558a41dde86eeeb0f2b6da43ffc9c962 -Author: Ivan Shmidt -Date: Thu May 7 15:23:55 2020 +0200 - - feat: destroyed everything v2 - - Co-authored-by: Nikita Dudnik - -commit 7f00512d93771ba10a653b98359b185e8d2397ec -Author: Nikita Nek Dudnik -Date: Thu May 7 14:31:21 2020 +0200 - - Add Rematch - -commit c8e3b72adcf2f789e1d561dfb8c656af6064264e -Author: Nikita Nek Dudnik -Date: Thu May 7 11:50:35 2020 +0200 - - It's broken but changes are nice - -commit 5dda050152181a5277f1b3a243d066a2b71a6012 -Author: Ivan Shmidt -Date: Thu May 7 11:28:49 2020 +0200 - - feat: destroyed everything - - Co-authored-by: Nikita Dudnik - -commit a24ea32746c5f85287cadb721b4e4bc8e91d0135 -Author: Nikita Nek Dudnik -Date: Thu May 7 11:05:20 2020 +0200 - - Restructure project credentials form - -commit 781472bf3c80368ecf4385a678f6b6775fd4039a -Author: Nikita Nek Dudnik -Date: Thu May 7 10:52:03 2020 +0200 - - Merge - -commit 5c8bd82aa1b2579a0d0503d77302b743deefdaff -Author: Stefan Ålund -Date: Thu May 7 10:49:26 2020 +0200 - - Changed style of Table story (#733) - -commit 4476a14fa1675d15ed688f99f0ca9f0b30f0bdec -Author: Ivan Shmidt -Date: Thu May 7 10:32:32 2020 +0200 - - fix: store vcs settings - -commit 7b3dcff47cd2036eaf708e91726eed1331346657 -Author: Ivan Shmidt -Date: Thu May 7 10:27:06 2020 +0200 - - fix: authed, column sizes - - Co-authored-by: Nikita Dudnik - -commit 8d8183cca62aaab5ec6bea3c436d30440f1b5d67 -Merge: 9e4c8fc8ca c1dd24a100 -Author: Fredrik Adelöw -Date: Thu May 7 09:12:07 2020 +0200 - - Merge pull request #732 from spotify/freben/dev - - OCD time: devDependencies consistently below dependencies :) - -commit 9e4c8fc8ca7902f0936983a7830eede33c6a1e5b -Merge: 9820d14e7f fa8bfc548b -Author: Fredrik Adelöw -Date: Thu May 7 09:11:11 2020 +0200 - - Merge pull request #731 from spotify/freben/lock - - Running yarn on master gives these changes - -commit c1dd24a100a829afb5b747b333c4b1f218c750b5 -Author: Fredrik Adelöw -Date: Thu May 7 08:46:10 2020 +0200 - - OCD time: devDependencies consistently below dependencies :) - -commit fa8bfc548b102ed190c6ad2f8079870e739449c7 -Author: Fredrik Adelöw -Date: Thu May 7 08:39:39 2020 +0200 - - Running yarn on master gives these changes - -commit 9820d14e7f28fa6a98def522880e48f95b9016a0 -Merge: 91101b05f0 6424ce2306 -Author: Fredrik Adelöw -Date: Thu May 7 07:50:56 2020 +0200 - - Merge pull request #730 from spotify/freben/prettier - - Ran prettier everywhere - -commit 6424ce2306dffaf7956213436eef1ad70cf9c113 -Author: Fredrik Adelöw -Date: Thu May 7 07:21:27 2020 +0200 - - Ran prettier everywhere - -commit 91101b05f00c97eb147f0e6b145270f092f82428 -Merge: f9a9e8cea2 d0e245ee3b -Author: Bilawal Hameed -Date: Wed May 6 20:59:24 2020 +0200 - - Merge pull request #698 from spotify/bil/tech-radar-as-a-react-component - - plugin(tech-radar): make configurable as a UI component or Backstage plugin - -commit 6fade5fe8f42c61efdf52a5caaae7a041e0042fd -Merge: 34d5a985a0 bdb02f7de0 -Author: Nikita Dudnik -Date: Wed May 6 17:28:40 2020 +0200 - - Merge pull request #8 from Nek/feat/new-table-make-it-work - - feat: make it work - -commit f9a9e8cea293a1f0c689f1a8da626191b7a1de8f -Author: Stefan Ålund -Date: Wed May 6 17:25:38 2020 +0200 - - Simplify welcome screen (#728) - - * Simplify welcome screen - - * Delete non-used code - - * Review comments - -commit ccee67c33362cffb16a74c6ac0e73d2d00073fd8 -Merge: a8584e7cec 70040b22a7 -Author: Patrik Oldsberg -Date: Wed May 6 17:23:18 2020 +0200 - - Merge pull request #729 from spotify/rugvip/nosrc - - drop support for src-relative imports - -commit bdb02f7de0140313f480a5b8728f77e35323a64f -Author: Ivan Shmidt -Date: Wed May 6 17:21:41 2020 +0200 - - feat: make it work - -commit 70040b22a7de2984aeec21352256f8ba5006c92d -Author: Patrik Oldsberg -Date: Wed May 6 16:38:07 2020 +0200 - - drop support for src-relative imports - -commit 34d5a985a0ce82606453244f19dafeb4bc4bba4b -Author: Ivan Shmidt -Date: Wed May 6 15:57:50 2020 +0200 - - fix: types - -commit e12c69e7f03123ea94cd4e71e946d3ac693c3972 -Merge: 87afc93989 e88b290b9b -Author: Ivan Shmidt -Date: Wed May 6 15:31:13 2020 +0200 - - Merge pull request #7 from Nek/master - - Updates from upstream - -commit e88b290b9b989ceaddd97ace66d689d3c45089e2 -Merge: d56be21187 87afc93989 -Author: Ivan Shmidt -Date: Wed May 6 15:30:38 2020 +0200 - - Merge branch 'circleci-plugin' into master - -commit 87afc93989cfe87bf633ea512ebb25fa82112917 -Merge: c0257cde2a ca7d863d06 -Author: Ivan Shmidt -Date: Wed May 6 15:27:08 2020 +0200 - - Merge pull request #6 from Nek/feature/action-output-table - - Extract CITable rows into components - -commit ca7d863d065c25ce8fd7a8a0c86db6cc50d45c9a -Author: Nikita Nek Dudnik -Date: Wed May 6 15:24:01 2020 +0200 - - Extract CITable rows into components - -commit d56be2118726e6027059076ee4a74e7efdb3704f -Merge: 49049665d4 a8584e7cec -Author: Ivan Shmidt -Date: Wed May 6 15:23:18 2020 +0200 - - Merge pull request #5 from spotify/master - - Sync forks - -commit a8584e7ceca16c6ce33acf13d1d1485296aa73f8 -Merge: 425cf93c08 5961be5861 -Author: Fredrik Adelöw -Date: Wed May 6 15:10:01 2020 +0200 - - Merge pull request #727 from spotify/freben/winston - - Simplify logger creation in tests - -commit 5961be58617f7c8c648c40a42c644a32f0913c5d -Author: Fredrik Adelöw -Date: Wed May 6 13:30:58 2020 +0200 - - Simplify logger creation in tests - -commit 425cf93c08d8190412922bf10c8bcd0b3f14c561 -Author: Sebastian Qvarfordt -Date: Wed May 6 12:58:34 2020 +0200 - - Replacing SortableTable and a few MUI tables with new Table component (#722) - - * Befind work of replacing tables with new Table component - - * Removed test plugins and fixed test - - * Fixed lint issue - - * Removed toolbar from lighthouse audit page - - * Moved column out of auditstables render function, no no interation with useInterval - -commit c0257cde2a5dc48a7ef7ef8e8408d84fa957d5cf -Merge: 7900efbb9e 684408f0ff -Author: Nikita Dudnik -Date: Wed May 6 12:42:23 2020 +0200 - - Merge pull request #4 from Nek/feat/lazylog - - feat: lazylog - -commit 684408f0ffc01cb85be8f67c3b129f5a17b3cd3c -Author: Ivan Shmidt -Date: Wed May 6 12:37:26 2020 +0200 - - feat: lazylog - -commit 7900efbb9e1c1addb00d8e1d593a36318b2d1708 -Merge: 484baa6521 0d8abf7ea7 -Author: Nikita Dudnik -Date: Wed May 6 11:31:57 2020 +0200 - - Merge pull request #2 from Nek/feature/log-view - - Feature/log view - -commit 0d8abf7ea78385fad0520d1adf875fdb259e7c0e -Merge: 30370d711d 6b44dd110c -Author: Nikita Dudnik -Date: Wed May 6 11:30:05 2020 +0200 - - Merge pull request #3 from Nek/feat/new-routing - - feat: routing -> plugin routing - -commit 6b44dd110c5ca3b009f15b4f8e6cac6c95f061b2 -Author: Ivan Shmidt -Date: Wed May 6 11:18:49 2020 +0200 - - feat: routing -> plugin routing - -commit 30370d711d96c40a9284ebcd9610103b162acf26 -Merge: 8a9241619e 484baa6521 -Author: Ivan Shmidt -Date: Wed May 6 11:04:28 2020 +0200 - - Merge branch 'circleci-plugin' of github.com:Nek/backstage into feature/log-view - -commit 484baa65219e49d5bda526f4992fcea40beaa403 -Merge: 7bda356234 633f592f81 -Author: Nikita Dudnik -Date: Wed May 6 10:46:43 2020 +0200 - - Merge pull request #1 from Nek/feat/proxy-devserver - - feat: move proxy to devserver - -commit 633f592f81151e47dd3568e5c01dae7632ee9285 -Author: Ivan Shmidt -Date: Wed May 6 10:31:49 2020 +0200 - - feat: move proxy to devserver - -commit 5b0e808204544a2274323f54428d8cdb7da457fd -Author: Jose Balanza Martinez <62359443+braulio-balanza@users.noreply.github.com> -Date: Wed May 6 00:36:10 2020 -0500 - - Structured metadata list color fix and update to typescript DRAFT (#656) - - * Fix Structure Metadata Table and change to .tsx - - * Change StructuredMetadataTable to typescript - - * Oops forgot to actually fix the font color - - * Fixing some more type issues - - * changed padding to theme.spacing() - - * fixes some more types - -commit 8a9241619ef1516bbb4d58a75166b02310b00382 -Author: Nikita Nek Dudnik -Date: Tue May 5 22:40:43 2020 +0200 - - Implement logs visualization - -commit ddff830b04320d4c67bc5aadbb0b9020a4715b5a -Author: Wesley Yee -Date: Tue May 5 15:27:35 2020 -0400 - - Rewrite sequence component (#682) - - * Rework sequence component to be more declarative and simple - * Renamed to SimpleStepper - -commit 1fae5590545cecb23679190570eb81922cf80866 -Merge: eeb2646226 1401141505 -Author: Fredrik Adelöw -Date: Tue May 5 21:06:25 2020 +0200 - - Merge pull request #723 from spotify/freben/testerr - - Forgot to add the error tests - -commit eeb264622632de5bac5125aee9ef5b7318cfbcab -Merge: 2327cd121a a835294a70 -Author: Patrik Oldsberg -Date: Tue May 5 18:36:47 2020 +0200 - - Merge pull request #721 from OrkoHunter/OrkoHunter/#718-fail-storybook-build-on-warnings - - Fail Storybook build if there are Webpack compilation warnings - -commit 14011415052fe818f9f02f0af43ad1ccd8866479 -Author: Fredrik Adelöw -Date: Tue May 5 16:52:31 2020 +0200 - - Forgot to add the error tests - -commit 950830571e21fd0ae49e9816e6027e18ce0d0985 -Author: Nikita Nek Dudnik -Date: Tue May 5 16:44:39 2020 +0200 - - Add ugly log visualization - -commit a835294a705b484d752cdcd97df3d46247fe950a -Author: Himanshu Mishra -Date: Tue May 5 22:49:27 2020 +0900 - - Add comment about Webpack plugin to fail builds on warnings - -commit 2327cd121a903c6fa96b456abec142a95f5e8de0 -Merge: ff1b853613 b36bf68d7d -Author: Fredrik Adelöw -Date: Tue May 5 14:25:09 2020 +0200 - - Merge pull request #720 from OrkoHunter/OrkoHunter/#708-fix-flaky-e2e-test - - [CLI] Fix flaky end-to-end tests - -commit b36bf68d7da20ecc5d7bf1dd886611aaeaafb5f9 -Author: Himanshu Mishra -Date: Tue May 5 20:42:44 2020 +0900 - - 240 attempts should not just be 239 :D - -commit 5d5d093b20185f8464b5a410507c0e8e9bbb681d -Author: Himanshu Mishra -Date: Tue May 5 20:38:57 2020 +0900 - - Set maxFindTextAttempts as a function argument - -commit f40ccc38a4525bc559b33f2ec779d770df1d2d90 -Author: Himanshu Mishra -Date: Tue May 5 20:25:45 2020 +0900 - - Fix syntax to check if an element is in a set - -commit b2b91013eb7dc73dec12a83a06c91419370d2797 -Author: Himanshu Mishra -Date: Tue May 5 20:16:13 2020 +0900 - - Fix bug in warnings whitelist check - -commit 82b6f1e4cba98a2b86c8f303bf95213259831428 -Author: Himanshu Mishra -Date: Tue May 5 20:09:03 2020 +0900 - - Retry search text for any type of error - -commit 9ea93173f0f7b996e1c49fbc962a831053482461 -Author: Himanshu Mishra -Date: Tue May 5 20:07:43 2020 +0900 - - Do browser.visit again after getting error in finding text - -commit fe088038d6e9f1592d08f1f6c4088fa89ebab72a -Author: Himanshu Mishra -Date: Tue May 5 20:06:16 2020 +0900 - - Better variable names - attemptsToLoad -> loadAttempts - maxAttempts -> maxLoadAttempts - attemptsToSearchText -> findTextAttempts - maxAttemptsToSearchText -> maxFindTextAttempts - -commit 20ef06f6f30d9c3e549e497ffe08b2eb41a2cfa8 -Author: Nikita Nek Dudnik -Date: Tue May 5 12:46:43 2020 +0200 - - Add detailed view page with a list of build steps - -commit ff1b85361393c8895d3adf26906f92e680ffc705 -Author: Stefan Ålund -Date: Tue May 5 12:37:26 2020 +0200 - - Add link to Demos site in README (#719) - -commit a984c9cf22258b2e2fab715a3a671ed77e63cede -Author: Himanshu Mishra -Date: Tue May 5 19:02:37 2020 +0900 - - Ignore a set of warnings during storybook webpack build - -commit 9e7bc707280740d5c78aefcb10b9685bafc68fa6 -Author: Nikita Nek Dudnik -Date: Tue May 5 11:23:37 2020 +0200 - - Restructure pages - -commit 4f32c5a5d34e70b9c36081b1f16613c6105b5fd1 -Merge: 6d92a57bbc 41d879931d -Author: Patrik Oldsberg -Date: Tue May 5 11:06:16 2020 +0200 - - Merge pull request #702 from spotify/rugvip/pdiff - - package/cli: added plugin:diff command - -commit 6d92a57bbc8f10658bc20365ce69bd365f3d249f -Merge: 1063279b4a 26094f82e3 -Author: Ben Lambert -Date: Tue May 5 10:47:01 2020 +0200 - - Merge pull request #717 from spotify/blam/scaffolder - - plugin(scaffolder): Bring up to date with the latest backend template - -commit a93f194cb6526f66d88420d15ecfdf888a3ad28f -Author: Himanshu Mishra -Date: Tue May 5 17:28:43 2020 +0900 - - Break from loop if the test is successful - - Making this mistake since while loops were created :( - -commit 26094f82e313846430c61c5376d7c661b4229fd4 -Author: blam -Date: Tue May 5 10:22:27 2020 +0200 - - chore: prettier is now automagically enabled, and fixing some pr review comments - -commit d050b1c79175bb1c38d4d55bb383402f52ee6d84 -Author: Himanshu Mishra -Date: Tue May 5 17:10:14 2020 +0900 - - Fix storybook webpack warning because of TS types - -commit fe2f7265d3b72f8d2d4ca87214ce1ecc460d499b -Author: Himanshu Mishra -Date: Tue May 5 15:27:16 2020 +0900 - - Add retries to find the text on page for e2e tests - - The page may not be fully loaded on the first go. Hence, we wait for some time and then retry. - -commit f3f1cdb063491a2638d08ff54f7ad3d70e5a8fbe -Author: Himanshu Mishra -Date: Tue May 5 16:57:15 2020 +0900 - - Temp commit to trigger Storybook build warning - -commit 706821337e05fecf0b2f60086a8791f12bc98261 -Author: Himanshu Mishra -Date: Tue May 5 16:50:27 2020 +0900 - - Allow local storybook build even if there are warnings - -commit 23f083a19b43be3bfded194d9a825654bc625773 -Author: Himanshu Mishra -Date: Tue May 5 16:42:14 2020 +0900 - - Fail Storybook build if there are webpack compilation warnings - - Create a Webpack plugin which looks for warnings at the end of the build. - Reference doc: https://webpack.js.org/contribute/writing-a-plugin/ - -commit 7bda356234cc4d7dd8fbc271a77dffa47fd45a6f -Author: Ivan Shmidt -Date: Mon May 4 23:11:59 2020 +0200 - - feat: start:backend package.json - -commit 21ac45698a8804ce5b74857c22090097f1845699 -Author: Ivan Shmidt -Date: Mon May 4 23:10:14 2020 +0200 - - feat: visual adjustments - -commit 08a3033942a6d3516305333b5d9166e377ac3330 -Author: Ivan Shmidt -Date: Mon May 4 22:42:48 2020 +0200 - - feat: react-router links, some ui edits - -commit f028801f39602cb82eed6ea8ca67b50e2ca1a5de -Author: Ivan Shmidt -Date: Mon May 4 21:41:38 2020 +0200 - - feat: retry - -commit 31d05b1f922ce0b7ea0fe03b40a96a8ca1e8b75b -Author: Ivan Shmidt -Date: Mon May 4 20:58:39 2020 +0200 - - feat: circleCI backend proxy - -commit 1063279b4a2411f8fbda175793d4c30047fb231f -Merge: 4bfadc1b7e 5363006759 -Author: Fredrik Adelöw -Date: Mon May 4 20:58:30 2020 +0200 - - Merge pull request #713 from OrkoHunter/OrkoHunter/fix-storybook-build-warning - - Fix Storybook compilation warning - -commit e3ab86103852fa2a663b06379906ba492f4b234a -Author: blam -Date: Mon May 4 20:54:59 2020 +0200 - - chore: fixing eslint config so we can use some great optional?.chaining?.stuff - -commit 4bfadc1b7e6f8c8d637f9cb8cd9e6c60aed9ab6d -Author: Stefan Ålund -Date: Mon May 4 20:52:41 2020 +0200 - - Add disclaimer to Create view (#715) - -commit 1af6cbea8da086c050e59c54c0ec9aeeab2998c6 -Author: blam -Date: Mon May 4 20:39:13 2020 +0200 - - feat(scaffolder): Bring up to date with the latest changes in the inventory service - -commit ef210545c98479c5891191048e6b5a602577d82e -Merge: cc8dbdfe5e 168db0fe9c -Author: blam -Date: Mon May 4 19:40:18 2020 +0200 - - Merge branch 'master' of github.com:spotify/backstage into blam/scaffolder - - * 'master' of github.com:spotify/backstage: - Rename Scaffolder -> Create (#712) - Set the initial Storybook theme to light (#711) - It's InputError then - Even denser errors - Better errors - Show stack in dev - [backend] use common error types - Update Discord link in design docs, fix #672 (#710) - [inventory] move out inventory instantiation + renaming - Table component with filter and search (#600) - [Storybook] Improve Status stories (#699) - Fix blinking animation bug for Status Running component (#706) - packages/cli: add lib ES2019 to common tsconfig - -commit 5363006759da372831a871f43162e8206d9351ac -Author: Himanshu Mishra -Date: Tue May 5 02:37:00 2020 +0900 - - Fix Storybook compilation warning - - Typescript import and export has to be explicit. - Related issue #700 - Related PR #701 - -commit 168db0fe9c5a7fb45b05e00fb19694fa4565d77a -Author: Stefan Ålund -Date: Mon May 4 19:37:03 2020 +0200 - - Rename Scaffolder -> Create (#712) - - * Rename Scaffolder -> Create - - * Use Typography - -commit 8354d4a104e29e5bb23db6e556028e4a0dfbbb2d -Author: Himanshu Mishra -Date: Tue May 5 02:32:47 2020 +0900 - - Set the initial Storybook theme to light (#711) - - This fixes the inconsistency if user's OS/Browser theme is set to Dark mode. - -commit 1d1589680d2e3a5cbdd6ba39bbac843f1c3c57a6 -Merge: 70e2a62155 9724084186 -Author: Fredrik Adelöw -Date: Mon May 4 16:49:35 2020 +0200 - - Merge pull request #709 from spotify/freben/errors - - [backend] use common error types - -commit 39f500a0599d5c3c099c1d6e5efa04f423dd52de -Merge: f708802711 a6dcc9b2e3 -Author: Nikita Nek Dudnik -Date: Mon May 4 16:49:07 2020 +0200 - - Merge branch 'circleci-plugin' of github.com:Nek/backstage into circleci-plugin - -commit 9724084186b684053b76d8ab7393960f22545dd3 -Author: Fredrik Adelöw -Date: Mon May 4 16:42:40 2020 +0200 - - It's InputError then - -commit 129991fcfd4e2faf66ae1b3f334fcf39d0378bf5 -Author: Fredrik Adelöw -Date: Mon May 4 16:34:17 2020 +0200 - - Even denser errors - -commit e5529c249ba06b2341990b34ceac7d322e483915 -Author: Fredrik Adelöw -Date: Mon May 4 15:54:07 2020 +0200 - - Better errors - -commit 1b4b98cd053770fac1f2906604ed171e2c700bdf -Author: Fredrik Adelöw -Date: Mon May 4 13:06:43 2020 +0200 - - Show stack in dev - -commit 48b4a86a97fe36c5bfd6e4f7c1ce1b849728a977 -Author: Fredrik Adelöw -Date: Mon May 4 11:19:23 2020 +0200 - - [backend] use common error types - -commit 70e2a62155c02e96a3db9dfe424c20cef4c099ee -Merge: 8c65917914 7c6b7b9b94 -Author: Fredrik Adelöw -Date: Mon May 4 16:05:32 2020 +0200 - - Merge pull request #707 from spotify/freben/iteraaaaate - - [inventory] move out inventory instantiation + renaming - -commit a6dcc9b2e31c2dc17a2902382ca28033a4f23ffd -Author: Ivan Shmidt -Date: Mon May 4 15:48:07 2020 +0200 - - feat: settings page - -commit f7088027118212bf6f41488afb72cdad1990b746 -Author: Nikita Nek Dudnik -Date: Mon May 4 14:53:01 2020 +0200 - - Move owner/repo form into CircleCIFetch component - -commit cf963ceae8258e00abda8730324f3f4139649d21 -Author: Nikita Nek Dudnik -Date: Mon May 4 13:46:15 2020 +0200 - - Add owner and repo options to authenticate method - -commit 8c659179145529d1db69e1fcecfd6d3f958924a9 -Author: Niklas Ek -Date: Mon May 4 12:15:22 2020 +0200 - - Update Discord link in design docs, fix #672 (#710) - -commit 7c6b7b9b94b3ee43c47f9fa7c8dcfd261de7067a -Author: Fredrik Adelöw -Date: Fri May 1 22:31:54 2020 +0200 - - [inventory] move out inventory instantiation + renaming - -commit 190f11c8f721bb78b2b2aa632f6453df753a8d8e -Author: Sebastian Qvarfordt -Date: Mon May 4 11:10:35 2020 +0200 - - Table component with filter and search (#600) - - * Initial table component with storybook example - - * Moved dependencies to package/core - - * Removed dependency to @backstage/core from base package.json - - * Clean up some examples and remove type from columns, replacing with property align instead - - * Removed more unused stuff and added toggle for filter input - - * Fixed some lint issues - - * Added example with material-table - - * Convert column array passed into MaterialTable Backstage component into MT column array. Allow multiple values in one cell - - * Removed subheader from MT - - * Nicer double value cell - - * Added custom sorting to example - - * Cleaned up stories a bit - - * Setting field instead of customSort - - * Improve styling. Still needs better theme integration - - * Using more colors from theme - - * Fixed typing issue - - * Removed react-table implementation and cleaned up material-table implementation - - * Fixed some type issues - - * Fixed lint issues - -commit 031a4356f15cea2428055ac7f398b2c0d87c172a -Author: Stefan Ålund -Date: Mon May 4 11:09:30 2020 +0200 - - [Storybook] Improve Status stories (#699) - - * [Storybook] Imrove Status stories - - * Remove duplicate classes - -commit 3b2aeae05a508f6253808ec118dafd2421362449 -Author: Himanshu Mishra -Date: Mon May 4 13:34:08 2020 +0900 - - Fix blinking animation bug for Status Running component (#706) - - * Refer to keyframe as a material-ul variable - - https://material-ui.com/guides/migration-v3/\#styles - - * Update background color of Status - - The background color should match with the theme's background color. - -commit c4e0e7ed26f662412af7435dbb79a9896af66c51 -Merge: 7472e9a5c2 47d5d8da4f -Author: Patrik Oldsberg -Date: Sun May 3 15:58:34 2020 +0200 - - Merge pull request #703 from spotify/rugvip/es2019 - - packages/cli: add lib ES2019 to common tsconfig - -commit cc8dbdfe5e085189c5149a531f123abc44425f10 -Merge: 31c4785cc0 7472e9a5c2 -Author: blam -Date: Sun May 3 15:46:23 2020 +0200 - - Merge branch 'master' of github.com:spotify/backstage into blam/scaffolder - - * 'master' of github.com:spotify/backstage: - [Plugin] Explore features in Backstage (#696) - [Storybook] Fix Storybook compilation warnings (#701) - Make the inventory backend standalone runnable - -commit 31c4785cc041171abacd5bfb2fae7e1cf4cc61cf -Author: blam -Date: Sun May 3 15:42:53 2020 +0200 - - chore(scaffolder): Updating dependency graph to include docker api - -commit 47d5d8da4fabe4db1cf5f10eb6b1973c81bc8974 -Author: Patrik Oldsberg -Date: Sun May 3 14:26:59 2020 +0200 - - packages/cli: add lib ES2019 to common tsconfig - -commit 41d879931d57f818b6e4efe3d1ea5385f52e2a4c -Author: Patrik Oldsberg -Date: Sun May 3 15:28:06 2020 +0200 - - packages/cli: clearer plugin:diff output for package.json + fix - -commit 7472e9a5c26187522dcc1760bdf32f358065d5d0 -Author: Stefan Ålund -Date: Sun May 3 14:30:51 2020 +0200 - - [Plugin] Explore features in Backstage (#696) - - * Explore plugin - - * Fixed styles and props - - * Real conent - - * Add Lighthouse and fix tests - - * Add menu item - - * Cleanup - - * Change wording - - * Update package.json - - * Remove dead code - - * Update yarn.lock - - * Revert change to CODEOWNERS - - * Reset yarn.lock to master - - * Fix comments - -commit 8e920cada86f8d38d2a16223772d94b124cf8f8c -Author: Patrik Oldsberg -Date: Sun May 3 14:26:29 2020 +0200 - - packages/cli: add newline at the end of package.json during diff - -commit 56ff5d7d97a199572739232dfe748c12c7e4c348 -Author: Patrik Oldsberg -Date: Sun May 3 14:25:36 2020 +0200 - - packages/cli: add --check and --yes flags to plugin:diff - -commit 7d02e1d15c73188310d4b8ee6a0c8f9eed6cfa5e -Author: Patrik Oldsberg -Date: Sun May 3 14:21:20 2020 +0200 - - packages/cli: split diff command implementation into multiple files - -commit 5e5bb5a523a04f8e4a8f355b21f00a56ee3b4740 -Author: Patrik Oldsberg -Date: Sun May 3 14:02:31 2020 +0200 - - packages/cli: make it possible to override prompt func in diff - -commit acb6212b49080c84ee4446ed7e450fbcfa216f73 -Author: Patrik Oldsberg -Date: Sun May 3 13:53:19 2020 +0200 - - packages/cli: add add handler for diff command to ensure files exist - -commit 8ebb45e990c98f803502fd8b36fcd40fcdfcf89b -Author: Patrik Oldsberg -Date: Sun May 3 13:44:24 2020 +0200 - - packages/cli: functional diff command with prompt for updates - -commit 323f6b715a238e4c6a0ad224bd12b46372e95d79 -Author: Patrik Oldsberg -Date: Sun May 3 12:04:17 2020 +0200 - - packages/cli: separate handlers for different template files in diff - -commit 8a16cf7067faea2f9135195cf77ae0f3419d7cf5 -Author: Conal Cosgrove -Date: Sat May 2 20:39:22 2020 +0100 - - [Storybook] Fix Storybook compilation warnings (#701) - - * separate type import/exports - - * update prettier to v2.0 - - * add explicit type import/exports - -commit d0e245ee3b29cf3e7043ad747e42239946757fe5 -Author: Bilawal Hameed -Date: Sat May 2 15:05:41 2020 +0200 - - fix: some incorrectly formatted markdown - -commit 8c1fd6e7d1f6a352caf76fe2176d5d218918ae28 -Author: Bilawal Hameed -Date: Sat May 2 14:45:49 2020 +0200 - - fix: update app to use new Radar API - -commit 27aa58470a4283358b995157ded445ed9ff467da -Author: Bilawal Hameed -Date: Sat May 2 14:40:43 2020 +0200 - - fix: updated docs - -commit a4c05f203fd2dd8006ea1deeb4e3fbecb218ff1f -Author: Bilawal Hameed -Date: Sat May 2 14:40:31 2020 +0200 - - fix: updated tests for RadarPage and RadarComponent - -commit d04855e98afbea5b2e63dafe32f5141a99b029b4 -Author: Bilawal Hameed -Date: Sat May 2 14:40:12 2020 +0200 - - fix: RadarPage uses RadarComponent under the hood - -commit 2c146cc86b3b485f387a52936f2cddf6f3c84d2c -Author: Bilawal Hameed -Date: Sat May 2 14:39:31 2020 +0200 - - fix: rename loadSampleData to getSampleData - -commit ef9e6ba6a8d9bd910bd6e5bbc1ad9cd37c0be613 -Author: Bilawal Hameed -Date: Sat May 2 14:39:07 2020 +0200 - - feature: add RadarComponent and export as TechRadarComponent - -commit e1f4cd0057879db9b1034561680322799979eff1 -Author: Bilawal Hameed -Date: Sat May 2 14:37:37 2020 +0200 - - feature: split tech-radar api to component/plugin props - -commit c348444fa60401474db63dc4b67e75b55ef3b14c -Author: Patrik Oldsberg -Date: Sat May 2 12:16:32 2020 +0200 - - packages/cli: read template and target files for diffing - -commit 8e0ebb66d9fc4a9624f31485fefbf375f4d98288 -Merge: cd156a44c1 92feb76252 -Author: Fredrik Adelöw -Date: Fri May 1 22:30:59 2020 +0200 - - Merge pull request #686 from spotify/freben/inventory-again - - Make the inventory backend standalone runnable - -commit 92feb76252647f0a5fa1681b11f3fc15d08b55fa -Author: Fredrik Adelöw -Date: Thu Apr 30 14:36:25 2020 +0200 - - Make the inventory backend standalone runnable - - And also make a proposed split of how the loggers are handled. - - Now logs look like - - ``` - { - "type": "incomingRequest", - "service": "backstage", - "timestamp": "2020-04-30T14:29:04.002Z", - "message": "...", - "level": "info" - } - ``` - - for requests, and then if the plugin logs something properly - - ``` - { - "type": "plugin", - "service": "backstage", - "plugin": "inventory", - "timestamp": "2020-04-30T14:29:04.002Z", - "message": "...", - "level": "info" - } - ``` - -commit d7bb95b87ab8bc6fac8cece08ff007a9f993cfcb -Author: blam -Date: Fri May 1 18:27:43 2020 +0200 - - refactor: move to globby instead of glob library for nice promises and efficiency! - -commit 4423aa931522dd01aac286685890c95c0787cbd9 -Author: Patrik Oldsberg -Date: Fri May 1 17:54:39 2020 +0200 - - packages/cli: added basic logic for diff to parse out existing plugin state - -commit 7f03d85d91fdcb8d6406f07d1971e97ea0beb113 -Author: Patrik Oldsberg -Date: Fri May 1 17:53:43 2020 +0200 - - packages/cli: added placeholder plugin:diff command - -commit cd156a44c19873dfb505f4bced1667a96c19cb3d -Merge: 38257822c2 b17462af8b -Author: Ben Lambert -Date: Fri May 1 17:52:58 2020 +0200 - - Merge pull request #651 from spotify/blam/scaffolder - - [Plugin] Start of the Scaffolder Plugin - -commit b17462af8b48ae1730593da5aac52d04e35ea64b -Author: blam -Date: Fri May 1 17:35:34 2020 +0200 - - chore(scaffolder): compiled is now .esm not .cjs - -commit fb71dc957cbde7c1db5ee92ac5aed554fe7d0736 -Merge: 3be8104c5b 38257822c2 -Author: blam -Date: Fri May 1 17:19:55 2020 +0200 - - Merge branch 'master' of github.com:spotify/backstage into blam/scaffolder - - * 'master' of github.com:spotify/backstage: - packages/cli: added jest transform for .esm.js files - plugins/graphiql: use dynamic import to load graphiql - packages/cli: target modern browsers and switch output to module - packages/storybook: make local core imports resolve to core src - packages/storybook: use ts-loader for JS too - -commit 38257822c2c78631547e5acca2562f5d6a3b0b12 -Merge: 4c7a9784cc 2068829f4f -Author: Patrik Oldsberg -Date: Fri May 1 16:54:16 2020 +0200 - - Merge pull request #655 from spotify/rugvip/modernize - - packages/cli: target modern browsers and switch output to module + dynamic graphiql import - -commit 2068829f4f94e37a1ac6b003990e7631cad4269a -Author: Patrik Oldsberg -Date: Mon Apr 27 12:59:23 2020 +0200 - - packages/cli: added jest transform for .esm.js files - -commit 85452a02b734f3070bda058e674d66a878157a8f -Author: Patrik Oldsberg -Date: Sun Apr 26 21:32:51 2020 +0200 - - plugins/graphiql: use dynamic import to load graphiql - -commit b87d266c74f6580c0def0268830abcaa2f1345d4 -Author: Patrik Oldsberg -Date: Sun Apr 26 21:10:53 2020 +0200 - - packages/cli: target modern browsers and switch output to module - -commit 4c7a9784cca437c740f4111dc7f71be9ae1717e5 -Merge: e953259871 5448e54e94 -Author: Patrik Oldsberg -Date: Fri May 1 15:52:08 2020 +0200 - - Merge pull request #695 from spotify/rugvip/fmlsb - - packages/storybook: use ts-loader for JS + resolve @backstage/core imports - -commit 5448e54e949d015fa29286397d31ae4f662e88a6 -Author: Patrik Oldsberg -Date: Fri May 1 15:25:03 2020 +0200 - - packages/storybook: make local core imports resolve to core src - -commit db9d9f7f081d3970f87d69af016a767f948be7ba -Author: Patrik Oldsberg -Date: Fri May 1 15:24:12 2020 +0200 - - packages/storybook: use ts-loader for JS too - -commit 3be8104c5be09f4d4d0a0bf91260b79a573189b7 -Author: blam -Date: Fri May 1 04:13:46 2020 +0200 - - chore: woops wrong name here - -commit 7a578fafb1085d4835ee48540f72842243c3039a -Author: blam -Date: Fri May 1 04:02:14 2020 +0200 - - chore: trying to fix the lockfile hoping this works? - -commit c795d6fbbf85157f70e357696543be8503bdf446 -Merge: 89f29c65f9 e953259871 -Author: blam -Date: Fri May 1 03:44:30 2020 +0200 - - Merge branch 'master' of github.com:spotify/backstage into blam/scaffolder - - * 'master' of github.com:spotify/backstage: - 404 page (#681) - packages/core: remove old widget related things - Address comments - Add TabbedCard and CardTab to the exported layouts components - Add a backend-common package with common concerns such as logging - Move backend lint config to cli config - Translate SortableTable to Typescript - -commit e953259871215489f4ef1ea1a2150ea9888dee7e -Author: Emma Indal -Date: Thu Apr 30 21:12:51 2020 +0200 - - 404 page (#681) - - * core: Implemented error page, closes #170 - - * Swap margin to padding - - * more ui work - - * Convert to TypeScript, functioncal components, use useStyles/makeStyles, clean up some styles and use components from material ui - - * fixup - - * Fix lint errors - - * Remove unused theme consumer - - * Decrease max size of image - - * Remove BackstageTheme added by mistake on rebase - - * Add space to text - - * Use BackstageTheme type and change color from palette - - * Add test - - Co-authored-by: Ryan Pannell - -commit 00efbfe87ef481b66b4e8b4570344b77cb5c77f5 -Author: Ivan Shmidt -Date: Thu Apr 30 16:37:07 2020 +0200 - - feat: save token to session storage and read from it - -commit 60828973825e1234faa5180846494d73999abf59 -Author: Ivan Shmidt -Date: Thu Apr 30 16:19:00 2020 +0200 - - feat: proper api flow implementation - -commit da7522b671762590b38a9ecf81718c12db220393 -Merge: fe25dd9d4e fd0d4150f0 -Author: Fredrik Adelöw -Date: Thu Apr 30 14:35:58 2020 +0200 - - Merge pull request #676 from spotify/freben/backend-common - - Add a backend-common package with common concerns such as logging - -commit fe25dd9d4efc22e3061d4d73d6c5bd0e571a907b -Merge: 3ae7021d9c ae0d3994e9 -Author: Patrik Oldsberg -Date: Thu Apr 30 14:13:15 2020 +0200 - - Merge pull request #684 from spotify/rugvip/nema-widgets - - packages/core: remove old widget related things - -commit ae0d3994e98aaf492afd3bd461e73c10ef2dbc85 -Author: Patrik Oldsberg -Date: Thu Apr 30 12:23:30 2020 +0200 - - packages/core: remove old widget related things - -commit a0c9155272a8fbf44550471b0de1778d4de9740a -Author: Nikita Nek Dudnik -Date: Thu Apr 30 11:55:22 2020 +0200 - - feat: build name, status and ID - -commit 564c0954ec08827baeead75a678cf60ea87eb760 -Author: Ivan Shmidt -Date: Thu Apr 30 11:29:43 2020 +0200 - - feat(circleci-plugin): nice table view - -commit fd0d4150f0c9da076f2898c493e9782c7cc1c2c1 -Author: Fredrik Adelöw -Date: Thu Apr 30 10:49:32 2020 +0200 - - Address comments - -commit 3ae7021d9c4a446b8e77dc6706f57b2d460c582d -Merge: ed8729a171 04db160996 -Author: Patrik Oldsberg -Date: Thu Apr 30 00:09:55 2020 +0200 - - Merge pull request #680 from K-Phoen/export-tabbed-card - - Add TabbedCard and CardTab to the exported layouts components - -commit 04db16099620ce481a5e8473b1aa88ace31ad8ef -Author: Kévin Gomez -Date: Wed Apr 29 23:31:59 2020 +0200 - - Add TabbedCard and CardTab to the exported layouts components - -commit cbda9adb450aae3d0e7e24eff4935eaa57485968 -Author: Ivan Shmidt -Date: Wed Apr 29 17:05:29 2020 +0200 - - feat: token input and showing list of builds - -commit ed8729a171faa0a15b336fba6c072d1b7014b72e -Merge: a92f662d88 6d8845e3f9 -Author: Patrik Oldsberg -Date: Wed Apr 29 16:42:59 2020 +0200 - - Merge pull request #654 from Koroeskohr/translate-sortabletable - - Translate SortableTable to Typescript - -commit 6f58e92fc76107f31f86fca2d23ab6a02fc41b25 -Author: Nikita Nek Dudnik -Date: Wed Apr 29 16:34:35 2020 +0200 - - Create plugin draft - -commit 77d48d8794669af0f3fb6f36d59ea46e08b6d553 -Author: Fredrik Adelöw -Date: Wed Apr 29 09:28:50 2020 +0200 - - Add a backend-common package with common concerns such as logging - -commit a92f662d88347a912391b6a6d13dc7d64e3230b5 -Merge: 9ccf3b0623 69a3fa79e7 -Author: Fredrik Adelöw -Date: Wed Apr 29 11:24:27 2020 +0200 - - Merge pull request #670 from spotify/freben/backendlint - - Move backend lint config to cli config - -commit 89f29c65f9a8d169cba8106d4b4595bb4a9666be -Merge: 247e58689b 9ccf3b0623 -Author: blam -Date: Wed Apr 29 11:04:48 2020 +0200 - - Merge branch 'master' of github.com:spotify/backstage into blam/scaffolder - - * 'master' of github.com:spotify/backstage: - add adr log to repository (#665) - -commit 69a3fa79e7fdd4b03a5732ca622b0db02d12005f -Author: Fredrik Adelöw -Date: Tue Apr 28 15:54:34 2020 +0200 - - Move backend lint config to cli config - -commit 9ccf3b06232aca3e1c6d0acb631d231b1c840dfa -Author: eywoon -Date: Wed Apr 29 10:25:44 2020 +0200 - - add adr log to repository (#665) - -commit 247e58689b28eb47cbd954792dc3c407366b448a -Merge: 62b917f41b 48d0c61f2a -Author: blam -Date: Tue Apr 28 22:55:04 2020 +0200 - - Merge branch 'blam/scaffolder' of github.com:spotify/backstage into blam/scaffolder - - * 'blam/scaffolder' of github.com:spotify/backstage: (34 commits) - yarn.lock: bump eslint-plugin-notice - packages/dev-utils: use doc comments + text fix in README - darkMode: fix HorizontalScrollGrid (#666) (#668) - darkMode: fix bottom link (#664) - Add padding for all Stories (#663) - Use useInterval() hook to refetch audit status in lighthouse plugin WIP (#623) - run yarn install against master yarn.lock - changed object to Partial type - adjust getBBox polyfill logic - re-ran yarn.lock - added initial docs - added tests for RadarPage - re-ran yarn install - add polyfill for SVGElement.prototype.getBBox (not supported in JSDOM) - migrated RadarBubble to material-ui styles - migrated RadarEntry to material-ui styles - migrated RadarFooter to material-ui styles - migrated RadarLegend to material-ui styles - migrated RadarGrid to material-ui styles - removed css modules from css - ... - -commit 62b917f41b415c62dde5cf2080ea9b14bcc322df -Author: blam -Date: Tue Apr 28 22:53:59 2020 +0200 - - chore(scaffolder): fixing linting issues in the repo - -commit 48d0c61f2a7f4191f087e2b81c70ab7568c279ff -Merge: 9635983e5a 0922ed2a21 -Author: Ben Lambert -Date: Tue Apr 28 22:46:02 2020 +0200 - - Merge branch 'master' into blam/scaffolder - -commit 9635983e5aa020e79dac61c100b3e2e78d602c1b -Author: blam -Date: Tue Apr 28 22:38:34 2020 +0200 - - feat(scaffolder): adding some more stuff and some initial sample template - -commit 0922ed2a21e6e64e5632889cc5c5b9f49efab13b -Merge: 49049665d4 2f25856a02 -Author: Patrik Oldsberg -Date: Tue Apr 28 19:05:19 2020 +0200 - - Merge pull request #671 from spotify/rugvip/bump-notice - - yarn.lock: bump eslint-plugin-notice - -commit 2f25856a02d82f264590c0d357515fd4ec74c6ea -Author: Patrik Oldsberg -Date: Tue Apr 28 10:51:53 2020 +0200 - - yarn.lock: bump eslint-plugin-notice - -commit 49049665d45eca3ff0b3ef475bd8edf21f9677be -Merge: 6d55420c6e 99f9c6863e -Author: Patrik Oldsberg -Date: Tue Apr 28 16:20:30 2020 +0200 - - Merge pull request #653 from spotify/rugvip/dev-utils - - Add new dev-utils package with createDevApp() to simplify plugin dev setup - -commit 99f9c6863eb3c006c05d24e25f469ee892434a17 -Author: Patrik Oldsberg -Date: Tue Apr 28 14:06:20 2020 +0200 - - packages/dev-utils: use doc comments + text fix in README - -commit 6d55420c6e1bb65c402965be9592f492bee018e7 -Author: Ivan Shmidt -Date: Tue Apr 28 13:53:40 2020 +0200 - - darkMode: fix HorizontalScrollGrid (#666) (#668) - -commit 421a826622c9103d63025168dba4fd669e3c6795 -Author: Stefan Ålund -Date: Tue Apr 28 11:10:10 2020 +0200 - - darkMode: fix bottom link (#664) - - * darkMode: fix bottom link - - * Remove custom styling - -commit e104fb007c288605101c9bb8d5d02915304897f1 -Author: blam -Date: Tue Apr 28 01:06:29 2020 +0200 - - chore: remworking some files after PR comment - -commit 516e105bd850820032c0701f929b2e42151d2bab -Author: Stefan Ålund -Date: Mon Apr 27 22:00:05 2020 +0200 - - Add padding for all Stories (#663) - -commit 96929febac4fe75d9ecaf1e3e7f741e59862411c -Author: blam -Date: Sun Apr 26 03:34:00 2020 +0200 - - chore(scaffolder) fixing likes - -commit 5111ca4f90d5e9a47389d6fb7c29df212cb6ae57 -Author: blam -Date: Sun Apr 26 03:21:32 2020 +0200 - - chore(scaffolder): cleanup - -commit c62c43d12f5e28411c78d7e09da4b270137d2706 -Author: blam -Date: Sun Apr 26 03:10:11 2020 +0200 - - feat(scaffolder): working more on the scaffolder to make it nice - -commit a86f111b97a98f8e23dd5d680923f17f16f4259e -Author: blam -Date: Sun Apr 26 01:57:34 2020 +0200 - - feat(scaffolder): make the scaffolder repository a little more flexible so we can load from multiple sources - -commit 142f57949df92b72c2b9b3b12e49959dd44a0273 -Author: blam -Date: Fri Apr 24 05:49:21 2020 +0200 - - feat: using some of the latest work from @freben to align with the backend plugin strategy - -commit ea880db04a1eb799f0e3fe05598fd9c6c864e052 -Author: Jose Balanza Martinez <62359443+braulio-balanza@users.noreply.github.com> -Date: Mon Apr 27 09:59:52 2020 -0500 - - Use useInterval() hook to refetch audit status in lighthouse plugin WIP (#623) - - * Fix error when using yarn lint - - * Update logic for create app - - * Add eslint-react-hooks - - * Move common utils to utils.ts - - * Add AuditListRow that refetches the audit - - * Fixed Audit state using a react component - - * Change AuditListRow to AuditRow - - * Fixed some eslint-react-hooks warnings - - * Change AuditListRow to AuditRow - - * Merge - - * Fixes tests in AuditListTable.test.tsx - - * Refactored based on freben's review - - * Remove eslint-plugin-react-hooks - -commit 3464ac753612e389fbc24aa10777b34519921c7d -Merge: 924da0e592 539ccc2a7d -Author: Bilawal Hameed -Date: Mon Apr 27 16:01:28 2020 +0200 - - Merge pull request #628 from spotify/bil/add-tech-radar-plugin - - [Plugin] Migrate Tech Radar - -commit 539ccc2a7d2612ff21c479ab1636316a3066d5ce -Author: Bilawal Hameed -Date: Mon Apr 27 15:50:49 2020 +0200 - - run yarn install against master yarn.lock - -commit e7f25aa91b27fd25f521a1890d4aac60c83f94b2 -Author: Bilawal Hameed -Date: Fri Apr 24 17:18:27 2020 +0200 - - changed object to Partial type - -commit e9ba3895a96e26c310829552cd24588e4b2a2784 -Author: Bilawal Hameed -Date: Fri Apr 24 16:57:13 2020 +0200 - - adjust getBBox polyfill logic - -commit bcc997a0bd83edf5f86dc326381fd84dce512c70 -Author: Bilawal Hameed -Date: Fri Apr 24 16:30:31 2020 +0200 - - re-ran yarn.lock - -commit 9fdc99c3e818497c48cd8a43f6e0c2d4257f3361 -Author: Bilawal Hameed -Date: Fri Apr 24 15:26:50 2020 +0200 - - added initial docs - -commit 4faf199f7281c8f76b09ea0616c610df961ba200 -Author: Bilawal Hameed -Date: Fri Apr 24 14:42:19 2020 +0200 - - added tests for RadarPage - -commit f695b485c8602f6768455df0ee1474d8de096ea1 -Author: Bilawal Hameed -Date: Thu Apr 23 17:19:35 2020 +0200 - - re-ran yarn install - -commit e6af811771d16b6cd80b7702092beaff35cc442a -Author: Bilawal Hameed -Date: Fri Apr 24 12:40:06 2020 +0200 - - add polyfill for SVGElement.prototype.getBBox (not supported in JSDOM) - -commit 521015ed26c5a2cd7a98fd61176bddffd9c80f6f -Author: Bilawal Hameed -Date: Fri Apr 24 10:43:47 2020 +0200 - - migrated RadarBubble to material-ui styles - -commit 6b6d31a556d5ce019dd664a540764998fbd6e7d0 -Author: Bilawal Hameed -Date: Fri Apr 24 10:40:54 2020 +0200 - - migrated RadarEntry to material-ui styles - -commit 60f4ca9797de88a9a449ca5307d023dfbde285ed -Author: Bilawal Hameed -Date: Fri Apr 24 10:37:37 2020 +0200 - - migrated RadarFooter to material-ui styles - -commit d09c5332bf01f096c190e25a01ffad5402794e2a -Author: Bilawal Hameed -Date: Fri Apr 24 10:24:19 2020 +0200 - - migrated RadarLegend to material-ui styles - -commit 1c3c6aa2a4b8874b148366e2829113c42c1a470c -Author: Bilawal Hameed -Date: Thu Apr 23 17:17:57 2020 +0200 - - migrated RadarGrid to material-ui styles - -commit c521e175f913e13456987f37ff2d02701aa20bab -Author: Bilawal Hameed -Date: Thu Apr 23 16:56:44 2020 +0200 - - removed css modules from css - -commit 54908acd59889eb4f3d7e9faf1321d09de5afde3 -Author: Bilawal Hameed -Date: Thu Apr 23 16:36:07 2020 +0200 - - fixed linting errors - -commit 02969e44e5f102cca478bdd32c93876e552d7ff4 -Author: Bilawal Hameed -Date: Thu Apr 23 12:49:48 2020 +0200 - - added example implementation - -commit cdcb4144126eead9c554f550d436b4318e706938 -Author: Bilawal Hameed -Date: Thu Apr 23 12:49:33 2020 +0200 - - migrated tech radar from internal implementation - -commit 1660be5f840f69ee62d80ad607f932cb34885107 -Author: Bilawal Hameed -Date: Thu Apr 23 12:46:40 2020 +0200 - - added packages: d3-force, colors, prop-types - -commit 822701684b75aa8467a643d7147e656b3e29e062 -Author: Bilawal Hameed -Date: Thu Apr 23 11:11:28 2020 +0200 - - added skeleton - -commit 924da0e5921cbcb1fbdfd02edce70a9dfb95b51e -Merge: 9831029430 68ef6c9139 -Author: Patrik Oldsberg -Date: Mon Apr 27 12:06:20 2020 +0200 - - Merge pull request #657 from spotify/rugvip/order66 - - packages/cli: fix usage of exec - -commit 68ef6c9139f725d389b7614dca4c2c957236f7bf -Author: Patrik Oldsberg -Date: Mon Apr 27 10:21:29 2020 +0200 - - packages/cli: fix usage of exec - -commit 983102943044f79abe75cb7c54f0b036595e76ef -Merge: ce1825d4db 6fdef8ac9b -Author: Fredrik Adelöw -Date: Mon Apr 27 10:13:43 2020 +0200 - - Merge pull request #636 from spotify/freben/inventory - - Add skeleton for inventory plugin - -commit 6fdef8ac9bab75780c2c092214e02b34d9923b3e -Author: Fredrik Adelöw -Date: Mon Apr 27 09:49:23 2020 +0200 - - Address comments - -commit c89f7d000e4629c6a2fd9c030cfb65096946764d -Author: Fredrik Adelöw -Date: Thu Apr 23 14:42:20 2020 +0200 - - Add skeleton for inventory plugin - -commit 6d8845e3f9c74a2ca64c60624eb3078de74d7cd3 -Author: Victor Viale -Date: Sun Apr 26 17:51:14 2020 +0200 - - Translate SortableTable to Typescript - - This also removes the dependency on recompose :wave: - -commit 5c797e4f5376e294b2cbd77ef97655fdaff50635 -Author: Patrik Oldsberg -Date: Sun Apr 26 14:30:58 2020 +0200 - - packages/dev-utils: default to navigating to the first registered route - -commit 6ab99a2052ce9b852e0fed697cecb44807eee5ae -Author: Patrik Oldsberg -Date: Sun Apr 26 14:23:49 2020 +0200 - - plugins/graphiql: move dev and test utils to devDependencies - -commit e62bd2b4313dec417322b35b635b7005249f6987 -Author: Patrik Oldsberg -Date: Sun Apr 26 14:22:58 2020 +0200 - - plugins/home-page: use dev-utils to set up dev app - -commit b81ebe7e7219868add28e6aaa4a119d752b73b35 -Author: Patrik Oldsberg -Date: Sun Apr 26 14:11:08 2020 +0200 - - packages/dev-utils: refactor to be more like createApp - -commit ce1825d4db5257610ea48d0b61891cd630fffdbd -Author: Jose Balanza Martinez <62359443+braulio-balanza@users.noreply.github.com> -Date: Sun Apr 26 10:06:47 2020 -0500 - - Fix Sequence component not switching background on dark mode (#652) - - * Remove white background fixing dark mode - - * Added vertical padding to content - -commit 84877f6baea52d7f74f6d55130737f52dfa49c1d -Author: Patrik Oldsberg -Date: Sun Apr 26 13:48:26 2020 +0200 - - packages/dev-utils: add test for api factories - -commit 53c0d19e8de3ec46932d2f5ceb84215b7bf88e52 -Author: Patrik Oldsberg -Date: Sun Apr 26 13:38:26 2020 +0200 - - plugins/graphiql: use dev-utils to set up dev serve - -commit a7d8a03e31c2bf8569077861fb7d644053cf1af2 -Author: Patrik Oldsberg -Date: Sun Apr 26 13:37:53 2020 +0200 - - packages: add new dev-utils package - -commit a1831f8c53e3d64a661101b7365e83df1de18fa3 -Author: Patrik Oldsberg -Date: Sun Apr 26 13:16:50 2020 +0200 - - packages/core: add helper for inferring ApiFactory types - -commit 2526eebdf13855ebf862c0e2951b163cdea697dc -Merge: 1746df6ac5 0e78bc1935 -Author: Patrik Oldsberg -Date: Sun Apr 26 14:18:52 2020 +0200 - - Merge pull request #646 from spotify/rugvip/graphiql - - [Plugin] Add GraphiQL Plugin - -commit 1746df6ac5f5aa7ded5a198a06a76660433b9051 -Merge: c17cabd4fc 3dc707c156 -Author: Patrik Oldsberg -Date: Sat Apr 25 20:53:30 2020 +0200 - - Merge pull request #648 from spotify/rugvip/cleandist - - packages: only include dist folder in published packages - -commit c17cabd4fc5d89d190f21397fbb5d80ae97dfbe9 -Merge: 0c40a47992 2f17ffd795 -Author: Patrik Oldsberg -Date: Sat Apr 25 20:21:16 2020 +0200 - - Merge pull request #649 from spotify/rugvip/tupath - - packages/test-utils: update repo path - -commit 2f17ffd7950671720cd2b1e31465208aa7e96130 -Author: Patrik Oldsberg -Date: Sat Apr 25 19:44:45 2020 +0200 - - packages/test-utils: update repo path - -commit 3dc707c1567d268a2ebab405da852f79a5c1082e -Author: Patrik Oldsberg -Date: Sat Apr 25 19:42:43 2020 +0200 - - packages: only include dist folder in published packages - -commit 0c40a47992982fa3af145efd02c7b42086381e74 -Author: Patrik Oldsberg -Date: Sat Apr 25 16:59:54 2020 +0200 - - packages/test-utils-core: fix renderWithEffects (#647) - -commit 0e78bc193563941781bbe4100678fbd8a57d7973 -Author: Patrik Oldsberg -Date: Sat Apr 25 16:47:29 2020 +0200 - - plugins/graphiql: fix GraphiQLBrowser tests - -commit 7897d3488cbda2eb9b83abcc3bab30c0f34094cc -Author: Patrik Oldsberg -Date: Sat Apr 25 16:43:18 2020 +0200 - - plugins/graphiql: update tests for GraphiQLPage + fixes - -commit 24e6178392e21879ad9b5d90d90c93d4d4aa962e -Author: Patrik Oldsberg -Date: Sat Apr 25 15:50:38 2020 +0200 - - plugins/graphiql: Fix typo in README - - Co-Authored-By: Himanshu Mishra - -commit f1b7dc8b31e1b217e9281bbfdec182d237755d72 -Author: Patrik Oldsberg -Date: Sat Apr 25 14:56:04 2020 +0200 - - plugins/graphiql: add publishing config - -commit f2f3b47894756a0195e4ac14580c00af5d4635bd -Author: Patrik Oldsberg -Date: Sat Apr 25 14:45:47 2020 +0200 - - packages/app: remove graphiql plugin - -commit 3063bd07bf4102cc970f8c208f4b5691092bb7bc -Author: Patrik Oldsberg -Date: Sat Apr 25 14:35:09 2020 +0200 - - plugins/graphiql: update README - -commit d8b4a26a76bf18e7f5c056f8247c4be72ee0643c -Author: Patrik Oldsberg -Date: Sat Apr 25 14:34:32 2020 +0200 - - plugins/graphiql: rename GraphQLBrowser to GraphQLEndpoints and simplify method names - -commit 238f7edcf70bd9b62a961d542f8d5d0ed9df7757 -Author: Patrik Oldsberg -Date: Sat Apr 25 14:09:46 2020 +0200 - - yarn.lock: sync with current deps (#645) - -commit f75ff200a4bd208edc12e1d7ef3e01f9c6605278 -Author: Patrik Oldsberg -Date: Sat Apr 25 13:23:42 2020 +0200 - - plugins/graphiql: make tabs a bit more visible - -commit c73872d01203fb62bb9de60ab4297a2bb026c76d -Author: Patrik Oldsberg -Date: Sat Apr 25 12:56:06 2020 +0200 - - plugins/graphiql: separate GraphiQLBrowser component and load endpoints from api - -commit 0f63f63fcc7e5642d8177fd064f4b758849b503b -Author: Patrik Oldsberg -Date: Sat Apr 25 12:55:39 2020 +0200 - - plugins/graphiql: added supply graphql browsing api in dev wrapper - -commit 2a253d2556afccc8b4ba1167faf1f971ee4490f5 -Author: Patrik Oldsberg -Date: Sat Apr 25 12:55:05 2020 +0200 - - plugins/graphiql: update tsconfig for plugin serve - -commit 95341965acc56ce29b745c7dd964acd5754fba48 -Author: Patrik Oldsberg -Date: Sat Apr 25 12:53:50 2020 +0200 - - plugins/graphiql: added graphql browsing api - -commit 3734aeab628fd187f12d0d397d8e3e9fca24c0bd -Author: Patrik Oldsberg -Date: Fri Apr 24 16:28:48 2020 +0200 - - plugins/graphiql: more tests for StorageBucket and fix removeItem - -commit c8ef790e1bb7a8ea5517f61cf1c3deef40b3a668 -Author: Patrik Oldsberg -Date: Thu Apr 23 17:54:58 2020 +0200 - - plugins/graphiql: fix page test - -commit 7ec8e0d0c2c1cbc3a7713a8a1badfc507bcfa167 -Author: Patrik Oldsberg -Date: Thu Apr 23 17:48:34 2020 +0200 - - plugins/graphiql: add tests for StorageBucket + minor fix - -commit 9d080a4dce9dae615b6d0172ce2eb51af7b83d7b -Author: Patrik Oldsberg -Date: Thu Apr 23 17:47:35 2020 +0200 - - plugins/graphiql: add storage buckets to separate storage for different endpoints - -commit dceff8dd2f575671c670a2ff949928c1b78e6f41 -Author: Patrik Oldsberg -Date: Thu Apr 23 15:45:55 2020 +0200 - - plugins/graphiql: add global style override to fix top bar layout issue - -commit c119eb9a9ac3cecbce6ef96c2f0084322f119afc -Author: Patrik Oldsberg -Date: Thu Apr 23 15:45:23 2020 +0200 - - plugins/graphiql: switch graphiql version to next, with TS support - -commit 10b6fd5bcbe0c339690933513bb0085ea175fa4f -Author: Patrik Oldsberg -Date: Thu Apr 23 14:31:57 2020 +0200 - - plugins/graphiql: replace example page with minimal graphiql page - -commit a2491cb378ddaeb795fef7239d90fdcb0e357083 -Author: Patrik Oldsberg -Date: Thu Apr 23 11:48:25 2020 +0200 - - plugins/graphiql: added plugin serve - -commit 9b0d1f5e7b297df1cb93ce2a2a3377b51fad1731 -Author: Patrik Oldsberg -Date: Thu Apr 23 11:38:24 2020 +0200 - - plugins: create new graphiql plugin - -commit 46803998cda95f1fe2147a8476fcd4b713ed87f8 -Merge: 076f44bb15 6e8274969c -Author: Patrik Oldsberg -Date: Fri Apr 24 18:50:39 2020 +0200 - - Merge pull request #621 from spotify/rugvip/plugin-serve - - Make plugin:serve work and add for home-page plugin + fix declaration maps - -commit 076f44bb15b45c493cf91dd01eea7cdf95c3454e -Author: Wesley Yee -Date: Fri Apr 24 12:48:35 2020 -0400 - - Sequence component (#619) - -commit 55c0385dc4f366dd422d60627913db93f22ff4bb -Author: Bilawal Hameed -Date: Fri Apr 24 16:05:36 2020 +0200 - - fix(lighthouse): corrected import in readme (#641) - - * fix(lighthouse): corrected import in readme - - * fix(lighthouse): updated docs in Intro component - -commit 241ee7f43cbbd6eaab5624cc7f1e3c7881721923 -Merge: 723eaa712c dfd44f2d38 -Author: Patrik Oldsberg -Date: Fri Apr 24 13:35:16 2020 +0200 - - Merge pull request #638 from spotify/rugvip/zetypes - - explicit types and remove cypress resolution override - -commit dfd44f2d383bfca740b98ce3f93078a6874825be -Author: Patrik Oldsberg -Date: Thu Apr 23 21:04:17 2020 +0200 - - package: remove cypress resolution override and bump to 4.4.1 - -commit 6e8274969c040057351e990a1e04e11a17322762 -Author: Patrik Oldsberg -Date: Fri Apr 24 12:43:58 2020 +0200 - - packages/cli: make plugin build generate usable declaration maps - -commit 723eaa712c6c4809116052a6df1ec83c10b3068e -Merge: cb4b35708d 1020a93934 -Author: Patrik Oldsberg -Date: Thu Apr 23 23:25:33 2020 +0200 - - Merge pull request #637 from spotify/rugvip/testyles - - packages/cli: default to mocking style imports in tests - -commit 2bbe78a0b90c071efb00132b5f0d594852fc7c30 -Author: Patrik Oldsberg -Date: Thu Apr 23 21:02:35 2020 +0200 - - tsconfigs: be explicit about what types to include in compilation - -commit 1020a93934534ffa40a1ce386fd277ff88df2ac3 -Author: Patrik Oldsberg -Date: Thu Apr 23 17:54:26 2020 +0200 - - packages/cli: default to mocking style imports in tests - -commit cb4b35708dda05aebb25f0ca1c486418223bbd5a -Merge: b55a2adb7e 5037489af8 -Author: Patrik Oldsberg -Date: Thu Apr 23 15:03:42 2020 +0200 - - Merge pull request #635 from spotify/rugvip/no-padding - - packages/core: add noPadding prop to Content - -commit 5037489af8028f49d40c5ad16d956c18aca97243 -Author: Patrik Oldsberg -Date: Thu Apr 23 14:32:27 2020 +0200 - - packages/core: add noPadding prop to Content - -commit b55a2adb7ee8a72c43897cbca5f1994e3f6cd39a -Author: Muhammad Rivki -Date: Thu Apr 23 19:20:53 2020 +0700 - - fix: remove style that override background (#634) - -commit 86a580a235486218eb40fa34023898297de53f4d -Author: Patrik Oldsberg -Date: Thu Apr 23 13:42:17 2020 +0200 - - packages/cli: resolve mjs before js in plugin serve - -commit 933af8d4146ef8d5af2e12db2741b87aa29f6494 -Merge: 0ed6b60277 f807eefb96 -Author: Patrik Oldsberg -Date: Thu Apr 23 13:16:04 2020 +0200 - - Merge pull request #625 from spotify/rugvip/noia - - packages/core: disallow implicit any - -commit baaa1d2f3407feb2b729ffc5b5430aac261275a6 -Author: Patrik Oldsberg -Date: Thu Apr 23 11:10:58 2020 +0200 - - packages/cli: prefix plugin serve paths with target instead of app - -commit f807eefb96c377659a9a0bf0bc8cc54b9afe2d0a -Author: Patrik Oldsberg -Date: Thu Apr 23 11:04:01 2020 +0200 - - packages/core: disallow implicit any - -commit 8777ee7487cf12caf52b847d35661d376aea3e41 -Author: Patrik Oldsberg -Date: Thu Apr 23 11:03:43 2020 +0200 - - packages/core: add missing types for apis - -commit d47d09eeb1261e40431eb5dc4916128ea9bc706f -Author: Patrik Oldsberg -Date: Thu Apr 23 11:03:07 2020 +0200 - - packages/core: add missing types for components - -commit 27f32e9d5671b7fa1b9b1988dddf108fc63d9a77 -Author: Patrik Oldsberg -Date: Thu Apr 23 10:53:08 2020 +0200 - - packages/core: add missing types for layout components - -commit 0ed6b60277d563c151d2663a457505a5ef2f2f22 -Merge: e567e06f65 3020d01246 -Author: Patrik Oldsberg -Date: Thu Apr 23 10:42:07 2020 +0200 - - Merge pull request #622 from spotify/patriko/wait-a-moment - - package: move or remove some root deps - -commit e567e06f65ed818772cce7eede5753c9c6324bf1 -Merge: e034f6b819 edd3ce20df -Author: Fredrik Adelöw -Date: Thu Apr 23 10:35:06 2020 +0200 - - Merge pull request #624 from spotify/freben/readme - - Add README and comment to clarify example status of backend - -commit edd3ce20df6ec7fcf4fe741b6f7817496b96dbd6 -Author: Fredrik Adelöw -Date: Thu Apr 23 10:30:22 2020 +0200 - - Reference from main README too - -commit 01e9106b22bedca949c51e99fc32d2bb731161ce -Author: Patrik Oldsberg -Date: Thu Apr 23 10:22:27 2020 +0200 - - packages/core: add react-helmet types - -commit da51bd777c2a02e008267add4a3f27b1668a27f1 -Author: Fredrik Adelöw -Date: Thu Apr 23 09:26:30 2020 +0200 - - Add README and comment to clarify example status of backend - -commit e034f6b8194294e37845a405fca145a6e99ee94f -Merge: efb789a4fe 1337c538df -Author: Patrik Oldsberg -Date: Thu Apr 23 09:15:09 2020 +0200 - - Merge pull request #620 from spotify/rugvip/global-stoyle - - package/app: move global styles to theme - -commit 79997ccf546cc12f25629aa9dc3ef13cf1c96688 -Author: Patrik Oldsberg -Date: Thu Apr 23 00:10:54 2020 +0200 - - plugins/homePage: added plugin:serve and dev setup - -commit 85f97e70c6385c5cc9ebfcd0a7e39a482db1de70 -Author: Patrik Oldsberg -Date: Thu Apr 23 00:01:29 2020 +0200 - - packages/cli: add history api fallback to plugin:serve - -commit b45a54a4a7043ddc4dd3d88d48265c2886451a01 -Author: Patrik Oldsberg -Date: Wed Apr 22 23:59:09 2020 +0200 - - packages/cli: update plugin:serve to resolve src-relative imports - -commit f4cc327d803b496f08b1013b37419075c7043cba -Author: Patrik Oldsberg -Date: Wed Apr 22 23:58:48 2020 +0200 - - packages/cli: exclude dev/ folder in rollup config - -commit 7ac528b1ceaa76930b5de6dcfc64f476698f39aa -Author: Patrik Oldsberg -Date: Wed Apr 22 23:56:30 2020 +0200 - - packages/cli: update eslint config test config to include dev/ and only setupTests directly in src - -commit 3020d01246a01b55d054bceeaff5c68bcaa63d2c -Author: Patrik Oldsberg -Date: Thu Apr 23 00:33:11 2020 +0200 - - package: move or remove some root deps - -commit bb71394d39f10298171630c15c07e128f3e7d88f -Author: Patrik Oldsberg -Date: Wed Apr 22 23:55:33 2020 +0200 - - packages/cli: call watchDeps before plugin:serve and update path resolutions - -commit 1337c538df42c6951e3dd8a5948b1b706f5cd7f3 -Author: Patrik Oldsberg -Date: Wed Apr 22 23:26:41 2020 +0200 - - package/app: move global styles to theme - -commit efb789a4fe239f61f3fb5d73aa89a0c8eba3199b -Author: Wesley Yee -Date: Wed Apr 22 14:14:56 2020 -0400 - - Move error api to more generic alert api (#605) - -commit ab86d08e168b58b853d6eff890995f43a3cb9e4c -Merge: 5b34072863 c2b5647036 -Author: Fredrik Adelöw -Date: Wed Apr 22 19:41:58 2020 +0200 - - Merge pull request #617 from spotify/freben/backend - - Initial skeleton for the backend - -commit c2b564703676c636d0b9edfb72a5d5b2fbf7f824 -Author: Fredrik Adelöw -Date: Wed Apr 22 17:25:24 2020 +0200 - - Address comments - -commit 83689b62364689efdf07a41b75451094173b6341 -Author: Fredrik Adelöw -Date: Wed Apr 22 16:00:20 2020 +0200 - - Restrict node engine version - -commit 15301311e1dcd59d02abec62fc64e8fed080da5a -Author: Fredrik Adelöw -Date: Wed Apr 22 15:57:38 2020 +0200 - - Add dummy test - -commit 35320bdb4f205206fa2fda50f71e5d0dc17f6f6a -Author: Fredrik Adelöw -Date: Wed Apr 22 14:59:12 2020 +0200 - - Simplify - -commit 5b34072863fcaa23153b05560a25e10e83e66247 -Merge: 1c99b3bc38 1269cc9e6b -Author: Niklas Ek -Date: Wed Apr 22 14:21:39 2020 +0200 - - Merge pull request #614 from spotify/nikek/zoom - - remove css zoom - -commit 1269cc9e6b232146cbb583e4cfeac45256650132 -Author: nikek -Date: Wed Apr 22 13:59:47 2020 +0200 - - remove css zoom - -commit 1c99b3bc38efc3c79f18b281378fa2f9f4f3fd9a -Merge: 9e1c6c6f8d c5b9feed54 -Author: Fredrik Adelöw -Date: Wed Apr 22 07:15:35 2020 +0200 - - Merge pull request #611 from OrkoHunter/OrkoHunter/#573-more-trendline-stories - - Show a variety of Trendline components in the storybook - -commit 9e1c6c6f8d9befb83a85fdcbb45be050ccbd88d6 -Merge: af6dcfff5d 219f058f02 -Author: Fredrik Adelöw -Date: Wed Apr 22 07:14:24 2020 +0200 - - Merge pull request #610 from OrkoHunter/OrkoHunter/#606-copytextbutton-to-typescript - - Port CopyTextButton component to TypeScript - -commit c5b9feed54cdd74a4d7baa947d994d40946c3e99 -Author: Himanshu Mishra -Date: Wed Apr 22 12:32:35 2020 +0900 - - Wrap the sortable table into an info card - -commit da14cdf84e34b3c4241473e2811e489df516989f -Author: Himanshu Mishra -Date: Wed Apr 22 03:47:42 2020 +0900 - - Show a variety of Trendline components in storybook - -commit 219f058f029ea1c0c560e064e2904f9a3bd23925 -Author: Himanshu Mishra -Date: Wed Apr 22 03:17:33 2020 +0900 - - Add type check to core component since they will be used in JS - -commit af6dcfff5deb81ead7fc6918cee4b76340e7dbec -Merge: 874be904d2 1cb81ce5c0 -Author: Patrik Oldsberg -Date: Tue Apr 21 19:38:26 2020 +0200 - - Merge pull request #609 from OrkoHunter/OrkoHunter/create-directories-for-component-files - - Move files of couple components into their own component directory - -commit d454803525c9ba439293158dc5e4b6644c70113c -Author: Himanshu Mishra -Date: Wed Apr 22 02:35:54 2020 +0900 - - Use HTMLInputElement when calling useRef - - Run prettier on the file - -commit 1cb81ce5c0f0a5504ef5cc053430e24a1db9b055 -Author: Himanshu Mishra -Date: Wed Apr 22 01:01:28 2020 +0900 - - Use absolute import instead of relative import - -commit e750cdbf027a36574f43196e4df8c21f42b10709 -Author: Himanshu Mishra -Date: Wed Apr 22 00:36:52 2020 +0900 - - Port CopyTextButton to TypeScript - -commit a72bd32b1f2c371792271b4ddd4e645f4c677252 -Author: Himanshu Mishra -Date: Wed Apr 22 00:10:02 2020 +0900 - - index.tsx required for the components namespace - -commit 6a0ff5ee22d3cc3a0a460648324fe83eadaea8c8 -Author: Himanshu Mishra -Date: Wed Apr 22 00:01:41 2020 +0900 - - SortableTable depends on the Status component - -commit 9cffb0258db167b6db28b912217bc3dea663d609 -Author: Himanshu Mishra -Date: Tue Apr 21 23:58:39 2020 +0900 - - Move SortableTable component files in a directory - -commit abc0f6dc87551720e717f694e07f845fe4bac850 -Author: Himanshu Mishra -Date: Tue Apr 21 23:57:59 2020 +0900 - - Move HorizontalScrollGrid component files in a directory - -commit 874be904d2207c84a722951f8745bf0e1f291c47 -Author: Stefan Ålund -Date: Tue Apr 21 15:31:01 2020 +0200 - - Add TypeScript question to FAQ (#608) - -commit c4e5297ba0882a4cc5a14583b74243d357245bbc -Author: Fredrik Adelöw -Date: Tue Apr 21 12:00:06 2020 +0200 - - More stuff according to article - -commit b5ef92e03b9564ec8ef331376ff67e8de52e0a53 -Merge: 17c4a04818 c6c17cdf3e -Author: Patrik Oldsberg -Date: Tue Apr 21 09:51:55 2020 +0200 - - Merge pull request #587 from spotify/rugvip/cli-lib - - packages/cli: rename helpers to lib and move build-cache and watch-deps to lib - -commit 1a067012722276f8c33efec78c218b74cfabe61b -Author: Fredrik Adelöw -Date: Tue Apr 21 09:31:54 2020 +0200 - - Adding some basics - -commit 5607735aea45edcc0f69c2acb44ae1c5c5247773 -Author: Fredrik Adelöw -Date: Tue Apr 21 09:12:08 2020 +0200 - - Initial commit - -commit c6c17cdf3e7ca8a71e1e5f4da4923c2fdc30d303 -Author: Patrik Oldsberg -Date: Sat Apr 18 15:01:49 2020 +0200 - - packages/cli: move create-plugin/codeowners to lib - -commit a9232549477e07cb7a6aa1f55a33381fcdb53c7e -Author: Patrik Oldsberg -Date: Sat Apr 18 14:11:09 2020 +0200 - - packages/cli: moved build cache implementation to lib - -commit a2e612cad3eb59ee5fe682c763eb8397723b1497 -Author: Patrik Oldsberg -Date: Sat Apr 18 13:42:29 2020 +0200 - - packages/cli: add log func options to run, making it usable in more places - -commit 2c095442edbfa81e2bf7302f8b9c5ad52be46e60 -Author: Patrik Oldsberg -Date: Sat Apr 18 02:51:32 2020 +0200 - - packages/cli: most of watch-deps into lib and re-use from there instead - -commit 921beb792da6064087fe72060df732bc3653969d -Author: Patrik Oldsberg -Date: Sat Apr 18 02:42:44 2020 +0200 - - packages/cli: added a more reusable and less verbose logging util and use in watch-deps - -commit 462f82e4e64c11e9630890cbe04f6daf8cca966d -Author: Patrik Oldsberg -Date: Sat Apr 18 01:32:33 2020 +0200 - - packages/cli: rename helpers to lib - -commit 17c4a048184efef33a7bc6b85ae87e2939c1c79b -Merge: 6313674558 52736265a2 -Author: Marcus Eide -Date: Mon Apr 20 15:17:13 2020 +0200 - - Merge pull request #578 from spotify/eide/cy-in-app - - Include cypress tests when creating a new app - -commit 631367455801ccebaf70c1e8dbdb937a548f349d -Merge: e4608c53b4 c615fb18cc -Author: Patrik Oldsberg -Date: Mon Apr 20 15:09:28 2020 +0200 - - Merge pull request #601 from spotify/rugvip/rollup-logs - - packages/cli: more beautiful rollup output - -commit e4608c53b413bc6967c31dfe89dcc016fc146add -Merge: 149e90249c 7a5a57dd31 -Author: Fredrik Adelöw -Date: Mon Apr 20 14:24:21 2020 +0200 - - Merge pull request #604 from OrkoHunter/OrkoHunter/remove-verbose-webpack-progress-logging - - Disable Verbose logging when building Storybook - -commit 52736265a28c04d8a0bec3df5db0d324a53354b6 -Author: Marcus Eide -Date: Mon Apr 20 13:53:40 2020 +0200 - - Use cross-env - -commit 7a5a57dd31411d68ab2086d1ebb291ee6fb90871 -Author: Himanshu Mishra -Date: Mon Apr 20 21:02:21 2020 +0900 - - Disable ProgressPlugin which logs verbose webpack build progress - - Warnings and Errors are still logged during build. - -commit f5c67a4740f218912bbb36ae9e638bbd00d25a01 -Author: Marcus Eide -Date: Fri Apr 17 13:50:20 2020 +0200 - - Add workflow step for cypress test - -commit c615fb18ccc3e46f6604c65e9d51aa3d045e78a4 -Author: Patrik Oldsberg -Date: Mon Apr 20 11:14:38 2020 +0200 - - packages/cli: more beautiful rollup output - -commit 149e90249c4b3e41491662d43cd88da6a59bc9e2 -Merge: fe2ae12670 f293d9fb0e -Author: Patrik Oldsberg -Date: Mon Apr 20 11:53:11 2020 +0200 - - Merge pull request #599 from OrkoHunter/OrkoHunter/#543-storybook-dark-light-mode-switch - - Support dark/light mode in Storybook - -commit f293d9fb0ede2e55fd0ef84bc624e683ae841d50 -Author: Himanshu Mishra -Date: Mon Apr 20 17:59:23 2020 +0900 - - Add textContrast as color for white/black text in dark/light theme - -commit c2e2c9363f5c75ab03c7828ad5e2e455059209ba -Author: Himanshu Mishra -Date: Mon Apr 20 17:19:13 2020 +0900 - - Check if dark mode is enabled and toggle - - Storybook components are wrapped using a decorator in the storybook config. When rendering, useDarkMode() will let the component know which theme (dark/light) to thoose. - -commit fe972b1e21548e50560f895dc15ba314ad46c368 -Author: Himanshu Mishra -Date: Mon Apr 20 17:17:42 2020 +0900 - - Use storybook-dark-mode addon to toggle light/dark mode - - See the project https://github.com/hipstersmoothie/storybook-dark-mode - -commit fe2ae126709160814ff7d0d72bfaeaa9babb34d3 -Merge: 17cb07bda5 23beb80579 -Author: Patrik Oldsberg -Date: Sun Apr 19 19:03:52 2020 +0200 - - Merge pull request #541 from spotify/alund/components - - Port over more internal components - -commit 17cb07bda5d5770669723ef38b7d8a279e4f1986 -Merge: e842489333 15908eec6d -Author: Patrik Oldsberg -Date: Sun Apr 19 17:05:33 2020 +0200 - - Merge pull request #594 from spotify/rugvip/cli-test - - packages/cli: forward all args to jest and run in watch mode by default - -commit 15908eec6dfe0b1b3757b9d703a1913bc1793fe8 -Author: Patrik Oldsberg -Date: Sun Apr 19 02:21:44 2020 +0200 - - packages/cli: forward all args to jest and run in watch mode by default - -commit e842489333af3653032edeff382a63addf936b0c -Author: Bilawal Hameed -Date: Sat Apr 18 20:08:35 2020 +0200 - - fix(docs): bad backstage hyperlink (#592) - -commit 23beb805798e1d94e17c269808f909f63f0d0d80 -Author: Patrik Oldsberg -Date: Sat Apr 18 19:49:44 2020 +0200 - - packages/core/components/CopyTextButton: fix disabled test - -commit 8b429c03a73856d8e4a56ff5a5e146c6261aff70 -Author: Patrik Oldsberg -Date: Sat Apr 18 18:20:11 2020 +0200 - - packages/core/components/CopyTextButton: refactor to functional component + provide errorApi in storybook - -commit 151417a9ed60dc8eb65945e0c68e73cca6eebef1 -Author: Stefan Ålund -Date: Sat Apr 18 18:00:15 2020 +0200 - - Document how to suggest new plugins (#590) - - * Document how to suggest new plugins - - * Update plugin_template.md - - * Update ux-component_template.md - - * Update plugin_template.md - -commit 8e5592c6e83671f3ea8e254175c4b0c74fc8febf -Merge: 8f6e3ef9ee 8fce6e90b5 -Author: Bilawal Hameed -Date: Sat Apr 18 17:07:21 2020 +0200 - - Merge pull request #591 from spotify/bih-patch-1 - - fix(feature-flags): corrected docs to instantiate FeatureFlags - -commit 8fce6e90b5b5d971f3f4a47b84717e297569c0df -Author: Bilawal Hameed -Date: Sat Apr 18 16:55:42 2020 +0200 - - fix(feature-flags): corrected docs to instantiate FeatureFlags - -commit 8f6e3ef9eee37820723a9b7796f61e3950c55cad -Merge: d35d0ac11e 4ed0abc7b7 -Author: Patrik Oldsberg -Date: Sat Apr 18 16:44:29 2020 +0200 - - Merge pull request #586 from ruairitobrien/fix-deps - - Change peerDependencies to dependencies #584 - -commit d35d0ac11edd5a409b73cf514e8ea319e891e497 -Merge: fe5844038e 7584350834 -Author: Patrik Oldsberg -Date: Sat Apr 18 16:42:18 2020 +0200 - - Merge pull request #588 from spotify/rugvip/cli-tsconfig - - packages/cli: use separate tsconfig for builds to get currect config in tests - -commit 7584350834e6de5b12c97a5bb1b76e851deafada -Author: Patrik Oldsberg -Date: Sat Apr 18 14:47:46 2020 +0200 - - packages/cli: use separate tsconfig for builds to get currect config in tests - -commit fe5844038e38c4646148fdfc80f13ebc829142c3 -Merge: c8f3b426de 2e470f4548 -Author: Patrik Oldsberg -Date: Sat Apr 18 13:18:40 2020 +0200 - - Merge pull request #585 from spotify/rugvip/cli-watch - - packages/cli: fix and document watch mode - -commit 4ed0abc7b7afe27015ec99f369a2f824a424dd44 -Author: Ruairi O Brien -Date: Sat Apr 18 01:50:48 2020 +0100 - - Moveed all test-util deps to dependencies - -commit c1ada09d06713c251c65bf73d0b7f7519fd3d670 -Author: Ruairi O Brien -Date: Sat Apr 18 01:41:41 2020 +0100 - - Change peerDependencies to dependencies - - Also removed some duplication. - - Addresses #584 - -commit c8f3b426def28de9ad7bedc97a2708c627b9eb93 -Merge: cbee11093c 6f1c910a20 -Author: Patrik Oldsberg -Date: Sat Apr 18 01:56:18 2020 +0200 - - Merge pull request #581 from ruairitobrien/master - - Change peer dependencies to be regular dependencies #576 - -commit 2e470f454820203848e7a134bb3fd92956daa4e4 -Author: Patrik Oldsberg -Date: Sat Apr 18 01:12:30 2020 +0200 - - packages/cli: fix and document watch mode - -commit 6f1c910a20052741ed6cc173e2e408c15fc6aefe -Author: Ruairí O'Brien -Date: Fri Apr 17 19:15:04 2020 +0100 - - Put backstage cli back in dev dependencies - -commit cbee11093c79d8e0413e661fc7f41ccb6437f0c3 -Merge: d42351ba3d 9ec2f88ed5 -Author: Patrik Oldsberg -Date: Fri Apr 17 18:42:24 2020 +0200 - - Merge pull request #583 from ruairitobrien/fix-link - - Fixed broken link in Readme - -commit 9ec2f88ed5bea32e2aa14a5ddfffe668f03fe42f -Author: Ruairi O Brien -Date: Fri Apr 17 17:16:53 2020 +0100 - - Fixed broken link in Readme - -commit da6ec4e17d83c3a037fa0f5101ec33e58c1785f2 -Author: Ruairi O Brien -Date: Fri Apr 17 16:35:15 2020 +0100 - - Change peer dependencies to be regular dependencies #576 - - Removed explicit dependency on backstage cli to inherit from root. - -commit d42351ba3de3a271109b4f0cb0331a835fd6fbd6 -Author: Stefan Ålund -Date: Fri Apr 17 15:46:45 2020 +0200 - - Moved up CONTRIB in README (#579) - -commit b5f24a7d190b284ca54e6c89a533f0ec1babaceb -Author: Marcus Eide -Date: Fri Apr 17 13:28:13 2020 +0200 - - Include a minimal cypress e2e test with the app - -commit 09411b066123974b311460f7b90eb75dbc9821eb -Author: Stefan Ålund -Date: Fri Apr 17 12:30:54 2020 +0200 - - Update APIs - -commit 6518657568432e604a227c371333b472025e96fa -Merge: 11f7522205 4c2331d4bb -Author: Stefan Ålund -Date: Fri Apr 17 12:16:38 2020 +0200 - - Merge branch 'master' into alund/components - -commit 4c2331d4bbebcd3086e60eab25cd349bc48ababe -Author: Marcus Eide -Date: Fri Apr 17 12:12:49 2020 +0200 - - Add version badge (#577) - -commit 23802d6c58665d41d0ed5a5301f7f3fadab0eb2b -Author: Marcus Eide -Date: Fri Apr 17 11:44:36 2020 +0200 - - Clarify creating a new plugin as the next step (#575) - - * Move create-app docs out from getting started - - * Add contributing to readme.md - -commit eb76a4d05a1e31659794835a893d5208ca7a86c5 -Author: Stefan Ålund -Date: Fri Apr 17 10:53:11 2020 +0200 - - Add CONTRIBUTING (#572) - - * Add CONTRIBUTING - - * Update CONTRIBUTING.md - - * Fixed review comments - - * Typo - -commit 3f2f014327becbe6e080a3c41a3f2fce0d4d3d3e -Merge: bec0437faf cdbd7e1278 -Author: Patrik Oldsberg -Date: Fri Apr 17 10:42:34 2020 +0200 - - Merge pull request #435 from braulio-balanza/remove_plugin_wip - - Remove plugin wip - -commit cdbd7e1278ca03f87b285749235492402055ff44 -Merge: fd190f8bd5 bec0437faf -Author: Patrik Oldsberg -Date: Fri Apr 17 10:25:28 2020 +0200 - - Merge branch 'master' into remove_plugin_wip - -commit bec0437faf4381e245bee19b6dbb6ebd47c70c30 -Merge: 0e2dc866bf 40b4ea835b -Author: Patrik Oldsberg -Date: Fri Apr 17 10:22:14 2020 +0200 - - Merge pull request #571 from braulio-balanza/update_create-plugin_logic - - Update logic for create app - -commit 0e2dc866bf7480e654086f1a6600bcc7075b0027 -Merge: f774c115dc d70337eb53 -Author: Patrik Oldsberg -Date: Fri Apr 17 09:25:15 2020 +0200 - - Merge pull request #570 from spotify/rugvip/cli-e2e-tweaks - - cli e2e test tweaks - -commit f774c115dc02e9739f1f3e5d9330eb80c072fb07 -Author: Stefan Ålund -Date: Fri Apr 17 08:25:20 2020 +0200 - - Extract TrendLine from Lighthouse plugin (#532) - - * Extract TrendLine from Lighthouse plugin - - * Create TrendLine.stories.tsx - - * Change lifecycle names - - * Made story example smaller - - * Review comment - - * Update TrendLine.tsx - -commit 40b4ea835bbf9c422d754f394dfd46eb49aeb464 -Author: Jose Balanza Martinez -Date: Thu Apr 16 13:29:26 2020 -0500 - - Update logic for create app - -commit fd190f8bd542dd0ef073e1ca01c8c530d042b6ee -Author: Jose Balanza Martinez -Date: Thu Apr 16 13:14:38 2020 -0500 - - Update Create plugin logic - -commit 6c514e1a1e0856b7d99905e9abcacb487260432c -Author: Jose Balanza Martinez -Date: Thu Apr 16 13:12:07 2020 -0500 - - Updates test, uses temporary directory now - -commit d70337eb53dab9c8d2428100f88ef7915face173 -Author: Patrik Oldsberg -Date: Thu Apr 16 19:38:01 2020 +0200 - - scripts: move cli-e2e-test to packages/cli/e2e-test - -commit 3d2a79b20f22e0d4486c9955251c3b28003e8bad -Merge: 6889e02a5c 47dd73919b -Author: Jose Balanza Martinez -Date: Thu Apr 16 12:32:53 2020 -0500 - - Merge branch 'master' of https://github.com/spotify/backstage into remove_plugin_wip - -commit e522989249388eddcf9b891a14b8d98050e9fab4 -Author: Patrik Oldsberg -Date: Thu Apr 16 19:06:11 2020 +0200 - - github/workflows,scripts/cli-e2e-test: use runner temp dir instead of generated dir - -commit 7a320302c10562bc60ffede310c26103145313a1 -Author: Patrik Oldsberg -Date: Thu Apr 16 18:54:50 2020 +0200 - - scripts/cli-e2e-test: refactor path handling a bit - -commit be0881ff35676b74fc3bfd4d9b26945521193b91 -Author: Patrik Oldsberg -Date: Thu Apr 16 18:46:30 2020 +0200 - - scripts/cli-e2e-test: removed yarn init - -commit 54108354ff402b4cd25c545338bd847f0b388a7f -Author: Patrik Oldsberg -Date: Thu Apr 16 17:52:08 2020 +0200 - - github/workflows: avoid cd in final cli tests - -commit fe0b3e5b10e1414eee2013a5bc310b80d19a7ae2 -Author: Patrik Oldsberg -Date: Thu Apr 16 17:12:22 2020 +0200 - - packages/cli: added new ownRootDir to paths and use for create-app e2e override - -commit bdafffb2371ad12873c016df845eb2fdd2ea4034 -Author: Patrik Oldsberg -Date: Thu Apr 16 16:52:47 2020 +0200 - - packages/cli: no special handling of cli e2e tests wrt caching - -commit 372200bb1950c9dfafb86868aada7727b715672e -Author: Patrik Oldsberg -Date: Thu Apr 16 16:49:53 2020 +0200 - - github/workflows: split final cli lint and test task - -commit 47dd73919bd46c0d439bb8dde1b18ebf2386c26c -Merge: 218ee1a391 fb42fd490b -Author: Patrik Oldsberg -Date: Thu Apr 16 16:42:05 2020 +0200 - - Merge pull request #550 from spotify/eide/app-e2e - - Add create-app to e2e - -commit 218ee1a3915dc607b92bc7e0ef2bd5dfa049af3e -Merge: 624c280e3e d9f34e3fff -Author: Patrik Oldsberg -Date: Thu Apr 16 16:25:13 2020 +0200 - - Merge pull request #563 from spotify/rugvip/theme-refactor - - packages/theme: refactor to differ themes by palette only, and expose nicer types - -commit fb42fd490b2f9ce8748413aa79e28c4ee313ce36 -Author: Marcus Eide -Date: Thu Apr 16 15:49:18 2020 +0200 - - wip: trying different things - -commit 60d6392e4183843ad773fedbe90f2baa3e3aa0a4 -Author: Marcus Eide -Date: Thu Apr 16 15:43:54 2020 +0200 - - Add back isTemp check - -commit 99c2c5879e0b540f91e82464df0cd96b743d3b79 -Author: Marcus Eide -Date: Thu Apr 16 15:31:14 2020 +0200 - - Export helper methods differently - -commit 99986cfc1116475d2b933b8f2d131761a266c1a4 -Author: Marcus Eide -Date: Thu Apr 16 15:23:38 2020 +0200 - - Fix path for cli cmd and add debug logs - -commit e762e953687e56c14caaab13bab4d5378080fcf1 -Author: Marcus Eide -Date: Thu Apr 16 15:20:20 2020 +0200 - - Modify envs in cli workflow - -commit 3eca6cc9d5cf83e4e8104a6f8738031b49327362 -Author: Marcus Eide -Date: Thu Apr 16 15:00:21 2020 +0200 - - Change name of env variable used in script - -commit c8f8759379ed9710bc4ffd64bda6b5767769108c -Author: Marcus Eide -Date: Thu Apr 16 14:41:53 2020 +0200 - - Try different approach to change dir in final step - -commit 55b767a3fab707875a2c6a01d5159a0cbc3a9306 -Author: Marcus Eide -Date: Thu Apr 16 12:16:12 2020 +0200 - - Link local packages in package.json if in e2e-test - -commit 624c280e3ea4f1e04615464b5d4223dcc9c45c0d -Merge: 8df2089a02 e6c444b955 -Author: Patrik Oldsberg -Date: Thu Apr 16 13:38:12 2020 +0200 - - Merge pull request #567 from spotify/rugvip/storybook-deps - - packages/storybook: hoist storybook addons so they can be loaded from other packages - -commit e6c444b95544383f0f44bdf921062a09dac940c3 -Author: Patrik Oldsberg -Date: Thu Apr 16 13:13:55 2020 +0200 - - packages/storybook: hoist storybook addons so they can be loaded from other packages - -commit d9f34e3fffae8b2a6871799b71a45f56df68e3c1 -Author: Patrik Oldsberg -Date: Thu Apr 16 01:34:53 2020 +0200 - - packages/theme: make BackstageTheme a type and update usages - -commit d766d7aac42170760054c138b4793f0f24a3883c -Author: Patrik Oldsberg -Date: Thu Apr 16 01:31:41 2020 +0200 - - packages,plugins: use lightTheme/darkTheme exports from theme package - -commit e4f3495284d72c52319eb6626097ecf2050e7a25 -Author: Patrik Oldsberg -Date: Thu Apr 16 01:21:15 2020 +0200 - - packages/theme: use Overrides type from MUI - -commit 615597ee8708df9e32c16c237c3aa66f9c4abc6e -Author: Patrik Oldsberg -Date: Thu Apr 16 01:19:37 2020 +0200 - - packages/theme: remove color schemes and provide full palette for themes instead - -commit dd4acb71a89c51762b220c7d6ae43dec2689f6be -Author: Patrik Oldsberg -Date: Thu Apr 16 01:13:24 2020 +0200 - - packages/theme: remove invalid and ignored theme options - -commit 9e605009fd4fe86588d70cec22e069bdde66f0ce -Author: Patrik Oldsberg -Date: Thu Apr 16 01:10:38 2020 +0200 - - packages/theme: fix theme palette types - -commit d959179729e717b8d09e567500734ea83cd46ad6 -Author: Patrik Oldsberg -Date: Thu Apr 16 01:00:50 2020 +0200 - - packages/theme: merge themes and differ through color definitions - -commit f5e09895a157f87ae77a04129c35eae85488304a -Author: Patrik Oldsberg -Date: Tue Apr 14 19:11:29 2020 +0200 - - packages/theme: refactor theme definitions - -commit 8df2089a020d98caf1864ba36d469b7d7e231a62 -Merge: 61dbd66fde 4f9789f23a -Author: Patrik Oldsberg -Date: Thu Apr 16 11:44:06 2020 +0200 - - Merge pull request #566 from spotify/rugvip/storybook-dist - - packages/storybook: depend on dist version of local packages and make sure they are built - -commit 61dbd66fde015ed2de9daf0452923272203be683 -Merge: 6f1c443ee0 df28af29d5 -Author: Patrik Oldsberg -Date: Thu Apr 16 11:41:46 2020 +0200 - - Merge pull request #565 from hooloovooo/tabbed-card-story-width - - Set a width on TabbedCard in Storybook using same method as InfoCard - -commit 4f9789f23a024cf8e516f939b86f1a92b0652085 -Author: Patrik Oldsberg -Date: Thu Apr 16 10:35:13 2020 +0200 - - packages/storybook: depend on dist version of local packages and make sure they are built - -commit 66a39273adcef4069da468c25ec1b7026943c07e -Author: Patrik Oldsberg -Date: Thu Apr 16 10:33:55 2020 +0200 - - packages/cli: added --build flag to watch-deps command - -commit df28af29d5edfbd21a5e385ce4f474b2685737ba -Author: Sebastian Qvarfordt -Date: Thu Apr 16 10:16:29 2020 +0200 - - Set a width on TabbedCard in Storybook using same method as InfoCard - -commit 432a2a3c31e508d74576368ca0af9e9ba9292e7e -Author: Marcus Eide -Date: Thu Apr 16 10:15:17 2020 +0200 - - Use :all flags for lint and test to not depend on git since - -commit 6f1c443ee02e2bb47756a21ad76ad9107af54544 -Author: Victor Viale -Date: Thu Apr 16 10:15:16 2020 +0200 - - Convert WarningPanel to TypeScript (#554) (#561) - - Co-authored-by: Victor Viale - -commit ed32b1d161f99f161ed8db738c324551f83239cd -Author: Marcus Eide -Date: Thu Apr 16 09:07:02 2020 +0200 - - Properly change to temp directory - -commit c1cd32ac7b2103978f6dd237fbb981cb633f468f -Merge: 111f75cf3d 7ff138daa9 -Author: Patrik Oldsberg -Date: Thu Apr 16 09:55:53 2020 +0200 - - Merge pull request #524 from leomindez/feature/yarn-clean - - Add yarn clean script - -commit 111f75cf3d75e2d861477623766f72e768c6fbc5 -Author: Patrik Oldsberg -Date: Thu Apr 16 09:02:58 2020 +0200 - - packages/storybook: added note in readme explaining why the package exists (#560) - -commit 866dac825292c68204260f191506fc4477393dd1 -Author: Jose Balanza Martinez <62359443+braulio-balanza@users.noreply.github.com> -Date: Thu Apr 16 01:58:46 2020 -0500 - - Fix error when using yarn lint (#562) - -commit 85752b4795f979503b6c88dee88b52b152512f51 -Author: Marcus Eide -Date: Thu Apr 16 08:53:55 2020 +0200 - - Revert "Add copyright notice to default-app template files" - - This reverts commit fbc2048350c3a199e503ec3316b1fce8663821e3. - -commit 06150f7094f8af67a6283007c1f473b37edb7532 -Author: Marcus Eide -Date: Thu Apr 16 08:53:19 2020 +0200 - - Remove yarn create-app from package.json - -commit 300a891f71f369662bc58e35271fb43e9db07260 -Author: Marcus Eide -Date: Wed Apr 15 14:58:20 2020 +0200 - - Create new app in temp dir - -commit 7ff138daa93a7b24034cba534eaa4ccf1df154fa -Merge: 1820d3e67b cf30e4615d -Author: Leonel Mendez Jimenez -Date: Wed Apr 15 22:13:37 2020 -0500 - - Merge branch 'master' into feature/yarn-clean - -commit 6889e02a5c7313935aa387b4c9939e6ca15e236b -Merge: 3f0e8c7349 cf30e4615d -Author: Jose Balanza Martinez -Date: Wed Apr 15 21:40:13 2020 -0500 - - Merge branch 'master' of https://github.com/spotify/backstage into remove_plugin_wip - -commit cf30e4615d4c6c2ffde5b969684e634cb73549a8 (tag: v0.1.1-alpha.4) -Merge: 4f8193be60 c4457a7614 -Author: Patrik Oldsberg -Date: Wed Apr 15 22:30:00 2020 +0200 - - Merge pull request #559 from spotify/rugvip/release - - Release v0.1.1-alpha.4 - -commit 11f75222055e0629697fd2373e3b1912ff3e78c3 -Author: Stefan Ålund -Date: Wed Apr 15 22:14:23 2020 +0200 - - Fixed link - -commit ce950bed7aa5b6e68093e9d30fde472cf39f637c -Author: Marcus Eide -Date: Tue Apr 14 14:13:58 2020 +0200 - - Add exit() method to Task and use in create-app and create-plugin - -commit fbc2048350c3a199e503ec3316b1fce8663821e3 -Author: Marcus Eide -Date: Tue Apr 14 12:54:13 2020 +0200 - - Add copyright notice to default-app template files - -commit ce53096b5c99f4e843c4d584666cbed61fa19da9 -Author: Marcus Eide -Date: Tue Apr 14 09:20:46 2020 +0200 - - Add create-app yarn command to package.json - -commit ca2ccb314524e36cbd00b98a2b2fbd0e949354b6 -Author: Marcus Eide -Date: Tue Apr 14 09:14:26 2020 +0200 - - Modify cli workflow - -commit ceb716c3b4c7df5b9cfb11845c75d0ea1377e1a7 -Author: Marcus Eide -Date: Tue Apr 14 08:55:07 2020 +0200 - - Add create-app to e2e and move common functionality into seperate modules - -commit 2596c9a67ba3c7c5d0f1d8a0173d33d70a75362a -Merge: e5d6ff1b5c 4f8193be60 -Author: Stefan Ålund -Date: Wed Apr 15 20:33:29 2020 +0200 - - Merge branch 'master' into alund/components - -commit c4457a7614639b2eeaa429107d50b0bd49bd190b -Author: Patrik Oldsberg -Date: Wed Apr 15 20:27:06 2020 +0200 - - v0.1.1-alpha.4 - -commit 4f8193be604e28b1252e48a5be88b958489328ca -Merge: 4c4e4bb787 9cf2de0511 -Author: Patrik Oldsberg -Date: Wed Apr 15 20:21:09 2020 +0200 - - Merge pull request #552 from spotify/rugvip/breakout-test-utils-core - - package/test-utils: move some test utils to separate package so test-utils can depend on core - -commit 4c4e4bb787901375675207f828793b26c94edf1b -Merge: 57d7030ee7 ba83156c08 -Author: Patrik Oldsberg -Date: Wed Apr 15 19:51:08 2020 +0200 - - Merge pull request #558 from spotify/rugvip/app-no-example - - packages/cli: fix app template referencing example-app - -commit ba83156c08f2b0cfca00d1b9870fc9af002c48c0 -Author: Patrik Oldsberg -Date: Wed Apr 15 18:44:19 2020 +0200 - - packages/cli: fix app template referencing example-app - -commit 57d7030ee705a7b4ce4265716367520ac3ef27e4 -Merge: dd1ef4eda0 6bed35cb56 -Author: Patrik Oldsberg -Date: Wed Apr 15 18:25:15 2020 +0200 - - Merge pull request #553 from desktophero/dev-start-up-steps - - update getting started doco; xref 551 - -commit dd1ef4eda03d0203338bd632c728d2033434ca67 -Merge: ea61497c66 045ce9ab6b -Author: Patrik Oldsberg -Date: Wed Apr 15 18:14:55 2020 +0200 - - Merge pull request #548 from OrkoHunter/OrkoHunter/#536-show-story-source-code - - Show code in storybook - -commit ea61497c660ecffe27a738ffe346a3dfbcc7fc94 -Author: Stefan Ålund -Date: Wed Apr 15 17:15:55 2020 +0200 - - Add Status and SortableTable to Storybook (#540) - - * Add Status component to Storybook - - * Add SortableTable - -commit 1820d3e67bf8146c9c15d06ce9680c1c79f9c350 -Author: Leo Mendez -Date: Wed Apr 15 10:15:22 2020 -0500 - - Change backstage cli clean to lerna run clean command - -commit 29239b187723658872d7d45fa4477911f59d4242 -Author: Sebastian Qvarfordt -Date: Wed Apr 15 17:08:03 2020 +0200 - - Added global decorator for storybook wrapping stories with the MUI theme (#556) - -commit d5625f87bd0f432186bab7b148b221be18c93399 -Merge: ebe6fd5659 1685fa1e9f -Author: Patrik Oldsberg -Date: Wed Apr 15 17:00:37 2020 +0200 - - Merge pull request #555 from spotify/rugvip/app-template-pkg - - packages/cli: update app template to reflect current package.jsons - -commit 1685fa1e9f54bd07384756f190a784b274688055 -Author: Patrik Oldsberg -Date: Wed Apr 15 15:53:52 2020 +0200 - - packages/cli: update app template to reflect current package.jsons - -commit 6bed35cb5693c10d2996863a212113c562b65fe4 -Author: Jason Walker -Date: Wed Apr 15 07:28:57 2020 -0500 - - fix link to package.json in MD file - -commit ebe6fd5659e209d4dbfedfc2d9f1b992e2ba6d04 -Author: Stefan Ålund -Date: Wed Apr 15 11:51:46 2020 +0200 - - Dark mode has different sidebar (#537) - -commit 2c251e94e0c0484084ed3c01bbf7b349f701fd51 -Author: Sebastian Qvarfordt -Date: Wed Apr 15 10:31:40 2020 +0200 - - TabbedCard component (#464) - - * Initial typing for infocard component - - * Changes as suggested in PR and rewrite of BottomLink to TypeScript - - * Removed classes property from card because material-ui did not like classes.header being set - - * Prettier - - * Early TabbedCard component. WIP - - * Refactored TabbedCard to be easier to use - - * Fixed some typing issues and tests - - * Fixed lint issues and changed lint rule. Do we want to keep it? - - * Added controlled mode when value and onChange is set on TabbedCard - - * Fixed typo - - * Added a test and fixed the design to look like the mockups more - - * Removed export of BottomLink from TabbedCard - - * Added test for controlled state - -commit fadffc6589295547658932338d858810ff6d9f58 -Author: Stefan Ålund -Date: Wed Apr 15 10:02:14 2020 +0200 - - Port over WarningPanel component (#547) - - * Port over WarningPanel component - - * Create WarningPanel.test.js - - * More stories and tests - - * Simplified example message - -commit e5d6ff1b5ce67799a001a1caf6d46759b16caf57 -Author: Stefan Ålund -Date: Wed Apr 15 08:03:59 2020 +0200 - - Use errorApi - -commit c875b94868c30a10a1d8de379eba0ebd923992be -Author: Jason Walker -Date: Tue Apr 14 15:26:13 2020 -0500 - - update getting started doco; xref 551 - -commit 38e35dad657a8c6676f1f50dbd5a1f8e9be66ed5 -Merge: 507504bb45 c8fb4c153e -Author: Patrik Oldsberg -Date: Tue Apr 14 21:23:13 2020 +0200 - - Merge pull request #544 from spotify/rugvip/private-colors - - backstage/theme: make colors private, access through theme instead - -commit 9cf2de05117444998b48391a07ce140901a25339 -Author: Patrik Oldsberg -Date: Tue Apr 14 21:17:46 2020 +0200 - - packages/test-utils: added simple test for app wrapper - -commit eed736f2e8f31caf86deca96b1c3320cab551076 -Author: Patrik Oldsberg -Date: Tue Apr 14 19:50:05 2020 +0200 - - package/test-utils: move some test utils to separate package so test-utils can depend on core - -commit c8fb4c153e1261e50730ada5e485eba9fe967d4e -Author: Patrik Oldsberg -Date: Mon Apr 13 18:48:46 2020 +0200 - - backstage/theme: make colors private, access through theme instead - -commit 045ce9ab6b1f149af8c1fe1c6411f3812486c47b -Author: Himanshu Mishra -Date: Tue Apr 14 09:08:48 2020 +0900 - - Add storybook addon storysource which shows code of components in storybook - -commit 507504bb4582fe47277755bf048e3ac2d4be3c95 -Author: Himanshu Mishra -Date: Tue Apr 14 03:43:28 2020 +0900 - - Remove old storybook configuration (#545) - - In https://github.com/spotify/backstage/pull/371, storybook config was moved from packages/core to packages/story to avoid conflicts. - packages/core/.storybook was missed and not removed at the time. Now, we don't need this anymore. - -commit ce067bf2bc9262a4e72ad2f2981dbef331b729cf -Author: Stefan Ålund -Date: Mon Apr 13 20:38:01 2020 +0200 - - Disable failing test - -commit 223a752bc0a9fce4296e0a48f286aaa0b9da2eb8 -Author: Stefan Ålund -Date: Mon Apr 13 17:41:13 2020 +0200 - - Add HorizontalProgress - -commit 71a30200dc4fa25bd3232e5c691fe7d85e52e94b -Author: Stefan Ålund -Date: Mon Apr 13 17:13:18 2020 +0200 - - Add extra story - -commit 6a1ca051aa2b54b2e58af4a9b5e1eb7907bef76a -Author: Stefan Ålund -Date: Mon Apr 13 17:08:23 2020 +0200 - - Update index.ts - -commit 8d82d2e530e0581f4aa2a9bcf9b580cd94c08a79 -Author: Stefan Ålund -Date: Mon Apr 13 17:05:31 2020 +0200 - - Add CopyTextButton - -commit 5938544c46f3e7bcb371eabb2b0e7275a1baecb0 -Author: Stefan Ålund -Date: Mon Apr 13 14:52:24 2020 +0200 - - Port over StructuredMetadataTable - -commit 6ca4626b783c2f6616e87ae895aa62d2189c5d5d -Author: Muhammad Rivki -Date: Mon Apr 13 14:43:52 2020 +0700 - - fix(storybook): add aliases for @backstage/theme (#539) - -commit c94a42c8120aa01ea35a77a73be39685ba6b94f1 -Author: Leo Mendez -Date: Sun Apr 12 14:57:28 2020 -0500 - - Add clean script to plugins/welcome - -commit 97604a3832c1cd14938721a966843c043a40a699 -Author: Leo Mendez -Date: Sun Apr 12 14:54:11 2020 -0500 - - Add clean script to plugins/lighthouse - -commit b03d937e7dc771661f3b08e8fc647c7ca932b8be -Author: Leo Mendez -Date: Sun Apr 12 14:53:53 2020 -0500 - - Add clean script - -commit c171718840fff36e42b1f5560a4a89e1c442868a -Author: Leo Mendez -Date: Sun Apr 12 14:32:03 2020 -0500 - - Delete rimraf library - -commit 0b7b6c4bedc864a2080ce0959b230e89bba64bc9 -Author: Leo Mendez -Date: Sun Apr 12 14:28:57 2020 -0500 - - Add clean script to root package - -commit 8015b55a0fde1c64881d500fffb7141498b0e5f8 -Author: Leo Mendez -Date: Sun Apr 12 14:24:40 2020 -0500 - - Add clean script packages/theme - -commit 2467e4088358dea647d93edcec9560f1f64b0228 -Author: Leo Mendez -Date: Sun Apr 12 14:24:16 2020 -0500 - - Add clean script packages/test-utils - -commit 4d0c5b084d4e08a82ed38cb32c280daf980d79fa -Author: Leo Mendez -Date: Sun Apr 12 14:23:34 2020 -0500 - - Add clean script packages/core - -commit f1c9e804356814972f6372966bb19ed25dd6cb6f -Author: Leo Mendez -Date: Sun Apr 12 14:22:53 2020 -0500 - - Add clean script packages/app - -commit 0bd526a4a35c11fb1d0879498a7172c28d944234 -Author: Leo Mendez -Date: Sun Apr 12 14:20:47 2020 -0500 - - Add clean script to template plugin - -commit f5b8433aa2d789e62d7ecb2a0670a1beb17bbdde -Author: Leo Mendez -Date: Sun Apr 12 14:19:47 2020 -0500 - - Add clean script to template app - -commit 2c4328f5e15612c40ceaa7bb75de42235bb6de1a -Author: Leo Mendez -Date: Sun Apr 12 14:09:44 2020 -0500 - - Add package path - -commit a6167ce02a59520734b83e3fc0bad4297938b9c0 -Merge: 75236eea72 83fb640207 -Author: Patrik Oldsberg -Date: Sun Apr 12 13:21:56 2020 +0200 - - Merge pull request #509 from spotify/rugvip/logcollect - - packages/test-utils: port logCollector to TypeScript + add tests - -commit 75236eea72fefc528246cc86eeadbdca3b94fdfa -Merge: 4e26d21a85 db92c693bf -Author: Fredrik Adelöw -Date: Sun Apr 12 08:54:53 2020 +0200 - - Merge pull request #534 from OrkoHunter/OrkoHunter/#531-fix-error-on-safari - - Fix build error on Safari | MediaQueryList.addEventListener not supported - -commit db92c693bfd4861d9088960941efaa38910a0e0a -Author: Himanshu Mishra -Date: Sun Apr 12 15:38:31 2020 +0900 - - Fix broken tests due to MediaQueryList.addEventListener - -commit 453439985490ca026acdcc8fcd7d87382e6a3014 -Author: Himanshu Mishra -Date: Sun Apr 12 15:27:39 2020 +0900 - - Fix build error on Safari - - MediaQueryList.addEventListener is not support on Safari and hence the build fails. - Ref: https://developer.mozilla.org/en-US/docs/Web/API/MediaQueryList - Closes https://github.com/spotify/backstage/issues/531 - -commit 4e26d21a8543fea1e86c7d4944515baa0c0ab8eb -Author: Patrik Oldsberg -Date: Sun Apr 12 08:26:47 2020 +0200 - - packages/test-utils: split app wrappers and testing library utils out from index (#510) - -commit 2b29780dafcd89ddbb35c0133233c7dfdabe02bc -Merge: 2da0697582 049f3803d5 -Author: Fredrik Adelöw -Date: Sat Apr 11 21:40:21 2020 +0200 - - Merge pull request #533 from OrkoHunter/doc-typo-update-in-faq - - DOC: Some updates to documentation - -commit 049f3803d5810ea0d59d48f5f6e2ac185bd896d7 -Author: Himanshu Mishra -Date: Sun Apr 12 03:09:07 2020 +0900 - - DOC: createPlugin and router reference docs are now here - -commit d8db08a522abb7b51fd2c4e01fdb6575dc7d4dbf -Author: Himanshu Mishra -Date: Sun Apr 12 02:36:54 2020 +0900 - - DOC: Update couple typos in docs/FAQ.md - - * open soure -> open source - * forbenchmarking -> for benchmarking - -commit 2da0697582c04638798b3e4a63d249914238222f -Merge: 3e1e356320 72c98655f3 -Author: Ben Lambert -Date: Fri Apr 10 17:19:02 2020 +0200 - - Merge pull request #526 from spotify/feat/issues/523 - - Remove the default export from plugins - -commit 72c98655f3a4f3e9df30ca7b0770337210bfb9d6 -Author: blam -Date: Fri Apr 10 01:38:35 2020 +0200 - - chore; fixing code review commenta and fix the import path - -commit 4c6f1ab100e767a218bbb014c8a485441c480b24 -Author: Leo Mendez -Date: Thu Apr 9 15:28:20 2020 -0500 - - Delete default formal arguments - -commit 81c18f22f76a73832124e937947816e8edec97db -Author: Leo Mendez -Date: Thu Apr 9 15:23:33 2020 -0500 - - Add clean script to package file - -commit ff5d455c23e99a890ead1563e2c05846cbd0c0a3 -Author: Leo Mendez -Date: Thu Apr 9 15:23:01 2020 -0500 - - Add clean command to index - -commit 9770623d6bdeef6e4bf8509e2006d8a21984032e -Author: Leo Mendez -Date: Thu Apr 9 15:22:27 2020 -0500 - - Create clean command - -commit 5a2c94640d7d2f41a6fd2f5eed8fbe0f12d4b8ff -Author: Leo Mendez -Date: Wed Apr 8 14:51:12 2020 -0500 - - Add yarn lock file - -commit dc6dcbefaca7fd202038ea1d1720f6b38f808d18 -Author: Leo Mendez -Date: Wed Apr 8 14:30:28 2020 -0500 - - Add clean script - -commit 3e1e356320c0792cc28f7745aa56ab85c1712f23 -Merge: fc00bfec5a e55cdf70fd -Author: Patrik Oldsberg -Date: Thu Apr 9 15:51:27 2020 +0200 - - Merge pull request #528 from spotify/rugvip/lintfixes - - package/cli: fix lint issues in scaffolded plugins - -commit fc00bfec5aed36e42e51f6e7d3d3cbb278f13180 -Merge: 9b56cc20c6 a42d95f6dd -Author: Patrik Oldsberg -Date: Thu Apr 9 15:51:20 2020 +0200 - - Merge pull request #527 from spotify/rugvip/notests - - packages/cli: exclude tests from build - -commit e55cdf70fd06297cdc76c74128c40d812bdbbadb -Author: Patrik Oldsberg -Date: Thu Apr 9 14:21:47 2020 +0200 - - packages/cli: add missing theme dep to app template - -commit e6b0df8c1f94a846b2ca5fee9cc1560cf6aeda29 -Author: Patrik Oldsberg -Date: Thu Apr 9 14:17:06 2020 +0200 - - packages/cli: add root eslintrc for app template - -commit 1788fe1fffa32969f1471a863c41018d1604403a -Author: Patrik Oldsberg -Date: Thu Apr 9 14:15:47 2020 +0200 - - packages/cli: remove notice plugin from eslint config - -commit a42d95f6dd47f9f3155ca25f11e3edab75e5cc7a -Author: Patrik Oldsberg -Date: Thu Apr 9 13:36:45 2020 +0200 - - packages/cli: exclude tests from build - -commit 9b56cc20c6a37b889ba4d57d43e97e152c320dab -Author: Kat Zhou <61153904+katz95@users.noreply.github.com> -Date: Thu Apr 9 09:15:09 2020 +0200 - - adding header (#519) - -commit 3f0e8c73494908ceef1a35801e1d11ef522bb797 -Merge: 429b7f08cb 6899f96db5 -Author: Jose Balanza Martinez -Date: Wed Apr 8 23:44:11 2020 -0500 - - Merge branch 'remove_plugin_wip' of https://github.com/braulio-balanza/backstage into remove_plugin_wip - -commit 429b7f08cb604aad22bad8296874ec6d6c8f33d1 -Author: Jose Balanza Martinez -Date: Wed Apr 8 23:43:31 2020 -0500 - - Fixed some lint issues - -commit 6899f96db5df8b0c186aafa1f0fa62712c2de49e -Author: Jose Balanza Martinez -Date: Wed Apr 8 23:41:16 2020 -0500 - - Ficed some lint issues - -commit a04533e08e88f4a15a46f9f58777d0c3f922f822 -Merge: 4dcb689f2e 169ecbe2f0 -Author: Jose Balanza Martinez -Date: Wed Apr 8 23:34:53 2020 -0500 - - Merge branch 'remove_plugin_wip' of https://github.com/braulio-balanza/backstage into remove_plugin_wip - -commit 4dcb689f2e078e0d620a843ecd2ba58710d5c70f -Merge: 08a0f6fe8a 84340367c4 -Author: Jose Balanza Martinez -Date: Wed Apr 8 23:33:11 2020 -0500 - - Merge branch 'master' of https://github.com/spotify/backstage into remove_plugin_wip - -commit 08a0f6fe8a1ce1c1f8b80d9079824ce0563caf96 -Author: Jose Balanza Martinez -Date: Wed Apr 8 23:32:41 2020 -0500 - - Added unit tests for remove-plugin - -commit 169ecbe2f0cb55828bfd709aa5a430b2fd872990 -Author: Jose Balanza Martinez -Date: Wed Apr 8 23:31:13 2020 -0500 - - Added unit tests for remove-plugin - -commit 083f104946483f982387457038029d4ff4fe15b0 -Author: Jose Balanza Martinez -Date: Wed Apr 8 23:30:26 2020 -0500 - - removePlugin.ts now uses Task helper - -commit 6104ff9988d6094f70cc5fa9e8896c9d506ac49a -Author: blam -Date: Thu Apr 9 04:56:08 2020 +0200 - - chore: missed one small part - -commit e805eafa420ba12b9f033446c0bcfb9985381d0c -Author: blam -Date: Thu Apr 9 04:37:15 2020 +0200 - - feat: update the templates to default to named exports for new plugins - -commit 0d27c0dfda8759395dde38f81437b6e3c7d188e7 -Author: blam -Date: Thu Apr 9 04:37:06 2020 +0200 - - chore: need to fix the import on the tests - -commit 0feee2b1a96302c35e5e64f07002d266ff5cd786 -Author: blam -Date: Thu Apr 9 04:36:55 2020 +0200 - - feat: fixes #523. Remove the default export from plugins - -commit 84340367c497343ffd774a8ecefdb4ae474e4428 -Author: Patrik Oldsberg -Date: Wed Apr 8 22:28:02 2020 +0200 - - packages/cli: added some development docs to the readme (#521) - -commit 27d95244caffe356398634f4551287b04a52cea1 -Merge: 05ddedb0ad f6d3c5ca4f -Author: Paul Marbach -Date: Wed Apr 8 14:56:37 2020 -0400 - - Merge pull request #461 from spotify/lighthouse-plugin - - Add plugin for lighthouse-audit-service - -commit 7ce324581c3c2dc5f0e31e4d4530d3c4b1a9cec1 -Merge: e67bfd1349 05ddedb0ad -Author: Jose Balanza Martinez -Date: Wed Apr 8 13:45:12 2020 -0500 - - X - Merge branch 'master' of https://github.com/spotify/backstage into remove_plugin_wip - -commit e67bfd134936d62b9fad53df342d1d0ccc9d5145 -Author: Jose Balanza Martinez -Date: Wed Apr 8 13:13:26 2020 -0500 - - Merge branch 'master' of https://github.com/spotify/backstage into remove_plugin_wip - -commit f6d3c5ca4f37b142842a6e6702a17bea16521122 -Author: Paul Marbach -Date: Wed Apr 8 12:03:25 2020 -0400 - - test: update lint config to extend cli config explicitly for plugins - -commit 1d6765e04408e24e52349eba18b16884f762e6ca -Author: Paul Marbach -Date: Wed Apr 8 10:18:46 2020 -0400 - - thank you for the comments, @freben - -commit 06228b71e95418f13bf1616db68e21196bf28498 -Author: Paul Marbach -Date: Mon Apr 6 12:07:25 2020 -0400 - - feat: implement Lighthouse plugin using lighthouse-audit-service - -commit 05ddedb0adbcde5f11f18fd5feaead214ca95f77 (tag: v0.1.1-alpha.3) -Merge: 84de6789d0 56ab5e3296 -Author: Patrik Oldsberg -Date: Wed Apr 8 15:38:26 2020 +0200 - - Merge pull request #520 from spotify/rugvip/release - - Release v0.1.1-alpha.3 - -commit 56ab5e32962eaed8de5e92b75184bd6935ad7150 -Author: Patrik Oldsberg -Date: Wed Apr 8 15:16:27 2020 +0200 - - v0.1.1-alpha.3 - -commit 84de6789d01510db86cd98193b9c4aff3133bcfc -Merge: 9504dd7cfd 2519ad4dd2 -Author: Kat Zhou <61153904+katz95@users.noreply.github.com> -Date: Wed Apr 8 15:11:10 2020 +0200 - - Merge pull request #513 from spotify/katz95-patch-1 - - Update design.md - -commit 9504dd7cfd6e13baf520aa3afbc0f4931be90a19 -Merge: 891f49ae09 b7545fa562 -Author: Kat Zhou <61153904+katz95@users.noreply.github.com> -Date: Wed Apr 8 15:10:59 2020 +0200 - - Merge pull request #517 from spotify/katz95-patch-2 - - header for design.md - -commit 891f49ae09c63d47dcaf2dcc4f2eac7f99d9a1f0 -Merge: aa289e43e0 b0e7068578 -Author: Patrik Oldsberg -Date: Wed Apr 8 14:52:59 2020 +0200 - - Merge pull request #516 from spotify/rugvip/relative - - packages,plugins: make src-relative imports work everywhere - -commit aa289e43e02e2e908d9c5d30f00444b02b16492a -Merge: 28dacb05fe f5d0be0154 -Author: Patrik Oldsberg -Date: Wed Apr 8 13:12:08 2020 +0200 - - Merge pull request #518 from spotify/change-to-app - - Plugin -> app - -commit f5d0be01540ae1f0a28d7ed5bc0ff89673df2178 -Author: Raghunandan -Date: Wed Apr 8 11:59:26 2020 +0200 - - PLugin -> app - -commit b7545fa56210c2e0e7a2296134af8739bfa24d32 -Author: Kat Zhou <61153904+katz95@users.noreply.github.com> -Date: Wed Apr 8 09:37:47 2020 +0200 - - header for design.md - -commit 6088dd72a217deba05f9dd010123152b5fac5935 -Merge: 69298e221b 28dacb05fe -Author: Jose Balanza Martinez -Date: Tue Apr 7 20:05:57 2020 -0500 - - Index.ts reflects .action(actionhandler()) change - -commit b0e7068578058b56800ae48654394d9c61539a15 -Author: Patrik Oldsberg -Date: Tue Apr 7 23:49:05 2020 +0200 - - packages/core: switch to more src-relative imports - -commit b7814caa5d16d384e150c1ccb50ce7b5a8210a66 -Author: Patrik Oldsberg -Date: Tue Apr 7 23:49:24 2020 +0200 - - plugins: use src-relative imports - -commit 7ed9444de83d980b5e3567360e84c2e86075d556 -Author: Patrik Oldsberg -Date: Tue Apr 7 23:43:41 2020 +0200 - - packages,plugins: make src-relative imports work everywhere - -commit 7463309e58db12cd648d7aafefca2853e45208bd -Author: Patrik Oldsberg -Date: Wed Apr 8 00:41:11 2020 +0200 - - packages/storybook: make src-relative imports work - -commit 2519ad4dd25e1a335e2ef1ff3703c309a17173d8 -Author: Kat Zhou <61153904+katz95@users.noreply.github.com> -Date: Tue Apr 7 23:01:27 2020 +0200 - - Update design.md - -commit 28dacb05feab887064cc11c4340f62c7305a5a5d -Merge: 7a5a657820 d56ee5a157 -Author: Patrik Oldsberg -Date: Tue Apr 7 21:00:56 2020 +0200 - - Merge pull request #501 from spotify/stefanalund-patch-1 - - Link to Design from README - -commit 7a5a6578205a27670746f105539cf3093fb129e6 -Merge: bbc3d94f54 89494ad4cd -Author: Patrik Oldsberg -Date: Tue Apr 7 19:02:54 2020 +0200 - - Merge pull request #511 from spotify/rugvip/cba - - fixes for create-app - -commit bbc3d94f54700bf88614928ebf906d0389d728a2 -Merge: 22d7fe5ac5 3bc25560f7 -Author: Patrik Oldsberg -Date: Tue Apr 7 19:02:32 2020 +0200 - - Merge pull request #512 from spotify/rugvip/dirty - - packages/cli: treat untracked input dirs as dirty - -commit 3bc25560f76d55a72d7afaaea85297ef14e24f0b -Author: Patrik Oldsberg -Date: Tue Apr 7 18:39:08 2020 +0200 - - packages/cli: treat untracked input dirs as dirty - -commit 83fb6402078409d48b1a5bbddf2fbac3bcf31bac -Author: Patrik Oldsberg -Date: Tue Apr 7 17:22:06 2020 +0200 - - packages/test-utils: add tests for logCollector - -commit 742e94a7542a55092394ee6dd1d990f0a667d7d1 -Author: Patrik Oldsberg -Date: Tue Apr 7 17:15:44 2020 +0200 - - packages/test-utils: port logCollector to TS - -commit 22d7fe5ac57088bb3e86b061717316d37e62ae93 -Merge: cc4d4a403e 29094608c2 -Author: Patrik Oldsberg -Date: Tue Apr 7 18:08:43 2020 +0200 - - Merge pull request #505 from spotify/rugvip/test-utils - - packages/testUtils: renamed dir to test-utils - -commit 89494ad4cd62f8b5679efc72a970ce184d4648cd -Author: Patrik Oldsberg -Date: Tue Apr 7 18:06:49 2020 +0200 - - packages/cli: updated deps of scaffolded app plugin - -commit 43d3388238b7d05c8a3e901aae4fc08a124e3456 -Author: Patrik Oldsberg -Date: Tue Apr 7 18:06:21 2020 +0200 - - packages/cli: fix scaffolded app main and types fields - -commit 1275e438771e1b45727821345768854965808f74 -Author: Patrik Oldsberg -Date: Tue Apr 7 18:05:45 2020 +0200 - - packages/cli: fix WelcomePage using old props in scaffolded app - -commit 53fed5a17c7e256d83753945ec7a03674cbb812f -Author: Patrik Oldsberg -Date: Tue Apr 7 18:05:21 2020 +0200 - - backstage/cli: add common tsconfig - -commit 29094608c2453d1e463d43e7be3ee070ee2c0248 -Author: Patrik Oldsberg -Date: Tue Apr 7 16:31:08 2020 +0200 - - packages/testUtils: renamed dir to test-utils - -commit cc4d4a403e87e8f5ccc90be29f2d7b81b47574eb -Merge: e58f27786d 27fd679b74 -Author: Patrik Oldsberg -Date: Tue Apr 7 17:22:37 2020 +0200 - - Merge pull request #504 from spotify/rugvip/nowrap - - packages: no need to wrap plugin builds with build-cache - -commit e58f27786d779f73aaf155eaef254d6545155afe -Merge: f7a09ceb96 022e71575b -Author: Paul Marbach -Date: Tue Apr 7 11:11:06 2020 -0400 - - Merge pull request #508 from spotify/circ-dep - - fix: circular dependency came back (test-utils => core => test-utils) - -commit f7a09ceb966c41f4e7f6707ac648b350d4f43979 -Author: Kat Zhou <61153904+katz95@users.noreply.github.com> -Date: Tue Apr 7 16:58:07 2020 +0200 - - Update design.md (#507) - -commit 022e71575bc89853ea082aacd57d7fa5a631eb5d -Author: Paul Marbach -Date: Tue Apr 7 10:56:19 2020 -0400 - - fix: circular dependency came back - -commit 27fd679b74b7cf39317f0ac5fbc2a951ee1e3e77 -Author: Patrik Oldsberg -Date: Tue Apr 7 16:32:24 2020 +0200 - - packages: no need to wrap plugin builds with build-cache - -commit a204fa25c6bc08f06f7a3526e676ffb43abe6a7e -Merge: 2b5db56e06 927f54129a -Author: Patrik Oldsberg -Date: Tue Apr 7 16:29:11 2020 +0200 - - Merge pull request #487 from spotify/test-utils-package - - extract test-utils as its own package for use with plugins, etc. - -commit 2b5db56e06ec8c12ff71df4d3aea509902e5eae9 -Author: Kat Zhou <61153904+katz95@users.noreply.github.com> -Date: Tue Apr 7 16:24:39 2020 +0200 - - Update design.md (#502) - -commit 927f54129ac42f021a465cc64398e89f14ea1b41 -Author: Paul Marbach -Date: Mon Apr 6 14:14:28 2020 -0400 - - extract test-utils as its own package for use with plugins, etc. - -commit 4330c7cf07031c34f64429f6ea7cefbc553e9194 -Author: Kat Zhou <61153904+katz95@users.noreply.github.com> -Date: Tue Apr 7 15:59:43 2020 +0200 - - Update design.md (#499) - -commit 4921a161ed4b17f02b474fe777e52a32ba8e44fb -Author: Kat Zhou <61153904+katz95@users.noreply.github.com> -Date: Tue Apr 7 15:59:19 2020 +0200 - - Update README.md (#500) - -commit d56ee5a157eea9c50e22e120bf287f8159647a6e -Author: Stefan Ålund -Date: Tue Apr 7 15:57:35 2020 +0200 - - Link to Design from README - -commit b75d2dea176064da251a3d5b39815f6018186cd0 -Merge: e2293a3db7 6c32c51456 -Author: Kat Zhou <61153904+katz95@users.noreply.github.com> -Date: Tue Apr 7 15:51:08 2020 +0200 - - Merge pull request #497 from spotify/katz95-patch-1 - - Create design.md - -commit e2293a3db75377731e2b1541060af81ebf54ba2c -Author: Kat Zhou <61153904+katz95@users.noreply.github.com> -Date: Tue Apr 7 15:44:08 2020 +0200 - - DLS image (#498) - -commit 6c32c514561b6a593374e0468ee41e28a9a1b792 -Author: Kat Zhou <61153904+katz95@users.noreply.github.com> -Date: Tue Apr 7 15:04:41 2020 +0200 - - Create design.md - -commit bf806733cc89e58b30034ae137d514cda106ddf8 (tag: v0.1.1-alpha.2) -Merge: 814f9fa365 3b9b16c952 -Author: Patrik Oldsberg -Date: Tue Apr 7 13:37:06 2020 +0200 - - Merge pull request #496 from spotify/rugvip/release - - Release v0.1.1-alpha.2 - -commit 3b9b16c9523a34529cebd2dd7b9cba54e221c641 -Author: Patrik Oldsberg -Date: Tue Apr 7 12:26:08 2020 +0200 - - v0.1.1-alpha.2 - -commit 814f9fa3653f94eb2e82ce14c815a4e00f4d83eb -Merge: bbcd7da0fa 884a36179e -Author: Patrik Oldsberg -Date: Tue Apr 7 13:24:28 2020 +0200 - - Merge pull request #492 from spotify/rugvip/nocls - - packages/cli: avoid clearing screen in app-serve - -commit bbcd7da0fa96b952721b3641521699cff0563df1 -Merge: 1b49cd1f50 1fdba128c6 -Author: Patrik Oldsberg -Date: Tue Apr 7 13:23:50 2020 +0200 - - Merge pull request #490 from spotify/rugvip/with-cache - - packages/cli: make plugin:build have built-in caching - -commit 1b49cd1f501d22fe056bd06ed47638d80b548004 -Merge: ce66fda73d fe3254e165 -Author: Patrik Oldsberg -Date: Tue Apr 7 12:08:01 2020 +0200 - - Merge pull request #491 from spotify/rugvip/with-build - - packages/cli: add build option to watchDeps and use for app serve - -commit ce66fda73da345c1928b88504f48b88f0f7974cc -Merge: 007c7275d0 af882489e2 -Author: Patrik Oldsberg -Date: Tue Apr 7 12:07:35 2020 +0200 - - Merge pull request #486 from spotify/rugvip/cache-version - - packages/cli: add cli version to build-cache key - -commit 007c7275d060771f627cbf294b309e906b41cd0a -Merge: 3e20a1e1da 5f79ec4112 -Author: Patrik Oldsberg -Date: Tue Apr 7 11:53:14 2020 +0200 - - Merge pull request #485 from spotify/rugvip/cli-speed - - packages/cli: lazy-load commands to speed up cli boot time - -commit 3e20a1e1da9b3c12c846f6c60a8b24b0fde0d4b2 -Author: Patrik Oldsberg -Date: Tue Apr 7 11:20:15 2020 +0200 - - packages/cli/bin: add copyright notice (#494) - -commit ad977c10dd7e392593c97390ccbda0b57decce31 -Author: Patrik Oldsberg -Date: Tue Apr 7 11:10:31 2020 +0200 - - scripts/cli-e2e-test: fixed some flakiness (#493) - -commit 742ad4cb45f2b2f645cae987a4b188b181817224 -Merge: e4a2309f77 d04453ecad -Author: Patrik Oldsberg -Date: Tue Apr 7 11:05:08 2020 +0200 - - Merge pull request #484 from spotify/rugvip/relatives - - packages/cli: make src-relative imports work - -commit 1fdba128c60d3bc9acb8228c169d6fbc6da35de3 -Author: Patrik Oldsberg -Date: Tue Apr 7 10:47:46 2020 +0200 - - packages,plugins: separate build:watch is no longer needed - -commit 884a36179eb193c6b79be39b80433359b9ae2fac -Author: Patrik Oldsberg -Date: Tue Apr 7 01:05:54 2020 +0200 - - packages/cli: avoid clearing screen in app-serve - -commit fe3254e16578ec99d1bfb7c5f3a9dd1c0a6234a1 -Author: Patrik Oldsberg -Date: Tue Apr 7 00:40:41 2020 +0200 - - packages/cli: add build option to watchDeps and use for app serve - -commit f5ddb991053fdeebb30a45712f01dd0e581ef330 -Author: Patrik Oldsberg -Date: Tue Apr 7 10:06:00 2020 +0200 - - packages/cli: remove output dir before building with cache - -commit 08a5023ad445e66b22bc6f83577e9ebe60cbac3e -Author: Patrik Oldsberg -Date: Tue Apr 7 00:01:56 2020 +0200 - - packages/cli: make plugin:build have built-in caching - -commit 98dea870e6d148caa1fb5b1ffc3f3466b4aec791 -Author: Patrik Oldsberg -Date: Tue Apr 7 00:00:14 2020 +0200 - - packages/cli: refactor build-cache to have a reusable withCache function - -commit af882489e2d098377f9fe2dc41f97a41d8f4e246 -Author: Patrik Oldsberg -Date: Mon Apr 6 17:04:11 2020 +0200 - - packages/cli: add cli version to build-cache key - -commit e4a2309f77980be763eab61e1610be3fbad4b28d -Merge: bc4f6ea3ad 1ba27fb541 -Author: Patrik Oldsberg -Date: Mon Apr 6 23:35:19 2020 +0200 - - Merge pull request #481 from spotify/rugvip/dockerfile - - dockerfile: add comment with some instructions on how to run - -commit bc94014e03251d85c241649b5e65637d492f391b -Author: Patrik Oldsberg -Date: Mon Apr 6 16:57:53 2020 +0200 - - packages/cli: added version helper - -commit 5f79ec4112daf5466a44390e990fa7e37a03359d -Author: Patrik Oldsberg -Date: Mon Apr 6 16:48:10 2020 +0200 - - packages/cli: lazy-load commands to speed up cli boot time - -commit d04453ecad66d470b2d297b69384d8b5fc5fcb94 -Author: Patrik Oldsberg -Date: Mon Apr 6 15:40:21 2020 +0200 - - packages/cli: use src-relative imports - -commit 28b576967cd54380a70f045b4eda06fc80d45b71 -Author: Patrik Oldsberg -Date: Mon Apr 6 15:36:38 2020 +0200 - - packages/cli: make src-relative imports work - -commit bc4f6ea3ad05df49e4278b0b0da41207bb533eca -Merge: 0d93dde6ba 6bb0e05998 -Author: Patrik Oldsberg -Date: Mon Apr 6 15:58:59 2020 +0200 - - Merge pull request #478 from spotify/rugvip/core-build - - packages/cli: update plugin:build make deps external and work with .js + use to build core - -commit 0d93dde6bac075a25b17b24074c209f8d2ebd9d3 -Author: Stefan Ålund -Date: Mon Apr 6 15:07:36 2020 +0200 - - Storybook for ProgressCard (#477) - - * Storybook for ProgressCard - - * Update ProgressCard.stories.tsx - - * Fix import - -commit f8ac148f97205fb5e8d9be3328da12391e3ff0c4 -Author: Mateus Marquezini -Date: Mon Apr 6 09:05:14 2020 -0300 - - Document how to contribute to Storybook (#482) - - * #448 added new section to contribute to storybook - - * #448 added linked file - - * #448 improvements in the contributing to storybook section - - * #448 improvements in the contributing to storybook section - - * #448 improvements in the contributing to storybook section - - * #448 improvements in the contributing to storybook section - - * #448 improvements in the contributing to storybook section - -commit 6bb0e0599899805c42a40d2ce9771b3a59c1c0b2 -Author: Patrik Oldsberg -Date: Sun Apr 5 15:29:36 2020 +0200 - - packages/core: use plugin:build to build - -commit 4e93e61e7ecdc7101656dac777624b30d78db6c6 -Author: Patrik Oldsberg -Date: Sun Apr 5 15:29:13 2020 +0200 - - packages/cli/commands/plugin: include js in typescript compilation + exclude testUtils - -commit 41dff573c60a7c12f736273159160f6e458d5853 -Author: Patrik Oldsberg -Date: Sun Apr 5 15:23:47 2020 +0200 - - packages/cli/commands/plugin: make package dependencies external too - -commit 38a4b96bd91d5e885ad7eb91b2a075c020e0d3a0 -Author: Patrik Oldsberg -Date: Sun Apr 5 15:22:00 2020 +0200 - - packages/core/icons: fix circular dependency - -commit f78a3bd9a1bc28903191093ac61945622a987195 -Author: Patrik Oldsberg -Date: Sun Apr 5 15:21:12 2020 +0200 - - packages/cli: move typescript build config to tsconfig - -commit 1ba27fb5410d1cbcc7b0f4b3c4e65664e66d2d22 -Author: Patrik Oldsberg -Date: Mon Apr 6 12:19:48 2020 +0200 - - dockerfile: add some instructions on how to run - -commit 86f02fe577b49ef4232a96ca9cb5f400b899948a -Merge: eed88be2ba f380f1bdf1 -Author: Marcus Eide -Date: Mon Apr 6 08:58:17 2020 +0200 - - Merge pull request #457 from spotify/eide/docs-create-app - - Add documentation for how to create an app - -commit eed88be2ba2b3b2f8abfd9230462810f1ca45228 -Author: Stefan Ålund -Date: Mon Apr 6 08:18:05 2020 +0200 - - Make link to Discord more prominent (#480) - -commit 98fb97717ddfaf21447cf2d8ee42f92a9dd5a9b8 -Author: Stefan Ålund -Date: Sun Apr 5 22:25:54 2020 +0200 - - Add Storybook item for HorizontalScrollGrid (#475) - - * Add Storybook item for HorizontalScrollGrid - - * Add Lifecycle's as well - - * Remove value in bool prop - - * Update index.ts - - * Fixed comments - -commit cdf7d4ed39ab530ed2450aae3c7c232dacc4efcf -Merge: 2065d17608 7002aa568c -Author: Stefan Ålund -Date: Sun Apr 5 21:16:49 2020 +0200 - - Merge pull request #459 from spotify/stefanalund-patch-1 - - Add question to FAQ - -commit 7002aa568c04ea6cbf3ac624c35d9d1b948b1e39 -Author: Stefan Ålund -Date: Sun Apr 5 17:08:40 2020 +0200 - - Update FAQ.md - -commit 2065d17608192b13256bccbf5cbe8a5f25b29dd3 -Merge: ce6c53afbe 48e2dc7dfd -Author: Patrik Oldsberg -Date: Sun Apr 5 16:36:51 2020 +0200 - - Merge pull request #474 from spotify/rugvip/import-lint - - cli: add import and monorepo lint rules to avoid bad imports and missing deps - -commit ce6c53afbe38135d1bc3d2a02d6aa612ab5dbb79 -Merge: 1247fa3280 682871fdbc -Author: Stefan Ålund -Date: Sun Apr 5 16:34:47 2020 +0200 - - Merge pull request #476 from spotify/stefanalund-patch-2 - - Add missing fields to new UX template - -commit 682871fdbc6bb146c1278b5483eca2067bbf5c2d -Author: Stefan Ålund -Date: Sun Apr 5 16:26:21 2020 +0200 - - Update ux-component_template.md - -commit 48e2dc7dfd0953b33cfcc18116a4f99f817c0acf -Author: Patrik Oldsberg -Date: Sun Apr 5 16:00:46 2020 +0200 - - packages/cli: add missing react-use dep to plugin template - -commit 44a959edc65c5ee68f1203ae2f4e770ec550f259 -Author: Stefan Ålund -Date: Sun Apr 5 15:45:14 2020 +0200 - - Update ux-component_template.md - -commit 3d706b9c7ae8c0f1f198a35bb667353dcd6e6726 -Author: Stefan Ålund -Date: Sun Apr 5 15:43:56 2020 +0200 - - Add missing fields to new UX template - -commit 04f5aa3763d901ce7427855cbe48ac218de37e85 -Author: Patrik Oldsberg -Date: Sun Apr 5 14:16:35 2020 +0200 - - packages/app: fix deps and update cypress lint rules - -commit acdea56c7fdd8fe165fecef0b9837ccdd23becd6 -Author: Patrik Oldsberg -Date: Sun Apr 5 14:09:34 2020 +0200 - - packages/core: fix dependencies and imports - -commit 2fa455bcd0bd80fc38339a5b54e4050fc8e850e0 -Author: Patrik Oldsberg -Date: Sun Apr 5 14:08:43 2020 +0200 - - packages/cli: fix dependencies - -commit 6a6074bedd7198d4e1e04c8319f0bea9e1ed03d5 -Author: Patrik Oldsberg -Date: Sun Apr 5 11:07:24 2020 +0200 - - cli/config/eslint: add import and monorepo lint rules to avoid bad imports and missing deps - -commit 73e7f751b7a355288fb9750c5661eddb4f4968e2 -Author: Patrik Oldsberg -Date: Sun Apr 5 11:16:03 2020 +0200 - - package: add test:all and lint:all - -commit 1247fa3280e86445f22c1ec78520aba6ef74e766 -Merge: e6da7096bc 6e3d0ed523 -Author: Stefan Ålund -Date: Sun Apr 5 11:09:11 2020 +0200 - - Merge pull request #473 from spotify/katz95-patch-1 - - Create ux-component_template.md - -commit 6e3d0ed52383afa60e5dec0986f01c79cbe6eb03 -Author: Kat Zhou <61153904+katz95@users.noreply.github.com> -Date: Sat Apr 4 20:14:54 2020 +0200 - - Create ux-component_template.md - - Template for designers to request for UX components to be added to the Backstage Storybook. - -commit e6da7096bc2a2f66c257b3908a466215e65ce482 -Merge: 73d8d24414 8f8e3eee96 -Author: Patrik Oldsberg -Date: Sat Apr 4 09:46:09 2020 +0200 - - Merge pull request #470 from spotify/rugvip/pr - - github/workflows: trigger on default pull_request event types - -commit 8f8e3eee964feaaedec70d97807beee0446ce87a -Author: Patrik Oldsberg -Date: Sat Apr 4 09:16:05 2020 +0200 - - github/workflows: trigger on default pull_request event types - -commit 73d8d2441451874469151feef5a598c17928bf59 -Merge: 96767192f4 32072ad429 -Author: Stefan Ålund -Date: Sat Apr 4 08:40:12 2020 +0200 - - Merge pull request #467 from spotify/eslint-config-oss - - chore: use eslint-config-oss - -commit 69298e221b2b66921adef1577ae1488db1fc953c -Merge: f7967c6d17 96767192f4 -Author: Jose Balanza Martinez -Date: Fri Apr 3 22:23:16 2020 -0600 - - Merge branch 'master' of https://github.com/spotify/backstage into remove_plugin_wip - -commit 32072ad4295a804c389ec09c18aa705589fc3024 -Author: Paul Marbach -Date: Fri Apr 3 11:50:49 2020 -0400 - - chore: use eslint-config-oss - -commit 96767192f4c086711898882077a15be266d9e735 (tag: v0.1.1-alpha.1) -Merge: db79d0f387 728e6637b7 -Author: Patrik Oldsberg -Date: Fri Apr 3 17:51:51 2020 +0200 - - Merge pull request #466 from spotify/rugvip/private - - plugins: switch back to private to fix master build - -commit 728e6637b7cf958375d8d2b2042500ed767a65c8 -Author: Patrik Oldsberg -Date: Fri Apr 3 17:32:52 2020 +0200 - - plugins: switch back to private to fix master build - -commit db79d0f387a6f6733330d1641958bcc26b73c979 -Merge: 4a6b581bfb 66f4cda22c -Author: Patrik Oldsberg -Date: Fri Apr 3 15:24:38 2020 +0200 - - Merge pull request #465 from spotify/rugvip/release - - Release v0.1.1-alpha.1 - -commit 4a6b581bfb9e7a6fa32bec384c467ecc9289041d -Merge: 12b72d06be c80074cfdf -Author: Niklas Ek -Date: Fri Apr 3 15:12:41 2020 +0200 - - Merge pull request #430 from Buddhalow/feature/dark-mode - - Implemented dark mode - -commit f380f1bdf18531aab4237f8b61fb77f7b15de81d -Author: Marcus Eide -Date: Fri Apr 3 14:52:21 2020 +0200 - - More comments - -commit 66f4cda22c36030852f9d3fd0f35e2d3a3cdd914 -Author: Patrik Oldsberg -Date: Fri Apr 3 14:40:04 2020 +0200 - - plugins: fix core peer-dep version - -commit 29f2bc27351e52c175367d7fc79098c766e81b09 -Author: Patrik Oldsberg -Date: Fri Apr 3 14:37:54 2020 +0200 - - v0.1.1-alpha.1 - -commit 46e7969dd2c9ed8b272bcfb8cc3a7e5ffbbdcc29 -Author: Marcus Eide -Date: Fri Apr 3 14:32:30 2020 +0200 - - Review comments - -commit 12b72d06be62bd1a97ef58ee5e1e0f7daa1cf87a -Merge: 0193bfb788 70ac8c3402 -Author: Marcus Eide -Date: Fri Apr 3 14:30:51 2020 +0200 - - Merge pull request #463 from spotify/eide/rollup-json - - Configure rollup resolve plugin - -commit 70ac8c34022df85f29f15b2496cca42ae49f71f6 -Author: Marcus Eide -Date: Fri Apr 3 14:15:07 2020 +0200 - - Configure rollup resolve plugin - -commit 0193bfb78874a8f57315d79640cfea48e251b5eb -Merge: 156764e916 bcc150a36c -Author: Patrik Oldsberg -Date: Fri Apr 3 14:00:50 2020 +0200 - - Merge pull request #462 from spotify/eide/rollup-json - - Add json plugin to rollup - -commit 156764e9161573ebe828de467bbd0aae6a4e159f -Merge: 4de303a2bb a8e96391b2 -Author: Stefan Ålund -Date: Fri Apr 3 13:47:51 2020 +0200 - - Merge pull request #440 from hooloovooo/feature/407-infocard - - InfoCard TypeScript rewrite - -commit bcc150a36c39abfd3995a03faf31fbc818503e20 -Author: Marcus Eide -Date: Fri Apr 3 13:16:25 2020 +0200 - - Add json plugin to rollup - -commit ea2e4fec53d0de284cc88f6f24a3726f5e4336e8 -Author: Marcus Eide -Date: Fri Apr 3 11:40:16 2020 +0200 - - Reword frontend to app - -commit 4de303a2bbe682e88c529f083e53c8c68f6d3a66 -Merge: e4433c431e 3be5e9ade3 -Author: Stefan Ålund -Date: Fri Apr 3 10:35:58 2020 +0200 - - Merge pull request #449 from spotify/alund/story - - Storybook: wrap InfoCards to fix width - -commit e4433c431ec2b4c8ff8d2c59dac01f3283bbc72e -Merge: 808f6b873b 091322b76a -Author: Stefan Ålund -Date: Thu Apr 2 20:30:51 2020 +0200 - - Merge pull request #460 from spotify/Rugvip-patch-1 - - github/pr-template: remove codeowners checkbox - -commit 808f6b873bfdc22ce6c90be3f2da4ed5ea88ddc0 -Merge: 3f1484d819 60d504978e -Author: Stefan Ålund -Date: Thu Apr 2 20:24:34 2020 +0200 - - Merge pull request #458 from hmartinez69/master - - Storybook background color changed for better lisibility - Issue #450 - -commit 091322b76acaa3e01b52d2dff224435d1aa6d821 -Author: Patrik Oldsberg -Date: Thu Apr 2 20:06:36 2020 +0200 - - github/pr-template: remove codeowners checkbox - -commit 2e63a0209470eacc7a99e7797b68e18ef41d104e -Author: Stefan Ålund -Date: Thu Apr 2 20:05:00 2020 +0200 - - Add question to FAQ - -commit 3f1484d8193bbdabae7ac846fee01f41a10b995c -Merge: 890deeee7d 0f0e9b3afb -Author: Patrik Oldsberg -Date: Thu Apr 2 19:28:05 2020 +0200 - - Merge pull request #446 from tarcinil/fix/443/remove-build - - updating dockerfile and creating task to build the image from the host - -commit 0f0e9b3afbf18cdde5a5427e7911f65ffcc61f24 -Author: Patrik Oldsberg -Date: Thu Apr 2 19:23:35 2020 +0200 - - package: switch docker-build to use bundle script - -commit 562302e5f42c3c49d7998ccbaf38198600711b5e -Merge: 91aa322c88 890deeee7d -Author: Patrik Oldsberg -Date: Thu Apr 2 19:19:41 2020 +0200 - - Merge branch 'master' into fix/443/remove-build - -commit 60d504978e46f61454c602f37ce3388523e01c2f -Author: hugomartinez -Date: Thu Apr 2 18:46:02 2020 +0200 - - Storybook background color changed for better lisibility - Issue #450 - -commit 90dc161870c791a68890c93b2256ec66c46df5c6 -Author: Marcus Eide -Date: Thu Apr 2 16:33:29 2020 +0200 - - Add documentation for how to create an app - -commit 890deeee7d43b5be25318d5e019389577c34bd83 -Merge: 07cbdd8554 1f8b01effe -Author: Patrik Oldsberg -Date: Thu Apr 2 15:04:23 2020 +0200 - - Merge pull request #453 from spotify/rugvip/paths - - packages/cli: add utility for resolving paths and use everywhere - -commit 1f8b01effe140045ae47e82de07154239f50911c -Author: Patrik Oldsberg -Date: Thu Apr 2 14:36:24 2020 +0200 - - packages/cli: add utility for resolving paths and use everywhere - -commit 3be5e9ade37c15a238c61c9c008104cc3cb19092 -Author: Stefan Ålund -Date: Thu Apr 2 13:53:33 2020 +0200 - - Storybook: wrap InfoCards to fix width - -commit 07cbdd8554b0800c7df652835a3e9e7ef42d639e -Merge: 7836be9942 e62618c919 -Author: Niklas Ek -Date: Thu Apr 2 12:42:44 2020 +0200 - - Merge pull request #387 from spotify/mob/roll2 - - Improve the plugin build script with rollup - -commit 7836be9942f0254b90e56baf35318ea7c3348fdd -Merge: 66a95bc586 3404afcd1e -Author: Patrik Oldsberg -Date: Thu Apr 2 12:09:16 2020 +0200 - - Merge pull request #445 from spotify/rugvip/ci-fixes - - workflows: run lerna directly and fix master build + run build before tests locally - -commit 66a95bc586c2e7a03d589fe1ec68ea43bffb570f -Merge: d9d1d3fb76 43a523cc58 -Author: Patrik Oldsberg -Date: Thu Apr 2 12:07:22 2020 +0200 - - Merge pull request #442 from spotify/rugvip/e2e-output - - script/cli-e2e-test: better error output when page load fails - -commit d9d1d3fb76028145e6cf0901b1c34d24ebc0af44 -Merge: 638baa1f86 4fbc5a4284 -Author: Patrik Oldsberg -Date: Thu Apr 2 12:07:06 2020 +0200 - - Merge pull request #447 from spotify/rugvip/watch-fix - - packages/core: fix watch mode - -commit e62618c9198fdc5fb4df1e4f1782e040d36a0167 -Author: nikek -Date: Thu Apr 2 11:57:14 2020 +0200 - - add separate import and export in createPlugin - -commit 3404afcd1eea9c9bb90a2e74858b3a9083f50040 -Author: Patrik Oldsberg -Date: Wed Apr 1 23:16:44 2020 +0200 - - package: simplify lint and test scripts + run build before tests - -commit ab827f36e1909f6c96965f0f86cac03441949cec -Author: Patrik Oldsberg -Date: Wed Apr 1 23:10:22 2020 +0200 - - package,github/workflows: add root lerna command and use in github workflows + fix master - -commit 4fbc5a4284f8674b8a426c7f43119db46dbcf7b2 -Author: Patrik Oldsberg -Date: Thu Apr 2 11:36:15 2020 +0200 - - packages/core: fix watch mode - -commit a8ce7564fac29d916644f1ac5fbc5dd7f374d4d3 -Author: nikek -Date: Thu Apr 2 11:15:06 2020 +0200 - - add notice to plugins.ts - -commit a8e96391b209ad5836003ac1a38434e171bda762 -Author: Sebastian Qvarfordt -Date: Thu Apr 2 11:14:02 2020 +0200 - - Prettier - -commit dc9462cf2fa703a481459db98d22ce8f8a0eda73 -Author: Sebastian Qvarfordt -Date: Thu Apr 2 11:12:49 2020 +0200 - - Removed classes property from card because material-ui did not like classes.header being set - -commit 385b89e121b23b9c61901856922b229b9f425ba5 -Merge: b380327169 638baa1f86 -Author: Sebastian Qvarfordt -Date: Thu Apr 2 11:10:41 2020 +0200 - - Merge branch 'master' of github.com:spotify/backstage into feature/407-infocard - -commit b380327169f1acbd52aa5668b4fe5364a34a03d2 -Author: Sebastian Qvarfordt -Date: Thu Apr 2 11:10:35 2020 +0200 - - Changes as suggested in PR and rewrite of BottomLink to TypeScript - -commit d2447eada852c348fefcd4352002417efef34fa6 -Author: nikek -Date: Thu Apr 2 10:46:29 2020 +0200 - - fix consistent return from plugin build - -commit 43f37a53a0138e6e0e181a2e49b1a00cd5613aac -Author: nikek -Date: Thu Apr 2 10:38:08 2020 +0200 - - add build:watch to package.json of plugins - -commit 91e8058c52d77faa7cdae223f1db22241acc3040 -Author: nikek -Date: Thu Apr 2 10:35:04 2020 +0200 - - refactor plugin build function - -commit 8c1c8d2f5a098a98493bb8aa8ac302f868e4061e -Author: nikek -Date: Thu Apr 2 10:29:52 2020 +0200 - - tweak types - -commit d4ac45b628f015372b1ec87f89ca527d41cfa58c -Author: nikek -Date: Wed Apr 1 23:24:11 2020 +0200 - - make rollup watch mode work - -commit e791907d1f17297e9a12304a8b98548f24d6480d -Author: nikek -Date: Wed Apr 1 11:32:56 2020 +0200 - - WIP watch mode - -commit d43414d68742e7b78500a6361dbb21fdedc20ece -Author: nikek -Date: Wed Apr 1 11:30:36 2020 +0200 - - put shared tsconfig in root config - -commit 8fffc427013ced8820a54e8a88d0d99f9e4b0cd6 -Author: nikek -Date: Wed Apr 1 10:33:53 2020 +0200 - - remove unnecessary comment - -commit 0b4c3fd90e8ab02041c1f983d31f03d13c6f51c6 -Author: nikek -Date: Tue Mar 31 18:30:47 2020 +0200 - - update yarn.lock for rollup deps - -commit 32a112d63b8c848113bd114efc2837a178e93dfb -Author: nikek -Date: Tue Mar 31 18:26:12 2020 +0200 - - rename build to dist again - -commit 4e747b0a19725665687b061ec7fd96ffb65fec37 -Author: nikek -Date: Tue Mar 31 18:08:43 2020 +0200 - - remove commented out code - -commit 701bfff609cb4d9f1671d15f32da983ac6132f75 -Author: nikek -Date: Tue Mar 31 18:07:42 2020 +0200 - - rename image to imageFiles to not confuse it with the image plugin - -commit dbb7ba14d1815fa7561202b6911cfcbc7eac4b13 -Author: nikek -Date: Tue Mar 31 18:06:18 2020 +0200 - - add circumflex accent to rollup types deps - -commit b3a7057191fae9945dbadc2446b40284e1dd5299 -Author: Raghunandan -Date: Tue Mar 31 14:48:32 2020 +0200 - - remove esm and use cjs output from plugins - -commit e4195998cef96d3564185c54fc81481f32bb8e9a -Author: Marcus Eide -Date: Tue Mar 31 11:48:25 2020 +0200 - - Fix tests by building two versions of plugins and importing/exporting seperatly - -commit 2f776924b44417fc763dace00c35387cc84b976f -Author: nikek -Date: Fri Mar 27 18:01:02 2020 +0100 - - add notice - -commit f28cfcf7d1e7204e4cfb0e3f0aed49b7021721ff -Author: nikek -Date: Fri Mar 20 16:24:35 2020 +0100 - - Add rollup for plugin build - -commit 638baa1f8666d072a39bd348440c1330eb261e44 -Merge: b96a8234b0 8bba411287 -Author: Stefan Ålund -Date: Thu Apr 2 07:46:22 2020 +0200 - - Merge pull request #439 from spotify/eide/cypress-types - - Pin cypress to 4.2.0 to fix typescript type conflict - -commit c80074cfdfed923d23a825a3e77f725e467379dc -Author: Alexander Forselius -Date: Thu Apr 2 07:14:41 2020 +0200 - - Added window.matchMedia to App.tsx - -commit 91aa322c880f03100cc772c32ffb9bdf1fe47a37 -Author: Vern Burton -Date: Wed Apr 1 19:25:33 2020 -0500 - - updating dockerfile and creating task to build the image from the host - -commit 488232ce738c7ccb22ee6ce56960e13a1f57e091 -Author: Patrik Oldsberg -Date: Wed Apr 1 22:57:48 2020 +0200 - - package: pretty - -commit b96a8234b032a2e75675d5ecb1138542efc0cf3d -Merge: 9015a1aa27 e96e95df66 -Author: Patrik Oldsberg -Date: Wed Apr 1 21:07:31 2020 +0200 - - Merge pull request #437 from spotify/rugvip/create-app - - cli: add create-app command - -commit d37fcc09706d78b4e0fb2439d25fb86b5e9a92b6 -Author: Alexander Forselius -Date: Wed Apr 1 19:41:12 2020 +0200 - - Added feature check for window.matchMedia - -commit 43a523cc5825a34ab3e4901c5e6597d0f1ee6f98 -Author: Patrik Oldsberg -Date: Wed Apr 1 18:24:10 2020 +0200 - - script/cli-e2e-test: better error output when page load fails - -commit 9015a1aa27398d690f46e925e00c79078c174861 -Merge: a7c8110356 07b06ed468 -Author: Patrik Oldsberg -Date: Wed Apr 1 18:00:26 2020 +0200 - - Merge pull request #441 from spotify/rugvip/bump - - bump yarn version - -commit 8bba4112877178f4c407c60c2120c084f1db5080 -Author: Patrik Oldsberg -Date: Wed Apr 1 16:53:11 2020 +0200 - - Revert "Specifically add types to tsconfig to fix build issue" - - This reverts commit 76fe4bf14d31ee021950288c0f2becfadb5dca7d. - -commit 869eb2c2862686ebde687ead8aa8b668c4ffbe6e -Author: Patrik Oldsberg -Date: Wed Apr 1 16:53:07 2020 +0200 - - package: pin cypress to 4.2.0 to avoid type issues in 4.3.0 - -commit 07b06ed4683ffc2a18d8b3ea308b56aa952127ec -Author: Patrik Oldsberg -Date: Wed Apr 1 16:42:20 2020 +0200 - - bump yarn version - -commit fedac3a758b01b484530f1459f3b5e8a30d501cf -Author: Sebastian Qvarfordt -Date: Wed Apr 1 16:18:33 2020 +0200 - - Initial typing for infocard component - -commit 76fe4bf14d31ee021950288c0f2becfadb5dca7d -Author: Marcus Eide -Date: Wed Apr 1 15:39:52 2020 +0200 - - Specifically add types to tsconfig to fix build issue - -commit a7c8110356697d02f43d53f837e2f7fee862d982 -Merge: dd17d3068f bebad80a24 -Author: Fredrik Adelöw -Date: Wed Apr 1 14:47:49 2020 +0200 - - Merge pull request #429 from spotify/freben/callout - - Add support for dismissible information callouts - -commit 44db4c9a57fa34bbb5789ff3993a3c51eb805a49 -Merge: cfe56ae7ef dd17d3068f -Author: Alexander Forselius -Date: Wed Apr 1 13:23:10 2020 +0200 - - Merge remote-tracking branch 'upstream/master' into feature/dark-mode - -commit dd17d3068f582997dcebab82e6468744a8e8e0b0 -Merge: 76a31384da 3a104674db -Author: Patrik Oldsberg -Date: Wed Apr 1 12:54:34 2020 +0200 - - Merge pull request #438 from spotify/rugvip/heeps - - github/workflows: increase max old gc heap space size - -commit 3a104674db51e7f1a5e23df470b18a8b8b8e1b0d -Author: Patrik Oldsberg -Date: Wed Apr 1 12:32:03 2020 +0200 - - github/workflows: increase max old gc heap space size - -commit e96e95df6650ef0dc4b91e2bfa28182932b9761a -Author: Patrik Oldsberg -Date: Wed Apr 1 11:51:28 2020 +0200 - - cli/commands/create-plugin: update tests - -commit d21d38e947a5c2015008595521e6cc5ac9f5b90e -Author: Patrik Oldsberg -Date: Wed Apr 1 11:21:01 2020 +0200 - - cli: make package.json reading absolute - -commit 111f163d4105bdda296c2cb71caf0b3e09a71689 -Author: Patrik Oldsberg -Date: Tue Mar 24 10:23:43 2020 +0100 - - cli: add create-app - -commit 841a38741773494f12b65adc4e18464871c48af2 -Author: Patrik Oldsberg -Date: Wed Apr 1 01:10:43 2020 +0200 - - cli/commands/create-plugin: move templating to tasks helper and fix it + separate out sections - -commit 76a31384dacd3badbf96a87939160d7c4b1006d6 -Merge: b2de67b6e6 2393c5c049 -Author: Stefan Ålund -Date: Wed Apr 1 10:46:13 2020 +0200 - - Merge pull request #425 from guillaumeLamanda/407-header-2 - - #407 Rewrite layout/Header to use TypeScript and hooks - -commit 2393c5c0493a7c5fe7a34f903b716b0566d66c9b -Author: Guillaume Lamanda -Date: Tue Mar 31 11:26:30 2020 +0200 - - ♻️ rewrite to use typescript and hooks - -commit fc20b4dc76b9b9d268e93417a641a9c53b44b781 -Author: Guillaume Lamanda -Date: Tue Mar 31 11:12:56 2020 +0200 - - ♻️ rewrite in typescript - -commit 69e4bcf26b4ecbca2f066351d714d8121f91a208 -Author: Guillaume Lamanda -Date: Tue Mar 31 10:50:16 2020 +0200 - - ♻️ rewrite to use typescript and hooks - -commit b2de67b6e63aaca5a95880ca7127c491a80d89c6 -Merge: 3d49731dc2 f1acc3e0bc -Author: Stefan Ålund -Date: Wed Apr 1 08:01:28 2020 +0200 - - Merge pull request #433 from spotify/bih-patch-1 - - Fix code sample in Feature Flag docs - -commit f7967c6d1784bfa6bc11b519362377b951034577 -Author: Jose Balanza Martinez -Date: Tue Mar 31 15:24:46 2020 -0600 - - Fixed yarn lint errors - -commit 7217b56825aef89088c8d66f65e084b4e53ebf3f -Author: Jose Balanza Martinez -Date: Tue Mar 31 15:13:31 2020 -0600 - - Fixed @bakcstage name in test - -commit f1acc3e0bc18ca103b36cac155e83d802a562723 -Author: Bilawal Hameed -Date: Tue Mar 31 23:04:56 2020 +0200 - - Fix code sample - -commit 0a70a0a26baaadf6b9c36151d3639a166d9be261 -Author: Jose Balanza Martinez -Date: Tue Mar 31 14:27:54 2020 -0600 - - Removed unnecessary comments - -commit ecc2dbe6584736405955309f61cb725fee15a860 -Author: Jose Balanza Martinez -Date: Tue Mar 31 14:19:36 2020 -0600 - - remove-plugin removes codeowners statement - -commit 580cead761bd4aafa052ab2120ba6a065a117104 -Author: Patrik Oldsberg -Date: Tue Mar 31 21:02:45 2020 +0200 - - cli/helpers/errors: make exit error message a bit more visible - -commit 3c6bbd86353549f7829ab3904d71257c21505a8f -Author: Patrik Oldsberg -Date: Tue Mar 31 20:29:12 2020 +0200 - - cli/commands/create-plugin: add task helper and make everything async - -commit 557880a36f17e81848a6f1d4dc0c119665b1baf2 -Author: Jose Balanza Martinez -Date: Tue Mar 31 12:53:58 2020 -0600 - - Added removePlugin - -commit 362851876450d608cd74cce323c5423dd638a819 -Merge: eb8d2e55b9 3d49731dc2 -Author: Jose Balanza Martinez -Date: Tue Mar 31 12:34:26 2020 -0600 - - Merge branch 'master' of https://github.com/spotify/backstage into new_branch - -commit cfe56ae7ef77d3bd0eeeda14c6f15c6bf50f9cdb -Author: Alexander Forselius -Date: Tue Mar 31 17:57:42 2020 +0200 - - Implemented dark mode - -commit bebad80a24ef4410e070298bb59b45d59345d065 -Author: Fredrik Adelöw -Date: Fri Mar 27 14:39:11 2020 +0100 - - Use dismissible information callouts - -commit 3d49731dc2e2d4d0849b7acc1c64e9da6372c04c -Merge: d0bfb7bda2 124cdede70 -Author: Fredrik Adelöw -Date: Tue Mar 31 16:51:53 2020 +0200 - - Merge pull request #417 from SrdjanCosicPrica/master - - Add husky and lint-staged to automatically prettify staged code changes - -commit d0bfb7bda281211c6cac409d8e49d33a4faffb32 -Merge: f4179a56bd 4e9151ba3c -Author: Stefan Ålund -Date: Tue Mar 31 16:39:22 2020 +0200 - - Merge pull request #426 from hooloovooo/feature/407-errorboundary - - WIP: ErrorBoundary rewrite to TS - -commit f4179a56bd87fe0ea84501e2f84832295e6057ba -Merge: 1bd355a88f c914a62882 -Author: Patrik Oldsberg -Date: Tue Mar 31 16:33:47 2020 +0200 - - Merge pull request #403 from spotify/rugvip/build-cache - - cli: add experimental build-cache command and make sure things are only built on change in CI - -commit 124cdede70ae4fe25ffc7063f87c039358086b23 -Author: SrdjanCosicPrica <15933115+SrdjanCosicPrica@users.noreply.github.com> -Date: Mon Mar 30 18:59:32 2020 +0200 - - Prettify project - -commit 5a4228a28a385a6dd6a1867f1fcd9ffbefe4caa0 -Author: SrdjanCosicPrica <15933115+SrdjanCosicPrica@users.noreply.github.com> -Date: Mon Mar 30 18:58:37 2020 +0200 - - Add husky and lint-staged to prettify staged files before commiting - -commit c914a628824b42c05af35795b2e3eb7a8ab349c4 -Author: Patrik Oldsberg -Date: Tue Mar 31 15:31:22 2020 +0200 - - github/workflows: also build app on changes to packages/core - -commit 1bd355a88fab7c830620b5c69dbc42b2990aaa8c -Merge: 26266cb2f6 334abb2936 -Author: Stefan Ålund -Date: Tue Mar 31 15:31:06 2020 +0200 - - Merge pull request #428 from spotify/stefanalund-patch-1 - - Delete now.json - -commit 334abb29362c4d4922117130aa5900dfb75f6b00 -Author: Stefan Ålund -Date: Tue Mar 31 15:00:17 2020 +0200 - - Delete now.json - -commit 4e9151ba3ce0859e66229aa6a38b0c37175f2c91 -Author: Sebastian Qvarfordt -Date: Tue Mar 31 13:21:26 2020 +0200 - - removed onError from state - -commit 924a9990798e51f48244535836be4559cc597f9a -Author: Sebastian Qvarfordt -Date: Tue Mar 31 13:07:21 2020 +0200 - - prettier - -commit 7a4aebb8a29bdcbcf6fa204cf6a8f62c98d2f81d -Author: Sebastian Qvarfordt -Date: Tue Mar 31 13:04:51 2020 +0200 - - initial rewrite to TS - -commit c4b6afffaf095e5b9e34e87fa2656d2b5c0da9ad -Author: Patrik Oldsberg -Date: Mon Mar 30 18:16:15 2020 +0200 - - cli/commands/build-cache: refactor dirty check to make key undefined instead of cache - -commit bfceff2c84e6840649fa1bd01f4ba3f0f4322d25 -Author: Patrik Oldsberg -Date: Mon Mar 30 18:06:32 2020 +0200 - - cli/commands/build-cache: more docs - -commit edd21b984eb8a57c0a30b636e09cd0255b5d3b00 -Author: Patrik Oldsberg -Date: Fri Mar 27 16:59:40 2020 +0100 - - cli/commands/build-cache: make max entries configurable and set to 2 in CI - -commit 56a7969eac1fdbf66a5d85cfd9ecee996f2e414a -Author: Patrik Oldsberg -Date: Fri Mar 27 16:36:37 2020 +0100 - - github/workflows: add back node_modules cache - -commit 9cb19a62aa5658645020d6500ec7cdecac35f8f6 -Author: Patrik Oldsberg -Date: Fri Mar 27 16:04:31 2020 +0100 - - github/workflows: separate out build cache and use proper key + restore keys - -commit 2961e216ccbf032b241517820e18dcbd40d39549 -Author: Patrik Oldsberg -Date: Fri Mar 27 15:52:45 2020 +0100 - - cli/commands/build-cache: allow cache dir to be set through env - -commit 3ca00be6071c5c97572f762e8732db973274e371 -Author: Patrik Oldsberg -Date: Fri Mar 27 15:07:21 2020 +0100 - - cli/commands/build-cache: enable dirty check - -commit b87a760dd5fec4be396cbe4beac833886e317b9b -Author: Patrik Oldsberg -Date: Fri Mar 27 14:56:15 2020 +0100 - - package: only lint changes since master - -commit e2014836b5b2c8773812f47fab54f2ab9dd3ceb1 -Author: Patrik Oldsberg -Date: Fri Mar 27 14:55:19 2020 +0100 - - github/workflows: repurpose node_modules cache to cache .cache - -commit e59ddb4d7c7efc35a84d1e77b578fa2d65c6bcec -Author: Patrik Oldsberg -Date: Fri Mar 27 14:49:47 2020 +0100 - - packages,plugins: use build-cache command - -commit ec28ed8e2acd9f113984de0823d831527abcea91 -Author: Patrik Oldsberg -Date: Fri Mar 27 14:31:42 2020 +0100 - - packages/app: rename build script to bundle and only run in CI when app changed - -commit 140cd7e4db030401bba660a1ffe934e0c3f1e529 -Author: Patrik Oldsberg -Date: Fri Mar 27 13:57:26 2020 +0100 - - cli/commands/build-cache: remove unused archive function - -commit f2d7d43b77ac6e0a2726a37bbd294e33f5e2f8ca -Author: Patrik Oldsberg -Date: Fri Mar 27 13:56:51 2020 +0100 - - cli/commands/build-cache: add support for multiple cache archives - -commit 39efe52c9dab6bdf782ed10e9de3d69e3996d151 -Author: Patrik Oldsberg -Date: Fri Mar 27 13:04:53 2020 +0100 - - cli/commands/build-cache: refactor cache handling - -commit 8a35da15e5449151440f66cbeea06eae555c580a -Author: Patrik Oldsberg -Date: Fri Mar 27 12:15:19 2020 +0100 - - cli/commands/build-cache: separate out cache and options handling - -commit 0644f47645bcaf3f9675b3ecdd8c8675b9c75d22 -Author: Patrik Oldsberg -Date: Fri Mar 27 12:07:31 2020 +0100 - - cli/commands/build-cache: simplify build and move cmdOutput to helpers as runPlain - -commit 2dae5fccafcb924e37580ca40a1252e80b0cd032 -Author: Patrik Oldsberg -Date: Fri Mar 27 12:00:54 2020 +0100 - - cli/commands/build-cache: move archive handling to separate module - -commit 4e79446dc91e2ff84fe52aa79e16f501bb30b7bf -Author: Patrik Oldsberg -Date: Fri Mar 27 11:49:32 2020 +0100 - - cli/commands/build-cache: run build command - -commit eaf80a4271d23d7736e490470cc44057cd1f8a48 -Author: Patrik Oldsberg -Date: Fri Mar 27 11:38:55 2020 +0100 - - cli/commands/build-cache: fix unhandled error - -commit 282af223519616e1ffba7db7c43159d3d95cda07 -Author: Patrik Oldsberg -Date: Fri Mar 27 11:38:46 2020 +0100 - - cli/commands/build-cache: refactor + cleanup output - -commit d4fc4375641fc64d4a71ff4ec2e99bbdd007bc9d -Author: Patrik Oldsberg -Date: Fri Mar 27 11:23:04 2020 +0100 - - cli/commands/build-cache: store external cache in tar archives - -commit de34ab58e29d560c30183400a93c069cd7980d2f -Author: Patrik Oldsberg -Date: Fri Mar 27 10:21:44 2020 +0100 - - cli/commands/build-cache: initial caching without build - -commit 555db720ae17e38946787da393c9e0e51a17ff68 -Author: Patrik Oldsberg -Date: Thu Mar 26 14:57:54 2020 +0100 - - cli: added initial build-cache command - -commit 26266cb2f6b5e08e6aed6b006982bbaeba0e3376 -Merge: f37cbf28ab e22d6dd253 -Author: Patrik Oldsberg -Date: Tue Mar 31 09:50:51 2020 +0200 - - Merge pull request #420 from spotify/rugvip/frozen - - github/workflows: run yarn install with --frozen-lockfile - -commit f37cbf28abdfcc64f5e3f828abaaae7825aac178 -Merge: ffd0d4d545 cf082b8a54 -Author: Stefan Ålund -Date: Tue Mar 31 09:33:22 2020 +0200 - - Merge pull request #424 from spotify/alund/rm-owner - - Remove internal specific code - -commit e22d6dd2530e5c460fb75618f124dc39e8bb315a -Author: Patrik Oldsberg -Date: Mon Mar 30 23:50:49 2020 +0200 - - github/workflows: run yarn install with --frozen-lockfile - -commit cf082b8a540459efb985aeda7367eeb8c2e283df -Author: Stefan Ålund -Date: Tue Mar 31 09:14:39 2020 +0200 - - Remove internal specific code - -commit ffd0d4d54564d8b0d154556ddcf6dea38eaea5f7 -Merge: f8d563da30 912bd3ee18 -Author: Patrik Oldsberg -Date: Tue Mar 31 09:04:53 2020 +0200 - - Merge pull request #422 from spotify/rugvip/merge - - merge Dockerfile and nginx config with heroku deployment - -commit f8d563da30d8a6ac096cc22716bc2d3bd9075682 -Merge: cc3120c35f b6bc987362 -Author: Stefan Ålund -Date: Tue Mar 31 08:10:44 2020 +0200 - - Merge pull request #421 from spotify/rugvip/scaffold-fix - - cli/templates: fix InfoCard usage in plugin template - -commit 912bd3ee18f603f02eee363e4a4053f147a52514 -Author: Patrik Oldsberg -Date: Tue Mar 31 01:11:34 2020 +0200 - - Dockerfile: move nginx config templating to run script - -commit ae3d5ffe9df5740acfdc0035e7a111e3d2296fe3 -Author: Patrik Oldsberg -Date: Tue Mar 31 00:51:34 2020 +0200 - - Dockerfile: optimize copying a bit - -commit afb77c88239671f3956acd5aec83bf3011c04a12 -Author: Patrik Oldsberg -Date: Tue Mar 31 00:51:12 2020 +0200 - - DEPLOYMENT: update heroku deployment instructions - -commit 9a5ed723c48c3d2f932b2c28741db4435bdf8fe0 -Author: Patrik Oldsberg -Date: Tue Mar 31 00:17:15 2020 +0200 - - deployment: merge into root dockerfile - -commit b6bc98736246cd4cde4ae216882c06dffca53b8f -Author: Patrik Oldsberg -Date: Tue Mar 31 00:09:54 2020 +0200 - - github/workflows: run cli e2e tests on changes to core - -commit f4d8425d19d453e60322608c98a1f09d156436a5 -Author: Patrik Oldsberg -Date: Tue Mar 31 00:09:39 2020 +0200 - - cli/templates: fix InfoCard usage in plugin template - -commit cc3120c35f4df57b8d966de7f915e22e0b4b69bc -Merge: 7867c593b1 39f7fe277f -Author: Patrik Oldsberg -Date: Mon Mar 30 22:59:28 2020 +0200 - - Merge pull request #419 from sgraczyk/feature/407-header-waves - - Rewrite layout/Header/Waves to use TypeScript - -commit 39f7fe277f8888aa8305807de2ad57cc9789c0fb -Author: Szymon Graczyk -Date: Mon Mar 30 22:31:43 2020 +0200 - - Correct the import of PageTheme to use relative path - -commit 8782465459fcfc60d4ee81006c931d38af0e8820 -Author: Szymon Graczyk -Date: Mon Mar 30 22:25:49 2020 +0200 - - Rewrite layout/Header/Waves to use TypeScript - * Add simple test looking for svg node - -commit 7867c593b136186a02bd5e582e978fc3268bae7d -Merge: e13d6093ba ea4b85849c -Author: Stefan Ålund -Date: Mon Mar 30 21:47:14 2020 +0200 - - Merge pull request #406 from mateusmarquezini/feature/400-info-card-storybook - - Adding "Information Card" component to Storybook - -commit ea4b85849ccf9fa5a398e419152873382e0f8d16 -Author: Mateus Marquezini -Date: Mon Mar 30 15:09:38 2020 -0300 - - #400 code review changes - -commit e13d6093baa9f445b089575ceda6851b5c13cadb -Merge: 0692663f9f 70252160e5 -Author: Stefan Ålund -Date: Mon Mar 30 20:07:15 2020 +0200 - - Merge pull request #391 from spotify/bil/feature-flags - - Add Feature Flags API 🎚 - -commit 575a775e453006608e872bbb6d960e75d59a4013 -Author: Mateus Marquezini -Date: Mon Mar 30 11:55:44 2020 -0300 - - #400 code review changes - -commit 0692663f9f96842c997cf00852da15b400aa0451 -Merge: 11b1a62003 301bd66919 -Author: Fredrik Adelöw -Date: Mon Mar 30 15:23:03 2020 +0200 - - Merge pull request #414 from spotify/freben/codeowners-again - - [cli] CODEOWNERS: catch-all goes first, and paths are absolute - -commit f2ac43714bfc14ffaac9d0951ded2b9dbc0dab77 -Merge: 3ce675857e 11b1a62003 -Author: Mateus Marquezini -Date: Mon Mar 30 10:17:44 2020 -0300 - - Merge branch 'master' into feature/400-info-card-storybook - -commit 11b1a62003cd1f6c7561263d94df6164054bb090 -Merge: 08e03ce400 dc363e43fc -Author: Patrik Oldsberg -Date: Mon Mar 30 15:13:42 2020 +0200 - - Merge pull request #412 from spotify/rugvip/noapp - - packages: rename @backstage/app to example-app - -commit 301bd669197a81ff96d357744ae6d90162da9cb0 -Author: Fredrik Adelöw -Date: Mon Mar 30 14:24:22 2020 +0200 - - [cli] CODEOWNERS: catch-all goes first, and paths are absolute - -commit 08e03ce40055ae86e296f36c43010273d71bb382 -Merge: 88a6b3d7c4 9b7a8712fe -Author: Stefan Ålund -Date: Mon Mar 30 14:36:11 2020 +0200 - - Merge pull request #408 from sgraczyk/feature/407-header - - #407 Rewrite layout/Header to use TypeScript and hooks - -commit dc363e43fc80872cee4d32eb38dc3e8925132efe -Author: Patrik Oldsberg -Date: Mon Mar 30 12:46:49 2020 +0200 - - packages: rename @backstage/app to example-app - -commit 70252160e59ecef235c1f8f370879a79bda541d3 -Author: Bilawal Hameed -Date: Mon Mar 30 11:39:15 2020 +0200 - - [core] change FeatureFlagState to {On,Off} - -commit d911da26d2582cfea56191f1ce508ccdfa1c23d5 -Author: Bilawal Hameed -Date: Mon Mar 30 11:18:18 2020 +0200 - - [core/api] changed loading pattern to be a static factory method - -commit 0ff31e486d570eedce8729fa1743bfa1b84d887f -Author: Bilawal Hameed -Date: Mon Mar 30 11:11:57 2020 +0200 - - [core/api] store single instance of UserFlags - -commit d2d8238330fbdec2d424954eab60ef5d90d0e2bf -Author: Bilawal Hameed -Date: Mon Mar 30 11:08:15 2020 +0200 - - [core/api] FeatureFlags.test.tsx - s/FeatureFlags/featureFlags/g - -commit aecaa4e497470722ce02ca348c548c06cf0bf21e -Author: Bilawal Hameed -Date: Mon Mar 30 10:57:45 2020 +0200 - - [core/api/FeatureFlags] no validation on get + re-think forwarding output - -commit 70fa36ebb42b1d36d7142502d0eade6123a38540 -Author: Bilawal Hameed -Date: Mon Mar 30 10:53:46 2020 +0200 - - [core/api/AppBuilder] remove typescript exclamation mark - -commit 64a14b2191e3d94dbaa3a7dd406b9c55605807e7 -Author: Bilawal Hameed -Date: Fri Mar 27 19:45:59 2020 +0100 - - [core/apis] adapted to build on existing data structures - -commit 6fa6373536c00d4375f93c89fe0b57367e637756 -Author: Bilawal Hameed -Date: Fri Mar 27 18:53:54 2020 +0100 - - [core/apis] replaced FeatureFlagsContext with FeatureFlags.registeredFlags - -commit a8f304dbfbb7ad96da67a8c490e64e80136b920d -Author: Bilawal Hameed -Date: Fri Mar 27 13:13:46 2020 +0100 - - [docs/reference] updated to reflect React Hooks changes - -commit e78680fe0340fdc984df797d290275c98f3d1c1e -Author: Bilawal Hameed -Date: Fri Mar 27 13:04:59 2020 +0100 - - [plugins/welcome] fixed ToggleFeatureFlagButton test - -commit c1f5b2abc9e2a2a5284407c87d7f234481b892c3 -Author: Bilawal Hameed -Date: Fri Mar 27 12:49:48 2020 +0100 - - [core/apis] switch to useFeatureFlag React Hook - -commit 5157904031b5101aa46d87f5615faeae575f595e -Author: Bilawal Hameed -Date: Fri Mar 27 12:15:50 2020 +0100 - - [core/api] s/registeredFeatureFlags/featureFlags/g - -commit 9aaad5d6608c8cb9f588d2ad85f8ae057de7a167 -Author: Bilawal Hameed -Date: Fri Mar 27 11:52:14 2020 +0100 - - [core/api] add name validation in registerFeatureFlag - -commit 24f987b29b1340389bc322e50c72e9e95f4203c6 -Author: Bilawal Hameed -Date: Fri Mar 27 11:35:38 2020 +0100 - - [core/api/app] split name validation into function - -commit 4e38f03221cb4247d302645e35e9e325484a2ef4 -Author: Bilawal Hameed -Date: Fri Mar 27 11:09:07 2020 +0100 - - [core/api] added tests for FeatureFlags.tsx - -commit abe68bc55b9561f32f0812fad92de2dfc33fc077 -Author: Bilawal Hameed -Date: Thu Mar 26 21:21:41 2020 +0100 - - [core] fixed typescript issues - -commit 690bbb662dbca604ab077652f002504002430782 -Author: Bilawal Hameed -Date: Thu Mar 26 21:07:06 2020 +0100 - - [plugins/welcome] split feature flag button into separate Component (with tests) - -commit b2438a22cbe23a8d193c02553fb23d2ea2d117f4 -Author: Bilawal Hameed -Date: Thu Mar 26 17:14:47 2020 +0100 - - [core/apis] added pluginId to feature flag metadata - -commit 92d091dec86d99c136a169ad40c2d1438f97a8a6 -Author: Bilawal Hameed -Date: Thu Mar 26 17:05:53 2020 +0100 - - [core/apis] consolidated methods to get/set - -commit 0b49bad43d70a707bbf21731530fe9403f70e4df -Author: Bilawal Hameed -Date: Thu Mar 26 16:58:00 2020 +0100 - - [core/api] switch getItem from bool to enum - -commit 4969c6046b21682d7e52184c60f65e1c6faf5804 -Author: Bilawal Hameed -Date: Thu Mar 26 16:34:12 2020 +0100 - - [core/apis] moved away from ts decorators - -commit b01e7dee58d4f6d54e0705fd95795117d07169ad -Author: Bilawal Hameed -Date: Thu Mar 26 16:16:48 2020 +0100 - - [plugins/welcome] add feature flag demo - -commit 71072da838e4c47c32086ebfbc990f786c953c7a -Author: Bilawal Hameed -Date: Thu Mar 26 16:07:48 2020 +0100 - - [docs] updated to reflect both useApi and FeatureFlags object - -commit 758c12101eaebe4dd71c3e600ccd298154954156 -Author: Bilawal Hameed -Date: Thu Mar 26 16:00:32 2020 +0100 - - [core/api] added toggle method to FeatureFlags - -commit 85c3ce7d9a9344c62b8c6370a74850152757cab8 -Author: Bilawal Hameed -Date: Thu Mar 26 15:50:45 2020 +0100 - - [core/api/app] added context for registered flags - -commit 7ba4f4ca2db2038e20e1bd1b094552cf78a88d2e -Author: Bilawal Hameed -Date: Thu Mar 26 15:39:19 2020 +0100 - - [plugins/welcome/WelcomePage] add featureFlags via useApi - -commit c86387ea09c72902380b413a3a5bd3fa80e416f8 -Author: Bilawal Hameed -Date: Thu Mar 26 13:36:41 2020 +0100 - - [core] added typescript decorators (experimental) - -commit b865bdd4729d8b433905ebc21aa6198067dd16ae -Author: Bilawal Hameed -Date: Thu Mar 26 13:35:45 2020 +0100 - - [core] fix bad imports - -commit 10a7102f4c48604597db02f4b0f1f6c9ace3f7e8 -Author: Bilawal Hameed -Date: Thu Mar 26 13:12:17 2020 +0100 - - [core/api/app] Set FeatureFlags class to static - -commit 3e6d2ce730d2ef02e57adc0e11b57cf9b1f86f53 -Author: Bilawal Hameed -Date: Thu Mar 26 12:56:56 2020 +0100 - - [core/api/app] add FeatureFlags API implementation - -commit 817c4760504a7568685ea7436b565cfde0cd1989 -Author: Bilawal Hameed -Date: Thu Mar 26 12:22:01 2020 +0100 - - [docs] updated with typescript definitions + code sample - -commit 79654e477e47dfae70fdefee0e0d9e6c759917a6 -Author: Bilawal Hameed -Date: Thu Mar 26 12:18:05 2020 +0100 - - [core/apis/definitions] added featureFlags definition - -commit e6a88a5dc0feadc99b2f37bdcb46ae140ff7353f -Author: Bilawal Hameed -Date: Thu Mar 26 11:56:37 2020 +0100 - - [core/AppBuilder] collect list of registered feature flags - -commit 45d7e2736f25fae55a1f32e06040ebf2d5914f5f -Author: Bilawal Hameed -Date: Thu Mar 26 11:34:30 2020 +0100 - - [core/api/plugins] added featureFlags.registerFeatureFlag - -commit 8145ba8b945f358b5dec62e6dad3cc49741a99aa -Author: Bilawal Hameed -Date: Thu Mar 26 11:21:46 2020 +0100 - - [docs] added skeleton - -commit 88a6b3d7c4be49a822af12547ee3ef9621bcdac1 -Merge: fa71f87ffd 93bbbcd5ee -Author: Patrik Oldsberg -Date: Mon Mar 30 11:17:53 2020 +0200 - - Merge pull request #411 from spotify/rugvip/storyploy - - github/workflows: move storybook deploy to separate workflow - -commit 93bbbcd5ee5baa38298904840ebbf53b69bb8829 -Author: Patrik Oldsberg -Date: Mon Mar 30 11:07:56 2020 +0200 - - github/workflows: move storybook deploy to separate workflow - -commit fa71f87ffd0e2aaf05db6c5ed25455903899958b -Merge: ab4c5f35b0 0d25dc3f9b -Author: Stefan Ålund -Date: Mon Mar 30 09:51:56 2020 +0200 - - Merge pull request #367 from mikqi/ci/deploy-storybook - - ci: add new jobs for deploy storybook - -commit ab4c5f35b0d42c8dce422fee613b6b4c929146ae -Merge: e970a57d31 ec85cdd254 -Author: Marcus Eide -Date: Mon Mar 30 08:56:54 2020 +0200 - - Merge pull request #402 from spotify/eide/hack-cypress - - Add e2e tests for App with Cypress - -commit 0d25dc3f9b7e134dab0c8e3af4c9b1b044fde41d -Merge: 2496a326c0 ac0ddb277f -Author: Muhammad Rivki -Date: Mon Mar 30 13:19:17 2020 +0700 - - Merge branch 'master' of github.com:mikqi/backstage into ci/deploy-storybook - -commit e970a57d31950e9b6cee432ec2a88d8c1487ea3b -Merge: ac0ddb277f 67abc7a2c9 -Author: Stefan Ålund -Date: Mon Mar 30 07:41:23 2020 +0200 - - Merge pull request #389 from mateusmarquezini/fix/306-header-text-color - - Changed the header background color - -commit ac0ddb277f8ee532cbd99daf48c404b644097c2a -Merge: 99c7cc88d9 9235807f14 -Author: Stefan Ålund -Date: Sun Mar 29 23:07:45 2020 +0200 - - Merge pull request #404 from asoorm/patch-1 - - document how to override the default port - -commit 9235807f1407901b65829a0fc1e2a69c5267592e -Author: Ahmet Soormally -Date: Fri Mar 27 18:47:46 2020 +0000 - - document how to override the default port - - Port 3000 is a common port in the development environment. - - This documents how you can start backstage with a different port to the default. - - Moved section for development environment to own page within docs in order to keep README small. - -commit 9b7a8712fe721795612a888260b9da2330f97b86 -Author: Szymon Graczyk -Date: Sun Mar 29 21:06:35 2020 +0200 - - Rewrite layout/Header to use TypeScript and hooks - * use makeStyles hook generator - * write fragments as components - * use types instead of PropTypes - -commit 3ce675857ed03ccffe173350ad4336124995e2e1 -Author: Mateus Marquezini -Date: Sun Mar 29 12:40:14 2020 -0300 - - #400 fixed spread usage - -commit b1a2eef8fd35d03b0177b74a57d488d087c6090e -Author: Mateus Marquezini -Date: Sun Mar 29 12:11:07 2020 -0300 - - #400 Adding Information Card component to Storybook - -commit 99c7cc88d9b0389457e24c58653f3e9a3a76aa63 -Merge: 8c7fe4af0d 894d25b54b -Author: Stefan Ålund -Date: Sun Mar 29 09:28:18 2020 +0200 - - Merge pull request #360 from tarcinil/fix/330/dockerfile-with-compose - - Creating docker-compose.yml with nginx config via a new site. - -commit 894d25b54b5d0c908003626c2a07d6391597e836 -Author: Vern Burton -Date: Sat Mar 28 18:40:28 2020 -0500 - - updating Dockerfile to pull in custom default.conf to overload default file. - -commit 8c7fe4af0dfff2265ec2766d80da2ab1ce79a663 -Merge: 580f30f721 b0329a8261 -Author: Patrik Oldsberg -Date: Fri Mar 27 15:36:52 2020 +0100 - - Merge pull request #399 from fastfrwrd/fix-plugin-scaffolding-issue - - fix: install @backstage/core when scaffolding a plugin - -commit ec85cdd254f0f8e8d164ccb94f4546df2f775f21 -Author: Marcus Eide -Date: Fri Mar 27 14:52:54 2020 +0100 - - Add missing eslint plugin - -commit 990671df9b9eeb516c901024c06ebc5de2f90100 -Author: Marcus Eide -Date: Fri Mar 27 14:07:26 2020 +0100 - - Add e2e test for app with cypress - -commit b0329a82612ab6728caf105bae501e4e67c68e1f -Author: Paul Marbach -Date: Fri Mar 27 09:26:31 2020 -0400 - - fix: install @backstage/core when scaffolding a plugin - -commit a17f237b752508cd7ef58e16e8e2eba383e49977 -Author: Marcus Eide -Date: Fri Mar 27 13:42:27 2020 +0100 - - Add data-testid to buttons used by e2e tests - -commit 580f30f72116995eb49a494e24f823c8436ee2be -Author: Stefan Ålund -Date: Fri Mar 27 07:59:12 2020 +0100 - - Link to Blog from README (#397) - - * Link to Blog from README - - * Update README.md - -commit 749ce4261333942b770966b0495d19ad8a3db607 -Merge: 3d1d34bf96 abd3caf246 -Author: Stefan Ålund -Date: Thu Mar 26 21:06:48 2020 +0100 - - Merge pull request #396 from spotify/stefanalund-patch-1 - - Add question to FAQ - -commit abd3caf246039a2824bf1f9e31453145b2535910 -Author: Stefan Ålund -Date: Thu Mar 26 20:37:32 2020 +0100 - - Update FAQ.md - -commit 8c1a2765e0324a514cc37c8a1a7c54cf5dd8551c -Author: Stefan Ålund -Date: Thu Mar 26 20:27:25 2020 +0100 - - Add question to FAQ - -commit 3d1d34bf960a9490dfcc6b8904fbfc16d818d407 -Merge: 155f5445e3 7910f8e7f1 -Author: Patrik Oldsberg -Date: Thu Mar 26 15:15:22 2020 +0100 - - Merge pull request #392 from spotify/stefanalund-patch-1 - - Add RFCs to README - -commit 7910f8e7f1952cf6b910f90dcf29c807e4b02762 -Author: Stefan Ålund -Date: Thu Mar 26 14:39:20 2020 +0100 - - Add RFCs to README - -commit 67abc7a2c9f138f2f7c905992928fae5c2d0097c -Author: Mateus Marquezini -Date: Thu Mar 26 08:28:05 2020 -0300 - - reverted opacity changes - -commit 155f5445e31cbe2862410d2c8a968d56ef7125aa (tag: v0.1.1-alpha.0) -Merge: 5c26725361 019032a7a3 -Author: Patrik Oldsberg -Date: Thu Mar 26 09:47:35 2020 +0100 - - Merge pull request #388 from spotify/rugvip/ns - - use npm namespace @backstage and bump to v0.1.1-alpha.0 - -commit 211787f86e3e3631fdf974f4ebd582aa1b22f0bc -Author: Mateus Marquezini -Date: Wed Mar 25 17:23:38 2020 -0300 - - #306 changed the header color - -commit 019032a7a3db535177a21b21c0162413c46e72c2 -Author: Patrik Oldsberg -Date: Wed Mar 25 19:13:14 2020 +0100 - - v0.1.1-alpha.0 - -commit 3a0d8edcb57c25ff23b3e935d5342de2b25b1641 -Author: Patrik Oldsberg -Date: Wed Mar 25 19:12:11 2020 +0100 - - rename npm namespace from @spotify-backstage to @backstage - -commit 5c26725361f16e5e052fc79ef3b0c30b25731e22 (tag: v0.1.0) -Merge: e73bb131c1 59c1cba6b9 -Author: Patrik Oldsberg -Date: Wed Mar 25 15:48:59 2020 +0100 - - Merge pull request #378 from spotify/rugvip/publish - - set up package publishing - -commit e73bb131c12b78b0337d6f7dd5855e5f2bfff8ad -Merge: 80eeaa836b ca992f6cc4 -Author: Patrik Oldsberg -Date: Wed Mar 25 15:42:33 2020 +0100 - - Merge pull request #384 from spotify/rugvip/prep - - Prepare packages for publishing - -commit ca992f6cc44d886a7df3ec2ce9ae81e029e019d8 -Author: Patrik Oldsberg -Date: Wed Mar 25 12:59:29 2020 +0100 - - packages/{core,cli}: fill in missing package.json fields for publishing - -commit cf446052bc9f48f244700aac4b1a489fa7b8d42d -Author: Patrik Oldsberg -Date: Wed Mar 25 12:57:54 2020 +0100 - - packages: add READMEs - -commit 80eeaa836bbaeaa97225a0304a736affbb0d5891 -Author: Patrik Oldsberg -Date: Wed Mar 25 12:40:14 2020 +0100 - - workflows/frontend: split yarn tasks into separate steps (#383) - -commit 59c1cba6b971822479d43086c2caa618fd70fa58 -Author: Patrik Oldsberg -Date: Wed Mar 25 12:11:17 2020 +0100 - - docs: added npm publishing docs - -commit 7c7cf63b732f9b7ec1816846926c920772baa110 -Merge: 37de8bccf5 40c2d53365 -Author: Stefan Ålund -Date: Wed Mar 25 11:51:58 2020 +0100 - - Merge pull request #379 from alaiacano/master - - Add deploy instructions for Heroku - -commit ebe2205ec65003d4898a328873672bf3ea8a7315 -Merge: 3dd1611180 37de8bccf5 -Author: Patrik Oldsberg -Date: Wed Mar 25 11:21:12 2020 +0100 - - Merge branch 'master' into rugvip/publish - -commit 3dd16111806f53a1d201230b1b1c4d63de3379c9 -Author: Patrik Oldsberg -Date: Wed Mar 25 11:16:18 2020 +0100 - - workflows/master: split yarn tasks into separate steps - -commit 5012ce53353e1ff43ad8260b1590f07b3835c095 -Author: Patrik Oldsberg -Date: Wed Mar 25 11:09:53 2020 +0100 - - github/workflows: update yarn cache step names - -commit 37de8bccf597da2edafeee6a15fcba626f796c9f -Merge: f9a47d9a0a 123e5f80a8 -Author: Patrik Oldsberg -Date: Wed Mar 25 09:00:50 2020 +0100 - - Merge pull request #380 from spotify/rugvip/story - - package: update storybook command and remove build command - -commit 2496a326c0f790bfff12b6ee6bc611ef39d7e2f4 -Author: Muhammad Rivki -Date: Wed Mar 25 13:17:32 2020 +0700 - - ci: update token and build command - -commit 123e5f80a8618e6df1ae0a5f99482761eb05df40 -Author: Patrik Oldsberg -Date: Wed Mar 25 01:24:49 2020 +0100 - - package: update storybook command and remove build command - -commit 40c2d53365b16d3a638854494b6d09b51e1b5741 -Author: Patrik Oldsberg -Date: Sun Mar 22 16:08:45 2020 +0100 - - cli: exclude templates dir from linting - -commit ae61369fe18c2c78147836042751cb0e56f6259b -Author: Patrik Oldsberg -Date: Tue Mar 24 22:55:33 2020 +0100 - - package: added root release command for creating a version bump commit - -commit 9b8d15606e287a6cccf72163e72ee22a8b3f1653 -Author: Patrik Oldsberg -Date: Tue Mar 24 22:29:47 2020 +0100 - - packages: make plugins private for now - -commit 81ca63fd403d531f6b48067711721c9973b17f59 -Author: Patrik Oldsberg -Date: Tue Mar 24 22:04:48 2020 +0100 - - workflows: add master build with publish - -commit 8047b853ffa2e27f2dc55d6f00dba2236ef494e8 -Author: Muhammad Rivki -Date: Wed Mar 25 01:59:12 2020 +0700 - - fix: update script and ci config - -commit 1a117b0473199e98fc3b316d27774fc9cc9c5f34 -Merge: 6686ca39c5 f9a47d9a0a -Author: Muhammad Rivki -Date: Wed Mar 25 01:52:20 2020 +0700 - - Merge branch 'master' of github.com:mikqi/backstage into ci/deploy-storybook - -commit 6686ca39c5cda4070ef0ea3fe0807eb8823ce522 -Author: Muhammad Rivki -Date: Wed Mar 25 01:43:47 2020 +0700 - - ci: add filter trigger only when package/core change - -commit f9a47d9a0af62aa29673ca14b1d9fd7e6119afaa -Author: Mateus Marquezini -Date: Tue Mar 24 09:38:06 2020 -0300 - - Build and test only changed packages (#352) - - * #285 build and test only changed packages - - * changed since flag param - - * fix build cause --since lerna flag - - * fix build cause --since lerna flag - - * removed checkout option - - * fix build cause --since lerna flag - - * fix build cause --since lerna flag - - * fix build in progress - - * fix build in progress - - * removed --since flag for build executions - - * removed --since flag for build executions - - * changed action checkout step - - * added new ref to the action checkout - - * removed ref prop from the action checkout. Added new step to fetch branches to compare when using lerna --since - - * changed --since param value - - * added --since flag to the build and renamed the fetch step - - * removed --since flag from build. Added new config to the checkout step workflow - - * removed --since flag from yarn build. Added new config to the checkout step workflow - - * removed --since flag from yarn build. Added new step to checkout branch master - - * Added new step to checkout branch master - -commit 250277a861dcd2d33977567c836384fdb676f8e4 -Author: Patrik Oldsberg -Date: Tue Mar 24 12:53:42 2020 +0100 - - packages: mark core and cli as public - -commit d1f49469c09fe3fb6e7292830b06075633af819e -Merge: c5dd7270a6 4852485f9a -Author: Patrik Oldsberg -Date: Tue Mar 24 11:14:07 2020 +0100 - - Merge pull request #371 from spotify/rugvip/books - - package/core: move storybook to separate private and nohoist package - -commit c5dd7270a630b60e5aec9c77f3bb0159832ed437 -Merge: fc55a29140 6b8f0d3961 -Author: Marcus Eide -Date: Tue Mar 24 09:16:11 2020 +0100 - - Merge pull request #376 from spotify/eide/faq-repo-managers - - Add FAQ about repo managers - -commit 6b8f0d3961d0c86447996726271ad91346f261dd -Author: Marcus Eide -Date: Tue Mar 24 09:06:42 2020 +0100 - - Review comment - -commit f629c288ee81d9e0a195497d51598e7a3febe71d -Author: Marcus Eide -Date: Tue Mar 24 08:51:17 2020 +0100 - - Add faq about repo managers - -commit 4852485f9a16d02c19f5970561d8d567048c288b -Author: Patrik Oldsberg -Date: Mon Mar 23 16:58:16 2020 +0100 - - package/core: move storybook to separate private and nohoist package - -commit fc55a29140332d12fd59fea449cacebeea5b3482 -Merge: 459a05654e 1d3a8c110c -Author: Fredrik Adelöw -Date: Mon Mar 23 15:05:00 2020 +0100 - - Merge pull request #361 from spotify/freben/pluginact - - Fix act() warnings on newly created plugin test run - -commit 459a05654ec54b854975f6211f806bde988c1558 -Merge: 58b2b97cfa d154669e0c -Author: Fredrik Adelöw -Date: Mon Mar 23 14:53:56 2020 +0100 - - Merge pull request #369 from spotify/freben/engine - - Require node 12 - -commit d154669e0caba095a696f04d039c50d808bd9374 -Author: Fredrik Adelöw -Date: Mon Mar 23 14:44:23 2020 +0100 - - Require node 12 - -commit 9276d42e698b495f0b89d4f92fbdb8575d31e88b -Author: Muhammad Rivki -Date: Mon Mar 23 20:43:36 2020 +0700 - - fix: remove unused conditional - -commit 184ad42160c927265f6f949d0fb1e9aa4bfb795a -Author: Muhammad Rivki -Date: Mon Mar 23 20:42:34 2020 +0700 - - fix: equivalent - -commit 2a3b7a0a53060ffafb26b5f5dcc7f507b81949ce -Author: Muhammad Rivki -Date: Mon Mar 23 20:41:19 2020 +0700 - - fix: typo - -commit 4083680e8c61e924aa178e80859606322caeb52b -Author: Muhammad Rivki -Date: Mon Mar 23 20:35:10 2020 +0700 - - ci: add new jobs for deploy storybook - -commit 1d3a8c110cf30a8630e35c5973abca00c9b49180 -Author: Fredrik Adelöw -Date: Mon Mar 23 11:53:42 2020 +0100 - - Better waiting - -commit 9d977ccb9c3e8cd4a7ccc55dc4b494a17e572828 -Author: Fredrik Adelöw -Date: Mon Mar 23 08:47:12 2020 +0100 - - Fix act() warnings on newly created plugin test run - -commit 58b2b97cfa830a4590dc0510bc21300b1a9ba718 -Merge: e1a7f0fb29 4f13f2c778 -Author: Patrik Oldsberg -Date: Mon Mar 23 10:00:12 2020 +0100 - - Merge pull request #326 from spotify/rugvip/errors - - Add initial version of core error API with small showcase in welcome plugin and app - -commit 4f13f2c7788b25e17603219fa4d58a3cd0dabbc9 -Author: Patrik Oldsberg -Date: Mon Mar 23 09:40:19 2020 +0100 - - core/apis/errors: rename to error and don't export Error type - -commit 392fc2a47fa5a9628f61ca32ed81dd2e0f42fb5d -Author: Patrik Oldsberg -Date: Thu Mar 19 18:21:42 2020 +0100 - - app/components/ErrorDisplay: added some TODOs - -commit bdaa6031d3f7f5c8ec0dd93252529b8dc3e3660b -Author: Patrik Oldsberg -Date: Thu Mar 19 18:16:47 2020 +0100 - - app: more elaborate error display - -commit a9aede10fcf5251320479491c90f94d2b9fea05e -Author: Patrik Oldsberg -Date: Thu Mar 19 15:33:23 2020 +0100 - - plugins/welcome: add error button that shows an example of consuming the error api - -commit 5ad9dfbcd474b7b538b21677ff1fff07c3741178 -Author: Patrik Oldsberg -Date: Thu Mar 19 15:33:45 2020 +0100 - - app: add initial errorApi implmentation - -commit 9b7dcfffbe78f4ecc28f50301567004b973d1530 -Author: Patrik Oldsberg -Date: Thu Mar 19 15:24:10 2020 +0100 - - core,app: add a method for registering APIs - -commit 4e584c9c71d6f153ce854a6c2b43d01cc8815666 -Author: Patrik Oldsberg -Date: Thu Mar 19 15:12:50 2020 +0100 - - core/apis/ApiRegistry: narrow down types of implementations - -commit 0372c641254f2e2cc589d92006b8051985157ff2 -Author: Patrik Oldsberg -Date: Thu Mar 19 13:44:17 2020 +0100 - - core: added errors api definition in new definitions folder - -commit ec02d83f40b3156c18894464c3502edc8fb0ee28 -Author: Patrik Oldsberg -Date: Thu Mar 19 14:31:58 2020 +0100 - - core/apis/ApiRef: use domain dot notation - -commit e1a7f0fb2930cd159293006e99747ee6f4e42650 -Merge: 8b76868c26 8ace44135d -Author: Patrik Oldsberg -Date: Mon Mar 23 09:43:36 2020 +0100 - - Merge pull request #362 from spotify/rugvip/jsprops - - packages/core: do not require prop types for js - -commit 8ace44135d524d58d5b5652f3c983efc7a1d112e -Author: Patrik Oldsberg -Date: Mon Mar 23 09:35:39 2020 +0100 - - packages/core: do not require prop types for js - -commit 8b76868c26f0d01c11f348f4cb87d42813c5e8eb -Merge: fd40fbdf4b 4f959b94ac -Author: Patrik Oldsberg -Date: Mon Mar 23 09:15:47 2020 +0100 - - Merge pull request #359 from spotify/rugvip/windows - - github/workflows/cli: run on windows as well - -commit fd40fbdf4ba1d1fccdfe00563c7cd42fff316f3e -Merge: 577503b0c3 5d3974e869 -Author: Patrik Oldsberg -Date: Mon Mar 23 08:59:04 2020 +0100 - - Merge pull request #355 from spotify/rugvip/cache - - github/workflows: cache node_modules - -commit 577503b0c391d43000bb84b7f7c5b3dc9f6d13ec -Merge: 263199da55 512e5cb54d -Author: Patrik Oldsberg -Date: Mon Mar 23 08:57:24 2020 +0100 - - Merge pull request #337 from spotify/rugvip/prop-types - - cli: don't enforce prop-types for plugins - -commit 263199da55e714c985e9c8f8e64a4fd9539b095a -Merge: 9a042e4b03 231c991fe0 -Author: Fredrik Adelöw -Date: Mon Mar 23 08:52:15 2020 +0100 - - Merge pull request #340 from spotify/freben/codeowners - - [cli] Add CODEOWNERS support to create-plugin - -commit 9a042e4b03d9fc915f4d2b50a7dc7fa594640d2d -Merge: 958c574afa 7b22d17838 -Author: Stefan Ålund -Date: Mon Mar 23 08:23:42 2020 +0100 - - Merge pull request #354 from majd-asab/feature/add-github-auth - - added login page with github authentication option - -commit 958c574afa9cee293b0f950bb9a7848a9ab5ae2b -Merge: 143227652c fd4b1c8e36 -Author: Stefan Ålund -Date: Mon Mar 23 08:06:36 2020 +0100 - - Merge pull request #350 from mikqi/feat/storybook-integration - - Storybook Integration - -commit eb8d2e55b979ad8f42c98e48c953f43b9bfe89bc -Merge: 5fbc348f34 143227652c -Author: Jose Balanza Martinez -Date: Sun Mar 22 21:44:28 2020 -0600 - - Merge branch 'master' of https://github.com/spotify/backstage into new_branch - - X - -commit e3843a90ced50b504e43bdc73c2ee2dca28e0d8f -Author: Vern Burton -Date: Sun Mar 22 21:28:58 2020 -0500 - - Creating docker-compose.yml with nginx config via a new site. - -commit fd4b1c8e366e2a402444d0bae9c7599b76b280f6 -Author: Muhammad Rivki -Date: Mon Mar 23 08:16:00 2020 +0700 - - fix: auto generated d.ts files when build storybook - -commit e29f55088e2f1343663c41a920346ed4ef3d1da5 -Author: Muhammad Rivki -Date: Mon Mar 23 08:14:42 2020 +0700 - - chore: add build storybook script at root package - -commit fbc786b126b57457221c115ad6b2922e4a01ed6e -Merge: 68134404a6 143227652c -Author: Muhammad Rivki -Date: Mon Mar 23 07:58:56 2020 +0700 - - Merge branch 'master' of github.com:mikqi/backstage into feat/storybook-integration - -commit 7b22d178384e210d6a2f5df97fee9391632170ad -Author: Majd -Date: Sun Mar 22 14:56:52 2020 -0400 - - added login page with github authentication option - -commit 4f959b94ac738f1c8c0838ea41f0e5dcbcb8265f -Author: Patrik Oldsberg -Date: Mon Mar 23 01:31:17 2020 +0100 - - github/workflows/cli: run on windows as well - -commit 143227652c06c4c1d56b5a43246083547fcfc511 -Merge: 61f2fce33b daa891cb2e -Author: Patrik Oldsberg -Date: Mon Mar 23 00:19:23 2020 +0100 - - Merge pull request #356 from spotify/rugvip/cliflow - - github/workflows: move cli e2e test to separate workflow, run on windows as well - -commit daa891cb2ee6c3350ad26cc2f31b06edc1d83104 -Author: Patrik Oldsberg -Date: Sun Mar 22 21:21:09 2020 +0100 - - github/workflows: move cli e2e test to separate workflow, prepare for running on windows as well - -commit 61f2fce33b0a3fcea013b432c8a4bf53322699a0 -Merge: a20d43255f 24a4a74f23 -Author: Stefan Ålund -Date: Sun Mar 22 22:18:50 2020 +0100 - - Merge pull request #353 from AndreasAugustin/feat/editorconfig - - #332 add .editorconfig - -commit a20d43255f200ab52ff104164dbc5cf024a5d54d -Merge: 31e11b0b46 3195e2f2c4 -Author: Patrik Oldsberg -Date: Sun Mar 22 22:00:57 2020 +0100 - - Merge pull request #357 from spotify/rugvip/copyright - - eslint: move copyright template to separate file - -commit 3195e2f2c440f045544e672190797eda4db53c4d -Author: Patrik Oldsberg -Date: Sun Mar 22 21:52:06 2020 +0100 - - eslint: move copyright template to separate file - -commit 231c991fe064e836a1459e3991799028e43a5165 -Author: Fredrik Adelöw -Date: Sun Mar 22 20:59:53 2020 +0100 - - Address review comments - -commit 31e11b0b46e4adcdf1b4a043822e9cb304fb0cc2 -Merge: 39dc09fdd7 6923c2904e -Author: Fredrik Adelöw -Date: Sun Mar 22 21:29:18 2020 +0100 - - Merge pull request #322 from spotify/freben/yarnlock - - Make sure that minimist gets bumped past the vulnerable version - -commit 5d3974e8696850f12589cc06a18440130c77bb80 -Author: Patrik Oldsberg -Date: Sun Mar 22 21:17:55 2020 +0100 - - github/workflows: cache node_modules - -commit 6923c2904ec112d516e9d79860c8899f056cde18 -Author: Fredrik Adelöw -Date: Thu Mar 19 13:33:55 2020 +0100 - - Make sure that minimist gets bumped past the vulnerable version - -commit a14584b485ab046c3c348bf7483dfeae422cb6b1 -Author: Fredrik Adelöw -Date: Fri Mar 20 13:19:24 2020 +0100 - - [cli] Add CODEOWNERS support to create-plugin - -commit 24a4a74f23e890d395840b6d80e0d072e7c275df -Author: AndreasAugustin -Date: Sun Mar 22 19:40:42 2020 +0100 - - #332 add *.tsx, *.jsx, *.html to the .editorconfig - -commit fc5aa5dc48c00e7d121ecaa844beea42823a4e24 -Author: AndreasAugustin -Date: Sun Mar 22 19:23:06 2020 +0100 - - #332 add .editorconfig - - The coniguration is set like the current file types have - -commit 39dc09fdd79519bff86203b1e53ae8b76ee50449 -Merge: 9528bed0b7 9955e9cea6 -Author: Patrik Oldsberg -Date: Sun Mar 22 16:39:39 2020 +0100 - - Merge pull request #351 from spotify/rugvip/ignore - - cli: exclude templates dir from linting - -commit 9955e9cea6d67bd5170fc935a9f346fa18ac4e9b -Author: Patrik Oldsberg -Date: Sun Mar 22 16:08:45 2020 +0100 - - cli: exclude templates dir from linting - -commit 68134404a639e59b6cb9c2776bebbc2aa98b8e06 -Author: Muhammad Rivki -Date: Sun Mar 22 14:09:54 2020 +0700 - - fix: mismatch package version - -commit abe9aab7f95b779dacfeba6ee96ef69c7afca177 -Author: Adam Laiacano -Date: Sat Mar 21 20:43:55 2020 -0400 - - add heroku deployment steps - -commit 9528bed0b72765e177fcbd1844a518f98e0bca6b -Author: Vern Burton -Date: Sat Mar 21 16:55:10 2020 -0500 - - adding issue templates for feature/bug (#329) - -commit 044fad2fbfc8da071b55bd26d5a9bc0a6b290729 -Author: Muhammad Rivki -Date: Sat Mar 21 21:59:25 2020 +0700 - - chore: add run storybook script at root folder - -commit 4609c8f4e008bcf0d2e61512032fccf9a26c6847 -Author: Muhammad Rivki -Date: Sat Mar 21 21:55:31 2020 +0700 - - feat: integration with storybook for @core package - -commit b6c79ab4b5dfdd2f52215a55002b1dd9f8b382ca -Merge: 6d87e3ac3c 5c16d1d937 -Author: Patrik Oldsberg -Date: Sat Mar 21 13:15:34 2020 +0100 - - Merge pull request #349 from spotify/rugvip/lint - - workflows/frontend: add missing lint check - -commit 5c16d1d937f3f28bc53c630b981d30a538b060e6 -Author: Patrik Oldsberg -Date: Sat Mar 21 10:59:23 2020 +0100 - - workflows/frontend: add missing lint check - -commit 6d87e3ac3c5d92b052920726a12728f3947a5578 -Merge: 0ce1cdf21b a6a757c9fe -Author: Patrik Oldsberg -Date: Fri Mar 20 20:51:43 2020 +0100 - - Merge pull request #344 from mateusmarquezini/feature/312-plugin-test-and-list - - plugin test and lint should be part of cli e2e test - -commit a6a757c9fe64c06031a5c0dbb2527299be2d1345 -Author: Mateus Marquezini -Date: Fri Mar 20 14:49:55 2020 -0300 - - added path to run lint and tests inside an specific folder - -commit 32399cd7b69a17a062d726cd985eaa7fa0c3406e -Author: Mateus Marquezini -Date: Fri Mar 20 14:11:13 2020 -0300 - - added path to run lint and tests inside an specific folder - -commit e0127c79a6d2f2caae0f6289bb1809b2e1f78a39 -Author: Mateus Marquezini -Date: Fri Mar 20 14:04:21 2020 -0300 - - added path to run lint and tests inside an specific folder - -commit a8038bac0842a3a1acd8c9b972217d74cb810740 -Author: Mateus Marquezini -Date: Fri Mar 20 13:51:51 2020 -0300 - - added path to run lint and tests inside an specific folder - -commit c25691d0c05aa6e91bf3a45bfad25dae534b0dbf -Author: Mateus Marquezini -Date: Fri Mar 20 13:36:46 2020 -0300 - - reverted changes - -commit d60e7dc068f3e4b61d3a11fded7a3431596caa04 -Author: Mateus Marquezini -Date: Fri Mar 20 13:33:19 2020 -0300 - - added path to run lint and tests inside an specific folder - -commit 293038a0120e7fa7fe0f2cce7e69e1bb7cd02e2d -Author: Mateus Marquezini -Date: Fri Mar 20 13:29:23 2020 -0300 - - added path to run lint and tests inside an specific folder - -commit 6dc109ab1d90a4a02c1bd12fd796ba76b1cdb47f -Author: Mateus Marquezini -Date: Fri Mar 20 13:26:26 2020 -0300 - - added path to run lint and tests inside an specific folder - -commit 0ce1cdf21b1f34bc787e08d0fedec722c815b077 -Merge: db47b005c4 3d27f41366 -Author: Stefan Ålund -Date: Fri Mar 20 14:40:00 2020 +0100 - - Merge pull request #338 from spotify/stefanalund-patch-1 - - Add emojis to Roadmap in README - -commit 66d27128d0ca2d6aed0851ccbf22871c066bca91 -Merge: d958b1d8d2 db47b005c4 -Author: Mateus Marquezini -Date: Fri Mar 20 10:35:18 2020 -0300 - - Merge branch 'master' into feature/312-plugin-test-and-list - -commit d958b1d8d2538fa9d3eb8df2b322bf2088a6cc28 -Author: Mateus Marquezini -Date: Fri Mar 20 10:01:58 2020 -0300 - - fixed theme provider in a plugin test - -commit 3d27f41366bfff1667608d6697123d38b92bda78 -Author: Stefan Ålund -Date: Fri Mar 20 13:00:29 2020 +0100 - - Add emojis to Roadmap in README - -commit 512e5cb54dc0d562f3dae4e91ecfa96e37b69ef3 -Author: Patrik Oldsberg -Date: Fri Mar 20 12:13:58 2020 +0100 - - cli: don't enforce prop-types for plugins - -commit db47b005c4ad3780a6b009b90d851fc3f85af614 -Merge: e32bec77e8 714c4df54a -Author: Patrik Oldsberg -Date: Fri Mar 20 12:21:25 2020 +0100 - - Merge pull request #336 from spotify/rugvip/headliner - - move headline.png to docs/ - -commit 714c4df54a4ed82daaffa08f8c04d78c0fc304cf -Author: Patrik Oldsberg -Date: Fri Mar 20 12:12:34 2020 +0100 - - move headline.png to docs/ - -commit e32bec77e84e64a6819877e469727cf9ffd73958 -Merge: 53ee8e31aa 065dbc3a3e -Author: Stefan Ålund -Date: Fri Mar 20 12:04:14 2020 +0100 - - Merge pull request #333 from spotify/alund/head - - Update header in README - -commit 065dbc3a3e4dbabbe72614aed27c4b648f990725 -Merge: 8a0b6b1fb8 53ee8e31aa -Author: Stefan Ålund -Date: Fri Mar 20 11:57:08 2020 +0100 - - Merge branch 'master' into alund/head - -commit 53ee8e31aa341c1f951ad58ad901249bcce81cc3 -Merge: 55d22c1f36 30aece178d -Author: Stefan Ålund -Date: Fri Mar 20 11:55:58 2020 +0100 - - Merge pull request #331 from spotify/stefanalund-patch-1 - - Added Prettier shield to README - -commit 8a0b6b1fb8cc283152e6448aca026a3fe23b1b3b -Author: Stefan Ålund -Date: Fri Mar 20 10:34:40 2020 +0100 - - Update header in README - -commit 30aece178d1c594d7e467bff14d36c3ad4622711 -Author: Stefan Ålund -Date: Fri Mar 20 08:09:30 2020 +0100 - - Added Prettier shield - -commit 55d22c1f36629030b441821ce14c802e82bee5e4 -Author: Jose Balanza Martinez <62359443+braulio-balanza@users.noreply.github.com> -Date: Thu Mar 19 15:01:50 2020 -0500 - - Updated purpleBlue in PageThemeProvider (#328) - -commit 5fbc348f344aaba16f55a3f5ce830c12b55d1181 -Author: Jose Balanza Martinez -Date: Thu Mar 19 13:45:45 2020 -0500 - - Updated purpleBlue in PageThemeProvider - -commit 07f61e4c2eb8766661039c8ad4af98c5cc81d7b3 -Author: Mateus Marquezini -Date: Thu Mar 19 14:20:43 2020 -0300 - - added yarn lint and test after plugin creation. Fixed some mirror things related with eslint errors - -commit eca2fa04e92bdab83bae2ae5ecc3167fcd3713ff -Merge: bccf62ee52 29ce113096 -Author: Fredrik Adelöw -Date: Thu Mar 19 16:16:23 2020 +0100 - - Merge pull request #324 from spotify/freben/faq - - Add FAQ entry for where to develop plugins - -commit 29ce113096b7c549826562afa8a787696ddff9b7 -Author: Fredrik Adelöw -Date: Thu Mar 19 15:30:22 2020 +0100 - - Add FAQ entry for where to develop plugins - -commit bccf62ee526d69ed1dbdd8454a53edc631fbbaae -Merge: f60c5e417a 31655018c8 -Author: Patrik Oldsberg -Date: Thu Mar 19 14:04:42 2020 +0100 - - Merge pull request #320 from spotify/rugvip/app-build - - cli: add app:build app:serve and use in app - -commit f60c5e417a6a67f081e187ef3d74486521f50abe -Merge: feaf9a9b43 bd801756eb -Author: Patrik Oldsberg -Date: Thu Mar 19 13:02:16 2020 +0100 - - Merge pull request #319 from spotify/rugvip/clidf - - packages: use cli to test and lint core and cli - -commit feaf9a9b43f06b9c5eb7ce63229d5c5ef58c8f23 -Merge: dc0cb6252f 191d9236da -Author: Patrik Oldsberg -Date: Thu Mar 19 13:02:00 2020 +0100 - - Merge pull request #317 from spotify/rugvip/types - - plugins: add testing-library types - -commit 31655018c80f1dffc0227c17575b98f906b80220 -Author: Patrik Oldsberg -Date: Thu Mar 19 12:28:37 2020 +0100 - - app: use app:serve and remove react-scripts dependency - -commit f0bcd22733f12d8ecde1bc77f970141a454a9dbb -Author: Patrik Oldsberg -Date: Thu Mar 19 12:28:16 2020 +0100 - - cli: add app:serve - -commit c57fd17102fd74641d5e418728a3ba27c6826317 -Author: Patrik Oldsberg -Date: Thu Mar 19 11:58:41 2020 +0100 - - cli: add app:build and use in app - -commit bd801756eb62803dd705aebf6deba14d196cce2a -Author: Patrik Oldsberg -Date: Thu Mar 19 12:08:09 2020 +0100 - - cli: support ts jest config and make test setup module optional - -commit 52f56ab9b0ac4912edd0516aa5317c10250bc96a -Author: Patrik Oldsberg -Date: Thu Mar 19 11:28:07 2020 +0100 - - packages: use cli to test and lint core and cli - -commit 191d9236dac714b1148252f8c4fcad8566df9e12 -Author: Patrik Oldsberg -Date: Thu Mar 19 11:06:11 2020 +0100 - - plugins: add testing-library types - -commit dc0cb6252f950ee3e64a35352d5766d8fc648655 -Merge: b0fbbeb3a3 8133f00556 -Author: Stefan Ålund -Date: Thu Mar 19 08:22:45 2020 +0100 - - Merge pull request #314 from tarcinil/feature/281/adding-faq-to-readme - - adding FAQ to readme - -commit 8133f005563cd143d4a822c09d24da6b640be4b6 -Author: Vern Burton -Date: Wed Mar 18 18:40:36 2020 -0500 - - adding FAQ to readme - -commit b0fbbeb3a3054f38b30e456d94d7c73cbf281971 -Merge: d87c80743e 7ccd7cace8 -Author: Niklas Ek -Date: Wed Mar 18 22:28:36 2020 +0100 - - Merge pull request #313 from spotify/nikek/def-plugin-test - - Add testing lib jest dom types, fixes #311 - -commit 7ccd7cace86a05bdab8b926a4251e2d159a2893c -Author: nikek -Date: Wed Mar 18 22:18:28 2020 +0100 - - Tweak according to prettier - -commit 1db34ba2a3fcdac6b4a8708b747b0bcdf41c2816 -Author: nikek -Date: Wed Mar 18 21:35:38 2020 +0100 - - add testing lib jest dom types, fixes #311 - -commit d87c80743e8506afdff2c95b5cb9d857a03e3fe8 -Merge: 6bcdfebfaa abc984fa25 -Author: Patrik Oldsberg -Date: Wed Mar 18 21:13:57 2020 +0100 - - Merge pull request #310 from spotify/rugvip/merge - - cli: unify test and lint commands - -commit abc984fa251ba0fa77370dbfc29a486dd2d00def -Author: Patrik Oldsberg -Date: Wed Mar 18 17:44:48 2020 +0100 - - plugins: removed unnecessary jest config and move setup to src/setupTests.ts - -commit 89f39a06e1f33b344ca36dba6424f84210d1283d -Author: Patrik Oldsberg -Date: Wed Mar 18 17:42:40 2020 +0100 - - cli: unify test and lint commands - -commit 6bcdfebfaa8b486ec0daaea64aa441a63c582501 -Merge: 697ac5923f 8637518f3c -Author: Patrik Oldsberg -Date: Wed Mar 18 17:59:34 2020 +0100 - - Merge pull request #309 from spotify/rugvip/cli-test - - cli: added app:test command - -commit 8637518f3cf24e42c7d103a42f114d51ae7dcf7d -Author: Patrik Oldsberg -Date: Wed Mar 18 16:54:22 2020 +0100 - - app: use cli app:test + copyright header - -commit 4fb95dc3f13178f32c99f6168b0ee9073d2858b6 -Author: Patrik Oldsberg -Date: Wed Mar 18 16:54:10 2020 +0100 - - cli: added app:test command - -commit 697ac5923f5ee411c123b87871fa47f884c3a139 -Merge: ee34b77b35 d83267089c -Author: Patrik Oldsberg -Date: Wed Mar 18 17:37:47 2020 +0100 - - Merge pull request #308 from spotify/rugvip/app-lint - - cli: add and use app:lint + include default eslint config in cli - -commit d83267089c6197eb2513b819fe667fa3efaf9be5 -Author: Patrik Oldsberg -Date: Wed Mar 18 17:31:17 2020 +0100 - - app: restored fixup'd comment line in setupTests - -commit 0d9fd6d7ca6a6dc35f82e27a27d2a24528faa545 -Author: Patrik Oldsberg -Date: Wed Mar 18 17:11:57 2020 +0100 - - app: remove copyright header in plugins list to avoid create-plugin mangling - -commit cedd53ec8aef49e613b49f5062237f3909096390 -Author: Patrik Oldsberg -Date: Wed Mar 18 16:58:07 2020 +0100 - - app: fix lint issues - -commit 01771489d52b68f7cf3f174f4f987d310e45007c -Author: Patrik Oldsberg -Date: Wed Mar 18 16:27:08 2020 +0100 - - cli: limit to 0 warnings and use codeframe format for lint tasks - -commit a711dc21b2129a951f81be0548dc14d09f1c3502 -Author: Patrik Oldsberg -Date: Wed Mar 18 15:09:48 2020 +0100 - - cli: add and use app:lint + include default eslint config in cli - -commit ee34b77b3589d9c43e351a464f308a161f561f9a -Merge: d4f587fdbe 756e7e3212 -Author: Patrik Oldsberg -Date: Wed Mar 18 16:27:19 2020 +0100 - - Merge pull request #307 from spotify/rugvip/helper-fix - - cli: fix name not being defined in helper - -commit 756e7e3212dfa5d3b0843f41f5f8fc5f9de9a570 -Author: Patrik Oldsberg -Date: Wed Mar 18 16:10:48 2020 +0100 - - cli: fix name not being defined in helper - -commit d4f587fdbe17a663a875cd1eeff3f9204b8b3f59 -Merge: 034c9de53c 371084d30c -Author: Patrik Oldsberg -Date: Wed Mar 18 16:07:15 2020 +0100 - - Merge pull request #304 from spotify/rugvip/cli-helpers - - cli: add helpers for running child processes and error handling in commands - -commit 371084d30c559043679c6338ed5ca8a87a5106e4 -Author: Patrik Oldsberg -Date: Wed Mar 18 15:55:05 2020 +0100 - - cli: add helper to wait for child to exit + use to fix watch-deps - -commit 7035f8ed5278cd090ed9208303e0811951039f5f -Author: Patrik Oldsberg -Date: Wed Mar 18 15:54:16 2020 +0100 - - cli: removed unnecessary try-catch in plugin:serve - -commit a60bfc31d9be9ccb480c148827975331d94429cb -Author: Patrik Oldsberg -Date: Wed Mar 18 15:51:11 2020 +0100 - - script/cli-e2e-test: error out if child exits early - -commit 034c9de53cfa1cf3563ab1f92c2cc953126ccde8 -Merge: 2e49678731 72bbbfd243 -Author: Fredrik Adelöw -Date: Wed Mar 18 15:51:17 2020 +0100 - - Merge pull request #303 from spotify/frreben/pluginid - - Require plugin IDs to be valid - -commit 72bbbfd243b5a907b24ce35bdcbd51ff9af39024 -Author: Fredrik Adelöw -Date: Wed Mar 18 09:30:08 2020 +0100 - - Require plugin IDs to be valid - -commit 2e496787318bf166ce756c7c4d29afb43734ad70 -Merge: 4d7a93c351 740a6efdac -Author: Stefan Ålund -Date: Wed Mar 18 13:59:53 2020 +0100 - - Merge pull request #305 from spotify/stefanalund-patch-1 - - Add milestones and blog post to README - -commit 740a6efdac7827e65e5b9c0e7e77cce55d0add59 -Author: Stefan Ålund -Date: Wed Mar 18 13:04:21 2020 +0100 - - Add milestones and blog post to README - -commit 79d2ba5bc7f1734d4a448b5b3dc82a6315db66de -Author: Patrik Oldsberg -Date: Wed Mar 18 11:32:20 2020 +0100 - - cli: add helpers for running child processes and error handling in commands - -commit 4d7a93c3513ab99bdd2136e5fc51d7cbc5ed504c -Merge: c06606e802 9f38e9518b -Author: Patrik Oldsberg -Date: Wed Mar 18 09:51:00 2020 +0100 - - Merge pull request #279 from inductor/feature/docker - - Add Docker - -commit c06606e80280725169ac06b6eef16e5fbcaf32da -Merge: fd90d8af9a 020386fb0c -Author: Fredrik Adelöw -Date: Wed Mar 18 08:36:59 2020 +0100 - - Merge pull request #302 from tarcinil/feature/280/add-discord - - Add Discord Shield - -commit 020386fb0cd560ba2f35478de78ac12b52224de3 -Author: Vern Burton -Date: Tue Mar 17 19:21:55 2020 -0500 - - updating to serverid, and using non-expiring link - -commit 8983afa1bf46afe25ba90a98bd72bf929b8a5020 -Author: Vern Burton -Date: Tue Mar 17 18:57:51 2020 -0500 - - adding discord - -commit 9f38e9518b1c60f6f76e8d58af699f261d9e8b53 -Author: inductor -Date: Wed Mar 18 08:30:25 2020 +0900 - - fix image name - -commit fd90d8af9afd153b0f8a39f9286ec30dcf147d6a -Merge: e09bf890c2 3772c82beb -Author: Patrik Oldsberg -Date: Tue Mar 17 21:28:54 2020 +0100 - - Merge pull request #301 from spotify/rugvip/shell - - cli: use shell option to fix build issues on windows - -commit 3772c82bebd4b85affcbea31a6933ff97b6ff21b -Author: Patrik Oldsberg -Date: Tue Mar 17 20:40:48 2020 +0100 - - cli: use shell option to fix build issues on windows - -commit e09bf890c236ee2d0b26dd1e454ab5cbb782c8fd -Merge: 85f200e1e1 791c383db1 -Author: Patrik Oldsberg -Date: Tue Mar 17 16:58:23 2020 +0100 - - Merge pull request #299 from spotify/alund/faq - - Move and link to FAQ - -commit 2fc0f23a1d6e174f2193fce06aa66bc3190138fd -Author: inductor -Date: Tue Mar 17 23:36:42 2020 +0900 - - apply change to readme - -commit 9e81cf9031b2d58c30b04690895bc7a106837faa -Author: inductor -Date: Tue Mar 17 23:29:46 2020 +0900 - - work on nginx - -commit 791c383db1ebe0d404f7023288e6a2257271710d -Author: Stefan Ålund -Date: Tue Mar 17 14:55:39 2020 +0100 - - Move and link to FAQ - -commit 85f200e1e1d7296a84bfcf341b63955b3389373e -Merge: 8d1e98f2e1 8aca4ed9f6 -Author: Patrik Oldsberg -Date: Tue Mar 17 14:32:25 2020 +0100 - - Merge pull request #295 from spotify/Rugvip-patch-1 - - Create FAQ.md - -commit 8aca4ed9f64b27cac19fabffacb35c8e30e891f7 -Author: Patrik Oldsberg -Date: Tue Mar 17 12:21:37 2020 +0100 - - Update FAQ.md - -commit b840db3026e8d365c4e3162c54615788caa1512a -Author: Patrik Oldsberg -Date: Tue Mar 17 10:54:24 2020 +0100 - - Create FAQ.md - -commit 8d1e98f2e1f2a68e8a318181a2bd087dad8df2ad -Merge: 0cd6fcc329 086282a2f5 -Author: Fredrik Adelöw -Date: Tue Mar 17 09:41:24 2020 +0100 - - Merge pull request #277 from inductor/feature/use_gha_checkout_v2 - - Use GHA checkout v2 for faster fetch - -commit 94d98aa2cb500225682c66e1752dcd1fb930d099 -Author: inductor -Date: Tue Mar 17 12:51:47 2020 +0900 - - Add EXPOSE to speficy container port - -commit e3b0ec258224f36fdac6bb05847c7b261368222d -Author: inductor -Date: Tue Mar 17 12:50:58 2020 +0900 - - remove unnecessary alias - -commit e646487eb0aeeb36b4805c88481ff37e20194a9b -Author: inductor -Date: Tue Mar 17 12:49:05 2020 +0900 - - Add Docker section in README - -commit 439e9848482854f5d2eaa409c15e20dcc10c96e4 -Author: inductor -Date: Tue Mar 17 12:46:59 2020 +0900 - - Add docker environment - -commit 086282a2f5110a56814987966ed4c1cc7856e338 -Author: inductor -Date: Tue Mar 17 11:40:01 2020 +0900 - - Use GHA checkout v2 for faster fetch - -commit 0cd6fcc32995c7ca26e2ed326472f6681387ff6e -Merge: d3a8095ce9 47f97b9f12 -Author: Stefan Ålund -Date: Mon Mar 16 22:59:19 2020 +0100 - - Merge pull request #275 from mwufi/support-button-email - - display multiple emails - -commit d3a8095ce90f051185c6afe3a09b900b08355280 -Merge: b0b2df0aec ed706c7f90 -Author: Niklas -Date: Mon Mar 16 22:18:13 2020 +0100 - - Merge pull request #274 from evanwolf/patch-1 - - typo fixed - -commit 47f97b9f120459210f93b3545a2e2298488a3ef1 -Author: Zen Tang -Date: Mon Mar 16 14:33:44 2020 -0500 - - display multiple emails - -commit ed706c7f90f75b6e5375fc04356440c6433371fc -Author: Phil Wolff -Date: Mon Mar 16 12:15:56 2020 -0700 - - typo fixed - -commit b0b2df0aecf89c4e7eaa6167f802fc753f0fa53f -Merge: 2ff685efa9 1f2670990f -Author: Niklas -Date: Mon Mar 16 15:27:01 2020 +0100 - - Merge pull request #269 from spotify/nikek-patch-1 - - Rephrasing sentences about concepts - -commit 1f2670990f97cc1fe51d4b596e8d5ba471976d28 -Author: Niklas -Date: Mon Mar 16 15:10:35 2020 +0100 - - Rephrasing sentences about concepts - -commit 2ff685efa9574cd69c768f1a84b155ece08f76cc -Merge: dcb44a9c34 fe2d4423a6 -Author: Stefan Ålund -Date: Mon Mar 16 13:48:57 2020 +0100 - - Merge pull request #268 from spotify/alund/replace-head - - Update headline.png - -commit dcb44a9c34299580d8d108e3e0aaf741f8a4622a -Merge: cbf0c0511a 5e7334e415 -Author: Stefan Ålund -Date: Mon Mar 16 13:41:10 2020 +0100 - - Merge pull request #267 from spotify/contact-us-to-join - - Join us - -commit fe2d4423a6610307116432f1a8b44827295ceb34 -Author: Stefan Ålund -Date: Mon Mar 16 13:38:43 2020 +0100 - - Update headline.png - -commit 5e7334e415365374a4c6234f737d52ed95c3cc76 -Author: Jim Haughwout -Date: Mon Mar 16 13:31:26 2020 +0100 - - Join us - - Putting this on repo will attract developers (not recruiters). Putting it down by *Community* will attract those who like FOSS community stuff, again more devs and less agencies - -commit cbf0c0511a0e77bbd9df8a0dfc91c7eb30053482 -Merge: e56ab9726d b6b7e19754 -Author: Fredrik Adelöw -Date: Mon Mar 16 11:10:28 2020 +0100 - - Merge pull request #263 from spotify/freben/ts - - Some more TS weekend buffoonery - -commit e56ab9726d296acbc08e43e8a24251cad9233b46 -Author: Stefan Ålund -Date: Mon Mar 16 10:12:57 2020 +0100 - - yarn install in README - -commit b6b7e197543ce11a5d88c8bc9312aa6775899391 -Author: Fredrik Adelöw -Date: Mon Mar 16 09:20:09 2020 +0100 - - Some more TS weekend buffoonery - -commit 4dda4695fb72394a97c4a501de7a935afbe9527f -Merge: 2da3b853e6 a7b6e75f39 -Author: Stefan Ålund -Date: Mon Mar 16 09:24:01 2020 +0100 - - Merge pull request #262 from spotify/alund/docs - - Put getting started back in README - -commit a7b6e75f394fa69ff4c10c05038f5c8a4713d079 -Author: Stefan Ålund -Date: Mon Mar 16 09:05:07 2020 +0100 - - Use MUI List in welcome plugin - -commit 2db71be89157c1ca8437e4f0c45ae99d60928bfe -Author: Stefan Ålund -Date: Mon Mar 16 08:58:21 2020 +0100 - - Fix broken link - -commit 61768175020c61d6e99aa812d94b503da2c32363 -Author: Stefan Ålund -Date: Sun Mar 15 21:28:29 2020 +0100 - - Put getting started back in README - -commit 2da3b853e615ca9abc8606844e4e6829340dd01a -Merge: 416a2cda2b 947434e6a4 -Author: Stefan Ålund -Date: Sun Mar 15 08:52:51 2020 +0100 - - Merge pull request #259 from spotify/dependabot/npm_and_yarn/acorn-5.7.4 - - Bump acorn from 5.7.3 to 5.7.4 - -commit 947434e6a415d3350b72216bed602aaa45bc3c26 -Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> -Date: Sun Mar 15 07:43:36 2020 +0000 - - Bump acorn from 5.7.3 to 5.7.4 - - Bumps [acorn](https://github.com/acornjs/acorn) from 5.7.3 to 5.7.4. - - [Release notes](https://github.com/acornjs/acorn/releases) - - [Commits](https://github.com/acornjs/acorn/compare/5.7.3...5.7.4) - - Signed-off-by: dependabot[bot] - -commit 416a2cda2b923aaa71580284fbf8693c8abd3cde -Merge: 336295b671 85f5ca9441 -Author: Stefan Ålund -Date: Sat Mar 14 15:49:06 2020 +0100 - - Merge pull request #257 from spotify/nikek/docs - - Structure documentation in /docs - -commit 85f5ca94412ebb2728e50ecc8b0b301fe3180a50 -Author: nikek -Date: Fri Mar 13 18:51:54 2020 +0100 - - Structure documentation in /docs - -commit 336295b6712c3b5227fc07e8e9f7d0be51799938 -Merge: 321780a05f a35bef78cb -Author: Niklas -Date: Fri Mar 13 17:45:26 2020 +0100 - - Merge pull request #256 from spotify/stefanalund-patch-1 - - UI -> UX - -commit 321780a05f1fd452696bd023d2c53fd873aa381f -Merge: 386ca06943 64cdb6bbe1 -Author: Patrik Oldsberg -Date: Fri Mar 13 17:22:26 2020 +0100 - - Merge pull request #251 from spotify/rugvip/api-provider - - packages/core: added api provider - -commit a35bef78cbb810d72698f55a1dad2a7b281c0882 -Author: Stefan Ålund -Date: Fri Mar 13 17:01:03 2020 +0100 - - UI -> UX - -commit 386ca0694312f3eeaf64c6176959939985cb3211 -Merge: a3dcdd0b82 72dca3b1a5 -Author: Fredrik Adelöw -Date: Fri Mar 13 12:43:31 2020 +0100 - - Merge pull request #254 from spotify/freben/ts - - Just some utilities converted to ts - -commit 72dca3b1a50024a2d4c88a0a9e305484a3a284c6 -Author: Fredrik Adelöw -Date: Fri Mar 13 11:58:41 2020 +0100 - - Just some utilities converted to ts - -commit a3dcdd0b82548238431ee212395942c4de2f5838 -Merge: 8a39b44778 78321d2718 -Author: Raghunandan Balachandran -Date: Fri Mar 13 11:37:27 2020 +0100 - - Merge pull request #231 from spotify/soapraj/plugin-assets - - copy plugin assets to dist - -commit 8a39b44778d65c94bd5a72f0ea445e6681532d50 -Merge: 5f0ebea5c8 c1c3f17bc7 -Author: Fredrik Adelöw -Date: Fri Mar 13 11:30:53 2020 +0100 - - Merge pull request #247 from spotify/freben/morelint - - Remove some lint exceptions - -commit 5f0ebea5c8bc852a5471fb972eb3297537614095 -Merge: d7c511f63f b55921a55a -Author: Stefan Ålund -Date: Fri Mar 13 11:13:57 2020 +0100 - - Merge pull request #253 from spotify/alund/new-arch-img - - Show Phase 2 in overview pic - -commit d7c511f63fbf1c1fb79ac1acca7bf35ac7adffb9 -Merge: 6353be55f6 9e8c5bc588 -Author: Patrik Oldsberg -Date: Fri Mar 13 10:33:11 2020 +0100 - - Merge pull request #252 from spotify/rugvip/clean-theme - - core/layout/Page: removed unused theme fields - -commit b55921a55af53c5ccc77c8da97b9cc1a67597066 -Author: Stefan Ålund -Date: Fri Mar 13 10:29:42 2020 +0100 - - Show Phase 2 in overview pic - -commit 9e8c5bc5889d2de506ea41b5a465023e8b6a8667 -Author: Patrik Oldsberg -Date: Fri Mar 13 09:50:54 2020 +0100 - - core/layout/Page: removed unused theme fields - -commit 64cdb6bbe1e1d1b4281873b298e719633c0dfe36 -Author: Patrik Oldsberg -Date: Thu Mar 12 10:58:08 2020 +0100 - - packages/core: added api provider - -commit a15458b0af4b2007e223f0a586687195f96d9848 -Author: Patrik Oldsberg -Date: Fri Mar 13 09:52:00 2020 +0100 - - core: added logCollector test util - -commit 78321d27181e197a5eec7e7166b60793d8626afe -Author: Raghunandan -Date: Fri Mar 13 09:39:15 2020 +0100 - - move copy assets to build step - -commit c1c3f17bc77d27537dfa5cfb1ac45fdac7fd1b3f -Author: Fredrik Adelöw -Date: Fri Mar 13 08:43:41 2020 +0100 - - Touch stuff just to test workflow settings - -commit 6353be55f632e7e0ac6bd6cc2a5d2f292719e82e -Merge: 3220a490f7 cd4c8ce587 -Author: Fredrik Adelöw -Date: Fri Mar 13 08:41:53 2020 +0100 - - Merge pull request #246 from spotify/freben/on - - Build on all relevant PR events, not pushes - -commit 9cca522c43750e9c8c2ec15ee4c49c014d7de888 -Author: Fredrik Adelöw -Date: Fri Mar 13 08:39:49 2020 +0100 - - Fix progess test - -commit b65160dcf55b17dc00572587d4f6db1eace70697 -Author: Raghunandan -Date: Wed Mar 11 15:12:49 2020 +0100 - - switch order for plugin build script - -commit d4f4c6c978438013517831880eca98ea28c84c58 -Author: Raghunandan -Date: Wed Mar 11 15:11:50 2020 +0100 - - remove watch mode options for copyAssets command - -commit 13b8fe81f249129cd6e9e3823012c4af2fd8402f -Author: Raghunandan -Date: Wed Mar 11 15:09:37 2020 +0100 - - add module declaration for asset files - -commit 49ed390eb7d2e0322e250a3abc9520d5c46d39a5 -Author: Raghunandan -Date: Wed Mar 11 14:55:16 2020 +0100 - - add copy assets to cli - -commit 3220a490f7fa2a9b15eed7d6f3b6664fce85e464 -Merge: 3814ba0db7 be7513797b -Author: Stefan Ålund -Date: Thu Mar 12 20:28:47 2020 +0100 - - Merge pull request #248 from spotify/JimHaughwout-tweak-1 - - Minor market positioning tweaks - -commit be7513797b335aea1a591e06f64395696bdef81e -Author: Jim Haughwout -Date: Thu Mar 12 17:23:23 2020 +0100 - - Minor market positioning tweaks - - Some text that highlights the key benefits in a direct way - -commit e1565289b77006e1dd3d9c90a765b8431e8e233f -Author: Fredrik Adelöw -Date: Thu Mar 12 16:38:10 2020 +0100 - - Remove some lint exceptions - -commit cd4c8ce5872e609ab6a3499f3ea64883c8d3d060 -Author: Fredrik Adelöw -Date: Thu Mar 12 14:51:53 2020 +0100 - - Build on all relevant PR events, not pushes - -commit 3814ba0db7d872fc11c778e2ec234e5148afc812 -Merge: d0ef904db7 4c661095a3 -Author: Stefan Ålund -Date: Thu Mar 12 14:39:27 2020 +0100 - - Merge pull request #245 from spotify/stefanalund-patch-1 - - Link out to backstage.io from README - -commit 4c661095a327fe3163431b6ad7ef5c49e0ae194c -Author: Stefan Ålund -Date: Thu Mar 12 14:29:36 2020 +0100 - - Link out to backstage.io from README - -commit d0ef904db7b505c01fd4b670690ffb90dbc0e547 -Merge: 06edf00c18 37fd2ab827 -Author: Stefan Ålund -Date: Thu Mar 12 14:22:23 2020 +0100 - - Merge pull request #244 from spotify/alund/arch - - New architecture image - -commit 37fd2ab827961c447d515f7884cedae719bde384 -Author: Stefan Ålund -Date: Thu Mar 12 14:12:20 2020 +0100 - - Update backstage_overview.png - -commit 0a054d3779934ee3ccf232d5baf7fca6792c32ae -Author: Stefan Ålund -Date: Thu Mar 12 13:58:40 2020 +0100 - - New architecture image - -commit 06edf00c1888370cf9f652b512721f1b3d62a245 -Merge: 39938a7d59 509c3318b3 -Author: Fredrik Adelöw -Date: Thu Mar 12 14:03:48 2020 +0100 - - Merge pull request #243 from spotify/freben/build - - Remove incremental builds, since that breaks CI right now - -commit 509c3318b383a284d4470ff4986763ff5fc78696 -Author: Fredrik Adelöw -Date: Thu Mar 12 13:52:57 2020 +0100 - - Remove incremental builds, since that breaks CI right now - -commit 39938a7d594eb71a1643db543cc34a5db9f8ea0a -Merge: f0aa93056d 8b4dcd92a8 -Author: Marcus Eide -Date: Thu Mar 12 13:51:55 2020 +0100 - - Merge pull request #233 from spotify/eide/discord-links-readme - - Add information about our Discord server - -commit f0aa93056d651a4d25da7cd151729b2356a7b89f -Merge: 4bf779020c d8e6591d05 -Author: Stefan Ålund -Date: Thu Mar 12 13:51:44 2020 +0100 - - Merge pull request #239 from spotify/stefanalund-patch-1 - - Update roadmap section of README - -commit d8e6591d05271d9da81095658a5f3d8983244c60 -Author: Stefan Ålund -Date: Thu Mar 12 13:50:13 2020 +0100 - - Update README.md - -commit 4bf779020c10a508c78cccbeb3b08787725564cd -Merge: e98ae65383 1fec035351 -Author: Fredrik Adelöw -Date: Thu Mar 12 13:37:48 2020 +0100 - - Merge pull request #242 from spotify/freben/license-header - - Add license headers and eslint rules for them - -commit 8b4dcd92a89b3f35aa3f99f7a9829871eebe5840 -Merge: 4142bee9f1 e98ae65383 -Author: Marcus Eide -Date: Thu Mar 12 13:27:32 2020 +0100 - - Merge branch 'master' into eide/discord-links-readme - -commit 1fec035351b0c9f3f279e94fccae4dbdb2e4b528 -Author: Fredrik Adelöw -Date: Thu Mar 12 09:27:55 2020 +0100 - - Add license headers and eslint rules for them - -commit e98ae65383c4e2ef30983a857389fbc123b25953 -Merge: eab0512baf bb1bc34bd4 -Author: Fredrik Adelöw -Date: Thu Mar 12 13:04:45 2020 +0100 - - Merge pull request #241 from spotify/freben/testversion - - Fix version insertion tests in cli - -commit bb1bc34bd4b406c931522e06aa3caea840569ff3 -Author: Fredrik Adelöw -Date: Thu Mar 12 13:02:39 2020 +0100 - - Fix version insertion tests in cli - -commit 35c3fb2ea38c0a959183538c27fb1ca80e72868f -Author: Stefan Ålund -Date: Thu Mar 12 12:39:39 2020 +0100 - - Update roadmap section of README - -commit eab0512baf48e2c67a2ce74314748628b9110c9b -Merge: 8514bce73f 73517462f7 -Author: Patrik Oldsberg -Date: Thu Mar 12 12:08:04 2020 +0100 - - Merge pull request #238 from spotify/rugvip/create-version - - packages/cli: use current version when templating a plugin - -commit 73517462f7a2501064e4e81a7b6f3542acd2cf42 -Author: Patrik Oldsberg -Date: Thu Mar 12 11:23:49 2020 +0100 - - packages/cli: use current version when templating a plugin - -commit 8514bce73f90f7f06ed0f56e484bf2dde8e8c665 -Merge: e28922093f dbabf15df2 -Author: Stefan Ålund -Date: Thu Mar 12 11:17:10 2020 +0100 - - Merge pull request #237 from spotify/alund/roadmap - - Update roadmap section of README - -commit dbabf15df2ba3965ef68056f77a8711703bf0d51 -Author: Stefan Ålund -Date: Thu Mar 12 11:03:06 2020 +0100 - - Update headline.png - -commit 58b11932186c2ec89081a6aa6a2f46da59895f86 -Author: Stefan Ålund -Date: Thu Mar 12 10:56:14 2020 +0100 - - Update README.md - -commit a16d83faaeb37d72e39f8b8cce62bcf620a36518 -Author: Stefan Ålund -Date: Thu Mar 12 10:54:57 2020 +0100 - - Update roadmap section of README - -commit 4142bee9f1baab946e69e53b58c099616f341a93 -Merge: eefe6c435a 88ff324174 -Author: Marcus Eide -Date: Thu Mar 12 09:10:39 2020 +0100 - - Merge branch 'eide/discord-links-readme' of https://github.com/spotify/backstage into eide/discord-links-readme - -commit eefe6c435af20c6ee8e225f2d6544e556d7f4149 -Author: Marcus Eide -Date: Wed Mar 11 16:46:16 2020 +0100 - - Added information about our Discord server to Readme - -commit 88ff324174643f21d3f2260636692a3af9f008b9 -Author: Marcus Eide -Date: Wed Mar 11 16:46:16 2020 +0100 - - Added information about our Discord server to Readme - -commit e28922093fc74a7de33c612b54bcac735497933f -Merge: fb44ca38e8 17a9e71e96 -Author: Fredrik Adelöw -Date: Wed Mar 11 12:05:30 2020 +0100 - - Merge pull request #221 from spotify/freben/back-version - - Step back versions to 0.x to signal non-finished status - -commit fb44ca38e80f38a021a2264b6c09418d66259759 -Merge: 23d94c629d 360037f964 -Author: Marcus Eide -Date: Wed Mar 11 11:00:05 2020 +0100 - - Merge pull request #225 from spotify/eide/plugin-docs - - First commit of plugin documentation - -commit 360037f96496d2ab331306f43556b6f14a48c6b1 -Author: Marcus Eide -Date: Wed Mar 11 10:50:51 2020 +0100 - - Guidelines embryo - -commit 7732205bf73efd5e1ab67d5a54dae756de77bb23 -Author: Marcus Eide -Date: Wed Mar 11 10:40:10 2020 +0100 - - Review comments - -commit 17a9e71e96ef1df65826073e4e64681f622d0deb -Author: Fredrik Adelöw -Date: Tue Mar 10 11:20:10 2020 +0100 - - Step back versions to 0.x to signal non-finished status - -commit 23d94c629d4592a2ffff50379dbbcf8ed4831e56 -Merge: 4309513a91 c153a0fc96 -Author: Niklas -Date: Wed Mar 11 09:26:30 2020 +0100 - - Merge pull request #229 from spotify/nikek/welcome - - Add a welcome page - -commit c153a0fc96679332cd560715eeb8955066a22b52 -Author: nikek -Date: Wed Mar 11 08:15:35 2020 +0100 - - Tweak welcome page styling and text - -commit 8045713c9a94b093de5c2bd989d87344702ac0c1 -Author: nikek -Date: Tue Mar 10 18:49:57 2020 +0100 - - Add a welcome page - -commit 4309513a91bebd096d8fa9162bf824b995c18b78 -Merge: 22b4e274f4 0fb84519f2 -Author: Stefan Ålund -Date: Tue Mar 10 17:06:13 2020 +0100 - - Merge pull request #222 from spotify/stefanalund-patch-1 - - Add Roadmap to README - -commit 22b4e274f482f11b7411381ede9e89d5488f6379 -Merge: 7c4ec88dff 54214323c6 -Author: Patrik Oldsberg -Date: Tue Mar 10 16:48:28 2020 +0100 - - Merge pull request #227 from spotify/rugvip/nonteties - - packages/core: removed entity-related APIs - -commit 7c4ec88dff6b8c8574bd18379bcced8de6e660bb -Merge: ebee008e42 ebd7a4e42f -Author: Patrik Oldsberg -Date: Tue Mar 10 16:48:10 2020 +0100 - - Merge pull request #228 from spotify/rugvip/nojs - - packages/core: removed some unused javascript things - -commit 0fb84519f22f9b5b32916bb88dbe7cd11c49fac2 -Author: Stefan Ålund -Date: Tue Mar 10 16:46:23 2020 +0100 - - 4 years actually - -commit ebd7a4e42f77f9687bc81a026e8942c3f94a37d0 -Author: Patrik Oldsberg -Date: Tue Mar 10 16:04:36 2020 +0100 - - packages/core: removed some unused javascript things - -commit ebee008e42d4ca4054cc4d0b651c6b3b714a0f8a -Merge: b6cba11d77 a9fc86a440 -Author: Stefan Ålund -Date: Tue Mar 10 15:58:01 2020 +0100 - - Merge pull request #226 from spotify/rugvip/nodelts - - README: added note about requiring node 12 - -commit 54214323c60c6e1a8850df15ea1803248f6b14e7 -Author: Patrik Oldsberg -Date: Tue Mar 10 15:54:04 2020 +0100 - - packages/core: removed entity-related APIs - -commit a9fc86a440b53ead9a894790a25e095807bdae77 -Author: Patrik Oldsberg -Date: Tue Mar 10 15:45:41 2020 +0100 - - README: added note about requiring node 12 - -commit b6cba11d777a803200abea522d703e7ebb0c1d4c -Merge: 12f607c6f0 f39d5f7dca -Author: Patrik Oldsberg -Date: Tue Mar 10 15:37:01 2020 +0100 - - Merge pull request #223 from spotify/rugvip/e2e-cli-test - - added scripts dir with test for making sure serve and plugin scaffolding works - -commit 301f048ae4a87e92d3e9d9d5a07faf424c2d0afa -Author: Stefan Ålund -Date: Tue Mar 10 15:21:55 2020 +0100 - - More edits of goal - -commit 2864a8fb3d7f0996d000ddb566eba73c823e43da -Author: Marcus Eide -Date: Tue Mar 10 15:17:43 2020 +0100 - - First commit of plugin documentation - -commit d879b7e780c097fa1f96fe953a52b825bf15b4e2 -Author: Stefan Ålund -Date: Tue Mar 10 15:11:28 2020 +0100 - - Update README.md - -commit f014933e1a70abd3b793a2c3706a6cf913635f99 -Author: Stefan Ålund -Date: Tue Mar 10 15:03:04 2020 +0100 - - Update README.md - -commit 12f607c6f08d4433a5e0ce31ce7b0b3da808dc4f -Merge: 3d1d73bbda 246e5b70c7 -Author: Patrik Oldsberg -Date: Tue Mar 10 14:38:25 2020 +0100 - - Merge pull request #218 from spotify/patriko/cra - - app: try using create-react-app without hoisting - -commit f39d5f7dca337be5a6652a13dc741fd8185497d7 -Author: Patrik Oldsberg -Date: Tue Mar 10 13:38:02 2020 +0100 - - workflows: added command to run cli e2e tests - -commit 32508cafc0cbe33fcc14aa42ca55eacb0c6fec1d -Author: Stefan Ålund -Date: Tue Mar 10 13:52:03 2020 +0100 - - Updated based on review comments - -commit 9850aaeca7236161b2208967625d5581bbc2003e -Author: Patrik Oldsberg -Date: Tue Mar 10 13:37:13 2020 +0100 - - added scripts dir with test for making sure serve and plugin scaffolding works - -commit 142562636fd0907c4c4042b41ec0d2c849cd08d9 -Author: Stefan Ålund -Date: Tue Mar 10 11:30:05 2020 +0100 - - Update README.md - -commit e47c2bba2cb07bbd7dc12718a601484bfcd0ad36 -Author: Stefan Ålund -Date: Tue Mar 10 11:29:06 2020 +0100 - - Add Roadmap to README - -commit 3d1d73bbda8906b744c40bbe31119ec3b9012b60 -Merge: 41d307f6c4 dd90ea3162 -Author: Fredrik Adelöw -Date: Tue Mar 10 11:17:32 2020 +0100 - - Merge pull request #219 from spotify/freben/no-hello - - Remove the hello-world plugin - -commit dd90ea31621399ecb37d19a4706f7faf7855bee3 -Author: Fredrik Adelöw -Date: Tue Mar 10 11:12:27 2020 +0100 - - Remove the hello-world plugin - -commit 41d307f6c4d650b6803c017636486d95c8605290 -Merge: a60cc0aaac d1a5d5850d -Author: Stefan Ålund -Date: Tue Mar 10 09:09:15 2020 +0100 - - Merge pull request #217 from spotify/alund/teal - - Make home theme match microsite - -commit d1a5d5850dbf89f83a23ba5f7fa07286a9ebdea4 -Author: Stefan Ålund -Date: Tue Mar 10 08:43:24 2020 +0100 - - Change title dot color - -commit 246e5b70c7635df9eaf4b3483ab834e0054a08e0 -Author: Patrik Oldsberg -Date: Mon Mar 9 22:45:44 2020 +0100 - - app: try using create-react-app without hoisting - -commit d53ca4ec1530c7c28de3d99aebfed923b7f7382e -Author: Stefan Ålund -Date: Mon Mar 9 20:33:30 2020 +0100 - - Make home theme match microsite - -commit a60cc0aaac57d9d80bdaf702c7bcb4120399f8e8 -Merge: 3a35eba047 bc37fe1f76 -Author: Stefan Ålund -Date: Mon Mar 9 20:01:50 2020 +0100 - - Merge pull request #216 from spotify/nikek/supportbutton - - Add SupportButton to core components - -commit bc37fe1f76cd9b66cb901498b4d83bc53496239e -Author: Stefan Ålund -Date: Mon Mar 9 20:00:20 2020 +0100 - - Small tweaks to the SupportButton use - -commit fa4c7d465ff017f317442a94c97ff2d11d9dea5f -Author: nikek -Date: Mon Mar 9 16:54:05 2020 +0100 - - Add Support button to create-plugin template - -commit 7a284ad19323a6454a6697cad2dc018e1b3dbefd -Author: nikek -Date: Mon Mar 9 16:46:46 2020 +0100 - - Add SupportButton to core components - -commit 3a35eba04756e3b0920ba4453458345cd1bbd974 -Merge: 93924f1751 bbff5aaa1a -Author: Patrik Oldsberg -Date: Mon Mar 9 16:40:37 2020 +0100 - - Merge pull request #214 from spotify/patriko/noback - - backend,proto: remove - -commit bbff5aaa1aaf204091894d3829b3150115f05d4e -Author: Patrik Oldsberg -Date: Mon Mar 9 16:25:19 2020 +0100 - - backend,proto: remove - -commit 93924f1751a691cef70c6e565aa2b01a8eb6e5a9 -Merge: d6948372cf 625c2ffb68 -Author: Patrik Oldsberg -Date: Mon Mar 9 12:07:45 2020 +0100 - - Merge pull request #202 from spotify/patriko/waves - - core/layout: replace burst with waves - -commit d6948372cff2bd71350f21d68952a95d84a11ba6 -Merge: 73bf2f43ad 3d2842783f -Author: Raghunandan Balachandran -Date: Mon Mar 9 12:06:20 2020 +0100 - - Merge pull request #201 from spotify/soapraj/tables-stylong - - get them zebras back - -commit 625c2ffb6897f07342c2e50fa34968c0c4722a8a -Author: Patrik Oldsberg -Date: Mon Mar 9 11:51:07 2020 +0100 - - core/layout: replace burst with waves - -commit 3d2842783f86adaeefe39ddaeec9cd9c054dbc3c -Author: Raghunandan -Date: Mon Mar 9 11:32:17 2020 +0100 - - get them zebras back - -commit 73bf2f43ad54ae0930388b25364ae7bc250fb926 -Merge: eebc8181f3 3c1ce0a6dd -Author: Fredrik Adelöw -Date: Mon Mar 9 11:49:59 2020 +0100 - - Merge pull request #200 from spotify/freben/sidebar - - Restructure the app sidebar + shell to be mainly in core - -commit 3c1ce0a6dd0213e8041305c7683d6306b6e730fa -Author: Fredrik Adelöw -Date: Mon Mar 9 10:28:38 2020 +0100 - - Restructure the app sidebar + shell to be mainly in core - -commit eebc8181f3a735c805df6dd8d6f18692765572af -Merge: ddfcc4d30b b0dcf6e71b -Author: Stefan Ålund -Date: Mon Mar 9 10:50:13 2020 +0100 - - Merge pull request #195 from spotify/alund/frontend - - Fix GitHub actions for frontend - -commit b0dcf6e71b69148be57c7b814d0a24c234c78dd2 -Merge: 5ce9edeb61 ddfcc4d30b -Author: Stefan Ålund -Date: Mon Mar 9 10:44:06 2020 +0100 - - Merge branch 'master' into alund/frontend - -commit ddfcc4d30bb3f7402eaedd01875599ff23631388 -Merge: ab7d7fb730 d45d072120 -Author: Stefan Ålund -Date: Mon Mar 9 10:43:23 2020 +0100 - - Merge pull request #199 from spotify/patriko/coverage - - cli: test fixes n stuff - -commit ab7d7fb7302570b08ee260722987561e225b41c8 -Merge: 90b21e731e 3e48e34d34 -Author: Stefan Ålund -Date: Mon Mar 9 10:40:33 2020 +0100 - - Merge pull request #194 from spotify/alund/pr-template - - Create PR template - -commit d45d072120ca032754d4544ccb76308a6b26b7cf -Author: Patrik Oldsberg -Date: Mon Mar 9 09:57:51 2020 +0100 - - cli/commands/test: rename to testCommand to avoid jest picking it up - -commit 4127cdbed36bcc063534095bf27e610af86e64c7 -Author: Patrik Oldsberg -Date: Mon Mar 9 09:57:03 2020 +0100 - - cli: fix regex in createPlugin tests - -commit e61dd46ceb3e5d9c80c1b49615877a36df79137d -Author: Patrik Oldsberg -Date: Mon Mar 9 09:56:45 2020 +0100 - - package: run test and lint without stream or parallel - -commit ebf20c38ba1ea08e7866d8c4083be34c6ccabb78 -Author: Patrik Oldsberg -Date: Mon Mar 9 09:46:31 2020 +0100 - - cli: forward test coverage flag - -commit 90b21e731e7bb3e105b2922c2c14aea60fac9c98 -Merge: d6145a9dfa b24d749d54 -Author: Stefan Ålund -Date: Mon Mar 9 09:26:47 2020 +0100 - - Merge pull request #198 from spotify/stefanalund-patch-1 - - Move down backend docs in README - -commit b24d749d54e4388b738a7a10082ba1c9956bfdec -Author: Stefan Ålund -Date: Mon Mar 9 09:26:25 2020 +0100 - - Rm mac specific - -commit e2ed248d4527f06dba46162f3d4c7df28e25ab42 -Author: Stefan Ålund -Date: Mon Mar 9 09:03:23 2020 +0100 - - Move down backend docs in README - -commit d6145a9dfac437a0f5a90d30f5bc20b9784d45ae -Merge: 49a1b7c804 c22106ac12 -Author: Stefan Ålund -Date: Sun Mar 8 20:01:14 2020 +0100 - - Merge pull request #196 from spotify/stefanalund-patch-1 - - Tweak philosophy statement - -commit c22106ac1248ba4c74e4c5320de970f80a235b7e -Author: Stefan Ålund -Date: Sun Mar 8 19:51:04 2020 +0100 - - Tweak philosophy statement - -commit 5ce9edeb61dc42c39aa795021eb00f92762ed930 -Author: Stefan Ålund -Date: Sat Mar 7 23:23:51 2020 +0100 - - Exclude backends properly - -commit d81267edaeb8d3e7ae0d3915553cb7900de57dfc -Author: Stefan Ålund -Date: Sat Mar 7 23:10:27 2020 +0100 - - rm ignores - -commit 5858156c7d13ac45d4c0b12a19d6ecc6b6927037 -Author: Stefan Ålund -Date: Sat Mar 7 23:09:31 2020 +0100 - - ignore try two - -commit 623f705a92446d75bcf3718aaabc18e6b4dbd5ae -Author: Stefan Ålund -Date: Sat Mar 7 23:08:06 2020 +0100 - - ignore backends - -commit b23ce280f414a84e28adcd0f8669d050077b11df -Author: Stefan Ålund -Date: Sat Mar 7 23:04:16 2020 +0100 - - Fix GitHub actions for frontend - -commit 3e48e34d34c23bd2a7639f2ed942daa767a633f3 -Author: Stefan Ålund -Date: Sat Mar 7 23:00:11 2020 +0100 - - Added CODEOWNERS ref - -commit 28226e9b046239cccae849b822ba054890b03c8f -Author: Stefan Ålund -Date: Sat Mar 7 22:56:47 2020 +0100 - - Creat PR template - -commit 49a1b7c804212289f63b72e9f595335bc7475262 -Merge: 947f5573ef b32a2fe55f -Author: Stefan Ålund -Date: Sat Mar 7 22:52:17 2020 +0100 - - Merge pull request #192 from spotify/alund/example-header - - Richer UI in newly created plugin - -commit 947f5573efa4ef96b8ba530787a001b1d49eeece -Merge: 52814181a3 46c573a83a -Author: Stefan Ålund -Date: Sat Mar 7 22:50:23 2020 +0100 - - Merge pull request #189 from spotify/alund/theme-2 - - Update default theme for headings - -commit 46c573a83abf2db59bb58968c5d25f907a6a11b8 -Merge: 239d9c8b83 52814181a3 -Author: Stefan Ålund -Date: Sat Mar 7 22:49:47 2020 +0100 - - Merge branch 'master' into alund/theme-2 - -commit b32a2fe55f3f9eb348389b8c0e83a5ed7fe4cd01 -Author: Stefan Ålund -Date: Sat Mar 7 22:43:36 2020 +0100 - - rm extra div - -commit 29d88b8e30689bc2ecfb45a5637d53252a08b9db -Merge: ea7aa1b920 52814181a3 -Author: Stefan Ålund -Date: Sat Mar 7 22:41:09 2020 +0100 - - Merge branch 'master' into alund/example-header - -commit 52814181a3900df2768da7bc0980de063e0cd57b -Merge: f1f9ce3d44 20f70c2faa -Author: Fredrik Adelöw -Date: Sat Mar 7 21:45:56 2020 +0100 - - Merge pull request #187 from spotify/freben/page-layout - - Fix default page layout - -commit 20f70c2faaf998587fc13eda1e726738fd9b8e16 -Author: Fredrik Adelöw -Date: Sat Mar 7 21:40:53 2020 +0100 - - Fix plugin template too - -commit 62ccc37637250849aca9d4940db5655478e08d37 -Author: Fredrik Adelöw -Date: Fri Mar 6 19:00:19 2020 +0100 - - Fix default page layout - - Fixes https://github.com/spotify/backstage/issues/127 - -commit ea7aa1b920ad0155f2da9eeeb4eaecd062ee9c74 -Author: Stefan Ålund -Date: Sat Mar 7 20:46:55 2020 +0100 - - Use Backstage progress indicator - -commit 02085e67da70f277580e2531eed00d48289dfc91 -Author: Stefan Ålund -Date: Sat Mar 7 20:27:55 2020 +0100 - - Add user picture in example fetcher - -commit 7b81a8c3815d23e4f2d3b0133c51c370c0d985ff -Author: Stefan Ålund -Date: Sat Mar 7 19:57:54 2020 +0100 - - Add HeaderLabels - -commit d373f5428b3aa68a97dfdb6a5445d5934195930a -Author: Stefan Ålund -Date: Sat Mar 7 19:49:45 2020 +0100 - - Use Content and ContentHeader in scaffold - -commit f1f9ce3d44220591a857c05050360cd24ea65cb3 -Merge: 309161e514 703f05e993 -Author: Patrik Oldsberg -Date: Sat Mar 7 19:45:25 2020 +0100 - - Merge pull request #191 from spotify/patriko/autocomplete - - packages: fix typescript import autocompletion - -commit 703f05e993d44086711d12c6b78e97fca6df5f59 -Author: Patrik Oldsberg -Date: Sat Mar 7 19:25:47 2020 +0100 - - packages: fix typescript import autocompletion - -commit 239d9c8b83c71061ff5bbbc986f00c844796f14c -Author: Stefan Ålund -Date: Sat Mar 7 14:09:44 2020 +0100 - - Update default theme for headings - -commit 309161e51436625b7b69b2f0a55d3bf8d7e46d97 -Merge: c70cc3fb74 41d087e35a -Author: Patrik Oldsberg -Date: Sat Mar 7 12:53:37 2020 +0100 - - Merge pull request #188 from spotify/patriko/goto - - tsconfig: enable declaration maps for goto definition - -commit 41d087e35ad6ebac29c80fd185423337f6f07775 -Author: Patrik Oldsberg -Date: Sat Mar 7 12:18:48 2020 +0100 - - tsconfig: enable declaration maps for goto definition - -commit c70cc3fb747af7da48f2073587fce661bd7fd17a -Merge: cb8a9c285d 5e52956220 -Author: Patrik Oldsberg -Date: Sat Mar 7 10:58:55 2020 +0100 - - Merge pull request #185 from spotify/patriko/cli-packaging - - cli: fixes to scripts and packaging + bump - -commit 5e5295622074e094b2620203ef856d2004b24650 -Author: Patrik Oldsberg -Date: Fri Mar 6 15:50:16 2020 +0100 - - cli: bump to 1.4.0 - -commit 2d6ee263f40d24a755d8599bf26771cab2d7d90a -Author: Patrik Oldsberg -Date: Fri Mar 6 16:40:13 2020 +0100 - - cli: move spotify web-scripts to deps - -commit c3febb492f5c83446d27cdee1a64ac6284cdac99 -Author: Patrik Oldsberg -Date: Fri Mar 6 16:30:37 2020 +0100 - - cli: properly forward status code in plugin commands - -commit 1b7d0a4e4bbbc287f648dc00eb67549dbf2811b0 -Author: Patrik Oldsberg -Date: Fri Mar 6 16:23:54 2020 +0100 - - cli: fix for error output being ignored - -commit 427ad9c2427b52eca44fe3ad411fac948770f49f -Author: Patrik Oldsberg -Date: Fri Mar 6 15:59:26 2020 +0100 - - cli: only build cjs to dist folder and set it as entrypoint - -commit cb8a9c285d41e892b69eccc24fcd0a39273bd755 -Merge: 54aa0c4c8a 49428520de -Author: Patrik Oldsberg -Date: Fri Mar 6 16:15:18 2020 +0100 - - Merge pull request #183 from spotify/patriko/hoist-plugins - - packages/plugins: move to plugins/ - -commit 54aa0c4c8afe509f1b75bef288322d52958dfa0d -Merge: 50ab86cd9b 90eb43a618 -Author: Fredrik Adelöw -Date: Fri Mar 6 15:11:45 2020 +0100 - - Merge pull request #184 from spotify/freben/template2 - - Fix some squigglies/warnings in new plugins - -commit 90eb43a6182953c2544ed5c7f308b50e68c5fe25 -Author: Fredrik Adelöw -Date: Fri Mar 6 15:08:37 2020 +0100 - - Fix some squigglies/warnings in new plugins - -commit 50ab86cd9b12e1afd1c62ffb4990b4c03b9ae72a -Merge: f12e7e9964 aef09f8d52 -Author: Patrik Oldsberg -Date: Fri Mar 6 15:04:37 2020 +0100 - - Merge pull request #179 from spotify/soapraj/show-error-stacktrace - - Show error stack trace for failed commands - -commit 49428520de6e89954e4dd714f668c761049ac95e -Author: Patrik Oldsberg -Date: Fri Mar 6 14:32:41 2020 +0100 - - packages/plugins: move to plugins/ - -commit f12e7e9964824fc0714222d73e30c21bd420f656 -Merge: ff06b6ce9c a707a79ef6 -Author: Patrik Oldsberg -Date: Fri Mar 6 14:31:58 2020 +0100 - - Merge pull request #178 from spotify/patriko/cli-dev - - cli: always use src/ version of cli inside repo - -commit ff06b6ce9c2bb236df5e34873c5390df27a2df2f -Merge: b604d82439 d8e1c0318d -Author: Patrik Oldsberg -Date: Fri Mar 6 14:31:37 2020 +0100 - - Merge pull request #182 from spotify/patriko/cli-deps - - cli: added explicit lerna deps - -commit d8e1c0318d78f5b7a8c574272e0dc49300d48f44 -Author: Patrik Oldsberg -Date: Fri Mar 6 14:22:04 2020 +0100 - - cli: added explicit lerna deps - -commit b604d8243957efa70bd4faf4a1cfdfe6228bf704 -Merge: 1253011ad5 14c4db6969 -Author: Fredrik Adelöw -Date: Fri Mar 6 14:18:01 2020 +0100 - - Merge pull request #181 from spotify/freben/paths-cli - - Set correct destination path for created plugins - -commit 14c4db6969b07653d196a5399c79fddb1e50f570 -Author: Fredrik Adelöw -Date: Fri Mar 6 14:16:25 2020 +0100 - - Set correct destination path for created plugins - -commit 1253011ad5a60f47dc0ad506843c1d5dfc41ae9d -Merge: 0a65a2ba72 7931324945 -Author: Patrik Oldsberg -Date: Fri Mar 6 13:47:35 2020 +0100 - - Merge pull request #176 from spotify/patriko/cli-all-the-things - - cli: added plugin build,lint,test commands + use them in plugins - -commit 0a65a2ba72e92959f3311adde888927acf062124 -Merge: dcc62dd2ee f1ef39ec8c -Author: Fredrik Adelöw -Date: Fri Mar 6 13:40:40 2020 +0100 - - Merge pull request #172 from spotify/freben/zoom - - Zoom out when on small screens :) - -commit aef09f8d526fe5938ac15a44d558c0d536b91151 -Author: Raghunandan -Date: Fri Mar 6 13:29:28 2020 +0100 - - print stacktrace for commands that are run after plugin creation - -commit dcc62dd2eedb57cf4cef84a5d329ba1d411998ad -Merge: 2bbe6600f2 d5518ff5fa -Author: Stefan Ålund -Date: Fri Mar 6 13:18:46 2020 +0100 - - Merge pull request #171 from spotify/eide/cli-atomic - - [cli]: Use temporary folder for plugin creation to be able to clean up easy - -commit 2bbe6600f204a3d79712c7c4b4ebae4071c10c5d -Merge: ea4810c32d 12f130e650 -Author: Stefan Ålund -Date: Fri Mar 6 12:59:27 2020 +0100 - - Merge pull request #177 from spotify/patriko/ignored - - gitignore: add back esm,cjs,types - -commit 12f130e650f4717c15524b0c59b24a8394b0a2fd -Author: Patrik Oldsberg -Date: Fri Mar 6 12:04:33 2020 +0100 - - gitignore: add back esm,cjs,types - -commit a707a79ef60cfb31246c8361210d84b13c4836d7 -Author: Patrik Oldsberg -Date: Fri Mar 6 12:06:06 2020 +0100 - - cli: always use src/ version of cli inside repo - -commit 7931324945a16bb7f96d5ab1273b9947c9e42539 -Author: Patrik Oldsberg -Date: Fri Mar 6 10:51:51 2020 +0100 - - cli: added plugin build,lint,test commands + use them in plugins - -commit f1ef39ec8c7ffdc84cc8c572d2b5bc91d0dda397 -Author: Fredrik Adelöw -Date: Fri Mar 6 12:04:29 2020 +0100 - - Zoom out when on small screens :) - - This does absolutely nothing on firefox, but works great in safari and chrome. - - There are tricks to make zooming happen on firefox, but it involves stuff like this - - ``` - html { - -moz-transform: scale(0.7); - -moz-transform-origin: 0 0; - } - @-moz-document url-prefix() { - html { - width: 142.857%; - } - } - ``` - - amd after that some things still have a very hard time staying aligned with the screen edges (such as the sidebar). So I've left that as a future exercise. - -commit d5518ff5fa59f074a52fe105e3c4b3a5242052b6 -Merge: 6d44b0bc91 0eaad36a1e -Author: Marcus Eide -Date: Fri Mar 6 11:27:39 2020 +0100 - - Merge branch 'eide/cli-atomic' of https://github.com/spotify/backstage into eide/cli-atomic - -commit 6d44b0bc91e60b7c3a162afc71f04ccc5aaf1945 -Merge: 9117380ce9 ea4810c32d -Author: Marcus Eide -Date: Fri Mar 6 11:23:06 2020 +0100 - - Merge branch 'master' of https://github.com/spotify/backstage into eide/cli-atomic - -commit 9117380ce98ff475d6a59064690564ab7632fde9 -Author: Marcus Eide -Date: Fri Mar 6 11:14:11 2020 +0100 - - Fix paths and add spinners - -commit ea4810c32d298e6abfa13c76601d5a8542688874 -Merge: 61f14d1baf 5978fab46e -Author: Stefan Ålund -Date: Fri Mar 6 10:45:13 2020 +0100 - - Merge pull request #175 from spotify/rugvip/no-yarn - - README: update plugin instructions to not always run yarn - -commit 5978fab46ea2b56f7ec22c7f84cd044f5bbe2160 -Author: Patrik Oldsberg -Date: Fri Mar 6 10:36:19 2020 +0100 - - README: update plugin instructions to not always run yarn - -commit 8a836fb7ad113002f9553f4c3031b00927505d8b -Author: Marcus Eide -Date: Thu Mar 5 15:41:16 2020 +0100 - - Remove unnecessary chalking - -commit 9c1d95740cec8021a176f305e77cdec4e4ec7f4a -Author: Marcus Eide -Date: Thu Mar 5 14:56:46 2020 +0100 - - Use temporary folder for plugin creation to be able to clean up easy - -commit 61f14d1baf81ae84d435857e9b151444f45b255c -Merge: 5b9845f62f 56226ae84d -Author: Patrik Oldsberg -Date: Thu Mar 5 16:34:33 2020 +0100 - - Merge pull request #174 from spotify/rugvip/hoist - - frontend: move to repo root - -commit 56226ae84df925a72e6f6a4e72c218548059ef60 -Author: Patrik Oldsberg -Date: Thu Mar 5 15:55:28 2020 +0100 - - frontend: move to repo root - -commit 5b9845f62f165e83046c01dcc7c11c252609e1f0 -Merge: a44767f9e2 212d7f4bcb -Author: Patrik Oldsberg -Date: Thu Mar 5 15:59:17 2020 +0100 - - Merge pull request #173 from spotify/rugvip/theme - - core/theme: cleanup mui component styles - -commit 0eaad36a1e7369089ac6ffbf6a1dd9c0dcc1b2c8 -Author: Marcus Eide -Date: Thu Mar 5 15:41:16 2020 +0100 - - Remove unnecessary chalking - -commit 212d7f4bcb0f2dbbdbb2aa4242de7b962ba91496 -Author: Patrik Oldsberg -Date: Thu Mar 5 15:29:59 2020 +0100 - - core/theme: cleanup mui component styles - -commit a44767f9e2f49b58b6b0d8b00b767844ad66576d -Merge: 08ad99c5fd e3f2b62212 -Author: Patrik Oldsberg -Date: Thu Mar 5 15:10:47 2020 +0100 - - Merge pull request #166 from spotify/rugvip/dynamic-watch-deps - - cli: update watch targets when depedencies of watched package change - -commit da977d1c98a08610f515e6de1b2f03a8ee5a0907 -Author: Marcus Eide -Date: Thu Mar 5 14:56:46 2020 +0100 - - Use temporary folder for plugin creation to be able to clean up easy - -commit 08ad99c5fd35db8308083ff001b1b9656fb1702f -Merge: 2443009f0d 5939937f81 -Author: Raghunandan Balachandran -Date: Thu Mar 5 14:19:04 2020 +0100 - - Merge pull request #168 from spotify/soapraj/fix-paths - - Fix paths used in create plugin - -commit 5939937f81f2642370c5f6cc4f4ace86658f3238 -Author: Raghunandan -Date: Thu Mar 5 12:09:25 2020 +0100 - - Fix paths used in create plugin. Add plugin to app only if app package exists. - -commit 2443009f0d62a0e2f4410140b8880b02e18f7f80 -Merge: 3229ea3645 99af94979c -Author: Stefan Ålund -Date: Thu Mar 5 13:48:40 2020 +0100 - - Merge pull request #160 from spotify/rugvip/yi - - cli/createPlugin: use yarn install instead of yarn - -commit 3229ea36453147541f610471aadde55b4b16dc22 -Merge: 8520187945 5918057388 -Author: Stefan Ålund -Date: Thu Mar 5 13:48:09 2020 +0100 - - Merge pull request #165 from spotify/alund/plugin-them - - Update default theme for new plugins - -commit 85201879458b63122625dddb798c86d1b333ab01 -Merge: 0022b3b20c aa03c0c422 -Author: Fredrik Adelöw -Date: Thu Mar 5 13:29:58 2020 +0100 - - Merge pull request #149 from spotify/jdwelch/129-fontfamily - - [WIP] Use Red Hat Display & Red Hat Text faces - -commit 0022b3b20c977443db934c41e0c4d91c984a813e -Merge: f8895a6395 805862924c -Author: Fredrik Adelöw -Date: Thu Mar 5 13:11:41 2020 +0100 - - Merge pull request #155 from spotify/freben/icons - - Add a basis for system icons - -commit 5918057388045b88c34d05b37a6c5ded2fe74d80 -Author: Stefan Ålund -Date: Thu Mar 5 12:55:02 2020 +0100 - - Update yarn.lock - -commit e3f2b62212859688ba665d3c15e886ceba6ba0d4 -Author: Patrik Oldsberg -Date: Thu Mar 5 11:57:54 2020 +0100 - - README: update create plugin docs - -commit 363739f2e919392c427fd9921d54feac1cb3622a -Author: Patrik Oldsberg -Date: Thu Mar 5 11:49:31 2020 +0100 - - cli: update watch targets when depedencies of watched package change - -commit 386e679a7a86694dd4819fd5231496550a387758 -Author: Stefan Ålund -Date: Thu Mar 5 11:26:19 2020 +0100 - - Update default theme for new plugins - -commit f8895a6395657cec06fd82a4bc5ef886c5fa42f4 -Merge: 34a6708780 1c9480a4a0 -Author: Patrik Oldsberg -Date: Thu Mar 5 11:07:42 2020 +0100 - - Merge pull request #163 from spotify/rugvip/green-check - - cli/createPlugin: fix color inconsistency for check marks - -commit 34a670878031f27c0454678b60b40919aa07eba4 -Merge: 4541b45b0e 5fff89ab05 -Author: Patrik Oldsberg -Date: Thu Mar 5 11:07:35 2020 +0100 - - Merge pull request #162 from spotify/rugvip/remove-login - - app,plugin/login: remove login page for now - -commit 5fff89ab0513021b72de5f36c8eee4bfb4e60050 -Author: Patrik Oldsberg -Date: Thu Mar 5 11:02:45 2020 +0100 - - packages/app: add simple test - -commit 1c9480a4a0728c6b9c951b1ab5cadd6dd6e43284 -Author: Patrik Oldsberg -Date: Thu Mar 5 10:58:24 2020 +0100 - - cli/createPlugin: fix color inconsistency for check marks - -commit 01986c38857a5a144880c9e1b514290fc11cba4e -Author: Patrik Oldsberg -Date: Thu Mar 5 10:54:30 2020 +0100 - - app: sort dependencies - -commit 5377ca9d56eb1e9591b5cdfa9b2547c89b21dc24 -Author: Patrik Oldsberg -Date: Thu Mar 5 10:52:27 2020 +0100 - - app,plugin/login: remove login page for now - -commit 4541b45b0e4fca9581566cd020164739887fe8e0 -Merge: cb4d1e82b7 68daf79cef -Author: Patrik Oldsberg -Date: Thu Mar 5 10:51:34 2020 +0100 - - Merge pull request #159 from spotify/rugvip/sidebar-sync - - app/Sidebar: update to latest version with peek - -commit 99af94979c871f84625cea11d0a3d97631cc7303 -Author: Patrik Oldsberg -Date: Thu Mar 5 10:47:43 2020 +0100 - - cli/createPlugin: use yarn install instead of yarn - -commit 68daf79cef17c334621001bc7bb19ac99c39ba6a -Author: Patrik Oldsberg -Date: Thu Mar 5 10:45:14 2020 +0100 - - app/Sidebar: remove dead links - -commit 5003899222603b7cce4d06ca8cfcb644a8945f07 -Author: Patrik Oldsberg -Date: Thu Mar 5 10:38:00 2020 +0100 - - app/Sidebar: update to latest version with peek - -commit cb4d1e82b7c52eceec1326904ee31b95cfc518fc -Merge: 192b16aac6 a9007371e3 -Author: Niklas -Date: Wed Mar 4 21:12:53 2020 +0100 - - Merge pull request #156 from spotify/stefanalund-patch-2 - - Remove link to proto docs - -commit 192b16aac6f26e595d86ba1acc380a51fd1b184a -Merge: fef66a0dd6 cfc882b617 -Author: Stefan Ålund -Date: Wed Mar 4 19:11:26 2020 +0100 - - Merge pull request #157 from spotify/raghub/prettier - - Prettier changes - -commit fef66a0dd65848cce190e2048d0f6a37ff05da60 -Merge: aa1d8ec024 fde92f9651 -Author: Stefan Ålund -Date: Wed Mar 4 17:59:57 2020 +0100 - - Merge pull request #154 from spotify/stefanalund-patch-1 - - yarn build no longer needed - -commit cfc882b6173134adfa1c3b4bd7410c4007e500f9 -Author: Raghunandan -Date: Wed Mar 4 16:54:01 2020 +0100 - - Prettier changes - -commit aa03c0c422ef1f270e45fbc9e86009548c56a308 -Author: JD Welch -Date: Wed Mar 4 16:08:52 2020 +0100 - - simplify font stack - - Signed-off-by: JD Welch - -commit a9007371e3ce841f36cf83d357c46e4a9000e9f6 -Author: Stefan Ålund -Date: Wed Mar 4 15:49:39 2020 +0100 - - Remove link to proto docs - -commit fde92f9651d6f09799bbfb6e231fb36b7ddc18a5 -Author: Stefan Ålund -Date: Wed Mar 4 15:44:41 2020 +0100 - - yarn build no longer needed - -commit 805862924c2f8907e201c8b8a9c2d168f0252c57 -Author: Fredrik Adelöw -Date: Wed Mar 4 15:28:11 2020 +0100 - - Add a basis for system icons - -commit aa1d8ec024d6b3db08e9e9aa2e007650bc80cde5 -Merge: ab5d6d6ac2 3686ec6a92 -Author: Stefan Ålund -Date: Wed Mar 4 15:28:05 2020 +0100 - - Merge pull request #153 from spotify/nikek/build-on-start - - add build to start script - -commit 3686ec6a920a16a10739cf021842176490031d60 -Author: nikek -Date: Wed Mar 4 14:33:47 2020 +0100 - - add build to start script - -commit ab5d6d6ac206fb75e5d0c0bfcb63a40021f30363 -Author: Patrik Oldsberg -Date: Wed Mar 4 13:18:07 2020 +0100 - - README: add instruction to run yarn build - - For now yarn build is needed, but we want to get rid of that soon - -commit 6f09e99d561358f267ac99173263a5f4b1c7038b -Merge: e878b13028 cd8dae40cf -Author: Patrik Oldsberg -Date: Wed Mar 4 12:59:33 2020 +0100 - - Merge pull request #152 from spotify/rugvip/plugin-template-ts - - cli/templates: update plugin template to use separate build - -commit e878b13028f1bd3dbd90b2818e93cde8adc46c00 -Merge: 165bb03207 d357b086e1 -Author: Stefan Ålund -Date: Wed Mar 4 12:53:35 2020 +0100 - - Merge pull request #148 from spotify/alund/timezones - - Make timezone more global - -commit cd8dae40cfc43c461fc04035e7b614dfc35ff393 -Author: Patrik Oldsberg -Date: Wed Mar 4 12:50:05 2020 +0100 - - cli: build plugin after creation - -commit d357b086e1d7eab98fa7f339bedd0ba9582a242f -Author: Stefan Ålund -Date: Wed Mar 4 12:47:59 2020 +0100 - - Update HomepageTimer.tsx - -commit eadd0677733821b331b739ad8d24700bb0b60eb4 -Author: Stefan Ålund -Date: Wed Mar 4 12:47:09 2020 +0100 - - Replace SYD with UTC - -commit a076b9bc563b4c5172092d73025d2ea7695e9ad2 -Merge: e572b65e4e 165bb03207 -Author: Stefan Ålund -Date: Wed Mar 4 12:45:15 2020 +0100 - - Merge branch 'master' into alund/timezones - -commit 1d15e48800459fe5bb4dcdedefe5d4d10d25012a -Author: Patrik Oldsberg -Date: Wed Mar 4 12:00:24 2020 +0100 - - cli/templates: update plugin template to use separate build - -commit 165bb03207bf3f24e1439919f5e03ab35148fb65 -Merge: 60674db8bc b544b11a68 -Author: Raghunandan Balachandran -Date: Wed Mar 4 11:52:20 2020 +0100 - - Merge pull request #151 from spotify/raghub/cli-imports-plugin - - Automate manual steps to include a new plugin in the app - -commit b544b11a689aab4b577ada1583f27c605dedd318 -Author: Raghunandan -Date: Wed Mar 4 11:37:39 2020 +0100 - - Fix PR review - -commit 56ddf44d404176e0e46c33cb95ab5e290814d1ad -Author: Raghunandan -Date: Tue Mar 3 15:16:29 2020 +0100 - - create plugin adds newly created plugin as a dependency in app package. adds to the plugins list in the app - -commit 60674db8bc62e6f892e03c5a51a1186a352d4755 -Merge: 467cbd8acf 7a651ff06d -Author: marcuseide -Date: Wed Mar 4 11:17:19 2020 +0100 - - Merge pull request #145 from spotify/eide/cli-build-plugin - - [cli] Run required yarn commands when creating a plugin - -commit 467cbd8acf13a915f294ed5f034f4a1d1d7f4448 -Merge: fac507f9db 0a127d4c99 -Author: Patrik Oldsberg -Date: Wed Mar 4 10:59:08 2020 +0100 - - Merge pull request #150 from spotify/mob/monobuild - - frontend: start using experimental separate builds setup - -commit 7a651ff06d9483c5e8f7dc19e433fcc03a1782af -Author: Marcus Eide -Date: Wed Mar 4 10:17:31 2020 +0100 - - Bump version - -commit 57576f267854ea651dee8dc5759ac906da719afe -Author: Marcus Eide -Date: Wed Mar 4 09:20:36 2020 +0100 - - Using process.stdout.write where needed for better output control - -commit 0a127d4c9911e405b236959c5e6a64e52408a59f -Author: Patrik Oldsberg -Date: Wed Mar 4 09:00:32 2020 +0100 - - .github/workflows/frontend: fix build command - -commit 2965e51d5aa08d9dab3d839c2eedc3367044c93f -Author: Patrik Oldsberg -Date: Wed Mar 4 00:04:43 2020 +0100 - - packages/core: fix circular imports - -commit fac507f9db30d599c5b983387a6241b496919c33 -Merge: f08fcbec30 995945b765 -Author: Niklas -Date: Wed Mar 4 08:35:54 2020 +0100 - - Merge pull request #146 from spotify/nikek/fetch-example - - add async data fetching & rendering to example page - -commit fe5e505e908a1f7456f6e6a0dd7fb73dbc164d54 -Author: Marcus Eide -Date: Wed Mar 4 08:34:10 2020 +0100 - - Now with emojis - -commit dfe5ba1d28d32cde1510aa6d4f940a4fb25132ef -Author: Patrik Oldsberg -Date: Tue Mar 3 23:42:53 2020 +0100 - - frontend/packages: remove compile-test-* packages - -commit eb3e61db100167289b190ad7bd8d353c961f7138 -Author: Patrik Oldsberg -Date: Tue Mar 3 23:41:56 2020 +0100 - - frontend: update yarn.lock - -commit 9119f69e3e07ae93ebb0b4e37552b7e7b9e054ab -Author: Patrik Oldsberg -Date: Tue Mar 3 23:41:18 2020 +0100 - - frontend: update packages to build separately using cli - -commit 98d4631636a26887e09c2bbed42cacb4825f824d -Author: Patrik Oldsberg -Date: Tue Mar 3 23:39:47 2020 +0100 - - frontend: update and add tsconfigs - -commit cfee0f48a758e970643e1a96aa07880240cc7b67 -Author: JD Welch -Date: Tue Mar 3 21:49:38 2020 +0100 - - Use Red Hat Display & Red Hat Text faces - - + adds CDN-hosted version of RH Display / RH Text - + applies these faces to theme - + s/‘bold’/700/ throughout - - Signed-off-by: JD Welch - -commit e572b65e4ea8f8f3924b8fa0bd550610d94c437a -Author: Stefan Ålund -Date: Tue Mar 3 21:06:58 2020 +0100 - - Make timezone more global - -commit 995945b7654512b91043cdae44a85c216247fef0 -Author: nikek -Date: Tue Mar 3 17:45:58 2020 +0100 - - add Alert component deps - -commit 2dbd27d9b7db1d50da7d279800888b2a68058036 -Author: Patrik Oldsberg -Date: Tue Mar 3 17:18:52 2020 +0100 - - frontend: remove protobuf and entity related plugins - -commit 46f24e9739f479f6a72ed61c83a667b4cd9e2668 -Author: nikek -Date: Tue Mar 3 17:17:10 2020 +0100 - - add async data fetching & rendering to example page - -commit 08bd065eab35892dbde5cb3f9263e687814212b6 -Author: Patrik Oldsberg -Date: Tue Mar 3 17:11:37 2020 +0100 - - packages/compile-test-app: added separate ts build config - -commit 4a123d8acc8514abc3bed1a34443b931f41c8356 -Author: Marcus Eide -Date: Tue Mar 3 16:13:58 2020 +0100 - - Re-arrange some console.logs - -commit dd8d4113c5b9e8dd9ccffa1831dcee83cbc209e2 -Author: Marcus Eide -Date: Tue Mar 3 15:30:55 2020 +0100 - - Run yarn on a newly created plugin as part of the creation process - -commit f08fcbec309410d3bc79f2e4726b228da5a3dedc -Merge: 4a396b1735 00101ef44e -Author: Raghunandan Balachandran -Date: Tue Mar 3 15:08:30 2020 +0100 - - Merge pull request #144 from spotify/raghub/consistent-package-names - - Consistent package names - -commit 4a396b17350541d7516c887c81598ddaa3535abf -Merge: db9e3c567f 961c2ccdea -Author: marcuseide -Date: Tue Mar 3 15:07:52 2020 +0100 - - Merge pull request #143 from spotify/eide/cli-feedback - - [cli] Add more user feedback - -commit 961c2ccdeaa71acd3f5db961f0a90a5ba5edbc90 -Author: Marcus Eide -Date: Tue Mar 3 13:35:14 2020 +0100 - - Optionally clean up failed plugin directory - -commit db9e3c567ffbab0871468318e9d576d9c89dfd22 -Author: Stefan Ålund -Date: Tue Mar 3 13:04:28 2020 +0100 - - Slight change in purpose wording - -commit 79ef90713229b5289a259ac20e833a02c44c3a11 -Author: Marcus Eide -Date: Tue Mar 3 12:49:31 2020 +0100 - - Use json.parse for version instead - -commit 8b967badaca260d2678473afc60bbebb28d1b4a8 -Author: Marcus Eide -Date: Tue Mar 3 12:43:01 2020 +0100 - - Add more feedback as to what is happening when creating a plugin - -commit e390ddbceba1ce958e27c187cf7ce4d31341df31 -Author: Marcus Eide -Date: Tue Mar 3 12:41:54 2020 +0100 - - Add styles for template that otherwise was interpreted as a hb var - -commit 2c41afdedf139a886546c7cb4a52e464fb505e6a -Author: Marcus Eide -Date: Tue Mar 3 12:41:02 2020 +0100 - - Add script to run the cli directly - -commit 00101ef44ea7f870bd1bb6b8d93aa363feab8966 -Author: Raghunandan -Date: Tue Mar 3 11:12:34 2020 +0100 - - @backstage -> @spotify-backstage - -commit 2c9db372756816dca2a616578f99fd30f260adaf -Author: Marcus Eide -Date: Tue Mar 3 10:13:59 2020 +0100 - - Add name and version to main - -commit 39cd481040d4277c96bc744b6459b2c07f6411bd -Author: Marcus Eide -Date: Tue Mar 3 10:12:18 2020 +0100 - - Add chalked output to main - -commit 62f0dd94e36bc3b3df7a571daf2f23ecbd89aeaf -Merge: fbc8befca6 d4f5812339 -Author: Stefan Ålund -Date: Tue Mar 3 09:15:28 2020 +0100 - - Merge pull request #142 from spotify/stefanalund-patch-1 - - Added GitHub actions badge to README - -commit d4f5812339bba3fc4906052ee72b592bae51721c -Author: Stefan Ålund -Date: Tue Mar 3 09:14:58 2020 +0100 - - Added GitHub actions badge to README - -commit fbc8befca63b26a57e937ae70e74fdc0ee82df8b -Author: Stefan Ålund -Date: Sun Mar 1 11:51:03 2020 +0100 - - Update README.md - -commit 97b8d515b36617a1ef88d36e48505b6bc463e0fe -Author: Stefan Ålund -Date: Sun Mar 1 11:45:31 2020 +0100 - - Minor tweaks to README - -commit ecec5051987d125ed6b6e4fe753aabe65a564729 -Merge: 6bbc7d1d91 ba0fb2aac0 -Author: Stefan Ålund -Date: Sun Mar 1 11:28:44 2020 +0100 - - Merge pull request #136 from spotify/alund/overview - - [Docs] Overview image and desc - -commit ba0fb2aac09bf3629c70f5597c874ca414ce6e8f -Author: Stefan Ålund -Date: Sun Mar 1 11:27:32 2020 +0100 - - Add headline - -commit 74993f292f265671fb9ae5615c51e536590615ee -Author: Stefan Ålund -Date: Sun Mar 1 11:18:33 2020 +0100 - - Add philosophy - -commit a23a90e46c120202eec539b12639267cc608a860 -Author: Stefan Ålund -Date: Sat Feb 29 21:06:54 2020 +0100 - - [Docs] Overview image and desc - -commit 6bbc7d1d91dddfdd71e6f07fb36b9eabb1fd2cde -Merge: c7aedc3ee4 f94f489532 -Author: Stefan Ålund -Date: Sat Feb 29 13:32:09 2020 +0100 - - Merge pull request #131 from spotify/stefanalund-patch-1 - - Fix license badge in README - -commit f94f4895328a42e3189713be748edcde7be85739 -Author: Stefan Ålund -Date: Sat Feb 29 13:31:32 2020 +0100 - - Fix license badge in README - -commit c7aedc3ee4a1b3edabed708a80c8441fe1f8c0e8 -Merge: a8f1ecb695 9cc3991b49 -Author: Stefan Ålund -Date: Sat Feb 29 13:27:51 2020 +0100 - - Merge pull request #130 from spotify/alund/layouts - - Add back Content and ContentHeader - -commit a8f1ecb695f7674341ff8c22572a3ea372becd4d -Merge: 366473f6e0 84110105b2 -Author: Stefan Ålund -Date: Sat Feb 29 13:27:13 2020 +0100 - - Merge pull request #128 from spotify/alund/fix-example - - Proper UX for newly scaffolded plugin - -commit 9cc3991b49e6d28e2a36cb130d42128c8d3f804e -Author: Stefan Ålund -Date: Sat Feb 29 10:39:18 2020 +0100 - - Add back Content and ContentHeader - -commit 84110105b2698735512634faa03c0133cc114e63 -Author: Stefan Ålund -Date: Fri Feb 28 18:01:34 2020 +0100 - - Proper UX for newly scaffolded plugin - -commit 366473f6e0fc2bc41fa0ca27caeff5880f636f97 -Merge: bafc4f5b2d 55a01ea1d8 -Author: Stefan Ålund -Date: Fri Feb 28 13:48:24 2020 +0100 - - Merge pull request #125 from spotify/patriko/fix-app - - frontend: fix #119 - -commit 55a01ea1d88716fa2423cfcf901d0980c3bf6f80 -Author: Patrik Oldsberg -Date: Fri Feb 28 13:26:53 2020 +0100 - - frontend: fix #119 - -commit bafc4f5b2dbb4074fcc3f2d3f2cece49d2e004a1 -Merge: 66d5bce0d4 cc35f6b1c9 -Author: Patrik Oldsberg -Date: Fri Feb 28 11:23:19 2020 +0100 - - Merge pull request #118 from spotify/patriko/serve-plugin - - packages/cli: add serve and watch-deps - -commit cc35f6b1c99c475bf7b7bd1f1ec82f59565c275b -Author: Patrik Oldsberg -Date: Fri Feb 28 09:56:39 2020 +0100 - - packages/cli: replace experimental delete api usage with del - -commit d2b84ed8ebf6ef2946b957150cdff58f9d1d8dac -Author: Patrik Oldsberg -Date: Fri Feb 28 09:43:20 2020 +0100 - - packages/compile-test-*: add dummy tests - -commit 66d5bce0d4d474424ba806fe71c82e819c7142df -Merge: 329b776125 da855cbde9 -Author: Patrik Oldsberg -Date: Fri Feb 28 09:35:30 2020 +0100 - - Merge pull request #117 from spotify/soapraj/fix-uri-formats - - Fix uri - -commit 2bc05fc1291f9b9835d35ff694ae85601820af45 -Author: Patrik Oldsberg -Date: Fri Feb 28 09:34:09 2020 +0100 - - regenerate yarn.lock to fix jest conflicts - -commit 6d8b4f90de9f83e4fa73784e4a0c98192b63cc7c -Author: Patrik Oldsberg -Date: Fri Feb 28 09:18:07 2020 +0100 - - packages/cli: lint fixes - -commit 09b81b2fcf5a5a0a4f54208690f7d8fb3d511cf9 -Author: Patrik Oldsberg -Date: Fri Feb 28 09:17:51 2020 +0100 - - packages/cli: fix linting - -commit e67058789ce66f1289d246014c09928bc7bec4c5 -Author: Patrik Oldsberg -Date: Fri Feb 28 00:22:15 2020 +0100 - - packages/cli: enable tests again - -commit 500a9cfaafb74cc5638d98b560c7302c8fa83baa -Author: Patrik Oldsberg -Date: Fri Feb 28 00:20:51 2020 +0100 - - packages/cli: force colored output of child processes of watch-deps - -commit 04dfcce37006142c16f79cd9ef7bb4465a504a50 -Author: Patrik Oldsberg -Date: Fri Feb 28 00:05:41 2020 +0100 - - packages/compile-test-app: use backstage-cli serve - -commit 4bdbedaeecdbff84a2bfdfc1df1d16faf66e8bd7 -Author: Patrik Oldsberg -Date: Fri Feb 28 00:05:22 2020 +0100 - - packages/cli: use react-dev-utils to select port and open browser + bit of refactor - -commit b876df6bee46b78dc4b4637f9da3f9f4b36b71bf -Author: Patrik Oldsberg -Date: Thu Feb 27 23:54:05 2020 +0100 - - packages/cli: replaced serve-plugin by simplified serve command with plain webpack config - -commit 999cb254143ef7f3668648712afa526232676703 -Author: Patrik Oldsberg -Date: Thu Feb 27 18:21:26 2020 +0100 - - packages/compile-test-app: use watch-deps - -commit 0369d1ac061b9f887d28cc7b47896a1a8da35cc9 -Author: Patrik Oldsberg -Date: Thu Feb 27 18:18:52 2020 +0100 - - cli: added watch-deps command - -commit 83b8786378991798faf6fee2d996c461502ebb61 -Author: Patrik Oldsberg -Date: Thu Feb 27 17:15:00 2020 +0100 - - packages: added more compile-test packages to try deps and transitive deps - -commit 8d69089cf40723260c3bd63889750be66fe26f1e -Author: Patrik Oldsberg -Date: Thu Feb 27 11:42:22 2020 +0100 - - packages: add compile-test-app that uses serve-plugin from cli - -commit 136bccaf8d71ae2b3b75fedcd4d41362f68e6606 -Author: Patrik Oldsberg -Date: Thu Feb 27 11:41:06 2020 +0100 - - packages/cli: add missing serve html template - -commit f4584d5f814e7b90b8966cd3948cd6b76649bb6b -Author: Patrik Oldsberg -Date: Thu Feb 27 11:29:17 2020 +0100 - - packages/cli: fix ts compile error - -commit c62711978959966b64cb9f95c6f675e9962e37e9 -Author: Patrik Oldsberg -Date: Thu Feb 27 11:23:24 2020 +0100 - - packages/cli: disable-test-because-conflicts-that-we-need-to-fix-later - -commit 3e3e428d55dde9ce3da031eae50b3bc5ba55d5a4 -Author: Patrik Oldsberg -Date: Thu Feb 27 10:54:37 2020 +0100 - - packages/cli: add broken servePlugin command - -commit da855cbde9b189e186df76e0a1b0d83eb0d8174c -Author: Raghunandan -Date: Wed Feb 26 11:25:33 2020 +0100 - - Fix uri - -commit 329b7761256226e7eaad5d41f75c40c98bd35083 -Merge: 803073dacf cb2a75bf66 -Author: Patrik Oldsberg -Date: Tue Feb 25 10:54:51 2020 +0100 - - Merge pull request #116 from spotify/rugvip/cleanup - - cleanup some things, preparing for monorepo setup modifications - -commit cb2a75bf66416c1e9a743a466a23ca270716b5a7 -Author: Patrik Oldsberg -Date: Tue Feb 25 10:45:09 2020 +0100 - - packages/core/layout/Page: port to typescript - -commit a958050c79af451ed5607682a104e4c4e07fbe57 -Author: Patrik Oldsberg -Date: Tue Feb 25 10:44:49 2020 +0100 - - packages/core: fix TemplateList export - -commit f584aea883f0a9008e56abcddc224a0cb869b4ba -Author: Patrik Oldsberg -Date: Tue Feb 25 10:44:28 2020 +0100 - - packages/core/api/time: remove time based greeting - -commit d1b539bac9e5cf8d1884176bf25e0afccb4ff106 -Author: Patrik Oldsberg -Date: Mon Feb 24 15:29:56 2020 +0100 - - frontend/packages: removed shared - -commit 803073dacffc989cea505495eef9bc10bc09215b -Merge: 8d0e3767c8 a290265e54 -Author: Patrik Oldsberg -Date: Mon Feb 24 14:56:39 2020 +0100 - - Merge pull request #115 from spotify/rugvip/plug - - packages/cli: some template fixes + register route - -commit 8d0e3767c8a56eb8a7a0d042a8247758a23f2852 -Merge: d0a6ccca44 b556949aa1 -Author: Patrik Oldsberg -Date: Mon Feb 24 14:53:22 2020 +0100 - - Merge pull request #113 from spotify/rugvip/nosecrets - - README,backend: remove secrets setup and disable entity services for now - -commit a290265e5445884c97de56a50545d9d1d02e19e2 -Author: Patrik Oldsberg -Date: Mon Feb 24 14:51:34 2020 +0100 - - frontend/README: update instructions for adding plugin - -commit ec99490137d74af6c936e002ac858f9ef7a796c9 -Author: Patrik Oldsberg -Date: Mon Feb 24 14:38:56 2020 +0100 - - packages/cli: some template fixes + register route - -commit d0a6ccca44f258cbd8174518c2f001336f72819c -Merge: f7b54f92e2 6335f15640 -Author: Patrik Oldsberg -Date: Mon Feb 24 12:45:56 2020 +0100 - - Merge pull request #114 from spotify/rugvip/rich - - README: add $5 - -commit 6335f15640ad9e0c9e80e7404e14ce0bdac20cd4 -Author: Patrik Oldsberg -Date: Mon Feb 24 12:45:28 2020 +0100 - - README: add $5 - -commit b556949aa111268b613b2c33a56e41dde53aa69b -Author: Patrik Oldsberg -Date: Mon Feb 24 11:54:07 2020 +0100 - - README,backend: remove secrets setup and disable entity services for now - -commit f7b54f92e2ba2484494c3494605cc49b79d898e5 -Merge: 6e7d00e5eb d3451aa5c9 -Author: Patrik Oldsberg -Date: Mon Feb 24 12:38:14 2020 +0100 - - Merge pull request #112 from spotify/rugvip/nomake - - README: updated instructions for creating plugin + yarn script and remove cookiecutter - -commit d3451aa5c9d8997eeebe538ee5c2a15e7a755be3 -Author: Patrik Oldsberg -Date: Mon Feb 24 11:42:12 2020 +0100 - - README: updated instructions for creating plugin + yarn script and remove cookiecutter - -commit 6e7d00e5ebf325d02cd531ec017ea2c7fea13e83 -Merge: 4abdc11012 c7101ad201 -Author: Raghunandan Balachandran -Date: Mon Feb 24 11:56:01 2020 +0100 - - Merge pull request #110 from spotify/freben/core-package - - Progress toward making core a standalone distributable package - -commit c7101ad201a2ea2d738342720484ff30fc8c1656 -Author: Raghunandan -Date: Mon Feb 24 11:48:55 2020 +0100 - - Remove web-scripts dep from app package - -commit 4abdc1101215d9f0895e5c6e81d79f76080b3375 -Merge: 855c062444 8c9b04b240 -Author: Patrik Oldsberg -Date: Mon Feb 24 11:47:12 2020 +0100 - - Merge pull request #111 from spotify/rugvip/readme - - move install instructions to readme + move docker-compose - -commit 8c9b04b24097a348468a91754b374df73a641f2c -Author: Patrik Oldsberg -Date: Mon Feb 24 11:01:14 2020 +0100 - - move install instructions to readme + move docker-compose - -commit b74006901c609f568ec00daa86e7ea4ac0033c09 -Author: Raghunandan -Date: Mon Feb 24 11:32:30 2020 +0100 - - Update yarn lock - -commit 664254dfd3b5855e661a13e056080985e27a4564 -Author: Raghunandan -Date: Mon Feb 24 11:29:50 2020 +0100 - - Depend on @spotify-backstage/core version 1.1.0 - -commit 6d69187800ff262235c769f0504922e7e6d9314d -Author: Fredrik Adelöw -Date: Fri Feb 21 14:52:58 2020 +0100 - - Progress toward making core a standalone distributable package - -commit 855c062444738afacbb9c9202489ee0521019f77 -Merge: 5925221658 59764c3a7f -Author: Patrik Oldsberg -Date: Mon Feb 24 11:09:44 2020 +0100 - - Merge pull request #109 from spotify/mob/more-templates - - [cli]: Better handling of files in the template directory - -commit 59764c3a7f2995b956409baebf861aaa8b570fb3 -Author: Marcus Eide -Date: Fri Feb 21 14:37:31 2020 +0100 - - Better handling of files in the template directory, and tests. - -commit 5925221658f3983e8bb03307cebdd8dfbb2ac58f -Author: Marcus Eide -Date: Thu Feb 20 16:31:03 2020 +0100 - - Bump version - -commit 53ec0c085590f9923731b9e7e49204cd592cbfcd -Merge: a6a88f9977 2d27436129 -Author: marcuseide -Date: Thu Feb 20 16:22:11 2020 +0100 - - Merge pull request #108 from spotify/mob/more-cli - - Mob/more cli - -commit 2d27436129df840b7bd3227ccc0e194cfcff200a -Author: Marcus Eide -Date: Thu Feb 20 14:59:47 2020 +0100 - - review comments - -commit 5b539a3e1407e457731de41c25e5a34f249dfda8 -Author: Marcus Eide -Date: Thu Feb 20 14:19:48 2020 +0100 - - refactor createPlugin and add tests. cli can now create a plugin from template - -commit a6a88f9977acc63aa7ec478407580ea3899bc358 -Merge: 5b5ec6e98d 8215318c4f -Author: Stefan Ålund -Date: Wed Feb 19 19:45:41 2020 +0100 - - Merge pull request #107 from spotify/fix-nested-navitems - - Fix nested NavItems - -commit 1b76e07910361a2ac770f492b57ccc2110b33b65 -Author: Fredrik Adelöw -Date: Wed Feb 19 14:39:20 2020 +0100 - - WIP - -commit 5b5ec6e98df55708c29a80004b6d9a76d170dc9e -Merge: 29b4e4f9a3 a4a07d03ed -Author: Fredrik Adelöw -Date: Wed Feb 19 14:50:11 2020 +0100 - - Merge pull request #106 from spotify/mob/cli-embryo - - cli package embryo to get started - -commit a4a07d03ed9cfedcf51404c314e5410210b91d9d -Author: Fredrik Adelöw -Date: Wed Feb 19 11:36:39 2020 +0100 - - cli package embryo to get started - -commit 8215318c4fd693cf35aa9abaa6fecf440cfdf3e4 -Author: Yasa Akbulut -Date: Wed Feb 19 14:20:10 2020 +0100 - - Update nested NavItem tests - -commit 7cde0fd01e629efbcb2b573b7c7c3e3e59e7b2cb -Author: Yasa Akbulut -Date: Wed Feb 19 14:17:57 2020 +0100 - - Fix nested NavItems - - Currently, a NavItem having more than one child will throw an error. This is due to the `children` property of `NavItem` being passed as the first argument to `React.cloneElement`, which expects a single element. The existing tests are only verifying the case where the `NavItem` has only one child. - - This commit maps over `children` and calls `React.cloneElement` on each of them. - -commit 29b4e4f9a34d88bbc527a9d3424a408022bb2d53 -Merge: 4d58971e2b 59f43de639 -Author: Raghunandan Balachandran -Date: Mon Feb 17 09:56:37 2020 +0100 - - Merge pull request #103 from spotify/raghub/unify-uri-format - - Unify the URI formats used in different services - -commit 59f43de63925aef9947002829d2f2d4599c3cc80 -Author: Raghunandan Balachandran -Date: Wed Feb 12 10:49:41 2020 +0100 - - Unify the URI formats used in different services - -commit 4d58971e2b5e604335bb9473c637eeccedcc08b1 (tag: hackweek-demo) -Merge: 8619dc6373 b3bb002ffe -Author: Stefan Ålund -Date: Sun Feb 9 20:15:38 2020 +0100 - - Merge pull request #102 from spotify/alund/home-click - - Made logo link to home + welcome message - -commit b3bb002ffed3c2aa69e2d3001fb4d08c628d0bdf -Author: Stefan Ålund -Date: Sun Feb 9 20:04:47 2020 +0100 - - Styling of main sidebar - -commit ecc2016779f5971040685d8c60d6cb3c14451ecd -Author: Stefan Ålund -Date: Sun Feb 9 17:48:03 2020 +0100 - - Subtitle in Header - -commit 09afb37f44e8289ec06186194a6f386f19cc6ce3 -Author: Stefan Ålund -Date: Sun Feb 9 17:46:39 2020 +0100 - - Add greetings message to home - -commit 3caa1f24ebb447f81af8e117144e1398d6739aad -Author: Stefan Ålund -Date: Sun Feb 9 17:17:08 2020 +0100 - - Made logo link to home - -commit 8619dc6373af403734528e4b6cbb0618d02b5ba3 -Merge: 2cd3208a66 07e2226532 -Author: Patrik Oldsberg -Date: Fri Feb 7 17:25:07 2020 +0100 - - Merge pull request #100 from spotify/blam/workflows - - Support some workflows - -commit 07e222653234422596c9f41824b17760ba8366e4 -Author: Patrik Oldsberg -Date: Fri Feb 7 17:19:21 2020 +0100 - - backend/scaffolder/templates: fix actions yaml - -commit 625d111c0956001968d2f4be2f780c344601c1ab -Author: Patrik Oldsberg -Date: Fri Feb 7 17:15:36 2020 +0100 - - front/plugins/github-actions: update fetch for info card - -commit 20bdbcb2794e5d435968aac7ffdde72c5c4c90c6 -Author: Patrik Oldsberg -Date: Fri Feb 7 17:14:29 2020 +0100 - - backend/inventory: add facts when creating entity - -commit e4594cb8ff402254d9c41fea01bb62dc6a1d74ad -Author: Patrik Oldsberg -Date: Fri Feb 7 17:02:14 2020 +0100 - - front/plugins/github-actions: fetch builds for actual entity - -commit bfc17bd2fce1b60d801c5ca1d218d7a088889696 -Author: Patrik Oldsberg -Date: Fri Feb 7 17:00:12 2020 +0100 - - backend/builds: fetch repo location from inventory - -commit 63346ecf44040262b84d293710363fd9ed5244ae -Author: blam -Date: Fri Feb 7 16:49:34 2020 +0100 - - feat(scaffolder): Support workflows and add some cool facts - -commit e3fae9d55d4a72d5f54e117bd5da74338d3e1573 -Author: blam -Date: Fri Feb 7 16:48:22 2020 +0100 - - Rename to workfllow - -commit 2cd3208a665de633ac00d884b36071cdaf36f05d -Author: blam -Date: Fri Feb 7 16:35:26 2020 +0100 - - feat(scaffolder): Updating templates - -commit d85aec41426b7b2d29367964ecfc3062ae081d25 -Merge: 0f830ec55e f66defbbec -Author: Patrik Oldsberg -Date: Fri Feb 7 16:32:11 2020 +0100 - - Merge pull request #99 from spotify/rugvip/list-services - - list services + quicker docker builds - -commit f66defbbec420a8ea784e0000fd501282e84202b -Author: Patrik Oldsberg -Date: Fri Feb 7 16:27:44 2020 +0100 - - front/plugins/home-page: list components - -commit a04b7c0ec2b0222eb050b4e2d895171830397570 -Author: Patrik Oldsberg -Date: Fri Feb 7 16:27:18 2020 +0100 - - backend: quicker docker rebuilds - -commit 0f830ec55e5063569a6e457fd11f236441c5f751 -Merge: 94bfd4e33d b73570dc5b -Author: Patrik Oldsberg -Date: Fri Feb 7 16:16:04 2020 +0100 - - Merge pull request #98 from spotify/blam/options - - Notify the Inventory Service when a new Component is created - -commit b73570dc5bc84814f6596cb843b91af3b220c1a9 -Author: blam -Date: Fri Feb 7 16:11:06 2020 +0100 - - feat(scaffolder): Notify the entity service that things have been created - -commit b1974c957fbbcfc04521687e85a2915234a12536 -Merge: f465a5f0d2 38503bed71 -Author: blam -Date: Fri Feb 7 16:10:56 2020 +0100 - - Merge branch 'blam/options' of github.com:spotify/backstage into blam/options - - * 'blam/options' of github.com:spotify/backstage: (30 commits) - lint fix - front/plugins/home-page: nicer - Be more clear about GitHub permissions - Cleanup README - try require instead of import - Updated to use forego - Added forego - fix typo - Removed newlines - Fixed merge conflict - Added a Brewfile - README: update secrets.env docs - cookiecutter seems to work - Use Struct for metadata - front/plugins/github-actions: add nicer build status indicator - fix: initialize db properly, add cfg and logs - front/plugins/github-actions: add back button to details page - Pass metadata description - front/app/entities: add build into card to service entities - front/plugins/github-actions: register build info card and popuplate card - ... - -commit 94bfd4e33d00da6efc2f2d53db8a1d938900e683 -Merge: b2bd888294 e46f326442 -Author: Patrik Oldsberg -Date: Fri Feb 7 15:34:43 2020 +0100 - - Merge pull request #96 from spotify/soapraj/add-loading - - add loading message - -commit b2bd8882949ad176ed88c60c8bde08ba0178f997 -Merge: 286a012564 38503bed71 -Author: Patrik Oldsberg -Date: Fri Feb 7 15:34:28 2020 +0100 - - Merge pull request #97 from spotify/blam/options - - Pushing the correct folder to Github - -commit f465a5f0d237323b381aedb1b5ae32f788e04a74 -Author: blam -Date: Fri Feb 7 15:33:31 2020 +0100 - - feat(scaffolder): register with inventory service - -commit 38503bed711bb670f33af28bcd7544f6ecbbcb3a -Merge: f44fa8f556 286a012564 -Author: Ben Lambert -Date: Fri Feb 7 15:08:45 2020 +0100 - - Merge branch 'master' into blam/options - -commit e46f326442e37bc8c021af1ecd454e929746f499 -Author: Raghunandan Balachandran -Date: Fri Feb 7 15:06:48 2020 +0100 - - fix typo - -commit f44fa8f5562e50a9ccb4609d038ec96de703cfae -Author: blam -Date: Fri Feb 7 15:06:11 2020 +0100 - - feat(scaffolder): uipdating scaffolder - -commit c00304a14300923d7882efe803dca7fac3f21085 -Author: blam -Date: Fri Feb 7 15:05:45 2020 +0100 - - chore: fixing docker compose - -commit 7366f4336f22f8ffad939867e9a93813ae7f8fc1 -Author: Raghunandan Balachandran -Date: Fri Feb 7 15:00:01 2020 +0100 - - add more props - -commit 93297a499f5d56cd04502d02ea6189b709155e00 -Author: Raghunandan Balachandran -Date: Fri Feb 7 14:59:18 2020 +0100 - - fix build - -commit 286a0125643836325adf00a9b03696c82d49941b -Author: Patrik Oldsberg -Date: Fri Feb 7 14:57:12 2020 +0100 - - lint fix - -commit e6c0b80b346a1f581a33d5e9472e579715c44faf -Author: Patrik Oldsberg -Date: Fri Feb 7 14:56:57 2020 +0100 - - front/plugins/home-page: nicer - -commit 7b8e8e6303cebc8e86b01a0058bb43c4c6fe5710 -Author: Raghunandan Balachandran -Date: Fri Feb 7 14:50:49 2020 +0100 - - add loading message - -commit 7cb5ba443d10cb0bea44131ccb251db8f9c16f29 -Author: Bilawal Hameed -Date: Fri Feb 7 14:49:36 2020 +0100 - - Be more clear about GitHub permissions - -commit a550e89862aa34becefb6258a0f5825a75c6fd48 -Merge: 1ecdc6baec a3077d4c89 -Author: Bilawal Hameed -Date: Fri Feb 7 14:46:25 2020 +0100 - - Merge pull request #91 from spotify/bil/add-brewfile - - Added Brewfile for installing Docker, Git and other dependencies - -commit 1ecdc6baecc95d3b64204f87ace9ef8f73c9218f -Merge: e4838c2129 6f4b7d9c93 -Author: Raghunandan Balachandran -Date: Fri Feb 7 14:43:07 2020 +0100 - - Merge pull request #94 from spotify/soapraj/call-cookiecutter - - Soapraj/call cookiecutter - -commit a3077d4c89b27f521b4f453c035c713bd81b1523 -Author: Bilawal Hameed -Date: Fri Feb 7 14:37:53 2020 +0100 - - Cleanup README - -commit 6f4b7d9c9308256059e271f5f08fec3e3b14739d -Author: Raghunandan Balachandran -Date: Fri Feb 7 14:37:28 2020 +0100 - - try require instead of import - -commit deda60b8434206a136f4b7fafd98f1f801b44675 -Author: Bilawal Hameed -Date: Fri Feb 7 14:33:25 2020 +0100 - - Updated to use forego - -commit a84004f00ac5eb0ec093498414e72e7d73eca56c -Author: Bilawal Hameed -Date: Fri Feb 7 14:27:23 2020 +0100 - - Added forego - -commit 779559b4a5febf91b97760dc350657cb6ef67fb2 -Author: Bilawal Hameed -Date: Fri Feb 7 14:15:06 2020 +0100 - - fix typo - -commit fdaa0538d8d3d118ee5c544528b9d617fc53a54c -Author: Bilawal Hameed -Date: Fri Feb 7 14:10:36 2020 +0100 - - Removed newlines - -commit 0d1842658c9a61eccc07921d1539ad005cd39c38 -Author: Bilawal Hameed -Date: Fri Feb 7 14:36:12 2020 +0100 - - Fixed merge conflict - -commit 3d70b117cf65e7f5168246df5211409de6117ced -Author: Bilawal Hameed -Date: Fri Feb 7 13:49:10 2020 +0100 - - Added a Brewfile - -commit e4838c21298e2fa43341f6caf1b08eb53b0185e0 -Merge: 8d9fdd3878 2bed4f1e1a -Author: Patrik Oldsberg -Date: Fri Feb 7 14:33:30 2020 +0100 - - Merge pull request #95 from spotify/rugvip/read-secrets - - README: update secrets.env docs - -commit 8d9fdd3878f9f90760166050c9935b6bb69fc363 -Merge: ead1aac874 bdcab1fee7 -Author: Jefferson Girão -Date: Fri Feb 7 14:32:21 2020 +0100 - - Merge pull request #93 from spotify/db-init - - fix: initialize db properly, add cfg and logs - -commit 2bed4f1e1af1d47cba25d0efec495c6b2e313b8a -Author: Patrik Oldsberg -Date: Fri Feb 7 14:32:20 2020 +0100 - - README: update secrets.env docs - -commit b05e045ef00083a3c37d5bc4bff65b483c164dc0 -Author: blam -Date: Fri Feb 7 14:31:55 2020 +0100 - - chore(scaffolder): Reworking some issues with the scaffolder setup and cookiecutter - -commit 17e60d92e331e6da4ae016cea3bae9855bd09c53 -Author: Raghunandan Balachandran -Date: Fri Feb 7 14:32:03 2020 +0100 - - cookiecutter seems to work - -commit 06f7b6694b2c010fb297f80dc322b478b93f4dcb -Merge: 22f588c07e ead1aac874 -Author: Raghunandan Balachandran -Date: Fri Feb 7 14:27:13 2020 +0100 - - Merge branch 'master' of github.com:spotify/backstage into soapraj/call-cookiecutter - -commit 22f588c07e004ee35963809c83a83b28fc1524f8 -Author: Raghunandan Balachandran -Date: Fri Feb 7 14:18:19 2020 +0100 - - Use Struct for metadata - -commit ead1aac874882698fca6014aaddc07566998231d -Merge: 4207d792e2 7234da7cd9 -Author: Patrik Oldsberg -Date: Fri Feb 7 14:18:07 2020 +0100 - - Merge pull request #92 from spotify/rugvip/build-stuff - - front/plugins/github-actions: add nicer build status indicator + details view styling - -commit 7234da7cd998aa290330ff90efc7a90c8a2b43c3 -Author: Patrik Oldsberg -Date: Fri Feb 7 14:14:42 2020 +0100 - - front/plugins/github-actions: add nicer build status indicator - -commit bdcab1fee7c6e5b47860a9398ef7fc88addde57d -Author: Jefferson Girão -Date: Fri Feb 7 14:14:39 2020 +0100 - - fix: initialize db properly, add cfg and logs - -commit f57b897dd0dcde395f001869335aa85027fbecf2 -Author: Patrik Oldsberg -Date: Fri Feb 7 14:14:17 2020 +0100 - - front/plugins/github-actions: add back button to details page - -commit e33fcdae78151227bd0e47ed3db9323278b103bf -Author: Raghunandan Balachandran -Date: Fri Feb 7 14:07:40 2020 +0100 - - Pass metadata description - -commit 4207d792e2874ba863121f4ea6059c6ef852eaa6 -Merge: be27a4ec4a c21263d64c -Author: Patrik Oldsberg -Date: Fri Feb 7 13:47:08 2020 +0100 - - Merge pull request #89 from spotify/rugvip/builds-card - - front: add plugin api for widgets + build info card for services - -commit be27a4ec4af20bfb7e287c61ca59badd26d2214d -Merge: 8d7833ac5c 0ef8e18815 -Author: Fredrik Adelöw -Date: Fri Feb 7 13:46:57 2020 +0100 - - Merge pull request #90 from spotify/freben/heights - - Fix heights and paddings - -commit 8d7833ac5c6fa8c078d8a1db26f03c138f967c5f -Merge: 6847deafde d1c0fd9d49 -Author: Fredrik Adelöw -Date: Fri Feb 7 13:42:58 2020 +0100 - - Merge pull request #88 from spotify/freben/norubber - - Disable the annoying rubberband 'overscroll' effect going outside of the page boundaries - -commit c21263d64cf95f2d62af7b76745ed96a5f333d86 -Author: Patrik Oldsberg -Date: Fri Feb 7 13:40:35 2020 +0100 - - front/app/entities: add build into card to service entities - -commit bb15807004d3bc51f1612a2f3fa4e0757e677e4c -Author: Patrik Oldsberg -Date: Fri Feb 7 13:40:21 2020 +0100 - - front/plugins/github-actions: register build info card and popuplate card - -commit 42e24486eb6d1eceb1a51073c8588c15ee1e4aef -Author: Patrik Oldsberg -Date: Fri Feb 7 13:40:02 2020 +0100 - - front/core/DefaultWidgetView: tweak padding - -commit 0ef8e18815a28d2c9c6bfb0c7fb9fa5c160ef78b -Author: Fredrik Adelöw -Date: Fri Feb 7 13:41:09 2020 +0100 - - Fix heights and paddings - -commit c906b03e3beab4be2ef0a289fc24697ce8c5d2ec -Author: Raghunandan Balachandran -Date: Fri Feb 7 13:39:38 2020 +0100 - - Initial commit to integrate with scaffolder - -commit 6847deafde37c29dcea5013c6c57d635feebccf4 -Merge: 4b440b5298 4bc315223e -Author: Jefferson Girão -Date: Fri Feb 7 13:32:19 2020 +0100 - - Merge pull request #85 from spotify/procfile - - chore: procfile - -commit d1c0fd9d49d3a6532c47530acf6fd37fb4c7ae03 -Author: Fredrik Adelöw -Date: Fri Feb 7 13:30:45 2020 +0100 - - Disable the annoying rubberband 'overscroll' effect going outside of the page boundaries - -commit 4b440b5298042b2937508435b3051c1a6ef385fb -Merge: 01a6670010 46a11b8b49 -Author: Stefan Ålund -Date: Fri Feb 7 13:28:40 2020 +0100 - - Merge pull request #87 from spotify/alund/nav-fix - - Styling of navigation - -commit bb450005af9a852de37d5b6ec22c476c7dda7203 -Author: Patrik Oldsberg -Date: Fri Feb 7 13:27:43 2020 +0100 - - front/core: add plugin api hooks and output for widgets - -commit 4bc315223e9aaea2b618c015133201cdf982165b -Author: Jefferson Girão -Date: Fri Feb 7 13:25:06 2020 +0100 - - add build flag to compose - -commit 46a11b8b4996aed4ec25291dc3840728465bde25 -Author: Stefan Ålund -Date: Fri Feb 7 13:21:23 2020 +0100 - - Styling of navigation - -commit ea35a14f68d74c87946aaed052a9974c87444b6b -Author: Patrik Oldsberg -Date: Fri Feb 7 13:11:56 2020 +0100 - - front/core: add DefaultWidgetView and pass params for widgets - -commit 01a6670010398caf5a70d5bb21ce7649c8b2b412 -Merge: bb1b5f59df 05d82143a6 -Author: Stefan Ålund -Date: Fri Feb 7 13:08:53 2020 +0100 - - Merge pull request #86 from spotify/rugvip/mock-entity - - front/app/entities: more mock content on service page - -commit ea581a2c62fa5b805cab7985318f6b7195ee3ab6 -Author: Patrik Oldsberg -Date: Fri Feb 7 12:50:32 2020 +0100 - - front/plugins/github-actions/BuildsListPage: tweak styles - -commit 05d82143a698ac8715efe056dd6f8672b61edbae -Author: Patrik Oldsberg -Date: Fri Feb 7 12:49:22 2020 +0100 - - front/core: add material-ui to deps - -commit 652732a6eafb59f82372f9bc9899a798cd098891 -Author: Patrik Oldsberg -Date: Fri Feb 7 12:49:11 2020 +0100 - - front/app/entities: more mock content on service page - -commit bb1b5f59dfeea45a86627560d42ed3dcf6633750 -Merge: d944e106fd 518decc20b -Author: Patrik Oldsberg -Date: Fri Feb 7 12:37:19 2020 +0100 - - Merge pull request #83 from spotify/rugvip/readme - - README: added local run instructions - -commit 3d3e78cc56255607c7e87821f0bde0cec9b770e0 -Author: Jefferson Girão -Date: Fri Feb 7 12:19:28 2020 +0100 - - chore: procfile - -commit d944e106fd4a42a295b604ad261055865baae1c2 -Merge: 98e274564f 4992b2a3ca -Author: Jefferson Girão -Date: Fri Feb 7 12:01:30 2020 +0100 - - Merge pull request #82 from spotify/inventory-routing - - fix: adjust routing for inventory - -commit 98e274564fc7f6cb9a64a7329ed38fc357da897b -Merge: 711a2cef96 cd9ae76700 -Author: Bilawal Hameed -Date: Fri Feb 7 12:01:13 2020 +0100 - - Merge pull request #81 from spotify/bil/sample-env-template - - Add a secrets.env.sample for easier secret setup - -commit 711a2cef96ffeb50ce1e82a52fc0374fc131dc42 -Merge: a0f9c44bf6 61ef0d341e -Author: Bilawal Hameed -Date: Fri Feb 7 12:01:00 2020 +0100 - - Merge pull request #84 from spotify/bil/add-makefile - - Setup Makefile for easier build commands - -commit 61ef0d341efdc15ecd12e8872248395d8ab9570a -Author: Bilawal Hameed -Date: Fri Feb 7 12:00:26 2020 +0100 - - insert final newline - -commit 1c094efd25d739c0cf14254469beeea0e474c7e0 -Author: Bilawal Hameed -Date: Fri Feb 7 11:57:30 2020 +0100 - - Added yarn install to make build - -commit 707264a9b11799af0caa6a7c48af78fef1fc6392 -Author: Bilawal Hameed -Date: Fri Feb 7 11:55:37 2020 +0100 - - Updated root README docs - -commit ee5f49b7a24607e88be3b75ed3209016c185db4e -Author: Bilawal Hameed -Date: Fri Feb 7 11:55:26 2020 +0100 - - added Makefile - -commit a0f9c44bf6eb5e7cb27a70c0e3bb1b77f97b19be -Merge: 47cdc94fb0 297949d3c9 -Author: Patrik Oldsberg -Date: Fri Feb 7 11:52:49 2020 +0100 - - Merge pull request #80 from spotify/rugvip/home-links - - front/plugins/home-page: nicer box of things - -commit 47cdc94fb0dca3c6f5c839e63b04576db1edba6a -Merge: d9fea35c4f bc01c71cd1 -Author: Raghunandan Balachandran -Date: Fri Feb 7 11:52:32 2020 +0100 - - Merge pull request #73 from spotify/soapraj/create-entity-view - - Soapraj/create entity view - -commit 4992b2a3ca7fba6c369526a587988d86b482d35b -Author: Jefferson Girão -Date: Fri Feb 7 11:50:23 2020 +0100 - - fix: adjust routing for inventory - -commit bc01c71cd1e05ada005a391840d37095962178ec -Author: Raghunandan Balachandran -Date: Fri Feb 7 11:43:44 2020 +0100 - - Fix PR comments - -commit 757a549740f420881811990bf2578f1411a0e965 -Author: Raghunandan Balachandran -Date: Fri Feb 7 11:29:40 2020 +0100 - - Update yarn lock - -commit 049659bba90591a9cb393677e2d1c7064ef3a824 -Author: Raghunandan Balachandran -Date: Thu Feb 6 13:24:52 2020 +0100 - - add create entity plugin - -commit 2721d96e90f45e9a7d95eba5980d350bd298cc09 -Author: Raghunandan Balachandran -Date: Thu Feb 6 17:41:38 2020 +0100 - - list templates - -commit 79c2000a18875d92ad6159872f58fba320f96de2 -Author: Raghunandan Balachandran -Date: Thu Feb 6 13:24:52 2020 +0100 - - add create entity plugin - -commit 518decc20be6a9902518c5729240b731ef9578e7 -Author: Patrik Oldsberg -Date: Fri Feb 7 11:46:37 2020 +0100 - - README: added local run instructions - -commit e53ec4fb34d3c657ef522717d5a30388d5c47805 -Author: Raghunandan Balachandran -Date: Fri Feb 7 11:26:31 2020 +0100 - - Add entity form page - -commit 305fb208496fa63b7dcc7c264f5af3878e58e9cf -Author: Raghunandan Balachandran -Date: Thu Feb 6 13:24:52 2020 +0100 - - add create entity plugin - -commit 59a37f657c91379f139844fac6ec840d62112194 -Author: Raghunandan Balachandran -Date: Thu Feb 6 17:41:38 2020 +0100 - - list templates - -commit cd9ae767001e890fc6826678f4ba0f2f66fa1b86 -Author: Bilawal Hameed -Date: Fri Feb 7 11:46:07 2020 +0100 - - Added docs - -commit d9fea35c4fd5cb90129e23c7af1cf902a2948a56 -Merge: 1b8c5a184b b515f6bb54 -Author: Nicola Corti -Date: Fri Feb 7 11:45:25 2020 +0100 - - Merge pull request #79 from spotify/android-kotlin-feature - - Adding an Android Module Kotlin template - -commit d8f28dc94e4dd6608818c69607fa1f1e6daaf415 -Author: Bilawal Hameed -Date: Fri Feb 7 11:45:15 2020 +0100 - - Add a secrets.env.example - -commit 73ba54fea59af49ac933713609fd05c50284a221 -Author: Raghunandan Balachandran -Date: Fri Feb 7 11:45:09 2020 +0100 - - add create entity plugin - -commit 1b8c5a184b569e6b812c16076b541d01943b66bc -Merge: 4a7f326295 1157e333ad -Author: Ben Lambert -Date: Fri Feb 7 11:34:09 2020 +0100 - - Merge pull request #74 from spotify/blam/run-cookie-cutter - - Actually run the Cookie Cutter in the Folder - -commit 297949d3c926d870926111b85ef24c5d8420a819 -Author: Patrik Oldsberg -Date: Fri Feb 7 11:29:46 2020 +0100 - - front/plugins/home-page: nicer box of things - -commit 4a7f326295979c5bd3cca71c810ab529d71ac400 -Merge: 8f58c49aa1 0968fc876a -Author: Jefferson Girão -Date: Fri Feb 7 11:26:57 2020 +0100 - - Merge pull request #77 from spotify/include-facts - - feat: include facts when listing entities - -commit 0968fc876a1f6dee7a72e769cb0b84ebc7344d81 -Author: Jefferson Girão -Date: Fri Feb 7 11:25:29 2020 +0100 - - remove non existing seed data for now - -commit b515f6bb5427d1d1dd93008b547a7023468e634b -Author: Nicola Corti -Date: Fri Feb 7 11:21:18 2020 +0100 - - Adding an Android Module Kotlin template - -commit 8f58c49aa1cf90cbaafa88e988d86e1355945f01 -Merge: 40632290cf 961dc279a9 -Author: Patrik Oldsberg -Date: Fri Feb 7 11:14:19 2020 +0100 - - Merge pull request #65 from spotify/alund/home-v1 - - Moving things into Home - -commit 961dc279a9826436b011f9eef7820493637085e1 -Author: Patrik Oldsberg -Date: Fri Feb 7 11:08:33 2020 +0100 - - front/plugins/home-page: fix SquadTechHealth tests - -commit da8895abace089bf15cf7354aba7caf2223cd195 -Author: Patrik Oldsberg -Date: Fri Feb 7 11:05:49 2020 +0100 - - front/core/layout/Page: remove page grid - -commit 40632290cfee299398044c977b887c3200d1231b -Merge: e54e5fe761 f070b8e1d0 -Author: Patrik Oldsberg -Date: Fri Feb 7 10:55:38 2020 +0100 - - Merge pull request #78 from spotify/rugvip/entity-page - - front/core: restructure entity page components + styling - -commit 1592cc9a985d543cd58e8a82334abdac576126fa -Author: Patrik Oldsberg -Date: Fri Feb 7 10:55:04 2020 +0100 - - frontend/core: deps and test fixes - -commit b94c16bb260a69fe92c986b402307164d377cd53 -Author: Jefferson Girão -Date: Fri Feb 7 10:44:33 2020 +0100 - - fix typo on docker-compose entry - -commit ca5485b7d73ee6bcf59194ad1cc8ea589ef36b63 -Author: Jefferson Girão -Date: Fri Feb 7 10:42:18 2020 +0100 - - explictly defining linters - -commit d5521de9e5141991d2ce0318353a837cb9cc532b -Author: Jefferson Girão -Date: Fri Feb 7 10:31:20 2020 +0100 - - refactor: move facts into entity - -commit 2885a46936b7a5f40e36cef562108e81bad62fb3 -Merge: daa53a0de6 f070b8e1d0 -Author: Patrik Oldsberg -Date: Fri Feb 7 10:11:08 2020 +0100 - - Merge branch 'rugvip/entity-page' into alund/home-v1 - -commit f070b8e1d03d4accb094f0e9fdda85789d46d23e -Author: Patrik Oldsberg -Date: Fri Feb 7 10:05:48 2020 +0100 - - front: test fixes - -commit 3014b96be32de3d728eecd09799b3082dbc8b178 -Author: Patrik Oldsberg -Date: Fri Feb 7 09:50:17 2020 +0100 - - front/app/SideBar: fixed sidebar - -commit 94efef0d05304b4bf967d0cd0a9518c280b72808 -Author: Patrik Oldsberg -Date: Fri Feb 7 09:47:28 2020 +0100 - - front/github-actions/BuildListPage: some paddings - -commit 568028dfbf2943208d2ed79a90cb311d5e569343 -Author: Patrik Oldsberg -Date: Fri Feb 7 09:46:50 2020 +0100 - - front/app,core: fix horizontal scroll - -commit feba36e239d5d267260485e807564814948ae251 -Author: Jefferson Girão -Date: Fri Feb 7 09:44:42 2020 +0100 - - feat: include facts when listing entities - -commit 58ad9cd3228b5d74c3ef8255d20d524769f462cd -Author: Patrik Oldsberg -Date: Fri Feb 7 09:27:04 2020 +0100 - - front/core/DefaultEntityPageNavbar: stole styling from alunds PR - -commit 87bdd8279b0e1ef6551ef2dfa73f0aab85875f25 -Author: Patrik Oldsberg -Date: Fri Feb 7 09:26:30 2020 +0100 - - front/core/EntityLink: forward props - -commit f97b1b56333c138658a2db56daa2ee1f29486144 -Author: Patrik Oldsberg -Date: Fri Feb 7 09:26:10 2020 +0100 - - front/core: added common type for icon components and require for entity nav items - -commit c62f92d9126dff8f7e872f462263f7311d71b8a3 -Author: Patrik Oldsberg -Date: Thu Feb 6 20:39:56 2020 +0100 - - front/core/DefaultEntityPageHeader: provide hard-coded service theme for now - -commit b69ee27d9efb28b9072f8acb862182b11d42876b -Author: Patrik Oldsberg -Date: Thu Feb 6 20:33:03 2020 +0100 - - front/app: move AppShell things into home-page plugin - -commit ea4b1a52f9a5b1b49f88342a40d1dcf4b43ed140 -Author: Patrik Oldsberg -Date: Thu Feb 6 20:24:06 2020 +0100 - - front/core/DefaultEntityPage: use grid layout - -commit fab433d02fb71c0382ab3f492fc868ee370791be -Author: Patrik Oldsberg -Date: Thu Feb 6 20:18:34 2020 +0100 - - front/core: add material-ui to deps - -commit 00f1d9d8e89dbe2f98f9756971ff0086946ed4d0 -Author: Patrik Oldsberg -Date: Thu Feb 6 20:15:23 2020 +0100 - - front/core/api/entityView: move default components out to components - -commit aec0eb0536599cec73f65b9a4f202ca3ecdf4b6d -Author: Patrik Oldsberg -Date: Thu Feb 6 20:04:47 2020 +0100 - - front/core/api/entityView: reorg entity view page components - -commit a0917e7f1b12cbbe29c504809d56ddef3e68674f -Author: Patrik Oldsberg -Date: Thu Feb 6 19:49:31 2020 +0100 - - frontend/core: fix index import parts - -commit 1157e333ad9b3b05e060bbf8e7bf7f3b86979726 -Author: blam -Date: Fri Feb 7 09:36:26 2020 +0100 - - chore(scaffolder): Should be Fatal not Panic - -commit e238860186432e477ff7a668b9a061bae5536a96 -Author: blam -Date: Fri Feb 7 09:34:33 2020 +0100 - - feat(scaffolder): Push the repository to github with the access token provided - -commit e54e5fe7617421e8eaa910867f53241142cb9a43 -Merge: 7bfb994e29 d9c31241f9 -Author: Patrik Oldsberg -Date: Fri Feb 7 09:32:50 2020 +0100 - - Merge pull request #76 from spotify/rugvip/branch - - builds: add branch to build info - -commit 7bfb994e2934a80e5b626b5ca4ddff6933348f98 -Merge: 33f6444366 c0426dcdbf -Author: Patrik Oldsberg -Date: Fri Feb 7 09:32:36 2020 +0100 - - Merge pull request #75 from spotify/rugvip/errors - - builds: error handling fixes - -commit daa53a0de6a975f4dc32cd610f5ac56faf14bd01 -Author: Stefan Ålund -Date: Fri Feb 7 09:06:57 2020 +0100 - - Fixed path to testUtils - -commit 33f64443661dab4901d4dd7b88c75a7f8bd379ec -Merge: 0d1fa1c70b 46b514705e -Author: Jefferson Girão -Date: Fri Feb 7 09:06:00 2020 +0100 - - Merge pull request #71 from Tiglas/refactor-tests - - refactor: group related tests into subtests - -commit a56d0c1be7b2c7b85592b67b4f55a540c5a70baf -Author: Stefan Ålund -Date: Thu Feb 6 21:11:15 2020 +0100 - - trial and error - -commit 645de2aae9120c6b495dc592419f586adbf9dde5 -Author: Stefan Ålund -Date: Thu Feb 6 21:05:17 2020 +0100 - - Add link to /create - -commit 528cb651467bb838e207c28a2e8995fdff2bed40 -Merge: 5dbe930604 0d1fa1c70b -Author: Stefan Ålund -Date: Thu Feb 6 21:03:27 2020 +0100 - - Merge branch 'master' into alund/home-v1 - -commit 5dbe930604823f41fd3800e05688bb9fe0b77cb4 -Author: Stefan Ålund -Date: Thu Feb 6 20:53:07 2020 +0100 - - Update yarn.lock - -commit d9c31241f93bce33ea1f5aed2b84943bcdf4f4d6 -Author: Patrik Oldsberg -Date: Thu Feb 6 17:50:57 2020 +0100 - - builds: add branch to build info - -commit 76a6dc3c601e411f67a3fd87ecf6f70b4a7c99d5 -Author: blam -Date: Thu Feb 6 17:48:56 2020 +0100 - - chore(scaffolder): setting the run context to default for all containers - -commit d0dddf3a0a8dbc5d7e29b7fb68ce33a80f6472e2 -Author: blam -Date: Thu Feb 6 17:45:30 2020 +0100 - - chore(scaffolder): remove the superfluous command - -commit 4697245252f37d53662cddeab717e5e4675adc67 -Author: blam -Date: Thu Feb 6 17:42:23 2020 +0100 - - feat(scaffolder): actually run the cookie cutter now in the folder and pass through the metadata to the cookiecutter.json - -commit c0426dcdbf868b2e21456517f4e4cef1905908b5 -Author: Patrik Oldsberg -Date: Thu Feb 6 17:40:00 2020 +0100 - - frontend/plugins/github-actions: fix error display - -commit d571c714edabd1bb00e8e645f7a4c910b1ffa44c -Author: Patrik Oldsberg -Date: Thu Feb 6 17:39:15 2020 +0100 - - backend/builds: error handling fixes - -commit 0d1fa1c70bfb0cc2d95e03c75844aeea6cd6dba2 -Merge: e6f9ffb876 b1b815124f -Author: Patrik Oldsberg -Date: Thu Feb 6 17:37:35 2020 +0100 - - Merge pull request #72 from spotify/rugvip/builds-view - - frontend/plugins/github-actions: real builds list and detail views - -commit b1b815124f84e992805cfd4b774112a13b910678 -Author: Patrik Oldsberg -Date: Thu Feb 6 17:15:53 2020 +0100 - - frontend/plugins/github-actions: real builds list and detail views - -commit 46b514705ed3b7fe465e7d1f069b42a395a4fb96 -Author: Ochieng' Got -Date: Thu Feb 6 17:10:57 2020 +0100 - - refactor: group related tests into subtests - -commit e6f9ffb8764afb02979ef4bd6f6268d2a23c2739 -Author: blam -Date: Thu Feb 6 16:53:42 2020 +0100 - - Regenerate types for scaffolder - -commit b844de0cd51e2b3029b137309e6a2c3c9af7c7ae -Author: blam -Date: Thu Feb 6 16:48:37 2020 +0100 - - feat(scaffolder): Starting to add the cookiecutter support for running the template after we've got all the data - -commit a6cf703464be885298069687de95bc47336c5b9f -Merge: ae4c85297f 701431476a -Author: Jefferson Girão -Date: Thu Feb 6 16:35:48 2020 +0100 - - Merge pull request #69 from spotify/freben/entity-list - - Add ability to list entities to inventory - -commit ae4c85297f1b9e9909640231d9babea2accfe9ac -Merge: 84065fab64 c52d6cbb19 -Author: Nicola Corti -Date: Thu Feb 6 16:24:39 2020 +0100 - - Merge pull request #67 from spotify/android-kotlin-template - - Adding an Android App Kotlin template - -commit 84065fab64a6f5a12df48c1f93ae0398ff9e5815 -Merge: 0a047e1a2f 88a56ac68f -Author: Patrik Oldsberg -Date: Thu Feb 6 16:20:21 2020 +0100 - - Merge pull request #70 from spotify/rugvip/deployment-fixes - - deployment fixes - -commit 88a56ac68f4a4862f1a9eaabad170c220072ffdf -Author: Patrik Oldsberg -Date: Thu Feb 6 16:19:07 2020 +0100 - - docker-compose: include secrets in scaffolder - -commit 8fdd8e54b361b345a11f48be580c5ed63ea1637b -Author: Patrik Oldsberg -Date: Thu Feb 6 16:18:17 2020 +0100 - - backend/proxy: added builds service route - -commit bee14ad29bc81ffc78405f228f2c1fee49448bce -Author: Patrik Oldsberg -Date: Thu Feb 6 16:18:00 2020 +0100 - - backend/Dockerfile: install ca-certificates - -commit 89842fafdeb97ac9d3f3f3ad9ae1869b3f098ffe -Author: Patrik Oldsberg -Date: Thu Feb 6 16:17:44 2020 +0100 - - backend/proxy: fix envoy version - -commit 701431476a1c4b0301c6c10588289d22ed42e532 -Author: Fredrik Adelöw -Date: Thu Feb 6 15:19:13 2020 +0100 - - Add ability to list entities to inventory - -commit 0a047e1a2fdc72712875f5594438a745ec5e3898 -Merge: 98dfb1afc9 84f43819f1 -Author: Raghunandan Balachandran -Date: Thu Feb 6 15:00:59 2020 +0100 - - Merge pull request #68 from spotify/rugvip/frontend-proto-import - - frontend/proto: expose protobuf definitions in index + fix deps - -commit 84f43819f1b22cbda7ef2d6b34ae68e3d09980f4 -Author: Patrik Oldsberg -Date: Thu Feb 6 14:55:31 2020 +0100 - - frontend/proto: expose protobuf definitions in index + fix deps - -commit c52d6cbb19dc146303a047b63945da9e86ae905e -Author: Nicola Corti -Date: Thu Feb 6 14:50:44 2020 +0100 - - Include the /main folder for the App Template - -commit 98dfb1afc977926b736f9a29a5fb470f4afc7250 -Merge: 1378c4d218 331a72b20d -Author: Ben Lambert -Date: Thu Feb 6 14:50:41 2020 +0100 - - Merge pull request #55 from spotify/ben/listing-components - - Create Component in Scaffolder - -commit 2fba9893d8309fa39f63f4bba12f43bae556cad0 -Author: Nicola Corti -Date: Thu Feb 6 14:50:24 2020 +0100 - - Update build.gradle to use the proper application id - -commit 331a72b20d004d9ddbd9f8dd0654bfb86af84866 -Merge: aecd2f7e3f 1378c4d218 -Author: blam -Date: Thu Feb 6 14:48:08 2020 +0100 - - Merge branch 'master' of github.com:spotify/backstage into ben/listing-components - - * 'master' of github.com:spotify/backstage: (25 commits) - backend/scaffolder: fix build - backend,proto: added builds service that calls out to github api - proto: update README - proto: switch to grpc-web plugin + ship protoc plugin binary, because meh - feat: returning correct list of included facts - refactor: Protobuf messages - No separate login link anymore - add failing scenario for getting entity - Persist login (for now - due to constant page reloads) - feat: add set fact endpoint - Mark package as private - frontend: remove gen-proto script, replaced by proto package - Updated docs - Fixed prototool - Added generated files - Added service=grpc-web flag - Added protobuf-gen-ts to prototool.yaml - Ran yarn install - Added a @backstage/protobuf-definitions package - frontend/core: simplify plugin output handling - ... - -commit 4460447790e7c3cbebe99bfee1dbc1fd2b1d5cef -Author: Nicola Corti -Date: Thu Feb 6 14:45:16 2020 +0100 - - Bump Gradle to 6.1.1 in the template - -commit 37829fe278195f434cff8aaa1061adcdd51ce18c -Author: Nicola Corti -Date: Thu Feb 6 14:41:17 2020 +0100 - - Update cookiecutter.json to include all the used tags - -commit 7b431b9c9dac68f607efe57a85e1163c5b39c022 -Author: Nicola Corti -Date: Thu Feb 6 14:32:21 2020 +0100 - - .DS_Store to gitignore - -commit b9e4da7bb651431028fb883d6faec6cc250ae3e1 -Author: Stefan Ålund -Date: Thu Feb 6 14:03:35 2020 +0100 - - Move in SortableTable - -commit 1378c4d218a6eef7ff932d0c77eb81962f41b2ac -Merge: 210b458995 93ce7bcec3 -Author: Patrik Oldsberg -Date: Thu Feb 6 14:01:01 2020 +0100 - - Merge pull request #66 from spotify/rugvip/scaffolder-build - - backend/scaffolder: fix build - -commit af6faccd33f016755fe35476d894adfb52be1ce1 -Author: Nicola Corti -Date: Thu Feb 6 13:53:05 2020 +0100 - - Adding an Android App Kotlin template - -commit 93ce7bcec3d1017751bec3b7a0561f0cb90981f0 -Author: Patrik Oldsberg -Date: Thu Feb 6 13:48:44 2020 +0100 - - backend/scaffolder: fix build - -commit 392fdf94e449d2ee47e4ed0309fc54c0d6c0ab24 -Author: Stefan Ålund -Date: Thu Feb 6 13:46:21 2020 +0100 - - Moving things into Home - -commit 210b4589951983dee9b60ee8c90d83d2c8784854 -Merge: edab1c6512 efb65546c0 -Author: Patrik Oldsberg -Date: Thu Feb 6 13:45:31 2020 +0100 - - Merge pull request #64 from spotify/rugvip/grpc-web - - proto: switch to grpc-web plugin + ship protoc plugin binary, because meh - -commit edab1c6512c1fb021da0781550c765114a08132b -Merge: a50df7914f 43367b2fff -Author: Patrik Oldsberg -Date: Thu Feb 6 13:39:17 2020 +0100 - - Merge pull request #62 from spotify/rugvip/builds - - backend,proto: added builds service that calls out to github api - -commit 43367b2fff2c027ac31fd56aa94a804f8a4c703d -Author: Patrik Oldsberg -Date: Thu Feb 6 13:07:48 2020 +0100 - - backend,proto: added builds service that calls out to github api - -commit efb65546c09b235c4adfb4e8d21e244fc3700cfa -Author: Patrik Oldsberg -Date: Thu Feb 6 13:37:09 2020 +0100 - - proto: update README - -commit ced428d3a4ef6edb34cfb139b59f906e5c8641aa -Author: Patrik Oldsberg -Date: Thu Feb 6 13:27:44 2020 +0100 - - proto: switch to grpc-web plugin + ship protoc plugin binary, because meh - -commit a50df7914f431ee3a0eae5072e7febbdf9313f28 -Merge: 4a676ada7b 90495b6187 -Author: Jefferson Girão -Date: Thu Feb 6 13:33:57 2020 +0100 - - Merge pull request #63 from spotify/get-entity - - feat: get single entity with facts - -commit 90495b6187ffb30611ed98958bd6ae017b74c54f -Author: Jefferson Girão -Date: Thu Feb 6 13:18:56 2020 +0100 - - feat: returning correct list of included facts - -commit 4a676ada7b1dc9fd00bbe400b96ba7bbe1ecc231 -Merge: f09d1065a0 940d472df1 -Author: Patrik Oldsberg -Date: Thu Feb 6 13:10:53 2020 +0100 - - Merge pull request #58 from spotify/rugvip/simplify-output - - frontend/core: simplify plugin output handling - -commit 1832a3a7638f31b40e57e3640c572cf8afcae7e1 -Author: Ochieng' Got -Date: Thu Feb 6 12:05:01 2020 +0100 - - refactor: Protobuf messages - -commit f09d1065a046afa74a6d7636ab932f4782f7810c -Merge: 2524a71bca cc2b0e821d -Author: Fredrik Adelöw -Date: Thu Feb 6 11:43:26 2020 +0100 - - Merge pull request #61 from spotify/freben/nologin - - No separate login link anymore - -commit cc2b0e821d5b7d66fcf45306dfe2d53afc92b9ab -Author: Fredrik Adelöw -Date: Thu Feb 6 11:28:38 2020 +0100 - - No separate login link anymore - -commit ae5283e1d47593b708dd8fe665c19cd87602a5ca -Author: Jefferson Girão -Date: Thu Feb 6 11:08:02 2020 +0100 - - add failing scenario for getting entity - -commit 2524a71bca19254732e9eff343ad604d9f43214a -Merge: 88f1bd9176 926732ce6c -Author: Stefan Ålund -Date: Thu Feb 6 11:05:37 2020 +0100 - - Merge pull request #60 from spotify/freben/persist-login - - Persist login (for now - due to constant page reloads) - -commit 926732ce6cc2762892a7be1c9a547639d3a4c59c -Author: Fredrik Adelöw -Date: Thu Feb 6 10:49:00 2020 +0100 - - Persist login (for now - due to constant page reloads) - -commit 88f1bd9176e0fd5f8dae80dae45ed3a822607a1e -Merge: 2b58a65598 fcbbe7072e -Author: Raghunandan Balachandran -Date: Thu Feb 6 10:47:59 2020 +0100 - - Merge pull request #54 from spotify/bil/add-typescript-gen - - Added Protobuf definitions for TypeScript using Prototool - -commit 2b58a6559837f5b613972d878c555929e5d3dbeb -Merge: eabe2de155 7e67224d24 -Author: Jefferson Girão -Date: Thu Feb 6 10:34:24 2020 +0100 - - Merge pull request #59 from spotify/set-fact-endpoint - - feat: set fact endpoint - -commit 7e67224d242bb1697f8000cd46393234f53c7a14 -Author: Jefferson Girão -Date: Thu Feb 6 10:27:02 2020 +0100 - - feat: add set fact endpoint - -commit fcbbe7072e8a8e67ef54748fd8f9beefb7ab06fc -Author: Bilawal Hameed -Date: Wed Feb 5 19:50:04 2020 +0100 - - Mark package as private - -commit bd7ebdb4ea5791c17b23a0fd571d43f02611f0b3 -Author: Patrik Oldsberg -Date: Wed Feb 5 17:53:02 2020 +0100 - - frontend: remove gen-proto script, replaced by proto package - -commit 18186f6c4bb50eec77b96a84f625ce7e4f7d0564 -Author: Bilawal Hameed -Date: Wed Feb 5 16:55:00 2020 +0100 - - Updated docs - -commit 21e6fcf355a26ae8daf70dacae1ed0a1d9b6b559 -Author: Bilawal Hameed -Date: Wed Feb 5 16:53:15 2020 +0100 - - Fixed prototool - -commit fdfcdae4e4cd3a8a4a2cba572e72492d7ab842bc -Author: Bilawal Hameed -Date: Wed Feb 5 15:56:22 2020 +0100 - - Added generated files - -commit 7b039442841844beb049351dba90b520606f8893 -Author: Bilawal Hameed -Date: Wed Feb 5 15:56:12 2020 +0100 - - Added service=grpc-web flag - -commit b6be0d0f25c03ce759c073d963076b16e8f93f37 -Author: Bilawal Hameed -Date: Wed Feb 5 15:50:34 2020 +0100 - - Added protobuf-gen-ts to prototool.yaml - -commit 94c72a5ea0c82c42aee676b2a68422f71ad8fd93 -Author: Bilawal Hameed -Date: Wed Feb 5 15:50:15 2020 +0100 - - Ran yarn install - -commit 5be413a44d242edf437bac3bd67e3070e5b5c090 -Author: Bilawal Hameed -Date: Wed Feb 5 15:49:58 2020 +0100 - - Added a @backstage/protobuf-definitions package - -commit 940d472df104568c6b6cf23b2f5e6dbdaf37b33b -Author: Patrik Oldsberg -Date: Thu Feb 6 10:00:28 2020 +0100 - - frontend/core: simplify plugin output handling - -commit eabe2de1551a4b1d41a30876c9d745d5bd338375 -Merge: 6996b8c1eb b894a0be0c -Author: Patrik Oldsberg -Date: Thu Feb 6 09:59:36 2020 +0100 - - Merge pull request #56 from spotify/rugvip/plugin-output - - frontend: added github-actions plugin skeleton + plugin output experiments - -commit 6996b8c1eb0d97ca5b376f8cfbd6b4ad2f1db3c6 -Merge: 4ee1eb25ec 07bbd89dee -Author: Stefan Ålund -Date: Thu Feb 6 09:52:57 2020 +0100 - - Merge pull request #57 from spotify/alund/new-nav - - New collapsing navigation - -commit 07bbd89deedb95a69ecc7f3c6a69748aced52dd0 -Author: Stefan Ålund -Date: Thu Feb 6 09:38:27 2020 +0100 - - Update Header.js - -commit 52eb8cf8e7a557e53db77471fb946aa55c534804 -Author: Stefan Ålund -Date: Thu Feb 6 09:32:26 2020 +0100 - - New collapsing navigation - -commit a8964d45745af5bd6ce3f03d18e5ab49c481ba21 -Author: Jefferson Girão -Date: Thu Feb 6 09:26:22 2020 +0100 - - chore: delete unused file - -commit 4ee1eb25ec5c60d35cbf4c86a6a6842d2b70c379 -Merge: a4b5117a27 a63d3af1d7 -Author: Fredrik Adelöw -Date: Thu Feb 6 09:13:39 2020 +0100 - - Merge pull request #51 from spotify/freben/login - - Add a login barrier - -commit b894a0be0c747edbbf4c11e5901bf788abce9cfe -Author: Patrik Oldsberg -Date: Thu Feb 6 09:01:55 2020 +0100 - - frontend: added github-actions plugin skeleton + plugin output experiments - -commit a63d3af1d78698efe45de3d891db9b45ffd0780e -Author: Fredrik Adelöw -Date: Wed Feb 5 15:57:46 2020 +0100 - - Add a login barrier - -commit aecd2f7e3f5dabdae2e3fce3393c460b1583642f -Author: blam -Date: Thu Feb 6 04:28:39 2020 +0100 - - fix(scaffolder): Fixing some small issues with CI workflows - -commit 37ad61bb0deac86e4b29cd8f018be1c8792b86d4 -Author: blam -Date: Thu Feb 6 04:19:50 2020 +0100 - - hack(scaffolder): to get imports to work nicely with the current protobuf setup, we can slightly change the import rewrites in go modules to point to same place without error - -commit c21ce9e768408ca2c6b3811411c168dc13339f6d -Author: blam -Date: Thu Feb 6 04:07:44 2020 +0100 - - feat(scaffolder): Added scaffolder github workflw - -commit da0588b865d3a42ef60abb53171c85e6f493aa72 -Merge: 9f9949503a a4b5117a27 -Author: blam -Date: Thu Feb 6 04:02:47 2020 +0100 - - Merge branch 'master' of github.com:spotify/backstage into ben/listing-components - - * 'master' of github.com:spotify/backstage: - frontend/core: restructure api a bit - frontend/core: added plugin route registration api + moved home page to plugin - Update yarn.lock - Fix proto/README.md typo - remove createGlobalStyles from theme - Add iOS Swift template - frontend/core: add some kinda app api - remove tinycolor. remove muithemeprovider - fix tests - Remove hello proto - more deps - bring in Page, Header, InfoCard, ErrorBoundary, BackstageTheme, Navigation, SupportButtons, HeaderAction, HeaderLabel components from backstage frontend - -commit 9f9949503a5e12e8257f2ce1286bc69eeffbd36e -Author: blam -Date: Thu Feb 6 04:00:37 2020 +0100 - - feat(scaffolder): Added the ability to create a component, create GH repo + copy to template to temp folder ready for cookiecutter - -commit a4b5117a2744545c7de69b59c21a71717b126046 -Merge: a6d4681134 c112b57ed6 -Author: Ben Lambert -Date: Thu Feb 6 04:00:01 2020 +0100 - - Merge pull request #52 from spotify/ben/listing-components - - Listing Templates Dynamically - -commit e75fae037703da9279faf0bd35fc54c0397e78fe -Author: blam -Date: Wed Feb 5 21:20:42 2020 +0100 - - feat(scaffolder): Added the ability to create the repos with optional org in github - -commit a6d46811346049707772cf0693f47e61d9173632 -Merge: e2ed240ee2 2485df1495 -Author: Patrik Oldsberg -Date: Wed Feb 5 20:24:12 2020 +0100 - - Merge pull request #53 from spotify/rugvip/core-api-structure - - frontend/core: restructure api a bit + fixes - -commit 2485df1495fb1c1b2f6e502b14e8e06e070a2466 -Author: Patrik Oldsberg -Date: Wed Feb 5 16:44:33 2020 +0100 - - frontend/core: restructure api a bit - -commit e2ed240ee26c684768dc7f7fea290b9ce4754125 -Merge: 9440212e96 a78237b67e -Author: Patrik Oldsberg -Date: Wed Feb 5 17:42:09 2020 +0100 - - Merge pull request #50 from spotify/alund/yarn-fresh - - Update yarn.lock - -commit c112b57ed65fbe688e0e6b738a5926002a889926 -Author: blam -Date: Wed Feb 5 16:47:04 2020 +0100 - - chore(scaffolder): Add a comment about loading from disk every time - -commit 600a001d6f84a152e63a6e183ce88a7cf9efba37 -Author: blam -Date: Wed Feb 5 16:45:45 2020 +0100 - - feat(scaffolder): Dynamically load the files from disk - -commit 9440212e96be43f91879d0abec69c659cbaa6c14 -Merge: 6ac93a293b bda7cb8b7a -Author: Patrik Oldsberg -Date: Wed Feb 5 16:20:22 2020 +0100 - - Merge pull request #47 from spotify/rugvip/home-page-plugin - - frontend/core: added plugin route registration api + moved home page to plugin - -commit e1ddbe60e9bb5277b44376370fb37162fd70ba20 -Author: blam -Date: Wed Feb 5 16:07:03 2020 +0100 - - chore(scaffolder): make the build work with the new folder structure - -commit fe2b02e70fb98c9612acc00bf35c795ec444157d -Author: blam -Date: Wed Feb 5 15:37:58 2020 +0100 - - chore(scaffolder): moving around some files and bringing the project more in line with the inventory service - -commit 1f699f7fa5d9219cfbd2b454e8439c027538977e -Author: blam -Date: Wed Feb 5 15:13:45 2020 +0100 - - chore(scaffolder): gofmt - -commit bda7cb8b7a32dc535c7b6d0051022f81027c9874 -Author: Patrik Oldsberg -Date: Wed Feb 5 15:10:01 2020 +0100 - - frontend/core: added plugin route registration api + moved home page to plugin - -commit a78237b67e53529fc88375232ab8bc46812dfce2 -Author: Stefan Ålund -Date: Wed Feb 5 15:45:46 2020 +0100 - - Update yarn.lock - -commit 6ac93a293b2e979dcdf536115be57e5b140c4849 -Merge: 848cb38fa6 b21af5d883 -Author: Patrick Balestra -Date: Wed Feb 5 15:31:45 2020 +0100 - - Merge pull request #48 from spotify/patrickb/add-ios-swift-app-template - - Add iOS Swift template - -commit 848cb38fa6cce06213e97e149572fc76d22317eb -Merge: 5aada28fcf f8b2e1b8c1 -Author: Stefan Ålund -Date: Wed Feb 5 15:27:32 2020 +0100 - - Merge pull request #49 from spotify/bih-fix-proto-readme-typo - - Fix proto/README.md typo - -commit 5aada28fcf3f44410341b6d9994fa05affbf5e78 -Merge: c6d67cf400 95ea391cc1 -Author: Raghunandan Balachandran -Date: Wed Feb 5 15:22:19 2020 +0100 - - Merge pull request #46 from spotify/soapraj/fix-global-styles - - remove createGlobalStyles from theme - -commit f8b2e1b8c1f69b5eb882d5129b6ca8cb8ac94f79 -Author: Bilawal Hameed -Date: Wed Feb 5 15:21:47 2020 +0100 - - Fix proto/README.md typo - -commit 95ea391cc1de40974b6f87f3d8b3687ffda85255 -Author: Raghunandan Balachandran -Date: Wed Feb 5 14:47:09 2020 +0100 - - remove createGlobalStyles from theme - -commit b21af5d883f941034ba502af008dee56be886245 -Author: Patrick Balestra -Date: Wed Feb 5 15:03:17 2020 +0100 - - Add iOS Swift template - -commit c6d67cf400ba134cc1937197707fcdc7f18cda7e -Merge: 449df0d5cb 0d4a12e7f5 -Author: Patrik Oldsberg -Date: Wed Feb 5 14:47:32 2020 +0100 - - Merge pull request #43 from spotify/rugvip/app-api - - frontend/core: add some kinda app api - -commit 0d4a12e7f564b9bf1aa5e7d13d995a6cbb4286c0 -Author: Patrik Oldsberg -Date: Wed Feb 5 13:46:00 2020 +0100 - - frontend/core: add some kinda app api - -commit 449df0d5cbcbb565ccacd4dbdb38c1e30de18d3e -Merge: 548e9732e1 e5472c46fc -Author: JD Welch -Date: Wed Feb 5 14:10:13 2020 +0100 - - Merge pull request #44 from spotify/soapraj/theming-changes - - theming changes - -commit e5472c46fc64d323a15b50bd4c1468a7ed0a2c7e -Author: Raghunandan Balachandran -Date: Wed Feb 5 13:53:20 2020 +0100 - - remove tinycolor. remove muithemeprovider - -commit 548e9732e166dd685d7511cf879b8e5b6e8fc54c -Merge: a3dc2cfe37 4d6dff9d0d -Author: Fredrik Adelöw -Date: Wed Feb 5 11:49:35 2020 +0100 - - Merge pull request #42 from spotify/freben/hellono - - Remove hello proto - -commit a3dc2cfe37385dc3d21f861535cff7ee36d7a349 -Merge: 0afa1e2628 c323e853a8 -Author: Raghunandan Balachandran -Date: Wed Feb 5 11:38:13 2020 +0100 - - Merge pull request #40 from spotify/soapraj/layout-changes - - Update layout, header - -commit c323e853a85d482bc9a25cfbc4db25684e47e748 -Author: Raghunandan Balachandran -Date: Wed Feb 5 11:35:19 2020 +0100 - - fix tests - -commit 4d6dff9d0d4117193006a3754c784f929813e877 -Author: Fredrik Adelöw -Date: Wed Feb 5 10:54:17 2020 +0100 - - Remove hello proto - -commit 0afa1e2628c8a85d8ca4f45fc7db7d89d5096b55 -Merge: ae9bb72e3f 7f623dd986 -Author: Patrick Balestra -Date: Wed Feb 5 10:24:28 2020 +0100 - - Merge pull request #38 from spotify/implement-list-templates - - Add hardcoded templates response - -commit ae9bb72e3f73b364bd2135233dbb847d0179cdd1 -Merge: 6e6d7b8c8f 0bcfd6a1b2 -Author: Jefferson Girão -Date: Wed Feb 5 10:06:57 2020 +0100 - - Merge pull request #31 from spotify/storing-entitities - - feat: create and get entity - -commit 6104d88d5a52c7b2d9a5c5c7d92045158d1f9c2e -Author: Raghunandan Balachandran -Date: Wed Feb 5 01:02:00 2020 +0100 - - more deps - -commit 923e5abd17e1405d501f1ca7b2605f1c80bf98db -Author: Raghunandan Balachandran -Date: Wed Feb 5 00:42:34 2020 +0100 - - bring in Page, Header, InfoCard, ErrorBoundary, BackstageTheme, Navigation, SupportButtons, HeaderAction, HeaderLabel components from backstage frontend - -commit 6e6d7b8c8f4569758fccb1cca466230a9e9069a4 -Merge: 29972559a2 161aad5a93 -Author: Patrik Oldsberg -Date: Tue Feb 4 16:36:47 2020 +0100 - - Merge pull request #37 from spotify/rugvip/no-hello - - backend: remove hello - -commit 161aad5a936b91201eb9c5546bbfea1ab745313c -Author: Patrik Oldsberg -Date: Tue Feb 4 16:36:17 2020 +0100 - - backend: remove hello - -commit 7f623dd9867279947dbb0ef05bd9cde24b01f733 -Author: Patrick Balestra -Date: Tue Feb 4 16:35:47 2020 +0100 - - Add hardcoded templates response - -commit 29972559a2b92d1672c48d0cde8821f65a759214 -Merge: 43f1200a13 2918e16413 -Author: Patrik Oldsberg -Date: Tue Feb 4 16:31:09 2020 +0100 - - Merge pull request #35 from spotify/rugvip/be-docker - - backend: added generic dockerfile + docker-compose - -commit 43f1200a13fc9da576bd8dde5bcab89712868112 -Merge: 8295cbfc0d e85d5cc041 -Author: Patrick Balestra -Date: Tue Feb 4 16:02:07 2020 +0100 - - Merge pull request #36 from spotify/react-ssr-template - - Add react-ssr-template - -commit e85d5cc0414cf0389e2940581f918a771f24e3ee -Author: Patrick Balestra -Date: Tue Feb 4 15:59:55 2020 +0100 - - Add react-ssr-template - - Signed-off-by: Patrick Balestra - -commit 2918e164132b0879358b9e4280fbb3d98e3b2c43 -Author: Patrik Oldsberg -Date: Tue Feb 4 15:37:39 2020 +0100 - - backend: added generic dockerfile - -commit 8295cbfc0d78a7952e9dda4dc99315fe34724b0c -Merge: b52ece5b9b d01cff2573 -Author: Patrik Oldsberg -Date: Tue Feb 4 15:47:31 2020 +0100 - - Merge pull request #33 from spotify/rugvip/identity - - backend/identity: add implementation with static data - -commit d01cff25739585ef3ec4bdde5fb8680cd6e477a0 -Author: Patrik Oldsberg -Date: Tue Feb 4 13:56:18 2020 +0100 - - backend/identity: add implementation with static data - -commit b52ece5b9b111c5e2a946cd17f54daef0cc5cc15 -Merge: 843c6f3f70 2346ef47a3 -Author: Patrik Oldsberg -Date: Tue Feb 4 15:38:18 2020 +0100 - - Merge pull request #34 from spotify/scaffolder - - Add scaffolder service - -commit 2346ef47a3b655df6a24a098804c059c2501081e -Author: Patrick Balestra -Date: Tue Feb 4 15:37:34 2020 +0100 - - got protobuf + go working together. - -commit ca3213b9f6f8b38e5ad8c3a9ba4dd6ecaf98ca0a -Author: Patrick Balestra -Date: Tue Feb 4 14:46:44 2020 +0100 - - Refactor envoy configuration - - Signed-off-by: Patrick Balestra - -commit 706c666c654ec0ae2ac8c57643cf14caf9012f9b -Author: Patrick Balestra -Date: Tue Feb 4 14:38:24 2020 +0100 - - Add scaffolder service - - Signed-off-by: Patrick Balestra - -commit 843c6f3f708c428d1c04551b7dfe4ae280e582fc -Merge: 4184ff0908 f0b951fd13 -Author: Stefan Ålund -Date: Tue Feb 4 14:02:58 2020 +0100 - - Merge pull request #32 from spotify/soapraj/login-changes - - minor fixes / add grid to login page - -commit f0b951fd138aa9a3a9d9691b8f1d407e4f6db834 -Author: Raghunandan Balachandran -Date: Tue Feb 4 13:29:44 2020 +0100 - - fix typo - -commit c82fac8af1b001f7b7493b48dac3f6a1f65d12c1 -Author: Raghunandan Balachandran -Date: Tue Feb 4 13:18:45 2020 +0100 - - move app shell to the top - -commit ba83266bf50ca4751cf75145427a89fb7f592d8f -Author: Raghunandan Balachandran -Date: Tue Feb 4 13:17:01 2020 +0100 - - minor fixes / add grid to login page - -commit 0bcfd6a1b227dc1d9ae4571b721e02b5ca014e41 -Author: Jefferson Girão -Date: Tue Feb 4 12:12:09 2020 +0100 - - feat: add entity creation and get endpoint - - * move to common proto setup - -commit 4184ff0908ce43a4f8da598d2a89b25c715fb66f -Merge: 19c7c21718 33a811c978 -Author: Raghunandan Balachandran -Date: Tue Feb 4 12:22:27 2020 +0100 - - Merge pull request #30 from spotify/soapraj/add-react-router - - Add react router and login page - -commit 33a811c9781807b21e0a314a047da28cdd8f5ece -Author: Raghunandan Balachandran -Date: Tue Feb 4 12:20:37 2020 +0100 - - Fix test - -commit 693979fca152b8319809fcb6af86e227406f34aa -Author: Raghunandan Balachandran -Date: Tue Feb 4 12:06:32 2020 +0100 - - Add react router and login page - -commit 70c59f3d75e86e4f61a5249e90591d97f1b74c99 -Author: Jefferson Girão -Date: Tue Feb 4 11:04:46 2020 +0100 - - remove binary added by mistake - -commit b4d3213c289666694a54c7424bb41548e68f5398 -Author: Jefferson Girão -Date: Tue Feb 4 10:52:32 2020 +0100 - - chore: linter dependencies - -commit 9806e518fdaf311c41ad35aa0737f9598398fff9 -Author: Jefferson Girão -Date: Tue Feb 4 10:37:32 2020 +0100 - - style: put server in its own package - -commit 19c7c217182d1cb474a828e47d6018a101751420 -Merge: c34c416964 ad4b9585c4 -Author: Patrik Oldsberg -Date: Tue Feb 4 12:07:26 2020 +0100 - - Merge pull request #29 from spotify/rugvip/go-proto - - add proto/ with prototool management + backend/proto and backend/identity example - -commit ad4b9585c4330760d2074217386142632756b7ee -Author: Patrik Oldsberg -Date: Tue Feb 4 11:58:13 2020 +0100 - - add proto/ with prototool management + backend/proto and backend/identity example - -commit c34c416964f3e07cc48f0b6a1a6de3009b224b2e -Merge: a4da0e9d24 ba19ca2558 -Author: JD Welch -Date: Tue Feb 4 11:12:16 2020 +0100 - - Merge pull request #27 from spotify/rugvip/components - - frontend/app: move sidebar and header into separate components - -commit ba19ca25588065952bac3632b9f1e21c64a55685 -Author: Patrik Oldsberg -Date: Tue Feb 4 11:00:30 2020 +0100 - - frontend/app: move sidebar and header into separate components - -commit a4da0e9d24628f1d1489780ab6ce5807c9c42975 -Merge: 33af665b12 7a7e252d5d -Author: Patrik Oldsberg -Date: Tue Feb 4 10:54:41 2020 +0100 - - Merge pull request #23 from spotify/rugvip/inv-store - - inventory: added basic unused storage api - -commit 33af665b124de63106a095e67b02929a1174a268 -Merge: 602e915dd7 eeaff99219 -Author: Stefan Ålund -Date: Tue Feb 4 10:40:34 2020 +0100 - - Merge pull request #22 from spotify/alund/shared - - Copy over most of shared - -commit 602e915dd7bb1207b3a258989364cd8f99ca10e4 -Merge: 58b11cd954 42008bf101 -Author: Patrik Oldsberg -Date: Tue Feb 4 10:40:00 2020 +0100 - - Merge pull request #24 from spotify/rugvip/npmrc - - frontend: add npmrc - -commit eeaff992193b0fa5cc424197b24348426e4c6cf9 -Merge: 6b60faf02e 58b11cd954 -Author: Stefan Ålund -Date: Tue Feb 4 10:37:07 2020 +0100 - - Merge branch 'master' into alund/shared - -commit 58b11cd9547d2872d2e813013ebbcdafed7c1ef9 -Merge: 6a457bc989 b22636bcd6 -Author: Stefan Ålund -Date: Tue Feb 4 10:36:46 2020 +0100 - - Merge pull request #25 from spotify/ncorti/fix-broken-master - - Fix broken test on master for /frontend - -commit b22636bcd658b6dbecaa10da9022f67103130691 -Author: Nicola Corti -Date: Tue Feb 4 10:33:36 2020 +0100 - - Fix broken test on master for /frontend - -commit 42008bf1011e6f9d2fe07d4d97e0786bb9f21ad3 -Author: Patrik Oldsberg -Date: Tue Feb 4 10:27:25 2020 +0100 - - frontend: add npmrc - -commit 7a7e252d5d87496178fd836d6d8f7d7eed3a99b7 -Author: Patrik Oldsberg -Date: Tue Feb 4 10:24:22 2020 +0100 - - inventory: added basic unused storage api - -commit 6a457bc9896feb9682687972c1db3698eb0c65b6 -Merge: 11f69235ee 2d46724338 -Author: Patrik Oldsberg -Date: Tue Feb 4 10:12:18 2020 +0100 - - Merge pull request #20 from spotify/rugvip/proto-web - - frontend: add grpc-web script, lint fixes, hello world - -commit 6b60faf02eaa0b391a9637de6eb137c8595a1fb4 -Author: Stefan Ålund -Date: Tue Feb 4 10:02:12 2020 +0100 - - rename stuff - -commit 41a260e919d9d163557d04bb1f8da818187c3f89 -Author: Stefan Ålund -Date: Tue Feb 4 09:59:13 2020 +0100 - - Remove some layouts - -commit 11f69235eedb50900d0d5d0f12aebeedb11ed732 -Merge: 24f5ff2447 751586c38a -Author: Jefferson Girão -Date: Tue Feb 4 09:51:51 2020 +0100 - - Merge pull request #21 from spotify/inventory-ci - - chore: add CI worflow for inventory backend - -commit f89359ee07dd89e2f0c51496fa80a58c91eba00b -Author: Stefan Ålund -Date: Tue Feb 4 09:51:40 2020 +0100 - - Copy over most of shared - -commit 751586c38ad116db02fc0f5a04a3a441611f6622 -Author: Jefferson Girão -Date: Tue Feb 4 09:22:21 2020 +0100 - - chore: restrict frontend ci to its workflow - -commit 44ee4fa030478237b9e1ae65f23dafb8325fad06 -Author: Jefferson Girão -Date: Tue Feb 4 09:20:15 2020 +0100 - - chore: add CI worflow for inventory backend - -commit 24f5ff2447b70248e973c90a6979733dab0364e8 -Merge: 6a411c937d 5a5fab3209 -Author: Jefferson Girão -Date: Tue Feb 4 09:20:01 2020 +0100 - - Merge pull request #18 from spotify/inventory-service-skeleton - - feat: skeleton inventory service - -commit 6a411c937d1c455c233aad07d44e59af228a43c8 -Merge: 8267d843d6 9aad7c9fc4 -Author: Stefan Ålund -Date: Tue Feb 4 08:53:01 2020 +0100 - - Merge pull request #15 from spotify/jdwelch/app_frame - - saffold of page frame, nav, header - -commit 8267d843d69c2de8f2a187434ef78cae10bdc3f2 -Merge: 0a15c43341 56a61d53bf -Author: Stefan Ålund -Date: Mon Feb 3 20:20:54 2020 +0100 - - Merge pull request #19 from spotify/ncorti-uncomment-license - - Uncomment the Apache2 License and include a full text version of it - -commit 2d4672433830ed9b59ea35b78a60b18ddd4b373f -Author: Patrik Oldsberg -Date: Mon Feb 3 19:21:28 2020 +0100 - - frontend: add grpc-web script, lint fixes, hello world - -commit 0a15c43341e19fff50e47df16d3587d7bab049a2 -Merge: 0d7ecaf53f b65928ed1e -Author: Stefan Ålund -Date: Mon Feb 3 18:14:13 2020 +0100 - - Merge pull request #16 from spotify/ncorti-fix-yarn-serve - - Updating README to use yarn start rather than serve - -commit 5a5fab320953a0f8690f6e87a952ce1bd613690a -Author: Jefferson Girão -Date: Mon Feb 3 16:59:44 2020 +0100 - - feat: skeleton inventory service - -commit 9aad7c9fc4801d9eb4f1bd0118909fa45cd076af -Author: JD Welch -Date: Mon Feb 3 16:54:48 2020 +0100 - - change fixed units to use theme.spacing() - -commit 56a61d53bf6d6703d096ea1bddacdb0bf161f9b6 -Author: Nicola Corti -Date: Mon Feb 3 16:54:22 2020 +0100 - - Uncomment the Apache2 License and include a full text version of it - -commit b65928ed1e9cb6ef742f6625c0fe4994c4900878 -Author: Nicola Corti -Date: Mon Feb 3 16:49:49 2020 +0100 - - Updating README to use yarn start rather than serve - -commit 0d7ecaf53f9c51d9f8aa2a20766be0c3aa4a3284 -Merge: 1df29c02b0 13dd28f51a -Author: Patrik Oldsberg -Date: Mon Feb 3 16:26:35 2020 +0100 - - Merge pull request #14 from spotify/rugvip/inv - - protos: initial inventory service proto - -commit 99caec566fe77cf2311a820c3c507d384861e95b -Author: JD Welch -Date: Mon Feb 3 16:24:08 2020 +0100 - - saffold of page frame, nav, header - -commit 1df29c02b0c347f05e0f373526f3525513176e4f -Merge: bf5aa1360a 16e342e8d1 -Author: Jefferson Girão -Date: Mon Feb 3 16:09:49 2020 +0100 - - Merge pull request #10 from spotify/deploy-it - - chore: deploy it with zeit now - -commit bf5aa1360a2b7889fee0dbcc25dac715f053c2dd -Merge: 843a471f11 c95619a264 -Author: Nicola Corti -Date: Mon Feb 3 16:07:07 2020 +0100 - - Fix actions/setup-node to not use working-directory (#13) - - Fix actions/setup-node to not use working-directory - -commit 843a471f115d9b776605049905ec15c82965fe05 -Merge: 757133c07e 1f06a567e9 -Author: Bilawal Hameed -Date: Mon Feb 3 16:05:34 2020 +0100 - - Merge pull request #8 from spotify/bih-patch-1 - - Update meta tag description - -commit 757133c07e801cc8c6296dcabe93eacabef83b45 -Merge: 50b03e8ae9 c9c3df2363 -Author: Bilawal Hameed -Date: Mon Feb 3 16:03:09 2020 +0100 - - Merge pull request #12 from spotify/mob/add-plugin-architecture - - Improve plugin template and add plugin generator - -commit c9c3df2363b5757c7209dc9057558dcf637dcaad -Author: Bilawal Hameed -Date: Mon Feb 3 16:01:08 2020 +0100 - - Update docs to explain how to import plugin - -commit 13dd28f51a99d6afdfc6afbe613a2eb648d9389d -Author: Patrik Oldsberg -Date: Mon Feb 3 15:47:14 2020 +0100 - - protos: initial inventory service proto - -commit 60d6c38105c68660a9bf25b4f29a92769440ce62 -Author: Bilawal Hameed -Date: Mon Feb 3 15:35:55 2020 +0100 - - Fix issue with components structure - -commit 419c95764a576b9ffad3cbe96865358e1e54ca54 -Author: Bilawal Hameed -Date: Mon Feb 3 15:25:54 2020 +0100 - - Export component in plugin root - -commit 901fd56cdcaae66a12dbd3e13bfcc0bcc45db7a3 -Author: Bilawal Hameed -Date: Mon Feb 3 15:23:44 2020 +0100 - - Add plugin prefix to plugin template - -commit c95619a264e20e7715f6ee7eb533c386cc93cdd0 -Author: Nicola Corti -Date: Mon Feb 3 15:21:35 2020 +0100 - - Fix actions/setup-node to not use working-directory - -commit 7936a0643d5785fd0001d6f2d2ac940112576c72 -Author: Bilawal Hameed -Date: Mon Feb 3 15:17:28 2020 +0100 - - Add docs and enable cookiecutter to support other templates - -commit 7d9160db50e00de44febc272fd37f0840921eb62 -Author: Bilawal Hameed -Date: Mon Feb 3 15:05:08 2020 +0100 - - Update cookiecutter default value - -commit 537bd6dbd97512926a112cd7ce5b758af1f76fe5 -Author: Bilawal Hameed -Date: Mon Feb 3 15:02:48 2020 +0100 - - Use cookiecutter variables in template + add component - -commit 50b03e8ae9567d143a715353c873c2de24c43666 -Merge: 42cb257354 0ee6f06d3d -Author: Patrik Oldsberg -Date: Mon Feb 3 15:00:59 2020 +0100 - - Merge pull request #11 from spotify/rugvip/proxy - - added protos,backend/hello,backend/envoy + compose setup - -commit 0ee6f06d3d4ce88dc155526f401c1894cac2c25d -Author: Patrik Oldsberg -Date: Mon Feb 3 14:50:22 2020 +0100 - - added protos,backend/hello,backend/envoy + compose setup - -commit 3461527969929e1a5f2b783b906d6900ac70a75e -Author: Bilawal Hameed -Date: Mon Feb 3 14:57:23 2020 +0100 - - Add plugin cookiecutter - -commit 16e342e8d195169a8cbe7b7e6fd499671f812cd2 -Author: Jefferson Girão -Date: Mon Feb 3 14:31:17 2020 +0100 - - chore: deploy it with zeit now - - * Install now (https://github.com/zeit/now) npm i -g now - * Deploy it with now - -commit 42cb2573540994430b8595b684d85fbf55fc3d13 -Merge: a02a33d406 02bbc9b2ba -Author: Raghunandan Balachandran -Date: Mon Feb 3 14:12:23 2020 +0100 - - Merge pull request #9 from spotify/move-docker-compose-out - - move docker compose file to top level dir - -commit 02bbc9b2bab45ca362b4dbac3a42adf160ab6e86 -Author: Raghunandan Balachandran -Date: Mon Feb 3 14:05:51 2020 +0100 - - move docker compose file to top level dir - -commit a02a33d406945ef947bab3d7cd5f019621b0231b -Merge: 80302f21db 622b37149c -Author: Jefferson Girão -Date: Mon Feb 3 13:57:11 2020 +0100 - - Merge pull request #7 from spotify/fix-frontend-ci - - chore: fix ci setup and cache node modules - -commit 1f06a567e99bf05005ed8cf30113fa32fd753557 -Author: Bilawal Hameed -Date: Mon Feb 3 13:56:56 2020 +0100 - - Update meta tag description - -commit 622b37149cf5bc583b82d2265db8a6db1e8db5bf -Author: Jefferson Girão -Date: Mon Feb 3 13:54:14 2020 +0100 - - chore: use public registry - -commit 73ecac091f8f077b8ab7d4cdf0e5e36c1fe0adbd -Author: Jefferson Girão -Date: Mon Feb 3 13:43:39 2020 +0100 - - chore: cache yarn, not npm - -commit 5b021167b483d1c4385c9eb7bb548452b1fc0ba7 -Author: Jefferson Girão -Date: Mon Feb 3 13:23:26 2020 +0100 - - chore: fix ci setup and cache node modules - -commit 80302f21db42d84ece14815c25400be9579c7795 -Merge: cc1e7a25d2 d734583520 -Author: Jefferson Girão -Date: Mon Feb 3 11:58:31 2020 +0100 - - Merge pull request #4 from spotify/github-actions-ci-frontend - - chore: run frontend CI commands in the correct path - -commit d73458352059d81b478100a0a5e81edf52370891 -Author: Jefferson Girão -Date: Mon Feb 3 11:52:06 2020 +0100 - - chore: run frontend CI commands in the correct path - -commit cc1e7a25d26d96993d31a82235c5c04040ba3e8e -Merge: de72125564 79ebfe5144 -Author: Jefferson Girão -Date: Mon Feb 3 11:48:20 2020 +0100 - - Merge pull request #2 from spotify/github-actions-setup - - chore: add initial workflow for ci - -commit 79ebfe5144d709b9b761a6a2153da29cd54aaf1e -Author: Jefferson Girão -Date: Mon Feb 3 11:39:24 2020 +0100 - - style: use consistent identation - -commit fe5e52a3def2c1562e146099cd832b357fb524bc -Author: Jefferson Girão -Date: Mon Feb 3 11:32:03 2020 +0100 - - chore: build and test frontend - -commit 28c8b663818c38e34d3caf26ae95a928d4d479b4 -Author: Jefferson Girão -Date: Mon Feb 3 11:21:16 2020 +0100 - - chore: add initial workflow for ci - - * only hello world for now. - -commit de721255640fe866cf79d41bf0a50f3f1ba689d3 -Author: Patrik Oldsberg -Date: Mon Feb 3 00:08:22 2020 +0100 - - frontend/packages: add material-ui - -commit 6199de583cc9c17133f0c6c33be60814e21d0bc7 -Author: Patrik Oldsberg -Date: Mon Feb 3 00:08:07 2020 +0100 - - frontend: fix eslint config - -commit 94f70bde1e7930f9eb2f96487dac202a69e8644d -Author: Patrik Oldsberg -Date: Mon Feb 3 00:07:35 2020 +0100 - - frontend: added basic readme - -commit 49c7e5a6052ae8be9f3a97b337dfa3b34b5d1305 -Author: Patrik Oldsberg -Date: Sun Feb 2 18:28:09 2020 +0100 - - frontend: working monorepo layout with CRA + web-scripts deps, without individual builds - -commit d7ea1d4740195338df5656c72e48e682ac96db25 -Merge: a3db7f35c2 529937b2c9 -Author: Stefan Ålund -Date: Sat Feb 1 16:31:41 2020 +0100 - - Merge pull request #1 from spotify/alund/license - - Add LICENSE, CoC etc - -commit 529937b2c905495d4803ec8d1fa4c377f11a68ec -Author: Stefan Ålund -Date: Sat Feb 1 16:21:05 2020 +0100 - - License shield - -commit b1279fde9531a7f7accb532a12898c645f7c0ffe -Author: Stefan Ålund -Date: Sat Feb 1 16:06:42 2020 +0100 - - Create CODEOWNERS - -commit 3e79eeaac78e2c27924c33ec18a4f7ebc8859329 -Author: Stefan Ålund -Date: Sat Feb 1 16:03:02 2020 +0100 - - Add LICENSE, CoC and NOTICE - -commit a3db7f35c2694e82000d3f3432cbdf446b6c5e6e -Author: Raghunandan Balachandran -Date: Fri Jan 31 17:27:03 2020 +0100 - - Add CRA App - -commit 3f9a99f9a712fb5f1bc4c568ec69cfd6d373311d -Author: Raghunandan Balachandran -Date: Fri Jan 31 17:06:03 2020 +0100 - - add lerna - -commit 9ff079458c51cb46fdfdaff1b8ca582d50d905b3 -Author: Raghunandan Balachandran -Date: Fri Jan 31 16:54:06 2020 +0100 - - add packages - -commit 605a5624169ed586527309cba98d1e6da821e3fb -Author: Patrik Oldsberg -Date: Fri Jan 31 16:48:15 2020 +0100 - - frontend: added node gitignore - -commit 1a3d3c9e1bcec3fc7c4d7bcd68124de47c0d5581 -Author: Patrik Oldsberg -Date: Fri Jan 31 16:01:18 2020 +0100 - - frontend: add local yarn install - -commit 1d275b3471f5e58ef0b459055abcf4e0283eb513 -Author: Raghunandan Balachandran -Date: Fri Jan 31 14:19:42 2020 +0100 - - init folders - -commit 1a19a01c4beee7d869765a43d1b57b1b450017a7 -Author: Stefan Ålund -Date: Sat Jan 25 09:16:32 2020 +0100 - - Create README.md From 2ec253fcbc20dd91ebcbab1a51cf4cedfc60c2cf Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Fri, 18 Feb 2022 11:38:22 +0100 Subject: [PATCH 243/383] catalog-backend: fix usage of optional locations in tests Signed-off-by: Patrik Oldsberg --- .../AzureDevOpsDiscoveryProcessor.test.ts | 4 ---- .../BitbucketDiscoveryProcessor.test.ts | 24 +------------------ .../GitLabDiscoveryProcessor.test.ts | 3 --- .../GithubDiscoveryProcessor.test.ts | 7 ------ 4 files changed, 1 insertion(+), 37 deletions(-) diff --git a/plugins/catalog-backend/src/ingestion/processors/AzureDevOpsDiscoveryProcessor.test.ts b/plugins/catalog-backend/src/ingestion/processors/AzureDevOpsDiscoveryProcessor.test.ts index 463d982ca2..f9913e4f12 100644 --- a/plugins/catalog-backend/src/ingestion/processors/AzureDevOpsDiscoveryProcessor.test.ts +++ b/plugins/catalog-backend/src/ingestion/processors/AzureDevOpsDiscoveryProcessor.test.ts @@ -167,7 +167,6 @@ describe('AzureDevOpsDiscoveryProcessor', () => { 'https://dev.azure.com/shopify/engineering/_git/backstage?path=/catalog-info.yaml', presence: 'optional', }, - optional: true, }); expect(emitter).toHaveBeenCalledWith({ type: 'location', @@ -177,7 +176,6 @@ describe('AzureDevOpsDiscoveryProcessor', () => { 'https://dev.azure.com/shopify/engineering/_git/ios-app?path=/src/catalog-info.yaml', presence: 'optional', }, - optional: true, }); }); @@ -215,7 +213,6 @@ describe('AzureDevOpsDiscoveryProcessor', () => { 'https://dev.azure.com/shopify/engineering/_git/backstage?path=/catalog-info.yaml', presence: 'optional', }, - optional: true, }); }); @@ -254,7 +251,6 @@ describe('AzureDevOpsDiscoveryProcessor', () => { 'https://dev.azure.com/shopify/engineering/_git/backstage?path=/src/main/catalog.yaml', presence: 'optional', }, - optional: true, }); }); diff --git a/plugins/catalog-backend/src/ingestion/processors/BitbucketDiscoveryProcessor.test.ts b/plugins/catalog-backend/src/ingestion/processors/BitbucketDiscoveryProcessor.test.ts index b60a55a156..96906dac85 100644 --- a/plugins/catalog-backend/src/ingestion/processors/BitbucketDiscoveryProcessor.test.ts +++ b/plugins/catalog-backend/src/ingestion/processors/BitbucketDiscoveryProcessor.test.ts @@ -210,7 +210,6 @@ describe('BitbucketDiscoveryProcessor', () => { 'https://bitbucket.mycompany.com/projects/backstage/repos/backstage/browse/catalog.yaml', presence: 'optional', }, - optional: true, }); expect(emitter).toHaveBeenCalledWith({ type: 'location', @@ -220,7 +219,6 @@ describe('BitbucketDiscoveryProcessor', () => { 'https://bitbucket.mycompany.com/projects/demo/repos/demo/browse/catalog.yaml', presence: 'optional', }, - optional: true, }); }); @@ -246,7 +244,6 @@ describe('BitbucketDiscoveryProcessor', () => { 'https://bitbucket.mycompany.com/projects/backstage/repos/techdocs-cli/browse/catalog.yaml', presence: 'optional', }, - optional: true, }); }); @@ -269,7 +266,6 @@ describe('BitbucketDiscoveryProcessor', () => { 'https://bitbucket.mycompany.com/projects/demo/repos/demo/browse/catalog.yaml?ref=branch-name', presence: 'optional', }, - optional: true, }); }); @@ -292,7 +288,6 @@ describe('BitbucketDiscoveryProcessor', () => { 'https://bitbucket.mycompany.com/projects/backstage/repos/test/browse/catalog.yaml', presence: 'optional', }, - optional: true, }); }); @@ -321,7 +316,6 @@ describe('BitbucketDiscoveryProcessor', () => { 'https://bitbucket.mycompany.com/projects/backstage/repos/techdocs-cli/browse/catalog-info.yaml', presence: 'optional', }, - optional: true, }); }); }); @@ -369,7 +363,6 @@ describe('BitbucketDiscoveryProcessor', () => { 'https://bitbucket.mycompany.com/custom-path/projects/backstage/repos/backstage/browse/catalog.yaml', presence: 'optional', }, - optional: true, }); expect(emitter).toHaveBeenCalledWith({ type: 'location', @@ -379,7 +372,6 @@ describe('BitbucketDiscoveryProcessor', () => { 'https://bitbucket.mycompany.com/custom-path/projects/demo/repos/demo/browse/catalog.yaml', presence: 'optional', }, - optional: true, }); }); @@ -408,7 +400,6 @@ describe('BitbucketDiscoveryProcessor', () => { 'https://bitbucket.mycompany.com/custom-path/projects/backstage/repos/techdocs-cli/browse/catalog.yaml', presence: 'optional', }, - optional: true, }); }); @@ -434,7 +425,6 @@ describe('BitbucketDiscoveryProcessor', () => { 'https://bitbucket.mycompany.com/custom-path/projects/demo/repos/demo/browse/catalog.yaml?ref=branch-name', presence: 'optional', }, - optional: true, }); }); @@ -460,7 +450,6 @@ describe('BitbucketDiscoveryProcessor', () => { 'https://bitbucket.mycompany.com/custom-path/projects/backstage/repos/test/browse/catalog.yaml', presence: 'optional', }, - optional: true, }); }); @@ -492,7 +481,6 @@ describe('BitbucketDiscoveryProcessor', () => { 'https://bitbucket.mycompany.com/custom-path/projects/backstage/repos/techdocs-cli/browse/catalog-info.yaml', presence: 'optional', }, - optional: true, }); }); }); @@ -536,7 +524,6 @@ describe('BitbucketDiscoveryProcessor', () => { 'https://bitbucket.org/myworkspace/repository-one/src/master/catalog-info.yaml', presence: 'optional', }, - optional: true, }); expect(emitter).toHaveBeenCalledWith({ type: 'location', @@ -546,7 +533,6 @@ describe('BitbucketDiscoveryProcessor', () => { 'https://bitbucket.org/myworkspace/repository-two/src/master/catalog-info.yaml', presence: 'optional', }, - optional: true, }); }); @@ -574,7 +560,6 @@ describe('BitbucketDiscoveryProcessor', () => { 'https://bitbucket.org/myworkspace/repository-one/src/master/my/nested/path/catalog.yaml', presence: 'optional', }, - optional: true, }); expect(emitter).toHaveBeenCalledWith({ type: 'location', @@ -584,7 +569,6 @@ describe('BitbucketDiscoveryProcessor', () => { 'https://bitbucket.org/myworkspace/repository-two/src/master/my/nested/path/catalog.yaml', presence: 'optional', }, - optional: true, }); }); @@ -612,7 +596,6 @@ describe('BitbucketDiscoveryProcessor', () => { 'https://bitbucket.org/myworkspace/repository-one/src/master/catalog.yaml', presence: 'optional', }, - optional: true, }); expect(emitter).toHaveBeenCalledWith({ type: 'location', @@ -622,7 +605,6 @@ describe('BitbucketDiscoveryProcessor', () => { 'https://bitbucket.org/myworkspace/repository-two/src/master/catalog.yaml', presence: 'optional', }, - optional: true, }); }); @@ -649,7 +631,6 @@ describe('BitbucketDiscoveryProcessor', () => { 'https://bitbucket.org/myworkspace/repository-one/src/master/catalog.yaml', presence: 'optional', }, - optional: true, }); }); @@ -677,7 +658,6 @@ describe('BitbucketDiscoveryProcessor', () => { 'https://bitbucket.org/myworkspace/repository-three/src/master/catalog.yaml', presence: 'optional', }, - optional: true, }); }); @@ -703,7 +683,6 @@ describe('BitbucketDiscoveryProcessor', () => { 'https://bitbucket.org/myworkspace/repository-one/src/master/catalog-info.yaml', presence: 'optional', }, - optional: true, }); expect(mockCall).toBeCalledTimes(1); // it should be possible to do this via an `expect.objectContaining` check but seems to fail with some encoding issue. @@ -739,7 +718,6 @@ describe('BitbucketDiscoveryProcessor', () => { 'https://bitbucket.org/myworkspace/repository-one/src/master/catalog-info.yaml', presence: 'optional', }, - optional: true, }); }); @@ -806,8 +784,8 @@ describe('BitbucketDiscoveryProcessor', () => { location: { type: 'custom-location-type', target: 'custom-target', + presence: 'optional', }, - optional: true, }); }); }); diff --git a/plugins/catalog-backend/src/ingestion/processors/GitLabDiscoveryProcessor.test.ts b/plugins/catalog-backend/src/ingestion/processors/GitLabDiscoveryProcessor.test.ts index 8d85d7375f..8f1da52413 100644 --- a/plugins/catalog-backend/src/ingestion/processors/GitLabDiscoveryProcessor.test.ts +++ b/plugins/catalog-backend/src/ingestion/processors/GitLabDiscoveryProcessor.test.ts @@ -210,7 +210,6 @@ describe('GitlabDiscoveryProcessor', () => { target: 'https://gitlab.fake/1/-/blob/main/catalog-info.yaml', presence: 'optional', }, - optional: true, }, { type: 'location', @@ -219,7 +218,6 @@ describe('GitlabDiscoveryProcessor', () => { target: 'https://gitlab.fake/2/-/blob/master/catalog-info.yaml', presence: 'optional', }, - optional: true, }, ]); }); @@ -257,7 +255,6 @@ describe('GitlabDiscoveryProcessor', () => { target: 'https://gitlab.fake/1/-/blob/master/catalog-info.yaml', presence: 'optional', }, - optional: true, }, ]); }); diff --git a/plugins/catalog-backend/src/ingestion/processors/GithubDiscoveryProcessor.test.ts b/plugins/catalog-backend/src/ingestion/processors/GithubDiscoveryProcessor.test.ts index d6746f13da..1866247212 100644 --- a/plugins/catalog-backend/src/ingestion/processors/GithubDiscoveryProcessor.test.ts +++ b/plugins/catalog-backend/src/ingestion/processors/GithubDiscoveryProcessor.test.ts @@ -175,7 +175,6 @@ describe('GithubDiscoveryProcessor', () => { 'https://github.com/backstage/backstage/blob/master/catalog.yaml', presence: 'optional', }, - optional: true, }); expect(emitter).toHaveBeenCalledWith({ type: 'location', @@ -184,7 +183,6 @@ describe('GithubDiscoveryProcessor', () => { target: 'https://github.com/backstage/demo/blob/master/catalog.yaml', presence: 'optional', }, - optional: true, }); }); @@ -217,7 +215,6 @@ describe('GithubDiscoveryProcessor', () => { 'https://github.com/backstage/tech-docs/blob/main/catalog.yaml', presence: 'optional', }, - optional: true, }); }); @@ -272,7 +269,6 @@ describe('GithubDiscoveryProcessor', () => { 'https://github.com/backstage/backstage/blob/master/catalog-info.yaml', presence: 'optional', }, - optional: true, }); }); @@ -328,7 +324,6 @@ describe('GithubDiscoveryProcessor', () => { 'https://github.com/backstage/techdocs-cli/blob/master/catalog.yaml', presence: 'optional', }, - optional: true, }); expect(emitter).toHaveBeenCalledWith({ type: 'location', @@ -338,7 +333,6 @@ describe('GithubDiscoveryProcessor', () => { 'https://github.com/backstage/techdocs-container/blob/master/catalog.yaml', presence: 'optional', }, - optional: true, }); }); @@ -394,7 +388,6 @@ describe('GithubDiscoveryProcessor', () => { target: 'https://github.com/backstage/test/blob/master/catalog.yaml', presence: 'optional', }, - optional: true, }); }); }); From 25e97e72427c1c8fb70ff06cb2400c79bbb03aba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Fri, 18 Feb 2022 10:19:01 +0100 Subject: [PATCH 244/383] introduce a catalog aws module MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .changeset/eleven-turkeys-behave.md | 33 ++++ .changeset/old-schools-walk.md | 33 ++++ .changeset/stupid-years-speak.md | 6 + .github/styles/vocab.txt | 1 + .../catalog-backend-module-aws/.eslintrc.js | 3 + plugins/catalog-backend-module-aws/README.md | 10 ++ .../catalog-backend-module-aws/api-report.md | 30 ++++ .../catalog-backend-module-aws/config.d.ts | 36 ++++ .../catalog-backend-module-aws/package.json | 55 ++++++ .../src}/awsOrganization/config.test.ts | 0 .../src}/awsOrganization/config.ts | 0 .../catalog-backend-module-aws/src/index.ts | 23 +++ ...sOrganizationCloudAccountProcessor.test.ts | 4 +- .../AwsOrganizationCloudAccountProcessor.ts | 158 +++++++++--------- .../src/processors/index.ts | 17 ++ .../src/setupTests.ts | 17 ++ .../catalog-backend-module-ldap/config.d.ts | 2 +- .../catalog-backend-module-ldap/package.json | 2 +- .../catalog-backend-module-ldap/src/index.ts | 2 +- .../package.json | 2 +- .../src/index.ts | 2 +- plugins/catalog-backend/api-report.md | 52 ------ plugins/catalog-backend/config.d.ts | 15 -- plugins/catalog-backend/package.json | 2 - .../src/ingestion/processors/index.ts | 2 - scripts/api-extractor.ts | 1 + 26 files changed, 351 insertions(+), 157 deletions(-) create mode 100644 .changeset/eleven-turkeys-behave.md create mode 100644 .changeset/old-schools-walk.md create mode 100644 .changeset/stupid-years-speak.md create mode 100644 plugins/catalog-backend-module-aws/.eslintrc.js create mode 100644 plugins/catalog-backend-module-aws/README.md create mode 100644 plugins/catalog-backend-module-aws/api-report.md create mode 100644 plugins/catalog-backend-module-aws/config.d.ts create mode 100644 plugins/catalog-backend-module-aws/package.json rename plugins/{catalog-backend/src/ingestion/processors => catalog-backend-module-aws/src}/awsOrganization/config.test.ts (100%) rename plugins/{catalog-backend/src/ingestion/processors => catalog-backend-module-aws/src}/awsOrganization/config.ts (100%) create mode 100644 plugins/catalog-backend-module-aws/src/index.ts rename plugins/{catalog-backend/src/ingestion => catalog-backend-module-aws/src}/processors/AwsOrganizationCloudAccountProcessor.test.ts (96%) rename plugins/{catalog-backend/src/ingestion => catalog-backend-module-aws/src}/processors/AwsOrganizationCloudAccountProcessor.ts (83%) create mode 100644 plugins/catalog-backend-module-aws/src/processors/index.ts create mode 100644 plugins/catalog-backend-module-aws/src/setupTests.ts diff --git a/.changeset/eleven-turkeys-behave.md b/.changeset/eleven-turkeys-behave.md new file mode 100644 index 0000000000..f9c5cbf201 --- /dev/null +++ b/.changeset/eleven-turkeys-behave.md @@ -0,0 +1,33 @@ +--- +'@backstage/plugin-catalog-backend': minor +--- + +**BREAKING**: Removed `AwsOrganizationCloudAccountProcessor` from the default +set of builtin processors, and instead moved it into its own module +`@backstage/plugin-catalog-backend-module-aws`. + +If you were using this processor, through making use of the location type +`aws-cloud-accounts` and/or using the configuration key +`catalog.processors.awsOrganization`, you will from now on have to add the +processor manually to your catalog. + +First, add the `@backstage/plugin-catalog-backend-module-aws` dependency to your +`packages/backend` package. + +Then, in `packages/backend/src/plugins/catalog.ts`: + +```diff ++import { AwsOrganizationCloudAccountProcessor } from '@backstage/plugin-catalog-backend-module-aws'; + + export default async function createPlugin( + env: PluginEnvironment, + ): Promise { + const builder = await CatalogBuilder.create(env); ++ builder.addProcessor( ++ AwsOrganizationCloudAccountProcessor.fromConfig( ++ env.config, ++ { logger: env.logger } ++ ) ++ ); + // ... +``` diff --git a/.changeset/old-schools-walk.md b/.changeset/old-schools-walk.md new file mode 100644 index 0000000000..7ed7e070af --- /dev/null +++ b/.changeset/old-schools-walk.md @@ -0,0 +1,33 @@ +--- +'@backstage/plugin-catalog-backend-module-aws': minor +--- + +Added this new catalog module, initially containing only the +`AwsOrganizationCloudAccountProcessor`. + +Note that this was moved over from the catalog backend itself, and therefore is +no longer part of its builtin set of processors. If you were using this +processor, through making use of the location type `aws-cloud-accounts` and/or +using the configuration key `catalog.processors.awsOrganization`, you will from +now on have to add the processor manually to your catalog. + +First, add the `@backstage/plugin-catalog-backend-module-aws` dependency to your +`packages/backend` package. + +Then, in `packages/backend/src/plugins/catalog.ts`: + +```diff ++import { AwsOrganizationCloudAccountProcessor } from '@backstage/plugin-catalog-backend-module-aws'; + + export default async function createPlugin( + env: PluginEnvironment, + ): Promise { + const builder = await CatalogBuilder.create(env); ++ builder.addProcessor( ++ AwsOrganizationCloudAccountProcessor.fromConfig( ++ env.config, ++ { logger: env.logger } ++ ) ++ ); + // ... +``` diff --git a/.changeset/stupid-years-speak.md b/.changeset/stupid-years-speak.md new file mode 100644 index 0000000000..cd454087b2 --- /dev/null +++ b/.changeset/stupid-years-speak.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-catalog-backend-module-ldap': patch +'@backstage/plugin-catalog-backend-module-msgraph': patch +--- + +Minor wording update diff --git a/.github/styles/vocab.txt b/.github/styles/vocab.txt index 8303510e77..408b84903c 100644 --- a/.github/styles/vocab.txt +++ b/.github/styles/vocab.txt @@ -17,6 +17,7 @@ autoscaling Autoscaling autoselect Avro +aws backrub backported backporting diff --git a/plugins/catalog-backend-module-aws/.eslintrc.js b/plugins/catalog-backend-module-aws/.eslintrc.js new file mode 100644 index 0000000000..16a033dbc6 --- /dev/null +++ b/plugins/catalog-backend-module-aws/.eslintrc.js @@ -0,0 +1,3 @@ +module.exports = { + extends: [require.resolve('@backstage/cli/config/eslint.backend')], +}; diff --git a/plugins/catalog-backend-module-aws/README.md b/plugins/catalog-backend-module-aws/README.md new file mode 100644 index 0000000000..304fe7a080 --- /dev/null +++ b/plugins/catalog-backend-module-aws/README.md @@ -0,0 +1,10 @@ +# Catalog Backend Module for LDAP + +This is an extension module to the plugin-catalog-backend plugin, providing an +`AwsOrganizationCloudAccountProcessor` that can be used to ingest cloud accounts +as `Resource` kind entities. + +## Getting started + +See [Backstage documentation](https://backstage.io/docs/integrations/ldap/org) for details on how to install +and configure the plugin. diff --git a/plugins/catalog-backend-module-aws/api-report.md b/plugins/catalog-backend-module-aws/api-report.md new file mode 100644 index 0000000000..159420f8e9 --- /dev/null +++ b/plugins/catalog-backend-module-aws/api-report.md @@ -0,0 +1,30 @@ +## API Report File for "@backstage/plugin-catalog-backend-module-aws" + +> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). + +```ts +import { CatalogProcessor } from '@backstage/plugin-catalog-backend'; +import { CatalogProcessorEmit } from '@backstage/plugin-catalog-backend'; +import { Config } from '@backstage/config'; +import { LocationSpec } from '@backstage/catalog-model'; +import { Logger as Logger_2 } from 'winston'; + +// @public +export class AwsOrganizationCloudAccountProcessor implements CatalogProcessor { + // (undocumented) + static fromConfig( + config: Config, + options: { + logger: Logger_2; + }, + ): AwsOrganizationCloudAccountProcessor; + // (undocumented) + getProcessorName(): string; + // (undocumented) + readLocation( + location: LocationSpec, + _optional: boolean, + emit: CatalogProcessorEmit, + ): Promise; +} +``` diff --git a/plugins/catalog-backend-module-aws/config.d.ts b/plugins/catalog-backend-module-aws/config.d.ts new file mode 100644 index 0000000000..bb416a576e --- /dev/null +++ b/plugins/catalog-backend-module-aws/config.d.ts @@ -0,0 +1,36 @@ +/* + * Copyright 2020 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export interface Config { + catalog?: { + /** + * List of processor-specific options and attributes + */ + processors?: { + /** + * AwsOrganizationCloudAccountProcessor configuration + */ + awsOrganization?: { + provider: { + /** + * The role to be assumed by this processor + */ + roleArn?: string; + }; + }; + }; + }; +} diff --git a/plugins/catalog-backend-module-aws/package.json b/plugins/catalog-backend-module-aws/package.json new file mode 100644 index 0000000000..cff50bb55a --- /dev/null +++ b/plugins/catalog-backend-module-aws/package.json @@ -0,0 +1,55 @@ +{ + "name": "@backstage/plugin-catalog-backend-module-aws", + "description": "A Backstage catalog backend module that helps integrate towards AWS", + "version": "0.0.0", + "main": "src/index.ts", + "types": "src/index.ts", + "license": "Apache-2.0", + "private": false, + "publishConfig": { + "access": "public", + "main": "dist/index.cjs.js", + "types": "dist/index.d.ts" + }, + "backstage": { + "role": "backend-plugin-module" + }, + "homepage": "https://backstage.io", + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/catalog-backend-module-aws" + }, + "keywords": [ + "backstage" + ], + "scripts": { + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean", + "start": "backstage-cli package start" + }, + "dependencies": { + "@backstage/catalog-model": "^0.10.0", + "@backstage/config": "^0.1.14", + "@backstage/errors": "^0.2.1", + "@backstage/plugin-catalog-backend": "^0.21.4", + "@backstage/types": "^0.1.2", + "aws-sdk": "^2.840.0", + "lodash": "^4.17.21", + "winston": "^3.2.1" + }, + "devDependencies": { + "@backstage/cli": "^0.14.0", + "@types/lodash": "^4.14.151", + "aws-sdk-mock": "^5.2.1" + }, + "files": [ + "dist", + "config.d.ts" + ], + "configSchema": "config.d.ts" +} diff --git a/plugins/catalog-backend/src/ingestion/processors/awsOrganization/config.test.ts b/plugins/catalog-backend-module-aws/src/awsOrganization/config.test.ts similarity index 100% rename from plugins/catalog-backend/src/ingestion/processors/awsOrganization/config.test.ts rename to plugins/catalog-backend-module-aws/src/awsOrganization/config.test.ts diff --git a/plugins/catalog-backend/src/ingestion/processors/awsOrganization/config.ts b/plugins/catalog-backend-module-aws/src/awsOrganization/config.ts similarity index 100% rename from plugins/catalog-backend/src/ingestion/processors/awsOrganization/config.ts rename to plugins/catalog-backend-module-aws/src/awsOrganization/config.ts diff --git a/plugins/catalog-backend-module-aws/src/index.ts b/plugins/catalog-backend-module-aws/src/index.ts new file mode 100644 index 0000000000..62c10a0f6d --- /dev/null +++ b/plugins/catalog-backend-module-aws/src/index.ts @@ -0,0 +1,23 @@ +/* + * Copyright 2020 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * A Backstage catalog backend module that helps integrate towards AWS + * + * @packageDocumentation + */ + +export * from './processors'; diff --git a/plugins/catalog-backend/src/ingestion/processors/AwsOrganizationCloudAccountProcessor.test.ts b/plugins/catalog-backend-module-aws/src/processors/AwsOrganizationCloudAccountProcessor.test.ts similarity index 96% rename from plugins/catalog-backend/src/ingestion/processors/AwsOrganizationCloudAccountProcessor.test.ts rename to plugins/catalog-backend-module-aws/src/processors/AwsOrganizationCloudAccountProcessor.test.ts index 88b033c33f..a7da6d9ad3 100644 --- a/plugins/catalog-backend/src/ingestion/processors/AwsOrganizationCloudAccountProcessor.test.ts +++ b/plugins/catalog-backend-module-aws/src/processors/AwsOrganizationCloudAccountProcessor.test.ts @@ -15,13 +15,11 @@ */ import { AwsOrganizationCloudAccountProcessor } from './AwsOrganizationCloudAccountProcessor'; -import * as winston from 'winston'; describe('AwsOrganizationCloudAccountProcessor', () => { describe('readLocation', () => { - const processor = new AwsOrganizationCloudAccountProcessor({ + const processor = new (AwsOrganizationCloudAccountProcessor as any)({ provider: {}, - logger: winston.createLogger(), }); const location = { type: 'aws-cloud-accounts', target: '' }; const emit = jest.fn(); diff --git a/plugins/catalog-backend/src/ingestion/processors/AwsOrganizationCloudAccountProcessor.ts b/plugins/catalog-backend-module-aws/src/processors/AwsOrganizationCloudAccountProcessor.ts similarity index 83% rename from plugins/catalog-backend/src/ingestion/processors/AwsOrganizationCloudAccountProcessor.ts rename to plugins/catalog-backend-module-aws/src/processors/AwsOrganizationCloudAccountProcessor.ts index e211b3606e..5db39cefaa 100644 --- a/plugins/catalog-backend/src/ingestion/processors/AwsOrganizationCloudAccountProcessor.ts +++ b/plugins/catalog-backend-module-aws/src/processors/AwsOrganizationCloudAccountProcessor.ts @@ -13,35 +13,40 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + import { LocationSpec, ResourceEntityV1alpha1 } from '@backstage/catalog-model'; +import { Config } from '@backstage/config'; +import { + CatalogProcessor, + CatalogProcessorEmit, + results, +} from '@backstage/plugin-catalog-backend'; import AWS, { Credentials, Organizations } from 'aws-sdk'; import { Account, ListAccountsResponse } from 'aws-sdk/clients/organizations'; - -import * as results from './results'; -import { CatalogProcessor, CatalogProcessorEmit } from './types'; -import { Config } from '@backstage/config'; import { Logger } from 'winston'; import { AwsOrganizationProviderConfig, readAwsOrganizationConfig, -} from './awsOrganization/config'; +} from '../awsOrganization/config'; const AWS_ORGANIZATION_REGION = 'us-east-1'; const LOCATION_TYPE = 'aws-cloud-accounts'; -const ACCOUNTID_ANNOTATION: string = 'amazonaws.com/account-id'; -const ARN_ANNOTATION: string = 'amazonaws.com/arn'; -const ORGANIZATION_ANNOTATION: string = 'amazonaws.com/organization-id'; +const ACCOUNTID_ANNOTATION = 'amazonaws.com/account-id'; +const ARN_ANNOTATION = 'amazonaws.com/arn'; +const ORGANIZATION_ANNOTATION = 'amazonaws.com/organization-id'; /** * A processor for ingesting AWS Accounts from AWS Organizations. * - * If custom authentication is needed, it can be achieved by configuring the global AWS.credentials object. + * If custom authentication is needed, it can be achieved by configuring the + * global AWS.credentials object. + * + * @public */ export class AwsOrganizationCloudAccountProcessor implements CatalogProcessor { - logger: Logger; - organizations: Organizations; - provider: AwsOrganizationProviderConfig; + private readonly organizations: Organizations; + private readonly provider: AwsOrganizationProviderConfig; static fromConfig(config: Config, options: { logger: Logger }) { const c = config.getOptionalConfig('catalog.processors.awsOrganization'); @@ -67,12 +72,8 @@ export class AwsOrganizationCloudAccountProcessor implements CatalogProcessor { }); } - constructor(options: { - provider: AwsOrganizationProviderConfig; - logger: Logger; - }) { + private constructor(options: { provider: AwsOrganizationProviderConfig }) { this.provider = options.provider; - this.logger = options.logger; const credentials = AwsOrganizationCloudAccountProcessor.buildCredentials( this.provider, ); @@ -81,70 +82,11 @@ export class AwsOrganizationCloudAccountProcessor implements CatalogProcessor { region: AWS_ORGANIZATION_REGION, }); // Only available in us-east-1 } + getProcessorName(): string { return 'AwsOrganizationCloudAccountProcessor'; } - normalizeName(name: string): string { - return name - .trim() - .toLocaleLowerCase() - .replace(/[^a-zA-Z0-9\-]/g, '-'); - } - - extractInformationFromArn(arn: string): { - accountId: string; - organizationId: string; - } { - const parts = arn.split('/'); - - return { - accountId: parts[parts.length - 1], - organizationId: parts[parts.length - 2], - }; - } - - async getAwsAccounts(): Promise { - let awsAccounts: Account[] = []; - let isInitialAttempt = true; - let nextToken = undefined; - while (isInitialAttempt || nextToken) { - isInitialAttempt = false; - const orgAccounts: ListAccountsResponse = await this.organizations - .listAccounts({ NextToken: nextToken }) - .promise(); - if (orgAccounts.Accounts) { - awsAccounts = awsAccounts.concat(orgAccounts.Accounts); - } - nextToken = orgAccounts.NextToken; - } - - return awsAccounts; - } - - mapAccountToComponent(account: Account): ResourceEntityV1alpha1 { - const { accountId, organizationId } = this.extractInformationFromArn( - account.Arn as string, - ); - return { - apiVersion: 'backstage.io/v1alpha1', - kind: 'Resource', - metadata: { - annotations: { - [ACCOUNTID_ANNOTATION]: accountId, - [ARN_ANNOTATION]: account.Arn || '', - [ORGANIZATION_ANNOTATION]: organizationId, - }, - name: this.normalizeName(account.Name || ''), - namespace: 'default', - }, - spec: { - type: 'cloud-account', - owner: 'unknown', - }, - }; - } - async readLocation( location: LocationSpec, _optional: boolean, @@ -168,10 +110,70 @@ export class AwsOrganizationCloudAccountProcessor implements CatalogProcessor { } return true; }) - .forEach((entity: ResourceEntityV1alpha1) => { + .forEach(entity => { emit(results.entity(location, entity)); }); return true; } + + private normalizeName(name: string): string { + return name + .trim() + .toLocaleLowerCase('en-US') + .replace(/[^a-zA-Z0-9\-]/g, '-'); + } + + private extractInformationFromArn(arn: string): { + accountId: string; + organizationId: string; + } { + const parts = arn.split('/'); + + return { + accountId: parts[parts.length - 1], + organizationId: parts[parts.length - 2], + }; + } + + private async getAwsAccounts(): Promise { + let awsAccounts: Account[] = []; + let isInitialAttempt = true; + let nextToken = undefined; + while (isInitialAttempt || nextToken) { + isInitialAttempt = false; + const orgAccounts: ListAccountsResponse = await this.organizations + .listAccounts({ NextToken: nextToken }) + .promise(); + if (orgAccounts.Accounts) { + awsAccounts = awsAccounts.concat(orgAccounts.Accounts); + } + nextToken = orgAccounts.NextToken; + } + + return awsAccounts; + } + + private mapAccountToComponent(account: Account): ResourceEntityV1alpha1 { + const { accountId, organizationId } = this.extractInformationFromArn( + account.Arn as string, + ); + return { + apiVersion: 'backstage.io/v1alpha1', + kind: 'Resource', + metadata: { + annotations: { + [ACCOUNTID_ANNOTATION]: accountId, + [ARN_ANNOTATION]: account.Arn || '', + [ORGANIZATION_ANNOTATION]: organizationId, + }, + name: this.normalizeName(account.Name || ''), + namespace: 'default', + }, + spec: { + type: 'cloud-account', + owner: 'unknown', + }, + }; + } } diff --git a/plugins/catalog-backend-module-aws/src/processors/index.ts b/plugins/catalog-backend-module-aws/src/processors/index.ts new file mode 100644 index 0000000000..fa858aa744 --- /dev/null +++ b/plugins/catalog-backend-module-aws/src/processors/index.ts @@ -0,0 +1,17 @@ +/* + * Copyright 2021 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export { AwsOrganizationCloudAccountProcessor } from './AwsOrganizationCloudAccountProcessor'; diff --git a/plugins/catalog-backend-module-aws/src/setupTests.ts b/plugins/catalog-backend-module-aws/src/setupTests.ts new file mode 100644 index 0000000000..d3232290a7 --- /dev/null +++ b/plugins/catalog-backend-module-aws/src/setupTests.ts @@ -0,0 +1,17 @@ +/* + * Copyright 2020 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export {}; diff --git a/plugins/catalog-backend-module-ldap/config.d.ts b/plugins/catalog-backend-module-ldap/config.d.ts index 57781fd711..df167bc520 100644 --- a/plugins/catalog-backend-module-ldap/config.d.ts +++ b/plugins/catalog-backend-module-ldap/config.d.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import { JsonValue } from '@backstage/config'; +import { JsonValue } from '@backstage/types'; export interface Config { /** diff --git a/plugins/catalog-backend-module-ldap/package.json b/plugins/catalog-backend-module-ldap/package.json index ce4b9fe434..01a14a1ad0 100644 --- a/plugins/catalog-backend-module-ldap/package.json +++ b/plugins/catalog-backend-module-ldap/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-catalog-backend-module-ldap", - "description": "A Backstage catalog backend modules that helps integrate towards LDAP", + "description": "A Backstage catalog backend module that helps integrate towards LDAP", "version": "0.3.13", "main": "src/index.ts", "types": "src/index.ts", diff --git a/plugins/catalog-backend-module-ldap/src/index.ts b/plugins/catalog-backend-module-ldap/src/index.ts index a3b3c46815..243044369c 100644 --- a/plugins/catalog-backend-module-ldap/src/index.ts +++ b/plugins/catalog-backend-module-ldap/src/index.ts @@ -15,7 +15,7 @@ */ /** - * A Backstage catalog backend modules that helps integrate towards LDAP + * A Backstage catalog backend module that helps integrate towards LDAP * * @packageDocumentation */ diff --git a/plugins/catalog-backend-module-msgraph/package.json b/plugins/catalog-backend-module-msgraph/package.json index 552547d67f..8eff30c3f0 100644 --- a/plugins/catalog-backend-module-msgraph/package.json +++ b/plugins/catalog-backend-module-msgraph/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-catalog-backend-module-msgraph", - "description": "A Backstage catalog backend modules that helps integrate towards Microsoft Graph", + "description": "A Backstage catalog backend module that helps integrate towards Microsoft Graph", "version": "0.2.16", "main": "src/index.ts", "types": "src/index.ts", diff --git a/plugins/catalog-backend-module-msgraph/src/index.ts b/plugins/catalog-backend-module-msgraph/src/index.ts index 396ccc3e6a..6a7adedc58 100644 --- a/plugins/catalog-backend-module-msgraph/src/index.ts +++ b/plugins/catalog-backend-module-msgraph/src/index.ts @@ -15,7 +15,7 @@ */ /** - * A Backstage catalog backend modules that helps integrate towards Microsoft Graph + * A Backstage catalog backend module that helps integrate towards Microsoft Graph * * @packageDocumentation */ diff --git a/plugins/catalog-backend/api-report.md b/plugins/catalog-backend/api-report.md index f52bbdc22e..e57f421f44 100644 --- a/plugins/catalog-backend/api-report.md +++ b/plugins/catalog-backend/api-report.md @@ -5,7 +5,6 @@ ```ts /// -import { Account } from 'aws-sdk/clients/organizations'; import { BitbucketIntegration } from '@backstage/integration'; import { CatalogApi } from '@backstage/catalog-client'; import { ConditionalPolicyDecision } from '@backstage/plugin-permission-node'; @@ -25,7 +24,6 @@ import { JsonValue } from '@backstage/types'; import { Location as Location_2 } from '@backstage/catalog-client'; import { LocationSpec } from '@backstage/catalog-model'; import { Logger as Logger_2 } from 'winston'; -import { Organizations } from 'aws-sdk'; import { Permission } from '@backstage/plugin-permission-common'; import { PermissionAuthorizer } from '@backstage/plugin-permission-common'; import { PermissionCondition } from '@backstage/plugin-permission-common'; @@ -33,7 +31,6 @@ import { PermissionCriteria } from '@backstage/plugin-permission-common'; import { PermissionRule } from '@backstage/plugin-permission-node'; import { PluginDatabaseManager } from '@backstage/backend-common'; import { PluginEndpointDiscovery } from '@backstage/backend-common'; -import { ResourceEntityV1alpha1 } from '@backstage/catalog-model'; import { Router } from 'express'; import { ScmIntegrationRegistry } from '@backstage/integration'; import { TokenManager } from '@backstage/backend-common'; @@ -115,55 +112,6 @@ export class AnnotateScmSlugEntityProcessor implements CatalogProcessor { preProcessEntity(entity: Entity, location: LocationSpec): Promise; } -// Warning: (ae-missing-release-tag) "AwsOrganizationCloudAccountProcessor" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export class AwsOrganizationCloudAccountProcessor implements CatalogProcessor { - constructor(options: { - provider: AwsOrganizationProviderConfig; - logger: Logger_2; - }); - // (undocumented) - extractInformationFromArn(arn: string): { - accountId: string; - organizationId: string; - }; - // (undocumented) - static fromConfig( - config: Config, - options: { - logger: Logger_2; - }, - ): AwsOrganizationCloudAccountProcessor; - // (undocumented) - getAwsAccounts(): Promise; - // (undocumented) - getProcessorName(): string; - // (undocumented) - logger: Logger_2; - // (undocumented) - mapAccountToComponent(account: Account): ResourceEntityV1alpha1; - // (undocumented) - normalizeName(name: string): string; - // (undocumented) - organizations: Organizations; - // (undocumented) - provider: AwsOrganizationProviderConfig; - // (undocumented) - readLocation( - location: LocationSpec, - _optional: boolean, - emit: CatalogProcessorEmit, - ): Promise; -} - -// Warning: (ae-missing-release-tag) "AwsOrganizationProviderConfig" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export type AwsOrganizationProviderConfig = { - roleArn?: string; -}; - // Warning: (ae-missing-release-tag) "AwsS3DiscoveryProcessor" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) diff --git a/plugins/catalog-backend/config.d.ts b/plugins/catalog-backend/config.d.ts index 5701c9df48..8964e1ab0e 100644 --- a/plugins/catalog-backend/config.d.ts +++ b/plugins/catalog-backend/config.d.ts @@ -14,8 +14,6 @@ * limitations under the License. */ -import { JsonValue } from '@backstage/config'; - export interface Config { /** * Configuration options for the catalog plugin. @@ -172,19 +170,6 @@ export interface Config { userNamespace?: string; }>; }; - - /** - * AwsOrganizationCloudAccountProcessor configuration - */ - awsOrganization?: { - provider: { - /** - * The role to be assumed by this processor - * - */ - roleArn?: string; - }; - }; }; }; } diff --git a/plugins/catalog-backend/package.json b/plugins/catalog-backend/package.json index eb6b185861..c74e62b74c 100644 --- a/plugins/catalog-backend/package.json +++ b/plugins/catalog-backend/package.json @@ -47,7 +47,6 @@ "@backstage/types": "^0.1.2", "@octokit/graphql": "^4.5.8", "@types/express": "^4.17.6", - "aws-sdk": "^2.840.0", "codeowners-utils": "^1.0.2", "core-js": "^3.6.5", "express": "^4.17.1", @@ -79,7 +78,6 @@ "@types/supertest": "^2.0.8", "@types/uuid": "^8.0.0", "@vscode/sqlite3": "^5.0.7", - "aws-sdk-mock": "^5.2.1", "msw": "^0.35.0", "supertest": "^6.1.3", "wait-for-expect": "^3.0.2", diff --git a/plugins/catalog-backend/src/ingestion/processors/index.ts b/plugins/catalog-backend/src/ingestion/processors/index.ts index 63feac51af..36f85647d3 100644 --- a/plugins/catalog-backend/src/ingestion/processors/index.ts +++ b/plugins/catalog-backend/src/ingestion/processors/index.ts @@ -18,8 +18,6 @@ import * as results from './results'; export { AnnotateLocationEntityProcessor } from './AnnotateLocationEntityProcessor'; export { AnnotateScmSlugEntityProcessor } from './AnnotateScmSlugEntityProcessor'; -export { AwsOrganizationCloudAccountProcessor } from './AwsOrganizationCloudAccountProcessor'; -export type { AwsOrganizationProviderConfig } from './awsOrganization/config'; export { AwsS3DiscoveryProcessor } from './AwsS3DiscoveryProcessor'; export { BitbucketDiscoveryProcessor } from './BitbucketDiscoveryProcessor'; export { BuiltinKindsEntityProcessor } from './BuiltinKindsEntityProcessor'; diff --git a/scripts/api-extractor.ts b/scripts/api-extractor.ts index cd1a03b6be..22d00e5dfe 100644 --- a/scripts/api-extractor.ts +++ b/scripts/api-extractor.ts @@ -219,6 +219,7 @@ const NO_WARNING_PACKAGES = [ 'packages/release-manifests', 'packages/version-bridge', 'plugins/auth-node', + 'plugins/catalog-backend-module-aws', 'plugins/catalog-backend-module-ldap', 'plugins/catalog-backend-module-msgraph', 'plugins/catalog-common', From 94f9ac94926a85c22eaebbfd3f41bdf9f5290036 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Fri, 18 Feb 2022 12:28:26 +0100 Subject: [PATCH 245/383] bump puppeteer MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- yarn.lock | 44 ++++++++++++++++---------------------------- 1 file changed, 16 insertions(+), 28 deletions(-) diff --git a/yarn.lock b/yarn.lock index 5844774a67..2c9f250f90 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9326,7 +9326,7 @@ cross-fetch@3.1.4: dependencies: node-fetch "2.6.1" -cross-fetch@^3.0.4, cross-fetch@^3.0.6, cross-fetch@^3.1.3, cross-fetch@^3.1.4, cross-fetch@^3.1.5: +cross-fetch@3.1.5, cross-fetch@^3.0.4, cross-fetch@^3.0.6, cross-fetch@^3.1.3, cross-fetch@^3.1.4, cross-fetch@^3.1.5: version "3.1.5" resolved "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz#e1389f44d9e7ba767907f7af8454787952ab534f" integrity sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw== @@ -10276,10 +10276,10 @@ detect-port-alt@^1.1.6: address "^1.0.1" debug "^2.6.0" -devtools-protocol@0.0.948846: - version "0.0.948846" - resolved "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.948846.tgz#bff47e2d1dba060130fa40ed2e5f78b916ba285f" - integrity sha512-5fGyt9xmMqUl2VI7+rnUkKCiAQIpLns8sfQtTENy5L70ktbNw0Z3TFJ1JoFNYdx/jffz4YXU45VF75wKZD7sZQ== +devtools-protocol@0.0.960912: + version "0.0.960912" + resolved "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.960912.tgz#411c1fa355eddb72f06c4a8743f2808766db6245" + integrity sha512-I3hWmV9rWHbdnUdmMKHF2NuYutIM2kXz2mdXW8ha7TbRlGTVs+PF+PsB5QWvpCek4Fy9B+msiispCfwlhG5Sqg== dezalgo@1.0.3, dezalgo@^1.0.0: version "1.0.3" @@ -17654,13 +17654,6 @@ node-fetch@2.6.1: resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== -node-fetch@2.6.5: - version "2.6.5" - resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.5.tgz#42735537d7f080a7e5f78b6c549b7146be1742fd" - integrity sha512-mmlIVHJEu5rnIxgEgez6b9GgWXbkZj5YZ7fx+2r94a2E+Uirsp6HsPTPlomfdHtpt/B0cdKviwkoaM6pyvUOpQ== - dependencies: - whatwg-url "^5.0.0" - node-fetch@2.6.7, node-fetch@^2.3.0, node-fetch@^2.6.0, node-fetch@^2.6.1, node-fetch@^2.6.5, node-fetch@^2.6.7: version "2.6.7" resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" @@ -19853,22 +19846,22 @@ pupa@^2.1.1: escape-goat "^2.0.0" puppeteer@^13.1.1: - version "13.1.1" - resolved "https://registry.npmjs.org/puppeteer/-/puppeteer-13.1.1.tgz#63771eb744202aa91918c49123f846e1747da121" - integrity sha512-GwdFy1JQ43Hhxj6MraXme+XfCX2CKe18MuwToXTMEAk0txg6vUEgwqBnzErTTqDVZ7sWYrDtDaRCfD2y7ZwgGw== + version "13.3.2" + resolved "https://registry.npmjs.org/puppeteer/-/puppeteer-13.3.2.tgz#4ff1cf6e2009df29fd80038bc702dc067776f79d" + integrity sha512-TIt8/R0eaUwY1c0/O0sCJpSglvGEWVoWFfGZ2dNtxX3eHuBo1ln9abaWfxTjZfsrkYATLSs8oqEdRZpMNnCsvg== dependencies: - debug "4.3.2" - devtools-protocol "0.0.948846" + cross-fetch "3.1.5" + debug "4.3.3" + devtools-protocol "0.0.960912" extract-zip "2.0.1" https-proxy-agent "5.0.0" - node-fetch "2.6.5" pkg-dir "4.2.0" progress "2.0.3" proxy-from-env "1.1.0" rimraf "3.0.2" tar-fs "2.1.1" unbzip2-stream "1.4.3" - ws "8.2.3" + ws "8.5.0" q@^1.5.1: version "1.5.1" @@ -24714,20 +24707,15 @@ ws@7.4.5: resolved "https://registry.npmjs.org/ws/-/ws-7.4.5.tgz#a484dd851e9beb6fdb420027e3885e8ce48986c1" integrity sha512-xzyu3hFvomRfXKH8vOFMU3OguG6oOvhXMo3xsGy3xWExqaM2dxBbVxuD99O7m3ZUFMvvscsZDqxfgMaRr/Nr1g== -ws@8.2.3: - version "8.2.3" - resolved "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz#63a56456db1b04367d0b721a0b80cae6d8becbba" - integrity sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA== - ws@8.3.0, "ws@^5.2.0 || ^6.0.0 || ^7.0.0", ws@^7.2.3, ws@^7.3.1, ws@^7.4.6, ws@^8.3.0: version "7.5.6" resolved "https://registry.npmjs.org/ws/-/ws-7.5.6.tgz#e59fc509fb15ddfb65487ee9765c5a51dec5fe7b" integrity sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA== -ws@^8.1.0: - version "8.4.2" - resolved "https://registry.npmjs.org/ws/-/ws-8.4.2.tgz#18e749868d8439f2268368829042894b6907aa0b" - integrity sha512-Kbk4Nxyq7/ZWqr/tarI9yIt/+iNNFOjBXEWgTb4ydaNHBNGgvf2QHbS9fdfsndfjFlFwEd4Al+mw83YkaD10ZA== +ws@8.5.0, ws@^8.1.0: + version "8.5.0" + resolved "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz#bfb4be96600757fe5382de12c670dab984a1ed4f" + integrity sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg== xcase@^2.0.1: version "2.0.1" From a686702dbe59ead0957ed9c80b9d65ef186305b8 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Thu, 17 Feb 2022 20:38:36 +0100 Subject: [PATCH 246/383] catalog: rename CatalogResultListItem to CatalogSearchResultListItem Signed-off-by: Patrik Oldsberg --- .changeset/dry-papayas-melt.md | 5 +++++ .changeset/gentle-buttons-hunt.md | 22 +++++++++++++++++++ .../app/src/components/search/SearchPage.tsx | 4 ++-- .../app/src/components/search/SearchPage.tsx | 4 ++-- plugins/catalog/api-report.md | 12 +++++++--- .../CatalogSearchResultListItem.tsx} | 20 ++++++++++++++--- .../index.ts | 10 +++++++-- plugins/catalog/src/index.ts | 2 +- 8 files changed, 66 insertions(+), 13 deletions(-) create mode 100644 .changeset/dry-papayas-melt.md create mode 100644 .changeset/gentle-buttons-hunt.md rename plugins/catalog/src/components/{CatalogResultListItem/CatalogResultListItem.tsx => CatalogSearchResultListItem/CatalogSearchResultListItem.tsx} (77%) rename plugins/catalog/src/components/{CatalogResultListItem => CatalogSearchResultListItem}/index.ts (72%) diff --git a/.changeset/dry-papayas-melt.md b/.changeset/dry-papayas-melt.md new file mode 100644 index 0000000000..255b2cbc85 --- /dev/null +++ b/.changeset/dry-papayas-melt.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog': patch +--- + +Renamed `CatalogResultListItem` to `CatalogSearchResultListItem` along with its prop type, leaving the old names in place as a deprecations. diff --git a/.changeset/gentle-buttons-hunt.md b/.changeset/gentle-buttons-hunt.md new file mode 100644 index 0000000000..677e8f4e85 --- /dev/null +++ b/.changeset/gentle-buttons-hunt.md @@ -0,0 +1,22 @@ +--- +'@backstage/create-app': patch +--- + +Update the template to reflect the renaming of `CatalogResultListItem` to `CatalogSearchResultListItem` from `@backstage/plugin-catalog`. + +To apply this change to an existing app, make the following change to `packages/app/src/components/search/SearchPage.tsx`: + +```diff +-import { CatalogResultListItem } from '@backstage/plugin-catalog'; ++import { CatalogSearchResultListItem } from '@backstage/plugin-catalog'; +``` + +```diff + case 'software-catalog': + return ( +- +``` diff --git a/packages/app/src/components/search/SearchPage.tsx b/packages/app/src/components/search/SearchPage.tsx index d4e60244d7..fe759c9799 100644 --- a/packages/app/src/components/search/SearchPage.tsx +++ b/packages/app/src/components/search/SearchPage.tsx @@ -24,7 +24,7 @@ import { SidebarPinStateContext, } from '@backstage/core-components'; import { useApi } from '@backstage/core-plugin-api'; -import { CatalogResultListItem } from '@backstage/plugin-catalog'; +import { CatalogSearchResultListItem } from '@backstage/plugin-catalog'; import { catalogApiRef, CATALOG_FILTER_EXISTS, @@ -136,7 +136,7 @@ const SearchPage = () => { switch (type) { case 'software-catalog': return ( - diff --git a/packages/create-app/templates/default-app/packages/app/src/components/search/SearchPage.tsx b/packages/create-app/templates/default-app/packages/app/src/components/search/SearchPage.tsx index a88e7250e9..469a230ecd 100644 --- a/packages/create-app/templates/default-app/packages/app/src/components/search/SearchPage.tsx +++ b/packages/create-app/templates/default-app/packages/app/src/components/search/SearchPage.tsx @@ -1,7 +1,7 @@ import React from 'react'; import { makeStyles, Theme, Grid, List, Paper } from '@material-ui/core'; -import { CatalogResultListItem } from '@backstage/plugin-catalog'; +import { CatalogSearchResultListItem } from '@backstage/plugin-catalog'; import { catalogApiRef, CATALOG_FILTER_EXISTS, @@ -116,7 +116,7 @@ const SearchPage = () => { switch (type) { case 'software-catalog': return ( - diff --git a/plugins/catalog/api-report.md b/plugins/catalog/api-report.md index 608f7a8515..c2c09755f8 100644 --- a/plugins/catalog/api-report.md +++ b/plugins/catalog/api-report.md @@ -104,13 +104,19 @@ const catalogPlugin: BackstagePlugin< export { catalogPlugin }; export { catalogPlugin as plugin }; +// @public @deprecated (undocumented) +export const CatalogResultListItem: typeof CatalogSearchResultListItem; + +// @public @deprecated (undocumented) +export type CatalogResultListItemProps = CatalogSearchResultListItemProps; + // @public (undocumented) -export function CatalogResultListItem( - props: CatalogResultListItemProps, +export function CatalogSearchResultListItem( + props: CatalogSearchResultListItemProps, ): JSX.Element; // @public -export interface CatalogResultListItemProps { +export interface CatalogSearchResultListItemProps { // (undocumented) result: IndexableDocument; } diff --git a/plugins/catalog/src/components/CatalogResultListItem/CatalogResultListItem.tsx b/plugins/catalog/src/components/CatalogSearchResultListItem/CatalogSearchResultListItem.tsx similarity index 77% rename from plugins/catalog/src/components/CatalogResultListItem/CatalogResultListItem.tsx rename to plugins/catalog/src/components/CatalogSearchResultListItem/CatalogSearchResultListItem.tsx index 3800618539..54cfe43364 100644 --- a/plugins/catalog/src/components/CatalogResultListItem/CatalogResultListItem.tsx +++ b/plugins/catalog/src/components/CatalogSearchResultListItem/CatalogSearchResultListItem.tsx @@ -38,16 +38,18 @@ const useStyles = makeStyles({ }); /** - * Props for {@link CatalogResultListItem}. + * Props for {@link CatalogSearchResultListItem}. * * @public */ -export interface CatalogResultListItemProps { +export interface CatalogSearchResultListItemProps { result: IndexableDocument; } /** @public */ -export function CatalogResultListItem(props: CatalogResultListItemProps) { +export function CatalogSearchResultListItem( + props: CatalogSearchResultListItemProps, +) { const result = props.result as any; const classes = useStyles(); @@ -71,3 +73,15 @@ export function CatalogResultListItem(props: CatalogResultListItemProps) { ); } + +/** + * @public + * @deprecated use {@link CatalogSearchResultListItemProps} instead + */ +export type CatalogResultListItemProps = CatalogSearchResultListItemProps; + +/** + * @public + * @deprecated use {@link CatalogSearchResultListItem} instead + */ +export const CatalogResultListItem = CatalogSearchResultListItem; diff --git a/plugins/catalog/src/components/CatalogResultListItem/index.ts b/plugins/catalog/src/components/CatalogSearchResultListItem/index.ts similarity index 72% rename from plugins/catalog/src/components/CatalogResultListItem/index.ts rename to plugins/catalog/src/components/CatalogSearchResultListItem/index.ts index 68f6c8cd0c..0396117825 100644 --- a/plugins/catalog/src/components/CatalogResultListItem/index.ts +++ b/plugins/catalog/src/components/CatalogSearchResultListItem/index.ts @@ -14,5 +14,11 @@ * limitations under the License. */ -export { CatalogResultListItem } from './CatalogResultListItem'; -export type { CatalogResultListItemProps } from './CatalogResultListItem'; +export { + CatalogSearchResultListItem, + CatalogResultListItem, +} from './CatalogSearchResultListItem'; +export type { + CatalogSearchResultListItemProps, + CatalogResultListItemProps, +} from './CatalogSearchResultListItem'; diff --git a/plugins/catalog/src/index.ts b/plugins/catalog/src/index.ts index 10da3c9d6d..ed98395687 100644 --- a/plugins/catalog/src/index.ts +++ b/plugins/catalog/src/index.ts @@ -22,7 +22,7 @@ export * from './components/AboutCard'; export * from './components/CatalogKindHeader'; -export * from './components/CatalogResultListItem'; +export * from './components/CatalogSearchResultListItem'; export * from './components/CatalogTable'; export * from './components/CatalogTable/columns'; export * from './components/EntityLayout'; From 5cc7f48400dc1a4ad15ee9acd28b0ac2dcaccd13 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Fri, 18 Feb 2022 13:02:10 +0100 Subject: [PATCH 247/383] cli: fix running tests from root Signed-off-by: Patrik Oldsberg --- .changeset/breezy-wasps-sparkle.md | 5 +++++ packages/cli/config/jest.js | 5 ++++- 2 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 .changeset/breezy-wasps-sparkle.md diff --git a/.changeset/breezy-wasps-sparkle.md b/.changeset/breezy-wasps-sparkle.md new file mode 100644 index 0000000000..8072bf2e65 --- /dev/null +++ b/.changeset/breezy-wasps-sparkle.md @@ -0,0 +1,5 @@ +--- +'@backstage/cli': patch +--- + +Fixed a bug in the built-in Jest configuration that prevented it from identifying packages that had migrated to using the new package scripts to run tests. diff --git a/packages/cli/config/jest.js b/packages/cli/config/jest.js index 91cdd3c41b..d5b85b9748 100644 --- a/packages/cli/config/jest.js +++ b/packages/cli/config/jest.js @@ -175,7 +175,10 @@ async function getRootConfig() { // script to determine whether a given package should be tested const packageData = await fs.readJson(packagePath); const testScript = packageData.scripts && packageData.scripts.test; - if (testScript && testScript.includes('backstage-cli test')) { + const isSupportedTestScript = + testScript?.includes('backstage-cli test') || + testScript?.includes('backstage-cli package test'); + if (testScript && isSupportedTestScript) { return await getProjectConfig(projectPath, packageData.name); } From 0988c86166e5079d528b29d7015338c57848c0b1 Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 18 Feb 2022 13:03:53 +0100 Subject: [PATCH 248/383] chore: constructor for DatabaseTaskStore is now private Signed-off-by: blam --- .../src/scaffolder/tasks/DatabaseTaskStore.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/DatabaseTaskStore.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/DatabaseTaskStore.ts index dcda3b921e..8fe98da53f 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/DatabaseTaskStore.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/DatabaseTaskStore.ts @@ -80,7 +80,7 @@ export class DatabaseTaskStore implements TaskStore { return new DatabaseTaskStore(options); } - constructor(options: DatabaseTaskStoreOptions) { + private constructor(options: DatabaseTaskStoreOptions) { this.db = options.database; } From 3cdd27b4c76d2340da1bfbe9e0d5647e2ae3c0ec Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 18 Feb 2022 13:13:31 +0100 Subject: [PATCH 249/383] chore: renaming some types that are exported and moving across Signed-off-by: blam --- .../src/scaffolder/tasks/DatabaseTaskStore.ts | 6 ++--- .../src/scaffolder/tasks/StorageTaskBroker.ts | 4 ++-- .../src/scaffolder/tasks/index.ts | 2 ++ .../src/scaffolder/tasks/types.ts | 24 +++++++++++++++---- 4 files changed, 27 insertions(+), 9 deletions(-) diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/DatabaseTaskStore.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/DatabaseTaskStore.ts index 8fe98da53f..173fbb7778 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/DatabaseTaskStore.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/DatabaseTaskStore.ts @@ -22,7 +22,7 @@ import { v4 as uuid } from 'uuid'; import { SerializedTaskEvent, SerializedTask, - Status, + TaskStatus, TaskEventType, TaskSecrets, TaskSpec, @@ -40,7 +40,7 @@ const migrationsDir = resolvePackagePath( export type RawDbTaskRow = { id: string; spec: string; - status: Status; + status: TaskStatus; last_heartbeat_at?: string; created_at: string; secrets?: string | null; @@ -202,7 +202,7 @@ export class DatabaseTaskStore implements TaskStore { eventBody, }: { taskId: string; - status: Status; + status: TaskStatus; eventBody: JsonObject; }): Promise { let oldStatus: string; diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.ts index 7e7ebe5436..7f09623cb5 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.ts @@ -17,7 +17,7 @@ import { JsonObject } from '@backstage/types'; import { assertError } from '@backstage/errors'; import { Logger } from 'winston'; import { - CompletedTaskState, + TaskCompletionState, TaskContext, TaskSecrets, TaskSpec, @@ -75,7 +75,7 @@ export class TaskManager implements TaskContext { } async complete( - result: CompletedTaskState, + result: TaskCompletionState, metadata?: JsonObject, ): Promise { await this.storage.completeTask({ diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/index.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/index.ts index f563a08df6..47507b8c9c 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/index.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/index.ts @@ -21,6 +21,7 @@ export type { CreateWorkerOptions } from './TaskWorker'; export type { TaskSecrets, TaskSpec, + TaskCompletionState, CompletedTaskState, TaskStoreEmitOptions, TaskStoreListEventsOptions, @@ -29,6 +30,7 @@ export type { TaskSpecV1beta2, TaskSpecV1beta3, Status, + TaskStatus, TaskEventType, TaskBroker, TaskContext, diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/types.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/types.ts index 8b28fe562c..abb3fe45ef 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/types.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/types.ts @@ -32,11 +32,11 @@ export type { }; /** - * Status + * The status of each step of the Task * * @public */ -export type Status = +export type TaskStatus = | 'open' | 'processing' | 'failed' @@ -44,11 +44,27 @@ export type Status = | 'completed'; /** - * CompletedTaskState + * The status of each step of the Task + * + * @public + * @deprecated use TaskStatus instead + */ +export type Status = TaskStatus; + +/** + * The state of a completed task. * * @public */ -export type CompletedTaskState = 'failed' | 'completed'; +export type TaskCompletionState = 'failed' | 'completed'; + +/** + * The state of a completed task. + * + * @public + * @deprecated use TaskCompletionState instead + */ +export type CompletedTaskState = TaskCompletionState; /** * SerializedTask From 1c894ce6106503349c2e27f62fecbaffb32b16b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Fri, 18 Feb 2022 13:13:55 +0100 Subject: [PATCH 250/383] put back aws on the catalog for now MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- plugins/catalog-backend/package.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/plugins/catalog-backend/package.json b/plugins/catalog-backend/package.json index c74e62b74c..eb6b185861 100644 --- a/plugins/catalog-backend/package.json +++ b/plugins/catalog-backend/package.json @@ -47,6 +47,7 @@ "@backstage/types": "^0.1.2", "@octokit/graphql": "^4.5.8", "@types/express": "^4.17.6", + "aws-sdk": "^2.840.0", "codeowners-utils": "^1.0.2", "core-js": "^3.6.5", "express": "^4.17.1", @@ -78,6 +79,7 @@ "@types/supertest": "^2.0.8", "@types/uuid": "^8.0.0", "@vscode/sqlite3": "^5.0.7", + "aws-sdk-mock": "^5.2.1", "msw": "^0.35.0", "supertest": "^6.1.3", "wait-for-expect": "^3.0.2", From 852d5ff758310ee9b80cd17cc68d9843d986089b Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Fri, 18 Feb 2022 13:20:15 +0100 Subject: [PATCH 251/383] catalog: added EntitySwitchProps Signed-off-by: Patrik Oldsberg --- .changeset/five-apes-rest.md | 5 +++++ plugins/catalog/api-report.md | 11 +++++++++-- .../src/components/EntitySwitch/EntitySwitch.tsx | 16 ++++++++++++---- .../catalog/src/components/EntitySwitch/index.ts | 2 +- 4 files changed, 27 insertions(+), 7 deletions(-) create mode 100644 .changeset/five-apes-rest.md diff --git a/.changeset/five-apes-rest.md b/.changeset/five-apes-rest.md new file mode 100644 index 0000000000..d4704d2014 --- /dev/null +++ b/.changeset/five-apes-rest.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog': patch +--- + +Added `EntitySwitchProps` type for `EntitySwitch`. diff --git a/plugins/catalog/api-report.md b/plugins/catalog/api-report.md index e2cc0c8ba6..15e88de8d4 100644 --- a/plugins/catalog/api-report.md +++ b/plugins/catalog/api-report.md @@ -15,6 +15,7 @@ import { IndexableDocument } from '@backstage/search-common'; import { InfoCardVariants } from '@backstage/core-components'; import { Overrides } from '@material-ui/core/styles/overrides'; import { default as React_2 } from 'react'; +import { ReactNode } from 'react'; import { RouteRef } from '@backstage/core-plugin-api'; import { StyleRules } from '@material-ui/core/styles/withStyles'; import { TableColumn } from '@backstage/core-components'; @@ -307,14 +308,14 @@ export function EntityProcessingErrorsPanel(): JSX.Element | null; // @public (undocumented) export const EntitySwitch: { - (props: { children: React_2.ReactNode }): JSX.Element | null; + (props: EntitySwitchProps): JSX.Element | null; Case: (_props: EntitySwitchCaseProps) => null; }; // @public (undocumented) export interface EntitySwitchCaseProps { // (undocumented) - children: React_2.ReactNode; + children: ReactNode; // (undocumented) if?: ( entity: Entity, @@ -324,6 +325,12 @@ export interface EntitySwitchCaseProps { ) => boolean | Promise; } +// @public +export interface EntitySwitchProps { + // (undocumented) + children: ReactNode; +} + // @public (undocumented) export function FilterContainer(props: { children: React_2.ReactNode; diff --git a/plugins/catalog/src/components/EntitySwitch/EntitySwitch.tsx b/plugins/catalog/src/components/EntitySwitch/EntitySwitch.tsx index c919cdf805..4433517247 100644 --- a/plugins/catalog/src/components/EntitySwitch/EntitySwitch.tsx +++ b/plugins/catalog/src/components/EntitySwitch/EntitySwitch.tsx @@ -16,7 +16,7 @@ import { Entity } from '@backstage/catalog-model'; import { useEntity } from '@backstage/plugin-catalog-react'; -import React from 'react'; +import React, { ReactNode, ReactElement } from 'react'; import { attachComponentData, useApiHolder, @@ -33,7 +33,7 @@ export interface EntitySwitchCaseProps { entity: Entity, context: { apis: ApiHolder }, ) => boolean | Promise; - children: React.ReactNode; + children: ReactNode; } const EntitySwitchCaseComponent = (_props: EntitySwitchCaseProps) => null; @@ -53,8 +53,16 @@ type SwitchCaseResult = { children: JSX.Element; }; +/** + * Props for the {@link EntitySwitch} component. + * @public + */ +export interface EntitySwitchProps { + children: ReactNode; +} + /** @public */ -export const EntitySwitch = (props: { children: React.ReactNode }) => { +export const EntitySwitch = (props: EntitySwitchProps) => { const { entity } = useEntity(); const apis = useApiHolder(); const results = useElementFilter( @@ -66,7 +74,7 @@ export const EntitySwitch = (props: { children: React.ReactNode }) => { withStrictError: 'Child of EntitySwitch is not an EntitySwitch.Case', }) .getElements() - .flatMap((element: React.ReactElement) => { + .flatMap((element: ReactElement) => { const { if: condition, children: elementsChildren } = element.props as EntitySwitchCase; return [ diff --git a/plugins/catalog/src/components/EntitySwitch/index.ts b/plugins/catalog/src/components/EntitySwitch/index.ts index 0e2852b223..6cccf4be6e 100644 --- a/plugins/catalog/src/components/EntitySwitch/index.ts +++ b/plugins/catalog/src/components/EntitySwitch/index.ts @@ -15,5 +15,5 @@ */ export { EntitySwitch } from './EntitySwitch'; -export type { EntitySwitchCaseProps } from './EntitySwitch'; +export type { EntitySwitchProps, EntitySwitchCaseProps } from './EntitySwitch'; export { isKind, isNamespace, isComponentType } from './conditions'; From a7e01ab339913ea90837b5aba29c1556b15c2572 Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 18 Feb 2022 13:34:28 +0100 Subject: [PATCH 252/383] make some breaking changes to TaskStore and TaskBroker Signed-off-by: blam --- .../src/scaffolder/tasks/DatabaseTaskStore.ts | 13 +++-- .../tasks/StorageTaskBroker.test.ts | 27 +++++----- .../src/scaffolder/tasks/StorageTaskBroker.ts | 9 ++-- .../src/scaffolder/tasks/TaskWorker.test.ts | 36 +++++++------ .../src/scaffolder/tasks/index.ts | 2 + .../src/scaffolder/tasks/types.ts | 53 +++++++++++++++---- .../scaffolder-backend/src/service/router.ts | 9 ++-- 7 files changed, 98 insertions(+), 51 deletions(-) diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/DatabaseTaskStore.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/DatabaseTaskStore.ts index 173fbb7778..389ecae5c6 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/DatabaseTaskStore.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/DatabaseTaskStore.ts @@ -24,11 +24,11 @@ import { SerializedTask, TaskStatus, TaskEventType, - TaskSecrets, - TaskSpec, TaskStore, TaskStoreEmitOptions, TaskStoreListEventsOptions, + TaskStoreCreateTaskOptions, + TaskStoreCreateTaskResult, } from './types'; import { DateTime } from 'luxon'; @@ -108,14 +108,13 @@ export class DatabaseTaskStore implements TaskStore { } async createTask( - spec: TaskSpec, - secrets?: TaskSecrets, - ): Promise<{ taskId: string }> { + options: TaskStoreCreateTaskOptions, + ): Promise { const taskId = uuid(); await this.db('tasks').insert({ id: taskId, - spec: JSON.stringify(spec), - secrets: secrets ? JSON.stringify(secrets) : undefined, + spec: JSON.stringify(options.spec), + secrets: options.secrets ? JSON.stringify(options.secrets) : undefined, status: 'open', }); return { taskId }; diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.test.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.test.ts index 93285a4ab3..daf444cdd8 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.test.ts @@ -47,7 +47,7 @@ describe('StorageTaskBroker', () => { const logger = getVoidLogger(); it('should claim a dispatched work item', async () => { const broker = new StorageTaskBroker(storage, logger); - await broker.dispatch({} as TaskSpec); + await broker.dispatch({ spec: {} as TaskSpec }); await expect(broker.claim()).resolves.toEqual(expect.any(TaskManager)); }); @@ -57,15 +57,15 @@ describe('StorageTaskBroker', () => { await expect(Promise.race([promise, 'waiting'])).resolves.toBe('waiting'); - await broker.dispatch({} as TaskSpec); + await broker.dispatch({ spec: {} as TaskSpec }); await expect(promise).resolves.toEqual(expect.any(TaskManager)); }); it('should dispatch multiple items and claim them in order', async () => { const broker = new StorageTaskBroker(storage, logger); - await broker.dispatch({ steps: [{ id: 'a' }] } as TaskSpec); - await broker.dispatch({ steps: [{ id: 'b' }] } as TaskSpec); - await broker.dispatch({ steps: [{ id: 'c' }] } as TaskSpec); + await broker.dispatch({ spec: { steps: [{ id: 'a' }] } as TaskSpec }); + await broker.dispatch({ spec: { steps: [{ id: 'b' }] } as TaskSpec }); + await broker.dispatch({ spec: { steps: [{ id: 'c' }] } as TaskSpec }); const taskA = await broker.claim(); const taskB = await broker.claim(); @@ -80,14 +80,14 @@ describe('StorageTaskBroker', () => { it('should store secrets', async () => { const broker = new StorageTaskBroker(storage, logger); - await broker.dispatch({} as TaskSpec, fakeSecrets); + await broker.dispatch({ spec: {} as TaskSpec, secrets: fakeSecrets }); const task = await broker.claim(); expect(task.secrets).toEqual(fakeSecrets); }, 10000); it('should complete a task', async () => { const broker = new StorageTaskBroker(storage, logger); - const dispatchResult = await broker.dispatch({} as TaskSpec); + const dispatchResult = await broker.dispatch({ spec: {} as TaskSpec }); const task = await broker.claim(); await task.complete('completed'); const taskRow = await storage.getTask(dispatchResult.taskId); @@ -96,7 +96,10 @@ describe('StorageTaskBroker', () => { it('should remove secrets after picking up a task', async () => { const broker = new StorageTaskBroker(storage, logger); - const dispatchResult = await broker.dispatch({} as TaskSpec, fakeSecrets); + const dispatchResult = await broker.dispatch({ + spec: {} as TaskSpec, + secrets: fakeSecrets, + }); await broker.claim(); const taskRow = await storage.getTask(dispatchResult.taskId); @@ -105,7 +108,7 @@ describe('StorageTaskBroker', () => { it('should fail a task', async () => { const broker = new StorageTaskBroker(storage, logger); - const dispatchResult = await broker.dispatch({} as TaskSpec); + const dispatchResult = await broker.dispatch({ spec: {} as TaskSpec }); const task = await broker.claim(); await task.complete('failed'); const taskRow = await storage.getTask(dispatchResult.taskId); @@ -116,7 +119,7 @@ describe('StorageTaskBroker', () => { const broker1 = new StorageTaskBroker(storage, logger); const broker2 = new StorageTaskBroker(storage, logger); - const { taskId } = await broker1.dispatch({} as TaskSpec); + const { taskId } = await broker1.dispatch({ spec: {} as TaskSpec }); const logPromise = new Promise(resolve => { const observedEvents = new Array(); @@ -155,7 +158,7 @@ describe('StorageTaskBroker', () => { it('should heartbeat', async () => { const broker = new StorageTaskBroker(storage, logger); - const { taskId } = await broker.dispatch({} as TaskSpec); + const { taskId } = await broker.dispatch({ spec: {} as TaskSpec }); const task = await broker.claim(); const initialTask = await storage.getTask(taskId); @@ -173,7 +176,7 @@ describe('StorageTaskBroker', () => { it('should be update the status to failed if heartbeat fails', async () => { const broker = new StorageTaskBroker(storage, logger); - const { taskId } = await broker.dispatch({} as TaskSpec); + const { taskId } = await broker.dispatch({ spec: {} as TaskSpec }); const task = await broker.claim(); jest diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.ts index 7f09623cb5..49c1056727 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.ts @@ -23,10 +23,10 @@ import { TaskSpec, TaskStore, TaskBroker, - DispatchResult, SerializedTaskEvent, SerializedTask, } from './types'; +import { TaskBrokerDispatchOptions } from '.'; /** * TaskManager @@ -155,10 +155,9 @@ export class StorageTaskBroker implements TaskBroker { } async dispatch( - spec: TaskSpec, - secrets?: TaskSecrets, - ): Promise { - const taskRow = await this.storage.createTask(spec, secrets); + options: TaskBrokerDispatchOptions, + ): Promise<{ taskId: string }> { + const taskRow = await this.storage.createTask(options); this.signalDispatch(); return { taskId: taskRow.taskId, diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/TaskWorker.test.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/TaskWorker.test.ts index 9b6baf3b84..9ff6b9c8a1 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/TaskWorker.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/TaskWorker.test.ts @@ -91,12 +91,14 @@ describe('TaskWorker', () => { }); await broker.dispatch({ - apiVersion: 'backstage.io/v1beta2', - steps: [{ id: 'test', name: 'test', action: 'not-found-action' }], - output: { - result: '{{ steps.test.output.testOutput }}', + spec: { + apiVersion: 'backstage.io/v1beta2', + steps: [{ id: 'test', name: 'test', action: 'not-found-action' }], + output: { + result: '{{ steps.test.output.testOutput }}', + }, + values: {}, }, - values: {}, }); const task = await broker.claim(); @@ -122,12 +124,14 @@ describe('TaskWorker', () => { }); await broker.dispatch({ - apiVersion: 'scaffolder.backstage.io/v1beta3', - steps: [{ id: 'test', name: 'test', action: 'not-found-action' }], - output: { - result: '{{ steps.test.output.testOutput }}', + spec: { + apiVersion: 'scaffolder.backstage.io/v1beta3', + steps: [{ id: 'test', name: 'test', action: 'not-found-action' }], + output: { + result: '{{ steps.test.output.testOutput }}', + }, + parameters: {}, }, - parameters: {}, }); const task = await broker.claim(); @@ -151,12 +155,14 @@ describe('TaskWorker', () => { }); const { taskId } = await broker.dispatch({ - apiVersion: 'scaffolder.backstage.io/v1beta3', - steps: [{ id: 'test', name: 'test', action: 'not-found-action' }], - output: { - result: '{{ steps.test.output.testOutput }}', + spec: { + apiVersion: 'scaffolder.backstage.io/v1beta3', + steps: [{ id: 'test', name: 'test', action: 'not-found-action' }], + output: { + result: '{{ steps.test.output.testOutput }}', + }, + parameters: {}, }, - parameters: {}, }); const task = await broker.claim(); diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/index.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/index.ts index 47507b8c9c..be1eaef643 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/index.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/index.ts @@ -36,5 +36,7 @@ export type { TaskContext, TaskStore, DispatchResult, + TaskBrokerDispatchResult, + TaskBrokerDispatchOptions, TemplateMetadata, } from './types'; diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/types.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/types.ts index abb3fe45ef..147fa359d2 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/types.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/types.ts @@ -74,7 +74,7 @@ export type CompletedTaskState = TaskCompletionState; export type SerializedTask = { id: string; spec: TaskSpec; - status: Status; + status: TaskStatus; createdAt: string; lastHeartbeatAt?: string; secrets?: TaskSecrets; @@ -110,14 +110,31 @@ export type TaskSecrets = Record & { }; /** - * DispatchResult + * The result of the TaskBroker Dispatch * * @public */ -export type DispatchResult = { +export type TaskBrokerDispatchResult = { taskId: string; }; +/** + * The options passed to TaskBroker Dispatch + * Currently a spec and optional secrets + * + * @public + */ +export type TaskBrokerDispatchOptions = { + spec: TaskSpec; + secrets?: TaskSecrets; +}; + +/** + * DispatchResult + * @deprecated use TaskBrokerDispatchResult instead + */ +export type DispatchResult = TaskBrokerDispatchResult; + /** * Task * @@ -128,7 +145,7 @@ export interface TaskContext { secrets?: TaskSecrets; done: boolean; emitLog(message: string, metadata?: JsonValue): Promise; - complete(result: CompletedTaskState, metadata?: JsonValue): Promise; + complete(result: TaskCompletionState, metadata?: JsonValue): Promise; getWorkspaceName(): Promise; } @@ -139,7 +156,9 @@ export interface TaskContext { */ export interface TaskBroker { claim(): Promise; - dispatch(spec: TaskSpec, secrets?: TaskSecrets): Promise; + dispatch( + options: TaskBrokerDispatchOptions, + ): Promise; vacuumTasks(timeoutS: { timeoutS: number }): Promise; observe( options: { @@ -174,6 +193,23 @@ export type TaskStoreListEventsOptions = { after?: number | undefined; }; +/** + * The options passed to TaskStore create + * @public + */ +export type TaskStoreCreateTaskOptions = { + spec: TaskSpec; + secrets?: TaskSecrets; +}; + +/** + * The response from TaskStoreCreate + * @public + */ +export type TaskStoreCreateTaskResult = { + taskId: string; +}; + /** * TaskStore * @@ -181,14 +217,13 @@ export type TaskStoreListEventsOptions = { */ export interface TaskStore { createTask( - task: TaskSpec, - secrets?: TaskSecrets, - ): Promise<{ taskId: string }>; + options: TaskStoreCreateTaskOptions, + ): Promise; getTask(taskId: string): Promise; claimTask(): Promise; completeTask(options: { taskId: string; - status: Status; + status: TaskStatus; eventBody: JsonObject; }): Promise; heartbeatTask(taskId: string): Promise; diff --git a/plugins/scaffolder-backend/src/service/router.ts b/plugins/scaffolder-backend/src/service/router.ts index 8a3645cf31..371fc47dc2 100644 --- a/plugins/scaffolder-backend/src/service/router.ts +++ b/plugins/scaffolder-backend/src/service/router.ts @@ -266,9 +266,12 @@ export async function createRouter( ); } - const result = await taskBroker.dispatch(taskSpec, { - ...req.body.secrets, - backstageToken: token, + const result = await taskBroker.dispatch({ + spec: taskSpec, + secrets: { + ...req.body.secrets, + backstageToken: token, + }, }); res.status(201).json({ id: result.taskId }); From 7f193ff0193c915168ae0b8f9f94e0c8b390b189 Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 18 Feb 2022 13:40:22 +0100 Subject: [PATCH 253/383] chore: fix the types and update the api-report Signed-off-by: blam --- .changeset/gentle-ghosts-love.md | 5 ++ .changeset/tender-apricots-fetch.md | 5 ++ plugins/scaffolder-backend/api-report.md | 81 ++++++++++++------- .../src/scaffolder/tasks/index.ts | 2 + .../src/scaffolder/tasks/types.ts | 2 + 5 files changed, 65 insertions(+), 30 deletions(-) create mode 100644 .changeset/gentle-ghosts-love.md create mode 100644 .changeset/tender-apricots-fetch.md diff --git a/.changeset/gentle-ghosts-love.md b/.changeset/gentle-ghosts-love.md new file mode 100644 index 0000000000..b0727512d6 --- /dev/null +++ b/.changeset/gentle-ghosts-love.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-backend': minor +--- + +breaking diff --git a/.changeset/tender-apricots-fetch.md b/.changeset/tender-apricots-fetch.md new file mode 100644 index 0000000000..fe52e688da --- /dev/null +++ b/.changeset/tender-apricots-fetch.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-backend': patch +--- + +smaller diff --git a/plugins/scaffolder-backend/api-report.md b/plugins/scaffolder-backend/api-report.md index 14b422048d..c0ff3b3f2b 100644 --- a/plugins/scaffolder-backend/api-report.md +++ b/plugins/scaffolder-backend/api-report.md @@ -50,8 +50,8 @@ export type ActionContext = { templateInfo?: TemplateInfo; }; -// @public -export type CompletedTaskState = 'failed' | 'completed'; +// @public @deprecated +export type CompletedTaskState = TaskCompletionState; // Warning: (ae-missing-release-tag) "createBuiltinActions" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // @@ -315,7 +315,6 @@ export type CreateWorkerOptions = { // @public export class DatabaseTaskStore implements TaskStore { - constructor(options: DatabaseTaskStoreOptions); // (undocumented) claimTask(): Promise; // (undocumented) @@ -325,7 +324,7 @@ export class DatabaseTaskStore implements TaskStore { eventBody, }: { taskId: string; - status: Status; + status: TaskStatus; eventBody: JsonObject; }): Promise; // Warning: (ae-forgotten-export) The symbol "DatabaseTaskStoreOptions" needs to be exported by the entry point index.d.ts @@ -334,11 +333,8 @@ export class DatabaseTaskStore implements TaskStore { static create(options: DatabaseTaskStoreOptions): Promise; // (undocumented) createTask( - spec: TaskSpec, - secrets?: TaskSecrets, - ): Promise<{ - taskId: string; - }>; + options: TaskStoreCreateTaskOptions, + ): Promise; // (undocumented) emitLogEvent({ taskId, body }: TaskStoreEmitOptions): Promise; // (undocumented) @@ -357,10 +353,8 @@ export class DatabaseTaskStore implements TaskStore { }>; } -// @public -export type DispatchResult = { - taskId: string; -}; +// @public @deprecated +export type DispatchResult = TaskBrokerDispatchResult; // Warning: (ae-missing-release-tag) "fetchContents" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // @@ -449,7 +443,7 @@ export class ScaffolderEntitiesProcessor implements CatalogProcessor { export type SerializedTask = { id: string; spec: TaskSpec; - status: Status; + status: TaskStatus; createdAt: string; lastHeartbeatAt?: string; secrets?: TaskSecrets; @@ -464,20 +458,17 @@ export type SerializedTaskEvent = { createdAt: string; }; -// @public -export type Status = - | 'open' - | 'processing' - | 'failed' - | 'cancelled' - | 'completed'; +// @public @deprecated +export type Status = TaskStatus; // @public export interface TaskBroker { // (undocumented) claim(): Promise; // (undocumented) - dispatch(spec: TaskSpec, secrets?: TaskSecrets): Promise; + dispatch( + options: TaskBrokerDispatchOptions, + ): Promise; // (undocumented) get(taskId: string): Promise; // (undocumented) @@ -499,10 +490,24 @@ export interface TaskBroker { vacuumTasks(timeoutS: { timeoutS: number }): Promise; } +// @public +export type TaskBrokerDispatchOptions = { + spec: TaskSpec; + secrets?: TaskSecrets; +}; + +// @public +export type TaskBrokerDispatchResult = { + taskId: string; +}; + +// @public +export type TaskCompletionState = 'failed' | 'completed'; + // @public export interface TaskContext { // (undocumented) - complete(result: CompletedTaskState, metadata?: JsonValue): Promise; + complete(result: TaskCompletionState, metadata?: JsonValue): Promise; // (undocumented) done: boolean; // (undocumented) @@ -521,7 +526,7 @@ export type TaskEventType = 'completion' | 'log'; // @public export class TaskManager implements TaskContext { // (undocumented) - complete(result: CompletedTaskState, metadata?: JsonObject): Promise; + complete(result: TaskCompletionState, metadata?: JsonObject): Promise; // (undocumented) static create( state: TaskState, @@ -561,6 +566,14 @@ export interface TaskState { taskId: string; } +// @public +export type TaskStatus = + | 'open' + | 'processing' + | 'failed' + | 'cancelled' + | 'completed'; + // @public export interface TaskStore { // (undocumented) @@ -568,16 +581,13 @@ export interface TaskStore { // (undocumented) completeTask(options: { taskId: string; - status: Status; + status: TaskStatus; eventBody: JsonObject; }): Promise; // (undocumented) createTask( - task: TaskSpec, - secrets?: TaskSecrets, - ): Promise<{ - taskId: string; - }>; + options: TaskStoreCreateTaskOptions, + ): Promise; // (undocumented) emitLogEvent({ taskId, body }: TaskStoreEmitOptions): Promise; // (undocumented) @@ -596,6 +606,17 @@ export interface TaskStore { }>; } +// @public +export type TaskStoreCreateTaskOptions = { + spec: TaskSpec; + secrets?: TaskSecrets; +}; + +// @public +export type TaskStoreCreateTaskResult = { + taskId: string; +}; + // @public export type TaskStoreEmitOptions = { taskId: string; diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/index.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/index.ts index be1eaef643..89404d3390 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/index.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/index.ts @@ -38,5 +38,7 @@ export type { DispatchResult, TaskBrokerDispatchResult, TaskBrokerDispatchOptions, + TaskStoreCreateTaskOptions, + TaskStoreCreateTaskResult, TemplateMetadata, } from './types'; diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/types.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/types.ts index 147fa359d2..6209c34796 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/types.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/types.ts @@ -131,6 +131,8 @@ export type TaskBrokerDispatchOptions = { /** * DispatchResult + * + * @public * @deprecated use TaskBrokerDispatchResult instead */ export type DispatchResult = TaskBrokerDispatchResult; From 2886e2c4486803119690dd91a3e0f4fe7f89c3ee Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 18 Feb 2022 13:48:30 +0100 Subject: [PATCH 254/383] chore: updating changeset text with actual changes Signed-off-by: blam --- .changeset/gentle-ghosts-love.md | 16 +++++++++++++++- .changeset/tender-apricots-fetch.md | 4 +++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/.changeset/gentle-ghosts-love.md b/.changeset/gentle-ghosts-love.md index b0727512d6..34efebad84 100644 --- a/.changeset/gentle-ghosts-love.md +++ b/.changeset/gentle-ghosts-love.md @@ -2,4 +2,18 @@ '@backstage/plugin-scaffolder-backend': minor --- -breaking +- **BREAKING** - `DatabaseTaskStore()` constructor is now removed. Please use the `DatabaseTaskStore.create()` method instead. + +- **BREAKING** - `TaskStore.createTask()` method now only takes one argument of type `TaskStoreCreateTaskOptions` which encapsulates the `spec` and `secrets` + +```diff +- TaskStore.createTask(spec, secrets) ++ TaskStore.createTask({ spec, secrets}) +``` + +- **BREAKING** - `TaskBroker.dispatch()` method now only takes one argument of type `TaskBrokerDispatchOptions` which encapsulates the `spec` and `secrets` + +```diff +- TaskBroker.dispatch(spec, secrets) ++ TaskBroker.dispatch({ spec, secrets}) +``` diff --git a/.changeset/tender-apricots-fetch.md b/.changeset/tender-apricots-fetch.md index fe52e688da..5fe8bda4ef 100644 --- a/.changeset/tender-apricots-fetch.md +++ b/.changeset/tender-apricots-fetch.md @@ -2,4 +2,6 @@ '@backstage/plugin-scaffolder-backend': patch --- -smaller +- **DEPRECATED** - `Status` has been deprecated in favour of `TaskStatus` +- **DEPRECATED** - `CompletedTaskState` has been deprecated in favour of `TaskCompletionState` +- **DEPRECATED** - `DispatchResult` has been deprecated in favour of `TaskBrokerDispatchResult` From 2262fe19c925e25aae9c3559b833476e866a9ff1 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Fri, 18 Feb 2022 13:09:56 +0100 Subject: [PATCH 255/383] removed deprecated entity props Signed-off-by: Patrik Oldsberg --- .changeset/rare-moles-play.md | 17 ++++++++++++++ plugins/api-docs/api-report.md | 22 ++++++------------- .../ApiDefinitionCard/ApiDefinitionCard.tsx | 7 +----- .../components/ApisCards/ConsumedApisCard.tsx | 8 +------ .../components/ApisCards/ProvidedApisCard.tsx | 8 +------ .../ConsumingComponentsCard.tsx | 3 --- .../ProvidingComponentsCard.tsx | 3 --- plugins/catalog/api-report.md | 4 ---- .../src/components/AboutCard/AboutCard.tsx | 3 --- .../EntityLinksCard/EntityLinksCard.tsx | 3 --- plugins/circleci/api-report.md | 7 ++---- plugins/circleci/src/components/Router.tsx | 7 +----- plugins/cloudbuild/api-report.md | 11 ++-------- .../cloudbuild/src/components/Cards/Cards.tsx | 5 ----- plugins/cloudbuild/src/components/Router.tsx | 7 +----- plugins/github-actions/api-report.md | 13 ++++------- .../src/components/Cards/Cards.tsx | 3 --- .../Cards/RecentWorkflowRunsCard.test.tsx | 8 +++---- .../Cards/RecentWorkflowRunsCard.tsx | 3 --- .../github-actions/src/components/Router.tsx | 7 +----- plugins/jenkins/api-report.md | 4 +--- plugins/jenkins/src/components/Router.tsx | 5 +---- plugins/kafka/api-report.md | 4 +--- plugins/kafka/src/Router.tsx | 5 +---- plugins/kubernetes/api-report.md | 4 +--- plugins/kubernetes/src/Router.tsx | 5 +---- plugins/lighthouse/api-report.md | 4 +--- plugins/lighthouse/src/Router.tsx | 5 +---- plugins/org/api-report.md | 11 ---------- .../Group/GroupProfile/GroupProfileCard.tsx | 2 -- .../Group/MembersList/MembersListCard.tsx | 2 -- .../Cards/OwnershipCard/OwnershipCard.tsx | 2 -- .../UserProfileCard/UserProfileCard.test.tsx | 2 +- .../User/UserProfileCard/UserProfileCard.tsx | 2 -- plugins/rollbar/api-report.md | 9 +++----- .../EntityPageRollbar/EntityPageRollbar.tsx | 8 +------ plugins/rollbar/src/components/Router.tsx | 7 ++---- plugins/sonarqube/api-report.md | 4 +--- .../SonarQubeCard/SonarQubeCard.tsx | 2 -- plugins/techdocs/api-report.md | 6 ++--- plugins/techdocs/src/Router.tsx | 5 +---- 41 files changed, 61 insertions(+), 186 deletions(-) create mode 100644 .changeset/rare-moles-play.md diff --git a/.changeset/rare-moles-play.md b/.changeset/rare-moles-play.md new file mode 100644 index 0000000000..26fe7cd9b0 --- /dev/null +++ b/.changeset/rare-moles-play.md @@ -0,0 +1,17 @@ +--- +'@backstage/plugin-api-docs': minor +'@backstage/plugin-catalog': minor +'@backstage/plugin-circleci': minor +'@backstage/plugin-cloudbuild': minor +'@backstage/plugin-github-actions': minor +'@backstage/plugin-jenkins': minor +'@backstage/plugin-kafka': minor +'@backstage/plugin-kubernetes': minor +'@backstage/plugin-lighthouse': minor +'@backstage/plugin-org': minor +'@backstage/plugin-rollbar': minor +'@backstage/plugin-sonarqube': minor +'@backstage/plugin-techdocs': minor +--- + +**BREAKING**: Removed support for passing in an explicit `entity` prop to entity page extensions, which has been deprecated for a long time. This is only a breaking change at the TypeScript level, as this property was already ignored. diff --git a/plugins/api-docs/api-report.md b/plugins/api-docs/api-report.md index b626da89a5..b6683d9b40 100644 --- a/plugins/api-docs/api-report.md +++ b/plugins/api-docs/api-report.md @@ -9,7 +9,6 @@ import { ApiEntity } from '@backstage/catalog-model'; import { ApiRef } from '@backstage/core-plugin-api'; import { BackstagePlugin } from '@backstage/core-plugin-api'; import { CatalogTableRow } from '@backstage/plugin-catalog'; -import { Entity } from '@backstage/catalog-model'; import { ExternalRouteRef } from '@backstage/core-plugin-api'; import { default as React_2 } from 'react'; import { RouteRef } from '@backstage/core-plugin-api'; @@ -17,11 +16,10 @@ import { TableColumn } from '@backstage/core-components'; import { TableProps } from '@backstage/core-components'; import { UserListFilterKind } from '@backstage/plugin-catalog-react'; -// Warning: (ae-forgotten-export) The symbol "Props" needs to be exported by the entry point index.d.ts // 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: (_: Props) => JSX.Element; +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) // @@ -92,13 +90,13 @@ export type AsyncApiDefinitionWidgetProps = { // 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_2) => JSX.Element; +export const ConsumedApisCard: ({ variant }: Props) => 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_5) => JSX.Element; +export const ConsumingComponentsCard: ({ variant }: Props_4) => JSX.Element; // @public export const DefaultApiExplorerPage: ({ @@ -122,9 +120,7 @@ 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: (_: { - apiEntity?: ApiEntity | undefined; -}) => JSX.Element; +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) // @@ -132,7 +128,6 @@ export const EntityApiDefinitionCard: (_: { export const EntityConsumedApisCard: ({ variant, }: { - entity?: Entity | undefined; variant?: 'gridItem' | undefined; }) => JSX.Element; @@ -142,7 +137,6 @@ export const EntityConsumedApisCard: ({ export const EntityConsumingComponentsCard: ({ variant, }: { - entity?: Entity | undefined; variant?: 'gridItem' | undefined; }) => JSX.Element; @@ -161,7 +155,6 @@ export const EntityHasApisCard: ({ export const EntityProvidedApisCard: ({ variant, }: { - entity?: Entity | undefined; variant?: 'gridItem' | undefined; }) => JSX.Element; @@ -171,7 +164,6 @@ export const EntityProvidedApisCard: ({ export const EntityProvidingComponentsCard: ({ variant, }: { - entity?: Entity | undefined; variant?: 'gridItem' | undefined; }) => JSX.Element; @@ -193,7 +185,7 @@ export type GraphQlDefinitionWidgetProps = { // 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_3) => JSX.Element; +export const HasApisCard: ({ variant }: Props_2) => 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) // @@ -228,11 +220,11 @@ export type PlainApiDefinitionWidgetProps = { // 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_4) => JSX.Element; +export const ProvidedApisCard: ({ variant }: 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) "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_6) => JSX.Element; +export const ProvidingComponentsCard: ({ variant }: Props_5) => JSX.Element; ``` diff --git a/plugins/api-docs/src/components/ApiDefinitionCard/ApiDefinitionCard.tsx b/plugins/api-docs/src/components/ApiDefinitionCard/ApiDefinitionCard.tsx index 6f3e155816..353b973626 100644 --- a/plugins/api-docs/src/components/ApiDefinitionCard/ApiDefinitionCard.tsx +++ b/plugins/api-docs/src/components/ApiDefinitionCard/ApiDefinitionCard.tsx @@ -24,12 +24,7 @@ import { PlainApiDefinitionWidget } from '../PlainApiDefinitionWidget'; import { CardTab, TabbedCard } from '@backstage/core-components'; import { useApi } from '@backstage/core-plugin-api'; -type Props = { - /** @deprecated The entity is now grabbed from context instead */ - apiEntity?: ApiEntity; -}; - -export const ApiDefinitionCard = (_: Props) => { +export const ApiDefinitionCard = () => { const { entity } = useEntity(); const config = useApi(apiDocsConfigRef); const { getApiDefinitionWidget } = config; diff --git a/plugins/api-docs/src/components/ApisCards/ConsumedApisCard.tsx b/plugins/api-docs/src/components/ApisCards/ConsumedApisCard.tsx index 56b8559537..e810e06ff7 100644 --- a/plugins/api-docs/src/components/ApisCards/ConsumedApisCard.tsx +++ b/plugins/api-docs/src/components/ApisCards/ConsumedApisCard.tsx @@ -14,11 +14,7 @@ * limitations under the License. */ -import { - ApiEntity, - Entity, - RELATION_CONSUMES_API, -} from '@backstage/catalog-model'; +import { ApiEntity, RELATION_CONSUMES_API } from '@backstage/catalog-model'; import { Typography } from '@material-ui/core'; import { EntityTable, @@ -36,8 +32,6 @@ import { } from '@backstage/core-components'; type Props = { - /** @deprecated The entity is now grabbed from context instead */ - entity?: Entity; variant?: 'gridItem'; }; diff --git a/plugins/api-docs/src/components/ApisCards/ProvidedApisCard.tsx b/plugins/api-docs/src/components/ApisCards/ProvidedApisCard.tsx index efdc88b2e1..a63546176f 100644 --- a/plugins/api-docs/src/components/ApisCards/ProvidedApisCard.tsx +++ b/plugins/api-docs/src/components/ApisCards/ProvidedApisCard.tsx @@ -14,11 +14,7 @@ * limitations under the License. */ -import { - ApiEntity, - Entity, - RELATION_PROVIDES_API, -} from '@backstage/catalog-model'; +import { ApiEntity, RELATION_PROVIDES_API } from '@backstage/catalog-model'; import { Typography } from '@material-ui/core'; import { EntityTable, @@ -36,8 +32,6 @@ import { } from '@backstage/core-components'; type Props = { - /** @deprecated The entity is now grabbed from context instead */ - entity?: Entity; variant?: 'gridItem'; }; diff --git a/plugins/api-docs/src/components/ComponentsCards/ConsumingComponentsCard.tsx b/plugins/api-docs/src/components/ComponentsCards/ConsumingComponentsCard.tsx index 20fa7021cc..5455f37f14 100644 --- a/plugins/api-docs/src/components/ComponentsCards/ConsumingComponentsCard.tsx +++ b/plugins/api-docs/src/components/ComponentsCards/ConsumingComponentsCard.tsx @@ -16,7 +16,6 @@ import { ComponentEntity, - Entity, RELATION_API_CONSUMED_BY, } from '@backstage/catalog-model'; import { Typography } from '@material-ui/core'; @@ -35,8 +34,6 @@ import { } from '@backstage/core-components'; type Props = { - /** @deprecated The entity is now grabbed from context instead */ - entity?: Entity; variant?: 'gridItem'; }; diff --git a/plugins/api-docs/src/components/ComponentsCards/ProvidingComponentsCard.tsx b/plugins/api-docs/src/components/ComponentsCards/ProvidingComponentsCard.tsx index 286a360e9a..9bcace393e 100644 --- a/plugins/api-docs/src/components/ComponentsCards/ProvidingComponentsCard.tsx +++ b/plugins/api-docs/src/components/ComponentsCards/ProvidingComponentsCard.tsx @@ -16,7 +16,6 @@ import { ComponentEntity, - Entity, RELATION_API_PROVIDED_BY, } from '@backstage/catalog-model'; import { Typography } from '@material-ui/core'; @@ -35,8 +34,6 @@ import { } from '@backstage/core-components'; type Props = { - /** @deprecated The entity is now grabbed from context instead */ - entity?: Entity; variant?: 'gridItem'; }; diff --git a/plugins/catalog/api-report.md b/plugins/catalog/api-report.md index e2cc0c8ba6..12504a37b0 100644 --- a/plugins/catalog/api-report.md +++ b/plugins/catalog/api-report.md @@ -27,8 +27,6 @@ export function AboutCard(props: AboutCardProps): JSX.Element; // @public export interface AboutCardProps { - // @deprecated (undocumented) - entity?: Entity; // (undocumented) variant?: InfoCardVariants; } @@ -285,8 +283,6 @@ export interface EntityLinksCardProps { // // (undocumented) cols?: ColumnBreakpoints | number; - // @deprecated (undocumented) - entity?: Entity; // (undocumented) variant?: 'gridItem'; } diff --git a/plugins/catalog/src/components/AboutCard/AboutCard.tsx b/plugins/catalog/src/components/AboutCard/AboutCard.tsx index 52b3fe3962..25383c8ad3 100644 --- a/plugins/catalog/src/components/AboutCard/AboutCard.tsx +++ b/plugins/catalog/src/components/AboutCard/AboutCard.tsx @@ -15,7 +15,6 @@ */ import { - Entity, ANNOTATION_LOCATION, DEFAULT_NAMESPACE, stringifyEntityRef, @@ -78,8 +77,6 @@ const useStyles = makeStyles({ * @public */ export interface AboutCardProps { - /** @deprecated The entity is now grabbed from context instead */ - entity?: Entity; variant?: InfoCardVariants; } diff --git a/plugins/catalog/src/components/EntityLinksCard/EntityLinksCard.tsx b/plugins/catalog/src/components/EntityLinksCard/EntityLinksCard.tsx index 7337e79c9b..4c4a1ac908 100644 --- a/plugins/catalog/src/components/EntityLinksCard/EntityLinksCard.tsx +++ b/plugins/catalog/src/components/EntityLinksCard/EntityLinksCard.tsx @@ -14,7 +14,6 @@ * limitations under the License. */ -import { Entity } from '@backstage/catalog-model'; import { useEntity } from '@backstage/plugin-catalog-react'; import LanguageIcon from '@material-ui/icons/Language'; import React from 'react'; @@ -26,8 +25,6 @@ import { InfoCard } from '@backstage/core-components'; /** @public */ export interface EntityLinksCardProps { - /** @deprecated The entity is now grabbed from context instead */ - entity?: Entity; cols?: ColumnBreakpoints | number; variant?: 'gridItem'; } diff --git a/plugins/circleci/api-report.md b/plugins/circleci/api-report.md index bb4334c0f9..5cdf916514 100644 --- a/plugins/circleci/api-report.md +++ b/plugins/circleci/api-report.md @@ -87,9 +87,7 @@ 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: (_props: { - entity?: Entity | undefined; -}) => JSX.Element; +export const EntityCircleCIContent: () => JSX.Element; export { GitType }; @@ -100,9 +98,8 @@ const isCircleCIAvailable: (entity: Entity) => boolean; export { isCircleCIAvailable }; export { isCircleCIAvailable as isPluginApplicableToEntity }; -// 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/circleci/src/components/Router.tsx b/plugins/circleci/src/components/Router.tsx index 5aa8dd9df9..e16c91f2a0 100644 --- a/plugins/circleci/src/components/Router.tsx +++ b/plugins/circleci/src/components/Router.tsx @@ -27,12 +27,7 @@ import { MissingAnnotationEmptyState } from '@backstage/core-components'; export const isCircleCIAvailable = (entity: Entity) => Boolean(entity.metadata.annotations?.[CIRCLECI_ANNOTATION]); -type Props = { - /** @deprecated The entity is now grabbed from context instead */ - entity?: Entity; -}; - -export const Router = (_props: Props) => { +export const Router = () => { const { entity } = useEntity(); if (!isCircleCIAvailable(entity)) { diff --git a/plugins/cloudbuild/api-report.md b/plugins/cloudbuild/api-report.md index fefa4fe344..4077a8991a 100644 --- a/plugins/cloudbuild/api-report.md +++ b/plugins/cloudbuild/api-report.md @@ -149,9 +149,7 @@ 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: (_props: { - entity?: Entity | undefined; -}) => JSX.Element; +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) // @@ -159,7 +157,6 @@ export const EntityCloudbuildContent: (_props: { export const EntityLatestCloudbuildRunCard: ({ branch, }: { - entity?: Entity | undefined; branch: string; }) => JSX.Element; @@ -169,7 +166,6 @@ export const EntityLatestCloudbuildRunCard: ({ export const EntityLatestCloudbuildsForBranchCard: ({ branch, }: { - entity?: Entity | undefined; branch: string; }) => JSX.Element; @@ -196,7 +192,6 @@ export { isCloudbuildAvailable as isPluginApplicableToEntity }; export const LatestWorkflowRunCard: ({ branch, }: { - entity?: Entity | undefined; branch: string; }) => JSX.Element; @@ -206,7 +201,6 @@ export const LatestWorkflowRunCard: ({ export const LatestWorkflowsForBranchCard: ({ branch, }: { - entity?: Entity | undefined; branch: string; }) => JSX.Element; @@ -256,11 +250,10 @@ export interface Results { buildStepOutputs: string[]; } -// 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; // Warning: (ae-missing-release-tag) "Source" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // diff --git a/plugins/cloudbuild/src/components/Cards/Cards.tsx b/plugins/cloudbuild/src/components/Cards/Cards.tsx index dad1f7d38f..82e0eb1b88 100644 --- a/plugins/cloudbuild/src/components/Cards/Cards.tsx +++ b/plugins/cloudbuild/src/components/Cards/Cards.tsx @@ -16,7 +16,6 @@ import React, { useEffect } from 'react'; import { useWorkflowRuns, WorkflowRun } from '../useWorkflowRuns'; import { WorkflowRunsTable } from '../WorkflowRunsTable'; -import { Entity } from '@backstage/catalog-model'; import { useEntity } from '@backstage/plugin-catalog-react'; import { WorkflowRunStatus } from '../WorkflowRunStatus'; import { Theme, makeStyles, LinearProgress } from '@material-ui/core'; @@ -76,8 +75,6 @@ const WidgetContent = ({ export const LatestWorkflowRunCard = ({ branch = 'master', }: { - /** @deprecated The entity is now grabbed from context instead */ - entity?: Entity; branch: string; }) => { const { entity } = useEntity(); @@ -109,8 +106,6 @@ export const LatestWorkflowRunCard = ({ export const LatestWorkflowsForBranchCard = ({ branch = 'master', }: { - /** @deprecated The entity is now grabbed from context instead */ - entity?: Entity; branch: string; }) => { const { entity } = useEntity(); diff --git a/plugins/cloudbuild/src/components/Router.tsx b/plugins/cloudbuild/src/components/Router.tsx index bdeae7e8fd..e4c590bcaf 100644 --- a/plugins/cloudbuild/src/components/Router.tsx +++ b/plugins/cloudbuild/src/components/Router.tsx @@ -26,12 +26,7 @@ import { MissingAnnotationEmptyState } from '@backstage/core-components'; export const isCloudbuildAvailable = (entity: Entity) => Boolean(entity.metadata.annotations?.[CLOUDBUILD_ANNOTATION]); -type Props = { - /** @deprecated The entity is now grabbed from context instead */ - entity?: Entity; -}; - -export const Router = (_props: Props) => { +export const Router = () => { const { entity } = useEntity(); if (!isCloudbuildAvailable(entity)) { diff --git a/plugins/github-actions/api-report.md b/plugins/github-actions/api-report.md index fcb3209fb9..ee3e1d679d 100644 --- a/plugins/github-actions/api-report.md +++ b/plugins/github-actions/api-report.md @@ -31,9 +31,7 @@ export enum BuildStatus { // 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: (_props: { - entity?: Entity | undefined; -}) => JSX.Element; +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) // @@ -42,7 +40,6 @@ export const EntityLatestGithubActionRunCard: ({ branch, variant, }: { - entity?: Entity | undefined; branch: string; variant?: InfoCardVariants | undefined; }) => JSX.Element; @@ -54,7 +51,6 @@ export const EntityLatestGithubActionsForBranchCard: ({ branch, variant, }: { - entity?: Entity | undefined; branch: string; variant?: InfoCardVariants | undefined; }) => JSX.Element; @@ -315,7 +311,7 @@ export type Jobs = { export const LatestWorkflowRunCard: ({ branch, variant, -}: Props_3) => JSX.Element; +}: Props_2) => 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) // @@ -323,7 +319,7 @@ export const LatestWorkflowRunCard: ({ export const LatestWorkflowsForBranchCard: ({ branch, variant, -}: Props_3) => JSX.Element; +}: Props_2) => 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) // @@ -335,11 +331,10 @@ export const RecentWorkflowRunsCard: ({ variant, }: Props) => 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) "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_2) => JSX.Element; +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) // diff --git a/plugins/github-actions/src/components/Cards/Cards.tsx b/plugins/github-actions/src/components/Cards/Cards.tsx index c3df91bca6..61a5146bee 100644 --- a/plugins/github-actions/src/components/Cards/Cards.tsx +++ b/plugins/github-actions/src/components/Cards/Cards.tsx @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { Entity } from '@backstage/catalog-model'; import { readGitHubIntegrationConfigs } from '@backstage/integration'; import { useEntity } from '@backstage/plugin-catalog-react'; import { @@ -122,8 +121,6 @@ export const LatestWorkflowRunCard = ({ }; type Props = { - /** @deprecated The entity is now grabbed from context instead */ - entity?: Entity; 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 0f9573e051..a987a8569f 100644 --- a/plugins/github-actions/src/components/Cards/RecentWorkflowRunsCard.test.tsx +++ b/plugins/github-actions/src/components/Cards/RecentWorkflowRunsCard.test.tsx @@ -75,7 +75,7 @@ describe('', () => { jest.resetAllMocks(); }); - const renderSubject = (props: RecentWorkflowRunsCardProps = { entity }) => + const renderSubject = (props: RecentWorkflowRunsCardProps = {}) => render( @@ -85,7 +85,7 @@ describe('', () => { [configApiRef, configApi], ]} > - + @@ -113,7 +113,7 @@ describe('', () => { it('requests only the required number of workflow runs', async () => { const limit = 3; - renderSubject({ entity, limit }); + renderSubject({ limit }); expect(useWorkflowRuns).toHaveBeenCalledWith( expect.objectContaining({ initialPageSize: limit }), ); @@ -128,7 +128,7 @@ describe('', () => { it('filters workflows by branch if one is specified', async () => { const branch = 'master'; - renderSubject({ entity, branch }); + renderSubject({ branch }); expect(useWorkflowRuns).toHaveBeenCalledWith( expect.objectContaining({ branch }), ); diff --git a/plugins/github-actions/src/components/Cards/RecentWorkflowRunsCard.tsx b/plugins/github-actions/src/components/Cards/RecentWorkflowRunsCard.tsx index 12c3223d83..4e37a2b19b 100644 --- a/plugins/github-actions/src/components/Cards/RecentWorkflowRunsCard.tsx +++ b/plugins/github-actions/src/components/Cards/RecentWorkflowRunsCard.tsx @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { Entity } from '@backstage/catalog-model'; import { readGitHubIntegrationConfigs } from '@backstage/integration'; import { useEntity } from '@backstage/plugin-catalog-react'; import React, { useEffect } from 'react'; @@ -34,8 +33,6 @@ import { const firstLine = (message: string): string => message.split('\n')[0]; export type Props = { - /** @deprecated The entity is now grabbed from context instead */ - entity?: Entity; branch?: string; dense?: boolean; limit?: number; diff --git a/plugins/github-actions/src/components/Router.tsx b/plugins/github-actions/src/components/Router.tsx index 251ecb169a..793293cce8 100644 --- a/plugins/github-actions/src/components/Router.tsx +++ b/plugins/github-actions/src/components/Router.tsx @@ -26,12 +26,7 @@ import { MissingAnnotationEmptyState } from '@backstage/core-components'; export const isGithubActionsAvailable = (entity: Entity) => Boolean(entity.metadata.annotations?.[GITHUB_ACTIONS_ANNOTATION]); -type Props = { - /** @deprecated The entity is now grabbed from context instead */ - entity?: Entity; -}; - -export const Router = (_props: Props) => { +export const Router = () => { const { entity } = useEntity(); if (!isGithubActionsAvailable(entity)) { diff --git a/plugins/jenkins/api-report.md b/plugins/jenkins/api-report.md index 61c5327fa1..05ebd1fd03 100644 --- a/plugins/jenkins/api-report.md +++ b/plugins/jenkins/api-report.md @@ -18,9 +18,7 @@ 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: { - entity?: Entity | undefined; -}) => JSX.Element; +export const EntityJenkinsContent: (_props: {}) => 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) // diff --git a/plugins/jenkins/src/components/Router.tsx b/plugins/jenkins/src/components/Router.tsx index 0d38fe009a..b3561be2b0 100644 --- a/plugins/jenkins/src/components/Router.tsx +++ b/plugins/jenkins/src/components/Router.tsx @@ -27,10 +27,7 @@ export const isJenkinsAvailable = (entity: Entity) => Boolean(entity.metadata.annotations?.[JENKINS_ANNOTATION]) || Boolean(entity.metadata.annotations?.[LEGACY_JENKINS_ANNOTATION]); -type Props = { - /** @deprecated The entity is now grabbed from context instead */ - entity?: Entity; -}; +type Props = {}; export const Router = (_props: Props) => { const { entity } = useEntity(); diff --git a/plugins/kafka/api-report.md b/plugins/kafka/api-report.md index 0750978b27..95eed1dc13 100644 --- a/plugins/kafka/api-report.md +++ b/plugins/kafka/api-report.md @@ -12,9 +12,7 @@ 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: { - entity?: Entity | undefined; -}) => JSX.Element; +export const EntityKafkaContent: (_props: {}) => 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) // diff --git a/plugins/kafka/src/Router.tsx b/plugins/kafka/src/Router.tsx index c63019253b..133326b5b9 100644 --- a/plugins/kafka/src/Router.tsx +++ b/plugins/kafka/src/Router.tsx @@ -25,10 +25,7 @@ import { MissingAnnotationEmptyState } from '@backstage/core-components'; export const isPluginApplicableToEntity = (entity: Entity) => Boolean(entity.metadata.annotations?.[KAFKA_CONSUMER_GROUP_ANNOTATION]); -type Props = { - /** @deprecated The entity is now grabbed from context instead */ - entity?: Entity; -}; +type Props = {}; export const Router = (_props: Props) => { const { entity } = useEntity(); diff --git a/plugins/kubernetes/api-report.md b/plugins/kubernetes/api-report.md index 8dc0114738..f635a61cef 100644 --- a/plugins/kubernetes/api-report.md +++ b/plugins/kubernetes/api-report.md @@ -25,9 +25,7 @@ export const clusterLinksFormatters: Record; // Warning: (ae-missing-release-tag) "EntityKubernetesContent" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) -export const EntityKubernetesContent: (_props: { - entity?: Entity | undefined; -}) => JSX.Element; +export const EntityKubernetesContent: (_props: {}) => JSX.Element; // Warning: (ae-forgotten-export) The symbol "FormatClusterLinkOptions" needs to be exported by the entry point index.d.ts // Warning: (ae-missing-release-tag) "formatClusterLink" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) diff --git a/plugins/kubernetes/src/Router.tsx b/plugins/kubernetes/src/Router.tsx index 873bf128e4..deb6475ad5 100644 --- a/plugins/kubernetes/src/Router.tsx +++ b/plugins/kubernetes/src/Router.tsx @@ -32,10 +32,7 @@ export const isKubernetesAvailable = (entity: Entity) => entity.metadata.annotations?.[KUBERNETES_LABEL_SELECTOR_QUERY_ANNOTATION], ); -type Props = { - /** @deprecated The entity is now grabbed from context instead */ - entity?: Entity; -}; +type Props = {}; export const Router = (_props: Props) => { const { entity } = useEntity(); diff --git a/plugins/lighthouse/api-report.md b/plugins/lighthouse/api-report.md index 724f8898a6..26db053ef0 100644 --- a/plugins/lighthouse/api-report.md +++ b/plugins/lighthouse/api-report.md @@ -70,9 +70,7 @@ export const EntityLastLighthouseAuditCard: ({ // 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: { - entity?: Entity | undefined; -}) => JSX.Element; +export const EntityLighthouseContent: (_props: {}) => 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) // diff --git a/plugins/lighthouse/src/Router.tsx b/plugins/lighthouse/src/Router.tsx index 917001c591..1c41f522f4 100644 --- a/plugins/lighthouse/src/Router.tsx +++ b/plugins/lighthouse/src/Router.tsx @@ -36,10 +36,7 @@ export const Router = () => ( ); -type Props = { - /** @deprecated The entity is now grabbed from context instead */ - entity?: Entity; -}; +type Props = {}; export const EmbeddedRouter = (_props: Props) => { const { entity } = useEntity(); diff --git a/plugins/org/api-report.md b/plugins/org/api-report.md index b181a3aab4..723cbd43b7 100644 --- a/plugins/org/api-report.md +++ b/plugins/org/api-report.md @@ -6,11 +6,8 @@ /// import { BackstagePlugin } from '@backstage/core-plugin-api'; -import { Entity } from '@backstage/catalog-model'; import { ExternalRouteRef } from '@backstage/core-plugin-api'; -import { GroupEntity } from '@backstage/catalog-model'; import { InfoCardVariants } from '@backstage/core-components'; -import { UserEntity } from '@backstage/catalog-model'; // Warning: (ae-missing-release-tag) "EntityGroupProfileCard" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // @@ -18,7 +15,6 @@ import { UserEntity } from '@backstage/catalog-model'; export const EntityGroupProfileCard: ({ variant, }: { - entity?: GroupEntity | undefined; variant?: InfoCardVariants | undefined; }) => JSX.Element; @@ -26,7 +22,6 @@ export const EntityGroupProfileCard: ({ // // @public (undocumented) export const EntityMembersListCard: (_props: { - entity?: GroupEntity | undefined; memberDisplayTitle?: string | undefined; pageSize?: number | undefined; }) => JSX.Element; @@ -38,7 +33,6 @@ export const EntityOwnershipCard: ({ variant, entityFilterKind, }: { - entity?: Entity | undefined; variant?: InfoCardVariants | undefined; entityFilterKind?: string[] | undefined; }) => JSX.Element; @@ -49,7 +43,6 @@ export const EntityOwnershipCard: ({ export const EntityUserProfileCard: ({ variant, }: { - entity?: UserEntity | undefined; variant?: InfoCardVariants | undefined; }) => JSX.Element; @@ -59,7 +52,6 @@ export const EntityUserProfileCard: ({ export const GroupProfileCard: ({ variant, }: { - entity?: GroupEntity | undefined; variant?: InfoCardVariants | undefined; }) => JSX.Element; @@ -67,7 +59,6 @@ export const GroupProfileCard: ({ // // @public (undocumented) export const MembersListCard: (_props: { - entity?: GroupEntity; memberDisplayTitle?: string; pageSize?: number; }) => JSX.Element; @@ -91,7 +82,6 @@ export const OwnershipCard: ({ variant, entityFilterKind, }: { - entity?: Entity | undefined; variant?: InfoCardVariants | undefined; entityFilterKind?: string[] | undefined; }) => JSX.Element; @@ -102,7 +92,6 @@ export const OwnershipCard: ({ export const UserProfileCard: ({ variant, }: { - entity?: UserEntity | undefined; variant?: InfoCardVariants | undefined; }) => JSX.Element; ``` diff --git a/plugins/org/src/components/Cards/Group/GroupProfile/GroupProfileCard.tsx b/plugins/org/src/components/Cards/Group/GroupProfile/GroupProfileCard.tsx index b44fbe6c5c..8d5a553860 100644 --- a/plugins/org/src/components/Cards/Group/GroupProfile/GroupProfileCard.tsx +++ b/plugins/org/src/components/Cards/Group/GroupProfile/GroupProfileCard.tsx @@ -58,8 +58,6 @@ const CardTitle = ({ title }: { title: string }) => ( export const GroupProfileCard = ({ variant, }: { - /** @deprecated The entity is now grabbed from context instead */ - entity?: GroupEntity; variant?: InfoCardVariants; }) => { const { entity: group } = useEntity(); diff --git a/plugins/org/src/components/Cards/Group/MembersList/MembersListCard.tsx b/plugins/org/src/components/Cards/Group/MembersList/MembersListCard.tsx index 74a4f6fc90..67bf5c2e42 100644 --- a/plugins/org/src/components/Cards/Group/MembersList/MembersListCard.tsx +++ b/plugins/org/src/components/Cards/Group/MembersList/MembersListCard.tsx @@ -109,8 +109,6 @@ const MemberComponent = ({ member }: { member: UserEntity }) => { }; export const MembersListCard = (_props: { - /** @deprecated The entity is now grabbed from context instead */ - entity?: GroupEntity; memberDisplayTitle?: string; pageSize?: number; }) => { diff --git a/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.tsx b/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.tsx index c89534ea7a..2b292cbe8b 100644 --- a/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.tsx +++ b/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.tsx @@ -131,8 +131,6 @@ export const OwnershipCard = ({ variant, entityFilterKind, }: { - /** @deprecated The entity is now grabbed from context instead */ - entity?: Entity; variant?: InfoCardVariants; entityFilterKind?: string[]; }) => { 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 7b9904954f..cf84381830 100644 --- a/plugins/org/src/components/Cards/User/UserProfileCard/UserProfileCard.test.tsx +++ b/plugins/org/src/components/Cards/User/UserProfileCard/UserProfileCard.test.tsx @@ -55,7 +55,7 @@ describe('UserSummary Test', () => { const rendered = await renderWithEffects( wrapInTestApp( - + , { mountedRoutes: { diff --git a/plugins/org/src/components/Cards/User/UserProfileCard/UserProfileCard.tsx b/plugins/org/src/components/Cards/User/UserProfileCard/UserProfileCard.tsx index 0997e0a4d8..bafaad7ba0 100644 --- a/plugins/org/src/components/Cards/User/UserProfileCard/UserProfileCard.tsx +++ b/plugins/org/src/components/Cards/User/UserProfileCard/UserProfileCard.tsx @@ -51,8 +51,6 @@ const CardTitle = ({ title }: { title?: string }) => export const UserProfileCard = ({ variant, }: { - /** @deprecated The entity is now grabbed from context instead */ - entity?: UserEntity; variant?: InfoCardVariants; }) => { const { entity: user } = useEntity(); diff --git a/plugins/rollbar/api-report.md b/plugins/rollbar/api-report.md index fbdbd36208..f666ade34c 100644 --- a/plugins/rollbar/api-report.md +++ b/plugins/rollbar/api-report.md @@ -12,18 +12,15 @@ import { Entity } from '@backstage/catalog-model'; import { IdentityApi } from '@backstage/core-plugin-api'; import { RouteRef } 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) "EntityPageRollbar" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) -export const EntityPageRollbar: (_props: Props) => JSX.Element; +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: { - entity?: Entity | undefined; -}) => JSX.Element; +export const EntityRollbarContent: (_props: {}) => 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) // @@ -103,5 +100,5 @@ export { rollbarPlugin }; // 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_2) => JSX.Element; +export const Router: (_props: Props) => JSX.Element; ``` diff --git a/plugins/rollbar/src/components/EntityPageRollbar/EntityPageRollbar.tsx b/plugins/rollbar/src/components/EntityPageRollbar/EntityPageRollbar.tsx index 8b51691778..626b3442e5 100644 --- a/plugins/rollbar/src/components/EntityPageRollbar/EntityPageRollbar.tsx +++ b/plugins/rollbar/src/components/EntityPageRollbar/EntityPageRollbar.tsx @@ -14,17 +14,11 @@ * limitations under the License. */ -import { Entity } from '@backstage/catalog-model'; import { useEntity } from '@backstage/plugin-catalog-react'; import React from 'react'; import { RollbarProject } from '../RollbarProject/RollbarProject'; -type Props = { - /** @deprecated The entity is now grabbed from context instead */ - entity?: Entity; -}; - -export const EntityPageRollbar = (_props: Props) => { +export const EntityPageRollbar = () => { const { entity } = useEntity(); return ; diff --git a/plugins/rollbar/src/components/Router.tsx b/plugins/rollbar/src/components/Router.tsx index 032bf0166e..a11acb379c 100644 --- a/plugins/rollbar/src/components/Router.tsx +++ b/plugins/rollbar/src/components/Router.tsx @@ -25,10 +25,7 @@ import { MissingAnnotationEmptyState } from '@backstage/core-components'; export const isPluginApplicableToEntity = (entity: Entity) => Boolean(entity.metadata.annotations?.[ROLLBAR_ANNOTATION]); -type Props = { - /** @deprecated The entity is now grabbed from context instead */ - entity?: Entity; -}; +type Props = {}; export const Router = (_props: Props) => { const { entity } = useEntity(); @@ -39,7 +36,7 @@ export const Router = (_props: Props) => { return ( - } /> + } /> ); }; diff --git a/plugins/sonarqube/api-report.md b/plugins/sonarqube/api-report.md index b23ed65ddd..a7549a689c 100644 --- a/plugins/sonarqube/api-report.md +++ b/plugins/sonarqube/api-report.md @@ -16,7 +16,6 @@ export const EntitySonarQubeCard: ({ variant, duplicationRatings, }: { - entity?: Entity | undefined; variant?: InfoCardVariants | undefined; duplicationRatings?: | { @@ -38,7 +37,6 @@ export const SonarQubeCard: ({ variant, duplicationRatings, }: { - entity?: Entity | undefined; variant?: InfoCardVariants | undefined; duplicationRatings?: DuplicationRating[] | undefined; }) => JSX.Element; @@ -52,5 +50,5 @@ export { sonarQubePlugin }; // Warnings were encountered during analysis: // -// src/components/SonarQubeCard/SonarQubeCard.d.ts:11:5 - (ae-forgotten-export) The symbol "DuplicationRating" needs to be exported by the entry point index.d.ts +// 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/components/SonarQubeCard/SonarQubeCard.tsx b/plugins/sonarqube/src/components/SonarQubeCard/SonarQubeCard.tsx index ca3ddbda76..4527c2a3e3 100644 --- a/plugins/sonarqube/src/components/SonarQubeCard/SonarQubeCard.tsx +++ b/plugins/sonarqube/src/components/SonarQubeCard/SonarQubeCard.tsx @@ -14,7 +14,6 @@ * limitations under the License. */ -import { Entity } from '@backstage/catalog-model'; import { useEntity } from '@backstage/plugin-catalog-react'; import { Chip, Grid } from '@material-ui/core'; import { makeStyles } from '@material-ui/core/styles'; @@ -90,7 +89,6 @@ export const SonarQubeCard = ({ variant = 'gridItem', duplicationRatings = defaultDuplicationRatings, }: { - entity?: Entity; variant?: InfoCardVariants; duplicationRatings?: DuplicationRating[]; }) => { diff --git a/plugins/techdocs/api-report.md b/plugins/techdocs/api-report.md index 9a25cb6375..9459e616a1 100644 --- a/plugins/techdocs/api-report.md +++ b/plugins/techdocs/api-report.md @@ -169,9 +169,7 @@ export const EntityListDocsTable: { // Warning: (ae-missing-release-tag) "EntityTechdocsContent" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) -export const EntityTechdocsContent: (_props: { - entity?: Entity | undefined; -}) => JSX.Element; +export const EntityTechdocsContent: (_props: {}) => JSX.Element; // Warning: (ae-missing-release-tag) "isTechDocsAvailable" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // @@ -395,5 +393,5 @@ export class TechDocsStorageClient implements TechDocsStorageApi { // // src/home/components/EntityListDocsTable.d.ts:11:5 - (ae-forgotten-export) The symbol "columnFactories" needs to be exported by the entry point index.d.ts // src/home/components/EntityListDocsTable.d.ts:12:5 - (ae-forgotten-export) The symbol "actionFactories" needs to be exported by the entry point index.d.ts -// src/plugin.d.ts:29:5 - (ae-forgotten-export) The symbol "TabsConfig" needs to be exported by the entry point index.d.ts +// src/plugin.d.ts:27:5 - (ae-forgotten-export) The symbol "TabsConfig" needs to be exported by the entry point index.d.ts ``` diff --git a/plugins/techdocs/src/Router.tsx b/plugins/techdocs/src/Router.tsx index 102cda979a..0ba69c021f 100644 --- a/plugins/techdocs/src/Router.tsx +++ b/plugins/techdocs/src/Router.tsx @@ -40,10 +40,7 @@ export const Router = () => { ); }; -type Props = { - /** @deprecated The entity is now grabbed from context instead */ - entity?: Entity; -}; +type Props = {}; export const EmbeddedDocsRouter = (_props: Props) => { const { entity } = useEntity(); From 7010349c9a427f72ef780f716c9bb036fb4f1c29 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Fri, 18 Feb 2022 13:41:28 +0100 Subject: [PATCH 256/383] catalog-model: move EntityRelationSpec to catalog-backend Signed-off-by: Patrik Oldsberg --- .changeset/lovely-chairs-confess.md | 5 ++++ .changeset/lovely-falcons-hang.md | 5 ++++ packages/catalog-model/api-report.md | 7 ------ packages/catalog-model/src/entity/Entity.ts | 22 ----------------- packages/catalog-model/src/entity/index.ts | 1 - plugins/catalog-backend/api-report.md | 9 ++++++- plugins/catalog-backend/src/database/types.ts | 4 ++-- .../src/ingestion/processors/results.ts | 7 ++---- .../src/ingestion/processors/types.ts | 7 ++---- .../processing/ProcessorOutputCollector.ts | 3 +-- .../catalog-backend/src/processing/index.ts | 1 + .../catalog-backend/src/processing/types.ts | 24 ++++++++++++++++++- 12 files changed, 49 insertions(+), 46 deletions(-) create mode 100644 .changeset/lovely-chairs-confess.md create mode 100644 .changeset/lovely-falcons-hang.md diff --git a/.changeset/lovely-chairs-confess.md b/.changeset/lovely-chairs-confess.md new file mode 100644 index 0000000000..5c785e89d2 --- /dev/null +++ b/.changeset/lovely-chairs-confess.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend': patch +--- + +Added `EntityRelationSpec`, which was moved over from `@backstage/catalog-model`. diff --git a/.changeset/lovely-falcons-hang.md b/.changeset/lovely-falcons-hang.md new file mode 100644 index 0000000000..5a849f11f5 --- /dev/null +++ b/.changeset/lovely-falcons-hang.md @@ -0,0 +1,5 @@ +--- +'@backstage/catalog-model': minor +--- + +**BREAKING**: Removed `EntityRelationSpec` as it is only used during the catalog during the catalog processing. diff --git a/packages/catalog-model/api-report.md b/packages/catalog-model/api-report.md index 1171d0c0f5..0afe87e709 100644 --- a/packages/catalog-model/api-report.md +++ b/packages/catalog-model/api-report.md @@ -233,13 +233,6 @@ export type EntityRelation = { target: EntityName; }; -// @public -export type EntityRelationSpec = { - source: EntityName; - type: string; - target: EntityName; -}; - // @public export function entitySchemaValidator( schema?: unknown, diff --git a/packages/catalog-model/src/entity/Entity.ts b/packages/catalog-model/src/entity/Entity.ts index f56774025c..7199334e51 100644 --- a/packages/catalog-model/src/entity/Entity.ts +++ b/packages/catalog-model/src/entity/Entity.ts @@ -201,28 +201,6 @@ export type EntityRelation = { target: EntityName; }; -/** - * Holds the relation data for entities. - * - * @public - */ -export type EntityRelationSpec = { - /** - * The source entity of this relation. - */ - source: EntityName; - - /** - * The type of the relation. - */ - type: string; - - /** - * The target entity of this relation. - */ - target: EntityName; -}; - /** * A link to external information that is related to the entity. * diff --git a/packages/catalog-model/src/entity/index.ts b/packages/catalog-model/src/entity/index.ts index 938bdb2b9b..f619d0f39e 100644 --- a/packages/catalog-model/src/entity/index.ts +++ b/packages/catalog-model/src/entity/index.ts @@ -29,7 +29,6 @@ export type { EntityLink, EntityMeta, EntityRelation, - EntityRelationSpec, } from './Entity'; export type { EntityEnvelope } from './EntityEnvelope'; export type { diff --git a/plugins/catalog-backend/api-report.md b/plugins/catalog-backend/api-report.md index f52bbdc22e..116ee2da56 100644 --- a/plugins/catalog-backend/api-report.md +++ b/plugins/catalog-backend/api-report.md @@ -13,8 +13,8 @@ import { Conditions } from '@backstage/plugin-permission-node'; import { Config } from '@backstage/config'; import { DocumentCollator } from '@backstage/search-common'; import { Entity } from '@backstage/catalog-model'; +import { EntityName } from '@backstage/catalog-model'; import { EntityPolicy } from '@backstage/catalog-model'; -import { EntityRelationSpec } from '@backstage/catalog-model'; import express from 'express'; import { GetEntitiesRequest } from '@backstage/catalog-client'; import { GithubCredentialsProvider } from '@backstage/integration'; @@ -737,6 +737,13 @@ export type EntityProviderMutation = removed: DeferredEntity[]; }; +// @public +export type EntityRelationSpec = { + source: EntityName; + type: string; + target: EntityName; +}; + // Warning: (ae-missing-release-tag) "FileReaderProcessor" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) diff --git a/plugins/catalog-backend/src/database/types.ts b/plugins/catalog-backend/src/database/types.ts index ac2ff07498..08201323ea 100644 --- a/plugins/catalog-backend/src/database/types.ts +++ b/plugins/catalog-backend/src/database/types.ts @@ -14,10 +14,10 @@ * limitations under the License. */ -import { Entity, EntityRelationSpec } from '@backstage/catalog-model'; +import { Entity } from '@backstage/catalog-model'; import { JsonObject } from '@backstage/types'; import { DateTime } from 'luxon'; -import { DeferredEntity } from '../processing/types'; +import { DeferredEntity, EntityRelationSpec } from '../processing/types'; /** * An abstraction for transactions of the underlying database technology. diff --git a/plugins/catalog-backend/src/ingestion/processors/results.ts b/plugins/catalog-backend/src/ingestion/processors/results.ts index 5b6f07bae4..3d4f491adc 100644 --- a/plugins/catalog-backend/src/ingestion/processors/results.ts +++ b/plugins/catalog-backend/src/ingestion/processors/results.ts @@ -15,12 +15,9 @@ */ import { InputError, NotFoundError } from '@backstage/errors'; -import { - Entity, - EntityRelationSpec, - LocationSpec, -} from '@backstage/catalog-model'; +import { Entity, LocationSpec } from '@backstage/catalog-model'; import { CatalogProcessorResult } from './types'; +import { EntityRelationSpec } from '../../processing/types'; export function notFoundError( atLocation: LocationSpec, diff --git a/plugins/catalog-backend/src/ingestion/processors/types.ts b/plugins/catalog-backend/src/ingestion/processors/types.ts index b011281d55..2587110e04 100644 --- a/plugins/catalog-backend/src/ingestion/processors/types.ts +++ b/plugins/catalog-backend/src/ingestion/processors/types.ts @@ -14,12 +14,9 @@ * limitations under the License. */ -import { - Entity, - EntityRelationSpec, - LocationSpec, -} from '@backstage/catalog-model'; +import { Entity, LocationSpec } from '@backstage/catalog-model'; import { JsonValue } from '@backstage/types'; +import { EntityRelationSpec } from '../../processing/types'; export type CatalogProcessor = { /** diff --git a/plugins/catalog-backend/src/processing/ProcessorOutputCollector.ts b/plugins/catalog-backend/src/processing/ProcessorOutputCollector.ts index 832c5b41bf..351e68882b 100644 --- a/plugins/catalog-backend/src/processing/ProcessorOutputCollector.ts +++ b/plugins/catalog-backend/src/processing/ProcessorOutputCollector.ts @@ -16,7 +16,6 @@ import { Entity, - EntityRelationSpec, ANNOTATION_LOCATION, ANNOTATION_ORIGIN_LOCATION, stringifyLocationRef, @@ -25,7 +24,7 @@ import { assertError } from '@backstage/errors'; import { Logger } from 'winston'; import { CatalogProcessorResult } from '../ingestion'; import { locationSpecToLocationEntity } from '../util/conversion'; -import { DeferredEntity } from './types'; +import { DeferredEntity, EntityRelationSpec } from './types'; import { getEntityLocationRef, getEntityOriginLocationRef, diff --git a/plugins/catalog-backend/src/processing/index.ts b/plugins/catalog-backend/src/processing/index.ts index dc8b07eceb..83f8a9f566 100644 --- a/plugins/catalog-backend/src/processing/index.ts +++ b/plugins/catalog-backend/src/processing/index.ts @@ -19,6 +19,7 @@ export type { CatalogProcessingEngine, EntityProcessingRequest, EntityProcessingResult, + EntityRelationSpec, DeferredEntity, } from './types'; export { DefaultCatalogProcessingOrchestrator } from './DefaultCatalogProcessingOrchestrator'; diff --git a/plugins/catalog-backend/src/processing/types.ts b/plugins/catalog-backend/src/processing/types.ts index 7fb1157d3b..33d8ed8771 100644 --- a/plugins/catalog-backend/src/processing/types.ts +++ b/plugins/catalog-backend/src/processing/types.ts @@ -14,9 +14,31 @@ * limitations under the License. */ -import { Entity, EntityRelationSpec } from '@backstage/catalog-model'; +import { Entity, EntityName } from '@backstage/catalog-model'; import { JsonObject } from '@backstage/types'; +/** + * Holds the relation data for entities. + * + * @public + */ +export type EntityRelationSpec = { + /** + * The source entity of this relation. + */ + source: EntityName; + + /** + * The type of the relation. + */ + type: string; + + /** + * The target entity of this relation. + */ + target: EntityName; +}; + export type EntityProcessingRequest = { entity: Entity; state?: JsonObject; // Versions for multiple deployments etc From 3c1c6f55b93401e473f63091646ab8bb79b72a1d Mon Sep 17 00:00:00 2001 From: Ben Lambert Date: Fri, 18 Feb 2022 14:25:47 +0100 Subject: [PATCH 257/383] chore: code review comments MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Ben Lambert Co-authored-by: Fredrik Adelöw --- plugins/scaffolder-backend/src/scaffolder/tasks/types.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/types.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/types.ts index 6209c34796..c75b85f7b5 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/types.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/types.ts @@ -110,7 +110,7 @@ export type TaskSecrets = Record & { }; /** - * The result of the TaskBroker Dispatch + * The result of {@link TaskBroker.dispatch} * * @public */ @@ -119,7 +119,7 @@ export type TaskBrokerDispatchResult = { }; /** - * The options passed to TaskBroker Dispatch + * The options passed to {@link TaskBroker.dispatch} * Currently a spec and optional secrets * * @public @@ -196,7 +196,7 @@ export type TaskStoreListEventsOptions = { }; /** - * The options passed to TaskStore create + * The options passed to {@link TaskStore.createTask} * @public */ export type TaskStoreCreateTaskOptions = { @@ -205,7 +205,7 @@ export type TaskStoreCreateTaskOptions = { }; /** - * The response from TaskStoreCreate + * The response from {@link TaskStore.createTask} * @public */ export type TaskStoreCreateTaskResult = { From 7d2146c93ba86ea9f24c2f1ef6416c09ba46858e Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 18 Feb 2022 14:26:33 +0100 Subject: [PATCH 258/383] chore: fix warnings in api-report and rebuild it Signed-off-by: blam --- plugins/kubernetes-backend/api-report.md | 21 +++++++++++-------- .../src/service/KubernetesBuilder.ts | 5 +++++ 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/plugins/kubernetes-backend/api-report.md b/plugins/kubernetes-backend/api-report.md index 9b181c8514..ea273d7632 100644 --- a/plugins/kubernetes-backend/api-report.md +++ b/plugins/kubernetes-backend/api-report.md @@ -83,15 +83,7 @@ export interface GKEClusterDetails extends ClusterDetails {} export class KubernetesBuilder { constructor(env: KubernetesEnvironment); // (undocumented) - build(): Promise<{ - clusterDetails: ClusterDetails[]; - clusterSupplier: KubernetesClustersSupplier; - customResources: CustomResource[]; - fetcher: KubernetesFetcher; - objectsProvider: KubernetesObjectsProvider; - router: express.Router; - serviceLocator: KubernetesServiceLocator; - }>; + build(): KubernetesBuilderReturn; // (undocumented) protected buildClusterSupplier(): KubernetesClustersSupplier; // (undocumented) @@ -142,6 +134,17 @@ export class KubernetesBuilder { setServiceLocator(serviceLocator?: KubernetesServiceLocator): this; } +// @public +export type KubernetesBuilderReturn = Promise<{ + router: express.Router; + clusterDetails: ClusterDetails[]; + clusterSupplier: KubernetesClustersSupplier; + customResources: CustomResource[]; + fetcher: KubernetesFetcher; + objectsProvider: KubernetesObjectsProvider; + serviceLocator: KubernetesServiceLocator; +}>; + // Warning: (ae-missing-release-tag) "KubernetesClustersSupplier" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) diff --git a/plugins/kubernetes-backend/src/service/KubernetesBuilder.ts b/plugins/kubernetes-backend/src/service/KubernetesBuilder.ts index d8c93cccdf..a1eb60a239 100644 --- a/plugins/kubernetes-backend/src/service/KubernetesBuilder.ts +++ b/plugins/kubernetes-backend/src/service/KubernetesBuilder.ts @@ -43,6 +43,11 @@ export interface KubernetesEnvironment { config: Config; } +/** + * The return type of the `KubernetesBuilder.build` method + * + * @public + */ export type KubernetesBuilderReturn = Promise<{ router: express.Router; clusterDetails: ClusterDetails[]; From 77a13948c15ec3b67b72596fb90a0605a15369a7 Mon Sep 17 00:00:00 2001 From: Emma Indal Date: Fri, 18 Feb 2022 14:40:32 +0100 Subject: [PATCH 259/383] add example docs Signed-off-by: Emma Indal --- .../techdocs-cli/src/example-docs/.gitignore | 1 + .../src/example-docs/docs/index.md | 93 +++++++++++++++++++ .../techdocs-cli/src/example-docs/mkdocs.yml | 10 ++ .../plugins/plugin-a/docs/index.md | 4 + .../example-docs/plugins/plugin-a/mkdocs.yml | 5 + .../plugins/plugin-b/docs/index.md | 4 + .../example-docs/plugins/plugin-b/mkdocs.yml | 5 + .../src/example-docs/sub-docs/docs/index.md | 1 + .../src/example-docs/sub-docs/mkdocs.yml | 4 + 9 files changed, 127 insertions(+) create mode 100644 packages/techdocs-cli/src/example-docs/.gitignore create mode 100644 packages/techdocs-cli/src/example-docs/docs/index.md create mode 100644 packages/techdocs-cli/src/example-docs/mkdocs.yml create mode 100644 packages/techdocs-cli/src/example-docs/plugins/plugin-a/docs/index.md create mode 100644 packages/techdocs-cli/src/example-docs/plugins/plugin-a/mkdocs.yml create mode 100644 packages/techdocs-cli/src/example-docs/plugins/plugin-b/docs/index.md create mode 100644 packages/techdocs-cli/src/example-docs/plugins/plugin-b/mkdocs.yml create mode 100644 packages/techdocs-cli/src/example-docs/sub-docs/docs/index.md create mode 100644 packages/techdocs-cli/src/example-docs/sub-docs/mkdocs.yml diff --git a/packages/techdocs-cli/src/example-docs/.gitignore b/packages/techdocs-cli/src/example-docs/.gitignore new file mode 100644 index 0000000000..45ddf0ae39 --- /dev/null +++ b/packages/techdocs-cli/src/example-docs/.gitignore @@ -0,0 +1 @@ +site/ diff --git a/packages/techdocs-cli/src/example-docs/docs/index.md b/packages/techdocs-cli/src/example-docs/docs/index.md new file mode 100644 index 0000000000..20fed8bc63 --- /dev/null +++ b/packages/techdocs-cli/src/example-docs/docs/index.md @@ -0,0 +1,93 @@ +## hello mock docs + +!!! test +Testing something + +Abbreviations: +Some text about MOCDOC + +This is a paragraph. +{: #test_id .test_class } + +Apple +: Pomaceous fruit of plants of the genus Malus in +the family Rosaceae. + +```javascript +import { test } from 'something'; + +const addThingToThing = (a, b) a + b; +``` + +- [abc](#abc) +- [xyz](#xyz) + +## abc + +This is a b c. + +## xyz + +This is x y z. + +# Emojis + +:bulb: :smile: + +# Code blocks + +```javascript +import { test } from 'something'; + +const addThingToThing = (a, b) a + b; +``` + +# Grouped Code blocks + +=== "JavaScript" + + ```javascript + import { test } from 'something'; + + const addThingToThing = (a, b) a + b; + ``` + +=== "Java" + + ```java + public void function() { + test(); + } + ``` + +```java tab="java" + public void function() { + test(); + } +``` + +```java tab="java 2" + public void function() { + test(); + } +``` + +# MDX truly sane lists + +- attributes + +- customer + - first_name + - test + - family_name + - email +- person + - first_name + - family_name + - birth_date +- subscription_id + +- request + + +*[MOCDOC]: Mock Documentation diff --git a/packages/techdocs-cli/src/example-docs/mkdocs.yml b/packages/techdocs-cli/src/example-docs/mkdocs.yml new file mode 100644 index 0000000000..9c9406f6e6 --- /dev/null +++ b/packages/techdocs-cli/src/example-docs/mkdocs.yml @@ -0,0 +1,10 @@ +site_name: docs-test-fixture +site_description: Documentation site test fixture + +nav: + - Home: index.md + - SubDocs: '!include ./sub-docs/mkdocs.yml' + - Plugins: '*include ./plugins/*/mkdocs.yml' + +plugins: + - techdocs-core diff --git a/packages/techdocs-cli/src/example-docs/plugins/plugin-a/docs/index.md b/packages/techdocs-cli/src/example-docs/plugins/plugin-a/docs/index.md new file mode 100644 index 0000000000..bd8bc3a4ea --- /dev/null +++ b/packages/techdocs-cli/src/example-docs/plugins/plugin-a/docs/index.md @@ -0,0 +1,4 @@ +# Plugin A + +This is a description of Plugin A. This file exists to prove that glob'd +includes using the `*include` syntax work as expected. diff --git a/packages/techdocs-cli/src/example-docs/plugins/plugin-a/mkdocs.yml b/packages/techdocs-cli/src/example-docs/plugins/plugin-a/mkdocs.yml new file mode 100644 index 0000000000..66407d5391 --- /dev/null +++ b/packages/techdocs-cli/src/example-docs/plugins/plugin-a/mkdocs.yml @@ -0,0 +1,5 @@ +site_name: Plugin A +site_description: A description of Plugin A + +nav: + - Introduction: index.md diff --git a/packages/techdocs-cli/src/example-docs/plugins/plugin-b/docs/index.md b/packages/techdocs-cli/src/example-docs/plugins/plugin-b/docs/index.md new file mode 100644 index 0000000000..93e545252f --- /dev/null +++ b/packages/techdocs-cli/src/example-docs/plugins/plugin-b/docs/index.md @@ -0,0 +1,4 @@ +# Plugin B + +This is a description of Plugin B. This file exists to prove that glob'd +includes using the `*include` syntax work as expected. diff --git a/packages/techdocs-cli/src/example-docs/plugins/plugin-b/mkdocs.yml b/packages/techdocs-cli/src/example-docs/plugins/plugin-b/mkdocs.yml new file mode 100644 index 0000000000..81580c33af --- /dev/null +++ b/packages/techdocs-cli/src/example-docs/plugins/plugin-b/mkdocs.yml @@ -0,0 +1,5 @@ +site_name: Plugin B +site_description: A description of Plugin B + +nav: + - Introduction: index.md diff --git a/packages/techdocs-cli/src/example-docs/sub-docs/docs/index.md b/packages/techdocs-cli/src/example-docs/sub-docs/docs/index.md new file mode 100644 index 0000000000..65c6644ef8 --- /dev/null +++ b/packages/techdocs-cli/src/example-docs/sub-docs/docs/index.md @@ -0,0 +1 @@ +### This is an md file in another docs folder using the [MkDocs Monorepo Plugin](https://github.com/spotify/mkdocs-monorepo-plugin) diff --git a/packages/techdocs-cli/src/example-docs/sub-docs/mkdocs.yml b/packages/techdocs-cli/src/example-docs/sub-docs/mkdocs.yml new file mode 100644 index 0000000000..4490ddbefa --- /dev/null +++ b/packages/techdocs-cli/src/example-docs/sub-docs/mkdocs.yml @@ -0,0 +1,4 @@ +site_name: subdocs + +nav: + - Home 2: 'index.md' From 2d339b5f2c72e509fe354883e2a3337ef68f0963 Mon Sep 17 00:00:00 2001 From: Johan Haals Date: Fri, 18 Feb 2022 14:45:28 +0100 Subject: [PATCH 260/383] catalog: Deprecate `useEntityFromUrl` and `useEntityCompoundName` Signed-off-by: Johan Haals --- .changeset/afraid-ravens-beam.md | 5 ++ .changeset/tame-pants-count.md | 5 ++ plugins/catalog-react/api-report.md | 4 +- plugins/catalog-react/src/hooks/useEntity.tsx | 4 +- .../src/hooks/useEntityCompoundName.ts | 1 + .../CatalogEntityPage/CatalogEntityPage.tsx | 6 +- .../CatalogEntityPage/UseEntityFromUrl.ts | 55 +++++++++++++++++++ 7 files changed, 73 insertions(+), 7 deletions(-) create mode 100644 .changeset/afraid-ravens-beam.md create mode 100644 .changeset/tame-pants-count.md create mode 100644 plugins/catalog/src/components/CatalogEntityPage/UseEntityFromUrl.ts diff --git a/.changeset/afraid-ravens-beam.md b/.changeset/afraid-ravens-beam.md new file mode 100644 index 0000000000..b2596823d5 --- /dev/null +++ b/.changeset/afraid-ravens-beam.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog': patch +--- + +Internalize deprecated `useEntityFromUrl` hook diff --git a/.changeset/tame-pants-count.md b/.changeset/tame-pants-count.md new file mode 100644 index 0000000000..e2a35c929b --- /dev/null +++ b/.changeset/tame-pants-count.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-react': patch +--- + +Deprecated `useEntityFromUrl` and the `useEntityCompoundName` hooks as these have very low utility value. diff --git a/plugins/catalog-react/api-report.md b/plugins/catalog-react/api-report.md index 104472cbfe..efe0cbcd02 100644 --- a/plugins/catalog-react/api-report.md +++ b/plugins/catalog-react/api-report.md @@ -541,14 +541,14 @@ export function useEntity(): { refresh: VoidFunction | undefined; }; -// @public +// @public @deprecated export const useEntityCompoundName: () => { kind: string; namespace: string; name: string; }; -// @public (undocumented) +// @public @deprecated (undocumented) export const useEntityFromUrl: () => EntityLoadingStatus; // @public diff --git a/plugins/catalog-react/src/hooks/useEntity.tsx b/plugins/catalog-react/src/hooks/useEntity.tsx index 8637b820d4..908bfceb0b 100644 --- a/plugins/catalog-react/src/hooks/useEntity.tsx +++ b/plugins/catalog-react/src/hooks/useEntity.tsx @@ -134,7 +134,9 @@ const CompatibilityProvider = ({ }; EntityContext.Provider = CompatibilityProvider as Provider; -/** @public */ +/** @public + * @deprecated will be deleted shortly due to low external usage, re-implement if needed. + */ export const useEntityFromUrl = (): EntityLoadingStatus => { const { kind, namespace, name } = useEntityCompoundName(); const navigate = useNavigate(); diff --git a/plugins/catalog-react/src/hooks/useEntityCompoundName.ts b/plugins/catalog-react/src/hooks/useEntityCompoundName.ts index 75affc98b2..481c18f8a0 100644 --- a/plugins/catalog-react/src/hooks/useEntityCompoundName.ts +++ b/plugins/catalog-react/src/hooks/useEntityCompoundName.ts @@ -19,6 +19,7 @@ import { useRouteRefParams } from '@backstage/core-plugin-api'; /** * Grabs entity kind, namespace, and name from the location * @public + * @deprecated use {@link @backstage/core-plugin-api#useRouteRefParams} instead */ export const useEntityCompoundName = () => { const { kind, namespace, name } = useRouteRefParams(entityRouteRef); diff --git a/plugins/catalog/src/components/CatalogEntityPage/CatalogEntityPage.tsx b/plugins/catalog/src/components/CatalogEntityPage/CatalogEntityPage.tsx index da578a8892..a7dedaf1d6 100644 --- a/plugins/catalog/src/components/CatalogEntityPage/CatalogEntityPage.tsx +++ b/plugins/catalog/src/components/CatalogEntityPage/CatalogEntityPage.tsx @@ -16,10 +16,8 @@ import React from 'react'; import { Outlet } from 'react-router'; -import { - useEntityFromUrl, - AsyncEntityProvider, -} from '@backstage/plugin-catalog-react'; +import { AsyncEntityProvider } from '@backstage/plugin-catalog-react'; +import { useEntityFromUrl } from './UseEntityFromUrl'; /** @public */ export function CatalogEntityPage() { diff --git a/plugins/catalog/src/components/CatalogEntityPage/UseEntityFromUrl.ts b/plugins/catalog/src/components/CatalogEntityPage/UseEntityFromUrl.ts new file mode 100644 index 0000000000..605305882e --- /dev/null +++ b/plugins/catalog/src/components/CatalogEntityPage/UseEntityFromUrl.ts @@ -0,0 +1,55 @@ +/* + * 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 { + errorApiRef, + useApi, + useRouteRefParams, +} from '@backstage/core-plugin-api'; +import { + catalogApiRef, + EntityLoadingStatus, + entityRouteRef, +} from '@backstage/plugin-catalog-react'; +import { useEffect } from 'react'; +import { useNavigate } from 'react-router'; +import useAsyncRetry from 'react-use/lib/useAsyncRetry'; + +export const useEntityFromUrl = (): EntityLoadingStatus => { + const { kind, namespace, name } = useRouteRefParams(entityRouteRef); + const navigate = useNavigate(); + const errorApi = useApi(errorApiRef); + const catalogApi = useApi(catalogApiRef); + + const { + value: entity, + error, + loading, + retry: refresh, + } = useAsyncRetry( + () => catalogApi.getEntityByName({ kind, namespace, name }), + [catalogApi, kind, namespace, name], + ); + + useEffect(() => { + if (!name) { + errorApi.post(new Error('No name provided!')); + navigate('/'); + } + }, [errorApi, navigate, error, loading, entity, name]); + + return { entity, loading, error, refresh }; +}; From a6352f90eaf5b1a1377d39b0d2ed8097dd98d5e2 Mon Sep 17 00:00:00 2001 From: Emma Indal Date: Fri, 18 Feb 2022 14:46:21 +0100 Subject: [PATCH 261/383] update docs based on new example documentation Signed-off-by: Emma Indal --- packages/techdocs-cli/README.md | 36 ++++++++++--------- packages/techdocs-cli/src/e2e.test.ts | 2 +- .../techdocs-cli/src/fixture/docs/README.md | 1 - packages/techdocs-cli/src/fixture/mkdocs.yml | 8 ----- 4 files changed, 21 insertions(+), 26 deletions(-) delete mode 100644 packages/techdocs-cli/src/fixture/docs/README.md delete mode 100644 packages/techdocs-cli/src/fixture/mkdocs.yml diff --git a/packages/techdocs-cli/README.md b/packages/techdocs-cli/README.md index b3879aae26..4b3c14c5cf 100644 --- a/packages/techdocs-cli/README.md +++ b/packages/techdocs-cli/README.md @@ -42,12 +42,11 @@ yarn techdocs-cli:dev [...options] ### Using an example docs project -For the purpose of local development, we have created an [example documentation project](https://github.com/backstage/techdocs-container/tree/main/mock-docs) which is shipped with the [techdocs-container](https://github.com/backstage/techdocs-container) repository. You are of course also free to create your own local test site - all it takes is a `docs/index.md` and an `mkdocs.yml` in a directory. +For the purpose of local development, we have created an example documentation project. You are of course also free to create your own local test site - all it takes is a `docs/index.md` and an `mkdocs.yml` in a directory. ```sh -git clone https://github.com/backstage/techdocs-container.git -cd techdocs-container/mock-docs +cd packages/techdocs-cli/src/example-docs # To get a view of your docs in Backstage, use: techdocs-cli serve @@ -58,6 +57,8 @@ techdocs-cli serve:mkdocs ### Testing +#### E2E tests + Running unit tests requires mkdocs to be installed locally: ```sh @@ -67,17 +68,11 @@ pip install mkdocs-techdocs-core Then run `yarn test`. -#### Running Cypress tests +#### Cypress (Integration and Visual regression) tests -Running cypress tests requires you to run the CLI locally against our example docs project. +Running cypress tests requires you to run the CLI locally against our example docs. -Start by making sure that you have the example project locally on your computer: - -```sh -git clone https://github.com/backstage/techdocs-container.git -``` - -Run the local version of techdocs-cli against the example docs project: +Run the local version of techdocs-cli against the example docs: ```sh # From the root of this repository run @@ -85,16 +80,25 @@ Run the local version of techdocs-cli against the example docs project: yarn build --scope @techdocs/cli # Navigate to the example project -cd techdocs-container/mock-docs +cd packages/techdocs-cli/src/example-docs # Now execute the techdocs-cli serve command -../../backstage/packages/techdocs-cli/bin/techdocs-cli serve +../../bin/techdocs-cli serve ``` -Run the cypress tests: +In another shell, run the cypress tests: ```sh -yarn cypress:open +# From the root of the project, navigate to the techdocs-cli package +cd packages/techdocs-cli + +# Run tests +yarn test:cypress ``` +This will launch a cypress app where you can run the two different tests: + +- `backstage_serve` - will run against the backstage server +- `mkdocs_serve` - will run test against the mkdocs server + > If its the first time you run Cypress, it will run a "Verifying Cypress can run" step. This step can result in a "Cypress verification timed out" error. If that is the case, let the verification step run and then run the command again and it should succeed. diff --git a/packages/techdocs-cli/src/e2e.test.ts b/packages/techdocs-cli/src/e2e.test.ts index 088dbc44b8..7cdd867d0f 100644 --- a/packages/techdocs-cli/src/e2e.test.ts +++ b/packages/techdocs-cli/src/e2e.test.ts @@ -58,7 +58,7 @@ const timeout = 25000; jest.setTimeout(timeout * 2); describe('end-to-end', () => { - const cwd = path.resolve(__dirname, 'fixture'); + const cwd = path.resolve(__dirname, 'example-docs'); afterEach(async () => { // On Windows the pid of a spawned process may be wrong diff --git a/packages/techdocs-cli/src/fixture/docs/README.md b/packages/techdocs-cli/src/fixture/docs/README.md deleted file mode 100644 index c32f73f6f4..0000000000 --- a/packages/techdocs-cli/src/fixture/docs/README.md +++ /dev/null @@ -1 +0,0 @@ -# Test Fixture diff --git a/packages/techdocs-cli/src/fixture/mkdocs.yml b/packages/techdocs-cli/src/fixture/mkdocs.yml deleted file mode 100644 index 5d5c2a02ae..0000000000 --- a/packages/techdocs-cli/src/fixture/mkdocs.yml +++ /dev/null @@ -1,8 +0,0 @@ -site_name: docs-test-fixture -site_description: Documentation site test fixture - -nav: - - HOME: README.md - -plugins: - - techdocs-core From df3c646c3abda1bc4e8aa9419e5b2db9b473c308 Mon Sep 17 00:00:00 2001 From: Emma Indal Date: Fri, 18 Feb 2022 14:47:20 +0100 Subject: [PATCH 262/383] clarify output from script + adjust cypress test command Signed-off-by: Emma Indal --- packages/techdocs-cli/package.json | 2 +- packages/techdocs-cli/scripts/prepack.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/techdocs-cli/package.json b/packages/techdocs-cli/package.json index 3d50b1c868..a9491a8847 100644 --- a/packages/techdocs-cli/package.json +++ b/packages/techdocs-cli/package.json @@ -30,7 +30,7 @@ "test": "backstage-cli package test --testPathIgnorePatterns=src/e2e.test.ts", "test:e2e": "backstage-cli test src/e2e.test.ts", "test:e2e:ci": "backstage-cli test --watchAll=false --ci src/e2e.test.ts", - "cypress:open": "cypress open", + "test:cypress": "cypress open", "prepack": "./scripts/prepack.sh" }, "bin": { diff --git a/packages/techdocs-cli/scripts/prepack.sh b/packages/techdocs-cli/scripts/prepack.sh index 6b769de37c..bfd62cfd1b 100755 --- a/packages/techdocs-cli/scripts/prepack.sh +++ b/packages/techdocs-cli/scripts/prepack.sh @@ -23,4 +23,4 @@ TECHDOCS_CLI_EMBEDDED_APP_DIR="$TECHDOCS_CLI_DIR"/../techdocs-cli-embedded-app echo "🚚 Copying embedded app into dist/embedded-app" rm -rf "$TECHDOCS_CLI_DIR"/dist/embedded-app cp -r "$TECHDOCS_CLI_EMBEDDED_APP_DIR"/dist "$TECHDOCS_CLI_DIR"/dist/embedded-app -echo "🏁 Ready!" +echo "🏁 Finished copying embedded app into dist/embedded-app!" From 820a74606117a7c76caa7efbbf0afebdc874bb93 Mon Sep 17 00:00:00 2001 From: Emma Indal Date: Fri, 18 Feb 2022 14:47:47 +0100 Subject: [PATCH 263/383] update snapshot Signed-off-by: Emma Indal --- ... toMatchImageSnapshot - MkDocs Page #0.png | Bin 218234 -> 170963 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/packages/techdocs-cli/cypress/integration/__image_snapshots__/TechDocs Live Preview - MkDocs Serve toMatchImageSnapshot - MkDocs Page #0.png b/packages/techdocs-cli/cypress/integration/__image_snapshots__/TechDocs Live Preview - MkDocs Serve toMatchImageSnapshot - MkDocs Page #0.png index 193fb59c1d46a3214c1621e6ff60eb4269a9d5ec..e6c63d5d579491378c3f5f73f1500ddb482d5db2 100644 GIT binary patch literal 170963 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 z%0A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
a^U5l0f~ll@pf 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

`H^GCgsGJI6Xt8Gic~ia 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 z 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 From 2c2c52426eda4e863140ff4cf6dbacaaf8842baf Mon Sep 17 00:00:00 2001 From: Emma Indal Date: Fri, 18 Feb 2022 15:20:24 +0100 Subject: [PATCH 264/383] make Vale linter happy Signed-off-by: Emma Indal --- packages/techdocs-cli/src/example-docs/docs/index.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/techdocs-cli/src/example-docs/docs/index.md b/packages/techdocs-cli/src/example-docs/docs/index.md index 20fed8bc63..074d3ccb3e 100644 --- a/packages/techdocs-cli/src/example-docs/docs/index.md +++ b/packages/techdocs-cli/src/example-docs/docs/index.md @@ -10,8 +10,7 @@ This is a paragraph. {: #test_id .test_class } Apple -: Pomaceous fruit of plants of the genus Malus in -the family Rosaceae. +: A fruit. ```javascript import { test } from 'something'; From 253bd2081c9e84cc02cbc0f93d1f023e9b2b573d Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 18 Feb 2022 16:09:20 +0100 Subject: [PATCH 265/383] chore: deprecating the fetch:cookiecutter being installed by default Signed-off-by: blam --- plugins/scaffolder-backend/api-report.md | 29 ++++++++++++------- .../actions/builtin/createBuiltinActions.ts | 26 +++++++++++++++-- .../src/scaffolder/actions/builtin/index.ts | 4 ++- 3 files changed, 46 insertions(+), 13 deletions(-) diff --git a/plugins/scaffolder-backend/api-report.md b/plugins/scaffolder-backend/api-report.md index c0ff3b3f2b..1bc39ea909 100644 --- a/plugins/scaffolder-backend/api-report.md +++ b/plugins/scaffolder-backend/api-report.md @@ -53,17 +53,26 @@ export type ActionContext = { // @public @deprecated export type CompletedTaskState = TaskCompletionState; -// Warning: (ae-missing-release-tag) "createBuiltinActions" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export const createBuiltinActions: (options: { - reader: UrlReader; - integrations: ScmIntegrations; - catalogClient: CatalogApi; - containerRunner?: ContainerRunner; - config: Config; +// @public +export const createBuiltinActions: ( + options: CreateBuiltInActionsOptions, +) => TemplateAction[]; + +// @public +export interface CreateBuiltInActionsOptions { + // (undocumented) additionalTemplateFilters?: Record; -}) => TemplateAction[]; + // (undocumented) + catalogClient: CatalogApi; + // (undocumented) + config: Config; + // @deprecated (undocumented) + containerRunner?: ContainerRunner; + // (undocumented) + integrations: ScmIntegrations; + // (undocumented) + reader: UrlReader; +} // Warning: (ae-missing-release-tag) "createCatalogRegisterAction" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/createBuiltinActions.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/createBuiltinActions.ts index 9df2b7146e..c03ba150c2 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/createBuiltinActions.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/createBuiltinActions.ts @@ -49,15 +49,32 @@ import { } from './github'; import { TemplateFilter } from '../../../lib'; import { TemplateAction } from '../types'; +import { getRootLogger } from '@backstage/backend-common'; -export const createBuiltinActions = (options: { +/** + * The options passed to {@link createBuiltinActions} + * @public + */ +export interface CreateBuiltInActionsOptions { reader: UrlReader; integrations: ScmIntegrations; catalogClient: CatalogApi; + /** @deprecated when the cookiecutter action is removed this won't be necessary */ containerRunner?: ContainerRunner; config: Config; additionalTemplateFilters?: Record; -}): TemplateAction[] => { +} + +/** + * A function to generate create a list of default actions that the scaffolder provides. + * Is called internally in the default setup, but can be used when adding your own actions or overriding the default ones + * + * @public + * @returns A list of actions that can be used in the scaffolder + */ +export const createBuiltinActions = ( + options: CreateBuiltInActionsOptions, +): TemplateAction[] => { const { reader, integrations, @@ -119,6 +136,11 @@ export const createBuiltinActions = (options: { ]; if (containerRunner) { + getRootLogger().warn( + `[DEPRECATED] The fetch:cookiecutter action will be removed part of the default scaffolder actions in later versions. +You can install the package seperately and remove the containerRunner from the createBuiltInActions to remove this warning, +or you can migrate to using fetch:template https://backstage.io/docs/features/software-templates/builtin-actions#migrating-from-fetchcookiecutter-to-fetchtemplate`, + ); actions.push( createFetchCookiecutterAction({ reader, diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/index.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/index.ts index 2265f9b4f7..5f4c04cc7d 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/index.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/index.ts @@ -15,12 +15,14 @@ */ export * from './catalog'; -export { createBuiltinActions } from './createBuiltinActions'; +export * from './createBuiltinActions'; export * from './debug'; export * from './fetch'; export * from './filesystem'; export * from './publish'; export * from './github'; +/** @deprecated please add this package to your own installation manually */ export { createFetchCookiecutterAction } from '@backstage/plugin-scaffolder-backend-module-cookiecutter'; + export { runCommand } from './helpers'; From e21755c639cdebf22f2680f180a6c2a7a0590fb1 Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 18 Feb 2022 16:17:23 +0100 Subject: [PATCH 266/383] chore: tidying up the fetchContents types Signed-off-by: blam --- .../src/scaffolder/actions/builtin/fetch/helpers.test.ts | 9 --------- .../src/scaffolder/actions/builtin/fetch/helpers.ts | 9 +-------- 2 files changed, 1 insertion(+), 17 deletions(-) diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/helpers.test.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/helpers.test.ts index a738afbe3f..d274ad3ba8 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/helpers.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/helpers.test.ts @@ -50,15 +50,6 @@ describe('fetchContent helper', () => { outputPath: os.tmpdir(), }; - it('should reject non string fetchUrls', async () => { - await expect( - fetchContents({ - ...options, - fetchUrl: false, - }), - ).rejects.toThrow('Invalid url parameter, expected string, got boolean'); - }); - it('should reject absolute file locations', async () => { await expect( fetchContents({ 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 b56bab0d53..89d9b0171a 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/helpers.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/helpers.ts @@ -15,7 +15,6 @@ */ import { resolveSafeChildPath, UrlReader } from '@backstage/backend-common'; -import { JsonValue } from '@backstage/types'; import { InputError } from '@backstage/errors'; import { ScmIntegrations } from '@backstage/integration'; import fs from 'fs-extra'; @@ -31,15 +30,9 @@ export async function fetchContents({ reader: UrlReader; integrations: ScmIntegrations; baseUrl?: string; - fetchUrl?: JsonValue; + fetchUrl?: string; outputPath: string; }) { - if (typeof fetchUrl !== 'string') { - throw new InputError( - `Invalid url parameter, expected string, got ${typeof fetchUrl}`, - ); - } - let fetchUrlIsAbsolute = false; try { // eslint-disable-next-line no-new From 2f2543592c33ad9a65ca4b250e38ff4bc19e36ac Mon Sep 17 00:00:00 2001 From: djamaile Date: Fri, 18 Feb 2022 16:21:37 +0100 Subject: [PATCH 267/383] feat(scaffolder): remove sections or fields based on a feature flag Signed-off-by: djamaile --- .changeset/strong-lions-compete.md | 40 +++++++++ .../MultistepJsonForm/MultistepJsonForm.tsx | 50 ++++++++++- .../TemplatePage/TemplatePage.test.tsx | 84 +++++++++++++++++++ 3 files changed, 171 insertions(+), 3 deletions(-) create mode 100644 .changeset/strong-lions-compete.md diff --git a/.changeset/strong-lions-compete.md b/.changeset/strong-lions-compete.md new file mode 100644 index 0000000000..635991eb1d --- /dev/null +++ b/.changeset/strong-lions-compete.md @@ -0,0 +1,40 @@ +--- +'@backstage/plugin-scaffolder': patch +--- + +You can now hide sections or fields in your templates based on a feature flag. For example, take this template: + +```json +{ + title: 'my-schema', + steps: [ + { + title: 'Fill in some steps', + schema: { + title: 'Fill in some steps', + 'backstage:featureFlag': 'experimental-feature', + properties: { + name: { + title: 'Name', + type: 'string', + 'backstage:featureFlag': 'should-show-some-stuff-first-option', + }, + description: { + title: 'Description', + type: 'string', + description: 'A description for the component', + }, + owner: { + title: 'Owner', + type: 'string', + description: 'Owner of the component', + }, + }, + type: 'object', + }, + }, +} + +``` + +If you have a feature flag that is called `experimental-feature` then your first step would be shown if you that feature flag was not active then it wouldn't be shown. The same goes for the properties in the schema. Make sure to use the key `backstage:featureFlag` in your templates if you want to use this functionality. diff --git a/plugins/scaffolder/src/components/MultistepJsonForm/MultistepJsonForm.tsx b/plugins/scaffolder/src/components/MultistepJsonForm/MultistepJsonForm.tsx index a9c8eaec1d..14e7c642f2 100644 --- a/plugins/scaffolder/src/components/MultistepJsonForm/MultistepJsonForm.tsx +++ b/plugins/scaffolder/src/components/MultistepJsonForm/MultistepJsonForm.tsx @@ -24,7 +24,11 @@ import { Stepper, Typography, } from '@material-ui/core'; -import { errorApiRef, useApi } from '@backstage/core-plugin-api'; +import { + errorApiRef, + useApi, + featureFlagsApiRef, +} from '@backstage/core-plugin-api'; import { FormProps, IChangeEvent, UiSchema, withTheme } from '@rjsf/core'; import { Theme as MuiTheme } from '@rjsf/material-ui'; import React, { useState } from 'react'; @@ -116,13 +120,53 @@ export const MultistepJsonForm = ({ const [activeStep, setActiveStep] = useState(0); const [disableButtons, setDisableButtons] = useState(false); const errorApi = useApi(errorApiRef); + const featureFlagApi = useApi(featureFlagsApiRef); + const featureFlagKey = 'backstage:featureFlag'; + const filterOutProperties = (schema: JsonObject): JsonObject => { + const removedPropertiesKeys: Array = []; + if (schema.properties) { + schema.properties = Object.fromEntries( + Object.entries(schema.properties).filter(([key, value]) => { + if (value[featureFlagKey]) { + if (featureFlagApi.isActive(value[featureFlagKey])) { + return true; + } + removedPropertiesKeys.push(key); + return false; + } + return true; + }), + ); + + // remove the feature flag property keys from required if they are not active + if (Array.isArray(schema.required) && removedPropertiesKeys.length > 0) { + for (const property of removedPropertiesKeys) { + const index = schema.required.findIndex(r => r === property); + if (index > -1) { + schema.required.splice(index, 1); + } + } + } + } + return schema; + }; + + const updatedSteps = steps.filter(s => { + const featureFlag = s.schema[featureFlagKey] as string; + if (featureFlag && !featureFlagApi.isActive(featureFlag)) { + return null; + } + // filter out properties accordingly to the feature flag settings; + s.schema = filterOutProperties(s.schema); + return s; + }); const handleReset = () => { setActiveStep(0); onReset(); }; const handleNext = () => { - setActiveStep(Math.min(activeStep + 1, steps.length)); + setActiveStep(Math.min(activeStep + 1, updatedSteps.length)); }; const handleBack = () => setActiveStep(Math.max(activeStep - 1, 0)); const handleCreate = async () => { @@ -138,7 +182,7 @@ export const MultistepJsonForm = ({ return ( <> - {steps.map(({ title, schema, ...formProps }, index) => { + {updatedSteps.map(({ title, schema, ...formProps }, index) => { return ( = { listActions: jest.fn(), }; +const featureFlagsApiMock: jest.Mocked = { + isActive: jest.fn(), + registerFlag: jest.fn(), + getRegisteredFlags: jest.fn(), + save: jest.fn(), +}; + const errorApiMock = { post: jest.fn(), error$: jest.fn() }; +const schemaMockValue = { + title: 'my-schema', + steps: [ + { + title: 'Fill in some steps', + schema: { + title: 'Fill in some steps', + 'backstage:featureFlag': 'experimental-feature', + properties: { + name: { + title: 'Name', + type: 'string', + 'backstage:featureFlag': 'should-show-some-stuff-first-option', + }, + description: { + title: 'Description', + type: 'string', + description: 'A description for the component', + }, + owner: { + title: 'Owner', + type: 'string', + description: 'Owner of the component', + }, + }, + type: 'object', + }, + }, + { + title: 'Send data', + schema: { + title: 'Send data', + properties: { + user: { + title: 'User', + type: 'string', + }, + }, + type: 'object', + }, + }, + ], +}; + const apis = TestApiRegistry.from( [scaffolderApiRef, scaffolderApiMock], [errorApiRef, errorApiMock], + [featureFlagsApiRef, featureFlagsApiMock], ); describe('TemplatePage', () => { @@ -197,4 +253,32 @@ describe('TemplatePage', () => { fireEvent.click(await findByText('Next step')); expect(await findByText('Reset')).toBeInTheDocument(); }); + + it('should display a section or property based on a feature flag', async () => { + featureFlagsApiMock.isActive.mockImplementation(flag => { + if (flag === 'experimental-feature') { + return true; + } + return false; + }); + scaffolderApiMock.getTemplateParameterSchema.mockResolvedValue( + schemaMockValue, + ); + + const { queryByText } = await renderInTestApp( + + + , + { + mountedRoutes: { + '/create/actions': rootRouteRef, + }, + }, + ); + + expect(await queryByText('Name')).not.toBeInTheDocument(); + expect(await queryByText('Description')).toBeInTheDocument(); + expect(await queryByText('Owner')).toBeInTheDocument(); + expect(await queryByText('Send data')).toBeInTheDocument(); + }); }); From 756f6cc5ef23e8ff343b7f69f199a7c3efc1997b Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 18 Feb 2022 16:22:18 +0100 Subject: [PATCH 268/383] chore: added some more deprecations and fixing some more of the api-report Signed-off-by: blam --- plugins/scaffolder-backend/api-report.md | 8 +++----- .../src/scaffolder/actions/builtin/fetch/helpers.ts | 6 ++++++ .../src/scaffolder/tasks/StorageTaskBroker.ts | 4 ++-- plugins/scaffolder-backend/src/scaffolder/tasks/types.ts | 2 +- 4 files changed, 12 insertions(+), 8 deletions(-) diff --git a/plugins/scaffolder-backend/api-report.md b/plugins/scaffolder-backend/api-report.md index 1bc39ea909..aea6689183 100644 --- a/plugins/scaffolder-backend/api-report.md +++ b/plugins/scaffolder-backend/api-report.md @@ -365,9 +365,7 @@ export class DatabaseTaskStore implements TaskStore { // @public @deprecated export type DispatchResult = TaskBrokerDispatchResult; -// Warning: (ae-missing-release-tag) "fetchContents" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) +// @public export function fetchContents({ reader, integrations, @@ -378,7 +376,7 @@ export function fetchContents({ reader: UrlReader; integrations: ScmIntegrations; baseUrl?: string; - fetchUrl?: JsonValue; + fetchUrl?: string; outputPath: string; }): Promise; @@ -496,7 +494,7 @@ export interface TaskBroker { unsubscribe: () => void; }; // (undocumented) - vacuumTasks(timeoutS: { timeoutS: number }): Promise; + vacuumTasks(options: { timeoutS: number }): Promise; } // @public 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 89d9b0171a..a01fcee6f7 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/helpers.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/helpers.ts @@ -20,6 +20,12 @@ import { ScmIntegrations } from '@backstage/integration'; import fs from 'fs-extra'; import path from 'path'; +/** + * A helper function that reads the contents of a directory from the given URL. + * Can be used in your own actions, and also used behind fetch:template and fetch:plain + * + * @public + */ export async function fetchContents({ reader, integrations, diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.ts index 49c1056727..e7fd76ea9a 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.ts @@ -207,8 +207,8 @@ export class StorageTaskBroker implements TaskBroker { return { unsubscribe }; } - async vacuumTasks(timeoutS: { timeoutS: number }): Promise { - const { tasks } = await this.storage.listStaleTasks(timeoutS); + async vacuumTasks(options: { timeoutS: number }): Promise { + const { tasks } = await this.storage.listStaleTasks(options); await Promise.all( tasks.map(async task => { try { diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/types.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/types.ts index c75b85f7b5..6cc3eabdc7 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/types.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/types.ts @@ -161,7 +161,7 @@ export interface TaskBroker { dispatch( options: TaskBrokerDispatchOptions, ): Promise; - vacuumTasks(timeoutS: { timeoutS: number }): Promise; + vacuumTasks(options: { timeoutS: number }): Promise; observe( options: { taskId: string; From 6981ac4ad2d8ae212ef41b9215c84e2885528915 Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 18 Feb 2022 16:28:02 +0100 Subject: [PATCH 269/383] feat: added a changeset around the fetch:cookiecutter template Signed-off-by: blam --- .changeset/many-spoons-join.md | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 .changeset/many-spoons-join.md diff --git a/.changeset/many-spoons-join.md b/.changeset/many-spoons-join.md new file mode 100644 index 0000000000..55b59e0518 --- /dev/null +++ b/.changeset/many-spoons-join.md @@ -0,0 +1,9 @@ +--- +'@backstage/plugin-scaffolder-backend': patch +--- + +- **DEPRECATED** - The `containerRunner` option passed to `createBuiltinActions` has now been deprecated. + +- **DEPRECATED** - The `createFetchCookiecutterAction` export has also been deprecated and will soon disappear from this plugin. + +The `fetch:cookiecutter` action will soon be removed from the default list of actions that are provided out of the box from the scaffolder plugin. It will still be supported, and maintained by the community, so you can install the package (`@backstage/plugin-scaffolder-backend-module-cookiecutter`) and pass it in as a custom action. Or you can migrate your templates to use [`fetch:template`](https://backstage.io/docs/features/software-templates/builtin-actions#migrating-from-fetchcookiecutter-to-fetchtemplate) with the `cookiecutterCompat` option. From e7b9c3d713c6af6da80085caad704e88a25bcb4f Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Fri, 18 Feb 2022 16:29:33 +0100 Subject: [PATCH 270/383] catalog: remove columnFactories export Signed-off-by: Patrik Oldsberg --- .changeset/fair-otters-happen.md | 5 +++++ plugins/catalog/api-report.md | 17 ----------------- plugins/catalog/src/index.ts | 1 - 3 files changed, 5 insertions(+), 18 deletions(-) create mode 100644 .changeset/fair-otters-happen.md diff --git a/.changeset/fair-otters-happen.md b/.changeset/fair-otters-happen.md new file mode 100644 index 0000000000..3d029824ab --- /dev/null +++ b/.changeset/fair-otters-happen.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog': minor +--- + +Removed `columnFactories`, which was accidentally exported on the previous release. diff --git a/plugins/catalog/api-report.md b/plugins/catalog/api-report.md index 053a46bc35..bd5edcbfa6 100644 --- a/plugins/catalog/api-report.md +++ b/plugins/catalog/api-report.md @@ -160,23 +160,6 @@ export interface CatalogTableRow { }; } -// @public (undocumented) -export const columnFactories: Readonly<{ - createNameColumn( - options?: - | { - defaultKind?: string | undefined; - } - | undefined, - ): TableColumn; - createSystemColumn(): TableColumn; - createOwnerColumn(): TableColumn; - createSpecTypeColumn(): TableColumn; - createSpecLifecycleColumn(): TableColumn; - createMetadataDescriptionColumn(): TableColumn; - createTagsColumn(): TableColumn; -}>; - // @public export interface DefaultCatalogPageProps { // (undocumented) diff --git a/plugins/catalog/src/index.ts b/plugins/catalog/src/index.ts index 0cda2fe6f6..fef420d6d3 100644 --- a/plugins/catalog/src/index.ts +++ b/plugins/catalog/src/index.ts @@ -24,7 +24,6 @@ export * from './components/AboutCard'; export * from './components/CatalogKindHeader'; export * from './components/CatalogSearchResultListItem'; export * from './components/CatalogTable'; -export * from './components/CatalogTable/columns'; export * from './components/EntityLayout'; export * from './components/EntityOrphanWarning'; export * from './components/EntityProcessingErrorsPanel'; From 65a7939c6c1c548bf537d339cdaec146f88d0f11 Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 18 Feb 2022 19:07:08 +0100 Subject: [PATCH 271/383] deprecations: more scaffolder backend stuff Signed-off-by: blam --- .changeset/eight-houses-remain.md | 6 ++++ plugins/scaffolder-backend/api-report.md | 29 ++++++++------- .../src/scaffolder/tasks/StorageTaskBroker.ts | 36 +++++++++++-------- .../src/scaffolder/tasks/index.ts | 2 +- .../src/scaffolder/tasks/types.ts | 4 +-- 5 files changed, 47 insertions(+), 30 deletions(-) create mode 100644 .changeset/eight-houses-remain.md diff --git a/.changeset/eight-houses-remain.md b/.changeset/eight-houses-remain.md new file mode 100644 index 0000000000..27921bdaa5 --- /dev/null +++ b/.changeset/eight-houses-remain.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-scaffolder-backend': patch +--- + +- **DEPRECATED** - `TaskState` has been deprecated in favour of `CurrentClaimedTask` +- Narrowed the types from `JSONValue` to `JSONObject` as the usage is and should always be `JSONObject` for `complete` and `emitLog` `metadata` in `TaskContext` diff --git a/plugins/scaffolder-backend/api-report.md b/plugins/scaffolder-backend/api-report.md index aea6689183..bd507d892a 100644 --- a/plugins/scaffolder-backend/api-report.md +++ b/plugins/scaffolder-backend/api-report.md @@ -322,6 +322,16 @@ export type CreateWorkerOptions = { additionalTemplateFilters?: Record; }; +// @public +export interface CurrentClaimedTask { + // (undocumented) + secrets?: TaskSecrets; + // (undocumented) + spec: TaskSpec; + // (undocumented) + taskId: string; +} + // @public export class DatabaseTaskStore implements TaskStore { // (undocumented) @@ -514,11 +524,11 @@ export type TaskCompletionState = 'failed' | 'completed'; // @public export interface TaskContext { // (undocumented) - complete(result: TaskCompletionState, metadata?: JsonValue): Promise; + complete(result: TaskCompletionState, metadata?: JsonObject): Promise; // (undocumented) done: boolean; // (undocumented) - emitLog(message: string, metadata?: JsonValue): Promise; + emitLog(message: string, logMetadata?: JsonObject): Promise; // (undocumented) getWorkspaceName(): Promise; // (undocumented) @@ -536,14 +546,14 @@ export class TaskManager implements TaskContext { complete(result: TaskCompletionState, metadata?: JsonObject): Promise; // (undocumented) static create( - state: TaskState, + task: CurrentClaimedTask, storage: TaskStore, logger: Logger_2, ): TaskManager; // (undocumented) get done(): boolean; // (undocumented) - emitLog(message: string, metadata?: JsonObject): Promise; + emitLog(message: string, logMetadata?: JsonObject): Promise; // (undocumented) getWorkspaceName(): Promise; // (undocumented) @@ -563,15 +573,8 @@ export { TaskSpecV1beta2 }; export { TaskSpecV1beta3 }; -// @public -export interface TaskState { - // (undocumented) - secrets?: TaskSecrets; - // (undocumented) - spec: TaskSpec; - // (undocumented) - taskId: string; -} +// @public @deprecated +export type TaskState = CurrentClaimedTask; // @public export type TaskStatus = diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.ts index e7fd76ea9a..898516ef3b 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.ts @@ -38,39 +38,39 @@ export class TaskManager implements TaskContext { private heartbeatTimeoutId?: ReturnType; - static create(state: TaskState, storage: TaskStore, logger: Logger) { - const agent = new TaskManager(state, storage, logger); + static create(task: CurrentClaimedTask, storage: TaskStore, logger: Logger) { + const agent = new TaskManager(task, storage, logger); agent.startTimeout(); return agent; } // Runs heartbeat internally private constructor( - private readonly state: TaskState, + private readonly task: CurrentClaimedTask, private readonly storage: TaskStore, private readonly logger: Logger, ) {} get spec() { - return this.state.spec; + return this.task.spec; } get secrets() { - return this.state.secrets; + return this.task.secrets; } async getWorkspaceName() { - return this.state.taskId; + return this.task.taskId; } get done() { return this.isDone; } - async emitLog(message: string, metadata?: JsonObject): Promise { + async emitLog(message: string, logMetadata?: JsonObject): Promise { await this.storage.emitLogEvent({ - taskId: this.state.taskId, - body: { message, ...metadata }, + taskId: this.task.taskId, + body: { message, ...logMetadata }, }); } @@ -79,7 +79,7 @@ export class TaskManager implements TaskContext { metadata?: JsonObject, ): Promise { await this.storage.completeTask({ - taskId: this.state.taskId, + taskId: this.task.taskId, status: result === 'failed' ? 'failed' : 'completed', eventBody: { message: `Run completed with status: ${result}`, @@ -95,13 +95,13 @@ export class TaskManager implements TaskContext { private startTimeout() { this.heartbeatTimeoutId = setTimeout(async () => { try { - await this.storage.heartbeatTask(this.state.taskId); + await this.storage.heartbeatTask(this.task.taskId); this.startTimeout(); } catch (error) { this.isDone = true; this.logger.error( - `Heartbeat for task ${this.state.taskId} failed`, + `Heartbeat for task ${this.task.taskId} failed`, error, ); } @@ -110,16 +110,24 @@ export class TaskManager implements TaskContext { } /** - * TaskState + * Stores the state of the current claimed task passed to the TaskContext * * @public */ -export interface TaskState { +export interface CurrentClaimedTask { spec: TaskSpec; taskId: string; secrets?: TaskSecrets; } +/** + * TaskState + * + * @public + * @deprecated use CurrentClaimedTask instead + */ +export type TaskState = CurrentClaimedTask; + function defer() { let resolve = () => {}; const promise = new Promise(_resolve => { diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/index.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/index.ts index 89404d3390..aa1640dae2 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/index.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/index.ts @@ -15,7 +15,7 @@ */ export { DatabaseTaskStore } from './DatabaseTaskStore'; export { TaskManager } from './StorageTaskBroker'; -export type { TaskState } from './StorageTaskBroker'; +export type { CurrentClaimedTask, TaskState } from './StorageTaskBroker'; export { TaskWorker } from './TaskWorker'; export type { CreateWorkerOptions } from './TaskWorker'; export type { diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/types.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/types.ts index 6cc3eabdc7..e17f8b2c3b 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/types.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/types.ts @@ -146,8 +146,8 @@ export interface TaskContext { spec: TaskSpec; secrets?: TaskSecrets; done: boolean; - emitLog(message: string, metadata?: JsonValue): Promise; - complete(result: TaskCompletionState, metadata?: JsonValue): Promise; + emitLog(message: string, logMetadata?: JsonObject): Promise; + complete(result: TaskCompletionState, metadata?: JsonObject): Promise; getWorkspaceName(): Promise; } From 316cc70f3aed84ba9cf0b9073d9bce0419bf4bf2 Mon Sep 17 00:00:00 2001 From: kim5566 <28945404+kim5566@users.noreply.github.com> Date: Sat, 19 Feb 2022 06:15:58 +1100 Subject: [PATCH 272/383] undo yarn.lock Signed-off-by: kim5566 <28945404+kim5566@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index c124a60ca3..90a6ef9c24 100644 --- a/yarn.lock +++ b/yarn.lock @@ -15740,9 +15740,9 @@ kleur@^4.0.3: integrity sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA== knex@^1.0.2: - version "1.0.3" - resolved "https://registry.npmjs.org/knex/-/knex-1.0.3.tgz#a5f97aa98e5e036cfd0209a90d53b2a411280e84" - integrity sha512-rY1T7cgTQGHAUD9TshMka37bd+SEK+koPXXvZQEIoE8yjJ/E8ShsenaAmr3oaNNzqXuKD/SC0qlYtp7Js8tAXA== + version "1.0.2" + resolved "https://registry.npmjs.org/knex/-/knex-1.0.2.tgz#1b79273f39f587a631c1a5515482c203d5971781" + integrity sha512-RuDKTylj6X/3nYomnsFV8sOdxTcehLHczOd3yrUdULE4pQR8jVlZxYt3vvIU04otJF0Cw9DCtRt05S4PN4kDpw== dependencies: colorette "2.0.16" commander "^8.3.0" From fab01d014008eca5d2aff31742363645dca0a51b Mon Sep 17 00:00:00 2001 From: kim5566 <28945404+kim5566@users.noreply.github.com> Date: Sat, 19 Feb 2022 07:05:34 +1100 Subject: [PATCH 273/383] clearup Signed-off-by: kim5566 <28945404+kim5566@users.noreply.github.com> --- .../src/lib/TodoReader/TodoScmReader.test.ts | 13 ++----------- .../src/lib/TodoReader/TodoScmReader.ts | 10 ++-------- 2 files changed, 4 insertions(+), 19 deletions(-) diff --git a/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.test.ts b/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.test.ts index 1ca836162e..3e074f78a6 100644 --- a/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.test.ts +++ b/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.test.ts @@ -252,7 +252,7 @@ describe('TodoScmReader', () => { files: async () => [ { content: async () => Buffer.from('// TODO: my-todo', 'utf8'), - path: 'my-folder/my-file.js', + path: '', }, ], } as ReadTreeResponse); @@ -261,16 +261,7 @@ describe('TodoScmReader', () => { url: 'https://github.com/backstage/backstage/catalog-info.yaml', }), ).resolves.toEqual({ - items: [ - { - text: 'my-todo', - tag: 'TODO', - lineNumber: 1, - repoFilePath: 'my-folder/my-file.js', - viewUrl: - 'https://github.com/backstage/backstage/my-folder/my-file.js#L1', - }, - ], + items: [], }); expect(reader.readTree).toHaveBeenCalledTimes(1); expect(reader.readTree).toHaveBeenCalledWith( diff --git a/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.ts b/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.ts index 9514a8a2cf..2696f0d54b 100644 --- a/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.ts +++ b/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.ts @@ -92,12 +92,7 @@ export class TodoScmReader implements TodoReader { } const cacheItem = this.cache.get(url); - const filePathFilter = this.filePathFilter; - const newRead = this.doReadTodos( - { url }, - filePathFilter, - cacheItem?.etag, - ).catch(error => { + const newRead = this.doReadTodos({ url }, cacheItem?.etag).catch(error => { if (cacheItem && error.name === 'NotModifiedError') { return cacheItem; } @@ -116,11 +111,10 @@ export class TodoScmReader implements TodoReader { private async doReadTodos( options: ReadTodosOptions, - filePathFilter: (filePath: string) => boolean, etag?: string, ): Promise { const { url } = options; - + const filePathFilter = this.filePathFilter; const tree = await this.reader.readTree(url, { etag, filter(filePath, info) { From 0816f8237a41ac48a6a51fe984ab85c00e2c8d54 Mon Sep 17 00:00:00 2001 From: Joe Porpeglia Date: Fri, 18 Feb 2022 15:33:51 -0500 Subject: [PATCH 274/383] Improve error message when permissions are enabled without backend-to-backend authentication Signed-off-by: Joe Porpeglia --- .changeset/serious-eyes-fix.md | 5 +++++ plugins/permission-node/src/ServerPermissionClient.test.ts | 2 +- plugins/permission-node/src/ServerPermissionClient.ts | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 .changeset/serious-eyes-fix.md diff --git a/.changeset/serious-eyes-fix.md b/.changeset/serious-eyes-fix.md new file mode 100644 index 0000000000..5b4f86345e --- /dev/null +++ b/.changeset/serious-eyes-fix.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-permission-node': patch +--- + +Improved error message permissions are enabled without backend-to-backend authentication. diff --git a/plugins/permission-node/src/ServerPermissionClient.test.ts b/plugins/permission-node/src/ServerPermissionClient.test.ts index 9fa1eadb5e..53300061a0 100644 --- a/plugins/permission-node/src/ServerPermissionClient.test.ts +++ b/plugins/permission-node/src/ServerPermissionClient.test.ts @@ -113,7 +113,7 @@ describe('ServerPermissionClient', () => { tokenManager: ServerTokenManager.noop(), }), ).toThrowError( - 'You must configure at least one key in backend.auth.keys if permissions are enabled.', + 'Backend-to-backend authentication must be configured before enabling permissions. Read more here https://backstage.io/docs/tutorials/backend-to-backend-auth', ); }); }); diff --git a/plugins/permission-node/src/ServerPermissionClient.ts b/plugins/permission-node/src/ServerPermissionClient.ts index f22779c8e8..8c03016268 100644 --- a/plugins/permission-node/src/ServerPermissionClient.ts +++ b/plugins/permission-node/src/ServerPermissionClient.ts @@ -56,7 +56,7 @@ export class ServerPermissionClient implements PermissionAuthorizer { (tokenManager as any).isInsecureServerTokenManager ) { throw new Error( - 'You must configure at least one key in backend.auth.keys if permissions are enabled.', + 'Backend-to-backend authentication must be configured before enabling permissions. Read more here https://backstage.io/docs/tutorials/backend-to-backend-auth', ); } From 3c33c804c649c549fdd726baba8ab79674fe905e Mon Sep 17 00:00:00 2001 From: Joe Porpeglia Date: Fri, 18 Feb 2022 16:27:11 -0500 Subject: [PATCH 275/383] Update .changeset/serious-eyes-fix.md Co-authored-by: MT Lewis Signed-off-by: Joe Porpeglia --- .changeset/serious-eyes-fix.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/serious-eyes-fix.md b/.changeset/serious-eyes-fix.md index 5b4f86345e..5174b6d727 100644 --- a/.changeset/serious-eyes-fix.md +++ b/.changeset/serious-eyes-fix.md @@ -2,4 +2,4 @@ '@backstage/plugin-permission-node': patch --- -Improved error message permissions are enabled without backend-to-backend authentication. +Improved error message shown when permissions are enabled without backend-to-backend authentication. From d91d22bb19f5290af17eb4b5d0e4b94dae28a563 Mon Sep 17 00:00:00 2001 From: djamaile Date: Sat, 19 Feb 2022 14:54:13 +0100 Subject: [PATCH 276/383] feat(core-components): add line linking in the log viewer Signed-off-by: djamaile --- .changeset/brown-frogs-judge.md | 5 +++++ .../src/components/LogViewer/RealLogViewer.tsx | 11 ++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 .changeset/brown-frogs-judge.md diff --git a/.changeset/brown-frogs-judge.md b/.changeset/brown-frogs-judge.md new file mode 100644 index 0000000000..e8c62522be --- /dev/null +++ b/.changeset/brown-frogs-judge.md @@ -0,0 +1,5 @@ +--- +'@backstage/core-components': patch +--- + +When clicking on a log line the url will be updated from `/task/uid` to `/task/uid/#line-1`. These urls are also sharable, meaning that the UI will highlight the log line in the hash of the url. diff --git a/packages/core-components/src/components/LogViewer/RealLogViewer.tsx b/packages/core-components/src/components/LogViewer/RealLogViewer.tsx index cd30e96c92..ac66d7cdf5 100644 --- a/packages/core-components/src/components/LogViewer/RealLogViewer.tsx +++ b/packages/core-components/src/components/LogViewer/RealLogViewer.tsx @@ -15,6 +15,7 @@ */ import React, { useEffect, useMemo, useRef } from 'react'; +import { useLocation } from 'react-router-dom'; import IconButton from '@material-ui/core/IconButton'; import CopyIcon from '@material-ui/icons/FileCopy'; import AutoSizer from 'react-virtualized-auto-sizer'; @@ -42,6 +43,7 @@ export function RealLogViewer(props: RealLogViewerProps) { const search = useLogViewerSearch(lines); const selection = useLogViewerSelection(lines); + const location = useLocation(); useEffect(() => { if (search.resultLine !== undefined && listRef.current) { @@ -49,11 +51,18 @@ export function RealLogViewer(props: RealLogViewerProps) { } }, [search.resultLine]); + useEffect(() => { + if (location.hash) { + // #line-6 -> 6 + const line = parseInt(location.hash.replace(/\D/g, ''), 10); + selection.setSelection(line, false); + } + }, []); // eslint-disable-line react-hooks/exhaustive-deps + const handleSelectLine = ( line: number, event: { shiftKey: boolean; preventDefault: () => void }, ) => { - event.preventDefault(); selection.setSelection(line, event.shiftKey); }; From 4e50b658e0849f3cd9fdbee75a7fffc7d0e4fce6 Mon Sep 17 00:00:00 2001 From: djamaile Date: Sat, 19 Feb 2022 15:00:12 +0100 Subject: [PATCH 277/383] fix(core-components): spelling mistakes Signed-off-by: djamaile --- .changeset/brown-frogs-judge.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.changeset/brown-frogs-judge.md b/.changeset/brown-frogs-judge.md index e8c62522be..e11414ac39 100644 --- a/.changeset/brown-frogs-judge.md +++ b/.changeset/brown-frogs-judge.md @@ -2,4 +2,6 @@ '@backstage/core-components': patch --- -When clicking on a log line the url will be updated from `/task/uid` to `/task/uid/#line-1`. These urls are also sharable, meaning that the UI will highlight the log line in the hash of the url. +When clicking on a log line the URL will be updated from `/task/uid` to +`/task/uid/#line-1`. This URL are also sharable, meaning that the UI will +highlight the log line in the hash of the URL. From c2f3a548cffa301532ed6de91c6d0a6f57d573cb Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sat, 19 Feb 2022 17:49:07 +0100 Subject: [PATCH 278/383] cli: repo backend build Signed-off-by: Patrik Oldsberg --- .changeset/thick-brooms-teach.md | 5 +++++ packages/cli/src/commands/build/buildBackend.ts | 5 ++++- 2 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 .changeset/thick-brooms-teach.md diff --git a/.changeset/thick-brooms-teach.md b/.changeset/thick-brooms-teach.md new file mode 100644 index 0000000000..4ede83a445 --- /dev/null +++ b/.changeset/thick-brooms-teach.md @@ -0,0 +1,5 @@ +--- +'@backstage/cli': patch +--- + +Fix building of backends with `repo build --all`, where it would previously only work if the build was executed within the backend package. diff --git a/packages/cli/src/commands/build/buildBackend.ts b/packages/cli/src/commands/build/buildBackend.ts index 0768728f00..d7c4f72dbe 100644 --- a/packages/cli/src/commands/build/buildBackend.ts +++ b/packages/cli/src/commands/build/buildBackend.ts @@ -35,7 +35,10 @@ export async function buildBackend(options: BuildBackendOptions) { const pkg = await fs.readJson(resolvePath(targetDir, 'package.json')); // We build the target package without generating type declarations. - await buildPackage({ outputs: new Set([Output.cjs]) }); + await buildPackage({ + targetDir: options.targetDir, + outputs: new Set([Output.cjs]), + }); const tmpDir = await fs.mkdtemp(resolvePath(os.tmpdir(), 'backstage-bundle')); try { From 83d39d137ba369a6ebf2139a6679e19ca56514d1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 21 Feb 2022 04:16:05 +0000 Subject: [PATCH 279/383] chore(deps-dev): bump @types/inquirer from 8.1.3 to 8.2.0 Bumps [@types/inquirer](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/inquirer) from 8.1.3 to 8.2.0. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/inquirer) --- updated-dependencies: - dependency-name: "@types/inquirer" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 96b29fc341..1e6813c351 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5467,9 +5467,9 @@ rxjs "^6.4.0" "@types/inquirer@^8.1.3": - version "8.1.3" - resolved "https://registry.npmjs.org/@types/inquirer/-/inquirer-8.1.3.tgz#dfda4c97cdbe304e4dceb378a80f79448ea5c8fe" - integrity sha512-AayK4ZL5ssPzR1OtnOLGAwpT0Dda3Xi/h1G0l1oJDNrowp7T1423q4Zb8/emr7tzRlCy4ssEri0LWVexAqHyKQ== + version "8.2.0" + resolved "https://registry.npmjs.org/@types/inquirer/-/inquirer-8.2.0.tgz#b9566d048f5ff65159f2ed97aff45fe0f00b35ec" + integrity sha512-BNoMetRf3gmkpAlV5we+kxyZTle7YibdOntIZbU5pyIfMdcwy784KfeZDAcuyMznkh5OLa17RVXZOGA5LTlkgQ== dependencies: "@types/through" "*" rxjs "^7.2.0" From c2c462872610c208c27d6300e9b2fc887f7d4fb2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 21 Feb 2022 04:18:09 +0000 Subject: [PATCH 280/383] chore(deps): bump keyv-memcache from 1.2.7 to 1.2.9 Bumps [keyv-memcache](https://github.com/jaredwray/keyv-memcache) from 1.2.7 to 1.2.9. - [Release notes](https://github.com/jaredwray/keyv-memcache/releases) - [Commits](https://github.com/jaredwray/keyv-memcache/commits) --- updated-dependencies: - dependency-name: keyv-memcache dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 96b29fc341..a668345028 100644 --- a/yarn.lock +++ b/yarn.lock @@ -15548,9 +15548,9 @@ kafkajs@^1.16.0-beta.6: integrity sha512-fXnpfvQI7b0xJNRMMiDX05ezfG1/MtDJPdWhQ1e6SptDB/xe8JaGJwd/Fzd2viwgwYzhmHSg681PNOkX4Dz2DQ== keyv-memcache@^1.2.5: - version "1.2.7" - resolved "https://registry.npmjs.org/keyv-memcache/-/keyv-memcache-1.2.7.tgz#b8a43eeecdb11ad8f4d6d64abd4298d014c74955" - integrity sha512-lD7QaHf9M+bq9XLFZVEXJ2HNqEvO5CmtjiJjB2FHifbEQ18+YRDTfJCjo88Roc0hXtIqz/QZjYXpIYL8EWpL1g== + version "1.2.9" + resolved "https://registry.npmjs.org/keyv-memcache/-/keyv-memcache-1.2.9.tgz#68776b098233e4305ec729fbeb5ad5905f6ac914" + integrity sha512-hcHeihL/LjAhP1qvLSWuwCxDQlSkkGwlvH7RfIIO+57s7J5dhFLQQko1WcAbcd1jlxV6iPHAEvkDwp8c7XQzgA== dependencies: json-buffer "^3.0.1" memjs "^1.3.0" From f6160c82ba8d62eed5d8966dbf65449acf77df73 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 21 Feb 2022 04:24:40 +0000 Subject: [PATCH 281/383] chore(deps): bump @types/luxon from 2.0.4 to 2.0.9 Bumps [@types/luxon](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/luxon) from 2.0.4 to 2.0.9. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/luxon) --- updated-dependencies: - dependency-name: "@types/luxon" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- yarn.lock | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/yarn.lock b/yarn.lock index 96b29fc341..05a42ecd52 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5622,15 +5622,10 @@ resolved "https://registry.npmjs.org/@types/lunr/-/lunr-2.3.3.tgz#ec985618fd2712c010f8edab4f1ae7784ad7c583" integrity sha512-09sXZZVsB3Ib41U0fC+O1O+4UOZT1bl/e+/QubPxpqDWHNEchvx/DEb1KJMOwq6K3MTNzZFoNSzVdR++o1DVnw== -"@types/luxon@^2.0.4": - version "2.0.4" - resolved "https://registry.npmjs.org/@types/luxon/-/luxon-2.0.4.tgz#f7b5a86ccd843c0ccaddfaedd9ee1081bc1cde3b" - integrity sha512-l3xuhmyF2kBldy15SeY6d6HbK2BacEcSK1qTF1ISPtPHr29JH0C1fndz9ExXLKpGl0J6pZi+dGp1i5xesMt60Q== - -"@types/luxon@^2.0.5": - version "2.0.5" - resolved "https://registry.npmjs.org/@types/luxon/-/luxon-2.0.5.tgz#29d3b095d55ee50df8f4cf109b16009334d9828e" - integrity sha512-GKrG5v16BOs9XGpouu33hOkAFaiSDi3ZaDXG9F2yAoyzHRBtksZnI60VWY5aM/yAENCccBejrxw8jDY+9OVlxw== +"@types/luxon@^2.0.4", "@types/luxon@^2.0.5": + version "2.0.9" + resolved "https://registry.npmjs.org/@types/luxon/-/luxon-2.0.9.tgz#782a0edfa6d699191292c13168bd496cd66b87c6" + integrity sha512-ZuzIc7aN+i2ZDMWIiSmMdubR9EMMSTdEzF6R+FckP4p6xdnOYKqknTo/k+xXQvciSXlNGIwA4OPU5X7JIFzYdA== "@types/mdast@^3.0.0", "@types/mdast@^3.0.3": version "3.0.3" From 25c54c31c9b4f9f8ce16511694ea50e3b44c6e7c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 21 Feb 2022 04:26:27 +0000 Subject: [PATCH 282/383] chore(deps): bump rollup from 2.67.2 to 2.67.3 Bumps [rollup](https://github.com/rollup/rollup) from 2.67.2 to 2.67.3. - [Release notes](https://github.com/rollup/rollup/releases) - [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md) - [Commits](https://github.com/rollup/rollup/compare/v2.67.2...v2.67.3) --- updated-dependencies: - dependency-name: rollup dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 96b29fc341..d89fe0c57e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -21294,9 +21294,9 @@ rollup@^0.63.4: "@types/node" "*" rollup@^2.60.2: - version "2.67.2" - resolved "https://registry.npmjs.org/rollup/-/rollup-2.67.2.tgz#d95e15f60932ad21e05a870bd0aa0b235d056f04" - integrity sha512-hoEiBWwZtf1QdK3jZIq59L0FJj4Fiv4RplCO4pvCRC86qsoFurWB4hKQIjoRf3WvJmk5UZ9b0y5ton+62fC7Tw== + version "2.67.3" + resolved "https://registry.npmjs.org/rollup/-/rollup-2.67.3.tgz#3f04391fc296f807d067c9081d173e0a33dbd37e" + integrity sha512-G/x1vUwbGtP6O5ZM8/sWr8+p7YfZhI18pPqMRtMYMWSbHjKZ/ajHGiM+GWNTlWyOR0EHIdT8LHU+Z4ciIZ1oBw== optionalDependencies: fsevents "~2.3.2" From 68913af4ffe197869035bee32cdf0178b5853cac Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 21 Feb 2022 04:27:30 +0000 Subject: [PATCH 283/383] chore(deps): bump graphql-modules from 1.4.4 to 2.0.0 Bumps [graphql-modules](https://github.com/Urigo/graphql-modules) from 1.4.4 to 2.0.0. - [Release notes](https://github.com/Urigo/graphql-modules/releases) - [Commits](https://github.com/Urigo/graphql-modules/compare/graphql-modules@1.4.4...graphql-modules@2.0.0) --- updated-dependencies: - dependency-name: graphql-modules dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .changeset/dependabot-8dc00c4.md | 6 ++++++ plugins/catalog-graphql/package.json | 2 +- plugins/graphql-backend/package.json | 2 +- yarn.lock | 23 +++++++++-------------- 4 files changed, 17 insertions(+), 16 deletions(-) create mode 100644 .changeset/dependabot-8dc00c4.md diff --git a/.changeset/dependabot-8dc00c4.md b/.changeset/dependabot-8dc00c4.md new file mode 100644 index 0000000000..09abbab615 --- /dev/null +++ b/.changeset/dependabot-8dc00c4.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-catalog-graphql': patch +'@backstage/plugin-graphql-backend': patch +--- + +chore(deps): bump `graphql-modules` from 1.4.4 to 2.0.0 diff --git a/plugins/catalog-graphql/package.json b/plugins/catalog-graphql/package.json index 2d2dc5d1e5..3e9b2df7a3 100644 --- a/plugins/catalog-graphql/package.json +++ b/plugins/catalog-graphql/package.json @@ -37,7 +37,7 @@ "@backstage/catalog-model": "^0.10.0", "@backstage/config": "^0.1.14", "@backstage/types": "^0.1.2", - "graphql-modules": "^1.0.0", + "graphql-modules": "^2.0.0", "apollo-server": "^3.0.0", "graphql": "^16.0.0", "graphql-tag": "^2.11.0", diff --git a/plugins/graphql-backend/package.json b/plugins/graphql-backend/package.json index 061ba58544..3b165d2417 100644 --- a/plugins/graphql-backend/package.json +++ b/plugins/graphql-backend/package.json @@ -38,7 +38,7 @@ "@backstage/config": "^0.1.14", "@backstage/plugin-catalog-graphql": "^0.3.2", "@graphql-tools/schema": "^8.3.1", - "graphql-modules": "^1.0.0", + "graphql-modules": "^2.0.0", "@types/express": "^4.17.6", "apollo-server": "^3.0.0", "apollo-server-express": "^3.0.0", diff --git a/yarn.lock b/yarn.lock index 96b29fc341..b6d94cde32 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2309,7 +2309,7 @@ relay-compiler "12.0.0" tslib "~2.3.0" -"@graphql-tools/schema@8.3.1", "@graphql-tools/schema@^8.0.0", "@graphql-tools/schema@^8.1.2", "@graphql-tools/schema@^8.3.1": +"@graphql-tools/schema@8.3.1", "@graphql-tools/schema@^8.0.0", "@graphql-tools/schema@^8.1.1", "@graphql-tools/schema@^8.1.2", "@graphql-tools/schema@^8.3.1": version "8.3.1" resolved "https://registry.npmjs.org/@graphql-tools/schema/-/schema-8.3.1.tgz#1ee9da494d2da457643b3c93502b94c3c4b68c74" integrity sha512-3R0AJFe715p4GwF067G5i0KCr/XIdvSfDLvTLEiTDQ8V/hwbOHEKHKWlEBHGRQwkG5lwFQlW1aOn7VnlPERnWQ== @@ -2440,7 +2440,7 @@ dependencies: tslib "~2.3.0" -"@graphql-tools/wrap@^7.0.1", "@graphql-tools/wrap@^7.0.4": +"@graphql-tools/wrap@^7.0.4": version "7.0.8" resolved "https://registry.npmjs.org/@graphql-tools/wrap/-/wrap-7.0.8.tgz#ad41e487135ca3ea1ae0ea04bb3f596177fb4f50" integrity sha512-1NDUymworsOlb53Qfh7fonDi2STvqCtbeE68ntKY9K/Ju/be2ZNxrFSbrBHwnxWcN9PjISNnLcAyJ1L5tCUyhg== @@ -12904,13 +12904,13 @@ graphql-language-service@^4.1.4: graphql-language-service-types "^1.8.7" graphql-language-service-utils "^2.7.1" -graphql-modules@^1.0.0: - version "1.4.4" - resolved "https://registry.npmjs.org/graphql-modules/-/graphql-modules-1.4.4.tgz#ff552a9f0aa35e018d0f36928bc74204d6e087aa" - integrity sha512-jRmUdJYA2KzpezxhH0roS8we4wRnWY3VvHpBngZJqdEz8QCTp2WNc8YoBTcR2zZCCRjAHoPn0OkgA4UOHaVQPQ== +graphql-modules@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/graphql-modules/-/graphql-modules-2.0.0.tgz#5f710d86eb7295da83769c8cd6d61a049d999800" + integrity sha512-CM5CIJp428+ripgcLyrioBmAKB3ucvIEOgJG4WMjnOgScHY/eCZh/8I51cF8oc+pqebOgBCR3HH//IH5v7kv+w== dependencies: - "@graphql-tools/schema" "^7.0.0" - "@graphql-tools/wrap" "^7.0.1" + "@graphql-tools/schema" "^8.1.1" + "@graphql-tools/wrap" "^8.3.1" "@graphql-typed-document-node/core" "^3.1.0" ramda "^0.27.1" @@ -19937,16 +19937,11 @@ raf@^3.4.0: dependencies: performance-now "^2.1.0" -ramda@^0.27.1: +ramda@^0.27.1, ramda@~0.27.1: version "0.27.2" resolved "https://registry.npmjs.org/ramda/-/ramda-0.27.2.tgz#84463226f7f36dc33592f6f4ed6374c48306c3f1" integrity sha512-SbiLPU40JuJniHexQSAgad32hfwd+DRUdwF2PlVuI5RZD0/vahUco7R8vD86J/tcEKKF9vZrUVwgtmGCqlCKyA== -ramda@~0.27.1: - version "0.27.1" - resolved "https://registry.npmjs.org/ramda/-/ramda-0.27.1.tgz#66fc2df3ef873874ffc2da6aa8984658abacf5c9" - integrity sha512-PgIdVpn5y5Yns8vqb8FzBUEYn98V3xcPgawAkkgj0YJ0qDsnHCiNmZYfOGMgOvoB0eWFLpYbhxUR3mxfDIMvpw== - random-bytes@~1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz#4f68a1dc0ae58bd3fb95848c30324db75d64360b" From f72db5ea6e8174bb5fa9edfdcb29115c758ca1d4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 21 Feb 2022 04:29:42 +0000 Subject: [PATCH 284/383] chore(deps): bump google-auth-library from 7.11.0 to 7.12.0 Bumps [google-auth-library](https://github.com/googleapis/google-auth-library-nodejs) from 7.11.0 to 7.12.0. - [Release notes](https://github.com/googleapis/google-auth-library-nodejs/releases) - [Changelog](https://github.com/googleapis/google-auth-library-nodejs/blob/main/CHANGELOG.md) - [Commits](https://github.com/googleapis/google-auth-library-nodejs/compare/v7.11.0...v7.12.0) --- updated-dependencies: - dependency-name: google-auth-library dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 96b29fc341..72c754d17c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12719,9 +12719,9 @@ globby@^7.1.1: slash "^1.0.0" google-auth-library@^7.0.0, google-auth-library@^7.0.2, google-auth-library@^7.6.1: - version "7.11.0" - resolved "https://registry.npmjs.org/google-auth-library/-/google-auth-library-7.11.0.tgz#b63699c65037310a424128a854ba7e736704cbdb" - integrity sha512-3S5jn2quRumvh9F/Ubf7GFrIq71HZ5a6vqosgdIu105kkk0WtSqc2jGCRqtWWOLRS8SX3AHACMOEDxhyWAQIcg== + version "7.12.0" + resolved "https://registry.npmjs.org/google-auth-library/-/google-auth-library-7.12.0.tgz#7965db6bc20cb31f2df05a08a296bbed6af69426" + integrity sha512-RS/whvFPMoF1hQNxnoVET3DWKPBt1Xgqe2rY0k+Jn7TNhoHlwdnSe7Rlcbo2Nub3Mt2lUVz26X65aDQrWp6x8w== dependencies: arrify "^2.0.0" base64-js "^1.3.0" From e60b38ff20eb5d25dc76187610db5fe77ebb6168 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 21 Feb 2022 04:32:07 +0000 Subject: [PATCH 285/383] chore(deps-dev): bump @types/git-url-parse from 9.0.0 to 9.0.1 Bumps [@types/git-url-parse](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/git-url-parse) from 9.0.0 to 9.0.1. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/git-url-parse) --- updated-dependencies: - dependency-name: "@types/git-url-parse" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 96b29fc341..2c3e0eb8f1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5371,9 +5371,9 @@ "@types/node" "*" "@types/git-url-parse@^9.0.0": - version "9.0.0" - resolved "https://registry.npmjs.org/@types/git-url-parse/-/git-url-parse-9.0.0.tgz#aac1315a44fa4ed5a52c3820f6c3c2fb79cbd12d" - integrity sha512-kA2RxBT/r/ZuDDKwMl+vFWn1Z0lfm1/Ik6Qb91wnSzyzCDa/fkM8gIOq6ruB7xfr37n6Mj5dyivileUVKsidlg== + version "9.0.1" + resolved "https://registry.npmjs.org/@types/git-url-parse/-/git-url-parse-9.0.1.tgz#1c7cc89527ca8b5afcf260ead3b0e4e373c43938" + integrity sha512-Zf9mY4Mz7N3Nyi341nUkOtgVUQn4j6NS4ndqEha/lOgEbTkHzpD7wZuRagYKzrXNtvawWfsrojoC1nhsQexvNA== "@types/glob@*": version "7.1.3" From 29a675ba603bb53a08a85538f5710fa7b6c40deb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 21 Feb 2022 04:33:41 +0000 Subject: [PATCH 286/383] chore(deps): bump http-proxy-middleware from 2.0.2 to 2.0.3 Bumps [http-proxy-middleware](https://github.com/chimurai/http-proxy-middleware) from 2.0.2 to 2.0.3. - [Release notes](https://github.com/chimurai/http-proxy-middleware/releases) - [Changelog](https://github.com/chimurai/http-proxy-middleware/blob/master/CHANGELOG.md) - [Commits](https://github.com/chimurai/http-proxy-middleware/compare/v2.0.2...v2.0.3) --- updated-dependencies: - dependency-name: http-proxy-middleware dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 96b29fc341..4fdbdec7f7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -13378,9 +13378,9 @@ http-proxy-agent@^5.0.0: debug "4" http-proxy-middleware@^2.0.0: - version "2.0.2" - resolved "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.2.tgz#94d7593790aad6b3de48164f13792262f656c332" - integrity sha512-XtmDN5w+vdFTBZaYhdJAbMqn0DP/EhkUaAeo963mojwpKMMbw6nivtFKw07D7DDOH745L5k0VL0P8KRYNEVF/g== + version "2.0.3" + resolved "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.3.tgz#5df04f69a89f530c2284cd71eeaa51ba52243289" + integrity sha512-1bloEwnrHMnCoO/Gcwbz7eSVvW50KPES01PecpagI+YLNLci4AcuKJrujW4Mc3sBLpFxMSlsLNHS5Nl/lvrTPA== dependencies: "@types/http-proxy" "^1.17.8" http-proxy "^1.18.1" From a8331830f1b4d3efbb8bece749d56041c6b732f0 Mon Sep 17 00:00:00 2001 From: Johan Haals Date: Mon, 21 Feb 2022 10:09:49 +0100 Subject: [PATCH 287/383] catalog-react: deprecate useEntityKinds Signed-off-by: Johan Haals --- .changeset/fast-clouds-add.md | 5 + .changeset/five-geese-beam.md | 6 + .../SelectedKindsFilter.test.tsx | 105 +++++++++--------- .../CatalogGraphPage/SelectedKindsFilter.tsx | 11 +- .../catalog-react/src/hooks/useEntityKinds.ts | 1 + .../CatalogKindHeader.test.tsx | 40 ++++--- .../CatalogKindHeader/CatalogKindHeader.tsx | 13 ++- 7 files changed, 109 insertions(+), 72 deletions(-) create mode 100644 .changeset/fast-clouds-add.md create mode 100644 .changeset/five-geese-beam.md diff --git a/.changeset/fast-clouds-add.md b/.changeset/fast-clouds-add.md new file mode 100644 index 0000000000..e407e716d5 --- /dev/null +++ b/.changeset/fast-clouds-add.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-react': patch +--- + +Deprecated the `useEntityKinds` hook due to low usage and utility value. diff --git a/.changeset/five-geese-beam.md b/.changeset/five-geese-beam.md new file mode 100644 index 0000000000..0a3c66931a --- /dev/null +++ b/.changeset/five-geese-beam.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-catalog': patch +'@backstage/plugin-catalog-graph': patch +--- + +Remove use of deprecated `useEntityKinds` hook. diff --git a/plugins/catalog-graph/src/components/CatalogGraphPage/SelectedKindsFilter.test.tsx b/plugins/catalog-graph/src/components/CatalogGraphPage/SelectedKindsFilter.test.tsx index c98c77c975..5ac5bc5a5f 100644 --- a/plugins/catalog-graph/src/components/CatalogGraphPage/SelectedKindsFilter.test.tsx +++ b/plugins/catalog-graph/src/components/CatalogGraphPage/SelectedKindsFilter.test.tsx @@ -13,63 +13,63 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { useApi as useApiMocked } from '@backstage/core-plugin-api'; -import { useEntityKinds as useEntityKindsMocked } from '@backstage/plugin-catalog-react'; -import { render, waitFor } from '@testing-library/react'; +import { GetEntityFacetsResponse } from '@backstage/catalog-client'; +import { ApiProvider } from '@backstage/core-app-api'; +import { AlertApi, alertApiRef } from '@backstage/core-plugin-api'; +import { catalogApiRef } from '@backstage/plugin-catalog-react'; +import { renderWithEffects, TestApiRegistry } from '@backstage/test-utils'; +import { waitFor } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; import React from 'react'; import { SelectedKindsFilter } from './SelectedKindsFilter'; -jest.mock('@backstage/core-plugin-api'); -jest.mock('@backstage/plugin-catalog-react'); - -const useApi = useApiMocked as jest.Mock>; -const useEntityKinds = useEntityKindsMocked as jest.Mock< - ReturnType ->; +const catalogApi = { + getEntityFacets: jest.fn().mockResolvedValue({ + facets: { + kind: [ + { value: 'Component', count: 2 }, + { value: 'System', count: 1 }, + { value: 'API', count: 1 }, + { value: 'Resource', count: 1 }, + ], + }, + } as GetEntityFacetsResponse), +}; +const apis = TestApiRegistry.from( + [catalogApiRef, catalogApi], + [alertApiRef, {} as AlertApi], +); describe('', () => { - beforeEach(() => { - useApi.mockReturnValue({}); - useEntityKinds.mockReturnValue({ - loading: false, - kinds: ['API', 'Component', 'System', 'Domain', 'Resource'], - error: undefined, - }); + it('should not explode while loading', async () => { + const rendered = await renderWithEffects( + + {}} /> + , + ); + expect(rendered.baseElement).toBeInTheDocument(); }); - afterEach(() => jest.resetAllMocks()); - - test('should not explode while loading', () => { - useEntityKinds.mockReturnValue({ - loading: true, - kinds: undefined, - error: undefined, - }); - const { baseElement } = render( - {}} />, + it('should render current value', async () => { + const rendered = await renderWithEffects( + + {}} /> + , ); - expect(baseElement).toBeInTheDocument(); + expect(rendered.getByText('API')).toBeInTheDocument(); + expect(rendered.getByText('Component')).toBeInTheDocument(); }); - test('should render current value', () => { - const { getByText } = render( - {}} />, - ); - - expect(getByText('API')).toBeInTheDocument(); - expect(getByText('Component')).toBeInTheDocument(); - }); - - test('should select value', async () => { + it('should select value', async () => { const onChange = jest.fn(); - const { getByText, getByLabelText } = render( - , + const { getByLabelText, getByText } = await renderWithEffects( + + + , ); userEvent.click(getByLabelText('Open')); - await waitFor(() => expect(getByText('System')).toBeInTheDocument()); userEvent.click(getByText('System')); @@ -79,15 +79,16 @@ describe('', () => { }); }); - test('should return undefined if all values are selected', async () => { + it('should return undefined if all values are selected', async () => { const onChange = jest.fn(); - const { getByText, getByLabelText } = render( - , + const { getByLabelText, getByText } = await renderWithEffects( + + + , ); - userEvent.click(getByLabelText('Open')); await waitFor(() => expect(getByText('Resource')).toBeInTheDocument()); @@ -99,10 +100,12 @@ describe('', () => { }); }); - test('should return all values when cleared', async () => { + it('should return all values when cleared', async () => { const onChange = jest.fn(); - const { getByRole } = render( - , + const { getByRole } = await renderWithEffects( + + + , ); userEvent.click(getByRole('combobox')); diff --git a/plugins/catalog-graph/src/components/CatalogGraphPage/SelectedKindsFilter.tsx b/plugins/catalog-graph/src/components/CatalogGraphPage/SelectedKindsFilter.tsx index 87ba8e77bf..316f83da62 100644 --- a/plugins/catalog-graph/src/components/CatalogGraphPage/SelectedKindsFilter.tsx +++ b/plugins/catalog-graph/src/components/CatalogGraphPage/SelectedKindsFilter.tsx @@ -14,7 +14,7 @@ * limitations under the License. */ import { alertApiRef, useApi } from '@backstage/core-plugin-api'; -import { useEntityKinds } from '@backstage/plugin-catalog-react'; +import { catalogApiRef } from '@backstage/plugin-catalog-react'; import { Box, Checkbox, @@ -28,6 +28,7 @@ import CheckBoxOutlineBlankIcon from '@material-ui/icons/CheckBoxOutlineBlank'; import ExpandMoreIcon from '@material-ui/icons/ExpandMore'; import { Autocomplete } from '@material-ui/lab'; import React, { useCallback, useEffect, useMemo } from 'react'; +import useAsync from 'react-use/lib/useAsync'; const useStyles = makeStyles({ formControl: { @@ -43,7 +44,13 @@ export type Props = { export const SelectedKindsFilter = ({ value, onChange }: Props) => { const classes = useStyles(); const alertApi = useApi(alertApiRef); - const { error, kinds } = useEntityKinds(); + const catalogApi = useApi(catalogApiRef); + + const { error, value: kinds } = useAsync(async () => { + return await catalogApi + .getEntityFacets({ facets: ['kind'] }) + .then(response => response.facets.kind?.map(f => f.value).sort() || []); + }); useEffect(() => { if (error) { diff --git a/plugins/catalog-react/src/hooks/useEntityKinds.ts b/plugins/catalog-react/src/hooks/useEntityKinds.ts index 5fad49df8e..3dfc31eb88 100644 --- a/plugins/catalog-react/src/hooks/useEntityKinds.ts +++ b/plugins/catalog-react/src/hooks/useEntityKinds.ts @@ -21,6 +21,7 @@ import { catalogApiRef } from '../api'; /** * Retrieve a list of unique entity kinds present in the catalog * @public + * @deprecated and will be removed due to low utility value. */ export function useEntityKinds() { const catalogApi = useApi(catalogApiRef); diff --git a/plugins/catalog/src/components/CatalogKindHeader/CatalogKindHeader.test.tsx b/plugins/catalog/src/components/CatalogKindHeader/CatalogKindHeader.test.tsx index 795d57df47..45d42d0ea6 100644 --- a/plugins/catalog/src/components/CatalogKindHeader/CatalogKindHeader.test.tsx +++ b/plugins/catalog/src/components/CatalogKindHeader/CatalogKindHeader.test.tsx @@ -24,8 +24,13 @@ import { MockEntityListContextProvider, } from '@backstage/plugin-catalog-react'; import { ApiProvider } from '@backstage/core-app-api'; -import { renderWithEffects, TestApiRegistry } from '@backstage/test-utils'; +import { + MockErrorApi, + renderWithEffects, + TestApiRegistry, +} from '@backstage/test-utils'; import { CatalogKindHeader } from './CatalogKindHeader'; +import { errorApiRef } from '@backstage/core-plugin-api'; const entities: Entity[] = [ { @@ -57,21 +62,24 @@ const entities: Entity[] = [ }, }, ]; - -const apis = TestApiRegistry.from([ - catalogApiRef, - { - getEntityFacets: jest.fn().mockResolvedValue({ - facets: { - kind: [ - { value: 'Component', count: 2 }, - { value: 'Template', count: 1 }, - { value: 'System', count: 1 }, - ], - }, - } as GetEntityFacetsResponse), - }, -]); +const errorApi = new MockErrorApi(); +const apis = TestApiRegistry.from( + [ + catalogApiRef, + { + getEntityFacets: jest.fn().mockResolvedValue({ + facets: { + kind: [ + { value: 'Component', count: 2 }, + { value: 'Template', count: 1 }, + { value: 'System', count: 1 }, + ], + }, + } as GetEntityFacetsResponse), + }, + ], + [errorApiRef, errorApi], +); describe('', () => { it('renders available kinds', async () => { diff --git a/plugins/catalog/src/components/CatalogKindHeader/CatalogKindHeader.tsx b/plugins/catalog/src/components/CatalogKindHeader/CatalogKindHeader.tsx index 6689f3371d..3f5588853c 100644 --- a/plugins/catalog/src/components/CatalogKindHeader/CatalogKindHeader.tsx +++ b/plugins/catalog/src/components/CatalogKindHeader/CatalogKindHeader.tsx @@ -25,10 +25,12 @@ import { Theme, } from '@material-ui/core'; import { + catalogApiRef, EntityKindFilter, - useEntityKinds, useEntityListProvider, } from '@backstage/plugin-catalog-react'; +import useAsync from 'react-use/lib/useAsync'; +import { useApi } from '@backstage/core-plugin-api'; const useStyles = makeStyles((theme: Theme) => createStyles({ @@ -51,7 +53,12 @@ export interface CatalogKindHeaderProps { export function CatalogKindHeader(props: CatalogKindHeaderProps) { const { initialFilter = 'component' } = props; const classes = useStyles(); - const { kinds: allKinds = [] } = useEntityKinds(); + const catalogApi = useApi(catalogApiRef); + const { value: allKinds } = useAsync(async () => { + return await catalogApi + .getEntityFacets({ facets: ['kind'] }) + .then(response => response.facets.kind?.map(f => f.value).sort() || []); + }); const { updateFilters, queryParameters } = useEntityListProvider(); const [selectedKind, setSelectedKind] = useState( @@ -72,7 +79,7 @@ export function CatalogKindHeader(props: CatalogKindHeaderProps) { // including selectedKind if it's unknown - but allows the selectedKind to get clobbered by the // more proper catalog kind if it exists. const options = [capitalize(selectedKind)] - .concat(allKinds) + .concat(allKinds ?? []) .sort() .reduce((acc, kind) => { acc[kind.toLocaleLowerCase('en-US')] = kind; From 50473a3f054f6da596aa9aabd9f2158566ad960b Mon Sep 17 00:00:00 2001 From: djamaile Date: Mon, 21 Feb 2022 10:17:59 +0100 Subject: [PATCH 288/383] fix(scaffolder): change variable name Signed-off-by: djamaile --- .../components/MultistepJsonForm/MultistepJsonForm.tsx | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/plugins/scaffolder/src/components/MultistepJsonForm/MultistepJsonForm.tsx b/plugins/scaffolder/src/components/MultistepJsonForm/MultistepJsonForm.tsx index 14e7c642f2..8936ab7994 100644 --- a/plugins/scaffolder/src/components/MultistepJsonForm/MultistepJsonForm.tsx +++ b/plugins/scaffolder/src/components/MultistepJsonForm/MultistepJsonForm.tsx @@ -123,7 +123,7 @@ export const MultistepJsonForm = ({ const featureFlagApi = useApi(featureFlagsApiRef); const featureFlagKey = 'backstage:featureFlag'; const filterOutProperties = (schema: JsonObject): JsonObject => { - const removedPropertiesKeys: Array = []; + const removedPropertyKeys: Array = []; if (schema.properties) { schema.properties = Object.fromEntries( Object.entries(schema.properties).filter(([key, value]) => { @@ -131,16 +131,16 @@ export const MultistepJsonForm = ({ if (featureFlagApi.isActive(value[featureFlagKey])) { return true; } - removedPropertiesKeys.push(key); + removedPropertyKeys.push(key); return false; } return true; }), ); - // remove the feature flag property keys from required if they are not active - if (Array.isArray(schema.required) && removedPropertiesKeys.length > 0) { - for (const property of removedPropertiesKeys) { + // remove the feature flag property key from required if they are not active + if (Array.isArray(schema.required) && removedPropertyKeys.length > 0) { + for (const property of removedPropertyKeys) { const index = schema.required.findIndex(r => r === property); if (index > -1) { schema.required.splice(index, 1); From 89edb124f5c79fba6811e61a8fe0862dd48c195f Mon Sep 17 00:00:00 2001 From: Camila Belo Date: Thu, 17 Feb 2022 12:04:25 +0100 Subject: [PATCH 289/383] refactor: apply review suggestions Signed-off-by: Camila Belo --- .changeset/techdocs-moose-design.md | 15 ++ .../src/components/Root/Root.tsx | 10 +- .../components/TechDocsPage/TechDocsPage.tsx | 56 +++-- plugins/techdocs/api-report.md | 6 +- .../techdocs/src/reader/components/Reader.tsx | 200 ++++++++++++------ .../reader/components/TechDocsPageHeader.tsx | 16 +- 6 files changed, 202 insertions(+), 101 deletions(-) diff --git a/.changeset/techdocs-moose-design.md b/.changeset/techdocs-moose-design.md index 7f22de2c17..c7c397ad4c 100644 --- a/.changeset/techdocs-moose-design.md +++ b/.changeset/techdocs-moose-design.md @@ -3,3 +3,18 @@ --- Adjust the Tech Docs page theme as a side effect of the `mkdocs-material` theme update. + +If you use the `spofify/techdocs` image to build your documentation, make sure you use version `spotify/techdocs:v0.3.7`. + +**Breaking**: The `PyMdown` extensions have also been updated and some syntax may have changed, so it is recommended that you check the extension's documentation if something stops working. +For example, the syntax of tags below was deprecated in `PyMdown` extensions `v.7.0` and in `v.8.0.0` it has been removed. This means that the old syntax specified below no longer works. + +````markdown +```markdown tab="tab" +This is some markdown +``` + +```markdown tab="tab 2" +This is some markdown in tab 2 +``` +```` diff --git a/packages/techdocs-cli-embedded-app/src/components/Root/Root.tsx b/packages/techdocs-cli-embedded-app/src/components/Root/Root.tsx index 65e75a488a..249394fdc4 100644 --- a/packages/techdocs-cli-embedded-app/src/components/Root/Root.tsx +++ b/packages/techdocs-cli-embedded-app/src/components/Root/Root.tsx @@ -14,18 +14,20 @@ * limitations under the License. */ -import React, { useContext, PropsWithChildren } from 'react'; +import React, { PropsWithChildren, useContext } from 'react'; + import { Link, makeStyles } from '@material-ui/core'; import LibraryBooks from '@material-ui/icons/LibraryBooks'; import LogoFull from './LogoFull'; import LogoIcon from './LogoIcon'; + import { Sidebar, + SidebarItem, SidebarPage, sidebarConfig, - SidebarContext, - SidebarItem, SidebarDivider, + SidebarContext, } from '@backstage/core-components'; import { NavLink } from 'react-router-dom'; @@ -70,7 +72,7 @@ export const Root = ({ children }: PropsWithChildren<{}>) => ( {/* Global nav, not org-specific */} {/* End global nav */} 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 c2519df420..d9a518c165 100644 --- a/packages/techdocs-cli-embedded-app/src/components/TechDocsPage/TechDocsPage.tsx +++ b/packages/techdocs-cli-embedded-app/src/components/TechDocsPage/TechDocsPage.tsx @@ -24,7 +24,7 @@ import React, { import { Theme, makeStyles } from '@material-ui/core'; -import { ThemeProvider, Toolbar, Tooltip, IconButton } from '@material-ui/core'; +import { ThemeProvider, Box, Tooltip, IconButton } from '@material-ui/core'; import LightIcon from '@material-ui/icons/Brightness7'; import DarkIcon from '@material-ui/icons/Brightness4'; @@ -40,6 +40,11 @@ import { } from '@backstage/plugin-techdocs'; const useStyles = makeStyles((theme: Theme) => ({ + headerIcon: { + color: theme.palette.common.white, + width: '32px', + height: '32px', + }, content: { backgroundColor: theme.palette.background.default, }, @@ -90,6 +95,34 @@ const TechdocsThemeProvider: FC = ({ children }) => { const useTechDocsTheme = () => useContext(TechDocsThemeContext); +const TechDocsThemeToggle = () => { + const classes = useStyles(); + const { theme, toggleTheme } = useTechDocsTheme(); + + const themes = { + [Themes.LIGHT]: { + icon: DarkIcon, + title: 'Dark theme', + }, + [Themes.DARK]: { + icon: LightIcon, + title: 'Light theme', + }, + }; + + const { title, icon: Icon } = themes[theme]; + + return ( + + + + + + + + ); +}; + const TechDocsPageContent = ({ onReady, entityRef, @@ -98,26 +131,9 @@ const TechDocsPageContent = ({ onReady: () => void; }) => { const classes = useStyles(); - const { theme, toggleTheme } = useTechDocsTheme(); - - const themes = { - [Themes.LIGHT]: { - icon: , - title: 'Dark theme', - }, - [Themes.DARK]: { - icon: , - title: 'Light theme', - }, - }; return ( - - - {themes[theme].icon} - - ); @@ -136,7 +152,9 @@ const DefaultTechDocsPage = () => { + > + + )} diff --git a/plugins/techdocs/api-report.md b/plugins/techdocs/api-report.md index 9a25cb6375..ce8f68bd45 100644 --- a/plugins/techdocs/api-report.md +++ b/plugins/techdocs/api-report.md @@ -16,6 +16,7 @@ import { EntityName } from '@backstage/catalog-model'; import { FetchApi } from '@backstage/core-plugin-api'; import { IdentityApi } from '@backstage/core-plugin-api'; import { LocationSpec } from '@backstage/catalog-model'; +import { PropsWithChildren } from 'react'; import { default as React_2 } from 'react'; import { RouteRef } from '@backstage/core-plugin-api'; import { TableColumn } from '@backstage/core-components'; @@ -265,16 +266,17 @@ export const TechDocsPageHeader: ({ entityRef, entityMetadata, techDocsMetadata, + children, }: TechDocsPageHeaderProps) => JSX.Element; // Warning: (ae-missing-release-tag) "TechDocsPageHeaderProps" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) -export type TechDocsPageHeaderProps = { +export type TechDocsPageHeaderProps = PropsWithChildren<{ entityRef: EntityName; entityMetadata?: TechDocsEntityMetadata; techDocsMetadata?: TechDocsMetadata; -}; +}>; // Warning: (ae-missing-release-tag) "TechDocsPageProps" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // diff --git a/plugins/techdocs/src/reader/components/Reader.tsx b/plugins/techdocs/src/reader/components/Reader.tsx index 2289a645e4..a8ee52740e 100644 --- a/plugins/techdocs/src/reader/components/Reader.tsx +++ b/plugins/techdocs/src/reader/components/Reader.tsx @@ -33,7 +33,6 @@ import { lighten, alpha, } from '@material-ui/core'; -import { red, pink, green, purple, yellow } from '@material-ui/core/colors'; import { EntityName } from '@backstage/catalog-model'; import { useApi, configApiRef } from '@backstage/core-plugin-api'; @@ -70,8 +69,8 @@ type Props = { const useStyles = makeStyles(theme => ({ searchBar: { - marginLeft: '20rem', - maxWidth: 'calc(100% - 20rem * 2 - 3rem)', + marginLeft: '16rem', + maxWidth: 'calc(100% - 16rem * 2)', marginTop: theme.spacing(1), '@media screen and (max-width: 76.1875em)': { marginLeft: '10rem', @@ -235,20 +234,26 @@ export const useTechDocsReaderDom = (entityRef: EntityName): Element | null => { :host { /* FONT */ --md-default-fg-color: ${theme.palette.text.primary}; + --md-default-fg-color--light: ${theme.palette.text.secondary}; + --md-default-fg-color--lighter: ${lighten( + theme.palette.text.secondary, + 0.7, + )}; + --md-default-fg-color--lightest: ${lighten( + theme.palette.text.secondary, + 0.3, + )}; /* BACKGROUND */ --md-default-bg-color:${theme.palette.background.default}; - --md-default-bg-color--light: ${lighten( - theme.palette.text.primary, + --md-default-bg-color--light: ${theme.palette.background.paper}; + --md-default-bg-color--lighter: ${lighten( + theme.palette.background.paper, 0.7, )}; - --md-default-bg-color--lighter: ${lighten( - theme.palette.text.primary, - 0.3, - )}; --md-default-bg-color--lightest: ${lighten( - theme.palette.text.primary, - 0.12, + theme.palette.background.paper, + 0.3, )}; /* PRIMARY */ @@ -269,7 +274,9 @@ export const useTechDocsReaderDom = (entityRef: EntityName): Element | null => { --md-shadow-z2: ${theme.shadows[2]}; --md-shadow-z3: ${theme.shadows[3]}; - /* ICON */ + /* EXTENSIONS */ + --md-admonition-fg-color: var(--md-default-fg-color); + --md-admonition-bg-color: var(--md-default-bg-color); /* Admonitions and others are using SVG masks to define icons. These masks are defined as CSS variables. */ --md-admonition-icon--note: url('data:image/svg+xml;charset=utf-8,'); --md-admonition-icon--abstract: url('data:image/svg+xml;charset=utf-8,'); @@ -284,7 +291,7 @@ export const useTechDocsReaderDom = (entityRef: EntityName): Element | null => { --md-admonition-icon--example: url('data:image/svg+xml;charset=utf-8,'); --md-admonition-icon--quote: url('data:image/svg+xml;charset=utf-8,'); --md-footnotes-icon: url('data:image/svg+xml;charset=utf-8,'); - --md-details-icon: url('data:image/svg+xml;charset=utf-8,'); + --md-details-icon: url('data:image/svg+xml;charset=utf-8,'); --md-tasklist-icon: url('data:image/svg+xml;charset=utf-8,'); --md-tasklist-icon--checked: url('data:image/svg+xml;charset=utf-8,'); --md-nav-icon--prev: url('data:image/svg+xml;charset=utf-8,'); @@ -303,11 +310,7 @@ export const useTechDocsReaderDom = (entityRef: EntityName): Element | null => { /* CODE */ --md-code-fg-color: ${theme.palette.text.primary}; --md-code-bg-color: ${theme.palette.background.paper}; - --md-code-hl-color: ${alpha(yellow[500], 0.5)}; - --md-code-hl-number-color: ${red[500]}; - --md-code-hl-string-color: ${green[500]}; - --md-code-hl-special-color: ${pink[500]}; - --md-code-hl-constant-color: ${purple[500]}; + --md-code-hl-color: ${alpha(theme.palette.warning.main, 0.5)}; --md-code-hl-keyword-color: ${ isDarkTheme ? theme.palette.primary.light @@ -318,6 +321,16 @@ export const useTechDocsReaderDom = (entityRef: EntityName): Element | null => { ? theme.palette.secondary.light : theme.palette.secondary.dark }; + --md-code-hl-string-color: ${ + isDarkTheme + ? theme.palette.success.light + : theme.palette.success.dark + }; + --md-code-hl-number-color: ${ + isDarkTheme ? theme.palette.error.light : theme.palette.error.dark + }; + --md-code-hl-constant-color: var(--md-code-hl-function-color); + --md-code-hl-special-color: var(--md-code-hl-function-color); --md-code-hl-name-color: var(--md-code-fg-color); --md-code-hl-comment-color: var(--md-default-fg-color--light); --md-code-hl-generic-color: var(--md-default-fg-color--light); @@ -350,7 +363,14 @@ export const useTechDocsReaderDom = (entityRef: EntityName): Element | null => { @media screen and (max-width: 76.1875em) { :host > * { /* TYPESET */ - --md-typeset-font-size: .8rem; + --md-typeset-font-size: .9rem; + } + } + + @media screen and (max-width: 600px) { + :host > * { + /* TYPESET */ + --md-typeset-font-size: .7rem; } } `, @@ -376,9 +396,16 @@ export const useTechDocsReaderDom = (entityRef: EntityName): Element | null => { } .md-nav { - font-size: ${theme.typography.body1.fontSize}; + font-size: calc(var(--md-typeset-font-size) * 0.9); + } + .md-nav__icon { + width: auto !important; + height: auto !important; + } + .md-nav__icon:after { + width: 20px !important; + height: 20px !important; } - .md-nav .md-main__inner { margin-top: 0; @@ -387,15 +414,15 @@ export const useTechDocsReaderDom = (entityRef: EntityName): Element | null => { .md-sidebar { position: fixed; bottom: 100px; - width: 20rem; + width: 16rem; } .md-sidebar--secondary { - right: 2rem; + right: ${theme.spacing(3)}px; } .md-content { - max-width: calc(100% - 20rem * 2 - 3rem); - margin-left: 20rem; + max-width: calc(100% - 16rem * 2); + margin-left: 16rem; margin-bottom: 50px; } @@ -407,39 +434,63 @@ export const useTechDocsReaderDom = (entityRef: EntityName): Element | null => { background-color: unset; } .md-footer-nav__link { - width: 20rem; + width: 16rem; } .md-dialog { background-color: unset; } - + @media screen and (max-width: 76.1875em) { .md-nav { - transition: none !important - background-color: ${theme.palette.background.default}; + transition: none !important; + background-color: var(--md-default-bg-color) } - .md-nav--primary .md-nav__title { cursor: auto; + color: var(--md-default-fg-color); + font-weight: 700; white-space: normal; line-height: 1rem; height: auto; + display: flex; + flex-flow: column; + row-gap: 1.6rem; + padding: 1.2rem .8rem .8rem; + background-color: var(--md-default-bg-color); } - .md-nav--primary > .md-nav__title [for="none"] { - padding-top: 0; + .md-nav--primary .md-nav__title~.md-nav__list { + box-shadow: none; + } + .md-nav--primary .md-nav__title ~ .md-nav__list > :first-child { + border-top: none; } .md-nav--primary .md-nav__title .md-nav__button { display: none; } - - .md-sidebar--secondary { - display: none; + .md-nav--primary .md-nav__title .md-nav__icon { + color: var(--md-default-fg-color); + position: static; + height: auto; + margin: 0 0 0 -0.2rem; } + .md-nav--primary > .md-nav__title [for="none"] { + padding-top: 0; + } + .md-nav--primary .md-nav__item { + border-top: none; + } + .md-nav--primary :is(.md-nav__title,.md-nav__item) { + font-size : var(--md-typeset-font-size); + } + .md-sidebar--primary { - width: 10rem; + width: 10rem !important; left: ${isPinned ? '242px' : '72px'} !important; } + .md-sidebar--secondary:not([hidden]) { + display: none; + } .md-content { max-width: calc(100% - 10rem); @@ -455,6 +506,12 @@ export const useTechDocsReaderDom = (entityRef: EntityName): Element | null => { width: 50%; } } + + @media screen and (max-width: 600px) { + .md-sidebar--primary { + left: 1rem !important; + } + } `, }), injectCss({ @@ -480,6 +537,7 @@ export const useTechDocsReaderDom = (entityRef: EntityName): Element | null => { }; return style.concat(` .md-typeset ${heading} { + color: var(--md-default-fg-color); line-height: ${lineHeight}; font-family: ${fontFamily}; font-weight: ${fontWeight}; @@ -493,17 +551,30 @@ export const useTechDocsReaderDom = (entityRef: EntityName): Element | null => { } .md-typeset details { - font-size: var(--md-typeset-font-size); + font-size: var(--md-typeset-font-size) !important; + } + .md-typeset details summary { + padding-left: 2.5rem !important; + } + .md-typeset details summary:before, + .md-typeset details summary:after { + top: 50% !important; + width: 20px !important; + height: 20px !important; + transform: rotate(0deg) translateY(-50%) !important; + } + .md-typeset details[open] > summary:after { + transform: rotate(90deg) translateX(-50%) !important; } .md-typeset blockquote { - color: ${theme.palette.textSubtle}; - border-left: 0.2rem solid ${theme.palette.textVerySubtle}; + color: var(--md-default-fg-color--light); + border-left: 0.2rem solid var(--md-default-fg-color--light); } .md-typeset table:not([class]) { font-size: var(--md-typeset-font-size); - border: 1px solid ${theme.palette.text.primary}; + border: 1px solid var(--md-default-fg-color); border-bottom: none; border-collapse: collapse; } @@ -511,7 +582,7 @@ export const useTechDocsReaderDom = (entityRef: EntityName): Element | null => { font-weight: bold; } .md-typeset table:not([class]) td, .md-typeset table:not([class]) th { - border-bottom: 1px solid ${theme.palette.text.primary}; + border-bottom: 1px solid var(--md-default-fg-color); } .md-typeset pre > code::-webkit-scrollbar-thumb { @@ -529,9 +600,9 @@ export const useTechDocsReaderDom = (entityRef: EntityName): Element | null => { Disable CSS animations on link colors as they lead to issues in dark mode. The dark mode color theme is applied later and theirfore there is always an animation from light to dark mode when navigation between pages. */ - .md-dialog, .md-nav__link, .md-footer__link, .md-typeset a, .md-typeset a::before, .md-typeset .headerlink { - transition: none; - } + .md-dialog, .md-nav__link, .md-footer__link, .md-typeset a, .md-typeset a::before, .md-typeset .headerlink { + transition: none; + } `, }), injectCss({ @@ -589,12 +660,22 @@ export const useTechDocsReaderDom = (entityRef: EntityName): Element | null => { background-color: ${theme.palette.action.disabledBackground}; } .task-list-control [type="checkbox"]:checked + .task-list-indicator:before { - background-color: ${theme.palette.success.main}; + background-color: ${theme.palette.success.main}; } /* ADMONITION */ .admonition { - font-size: var(--md-typeset-font-size); + font-size: var(--md-typeset-font-size) !important; + } + .admonition .admonition-title { + padding-left: 2.5rem !important; + } + + .admonition .admonition-title:before { + top: 50% !important; + width: 20px !important; + height: 20px !important; + transform: translateY(-50%) !important; } `, }), @@ -603,33 +684,12 @@ export const useTechDocsReaderDom = (entityRef: EntityName): Element | null => { kind, name, namespace, - isDarkTheme, - isPinned, scmIntegrationsApi, techdocsSanitizer, techdocsStorageApi, - theme.shadows, - theme.typography, - theme.palette.divider, - theme.palette.text.primary, - theme.palette.textVerySubtle, - theme.palette.background.paper, - theme.palette.background.default, - theme.palette.textSubtle, - theme.palette.primary.main, - theme.palette.primary.dark, - theme.palette.primary.light, - theme.palette.primary.contrastText, - theme.palette.secondary.dark, - theme.palette.secondary.light, - theme.palette.error.dark, - theme.palette.error.light, - theme.palette.success.main, - theme.palette.success.dark, - theme.palette.success.light, - theme.palette.warning.dark, - theme.palette.warning.light, - theme.palette.action.disabledBackground, + theme, + isDarkTheme, + isPinned, ], ); diff --git a/plugins/techdocs/src/reader/components/TechDocsPageHeader.tsx b/plugins/techdocs/src/reader/components/TechDocsPageHeader.tsx index 7c25333d3f..f56542773f 100644 --- a/plugins/techdocs/src/reader/components/TechDocsPageHeader.tsx +++ b/plugins/techdocs/src/reader/components/TechDocsPageHeader.tsx @@ -14,29 +14,32 @@ * limitations under the License. */ -import { EntityName, RELATION_OWNED_BY } from '@backstage/catalog-model'; -import { Header, HeaderLabel } from '@backstage/core-components'; +import React, { PropsWithChildren } from 'react'; +import CodeIcon from '@material-ui/icons/Code'; + import { useRouteRef } from '@backstage/core-plugin-api'; +import { Header, HeaderLabel } from '@backstage/core-components'; +import { EntityName, RELATION_OWNED_BY } from '@backstage/catalog-model'; import { EntityRefLink, EntityRefLinks, getEntityRelations, } from '@backstage/plugin-catalog-react'; -import CodeIcon from '@material-ui/icons/Code'; -import React from 'react'; + import { rootRouteRef } from '../../routes'; import { TechDocsEntityMetadata, TechDocsMetadata } from '../../types'; -export type TechDocsPageHeaderProps = { +export type TechDocsPageHeaderProps = PropsWithChildren<{ entityRef: EntityName; entityMetadata?: TechDocsEntityMetadata; techDocsMetadata?: TechDocsMetadata; -}; +}>; export const TechDocsPageHeader = ({ entityRef, entityMetadata, techDocsMetadata, + children, }: TechDocsPageHeaderProps) => { const { name } = entityRef; @@ -107,6 +110,7 @@ export const TechDocsPageHeader = ({ typeLink={docsRootLink} > {labels} + {children} ); }; From 4c91f2d3b1340b63201dfc99bbafff1feb6db886 Mon Sep 17 00:00:00 2001 From: Johan Haals Date: Mon, 21 Feb 2022 10:32:42 +0100 Subject: [PATCH 290/383] update api report Signed-off-by: Johan Haals --- plugins/catalog-react/api-report.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/catalog-react/api-report.md b/plugins/catalog-react/api-report.md index 104472cbfe..96b87e0bab 100644 --- a/plugins/catalog-react/api-report.md +++ b/plugins/catalog-react/api-report.md @@ -551,7 +551,7 @@ export const useEntityCompoundName: () => { // @public (undocumented) export const useEntityFromUrl: () => EntityLoadingStatus; -// @public +// @public @deprecated export function useEntityKinds(): { error: Error | undefined; loading: boolean; From 2d7afdf1002c6cb0d2602237ae3b641a9240187e Mon Sep 17 00:00:00 2001 From: Julio Zynger Date: Mon, 21 Feb 2022 10:36:09 +0100 Subject: [PATCH 291/383] Add screenshot to GoCD plugin README Signed-off-by: Julio Zynger --- plugins/gocd/README.md | 2 ++ plugins/gocd/docs/gocd-plugin-screenshot.png | Bin 0 -> 56249 bytes 2 files changed, 2 insertions(+) create mode 100644 plugins/gocd/docs/gocd-plugin-screenshot.png diff --git a/plugins/gocd/README.md b/plugins/gocd/README.md index 105d93e830..d3d9c3adc8 100644 --- a/plugins/gocd/README.md +++ b/plugins/gocd/README.md @@ -4,6 +4,8 @@ Welcome to the GoCD plugin! - View recent GoCD Builds +![gocd-builds-card](./docs/gocd-plugin-screenshot.png) + ## Installation GoCD Plugin exposes an entity tab component named `EntityGoCdContent`. You can include it in the diff --git a/plugins/gocd/docs/gocd-plugin-screenshot.png b/plugins/gocd/docs/gocd-plugin-screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..8ddc786fa5605313223fdaa75bb93f74e5d0a741 GIT binary patch literal 56249 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 literal 0 HcmV?d00001 From b0f2c7d3a6b63adddeaf1fbffd781e56e5c97595 Mon Sep 17 00:00:00 2001 From: Johan Haals Date: Mon, 21 Feb 2022 10:03:35 +0100 Subject: [PATCH 292/383] chore: Rename file Signed-off-by: Johan Haals --- .../src/components/CatalogEntityPage/CatalogEntityPage.tsx | 2 +- .../{UseEntityFromUrl.ts => useEntityFromUrl.ts} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename plugins/catalog/src/components/CatalogEntityPage/{UseEntityFromUrl.ts => useEntityFromUrl.ts} (100%) diff --git a/plugins/catalog/src/components/CatalogEntityPage/CatalogEntityPage.tsx b/plugins/catalog/src/components/CatalogEntityPage/CatalogEntityPage.tsx index a7dedaf1d6..fe32e78959 100644 --- a/plugins/catalog/src/components/CatalogEntityPage/CatalogEntityPage.tsx +++ b/plugins/catalog/src/components/CatalogEntityPage/CatalogEntityPage.tsx @@ -17,7 +17,7 @@ import React from 'react'; import { Outlet } from 'react-router'; import { AsyncEntityProvider } from '@backstage/plugin-catalog-react'; -import { useEntityFromUrl } from './UseEntityFromUrl'; +import { useEntityFromUrl } from './useEntityFromUrl'; /** @public */ export function CatalogEntityPage() { diff --git a/plugins/catalog/src/components/CatalogEntityPage/UseEntityFromUrl.ts b/plugins/catalog/src/components/CatalogEntityPage/useEntityFromUrl.ts similarity index 100% rename from plugins/catalog/src/components/CatalogEntityPage/UseEntityFromUrl.ts rename to plugins/catalog/src/components/CatalogEntityPage/useEntityFromUrl.ts From 29f952c667e6e4376d852ac89272dec2157eeaff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Mon, 21 Feb 2022 11:02:28 +0100 Subject: [PATCH 293/383] forgot changeset for gocd change MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .changeset/smart-eagles-try.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/smart-eagles-try.md diff --git a/.changeset/smart-eagles-try.md b/.changeset/smart-eagles-try.md new file mode 100644 index 0000000000..656be66258 --- /dev/null +++ b/.changeset/smart-eagles-try.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-gocd': patch +--- + +Updated README From 81b6d0fabe1c61f6a3bfa0984c822e66e740edb4 Mon Sep 17 00:00:00 2001 From: Emma Indal Date: Mon, 21 Feb 2022 12:02:50 +0100 Subject: [PATCH 294/383] clean up api report Signed-off-by: Emma Indal --- plugins/techdocs-backend/api-report.md | 24 +++---------------- .../src/search/DefaultTechDocsCollator.ts | 10 ++++++++ .../techdocs-backend/src/service/router.ts | 23 ++++++++++++------ 3 files changed, 29 insertions(+), 28 deletions(-) diff --git a/plugins/techdocs-backend/api-report.md b/plugins/techdocs-backend/api-report.md index cefb7d937b..5d106cfafb 100644 --- a/plugins/techdocs-backend/api-report.md +++ b/plugins/techdocs-backend/api-report.md @@ -18,25 +18,17 @@ import { PublisherBase } from '@backstage/techdocs-common'; import { TechDocsDocument } from '@backstage/techdocs-common'; import { TokenManager } 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) +// @public export function createRouter(options: RouterOptions): Promise; -// Warning: (ae-missing-release-tag) "DefaultTechDocsCollator" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) +// @public export class DefaultTechDocsCollator implements DocumentCollator { - // @deprecated - constructor(options: TechDocsCollatorOptions); // (undocumented) protected applyArgsToFormat( format: string, args: Record, ): string; // (undocumented) - protected discovery: PluginEndpointDiscovery; - // (undocumented) execute(): Promise; // (undocumented) static fromConfig( @@ -44,15 +36,11 @@ export class DefaultTechDocsCollator implements DocumentCollator { options: TechDocsCollatorOptions, ): DefaultTechDocsCollator; // (undocumented) - protected locationTemplate: string; - // (undocumented) readonly type: string; // (undocumented) readonly visibilityPermission: Permission; } -// Warning: (ae-missing-release-tag) "OutOfTheBoxDeploymentOptions" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public export type OutOfTheBoxDeploymentOptions = { preparers: PreparerBuilder; @@ -65,8 +53,6 @@ export type OutOfTheBoxDeploymentOptions = { cache: PluginCacheManager; }; -// Warning: (ae-missing-release-tag) "RecommendedDeploymentOptions" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public export type RecommendedDeploymentOptions = { publisher: PublisherBase; @@ -76,16 +62,12 @@ export type RecommendedDeploymentOptions = { cache: PluginCacheManager; }; -// Warning: (ae-missing-release-tag) "RouterOptions" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public export type RouterOptions = | RecommendedDeploymentOptions | OutOfTheBoxDeploymentOptions; -// Warning: (ae-missing-release-tag) "TechDocsCollatorOptions" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) +// @public export type TechDocsCollatorOptions = { discovery: PluginEndpointDiscovery; logger: Logger_2; diff --git a/plugins/techdocs-backend/src/search/DefaultTechDocsCollator.ts b/plugins/techdocs-backend/src/search/DefaultTechDocsCollator.ts index 987e8c6b15..8b459a055a 100644 --- a/plugins/techdocs-backend/src/search/DefaultTechDocsCollator.ts +++ b/plugins/techdocs-backend/src/search/DefaultTechDocsCollator.ts @@ -39,6 +39,11 @@ interface MkSearchIndexDoc { location: string; } +/** + * Options to configure the TechDocs collator + * + * @public + */ export type TechDocsCollatorOptions = { discovery: PluginEndpointDiscovery; logger: Logger; @@ -55,6 +60,11 @@ type EntityInfo = { kind: string; }; +/** + * A search collator responsible for gather and transform TechDocs document to index. + * + * @public + */ export class DefaultTechDocsCollator implements DocumentCollator { protected discovery: PluginEndpointDiscovery; protected locationTemplate: string; diff --git a/plugins/techdocs-backend/src/service/router.ts b/plugins/techdocs-backend/src/service/router.ts index 141ce93f79..5877dda099 100644 --- a/plugins/techdocs-backend/src/service/router.ts +++ b/plugins/techdocs-backend/src/service/router.ts @@ -37,8 +37,10 @@ import { createCacheMiddleware, TechDocsCache } from '../cache'; import { CachedEntityLoader } from './CachedEntityLoader'; /** - * All of the required dependencies for running TechDocs in the "out-of-the-box" + * Required dependencies for running TechDocs in the "out-of-the-box" * deployment configuration (prepare/generate/publish all in the Backend). + * + * @public */ export type OutOfTheBoxDeploymentOptions = { preparers: PreparerBuilder; @@ -54,6 +56,8 @@ export type OutOfTheBoxDeploymentOptions = { /** * Required dependencies for running TechDocs in the "recommended" deployment * configuration (prepare/generate handled externally in CI/CD). + * + * @public */ export type RecommendedDeploymentOptions = { publisher: PublisherBase; @@ -65,6 +69,8 @@ export type RecommendedDeploymentOptions = { /** * One of the two deployment configurations must be provided. + * + * @public */ export type RouterOptions = | RecommendedDeploymentOptions @@ -73,6 +79,8 @@ export type RouterOptions = /** * Typeguard to help createRouter() understand when we are in a "recommended" * deployment vs. when we are in an out-of-the-box deployment configuration. + * + * * @public */ function isOutOfTheBoxOption( opt: RouterOptions, @@ -80,6 +88,11 @@ function isOutOfTheBoxOption( return (opt as OutOfTheBoxDeploymentOptions).preparers !== undefined; } +/** + * Creates a techdocs router. + * + * @public + */ export async function createRouter( options: RouterOptions, ): Promise { @@ -323,12 +336,8 @@ export function createEventStream( } /** - * Create a HTTP response. This is used for the legacy non-event-stream implementation of the sync endpoint. - * - * @param res - the response to write the event-stream to - * @returns A tuple of callbacks to emit messages. A call to 'error' or 'finish' - * will close the event-stream. - */ + * @deprecated use event-stream implementation of the sync endpoint + * */ export function createHttpResponse( res: Response, ): DocsSynchronizerSyncOpts { From e60175e87a134b710f713c0064bad04b67a5c1dc Mon Sep 17 00:00:00 2001 From: Emma Indal Date: Mon, 21 Feb 2022 12:06:43 +0100 Subject: [PATCH 295/383] clean up deprecated code Signed-off-by: Emma Indal --- .../search/DefaultTechDocsCollator.test.ts | 7 ++- .../src/search/DefaultTechDocsCollator.ts | 61 +++++++++---------- 2 files changed, 34 insertions(+), 34 deletions(-) diff --git a/plugins/techdocs-backend/src/search/DefaultTechDocsCollator.test.ts b/plugins/techdocs-backend/src/search/DefaultTechDocsCollator.test.ts index e81fc1e7a9..d9f75767a7 100644 --- a/plugins/techdocs-backend/src/search/DefaultTechDocsCollator.test.ts +++ b/plugins/techdocs-backend/src/search/DefaultTechDocsCollator.test.ts @@ -208,8 +208,13 @@ describe('DefaultTechDocsCollator', () => { }); it('maps a returned entity with a custom locationTemplate', async () => { + const mockConfig = new ConfigReader({ + techdocs: { + legacyUseCaseSensitiveTripletPaths: true, + }, + }); // Provide an alternate location template. - collator = new DefaultTechDocsCollator({ + collator = DefaultTechDocsCollator.fromConfig(mockConfig, { discovery: mockDiscoveryApi, tokenManager: mockTokenManager, locationTemplate: '/software/:name', diff --git a/plugins/techdocs-backend/src/search/DefaultTechDocsCollator.ts b/plugins/techdocs-backend/src/search/DefaultTechDocsCollator.ts index 8b459a055a..f32472b03b 100644 --- a/plugins/techdocs-backend/src/search/DefaultTechDocsCollator.ts +++ b/plugins/techdocs-backend/src/search/DefaultTechDocsCollator.ts @@ -66,45 +66,37 @@ type EntityInfo = { * @public */ export class DefaultTechDocsCollator implements DocumentCollator { - protected discovery: PluginEndpointDiscovery; - protected locationTemplate: string; - private readonly logger: Logger; - private readonly catalogClient: CatalogApi; - private readonly tokenManager: TokenManager; - private readonly parallelismLimit: number; - private readonly legacyPathCasing: boolean; public readonly type: string = 'techdocs'; public readonly visibilityPermission = catalogEntityReadPermission; - /** - * @deprecated use static fromConfig method instead. - */ - constructor(options: TechDocsCollatorOptions) { - this.discovery = options.discovery; - this.locationTemplate = - options.locationTemplate || '/docs/:namespace/:kind/:name/:path'; - this.logger = options.logger; - this.catalogClient = - options.catalogClient || - new CatalogClient({ discoveryApi: options.discovery }); - this.parallelismLimit = options.parallelismLimit ?? 10; - this.legacyPathCasing = options.legacyPathCasing ?? false; - this.tokenManager = options.tokenManager; - } + private constructor( + private readonly legacyPathCasing: boolean, + private readonly options: TechDocsCollatorOptions, + ) {} static fromConfig(config: Config, options: TechDocsCollatorOptions) { const legacyPathCasing = config.getOptionalBoolean( 'techdocs.legacyUseCaseSensitiveTripletPaths', ) || false; - return new DefaultTechDocsCollator({ ...options, legacyPathCasing }); + return new DefaultTechDocsCollator(legacyPathCasing, options); } async execute() { - const limit = pLimit(this.parallelismLimit); - const techDocsBaseUrl = await this.discovery.getBaseUrl('techdocs'); - const { token } = await this.tokenManager.getToken(); - const entities = await this.catalogClient.getEntities( + const { + parallelismLimit, + discovery, + tokenManager, + catalogClient, + locationTemplate, + logger, + } = this.options; + const limit = pLimit(parallelismLimit ?? 10); + const techDocsBaseUrl = await discovery.getBaseUrl('techdocs'); + const { token } = await tokenManager.getToken(); + const entities = await ( + catalogClient ?? new CatalogClient({ discoveryApi: discovery }) + ).getEntities( { fields: [ 'kind', @@ -125,7 +117,7 @@ export class DefaultTechDocsCollator implements DocumentCollator { .map((entity: Entity) => limit(async (): Promise => { const entityInfo = DefaultTechDocsCollator.handleEntityInfoCasing( - this.legacyPathCasing, + this.legacyPathCasing ?? false, { kind: entity.kind, namespace: entity.metadata.namespace || 'default', @@ -150,10 +142,13 @@ export class DefaultTechDocsCollator implements DocumentCollator { return searchIndex.docs.map((doc: MkSearchIndexDoc) => ({ title: unescape(doc.title), text: unescape(doc.text || ''), - location: this.applyArgsToFormat(this.locationTemplate, { - ...entityInfo, - path: doc.location, - }), + location: this.applyArgsToFormat( + locationTemplate || '/docs/:namespace/:kind/:name/:path', + { + ...entityInfo, + path: doc.location, + }, + ), path: doc.location, ...entityInfo, entityTitle: entity.metadata.title, @@ -167,7 +162,7 @@ export class DefaultTechDocsCollator implements DocumentCollator { }, })); } catch (e) { - this.logger.debug( + logger.debug( `Failed to retrieve tech docs search index for entity ${entityInfo.namespace}/${entityInfo.kind}/${entityInfo.name}`, e, ); From a925ba8385ab0764a97e00fd04f36dc1ee852d5f Mon Sep 17 00:00:00 2001 From: Emma Indal Date: Mon, 21 Feb 2022 13:23:50 +0100 Subject: [PATCH 296/383] add changeset Signed-off-by: Emma Indal --- .changeset/techdocs-nervous-tables-invent.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 .changeset/techdocs-nervous-tables-invent.md diff --git a/.changeset/techdocs-nervous-tables-invent.md b/.changeset/techdocs-nervous-tables-invent.md new file mode 100644 index 0000000000..577de4994f --- /dev/null +++ b/.changeset/techdocs-nervous-tables-invent.md @@ -0,0 +1,19 @@ +--- +'@backstage/plugin-techdocs-backend': minor +--- + +BREAKING: constructor based initialization of DefaultTechDocsCollator now deprecated. Use static fromConfig method instead. + +```diff +indexBuilder.addCollator({ + defaultRefreshIntervalSeconds: 600, +- collator: new DefaultTechDocsCollator({ ++ collator: DefaultTechDocsCollator.fromConfig(config, { + discovery, + logger, + tokenManager, + }), +}); +``` + +Note: in an upcoming release, TechDocs backend's /sync/:namespace/:kind/:name endpoint will only respond to text/event-stream-based requests. Update any custom code at your organization accordingly. From 68abf6e837d8fd0792a57c1cbba56bc0605b511a Mon Sep 17 00:00:00 2001 From: Emma Indal Date: Mon, 21 Feb 2022 13:24:56 +0100 Subject: [PATCH 297/383] Update plugins/techdocs-backend/src/search/DefaultTechDocsCollator.ts Signed-off-by: Emma Indal Co-authored-by: Eric Peterson --- plugins/techdocs-backend/src/search/DefaultTechDocsCollator.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/techdocs-backend/src/search/DefaultTechDocsCollator.ts b/plugins/techdocs-backend/src/search/DefaultTechDocsCollator.ts index f32472b03b..86b70379ad 100644 --- a/plugins/techdocs-backend/src/search/DefaultTechDocsCollator.ts +++ b/plugins/techdocs-backend/src/search/DefaultTechDocsCollator.ts @@ -61,7 +61,7 @@ type EntityInfo = { }; /** - * A search collator responsible for gather and transform TechDocs document to index. + * A search collator responsible for gathering and transforming TechDocs documents. * * @public */ From b776ce5aab49f1e40adf812f5dd69a988c0a7ea4 Mon Sep 17 00:00:00 2001 From: Johan Haals Date: Mon, 21 Feb 2022 11:04:27 +0100 Subject: [PATCH 298/383] catalog-react: Rename useEntityListProvider hook to useEntityList Signed-off-by: Johan Haals --- .changeset/many-moons-kneel.md | 5 ++++ .changeset/mean-cobras-check.md | 7 ++++++ .../software-catalog/catalog-customization.md | 4 ++-- plugins/catalog-react/api-report.md | 5 ++++ .../EntityKindPicker/EntityKindPicker.tsx | 4 ++-- .../EntityLifecyclePicker.tsx | 4 ++-- .../EntityOwnerPicker/EntityOwnerPicker.tsx | 4 ++-- .../EntitySearchBar/EntitySearchBar.tsx | 4 ++-- .../EntityTagPicker/EntityTagPicker.tsx | 4 ++-- .../UserListPicker/UserListPicker.tsx | 4 ++-- plugins/catalog-react/src/hooks/index.ts | 1 + .../src/hooks/useEntityListProvider.test.tsx | 24 +++++++------------ .../src/hooks/useEntityListProvider.tsx | 18 +++++++++++--- .../src/hooks/useEntityTypeFilter.tsx | 6 ++--- plugins/catalog-react/src/types.ts | 2 +- .../CatalogKindHeader/CatalogKindHeader.tsx | 4 ++-- .../components/CatalogTable/CatalogTable.tsx | 4 ++-- .../components/TemplateList/TemplateList.tsx | 4 ++-- .../home/components/EntityListDocsGrid.tsx | 4 ++-- .../home/components/EntityListDocsTable.tsx | 4 ++-- .../src/home/components/TechDocsPicker.tsx | 4 ++-- 21 files changed, 72 insertions(+), 48 deletions(-) create mode 100644 .changeset/many-moons-kneel.md create mode 100644 .changeset/mean-cobras-check.md diff --git a/.changeset/many-moons-kneel.md b/.changeset/many-moons-kneel.md new file mode 100644 index 0000000000..546879893c --- /dev/null +++ b/.changeset/many-moons-kneel.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-react': patch +--- + +Deprecated the `useEntityListProvider` hook which is now renamed to `useEntityList` diff --git a/.changeset/mean-cobras-check.md b/.changeset/mean-cobras-check.md new file mode 100644 index 0000000000..1debeaf2e8 --- /dev/null +++ b/.changeset/mean-cobras-check.md @@ -0,0 +1,7 @@ +--- +'@backstage/plugin-catalog': patch +'@backstage/plugin-scaffolder': patch +'@backstage/plugin-techdocs': patch +--- + +Replaced use of deprecated `useEntityListProvider` hook with `useEntityList`. diff --git a/docs/features/software-catalog/catalog-customization.md b/docs/features/software-catalog/catalog-customization.md index 821f39ff6e..80c9458aee 100644 --- a/docs/features/software-catalog/catalog-customization.md +++ b/docs/features/software-catalog/catalog-customization.md @@ -93,7 +93,7 @@ export type CustomFilters = DefaultEntityFilters & { To control this filter, we can create a React component that shows checkboxes for the security tiers. This component will make use of the -`useEntityListProvider` hook, which accepts this extended filter type as a +`useEntityList` hook, which accepts this extended filter type as a [generic](https://www.typescriptlang.org/docs/handbook/2/generics.html) parameter: @@ -103,7 +103,7 @@ export const EntitySecurityTierPicker = () => { const { filters: { securityTiers }, updateFilters, - } = useEntityListProvider(); + } = useEntityList(); // Toggles the value, depending on whether it's already selected function onChange(value: string) { diff --git a/plugins/catalog-react/api-report.md b/plugins/catalog-react/api-report.md index 54f8391437..0a7bbbfc9e 100644 --- a/plugins/catalog-react/api-report.md +++ b/plugins/catalog-react/api-report.md @@ -559,6 +559,11 @@ export function useEntityKinds(): { }; // @public +export function useEntityList< + EntityFilters extends DefaultEntityFilters = DefaultEntityFilters, +>(): EntityListContextProps; + +// @public @deprecated export function useEntityListProvider< EntityFilters extends DefaultEntityFilters = DefaultEntityFilters, >(): EntityListContextProps; diff --git a/plugins/catalog-react/src/components/EntityKindPicker/EntityKindPicker.tsx b/plugins/catalog-react/src/components/EntityKindPicker/EntityKindPicker.tsx index 17d28aad9f..1891f83df7 100644 --- a/plugins/catalog-react/src/components/EntityKindPicker/EntityKindPicker.tsx +++ b/plugins/catalog-react/src/components/EntityKindPicker/EntityKindPicker.tsx @@ -16,7 +16,7 @@ import React, { useEffect, useState } from 'react'; import { Alert } from '@material-ui/lab'; -import { useEntityListProvider } from '../../hooks'; +import { useEntityList } from '../../hooks'; import { EntityKindFilter } from '../../filters'; /** @@ -33,7 +33,7 @@ export interface EntityKindPickerProps { export const EntityKindPicker = (props: EntityKindPickerProps) => { const { initialFilter, hidden } = props; - const { updateFilters, queryParameters } = useEntityListProvider(); + const { updateFilters, queryParameters } = useEntityList(); const [selectedKind] = useState( [queryParameters.kind].flat()[0] ?? initialFilter, ); diff --git a/plugins/catalog-react/src/components/EntityLifecyclePicker/EntityLifecyclePicker.tsx b/plugins/catalog-react/src/components/EntityLifecyclePicker/EntityLifecyclePicker.tsx index 77691ab7c5..a05914fd6d 100644 --- a/plugins/catalog-react/src/components/EntityLifecyclePicker/EntityLifecyclePicker.tsx +++ b/plugins/catalog-react/src/components/EntityLifecyclePicker/EntityLifecyclePicker.tsx @@ -28,7 +28,7 @@ import CheckBoxOutlineBlankIcon from '@material-ui/icons/CheckBoxOutlineBlank'; import ExpandMoreIcon from '@material-ui/icons/ExpandMore'; import { Autocomplete } from '@material-ui/lab'; import React, { useEffect, useMemo, useState } from 'react'; -import { useEntityListProvider } from '../../hooks/useEntityListProvider'; +import { useEntityList } from '../../hooks/useEntityListProvider'; import { EntityLifecycleFilter } from '../../filters'; /** @public */ @@ -50,7 +50,7 @@ const checkedIcon = ; export const EntityLifecyclePicker = () => { const classes = useStyles(); const { updateFilters, backendEntities, filters, queryParameters } = - useEntityListProvider(); + useEntityList(); const queryParamLifecycles = useMemo( () => [queryParameters.lifecycles].flat().filter(Boolean) as string[], diff --git a/plugins/catalog-react/src/components/EntityOwnerPicker/EntityOwnerPicker.tsx b/plugins/catalog-react/src/components/EntityOwnerPicker/EntityOwnerPicker.tsx index acb5ee9279..d025d08012 100644 --- a/plugins/catalog-react/src/components/EntityOwnerPicker/EntityOwnerPicker.tsx +++ b/plugins/catalog-react/src/components/EntityOwnerPicker/EntityOwnerPicker.tsx @@ -28,7 +28,7 @@ import CheckBoxOutlineBlankIcon from '@material-ui/icons/CheckBoxOutlineBlank'; import ExpandMoreIcon from '@material-ui/icons/ExpandMore'; import { Autocomplete } from '@material-ui/lab'; import React, { useEffect, useMemo, useState } from 'react'; -import { useEntityListProvider } from '../../hooks/useEntityListProvider'; +import { useEntityList } from '../../hooks/useEntityListProvider'; import { EntityOwnerFilter } from '../../filters'; import { getEntityRelations } from '../../utils'; import { formatEntityRefTitle } from '../EntityRefLink'; @@ -52,7 +52,7 @@ const checkedIcon = ; export const EntityOwnerPicker = () => { const classes = useStyles(); const { updateFilters, backendEntities, filters, queryParameters } = - useEntityListProvider(); + useEntityList(); const queryParamOwners = useMemo( () => [queryParameters.owners].flat().filter(Boolean) as string[], diff --git a/plugins/catalog-react/src/components/EntitySearchBar/EntitySearchBar.tsx b/plugins/catalog-react/src/components/EntitySearchBar/EntitySearchBar.tsx index f13fb1621f..fdb07658d0 100644 --- a/plugins/catalog-react/src/components/EntitySearchBar/EntitySearchBar.tsx +++ b/plugins/catalog-react/src/components/EntitySearchBar/EntitySearchBar.tsx @@ -26,7 +26,7 @@ import Clear from '@material-ui/icons/Clear'; import Search from '@material-ui/icons/Search'; import React, { useState } from 'react'; import useDebounce from 'react-use/lib/useDebounce'; -import { useEntityListProvider } from '../../hooks/useEntityListProvider'; +import { useEntityList } from '../../hooks/useEntityListProvider'; import { EntityTextFilter } from '../../filters'; /** @public */ @@ -52,7 +52,7 @@ const useStyles = makeStyles( export const EntitySearchBar = () => { const classes = useStyles(); - const { filters, updateFilters } = useEntityListProvider(); + const { filters, updateFilters } = useEntityList(); const [search, setSearch] = useState(filters.text?.value ?? ''); useDebounce( diff --git a/plugins/catalog-react/src/components/EntityTagPicker/EntityTagPicker.tsx b/plugins/catalog-react/src/components/EntityTagPicker/EntityTagPicker.tsx index a91389a653..5b5e0e7ab9 100644 --- a/plugins/catalog-react/src/components/EntityTagPicker/EntityTagPicker.tsx +++ b/plugins/catalog-react/src/components/EntityTagPicker/EntityTagPicker.tsx @@ -28,7 +28,7 @@ import CheckBoxOutlineBlankIcon from '@material-ui/icons/CheckBoxOutlineBlank'; import ExpandMoreIcon from '@material-ui/icons/ExpandMore'; import { Autocomplete } from '@material-ui/lab'; import React, { useEffect, useMemo, useState } from 'react'; -import { useEntityListProvider } from '../../hooks/useEntityListProvider'; +import { useEntityList } from '../../hooks/useEntityListProvider'; import { EntityTagFilter } from '../../filters'; /** @public */ @@ -50,7 +50,7 @@ const checkedIcon = ; export const EntityTagPicker = () => { const classes = useStyles(); const { updateFilters, backendEntities, filters, queryParameters } = - useEntityListProvider(); + useEntityList(); const queryParamTags = useMemo( () => [queryParameters.tags].flat().filter(Boolean) as string[], diff --git a/plugins/catalog-react/src/components/UserListPicker/UserListPicker.tsx b/plugins/catalog-react/src/components/UserListPicker/UserListPicker.tsx index 3019ae32eb..d281bb31a8 100644 --- a/plugins/catalog-react/src/components/UserListPicker/UserListPicker.tsx +++ b/plugins/catalog-react/src/components/UserListPicker/UserListPicker.tsx @@ -36,7 +36,7 @@ import { compact } from 'lodash'; import React, { Fragment, useEffect, useMemo, useState } from 'react'; import { UserListFilter } from '../../filters'; import { - useEntityListProvider, + useEntityList, useStarredEntities, useEntityOwnership, } from '../../hooks'; @@ -136,7 +136,7 @@ export const UserListPicker = (props: UserListPickerProps) => { backendEntities, queryParameters, loading: loadingBackendEntities, - } = useEntityListProvider(); + } = useEntityList(); // Remove group items that aren't in availableFilters and exclude // any now-empty groups. diff --git a/plugins/catalog-react/src/hooks/index.ts b/plugins/catalog-react/src/hooks/index.ts index ba6a1c7341..170ea37394 100644 --- a/plugins/catalog-react/src/hooks/index.ts +++ b/plugins/catalog-react/src/hooks/index.ts @@ -30,6 +30,7 @@ export { EntityListContext, EntityListProvider, useEntityListProvider, + useEntityList, } from './useEntityListProvider'; export type { DefaultEntityFilters, diff --git a/plugins/catalog-react/src/hooks/useEntityListProvider.test.tsx b/plugins/catalog-react/src/hooks/useEntityListProvider.test.tsx index 548561108d..c0a90fa834 100644 --- a/plugins/catalog-react/src/hooks/useEntityListProvider.test.tsx +++ b/plugins/catalog-react/src/hooks/useEntityListProvider.test.tsx @@ -33,10 +33,7 @@ import { DefaultStarredEntitiesApi, starredEntitiesApiRef } from '../apis'; import { EntityKindPicker, UserListPicker } from '../components'; import { EntityKindFilter, EntityTypeFilter, UserListFilter } from '../filters'; import { UserListFilterKind } from '../types'; -import { - EntityListProvider, - useEntityListProvider, -} from './useEntityListProvider'; +import { EntityListProvider, useEntityList } from './useEntityListProvider'; const entities: Entity[] = [ { @@ -129,12 +126,9 @@ describe('', () => { }); it('resolves backend filters', async () => { - const { result, waitForValueToChange } = renderHook( - () => useEntityListProvider(), - { - wrapper, - }, - ); + const { result, waitForValueToChange } = renderHook(() => useEntityList(), { + wrapper, + }); await waitForValueToChange(() => result.current.backendEntities); expect(result.current.backendEntities.length).toBe(2); expect(mockCatalogApi.getEntities).toHaveBeenCalledWith({ @@ -143,7 +137,7 @@ describe('', () => { }); it('resolves frontend filters', async () => { - const { result, waitFor } = renderHook(() => useEntityListProvider(), { + const { result, waitFor } = renderHook(() => useEntityList(), { wrapper, initialProps: { userFilter: 'all', @@ -173,7 +167,7 @@ describe('', () => { const query = qs.stringify({ filters: { kind: 'component', type: 'service' }, }); - const { result, waitFor } = renderHook(() => useEntityListProvider(), { + const { result, waitFor } = renderHook(() => useEntityList(), { wrapper, initialProps: { location: `/catalog?${query}`, @@ -187,7 +181,7 @@ describe('', () => { }); it('does not fetch when only frontend filters change', async () => { - const { result, waitFor } = renderHook(() => useEntityListProvider(), { + const { result, waitFor } = renderHook(() => useEntityList(), { wrapper, }); @@ -214,7 +208,7 @@ describe('', () => { it('debounces multiple filter changes', async () => { const { result, waitForNextUpdate, waitForValueToChange } = renderHook( - () => useEntityListProvider(), + () => useEntityList(), { wrapper, }, @@ -233,7 +227,7 @@ describe('', () => { it('returns an error on catalogApi failure', async () => { const { result, waitForValueToChange, waitFor } = renderHook( - () => useEntityListProvider(), + () => useEntityList(), { wrapper, }, diff --git a/plugins/catalog-react/src/hooks/useEntityListProvider.tsx b/plugins/catalog-react/src/hooks/useEntityListProvider.tsx index d6c4e3749a..f448e41b82 100644 --- a/plugins/catalog-react/src/hooks/useEntityListProvider.tsx +++ b/plugins/catalog-react/src/hooks/useEntityListProvider.tsx @@ -252,14 +252,26 @@ export const EntityListProvider = ({ /** * Hook for interacting with the entity list context provided by the {@link EntityListProvider}. * @public + * @deprecated use {@link useEntityList} instead. */ export function useEntityListProvider< EntityFilters extends DefaultEntityFilters = DefaultEntityFilters, >(): EntityListContextProps { const context = useContext(EntityListContext); if (!context) - throw new Error( - 'useEntityListProvider must be used within EntityListProvider', - ); + throw new Error('useEntityList must be used within EntityListProvider'); + return context; +} + +/** + * Hook for interacting with the entity list context provided by the {@link EntityListProvider}. + * @public + */ +export function useEntityList< + EntityFilters extends DefaultEntityFilters = DefaultEntityFilters, +>(): EntityListContextProps { + const context = useContext(EntityListContext); + if (!context) + throw new Error('useEntityList must be used within EntityListProvider'); return context; } diff --git a/plugins/catalog-react/src/hooks/useEntityTypeFilter.tsx b/plugins/catalog-react/src/hooks/useEntityTypeFilter.tsx index cfe821b4f7..4fd3fd43e8 100644 --- a/plugins/catalog-react/src/hooks/useEntityTypeFilter.tsx +++ b/plugins/catalog-react/src/hooks/useEntityTypeFilter.tsx @@ -20,7 +20,7 @@ import isEqual from 'lodash/isEqual'; import sortBy from 'lodash/sortBy'; import { useApi } from '@backstage/core-plugin-api'; import { catalogApiRef } from '../api'; -import { useEntityListProvider } from './useEntityListProvider'; +import { useEntityList } from './useEntityListProvider'; import { EntityTypeFilter } from '../filters'; /** @public */ @@ -33,7 +33,7 @@ export type EntityTypeReturn = { }; /** - * A hook built on top of `useEntityListProvider` for enabling selection of valid `spec.type` values + * A hook built on top of `useEntityList` for enabling selection of valid `spec.type` values * based on the selected EntityKindFilter. * @public */ @@ -43,7 +43,7 @@ export function useEntityTypeFilter(): EntityTypeReturn { filters: { kind: kindFilter, type: typeFilter }, queryParameters, updateFilters, - } = useEntityListProvider(); + } = useEntityList(); const queryParamTypes = useMemo( () => [queryParameters.type].flat().filter(Boolean) as string[], diff --git a/plugins/catalog-react/src/types.ts b/plugins/catalog-react/src/types.ts index 440bab2b22..41c7d75f0d 100644 --- a/plugins/catalog-react/src/types.ts +++ b/plugins/catalog-react/src/types.ts @@ -38,7 +38,7 @@ export type EntityFilter = { /** * Serialize the filter value to a string for query params. The UI component responsible for - * handling this filter should retrieve this from useEntityListProvider.queryParameters. The + * handling this filter should retrieve this from useEntityList.queryParameters. The * value restored should be in the precedence: queryParameters `>` initialValue prop `>` default. */ toQueryValue?: () => string | string[]; diff --git a/plugins/catalog/src/components/CatalogKindHeader/CatalogKindHeader.tsx b/plugins/catalog/src/components/CatalogKindHeader/CatalogKindHeader.tsx index 3f5588853c..ed54f1fa84 100644 --- a/plugins/catalog/src/components/CatalogKindHeader/CatalogKindHeader.tsx +++ b/plugins/catalog/src/components/CatalogKindHeader/CatalogKindHeader.tsx @@ -27,7 +27,7 @@ import { import { catalogApiRef, EntityKindFilter, - useEntityListProvider, + useEntityList, } from '@backstage/plugin-catalog-react'; import useAsync from 'react-use/lib/useAsync'; import { useApi } from '@backstage/core-plugin-api'; @@ -59,7 +59,7 @@ export function CatalogKindHeader(props: CatalogKindHeaderProps) { .getEntityFacets({ facets: ['kind'] }) .then(response => response.facets.kind?.map(f => f.value).sort() || []); }); - const { updateFilters, queryParameters } = useEntityListProvider(); + const { updateFilters, queryParameters } = useEntityList(); const [selectedKind, setSelectedKind] = useState( ([queryParameters.kind].flat()[0] ?? initialFilter).toLocaleLowerCase( diff --git a/plugins/catalog/src/components/CatalogTable/CatalogTable.tsx b/plugins/catalog/src/components/CatalogTable/CatalogTable.tsx index ec4868c20a..c1e6988016 100644 --- a/plugins/catalog/src/components/CatalogTable/CatalogTable.tsx +++ b/plugins/catalog/src/components/CatalogTable/CatalogTable.tsx @@ -21,7 +21,7 @@ import { getEntityMetadataEditUrl, getEntityMetadataViewUrl, getEntityRelations, - useEntityListProvider, + useEntityList, useStarredEntities, } from '@backstage/plugin-catalog-react'; import Edit from '@material-ui/icons/Edit'; @@ -52,7 +52,7 @@ export interface CatalogTableProps { export const CatalogTable = (props: CatalogTableProps) => { const { columns, actions } = props; const { isStarredEntity, toggleStarredEntity } = useStarredEntities(); - const { loading, error, entities, filters } = useEntityListProvider(); + const { loading, error, entities, filters } = useEntityList(); const defaultColumns: TableColumn[] = useMemo( () => [ diff --git a/plugins/scaffolder/src/components/TemplateList/TemplateList.tsx b/plugins/scaffolder/src/components/TemplateList/TemplateList.tsx index a7f0b49132..c95a8237eb 100644 --- a/plugins/scaffolder/src/components/TemplateList/TemplateList.tsx +++ b/plugins/scaffolder/src/components/TemplateList/TemplateList.tsx @@ -25,7 +25,7 @@ import { Progress, WarningPanel, } from '@backstage/core-components'; -import { useEntityListProvider } from '@backstage/plugin-catalog-react'; +import { useEntityList } from '@backstage/plugin-catalog-react'; import { Typography } from '@material-ui/core'; import { TemplateCard } from '../TemplateCard'; @@ -44,7 +44,7 @@ export const TemplateList = ({ TemplateCardComponent, group, }: TemplateListProps) => { - const { loading, error, entities } = useEntityListProvider(); + const { loading, error, entities } = useEntityList(); const Card = TemplateCardComponent || TemplateCard; const maybeFilteredEntities = group ? entities.filter(e => group.filter(e)) diff --git a/plugins/techdocs/src/home/components/EntityListDocsGrid.tsx b/plugins/techdocs/src/home/components/EntityListDocsGrid.tsx index 8c04a29f66..11fb71961c 100644 --- a/plugins/techdocs/src/home/components/EntityListDocsGrid.tsx +++ b/plugins/techdocs/src/home/components/EntityListDocsGrid.tsx @@ -18,12 +18,12 @@ import { Progress, WarningPanel, } from '@backstage/core-components'; -import { useEntityListProvider } from '@backstage/plugin-catalog-react'; +import { useEntityList } from '@backstage/plugin-catalog-react'; import React from 'react'; import { DocsCardGrid } from './DocsCardGrid'; export const EntityListDocsGrid = () => { - const { loading, error, entities } = useEntityListProvider(); + const { loading, error, entities } = useEntityList(); if (error) { return ( diff --git a/plugins/techdocs/src/home/components/EntityListDocsTable.tsx b/plugins/techdocs/src/home/components/EntityListDocsTable.tsx index 4d136591ff..fa99622885 100644 --- a/plugins/techdocs/src/home/components/EntityListDocsTable.tsx +++ b/plugins/techdocs/src/home/components/EntityListDocsTable.tsx @@ -24,7 +24,7 @@ import { WarningPanel, } from '@backstage/core-components'; import { - useEntityListProvider, + useEntityList, useStarredEntities, } from '@backstage/plugin-catalog-react'; import { DocsTable } from './DocsTable'; @@ -39,7 +39,7 @@ export const EntityListDocsTable = ({ columns?: TableColumn[]; actions?: TableProps['actions']; }) => { - const { loading, error, entities, filters } = useEntityListProvider(); + const { loading, error, entities, filters } = useEntityList(); const { isStarredEntity, toggleStarredEntity } = useStarredEntities(); const [, copyToClipboard] = useCopyToClipboard(); diff --git a/plugins/techdocs/src/home/components/TechDocsPicker.tsx b/plugins/techdocs/src/home/components/TechDocsPicker.tsx index 9ed21da368..ce79b9a4e9 100644 --- a/plugins/techdocs/src/home/components/TechDocsPicker.tsx +++ b/plugins/techdocs/src/home/components/TechDocsPicker.tsx @@ -19,7 +19,7 @@ import { CATALOG_FILTER_EXISTS, DefaultEntityFilters, EntityFilter, - useEntityListProvider, + useEntityList, } from '@backstage/plugin-catalog-react'; class TechDocsFilter implements EntityFilter { @@ -35,7 +35,7 @@ type CustomFilters = DefaultEntityFilters & { }; export const TechDocsPicker = () => { - const { updateFilters } = useEntityListProvider(); + const { updateFilters } = useEntityList(); useEffect(() => { updateFilters({ From 61ff215e087598ccf9ad771acf832a0229ca3680 Mon Sep 17 00:00:00 2001 From: Emma Indal Date: Mon, 21 Feb 2022 14:27:10 +0100 Subject: [PATCH 299/383] add changeset Signed-off-by: Emma Indal --- .changeset/techdocs-fifty-plants-remain.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 .changeset/techdocs-fifty-plants-remain.md diff --git a/.changeset/techdocs-fifty-plants-remain.md b/.changeset/techdocs-fifty-plants-remain.md new file mode 100644 index 0000000000..99ea62b50b --- /dev/null +++ b/.changeset/techdocs-fifty-plants-remain.md @@ -0,0 +1,7 @@ +--- +'@techdocs/cli': patch +--- + +- Adds `cypress` and `cypress-plugin-snapshots` as dependencies for integration and visual regression tests. +- Updates README documentation with instructions for how to run tests. +- Clarifies output text for prepack script. From 6d994fd9dae0d1bba8648c82176715f566c1b6b9 Mon Sep 17 00:00:00 2001 From: Johan Haals Date: Mon, 21 Feb 2022 14:55:34 +0100 Subject: [PATCH 300/383] catalog-backend: Cleanup API report Signed-off-by: Johan Haals --- .changeset/late-dots-compare.md | 5 + plugins/catalog-backend/api-report.md | 178 ++---------------- plugins/catalog-backend/src/catalog/types.ts | 6 + .../AnnotateLocationEntityProcessor.ts | 11 +- .../AnnotateScmSlugEntityProcessor.ts | 1 + .../processors/AwsS3DiscoveryProcessor.ts | 1 + .../AzureDevOpsDiscoveryProcessor.ts | 2 + .../processors/BitbucketDiscoveryProcessor.ts | 1 + .../processors/BuiltinKindsEntityProcessor.ts | 1 + .../processors/CodeOwnersProcessor.ts | 1 + .../processors/FileReaderProcessor.ts | 1 + .../processors/GitLabDiscoveryProcessor.ts | 1 + .../processors/GithubDiscoveryProcessor.ts | 2 + .../processors/GithubOrgReaderProcessor.ts | 1 + .../processors/LocationEntityProcessor.ts | 2 + .../processors/PlaceholderProcessor.ts | 7 + .../processors/StaticLocationProcessor.ts | 1 + .../processors/UrlReaderProcessor.ts | 13 +- .../bitbucket/BitbucketRepositoryParser.ts | 1 + .../src/ingestion/processors/github/config.ts | 1 + .../src/ingestion/processors/index.ts | 1 + .../src/ingestion/processors/results.ts | 6 + .../src/ingestion/processors/types.ts | 10 + .../src/ingestion/processors/util/parse.ts | 1 + .../providers/GitHubOrgEntityProvider.ts | 2 +- .../catalog-backend/src/ingestion/types.ts | 51 ++--- .../DefaultCatalogProcessingOrchestrator.ts | 1 + .../catalog-backend/src/processing/refresh.ts | 2 + .../catalog-backend/src/processing/types.ts | 17 ++ .../catalog-backend/src/providers/types.ts | 21 +++ .../src/search/DefaultCatalogCollator.ts | 2 + .../src/service/CatalogBuilder.ts | 1 + plugins/catalog-backend/src/service/types.ts | 7 + .../src/util/RecursivePartial.ts | 1 + .../src/util/runPeriodically.ts | 1 + scripts/api-extractor.ts | 1 + 36 files changed, 171 insertions(+), 191 deletions(-) create mode 100644 .changeset/late-dots-compare.md diff --git a/.changeset/late-dots-compare.md b/.changeset/late-dots-compare.md new file mode 100644 index 0000000000..0625e70ef9 --- /dev/null +++ b/.changeset/late-dots-compare.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend': patch +--- + +Cleanup catalog-backend API report. diff --git a/plugins/catalog-backend/api-report.md b/plugins/catalog-backend/api-report.md index b2c2dca0bc..5dc0981fb0 100644 --- a/plugins/catalog-backend/api-report.md +++ b/plugins/catalog-backend/api-report.md @@ -37,8 +37,6 @@ import { TokenManager } from '@backstage/backend-common'; import { UrlReader } from '@backstage/backend-common'; import { Validators } from '@backstage/catalog-model'; -// Warning: (ae-missing-release-tag) "AnalyzeLocationEntityField" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type AnalyzeLocationEntityField = { field: string; @@ -50,44 +48,33 @@ export type AnalyzeLocationEntityField = { description: string; }; -// Warning: (ae-missing-release-tag) "AnalyzeLocationExistingEntity" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) +// @public export type AnalyzeLocationExistingEntity = { location: LocationSpec; isRegistered: boolean; entity: Entity; }; -// Warning: (ae-missing-release-tag) "AnalyzeLocationGenerateEntity" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) +// @public export type AnalyzeLocationGenerateEntity = { entity: RecursivePartial; fields: AnalyzeLocationEntityField[]; }; -// Warning: (ae-missing-release-tag) "AnalyzeLocationRequest" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type AnalyzeLocationRequest = { location: LocationSpec; }; -// Warning: (ae-missing-release-tag) "AnalyzeLocationResponse" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type AnalyzeLocationResponse = { existingEntityFiles: AnalyzeLocationExistingEntity[]; generateEntities: AnalyzeLocationGenerateEntity[]; }; -// Warning: (ae-missing-release-tag) "AnnotateLocationEntityProcessor" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export class AnnotateLocationEntityProcessor implements CatalogProcessor { - // Warning: (ae-forgotten-export) The symbol "Options" needs to be exported by the entry point index.d.ts - constructor(options: Options); + constructor(options: { integrations: ScmIntegrationRegistry }); // (undocumented) getProcessorName(): string; // (undocumented) @@ -99,8 +86,6 @@ export class AnnotateLocationEntityProcessor implements CatalogProcessor { ): Promise; } -// Warning: (ae-missing-release-tag) "AnnotateScmSlugEntityProcessor" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export class AnnotateScmSlugEntityProcessor implements CatalogProcessor { constructor(opts: { scmIntegrationRegistry: ScmIntegrationRegistry }); @@ -112,8 +97,6 @@ export class AnnotateScmSlugEntityProcessor implements CatalogProcessor { preProcessEntity(entity: Entity, location: LocationSpec): Promise; } -// Warning: (ae-missing-release-tag) "AwsS3DiscoveryProcessor" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export class AwsS3DiscoveryProcessor implements CatalogProcessor { constructor(reader: UrlReader); @@ -128,8 +111,6 @@ export class AwsS3DiscoveryProcessor implements CatalogProcessor { ): Promise; } -// Warning: (ae-missing-release-tag) "AzureDevOpsDiscoveryProcessor" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public export class AzureDevOpsDiscoveryProcessor implements CatalogProcessor { constructor(options: { @@ -153,8 +134,6 @@ export class AzureDevOpsDiscoveryProcessor implements CatalogProcessor { ): Promise; } -// Warning: (ae-missing-release-tag) "BitbucketDiscoveryProcessor" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export class BitbucketDiscoveryProcessor implements CatalogProcessor { constructor(options: { @@ -180,8 +159,6 @@ export class BitbucketDiscoveryProcessor implements CatalogProcessor { ): Promise; } -// Warning: (ae-missing-release-tag) "BitbucketRepositoryParser" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type BitbucketRepositoryParser = (options: { integration: BitbucketIntegration; @@ -189,8 +166,6 @@ export type BitbucketRepositoryParser = (options: { logger: Logger_2; }) => AsyncIterable; -// Warning: (ae-missing-release-tag) "BuiltinKindsEntityProcessor" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export class BuiltinKindsEntityProcessor implements CatalogProcessor { // (undocumented) @@ -265,8 +240,6 @@ export const catalogConditions: Conditions<{ >; }>; -// Warning: (ae-missing-release-tag) "CatalogEntityDocument" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface CatalogEntityDocument extends IndexableDocument { // (undocumented) @@ -281,8 +254,6 @@ export interface CatalogEntityDocument extends IndexableDocument { owner: string; } -// Warning: (ae-missing-release-tag) "CatalogEnvironment" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type CatalogEnvironment = { logger: Logger_2; @@ -292,8 +263,6 @@ export type CatalogEnvironment = { permissions: PermissionAuthorizer; }; -// Warning: (ae-missing-release-tag) "CatalogProcessingEngine" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface CatalogProcessingEngine { // (undocumented) @@ -302,16 +271,12 @@ export interface CatalogProcessingEngine { stop(): Promise; } -// Warning: (ae-missing-release-tag) "CatalogProcessingOrchestrator" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) +// @public export interface CatalogProcessingOrchestrator { // (undocumented) process(request: EntityProcessingRequest): Promise; } -// Warning: (ae-missing-release-tag) "CatalogProcessor" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type CatalogProcessor = { getProcessorName(): string; @@ -349,13 +314,9 @@ export interface CatalogProcessorCache { set(key: string, value: ItemType): Promise; } -// Warning: (ae-missing-release-tag) "CatalogProcessorEmit" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type CatalogProcessorEmit = (generated: CatalogProcessorResult) => void; -// Warning: (ae-missing-release-tag) "CatalogProcessorEntityResult" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type CatalogProcessorEntityResult = { type: 'entity'; @@ -363,8 +324,6 @@ export type CatalogProcessorEntityResult = { location: LocationSpec; }; -// Warning: (ae-missing-release-tag) "CatalogProcessorErrorResult" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type CatalogProcessorErrorResult = { type: 'error'; @@ -372,8 +331,6 @@ export type CatalogProcessorErrorResult = { location: LocationSpec; }; -// Warning: (ae-missing-release-tag) "CatalogProcessorLocationResult" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type CatalogProcessorLocationResult = { type: 'location'; @@ -381,16 +338,12 @@ export type CatalogProcessorLocationResult = { optional?: boolean; }; -// Warning: (ae-missing-release-tag) "CatalogProcessorParser" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public export type CatalogProcessorParser = (options: { data: Buffer; location: LocationSpec; }) => AsyncIterable; -// Warning: (ae-missing-release-tag) "CatalogProcessorRelationResult" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type CatalogProcessorRelationResult = { type: 'relation'; @@ -398,8 +351,6 @@ export type CatalogProcessorRelationResult = { entityRef?: string; }; -// Warning: (ae-missing-release-tag) "CatalogProcessorResult" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type CatalogProcessorResult = | CatalogProcessorLocationResult @@ -423,8 +374,6 @@ export type CatalogRulesEnforcer = { isAllowed(entity: Entity, location: LocationSpec): boolean; }; -// Warning: (ae-missing-release-tag) "CodeOwnersProcessor" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export class CodeOwnersProcessor implements CatalogProcessor { constructor(options: { @@ -456,8 +405,6 @@ export const createCatalogPolicyDecision: ( conditions: PermissionCriteria>, ) => ConditionalPolicyDecision; -// Warning: (ae-missing-release-tag) "createRandomRefreshInterval" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public export function createRandomRefreshInterval(options: { minSeconds: number; @@ -467,8 +414,6 @@ export function createRandomRefreshInterval(options: { // @public export function createRouter(options: RouterOptions): Promise; -// Warning: (ae-missing-release-tag) "DefaultCatalogCollator" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export class DefaultCatalogCollator implements DocumentCollator { constructor(options: { @@ -510,8 +455,6 @@ export class DefaultCatalogCollator implements DocumentCollator { readonly visibilityPermission: Permission; } -// Warning: (ae-missing-release-tag) "DefaultCatalogProcessingOrchestrator" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export class DefaultCatalogProcessingOrchestrator implements CatalogProcessingOrchestrator @@ -536,9 +479,7 @@ export class DefaultCatalogRulesEnforcer implements CatalogRulesEnforcer { isAllowed(entity: Entity, location: LocationSpec): boolean; } -// Warning: (ae-missing-release-tag) "DeferredEntity" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) +// @public export type DeferredEntity = { entity: Entity; locationKey?: string; @@ -562,8 +503,6 @@ export type EntitiesCatalog = { facets(request: EntityFacetsRequest): Promise; }; -// Warning: (ae-missing-release-tag) "EntitiesRequest" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type EntitiesRequest = { filter?: EntityFilter; @@ -572,24 +511,18 @@ export type EntitiesRequest = { authorizationToken?: string; }; -// Warning: (ae-missing-release-tag) "EntitiesResponse" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type EntitiesResponse = { entities: Entity[]; pageInfo: PageInfo; }; -// Warning: (ae-missing-release-tag) "EntitiesSearchFilter" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public export type EntitiesSearchFilter = { key: string; values?: string[]; }; -// Warning: (ae-missing-release-tag) "entity" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) function entity( atLocation: LocationSpec, @@ -623,8 +556,6 @@ export interface EntityFacetsResponse { >; } -// Warning: (ae-missing-release-tag) "EntityFilter" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public export type EntityFilter = | { @@ -638,8 +569,6 @@ export type EntityFilter = } | EntitiesSearchFilter; -// Warning: (ae-missing-release-tag) "EntityPagination" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public export type EntityPagination = { limit?: number; @@ -647,17 +576,13 @@ export type EntityPagination = { after?: string; }; -// Warning: (ae-missing-release-tag) "EntityProcessingRequest" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) +// @public export type EntityProcessingRequest = { entity: Entity; state?: JsonObject; }; -// Warning: (ae-missing-release-tag) "EntityProcessingResult" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) +// @public export type EntityProcessingResult = | { ok: true; @@ -672,27 +597,18 @@ export type EntityProcessingResult = errors: Error[]; }; -// Warning: (ae-missing-release-tag) "EntityProvider" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) +// @public export interface EntityProvider { - // (undocumented) connect(connection: EntityProviderConnection): Promise; - // (undocumented) getProviderName(): string; } -// Warning: (ae-missing-release-tag) "EntityProviderConnection" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) +// @public export interface EntityProviderConnection { - // (undocumented) applyMutation(mutation: EntityProviderMutation): Promise; } -// Warning: (ae-missing-release-tag) "EntityProviderMutation" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) +// @public export type EntityProviderMutation = | { type: 'full'; @@ -711,8 +627,6 @@ export type EntityRelationSpec = { target: EntityName; }; -// Warning: (ae-missing-release-tag) "FileReaderProcessor" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export class FileReaderProcessor implements CatalogProcessor { // (undocumented) @@ -726,16 +640,12 @@ export class FileReaderProcessor implements CatalogProcessor { ): Promise; } -// Warning: (ae-missing-release-tag) "generalError" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) function generalError( atLocation: LocationSpec, message: string, ): CatalogProcessorResult; -// Warning: (ae-missing-release-tag) "GithubDiscoveryProcessor" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public export class GithubDiscoveryProcessor implements CatalogProcessor { constructor(options: { @@ -761,6 +671,13 @@ export class GithubDiscoveryProcessor implements CatalogProcessor { ): Promise; } +// @public +export type GithubMultiOrgConfig = Array<{ + name: string; + groupNamespace: string; + userNamespace: string | undefined; +}>; + // @alpha export class GithubMultiOrgReaderProcessor implements CatalogProcessor { constructor(options: { @@ -787,8 +704,6 @@ export class GithubMultiOrgReaderProcessor implements CatalogProcessor { ): Promise; } -// Warning: (ae-missing-release-tag) "GitHubOrgEntityProvider" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export class GitHubOrgEntityProvider implements EntityProvider { constructor(options: { @@ -816,8 +731,6 @@ export class GitHubOrgEntityProvider implements EntityProvider { read(): Promise; } -// Warning: (ae-missing-release-tag) "GithubOrgReaderProcessor" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public export class GithubOrgReaderProcessor implements CatalogProcessor { constructor(options: { @@ -843,8 +756,6 @@ export class GithubOrgReaderProcessor implements CatalogProcessor { ): Promise; } -// Warning: (ae-missing-release-tag) "GitLabDiscoveryProcessor" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public export class GitLabDiscoveryProcessor implements CatalogProcessor { // (undocumented) @@ -864,24 +775,18 @@ export class GitLabDiscoveryProcessor implements CatalogProcessor { ): Promise; } -// Warning: (ae-missing-release-tag) "inputError" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) function inputError( atLocation: LocationSpec, message: string, ): CatalogProcessorResult; -// Warning: (ae-missing-release-tag) "location" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) function location_2( newLocation: LocationSpec, optional?: boolean, ): CatalogProcessorResult; -// Warning: (ae-missing-release-tag) "LocationAnalyzer" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type LocationAnalyzer = { analyzeLocation( @@ -889,8 +794,6 @@ export type LocationAnalyzer = { ): Promise; }; -// Warning: (ae-missing-release-tag) "LocationEntityProcessor" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export class LocationEntityProcessor implements CatalogProcessor { constructor(options: LocationEntityProcessorOptions); @@ -904,16 +807,12 @@ export class LocationEntityProcessor implements CatalogProcessor { ): Promise; } -// Warning: (ae-missing-release-tag) "LocationEntityProcessorOptions" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type LocationEntityProcessorOptions = { integrations: ScmIntegrationRegistry; }; -// Warning: (ae-missing-release-tag) "LocationService" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) +// @public export interface LocationService { // (undocumented) createLocation( @@ -947,9 +846,7 @@ export interface LocationService { }): Promise; } -// Warning: (ae-missing-release-tag) "LocationStore" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) +// @public export interface LocationStore { // (undocumented) createLocation(spec: LocationSpec): Promise; @@ -961,16 +858,12 @@ export interface LocationStore { listLocations(): Promise; } -// Warning: (ae-missing-release-tag) "notFoundError" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) function notFoundError( atLocation: LocationSpec, message: string, ): CatalogProcessorResult; -// Warning: (ae-missing-release-tag) "PageInfo" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type PageInfo = | { @@ -981,8 +874,6 @@ export type PageInfo = endCursor: string; }; -// Warning: (ae-missing-release-tag) "parseEntityYaml" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export function parseEntityYaml( data: Buffer, @@ -1015,8 +906,6 @@ export const permissionRules: { >; }; -// Warning: (ae-missing-release-tag) "PlaceholderProcessor" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public export class PlaceholderProcessor implements CatalogProcessor { constructor(options: PlaceholderProcessorOptions); @@ -1026,8 +915,6 @@ export class PlaceholderProcessor implements CatalogProcessor { preProcessEntity(entity: Entity, location: LocationSpec): Promise; } -// Warning: (ae-missing-release-tag) "PlaceholderProcessorOptions" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type PlaceholderProcessorOptions = { resolvers: Record; @@ -1035,15 +922,11 @@ export type PlaceholderProcessorOptions = { integrations: ScmIntegrationRegistry; }; -// Warning: (ae-missing-release-tag) "PlaceholderResolver" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type PlaceholderResolver = ( params: PlaceholderResolverParams, ) => Promise; -// Warning: (ae-missing-release-tag) "PlaceholderResolverParams" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type PlaceholderResolverParams = { key: string; @@ -1053,21 +936,15 @@ export type PlaceholderResolverParams = { resolveUrl: PlaceholderResolverResolveUrl; }; -// Warning: (ae-missing-release-tag) "PlaceholderResolverRead" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type PlaceholderResolverRead = (url: string) => Promise; -// Warning: (ae-missing-release-tag) "PlaceholderResolverResolveUrl" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type PlaceholderResolverResolveUrl = ( url: string, base: string, ) => string; -// Warning: (ae-missing-release-tag) "RecursivePartial" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public export type RecursivePartial = { [P in keyof T]?: T[P] extends (infer U)[] @@ -1077,8 +954,6 @@ export type RecursivePartial = { : T[P]; }; -// Warning: (ae-missing-release-tag) "RefreshIntervalFunction" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public export type RefreshIntervalFunction = () => number; @@ -1093,8 +968,6 @@ export interface RefreshService { refresh(options: RefreshOptions): Promise; } -// Warning: (ae-missing-release-tag) "relation" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) function relation(spec: EntityRelationSpec): CatalogProcessorResult; @@ -1128,13 +1001,9 @@ export interface RouterOptions { refreshService?: RefreshService; } -// Warning: (ae-missing-release-tag) "runPeriodically" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public @deprecated export function runPeriodically(fn: () => any, delayMs: number): () => void; -// Warning: (ae-missing-release-tag) "StaticLocationProcessor" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public @deprecated (undocumented) export class StaticLocationProcessor implements StaticLocationProcessor { constructor(staticLocations: LocationSpec[]); @@ -1148,12 +1017,9 @@ export class StaticLocationProcessor implements StaticLocationProcessor { ): Promise; } -// Warning: (ae-missing-release-tag) "UrlReaderProcessor" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export class UrlReaderProcessor implements CatalogProcessor { - // Warning: (ae-forgotten-export) The symbol "Options" needs to be exported by the entry point index.d.ts - constructor(options: Options_2); + constructor(options: { reader: UrlReader; logger: Logger_2 }); // (undocumented) getProcessorName(): string; // (undocumented) @@ -1165,8 +1031,4 @@ export class UrlReaderProcessor implements CatalogProcessor { cache: CatalogProcessorCache, ): Promise; } - -// Warnings were encountered during analysis: -// -// src/ingestion/processors/GithubMultiOrgReaderProcessor.d.ts:25:9 - (ae-forgotten-export) The symbol "GithubMultiOrgConfig" needs to be exported by the entry point index.d.ts ``` diff --git a/plugins/catalog-backend/src/catalog/types.ts b/plugins/catalog-backend/src/catalog/types.ts index e285d4c100..abf9e4d114 100644 --- a/plugins/catalog-backend/src/catalog/types.ts +++ b/plugins/catalog-backend/src/catalog/types.ts @@ -21,6 +21,7 @@ import { Entity } from '@backstage/catalog-model'; * * Any (at least one) of the outer sets must match, within which all of the * individual filters must match. + * @public */ export type EntityFilter = | { allOf: EntityFilter[] } @@ -30,6 +31,7 @@ export type EntityFilter = /** * A pagination rule for entities. + * @public */ export type EntityPagination = { limit?: number; @@ -39,6 +41,7 @@ export type EntityPagination = { /** * Matches rows in the entities_search table. + * @public */ export type EntitiesSearchFilter = { /** @@ -57,6 +60,7 @@ export type EntitiesSearchFilter = { values?: string[]; }; +/** @public */ export type PageInfo = | { hasNextPage: false; @@ -66,6 +70,7 @@ export type PageInfo = endCursor: string; }; +/** @public */ export type EntitiesRequest = { filter?: EntityFilter; fields?: (entity: Entity) => Entity; @@ -73,6 +78,7 @@ export type EntitiesRequest = { authorizationToken?: string; }; +/** @public */ export type EntitiesResponse = { entities: Entity[]; pageInfo: PageInfo; diff --git a/plugins/catalog-backend/src/ingestion/processors/AnnotateLocationEntityProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/AnnotateLocationEntityProcessor.ts index 90b3280ab8..0067f3c26d 100644 --- a/plugins/catalog-backend/src/ingestion/processors/AnnotateLocationEntityProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/AnnotateLocationEntityProcessor.ts @@ -28,12 +28,13 @@ import { ScmIntegrationRegistry } from '@backstage/integration'; import { identity, merge, pickBy } from 'lodash'; import { CatalogProcessor, CatalogProcessorEmit } from './types'; -type Options = { - integrations: ScmIntegrationRegistry; -}; - +/** @public */ export class AnnotateLocationEntityProcessor implements CatalogProcessor { - constructor(private readonly options: Options) {} + constructor( + private readonly options: { + integrations: ScmIntegrationRegistry; + }, + ) {} getProcessorName(): string { return 'AnnotateLocationEntityProcessor'; diff --git a/plugins/catalog-backend/src/ingestion/processors/AnnotateScmSlugEntityProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/AnnotateScmSlugEntityProcessor.ts index b3a3cfd999..d6e037662e 100644 --- a/plugins/catalog-backend/src/ingestion/processors/AnnotateScmSlugEntityProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/AnnotateScmSlugEntityProcessor.ts @@ -25,6 +25,7 @@ import { CatalogProcessor } from './types'; const GITHUB_ACTIONS_ANNOTATION = 'github.com/project-slug'; +/** @public */ export class AnnotateScmSlugEntityProcessor implements CatalogProcessor { constructor( private readonly opts: { scmIntegrationRegistry: ScmIntegrationRegistry }, diff --git a/plugins/catalog-backend/src/ingestion/processors/AwsS3DiscoveryProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/AwsS3DiscoveryProcessor.ts index 77152f81af..726c972d8d 100644 --- a/plugins/catalog-backend/src/ingestion/processors/AwsS3DiscoveryProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/AwsS3DiscoveryProcessor.ts @@ -25,6 +25,7 @@ import { CatalogProcessorParser, } from './types'; +/** @public */ export class AwsS3DiscoveryProcessor implements CatalogProcessor { constructor(private readonly reader: UrlReader) {} diff --git a/plugins/catalog-backend/src/ingestion/processors/AzureDevOpsDiscoveryProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/AzureDevOpsDiscoveryProcessor.ts index c1cc610495..a257afc950 100644 --- a/plugins/catalog-backend/src/ingestion/processors/AzureDevOpsDiscoveryProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/AzureDevOpsDiscoveryProcessor.ts @@ -38,6 +38,8 @@ import { codeSearch } from './azure'; * You may also explicitly specify a single repo: * * target: https://dev.azure.com/org/project/_git/repo + * + * @public **/ export class AzureDevOpsDiscoveryProcessor implements CatalogProcessor { private readonly integrations: ScmIntegrationRegistry; diff --git a/plugins/catalog-backend/src/ingestion/processors/BitbucketDiscoveryProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/BitbucketDiscoveryProcessor.ts index 2cc6822eaa..8ac6d617ca 100644 --- a/plugins/catalog-backend/src/ingestion/processors/BitbucketDiscoveryProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/BitbucketDiscoveryProcessor.ts @@ -37,6 +37,7 @@ const DEFAULT_BRANCH = 'master'; const DEFAULT_CATALOG_LOCATION = '/catalog-info.yaml'; const EMPTY_CATALOG_LOCATION = '/'; +/** @public */ export class BitbucketDiscoveryProcessor implements CatalogProcessor { private readonly integrations: ScmIntegrationRegistry; private readonly parser: BitbucketRepositoryParser; diff --git a/plugins/catalog-backend/src/ingestion/processors/BuiltinKindsEntityProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/BuiltinKindsEntityProcessor.ts index 729cd023f8..ec0afeba36 100644 --- a/plugins/catalog-backend/src/ingestion/processors/BuiltinKindsEntityProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/BuiltinKindsEntityProcessor.ts @@ -56,6 +56,7 @@ import { import * as result from './results'; import { CatalogProcessor, CatalogProcessorEmit } from './types'; +/** @public */ export class BuiltinKindsEntityProcessor implements CatalogProcessor { private readonly validators = [ apiEntityV1alpha1Validator, diff --git a/plugins/catalog-backend/src/ingestion/processors/CodeOwnersProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/CodeOwnersProcessor.ts index ff5dedcbbf..d7b2bf8849 100644 --- a/plugins/catalog-backend/src/ingestion/processors/CodeOwnersProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/CodeOwnersProcessor.ts @@ -29,6 +29,7 @@ const ALLOWED_KINDS = ['API', 'Component', 'Domain', 'Resource', 'System']; const ALLOWED_LOCATION_TYPES = ['url']; +/** @public */ export class CodeOwnersProcessor implements CatalogProcessor { private readonly integrations: ScmIntegrationRegistry; private readonly logger: Logger; diff --git a/plugins/catalog-backend/src/ingestion/processors/FileReaderProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/FileReaderProcessor.ts index 20020fcfbe..5e3d4812c2 100644 --- a/plugins/catalog-backend/src/ingestion/processors/FileReaderProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/FileReaderProcessor.ts @@ -28,6 +28,7 @@ import { const glob = promisify(g); +/** @public */ export class FileReaderProcessor implements CatalogProcessor { getProcessorName(): string { return 'FileReaderProcessor'; diff --git a/plugins/catalog-backend/src/ingestion/processors/GitLabDiscoveryProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/GitLabDiscoveryProcessor.ts index 776ec1e7a8..c8996e8d3e 100644 --- a/plugins/catalog-backend/src/ingestion/processors/GitLabDiscoveryProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/GitLabDiscoveryProcessor.ts @@ -32,6 +32,7 @@ import { /** * Extracts repositories out of an GitLab instance. + * @public */ export class GitLabDiscoveryProcessor implements CatalogProcessor { private readonly integrations: ScmIntegrationRegistry; diff --git a/plugins/catalog-backend/src/ingestion/processors/GithubDiscoveryProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/GithubDiscoveryProcessor.ts index ec0de74b00..982007d3a5 100644 --- a/plugins/catalog-backend/src/ingestion/processors/GithubDiscoveryProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/GithubDiscoveryProcessor.ts @@ -41,6 +41,8 @@ import { CatalogProcessor, CatalogProcessorEmit } from './types'; * You may also explicitly specify the source branch: * * target: https://github.com/backstage/*\/blob/main/catalog-info.yaml + * + * @public **/ export class GithubDiscoveryProcessor implements CatalogProcessor { private readonly integrations: ScmIntegrationRegistry; diff --git a/plugins/catalog-backend/src/ingestion/processors/GithubOrgReaderProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/GithubOrgReaderProcessor.ts index 2a411af33e..39384be0dc 100644 --- a/plugins/catalog-backend/src/ingestion/processors/GithubOrgReaderProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/GithubOrgReaderProcessor.ts @@ -38,6 +38,7 @@ type GraphQL = typeof graphql; /** * Extracts teams and users out of a GitHub org. + * @public */ export class GithubOrgReaderProcessor implements CatalogProcessor { private readonly integrations: ScmIntegrationRegistry; diff --git a/plugins/catalog-backend/src/ingestion/processors/LocationEntityProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/LocationEntityProcessor.ts index 60941486c3..5aee5a1ca2 100644 --- a/plugins/catalog-backend/src/ingestion/processors/LocationEntityProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/LocationEntityProcessor.ts @@ -38,10 +38,12 @@ export function toAbsoluteUrl( } } +/** @public */ export type LocationEntityProcessorOptions = { integrations: ScmIntegrationRegistry; }; +/** @public */ export class LocationEntityProcessor implements CatalogProcessor { constructor(private readonly options: LocationEntityProcessorOptions) {} diff --git a/plugins/catalog-backend/src/ingestion/processors/PlaceholderProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/PlaceholderProcessor.ts index 1a0ca75ba5..e19576d782 100644 --- a/plugins/catalog-backend/src/ingestion/processors/PlaceholderProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/PlaceholderProcessor.ts @@ -21,12 +21,16 @@ import { ScmIntegrationRegistry } from '@backstage/integration'; import yaml from 'yaml'; import { CatalogProcessor } from './types'; +/** @public */ export type PlaceholderResolverRead = (url: string) => Promise; + +/** @public */ export type PlaceholderResolverResolveUrl = ( url: string, base: string, ) => string; +/** @public */ export type PlaceholderResolverParams = { key: string; value: JsonValue; @@ -35,10 +39,12 @@ export type PlaceholderResolverParams = { resolveUrl: PlaceholderResolverResolveUrl; }; +/** @public */ export type PlaceholderResolver = ( params: PlaceholderResolverParams, ) => Promise; +/** @public */ export type PlaceholderProcessorOptions = { resolvers: Record; reader: UrlReader; @@ -48,6 +54,7 @@ export type PlaceholderProcessorOptions = { /** * Traverses raw entity JSON looking for occurrences of $-prefixed placeholders * that it then fills in with actual data. + * @public */ export class PlaceholderProcessor implements CatalogProcessor { constructor(private readonly options: PlaceholderProcessorOptions) {} diff --git a/plugins/catalog-backend/src/ingestion/processors/StaticLocationProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/StaticLocationProcessor.ts index c23c14bac9..bcafa33162 100644 --- a/plugins/catalog-backend/src/ingestion/processors/StaticLocationProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/StaticLocationProcessor.ts @@ -21,6 +21,7 @@ import { CatalogProcessorEmit } from './types'; /** * @deprecated no longer in use, replaced by the ConfigLocationEntityProvider. + * @public */ export class StaticLocationProcessor implements StaticLocationProcessor { static fromConfig(config: Config): StaticLocationProcessor { diff --git a/plugins/catalog-backend/src/ingestion/processors/UrlReaderProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/UrlReaderProcessor.ts index 6a85cc07c7..d13e5dfeda 100644 --- a/plugins/catalog-backend/src/ingestion/processors/UrlReaderProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/UrlReaderProcessor.ts @@ -32,11 +32,6 @@ import { const CACHE_KEY = 'v1'; -type Options = { - reader: UrlReader; - logger: Logger; -}; - // WARNING: If you change this type, you likely need to bump the CACHE_KEY as well type CacheItem = { etag: string; @@ -47,8 +42,14 @@ type CacheItem = { }[]; }; +/** @public */ export class UrlReaderProcessor implements CatalogProcessor { - constructor(private readonly options: Options) {} + constructor( + private readonly options: { + reader: UrlReader; + logger: Logger; + }, + ) {} getProcessorName() { return 'url-reader'; diff --git a/plugins/catalog-backend/src/ingestion/processors/bitbucket/BitbucketRepositoryParser.ts b/plugins/catalog-backend/src/ingestion/processors/bitbucket/BitbucketRepositoryParser.ts index 3407fae16a..9eaec221b5 100644 --- a/plugins/catalog-backend/src/ingestion/processors/bitbucket/BitbucketRepositoryParser.ts +++ b/plugins/catalog-backend/src/ingestion/processors/bitbucket/BitbucketRepositoryParser.ts @@ -18,6 +18,7 @@ import { results } from '../index'; import { Logger } from 'winston'; import { BitbucketIntegration } from '@backstage/integration'; +/** @public */ export type BitbucketRepositoryParser = (options: { integration: BitbucketIntegration; target: string; diff --git a/plugins/catalog-backend/src/ingestion/processors/github/config.ts b/plugins/catalog-backend/src/ingestion/processors/github/config.ts index 27bec6eb0d..cd17d30311 100644 --- a/plugins/catalog-backend/src/ingestion/processors/github/config.ts +++ b/plugins/catalog-backend/src/ingestion/processors/github/config.ts @@ -86,6 +86,7 @@ export function readGithubConfig(config: Config): ProviderConfig[] { /** * The configuration parameters for a multi-org GitHub processor. + * @public */ export type GithubMultiOrgConfig = Array<{ /** diff --git a/plugins/catalog-backend/src/ingestion/processors/index.ts b/plugins/catalog-backend/src/ingestion/processors/index.ts index 36f85647d3..84a92fb1ba 100644 --- a/plugins/catalog-backend/src/ingestion/processors/index.ts +++ b/plugins/catalog-backend/src/ingestion/processors/index.ts @@ -45,3 +45,4 @@ export { parseEntityYaml } from './util/parse'; export { results }; export type { BitbucketRepositoryParser } from './bitbucket'; +export type { GithubMultiOrgConfig } from './github'; diff --git a/plugins/catalog-backend/src/ingestion/processors/results.ts b/plugins/catalog-backend/src/ingestion/processors/results.ts index 2862c95119..539f915fba 100644 --- a/plugins/catalog-backend/src/ingestion/processors/results.ts +++ b/plugins/catalog-backend/src/ingestion/processors/results.ts @@ -19,6 +19,7 @@ import { Entity, LocationSpec } from '@backstage/catalog-model'; import { CatalogProcessorResult } from './types'; import { EntityRelationSpec } from '../../processing/types'; +/** @public */ export function notFoundError( atLocation: LocationSpec, message: string, @@ -30,6 +31,7 @@ export function notFoundError( }; } +/** @public */ export function inputError( atLocation: LocationSpec, message: string, @@ -41,6 +43,7 @@ export function inputError( }; } +/** @public */ export function generalError( atLocation: LocationSpec, message: string, @@ -48,6 +51,7 @@ export function generalError( return { type: 'error', location: atLocation, error: new Error(message) }; } +/** @public */ export function location( newLocation: LocationSpec, optional?: boolean, @@ -55,6 +59,7 @@ export function location( return { type: 'location', location: newLocation, optional }; } +/** @public */ export function entity( atLocation: LocationSpec, newEntity: Entity, @@ -62,6 +67,7 @@ export function entity( return { type: 'entity', location: atLocation, entity: newEntity }; } +/** @public */ export function relation(spec: EntityRelationSpec): CatalogProcessorResult { return { type: 'relation', relation: spec }; } diff --git a/plugins/catalog-backend/src/ingestion/processors/types.ts b/plugins/catalog-backend/src/ingestion/processors/types.ts index 873fef842f..1bd65c6f7a 100644 --- a/plugins/catalog-backend/src/ingestion/processors/types.ts +++ b/plugins/catalog-backend/src/ingestion/processors/types.ts @@ -18,6 +18,9 @@ import { Entity, LocationSpec } from '@backstage/catalog-model'; import { JsonValue } from '@backstage/types'; import { EntityRelationSpec } from '../../processing/types'; +/** + * @public + */ export type CatalogProcessor = { /** * A unique identifier for the Catalog Processor. @@ -116,6 +119,7 @@ export type CatalogProcessor = { * A parser, that is able to take the raw catalog descriptor data and turn it * into the actual result pieces. The default implementation performs a YAML * document parsing. + * @public */ export type CatalogProcessorParser = (options: { data: Buffer; @@ -150,8 +154,10 @@ export interface CatalogProcessorCache { set(key: string, value: ItemType): Promise; } +/** @public */ export type CatalogProcessorEmit = (generated: CatalogProcessorResult) => void; +/** @public */ export type CatalogProcessorLocationResult = { type: 'location'; location: LocationSpec; @@ -159,24 +165,28 @@ export type CatalogProcessorLocationResult = { optional?: boolean; }; +/** @public */ export type CatalogProcessorEntityResult = { type: 'entity'; entity: Entity; location: LocationSpec; }; +/** @public */ export type CatalogProcessorRelationResult = { type: 'relation'; relation: EntityRelationSpec; entityRef?: string; }; +/** @public */ export type CatalogProcessorErrorResult = { type: 'error'; error: Error; location: LocationSpec; }; +/** @public */ export type CatalogProcessorResult = | CatalogProcessorLocationResult | CatalogProcessorEntityResult diff --git a/plugins/catalog-backend/src/ingestion/processors/util/parse.ts b/plugins/catalog-backend/src/ingestion/processors/util/parse.ts index a6aba7e1f9..5637170f9b 100644 --- a/plugins/catalog-backend/src/ingestion/processors/util/parse.ts +++ b/plugins/catalog-backend/src/ingestion/processors/util/parse.ts @@ -24,6 +24,7 @@ import yaml from 'yaml'; import * as result from '../results'; import { CatalogProcessorParser, CatalogProcessorResult } from '../types'; +/** @public */ export function* parseEntityYaml( data: Buffer, location: LocationSpec, diff --git a/plugins/catalog-backend/src/ingestion/providers/GitHubOrgEntityProvider.ts b/plugins/catalog-backend/src/ingestion/providers/GitHubOrgEntityProvider.ts index 20e9966bd1..a20f7fdb0b 100644 --- a/plugins/catalog-backend/src/ingestion/providers/GitHubOrgEntityProvider.ts +++ b/plugins/catalog-backend/src/ingestion/providers/GitHubOrgEntityProvider.ts @@ -38,7 +38,7 @@ import { import { assignGroupsToUsers, buildOrgHierarchy } from '../processors/util/org'; // TODO: Consider supporting an (optional) webhook that reacts on org changes - +/** @public */ export class GitHubOrgEntityProvider implements EntityProvider { private connection?: EntityProviderConnection; private githubCredentialsProvider: GithubCredentialsProvider; diff --git a/plugins/catalog-backend/src/ingestion/types.ts b/plugins/catalog-backend/src/ingestion/types.ts index 30cdee4760..7d7a185231 100644 --- a/plugins/catalog-backend/src/ingestion/types.ts +++ b/plugins/catalog-backend/src/ingestion/types.ts @@ -17,10 +17,7 @@ import { Entity, LocationSpec } from '@backstage/catalog-model'; import { RecursivePartial } from '../util/RecursivePartial'; -// -// LocationAnalyzer -// - +/** @public */ export type LocationAnalyzer = { /** * Generates an entity configuration for given git repository. It's used for @@ -33,30 +30,38 @@ export type LocationAnalyzer = { ): Promise; }; +/** @public */ export type AnalyzeLocationRequest = { location: LocationSpec; }; +/** @public */ export type AnalyzeLocationResponse = { existingEntityFiles: AnalyzeLocationExistingEntity[]; generateEntities: AnalyzeLocationGenerateEntity[]; }; -// If the folder pointed to already contained catalog info yaml files, they are -// read and emitted like this so that the frontend can inform the user that it -// located them and can make sure to register them as well if they weren't -// already +/** + * If the folder pointed to already contained catalog info yaml files, they are + * read and emitted like this so that the frontend can inform the user that it + * located them and can make sure to register them as well if they weren't + * already + * @public + */ export type AnalyzeLocationExistingEntity = { location: LocationSpec; isRegistered: boolean; entity: Entity; }; -// This is some form of representation of what the analyzer could deduce. -// We should probably have a chat about how this can best be conveyed to -// the frontend. It'll probably contain a (possibly incomplete) entity, plus -// enough info for the frontend to know what form data to show to the user -// for overriding/completing the info. +/** + * This is some form of representation of what the analyzer could deduce. + * We should probably have a chat about how this can best be conveyed to + * the frontend. It'll probably contain a (possibly incomplete) entity, plus + * enough info for the frontend to know what form data to show to the user + * for overriding/completing the info. + * @public + * */ export type AnalyzeLocationGenerateEntity = { // Some form of partial representation of the entity entity: RecursivePartial; @@ -67,12 +72,15 @@ export type AnalyzeLocationGenerateEntity = { // This is where I get really vague. Something like this perhaps? Or it could be // something like a json-schema that contains enough info for the frontend to // be able to present a form and explanations +/** @public */ export type AnalyzeLocationEntityField = { - // e.g. "spec.owner"? The frontend needs to know how to "inject" the field into the - // entity again if the user wants to change it + /** + * e.g. "spec.owner"? The frontend needs to know how to "inject" the field into the + * entity again if the user wants to change it + */ field: string; - // The outcome of the analysis for this particular field + /** The outcome of the analysis for this particular field */ state: | 'analysisSuggestedValue' | 'analysisSuggestedNoValue' @@ -81,10 +89,11 @@ export type AnalyzeLocationEntityField = { // If the analysis did suggest a value, this is where it would be. Not sure if we want // to limit this to strings or if we want it to be any JsonValue value: string | null; - - // A text to show to the user to inform about the choices made. Like, it could say - // "Found a CODEOWNERS file that covers this target, so we suggest leaving this - // field empty; which would currently make it owned by X" where X is taken from the - // codeowners file. + /** + * A text to show to the user to inform about the choices made. Like, it could say + * "Found a CODEOWNERS file that covers this target, so we suggest leaving this + * field empty; which would currently make it owned by X" where X is taken from the + * codeowners file. + */ description: string; }; diff --git a/plugins/catalog-backend/src/processing/DefaultCatalogProcessingOrchestrator.ts b/plugins/catalog-backend/src/processing/DefaultCatalogProcessingOrchestrator.ts index 105121ae2a..2ffaa2912f 100644 --- a/plugins/catalog-backend/src/processing/DefaultCatalogProcessingOrchestrator.ts +++ b/plugins/catalog-backend/src/processing/DefaultCatalogProcessingOrchestrator.ts @@ -64,6 +64,7 @@ type Context = { cache: ProcessorCacheManager; }; +/** @public */ export class DefaultCatalogProcessingOrchestrator implements CatalogProcessingOrchestrator { diff --git a/plugins/catalog-backend/src/processing/refresh.ts b/plugins/catalog-backend/src/processing/refresh.ts index c60f42ff96..3e03e3add8 100644 --- a/plugins/catalog-backend/src/processing/refresh.ts +++ b/plugins/catalog-backend/src/processing/refresh.ts @@ -16,12 +16,14 @@ /** * Function that returns the catalog refresh interval in seconds. + * @public */ export type RefreshIntervalFunction = () => number; /** * Creates a function that returns a random refresh interval between minSeconds and maxSeconds. * @returns A {@link RefreshIntervalFunction} that provides the next refresh interval + * @public */ export function createRandomRefreshInterval(options: { minSeconds: number; diff --git a/plugins/catalog-backend/src/processing/types.ts b/plugins/catalog-backend/src/processing/types.ts index 33d8ed8771..b732df297e 100644 --- a/plugins/catalog-backend/src/processing/types.ts +++ b/plugins/catalog-backend/src/processing/types.ts @@ -39,11 +39,19 @@ export type EntityRelationSpec = { target: EntityName; }; +/** + * The request to process an entity. + * @public + */ export type EntityProcessingRequest = { entity: Entity; state?: JsonObject; // Versions for multiple deployments etc }; +/** + * The result of processing an entity. + * @public + */ export type EntityProcessingResult = | { ok: true; @@ -58,15 +66,24 @@ export type EntityProcessingResult = errors: Error[]; }; +/** + * Responsible for executing the individual processing steps in order to fully process an entity. + * @public + * */ export interface CatalogProcessingOrchestrator { process(request: EntityProcessingRequest): Promise; } +/** + * Entities that are not yet processed. + * @public + * */ export type DeferredEntity = { entity: Entity; locationKey?: string; }; +/** @public */ export interface CatalogProcessingEngine { start(): Promise; stop(): Promise; diff --git a/plugins/catalog-backend/src/providers/types.ts b/plugins/catalog-backend/src/providers/types.ts index 90c5f13215..226c021e3c 100644 --- a/plugins/catalog-backend/src/providers/types.ts +++ b/plugins/catalog-backend/src/providers/types.ts @@ -16,15 +16,36 @@ import { DeferredEntity } from '../processing'; +/** + * @public + * A 'full' mutation replaces all existing entities created by this entity provider with new ones. + * A 'delta' mutation can both add and remove entities provided by this provider. Previously provided + * entities from a 'full' mutation are not removed. + */ export type EntityProviderMutation = | { type: 'full'; entities: DeferredEntity[] } | { type: 'delta'; added: DeferredEntity[]; removed: DeferredEntity[] }; +/** + * The EntityProviderConnection is the connection between the catalog and the entity provider. + * The EntityProvider use this connection to add and remove entities from the catalog. + * @public + */ export interface EntityProviderConnection { + /** + * Applies either a full or delta update to the catalog engine. + */ applyMutation(mutation: EntityProviderMutation): Promise; } +/** + * An EntityProvider is able to provide entities to the catalog. + * See https://backstage.io/docs/features/software-catalog/life-of-an-entity for more details. + * @public + */ export interface EntityProvider { + /** Unique name provider name used internally for caching. */ getProviderName(): string; + /** Connect is called upon initialization by the catalog engine. */ connect(connection: EntityProviderConnection): Promise; } diff --git a/plugins/catalog-backend/src/search/DefaultCatalogCollator.ts b/plugins/catalog-backend/src/search/DefaultCatalogCollator.ts index 8e72a265af..96704a6c1a 100644 --- a/plugins/catalog-backend/src/search/DefaultCatalogCollator.ts +++ b/plugins/catalog-backend/src/search/DefaultCatalogCollator.ts @@ -32,6 +32,7 @@ import { } from '@backstage/catalog-client'; import { catalogEntityReadPermission } from '@backstage/plugin-catalog-common'; +/** @public */ export interface CatalogEntityDocument extends IndexableDocument { componentType: string; namespace: string; @@ -40,6 +41,7 @@ export interface CatalogEntityDocument extends IndexableDocument { owner: string; } +/** @public */ export class DefaultCatalogCollator implements DocumentCollator { protected discovery: PluginEndpointDiscovery; protected locationTemplate: string; diff --git a/plugins/catalog-backend/src/service/CatalogBuilder.ts b/plugins/catalog-backend/src/service/CatalogBuilder.ts index 46c92c43da..9004cb4c56 100644 --- a/plugins/catalog-backend/src/service/CatalogBuilder.ts +++ b/plugins/catalog-backend/src/service/CatalogBuilder.ts @@ -97,6 +97,7 @@ import { basicEntityFilter } from './request/basicEntityFilter'; import { RESOURCE_TYPE_CATALOG_ENTITY } from '@backstage/plugin-catalog-common'; import { AuthorizedLocationService } from './AuthorizedLocationService'; +/** @public */ export type CatalogEnvironment = { logger: Logger; database: PluginDatabaseManager; diff --git a/plugins/catalog-backend/src/service/types.ts b/plugins/catalog-backend/src/service/types.ts index c923949a04..c10ccda14b 100644 --- a/plugins/catalog-backend/src/service/types.ts +++ b/plugins/catalog-backend/src/service/types.ts @@ -17,6 +17,10 @@ import { Entity, LocationSpec } from '@backstage/catalog-model'; import { Location } from '@backstage/catalog-client'; +/** + * The location service manages entity locations. + * @public + */ export interface LocationService { createLocation( spec: LocationSpec, @@ -59,6 +63,9 @@ export interface RefreshService { refresh(options: RefreshOptions): Promise; } +/** + * Interacts with the database to manage locations. + * @public */ export interface LocationStore { createLocation(spec: LocationSpec): Promise; listLocations(): Promise; diff --git a/plugins/catalog-backend/src/util/RecursivePartial.ts b/plugins/catalog-backend/src/util/RecursivePartial.ts index 502f4464c1..92e1ab9296 100644 --- a/plugins/catalog-backend/src/util/RecursivePartial.ts +++ b/plugins/catalog-backend/src/util/RecursivePartial.ts @@ -16,6 +16,7 @@ /** * Makes all keys of an entire hierarchy optional. + * @public */ export type RecursivePartial = { [P in keyof T]?: T[P] extends (infer U)[] diff --git a/plugins/catalog-backend/src/util/runPeriodically.ts b/plugins/catalog-backend/src/util/runPeriodically.ts index d3bf5d21d5..361fb33b2f 100644 --- a/plugins/catalog-backend/src/util/runPeriodically.ts +++ b/plugins/catalog-backend/src/util/runPeriodically.ts @@ -24,6 +24,7 @@ * next. * @returns A function that, when called, stops the invocation loop. * @deprecated use \@backstage/backend-tasks package instead. + * @public */ export function runPeriodically(fn: () => any, delayMs: number): () => void { let cancel: () => void; diff --git a/scripts/api-extractor.ts b/scripts/api-extractor.ts index 22d00e5dfe..482b011ffb 100644 --- a/scripts/api-extractor.ts +++ b/scripts/api-extractor.ts @@ -219,6 +219,7 @@ const NO_WARNING_PACKAGES = [ 'packages/release-manifests', 'packages/version-bridge', 'plugins/auth-node', + 'plugins/catalog-backend', 'plugins/catalog-backend-module-aws', 'plugins/catalog-backend-module-ldap', 'plugins/catalog-backend-module-msgraph', From c9e1ebed25944555f3e7c08ada5a1773d35fa929 Mon Sep 17 00:00:00 2001 From: Karan Shah Date: Mon, 21 Feb 2022 14:13:53 +0000 Subject: [PATCH 301/383] No need for this as it isn't actually enabled anyway Signed-off-by: Karan Shah --- packages/backend/package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/backend/package.json b/packages/backend/package.json index d35b0203c6..fe1908abc5 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -33,7 +33,6 @@ "@backstage/catalog-model": "^0.10.0", "@backstage/config": "^0.1.14", "@backstage/integration": "^0.7.3", - "@backstage/plugin-airbrake-backend": "^0.1.0", "@backstage/plugin-app-backend": "^0.3.25", "@backstage/plugin-auth-backend": "^0.10.1", "@backstage/plugin-auth-node": "^0.1.1", From 4abc806f233940691492536e4625e23cf22a809b Mon Sep 17 00:00:00 2001 From: Karan Shah Date: Mon, 21 Feb 2022 14:15:23 +0000 Subject: [PATCH 302/383] Remove unnecessary dependency Signed-off-by: Karan Shah --- plugins/airbrake/package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/plugins/airbrake/package.json b/plugins/airbrake/package.json index 510cdf3043..128373881c 100644 --- a/plugins/airbrake/package.json +++ b/plugins/airbrake/package.json @@ -25,7 +25,6 @@ "dependencies": { "@backstage/catalog-model": "^0.10.0", "@backstage/core-components": "^0.8.9", - "@backstage/core-app-api": "^0.5.3", "@backstage/core-plugin-api": "^0.6.1", "@backstage/dev-utils": "^0.2.22", "@backstage/plugin-catalog-react": "^0.6.15", From f62ce97a15225b9cab1229c7791ba6e01d723abf Mon Sep 17 00:00:00 2001 From: Karan Shah Date: Mon, 21 Feb 2022 14:33:09 +0000 Subject: [PATCH 303/383] This is needed https://github.com/backstage/backstage/runs/5275475872?check_suite_focus=true Signed-off-by: Karan Shah --- plugins/airbrake/package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/airbrake/package.json b/plugins/airbrake/package.json index 128373881c..510cdf3043 100644 --- a/plugins/airbrake/package.json +++ b/plugins/airbrake/package.json @@ -25,6 +25,7 @@ "dependencies": { "@backstage/catalog-model": "^0.10.0", "@backstage/core-components": "^0.8.9", + "@backstage/core-app-api": "^0.5.3", "@backstage/core-plugin-api": "^0.6.1", "@backstage/dev-utils": "^0.2.22", "@backstage/plugin-catalog-react": "^0.6.15", From afee525a363355bf8f2010baedb72ec43b80ded3 Mon Sep 17 00:00:00 2001 From: blam Date: Mon, 21 Feb 2022 15:40:38 +0100 Subject: [PATCH 304/383] chore: deprecating the OctokitProvider Signed-off-by: blam --- .../actions/builtin/github/OctokitProvider.ts | 4 ++ .../builtin/github/githubActionsDispatch.ts | 27 +++++++----- .../actions/builtin/github/githubWebhook.ts | 31 ++++++++----- .../actions/builtin/publish/github.ts | 31 +++++++------ .../builtin/publish/githubPullRequest.ts | 43 ++++--------------- 5 files changed, 68 insertions(+), 68 deletions(-) diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/OctokitProvider.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/OctokitProvider.ts index 3ac66a0023..d481e42c9f 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/OctokitProvider.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/OctokitProvider.ts @@ -32,6 +32,8 @@ export type OctokitIntegration = { /** * OctokitProvider provides Octokit client based on ScmIntegrationsRegistry configuration. * OctokitProvider supports GitHub credentials caching out of the box. + * + * @deprecated use the internal {@link getOctokitOptions} function instead */ export class OctokitProvider { private readonly integrations: ScmIntegrationRegistry; @@ -51,6 +53,8 @@ export class OctokitProvider { * gets standard Octokit client based on repository URL. * * @param repoUrl - Repository URL + * + * @deprecated use the internal {@link getOctokitOptions} function instead */ async getOctokit( repoUrl: string, diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubActionsDispatch.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubActionsDispatch.ts index 0c8b4d4aab..f2329c9ca1 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubActionsDispatch.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubActionsDispatch.ts @@ -13,24 +13,21 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +import { InputError } from '@backstage/errors'; import { - DefaultGithubCredentialsProvider, GithubCredentialsProvider, ScmIntegrations, } from '@backstage/integration'; +import { Octokit } from 'octokit'; import { createTemplateAction } from '../../createTemplateAction'; -import { OctokitProvider } from './OctokitProvider'; +import { parseRepoUrl } from '../publish/util'; +import { getOctokitOptions } from './helpers'; export function createGithubActionsDispatchAction(options: { integrations: ScmIntegrations; githubCredentialsProvider?: GithubCredentialsProvider; }) { const { integrations, githubCredentialsProvider } = options; - const octokitProvider = new OctokitProvider( - integrations, - githubCredentialsProvider || - DefaultGithubCredentialsProvider.fromIntegrations(integrations), - ); return createTemplateAction<{ repoUrl: string; @@ -90,9 +87,19 @@ export function createGithubActionsDispatchAction(options: { `Dispatching workflow ${workflowId} for repo ${repoUrl} on ${branchOrTagName}`, ); - const { client, owner, repo } = await octokitProvider.getOctokit( - repoUrl, - { token: providedToken }, + const { owner, repo } = parseRepoUrl(repoUrl, integrations); + + if (!owner) { + throw new InputError('Invalid repository owner provided in repoUrl'); + } + + const client = new Octokit( + await getOctokitOptions({ + integrations, + repoUrl, + credentialsProvider: githubCredentialsProvider, + token: providedToken, + }), ); await client.rest.actions.createWorkflowDispatch({ diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubWebhook.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubWebhook.ts index 0c93ae1dd5..dc52bd5fb4 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubWebhook.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubWebhook.ts @@ -14,27 +14,27 @@ * limitations under the License. */ import { - DefaultGithubCredentialsProvider, GithubCredentialsProvider, ScmIntegrationRegistry, } from '@backstage/integration'; import { createTemplateAction } from '../../createTemplateAction'; -import { OctokitProvider } from './OctokitProvider'; import { emitterEventNames } from '@octokit/webhooks'; import { assertError } from '@backstage/errors'; +import { Octokit } from 'octokit'; +import { getOctokitOptions } from './helpers'; +import { parseRepoUrl } from '../publish/util'; export function createGithubWebhookAction(options: { integrations: ScmIntegrationRegistry; defaultWebhookSecret?: string; githubCredentialsProvider?: GithubCredentialsProvider; }) { - const { integrations, defaultWebhookSecret, githubCredentialsProvider } = - options; - const octokitProvider = new OctokitProvider( + const { integrations, - githubCredentialsProvider ?? - DefaultGithubCredentialsProvider.fromIntegrations(integrations), - ); + defaultWebhookSecret, + githubCredentialsProvider, + } = options; + const eventNames = emitterEventNames.filter(event => !event.includes('.')); return createTemplateAction<{ @@ -127,12 +127,21 @@ export function createGithubWebhookAction(options: { } = ctx.input; ctx.logger.info(`Creating webhook ${webhookUrl} for repo ${repoUrl}`); + const { owner, repo } = parseRepoUrl(repoUrl, integrations); - const { client, owner, repo } = await octokitProvider.getOctokit( - repoUrl, - { token: providedToken }, + const client = new Octokit( + await getOctokitOptions({ + integrations, + credentialsProvider: githubCredentialsProvider, + repoUrl: repoUrl, + token: providedToken, + }), ); + if (!owner) { + throw new InputError('Invalid repository owner'); + } + try { const insecure_ssl = insecureSsl ? '1' : '0'; await client.rest.repos.createWebhook({ 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 cabe40986f..418cce5043 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/github.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/github.ts @@ -14,7 +14,6 @@ * limitations under the License. */ import { - DefaultGithubCredentialsProvider, GithubCredentialsProvider, ScmIntegrationRegistry, } from '@backstage/integration'; @@ -22,11 +21,12 @@ import { enableBranchProtectionOnDefaultRepoBranch, initRepoAndPush, } from '../helpers'; -import { getRepoSourceDirectory } from './util'; +import { getRepoSourceDirectory, parseRepoUrl } from './util'; import { createTemplateAction } from '../../createTemplateAction'; import { Config } from '@backstage/config'; -import { OctokitProvider } from '../github/OctokitProvider'; -import { assertError } from '@backstage/errors'; +import { assertError, InputError } from '@backstage/errors'; +import { getOctokitOptions } from '../github/helpers'; +import { Octokit } from 'octokit'; export function createPublishGithubAction(options: { integrations: ScmIntegrationRegistry; @@ -34,11 +34,6 @@ export function createPublishGithubAction(options: { githubCredentialsProvider?: GithubCredentialsProvider; }) { const { integrations, config, githubCredentialsProvider } = options; - const octokitProvider = new OctokitProvider( - integrations, - githubCredentialsProvider || - DefaultGithubCredentialsProvider.fromIntegrations(integrations), - ); return createTemplateAction<{ repoUrl: string; @@ -160,10 +155,20 @@ export function createPublishGithubAction(options: { token: providedToken, } = ctx.input; - const { client, token, owner, repo } = await octokitProvider.getOctokit( + const { owner, repo } = parseRepoUrl(repoUrl, integrations); + + const octokitOptions = await getOctokitOptions({ + integrations, + credentialsProvider: githubCredentialsProvider, + token: providedToken, repoUrl, - { token: providedToken }, - ); + }); + + const client = new Octokit(octokitOptions); + + if (!owner) { + throw new InputError('Invalid repository owner provided in repoUrl'); + } const user = await client.rest.users.getByUsername({ username: owner, @@ -253,7 +258,7 @@ export function createPublishGithubAction(options: { defaultBranch, auth: { username: 'x-access-token', - password: token, + password: octokitOptions.token, }, logger: ctx.logger, commitMessage: config.getOptionalString( diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/githubPullRequest.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/githubPullRequest.ts index c329b6b6f3..ca70084ef5 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/githubPullRequest.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/githubPullRequest.ts @@ -20,7 +20,6 @@ import { parseRepoUrl, isExecutable } from './util'; import { GithubCredentialsProvider, ScmIntegrationRegistry, - SingleInstanceGithubCredentialsProvider, } from '@backstage/integration'; import { zipObject } from 'lodash'; import { createTemplateAction } from '../../createTemplateAction'; @@ -29,6 +28,7 @@ import { InputError, CustomErrorBase } from '@backstage/errors'; import { createPullRequest } from 'octokit-plugin-create-pull-request'; import globby from 'globby'; import { resolveSafeChildPath } from '@backstage/backend-common'; +import { getOctokitOptions } from '../github/helpers'; export type Encoding = 'utf-8' | 'base64'; @@ -65,40 +65,15 @@ export const defaultClientFactory = async ({ host = 'github.com', token: providedToken, }: ClientFactoryInput): Promise => { - const integrationConfig = integrations.github.byHost(host)?.config; + const octokitOptions = await getOctokitOptions({ + integrations, + credentialsProvider: githubCredentialsProvider, + repoUrl: `https://${host}/${owner}/${repo}`, + token: providedToken, + }); + const OctokitPR = Octokit.plugin(createPullRequest); - - if (!integrationConfig) { - throw new InputError(`No integration for host ${host}`); - } - - if (providedToken) { - return new OctokitPR({ - auth: providedToken, - baseUrl: integrationConfig.apiBaseUrl, - }); - } - - const credentialsProvider = - githubCredentialsProvider || - SingleInstanceGithubCredentialsProvider.create(integrationConfig); - - const { token } = await credentialsProvider.getCredentials({ - url: `https://${host}/${encodeURIComponent(owner)}/${encodeURIComponent( - repo, - )}`, - }); - - if (!token) { - throw new InputError( - `No token available for host: ${host}, with owner ${owner}, and repo ${repo}`, - ); - } - - return new OctokitPR({ - auth: token, - baseUrl: integrationConfig.apiBaseUrl, - }); + return new OctokitPR(octokitOptions); }; interface CreateGithubPullRequestActionOptions { From 9553964f2858332c6b991226e4f621f8c4d8224c Mon Sep 17 00:00:00 2001 From: blam Date: Mon, 21 Feb 2022 15:41:30 +0100 Subject: [PATCH 305/383] chore: providing a new helper for generating octokit credentialsProvider Signed-off-by: blam --- .../actions/builtin/github/helpers.ts | 84 +++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/helpers.ts diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/helpers.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/helpers.ts new file mode 100644 index 0000000000..4f369b7263 --- /dev/null +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/helpers.ts @@ -0,0 +1,84 @@ +/* + * 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 { InputError } from '@backstage/errors'; +import { + DefaultGithubCredentialsProvider, + GithubCredentialsProvider, + ScmIntegrationRegistry, +} from '@backstage/integration'; +import { OctokitOptions } from '@octokit/core/dist-types/types'; +import { parseRepoUrl } from '../publish/util'; + +interface GetOctokitOptionsInput { + integrations: ScmIntegrationRegistry; + credentialsProvider?: GithubCredentialsProvider; + token?: string; + repoUrl: string; +} +export const getOctokitOptions = async ({ + integrations, + credentialsProvider, + repoUrl, + token, +}: GetOctokitOptionsInput): Promise => { + const { owner, repo, host } = parseRepoUrl(repoUrl, integrations); + + if (!owner) { + throw new InputError(`No owner provided for repo ${repoUrl}`); + } + + const integrationConfig = integrations.github.byHost(host)?.config; + + if (!integrationConfig) { + throw new InputError(`No integration for host ${host}`); + } + + // Short circuit the internal Github Token provider the token provided + // by the action or the caller. + if (token) { + return { + auth: token, + baseUrl: integrationConfig.apiBaseUrl, + previews: ['nebula-preview'], + }; + } + + const githubCredentialsProvider = + credentialsProvider ?? + DefaultGithubCredentialsProvider.fromIntegrations(integrations); + + // TODO(blam): Consider changing this API to have owner, repo interface instead of URL as the it's + // needless to create URL and then parse again the other side. + const { + token: credentialProviderToken, + } = await githubCredentialsProvider.getCredentials({ + url: `https://${host}/${encodeURIComponent(owner)}/${encodeURIComponent( + repo, + )}`, + }); + + if (!credentialProviderToken) { + throw new InputError( + `No token available for host: ${host}, with owner ${owner}, and repo ${repo}`, + ); + } + + return { + auth: credentialProviderToken, + baseUrl: integrationConfig.apiBaseUrl, + previews: ['nebula-preview'], + }; +}; From 1a864a3b687b51a25d67d69d99826094b6ba1e85 Mon Sep 17 00:00:00 2001 From: blam Date: Mon, 21 Feb 2022 15:57:18 +0100 Subject: [PATCH 306/383] chore: updating the api report Signed-off-by: blam --- plugins/scaffolder-backend/api-report.md | 4 +++- .../actions/builtin/github/OctokitProvider.ts | 6 ++++-- .../actions/builtin/github/githubWebhook.ts | 11 ++++------- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/plugins/scaffolder-backend/api-report.md b/plugins/scaffolder-backend/api-report.md index aea6689183..3947d64049 100644 --- a/plugins/scaffolder-backend/api-report.md +++ b/plugins/scaffolder-backend/api-report.md @@ -382,13 +382,15 @@ export function fetchContents({ // Warning: (ae-missing-release-tag) "OctokitProvider" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // -// @public +// @public @deprecated export class OctokitProvider { constructor( integrations: ScmIntegrationRegistry, githubCredentialsProvider?: GithubCredentialsProvider, ); // Warning: (ae-forgotten-export) The symbol "OctokitIntegration" needs to be exported by the entry point index.d.ts + // + // @deprecated getOctokit( repoUrl: string, options?: { diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/OctokitProvider.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/OctokitProvider.ts index d481e42c9f..92b8554e37 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/OctokitProvider.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/OctokitProvider.ts @@ -33,7 +33,8 @@ export type OctokitIntegration = { * OctokitProvider provides Octokit client based on ScmIntegrationsRegistry configuration. * OctokitProvider supports GitHub credentials caching out of the box. * - * @deprecated use the internal {@link getOctokitOptions} function instead + * @deprecated we are no longer providing a way from the scaffolder to generate octokit instances. + * Implement your own if you're using this method from an external package, or suse the internal `getOctokitOptions` function instead */ export class OctokitProvider { private readonly integrations: ScmIntegrationRegistry; @@ -54,7 +55,8 @@ export class OctokitProvider { * * @param repoUrl - Repository URL * - * @deprecated use the internal {@link getOctokitOptions} function instead + * @deprecated we are no longer providing a way from the scaffolder to generate octokit instances. + * Implement your own if you're using this method from an external package, or suse the internal `getOctokitOptions` function instead */ async getOctokit( repoUrl: string, diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubWebhook.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubWebhook.ts index dc52bd5fb4..ac75dd9d82 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubWebhook.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubWebhook.ts @@ -19,7 +19,7 @@ import { } from '@backstage/integration'; import { createTemplateAction } from '../../createTemplateAction'; import { emitterEventNames } from '@octokit/webhooks'; -import { assertError } from '@backstage/errors'; +import { assertError, InputError } from '@backstage/errors'; import { Octokit } from 'octokit'; import { getOctokitOptions } from './helpers'; import { parseRepoUrl } from '../publish/util'; @@ -29,11 +29,8 @@ export function createGithubWebhookAction(options: { defaultWebhookSecret?: string; githubCredentialsProvider?: GithubCredentialsProvider; }) { - const { - integrations, - defaultWebhookSecret, - githubCredentialsProvider, - } = options; + const { integrations, defaultWebhookSecret, githubCredentialsProvider } = + options; const eventNames = emitterEventNames.filter(event => !event.includes('.')); @@ -139,7 +136,7 @@ export function createGithubWebhookAction(options: { ); if (!owner) { - throw new InputError('Invalid repository owner'); + throw new InputError('Invalid repository owner provided in repoUrl'); } try { From 5042a822f6ae510d9c3268f352d966c6dd74acf3 Mon Sep 17 00:00:00 2001 From: blam Date: Mon, 21 Feb 2022 16:08:16 +0100 Subject: [PATCH 307/383] chore: fix auth provided Signed-off-by: blam --- .../src/scaffolder/actions/builtin/publish/github.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 418cce5043..7ae9f317cf 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/github.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/github.ts @@ -258,7 +258,7 @@ export function createPublishGithubAction(options: { defaultBranch, auth: { username: 'x-access-token', - password: octokitOptions.token, + password: octokitOptions.auth, }, logger: ctx.logger, commitMessage: config.getOptionalString( From b1744f1153b33dd78dac5084f135f182ee221720 Mon Sep 17 00:00:00 2001 From: blam Date: Mon, 21 Feb 2022 16:13:07 +0100 Subject: [PATCH 308/383] chore: added changeset Signed-off-by: blam --- .changeset/poor-pens-complain.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 .changeset/poor-pens-complain.md diff --git a/.changeset/poor-pens-complain.md b/.changeset/poor-pens-complain.md new file mode 100644 index 0000000000..333ec208ee --- /dev/null +++ b/.changeset/poor-pens-complain.md @@ -0,0 +1,7 @@ +--- +'@backstage/plugin-scaffolder-backend': patch +--- + +- **DEPRECATED** - `OctokitProvider` has been deprecated and will be removed in upcoming versions + This helper doesn't make sense to be export from the `plugin-scaffolder-backend` and possibly will be moved into the `integrations` package at a later date. + All implementations have been moved over to a private implementation called `getOctokitOptions` which is then passed to the `Octokit` constructor. If you're using this API you should consider duplicating the logic that lives in `getOctokitOptions` and move away from the deprecated export. From 5c5362137a31eba1e196ec0314b9900724d0c177 Mon Sep 17 00:00:00 2001 From: djamaile Date: Mon, 21 Feb 2022 16:30:04 +0100 Subject: [PATCH 309/383] refactor: respond to comments Signed-off-by: djamaile --- .../MultistepJsonForm/MultistepJsonForm.tsx | 37 ++++++++----------- 1 file changed, 15 insertions(+), 22 deletions(-) diff --git a/plugins/scaffolder/src/components/MultistepJsonForm/MultistepJsonForm.tsx b/plugins/scaffolder/src/components/MultistepJsonForm/MultistepJsonForm.tsx index 8936ab7994..6e2ac32c89 100644 --- a/plugins/scaffolder/src/components/MultistepJsonForm/MultistepJsonForm.tsx +++ b/plugins/scaffolder/src/components/MultistepJsonForm/MultistepJsonForm.tsx @@ -108,15 +108,8 @@ export function getReviewData(formData: Record, steps: Step[]) { return reviewData; } -export const MultistepJsonForm = ({ - steps, - formData, - onChange, - onReset, - onFinish, - fields, - widgets, -}: Props) => { +export const MultistepJsonForm = (props: Props) => { + const { formData, onChange, onReset, onFinish, fields, widgets } = props; const [activeStep, setActiveStep] = useState(0); const [disableButtons, setDisableButtons] = useState(false); const errorApi = useApi(errorApiRef); @@ -139,21 +132,21 @@ export const MultistepJsonForm = ({ ); // remove the feature flag property key from required if they are not active - if (Array.isArray(schema.required) && removedPropertyKeys.length > 0) { - for (const property of removedPropertyKeys) { - const index = schema.required.findIndex(r => r === property); - if (index > -1) { - schema.required.splice(index, 1); - } - } - } + schema.required = Array.isArray(schema.required) + ? schema.required?.filter( + r => !removedPropertyKeys.includes(r as string), + ) + : schema.required; } return schema; }; - const updatedSteps = steps.filter(s => { - const featureFlag = s.schema[featureFlagKey] as string; - if (featureFlag && !featureFlagApi.isActive(featureFlag)) { + const steps = props.steps.filter(s => { + const featureFlag = s.schema[featureFlagKey]; + if ( + typeof featureFlag === 'string' && + !featureFlagApi.isActive(featureFlag) + ) { return null; } // filter out properties accordingly to the feature flag settings; @@ -166,7 +159,7 @@ export const MultistepJsonForm = ({ onReset(); }; const handleNext = () => { - setActiveStep(Math.min(activeStep + 1, updatedSteps.length)); + setActiveStep(Math.min(activeStep + 1, steps.length)); }; const handleBack = () => setActiveStep(Math.max(activeStep - 1, 0)); const handleCreate = async () => { @@ -182,7 +175,7 @@ export const MultistepJsonForm = ({ return ( <> - {updatedSteps.map(({ title, schema, ...formProps }, index) => { + {steps.map(({ title, schema, ...formProps }, index) => { return ( Date: Mon, 21 Feb 2022 15:38:07 +0000 Subject: [PATCH 310/383] Refactor to not need core-app-api Signed-off-by: Karan Shah --- plugins/airbrake/package.json | 1 - plugins/airbrake/src/api/mock/LocalDiscoveryApi.ts | 11 ++++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/plugins/airbrake/package.json b/plugins/airbrake/package.json index 510cdf3043..128373881c 100644 --- a/plugins/airbrake/package.json +++ b/plugins/airbrake/package.json @@ -25,7 +25,6 @@ "dependencies": { "@backstage/catalog-model": "^0.10.0", "@backstage/core-components": "^0.8.9", - "@backstage/core-app-api": "^0.5.3", "@backstage/core-plugin-api": "^0.6.1", "@backstage/dev-utils": "^0.2.22", "@backstage/plugin-catalog-react": "^0.6.15", diff --git a/plugins/airbrake/src/api/mock/LocalDiscoveryApi.ts b/plugins/airbrake/src/api/mock/LocalDiscoveryApi.ts index 6990ce9c93..c3080a8104 100644 --- a/plugins/airbrake/src/api/mock/LocalDiscoveryApi.ts +++ b/plugins/airbrake/src/api/mock/LocalDiscoveryApi.ts @@ -13,9 +13,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +import { DiscoveryApi } from '@backstage/core-plugin-api'; -import { UrlPatternDiscovery } from '@backstage/core-app-api'; - -export const localDiscoveryApi = UrlPatternDiscovery.compile( - 'http://localhost:7007/api/{{ pluginId }}', -); +export const localDiscoveryApi: DiscoveryApi = { + async getBaseUrl(pluginId: string): Promise { + return `http://localhost:7007/api/${pluginId}`; + }, +}; From 3675e7120c7fc9935ee73c2bc27bb7af5ed893f3 Mon Sep 17 00:00:00 2001 From: Eric Peterson Date: Mon, 21 Feb 2022 17:12:50 +0100 Subject: [PATCH 311/383] Minor feedback Signed-off-by: Eric Peterson --- .changeset/healthy-shoes-flash.md | 2 +- plugins/techdocs/src/reader/components/TechDocsPage.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.changeset/healthy-shoes-flash.md b/.changeset/healthy-shoes-flash.md index 7e1619e9ec..5e255020da 100644 --- a/.changeset/healthy-shoes-flash.md +++ b/.changeset/healthy-shoes-flash.md @@ -1,5 +1,5 @@ --- -'@backstage/plugin-techdocs': minor +'@backstage/plugin-techdocs': patch --- Changed to use from createApp diff --git a/plugins/techdocs/src/reader/components/TechDocsPage.tsx b/plugins/techdocs/src/reader/components/TechDocsPage.tsx index c351f88f6e..d96bed6b60 100644 --- a/plugins/techdocs/src/reader/components/TechDocsPage.tsx +++ b/plugins/techdocs/src/reader/components/TechDocsPage.tsx @@ -41,7 +41,7 @@ export type TechDocsPageProps = { }; export const TechDocsPage = ({ children }: TechDocsPageProps) => { - const NotFoundErrorPage = useApp().getComponents().NotFoundErrorPage; + const { NotFoundErrorPage } = useApp().getComponents(); const outlet = useOutlet(); const [documentReady, setDocumentReady] = useState(false); From ed09ad8093064eeaf659aec4f2bd0e06eda54601 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Fri, 18 Feb 2022 15:14:58 +0100 Subject: [PATCH 312/383] catalog-model: move LocationSpec to catalog-backend Signed-off-by: Patrik Oldsberg --- .changeset/khaki-needles-smile.md | 5 +++++ .changeset/kind-squids-repair.md | 7 ++++++ .changeset/late-mice-battle.md | 9 ++++++++ .../software-catalog/external-integrations.md | 5 +++-- packages/catalog-client/api-report.md | 6 +++-- packages/catalog-client/src/types/api.ts | 8 +++++-- packages/catalog-model/api-report.md | 2 +- .../catalog-model/src/location/helpers.ts | 18 --------------- packages/catalog-model/src/location/types.ts | 1 + .../catalog-backend-module-aws/api-report.md | 2 +- .../AwsOrganizationCloudAccountProcessor.ts | 3 ++- .../catalog-backend-module-ldap/api-report.md | 2 +- .../src/processors/LdapOrgReaderProcessor.ts | 2 +- .../api-report.md | 2 +- .../MicrosoftGraphOrgReaderProcessor.ts | 2 +- plugins/catalog-backend/api-report.md | 22 ++++++++++++++++--- .../src/ingestion/CatalogRules.test.ts | 3 ++- .../src/ingestion/CatalogRules.ts | 3 ++- .../AnnotateLocationEntityProcessor.test.ts | 3 ++- .../AnnotateLocationEntityProcessor.ts | 3 +-- .../AnnotateScmSlugEntityProcessor.test.ts | 3 ++- .../AnnotateScmSlugEntityProcessor.ts | 4 ++-- .../processors/AwsS3DiscoveryProcessor.ts | 2 +- .../AzureDevOpsDiscoveryProcessor.test.ts | 2 +- .../AzureDevOpsDiscoveryProcessor.ts | 3 +-- .../BitbucketDiscoveryProcessor.test.ts | 2 +- .../processors/BitbucketDiscoveryProcessor.ts | 3 +-- .../processors/BuiltinKindsEntityProcessor.ts | 3 +-- .../processors/CodeOwnersProcessor.test.ts | 2 +- .../processors/CodeOwnersProcessor.ts | 4 ++-- .../processors/FileReaderProcessor.ts | 2 +- .../GitLabDiscoveryProcessor.test.ts | 2 +- .../processors/GitLabDiscoveryProcessor.ts | 3 +-- .../GithubDiscoveryProcessor.test.ts | 2 +- .../processors/GithubDiscoveryProcessor.ts | 3 +-- .../GithubMultiOrgReaderProcessor.ts | 3 +-- .../GithubOrgReaderProcessor.test.ts | 2 +- .../processors/GithubOrgReaderProcessor.ts | 3 +-- .../LocationEntityProcessor.test.ts | 2 +- .../processors/LocationEntityProcessor.ts | 4 ++-- .../processors/PlaceholderProcessor.ts | 4 ++-- .../processors/StaticLocationProcessor.ts | 3 +-- .../processors/UrlReaderProcessor.ts | 3 ++- .../src/ingestion/processors/results.ts | 4 ++-- .../src/ingestion/processors/types.ts | 19 +++++++++++++++- .../src/ingestion/processors/util/parse.ts | 12 +++++----- .../catalog-backend/src/ingestion/types.ts | 3 ++- ...faultCatalogProcessingOrchestrator.test.ts | 2 +- .../DefaultCatalogProcessingOrchestrator.ts | 2 +- .../catalog-backend/src/processing/util.ts | 2 +- .../src/providers/DefaultLocationStore.ts | 17 +++++++------- .../src/service/AuthorizedLocationService.ts | 6 ++--- .../src/service/DefaultLocationService.ts | 11 +++++----- .../src/service/createRouter.test.ts | 14 ++++++------ .../src/service/createRouter.ts | 8 +++---- plugins/catalog-backend/src/service/index.ts | 1 + plugins/catalog-backend/src/service/types.ts | 18 ++++++++++++--- plugins/catalog-backend/src/service/util.ts | 2 +- .../catalog-backend/src/util/conversion.ts | 2 +- plugins/scaffolder-backend/api-report.md | 2 +- .../processor/ScaffolderEntitiesProcessor.ts | 2 +- plugins/techdocs/api-report.md | 1 - plugins/techdocs/src/types.ts | 4 ++-- 63 files changed, 178 insertions(+), 126 deletions(-) create mode 100644 .changeset/khaki-needles-smile.md create mode 100644 .changeset/kind-squids-repair.md create mode 100644 .changeset/late-mice-battle.md diff --git a/.changeset/khaki-needles-smile.md b/.changeset/khaki-needles-smile.md new file mode 100644 index 0000000000..02098f94f0 --- /dev/null +++ b/.changeset/khaki-needles-smile.md @@ -0,0 +1,5 @@ +--- +'@backstage/catalog-model': patch +--- + +Deprecated the `LocationSpec` export, which should now be imported from `@backstage/plugin-catalog-backend` instead. diff --git a/.changeset/kind-squids-repair.md b/.changeset/kind-squids-repair.md new file mode 100644 index 0000000000..f596553a0c --- /dev/null +++ b/.changeset/kind-squids-repair.md @@ -0,0 +1,7 @@ +--- +'@backstage/plugin-catalog-backend': patch +--- + +Added `LocationSpec`, which was moved over from `@backstage/catalog-model`. + +Added `LocationInput`, which replaced `LocationSpec` where it was used in the `LocationService` and `LocationStore` interfaces. The `LocationInput` type deprecates the `presence` field, which was not being used in those contexts. diff --git a/.changeset/late-mice-battle.md b/.changeset/late-mice-battle.md new file mode 100644 index 0000000000..87843ad110 --- /dev/null +++ b/.changeset/late-mice-battle.md @@ -0,0 +1,9 @@ +--- +'@backstage/catalog-client': patch +'@backstage/plugin-catalog-backend-module-ldap': patch +'@backstage/plugin-catalog-backend-module-msgraph': patch +'@backstage/plugin-scaffolder-backend': patch +'@backstage/plugin-techdocs': patch +--- + +Updated usage of the `LocationSpec` type from `@backstage/catalog-model`, which is deprecated. diff --git a/docs/features/software-catalog/external-integrations.md b/docs/features/software-catalog/external-integrations.md index f8a44ceef6..59caf9475c 100644 --- a/docs/features/software-catalog/external-integrations.md +++ b/docs/features/software-catalog/external-integrations.md @@ -367,11 +367,11 @@ The class will have this basic structure: ```ts import { UrlReader } from '@backstage/backend-common'; -import { LocationSpec } from '@backstage/catalog-model'; import { results, CatalogProcessor, CatalogProcessorEmit, + LocationSpec, } from '@backstage/plugin-catalog-backend'; // A processor that reads from the fictional System-X @@ -448,13 +448,14 @@ behavior for `system-x` that we implemented earlier. ```ts import { UrlReader } from '@backstage/backend-common'; -import { Entity, LocationSpec } from '@backstage/catalog-model'; +import { Entity } from '@backstage/catalog-model'; import { results, CatalogProcessor, CatalogProcessorEmit, CatalogProcessorCache, CatalogProcessorParser, + LocationSpec, } from '@backstage/plugin-catalog-backend'; // It's recommended to always bump the CACHE_KEY version if you make diff --git a/packages/catalog-client/api-report.md b/packages/catalog-client/api-report.md index d5991303eb..c957859fec 100644 --- a/packages/catalog-client/api-report.md +++ b/packages/catalog-client/api-report.md @@ -5,7 +5,6 @@ ```ts import { Entity } from '@backstage/catalog-model'; import { EntityName } from '@backstage/catalog-model'; -import { LocationSpec } from '@backstage/catalog-model'; // @public export type AddLocationRequest = { @@ -211,6 +210,9 @@ export interface GetEntityFacetsResponse { // @public type Location_2 = { id: string; -} & LocationSpec; + type: string; + target: string; + presence?: 'optional' | 'required'; +}; export { Location_2 as Location }; ``` diff --git a/packages/catalog-client/src/types/api.ts b/packages/catalog-client/src/types/api.ts index b070820c8b..bbafedb27d 100644 --- a/packages/catalog-client/src/types/api.ts +++ b/packages/catalog-client/src/types/api.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import { Entity, EntityName, LocationSpec } from '@backstage/catalog-model'; +import { Entity, EntityName } from '@backstage/catalog-model'; /** * This symbol can be used in place of a value when passed to filters in e.g. @@ -242,7 +242,11 @@ export interface CatalogRequestOptions { */ export type Location = { id: string; -} & LocationSpec; + type: string; + target: string; + /** @deprecated This field is is ignored */ + presence?: 'optional' | 'required'; +}; /** * The request type for {@link CatalogClient.addLocation}. diff --git a/packages/catalog-model/api-report.md b/packages/catalog-model/api-report.md index 0afe87e709..3a9e430cd8 100644 --- a/packages/catalog-model/api-report.md +++ b/packages/catalog-model/api-report.md @@ -363,7 +363,7 @@ export { LocationEntityV1alpha1 }; // @public export const locationEntityV1alpha1Validator: KindValidator; -// @public +// @public @deprecated export type LocationSpec = { type: string; target: string; diff --git a/packages/catalog-model/src/location/helpers.ts b/packages/catalog-model/src/location/helpers.ts index d308c00449..7c73908157 100644 --- a/packages/catalog-model/src/location/helpers.ts +++ b/packages/catalog-model/src/location/helpers.ts @@ -21,9 +21,6 @@ import { ANNOTATION_LOCATION } from './annotation'; /** * Parses a string form location reference. * - * Note that the return type is not `LocationSpec`, because we do not want to - * conflate the string form with the additional properties of that type. - * * @public * @param ref - A string-form location reference, e.g. `'url:https://host'` * @returns A location reference, e.g. `{ type: 'url', target: 'https://host' }` @@ -36,11 +33,6 @@ export function parseLocationReference(ref: string) { /** * Parses a string form location reference. * - * @remarks - * - * Note that the return type is not `LocationSpec`, because we do not want to - * conflate the string form with the additional properties of that type. - * * @public * @param ref - A string-form location ref, e.g. `'url:https://host'` * @returns A location ref, e.g. `{ type: 'url', target: 'https://host' }` @@ -83,11 +75,6 @@ export function parseLocationRef(ref: string): { /** * Turns a location reference into its string form. * - * @remarks - * - * Note that the input type is not `LocationSpec`, because we do not want to - * conflate the string form with the additional properties of that type. - * * @public * @param ref - A location reference, e.g. `{ type: 'url', target: 'https://host' }` * @returns A string-form location reference, e.g. `'url:https://host'` @@ -103,11 +90,6 @@ export function stringifyLocationReference(ref: { /** * Turns a location ref into its string form. * - * @remarks - * - * Note that the input type is not `LocationSpec`, because we do not want to - * conflate the string form with the additional properties of that type. - * * @public * @param ref - A location ref, e.g. `{ type: 'url', target: 'https://host' }` * @returns A string-form location ref, e.g. `'url:https://host'` diff --git a/packages/catalog-model/src/location/types.ts b/packages/catalog-model/src/location/types.ts index 2ed8fd717b..9b87e4919d 100644 --- a/packages/catalog-model/src/location/types.ts +++ b/packages/catalog-model/src/location/types.ts @@ -24,6 +24,7 @@ * default value: 'required'. * * @public + * @deprecated Import from `@backstage/plugin-catalog-backend` instead. */ export type LocationSpec = { type: string; diff --git a/plugins/catalog-backend-module-aws/api-report.md b/plugins/catalog-backend-module-aws/api-report.md index 159420f8e9..1cab6555fe 100644 --- a/plugins/catalog-backend-module-aws/api-report.md +++ b/plugins/catalog-backend-module-aws/api-report.md @@ -6,7 +6,7 @@ import { CatalogProcessor } from '@backstage/plugin-catalog-backend'; import { CatalogProcessorEmit } from '@backstage/plugin-catalog-backend'; import { Config } from '@backstage/config'; -import { LocationSpec } from '@backstage/catalog-model'; +import { LocationSpec } from '@backstage/plugin-catalog-backend'; import { Logger as Logger_2 } from 'winston'; // @public diff --git a/plugins/catalog-backend-module-aws/src/processors/AwsOrganizationCloudAccountProcessor.ts b/plugins/catalog-backend-module-aws/src/processors/AwsOrganizationCloudAccountProcessor.ts index 5db39cefaa..e5e72d5fa8 100644 --- a/plugins/catalog-backend-module-aws/src/processors/AwsOrganizationCloudAccountProcessor.ts +++ b/plugins/catalog-backend-module-aws/src/processors/AwsOrganizationCloudAccountProcessor.ts @@ -14,11 +14,12 @@ * limitations under the License. */ -import { LocationSpec, ResourceEntityV1alpha1 } from '@backstage/catalog-model'; +import { ResourceEntityV1alpha1 } from '@backstage/catalog-model'; import { Config } from '@backstage/config'; import { CatalogProcessor, CatalogProcessorEmit, + LocationSpec, results, } from '@backstage/plugin-catalog-backend'; import AWS, { Credentials, Organizations } from 'aws-sdk'; diff --git a/plugins/catalog-backend-module-ldap/api-report.md b/plugins/catalog-backend-module-ldap/api-report.md index e14dc54a6b..f6b2475e65 100644 --- a/plugins/catalog-backend-module-ldap/api-report.md +++ b/plugins/catalog-backend-module-ldap/api-report.md @@ -11,7 +11,7 @@ import { EntityProvider } from '@backstage/plugin-catalog-backend'; import { EntityProviderConnection } from '@backstage/plugin-catalog-backend'; import { GroupEntity } from '@backstage/catalog-model'; import { JsonValue } from '@backstage/types'; -import { LocationSpec } from '@backstage/catalog-model'; +import { LocationSpec } from '@backstage/plugin-catalog-backend'; import { Logger as Logger_2 } from 'winston'; import { SearchEntry } from 'ldapjs'; import { SearchOptions } from 'ldapjs'; diff --git a/plugins/catalog-backend-module-ldap/src/processors/LdapOrgReaderProcessor.ts b/plugins/catalog-backend-module-ldap/src/processors/LdapOrgReaderProcessor.ts index 4d492c2454..6c31d5a27d 100644 --- a/plugins/catalog-backend-module-ldap/src/processors/LdapOrgReaderProcessor.ts +++ b/plugins/catalog-backend-module-ldap/src/processors/LdapOrgReaderProcessor.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import { LocationSpec } from '@backstage/catalog-model'; import { Config } from '@backstage/config'; import { Logger } from 'winston'; import { @@ -28,6 +27,7 @@ import { import { CatalogProcessor, CatalogProcessorEmit, + LocationSpec, results, } from '@backstage/plugin-catalog-backend'; diff --git a/plugins/catalog-backend-module-msgraph/api-report.md b/plugins/catalog-backend-module-msgraph/api-report.md index bb442aa544..dd967a8dd4 100644 --- a/plugins/catalog-backend-module-msgraph/api-report.md +++ b/plugins/catalog-backend-module-msgraph/api-report.md @@ -9,7 +9,7 @@ import { Config } from '@backstage/config'; import { EntityProvider } from '@backstage/plugin-catalog-backend'; import { EntityProviderConnection } from '@backstage/plugin-catalog-backend'; import { GroupEntity } from '@backstage/catalog-model'; -import { LocationSpec } from '@backstage/catalog-model'; +import { LocationSpec } from '@backstage/plugin-catalog-backend'; import { Logger as Logger_2 } from 'winston'; import * as MicrosoftGraph from '@microsoft/microsoft-graph-types'; import * as msal from '@azure/msal-node'; diff --git a/plugins/catalog-backend-module-msgraph/src/processors/MicrosoftGraphOrgReaderProcessor.ts b/plugins/catalog-backend-module-msgraph/src/processors/MicrosoftGraphOrgReaderProcessor.ts index 78b2922f60..2725075c1c 100644 --- a/plugins/catalog-backend-module-msgraph/src/processors/MicrosoftGraphOrgReaderProcessor.ts +++ b/plugins/catalog-backend-module-msgraph/src/processors/MicrosoftGraphOrgReaderProcessor.ts @@ -14,11 +14,11 @@ * limitations under the License. */ -import { LocationSpec } from '@backstage/catalog-model'; import { Config } from '@backstage/config'; import { CatalogProcessor, CatalogProcessorEmit, + LocationSpec, results, } from '@backstage/plugin-catalog-backend'; import { Logger } from 'winston'; diff --git a/plugins/catalog-backend/api-report.md b/plugins/catalog-backend/api-report.md index 5dc0981fb0..9b4db418b3 100644 --- a/plugins/catalog-backend/api-report.md +++ b/plugins/catalog-backend/api-report.md @@ -22,7 +22,6 @@ import { IndexableDocument } from '@backstage/search-common'; import { JsonObject } from '@backstage/types'; import { JsonValue } from '@backstage/types'; import { Location as Location_2 } from '@backstage/catalog-client'; -import { LocationSpec } from '@backstage/catalog-model'; import { Logger as Logger_2 } from 'winston'; import { Permission } from '@backstage/plugin-permission-common'; import { PermissionAuthorizer } from '@backstage/plugin-permission-common'; @@ -812,11 +811,21 @@ export type LocationEntityProcessorOptions = { integrations: ScmIntegrationRegistry; }; +// @public +export interface LocationInput { + // @deprecated (undocumented) + presence?: 'optional' | 'required'; + // (undocumented) + target: string; + // (undocumented) + type: string; +} + // @public export interface LocationService { // (undocumented) createLocation( - spec: LocationSpec, + location: LocationInput, dryRun: boolean, options?: { authorizationToken?: string; @@ -846,10 +855,17 @@ export interface LocationService { }): Promise; } +// @public +export type LocationSpec = { + type: string; + target: string; + presence?: 'optional' | 'required'; +}; + // @public export interface LocationStore { // (undocumented) - createLocation(spec: LocationSpec): Promise; + createLocation(location: LocationInput): Promise; // (undocumented) deleteLocation(id: string): Promise; // (undocumented) diff --git a/plugins/catalog-backend/src/ingestion/CatalogRules.test.ts b/plugins/catalog-backend/src/ingestion/CatalogRules.test.ts index 88245d9b81..d29a445a8c 100644 --- a/plugins/catalog-backend/src/ingestion/CatalogRules.test.ts +++ b/plugins/catalog-backend/src/ingestion/CatalogRules.test.ts @@ -14,9 +14,10 @@ * limitations under the License. */ -import { Entity, LocationSpec } from '@backstage/catalog-model'; +import { Entity } from '@backstage/catalog-model'; import { ConfigReader } from '@backstage/config'; import { DefaultCatalogRulesEnforcer } from './CatalogRules'; +import { LocationSpec } from './processors'; const entity = { user: { diff --git a/plugins/catalog-backend/src/ingestion/CatalogRules.ts b/plugins/catalog-backend/src/ingestion/CatalogRules.ts index a0ef5f3d53..b4ad394168 100644 --- a/plugins/catalog-backend/src/ingestion/CatalogRules.ts +++ b/plugins/catalog-backend/src/ingestion/CatalogRules.ts @@ -15,8 +15,9 @@ */ import { Config } from '@backstage/config'; -import { LocationSpec, Entity } from '@backstage/catalog-model'; +import { Entity } from '@backstage/catalog-model'; import path from 'path'; +import { LocationSpec } from './processors'; /** * Rules to apply to catalog entities. diff --git a/plugins/catalog-backend/src/ingestion/processors/AnnotateLocationEntityProcessor.test.ts b/plugins/catalog-backend/src/ingestion/processors/AnnotateLocationEntityProcessor.test.ts index 41d44ab157..5f5b20d1c2 100644 --- a/plugins/catalog-backend/src/ingestion/processors/AnnotateLocationEntityProcessor.test.ts +++ b/plugins/catalog-backend/src/ingestion/processors/AnnotateLocationEntityProcessor.test.ts @@ -14,9 +14,10 @@ * limitations under the License. */ -import { Entity, LocationSpec } from '@backstage/catalog-model'; +import { Entity } from '@backstage/catalog-model'; import { ConfigReader } from '@backstage/config'; import { ScmIntegrations } from '@backstage/integration'; +import { LocationSpec } from './types'; import { AnnotateLocationEntityProcessor } from './AnnotateLocationEntityProcessor'; describe('AnnotateLocationEntityProcessor', () => { diff --git a/plugins/catalog-backend/src/ingestion/processors/AnnotateLocationEntityProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/AnnotateLocationEntityProcessor.ts index 0067f3c26d..b8c31ed5a2 100644 --- a/plugins/catalog-backend/src/ingestion/processors/AnnotateLocationEntityProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/AnnotateLocationEntityProcessor.ts @@ -21,12 +21,11 @@ import { ANNOTATION_SOURCE_LOCATION, ANNOTATION_VIEW_URL, Entity, - LocationSpec, stringifyLocationRef, } from '@backstage/catalog-model'; import { ScmIntegrationRegistry } from '@backstage/integration'; import { identity, merge, pickBy } from 'lodash'; -import { CatalogProcessor, CatalogProcessorEmit } from './types'; +import { CatalogProcessor, CatalogProcessorEmit, LocationSpec } from './types'; /** @public */ export class AnnotateLocationEntityProcessor implements CatalogProcessor { diff --git a/plugins/catalog-backend/src/ingestion/processors/AnnotateScmSlugEntityProcessor.test.ts b/plugins/catalog-backend/src/ingestion/processors/AnnotateScmSlugEntityProcessor.test.ts index 5bdf4a4b83..311dd13789 100644 --- a/plugins/catalog-backend/src/ingestion/processors/AnnotateScmSlugEntityProcessor.test.ts +++ b/plugins/catalog-backend/src/ingestion/processors/AnnotateScmSlugEntityProcessor.test.ts @@ -13,9 +13,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { Entity, LocationSpec } from '@backstage/catalog-model'; +import { Entity } from '@backstage/catalog-model'; import { ConfigReader } from '@backstage/config'; import { AnnotateScmSlugEntityProcessor } from './AnnotateScmSlugEntityProcessor'; +import { LocationSpec } from './types'; describe('AnnotateScmSlugEntityProcessor', () => { describe('github', () => { diff --git a/plugins/catalog-backend/src/ingestion/processors/AnnotateScmSlugEntityProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/AnnotateScmSlugEntityProcessor.ts index d6e037662e..4d3b3aff6c 100644 --- a/plugins/catalog-backend/src/ingestion/processors/AnnotateScmSlugEntityProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/AnnotateScmSlugEntityProcessor.ts @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { Entity, LocationSpec } from '@backstage/catalog-model'; +import { Entity } from '@backstage/catalog-model'; import { Config } from '@backstage/config'; import { ScmIntegrationRegistry, @@ -21,7 +21,7 @@ import { } from '@backstage/integration'; import parseGitUrl from 'git-url-parse'; import { identity, merge, pickBy } from 'lodash'; -import { CatalogProcessor } from './types'; +import { CatalogProcessor, LocationSpec } from './types'; const GITHUB_ACTIONS_ANNOTATION = 'github.com/project-slug'; diff --git a/plugins/catalog-backend/src/ingestion/processors/AwsS3DiscoveryProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/AwsS3DiscoveryProcessor.ts index 726c972d8d..0dc44cc157 100644 --- a/plugins/catalog-backend/src/ingestion/processors/AwsS3DiscoveryProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/AwsS3DiscoveryProcessor.ts @@ -15,7 +15,6 @@ */ import { UrlReader } from '@backstage/backend-common'; -import { LocationSpec } from '@backstage/catalog-model'; import { isError } from '@backstage/errors'; import limiterFactory from 'p-limit'; import * as result from './results'; @@ -23,6 +22,7 @@ import { CatalogProcessor, CatalogProcessorEmit, CatalogProcessorParser, + LocationSpec, } from './types'; /** @public */ diff --git a/plugins/catalog-backend/src/ingestion/processors/AzureDevOpsDiscoveryProcessor.test.ts b/plugins/catalog-backend/src/ingestion/processors/AzureDevOpsDiscoveryProcessor.test.ts index f9913e4f12..a406feaa74 100644 --- a/plugins/catalog-backend/src/ingestion/processors/AzureDevOpsDiscoveryProcessor.test.ts +++ b/plugins/catalog-backend/src/ingestion/processors/AzureDevOpsDiscoveryProcessor.test.ts @@ -15,13 +15,13 @@ */ import { getVoidLogger } from '@backstage/backend-common'; -import { LocationSpec } from '@backstage/catalog-model'; import { ConfigReader } from '@backstage/config'; import { codeSearch } from './azure'; import { AzureDevOpsDiscoveryProcessor, parseUrl, } from './AzureDevOpsDiscoveryProcessor'; +import { LocationSpec } from './types'; jest.mock('./azure'); const mockCodeSearch = codeSearch as jest.MockedFunction; diff --git a/plugins/catalog-backend/src/ingestion/processors/AzureDevOpsDiscoveryProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/AzureDevOpsDiscoveryProcessor.ts index a257afc950..bc74621f1d 100644 --- a/plugins/catalog-backend/src/ingestion/processors/AzureDevOpsDiscoveryProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/AzureDevOpsDiscoveryProcessor.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import { LocationSpec } from '@backstage/catalog-model'; import { Config } from '@backstage/config'; import { ScmIntegrationRegistry, @@ -22,7 +21,7 @@ import { } from '@backstage/integration'; import { Logger } from 'winston'; import * as results from './results'; -import { CatalogProcessor, CatalogProcessorEmit } from './types'; +import { CatalogProcessor, CatalogProcessorEmit, LocationSpec } from './types'; import { codeSearch } from './azure'; /** diff --git a/plugins/catalog-backend/src/ingestion/processors/BitbucketDiscoveryProcessor.test.ts b/plugins/catalog-backend/src/ingestion/processors/BitbucketDiscoveryProcessor.test.ts index 96906dac85..9ee8bf1b57 100644 --- a/plugins/catalog-backend/src/ingestion/processors/BitbucketDiscoveryProcessor.test.ts +++ b/plugins/catalog-backend/src/ingestion/processors/BitbucketDiscoveryProcessor.test.ts @@ -16,13 +16,13 @@ import { getVoidLogger } from '@backstage/backend-common'; import { BitbucketDiscoveryProcessor } from './BitbucketDiscoveryProcessor'; import { ConfigReader } from '@backstage/config'; -import { LocationSpec } from '@backstage/catalog-model'; import { BitbucketRepository20, BitbucketRepositoryParser, PagedResponse, PagedResponse20, } from './bitbucket'; +import { LocationSpec } from './types'; import { results } from './index'; import { RequestHandler, rest } from 'msw'; import { setupServer } from 'msw/node'; diff --git a/plugins/catalog-backend/src/ingestion/processors/BitbucketDiscoveryProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/BitbucketDiscoveryProcessor.ts index 8ac6d617ca..8fcf64dc55 100644 --- a/plugins/catalog-backend/src/ingestion/processors/BitbucketDiscoveryProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/BitbucketDiscoveryProcessor.ts @@ -21,7 +21,6 @@ import { ScmIntegrationRegistry, ScmIntegrations, } from '@backstage/integration'; -import { LocationSpec } from '@backstage/catalog-model'; import { BitbucketRepositoryParser, BitbucketClient, @@ -31,7 +30,7 @@ import { BitbucketRepository, BitbucketRepository20, } from './bitbucket'; -import { CatalogProcessor, CatalogProcessorEmit } from './types'; +import { CatalogProcessor, CatalogProcessorEmit, LocationSpec } from './types'; const DEFAULT_BRANCH = 'master'; const DEFAULT_CATALOG_LOCATION = '/catalog-info.yaml'; diff --git a/plugins/catalog-backend/src/ingestion/processors/BuiltinKindsEntityProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/BuiltinKindsEntityProcessor.ts index ec0afeba36..75a1241b8f 100644 --- a/plugins/catalog-backend/src/ingestion/processors/BuiltinKindsEntityProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/BuiltinKindsEntityProcessor.ts @@ -26,7 +26,6 @@ import { GroupEntity, groupEntityV1alpha1Validator, locationEntityV1alpha1Validator, - LocationSpec, parseEntityRef, RELATION_API_CONSUMED_BY, RELATION_API_PROVIDED_BY, @@ -54,7 +53,7 @@ import { templateEntityV1beta2Validator, } from '@backstage/plugin-scaffolder-common'; import * as result from './results'; -import { CatalogProcessor, CatalogProcessorEmit } from './types'; +import { CatalogProcessor, CatalogProcessorEmit, LocationSpec } from './types'; /** @public */ export class BuiltinKindsEntityProcessor implements CatalogProcessor { diff --git a/plugins/catalog-backend/src/ingestion/processors/CodeOwnersProcessor.test.ts b/plugins/catalog-backend/src/ingestion/processors/CodeOwnersProcessor.test.ts index 3d7d6fde84..8d6d1f8ff7 100644 --- a/plugins/catalog-backend/src/ingestion/processors/CodeOwnersProcessor.test.ts +++ b/plugins/catalog-backend/src/ingestion/processors/CodeOwnersProcessor.test.ts @@ -15,9 +15,9 @@ */ import { getVoidLogger } from '@backstage/backend-common'; -import { LocationSpec } from '@backstage/catalog-model'; import { ConfigReader } from '@backstage/config'; import { CodeOwnersProcessor } from './CodeOwnersProcessor'; +import { LocationSpec } from './types'; const mockCodeOwnersText = () => ` * @acme/team-foo @acme/team-bar diff --git a/plugins/catalog-backend/src/ingestion/processors/CodeOwnersProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/CodeOwnersProcessor.ts index d7b2bf8849..93e3c1618a 100644 --- a/plugins/catalog-backend/src/ingestion/processors/CodeOwnersProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/CodeOwnersProcessor.ts @@ -15,7 +15,7 @@ */ import { UrlReader } from '@backstage/backend-common'; -import { Entity, LocationSpec } from '@backstage/catalog-model'; +import { Entity } from '@backstage/catalog-model'; import { Config } from '@backstage/config'; import { ScmIntegrationRegistry, @@ -23,7 +23,7 @@ import { } from '@backstage/integration'; import { Logger } from 'winston'; import { findCodeOwnerByTarget } from './codeowners'; -import { CatalogProcessor } from './types'; +import { CatalogProcessor, LocationSpec } from './types'; const ALLOWED_KINDS = ['API', 'Component', 'Domain', 'Resource', 'System']; diff --git a/plugins/catalog-backend/src/ingestion/processors/FileReaderProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/FileReaderProcessor.ts index 5e3d4812c2..996beff24a 100644 --- a/plugins/catalog-backend/src/ingestion/processors/FileReaderProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/FileReaderProcessor.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import { LocationSpec } from '@backstage/catalog-model'; import fs from 'fs-extra'; import g from 'glob'; import path from 'path'; @@ -24,6 +23,7 @@ import { CatalogProcessor, CatalogProcessorEmit, CatalogProcessorParser, + LocationSpec, } from './types'; const glob = promisify(g); diff --git a/plugins/catalog-backend/src/ingestion/processors/GitLabDiscoveryProcessor.test.ts b/plugins/catalog-backend/src/ingestion/processors/GitLabDiscoveryProcessor.test.ts index 8f1da52413..8261690e8f 100644 --- a/plugins/catalog-backend/src/ingestion/processors/GitLabDiscoveryProcessor.test.ts +++ b/plugins/catalog-backend/src/ingestion/processors/GitLabDiscoveryProcessor.test.ts @@ -16,11 +16,11 @@ import { ConfigReader } from '@backstage/config'; import { getVoidLogger } from '@backstage/backend-common'; -import { LocationSpec } from '@backstage/catalog-model'; import { GitLabDiscoveryProcessor, parseUrl } from './GitLabDiscoveryProcessor'; import { setupServer } from 'msw/node'; import { rest } from 'msw'; import { GitLabProject } from './gitlab'; +import { LocationSpec } from './types'; const server = setupServer(); diff --git a/plugins/catalog-backend/src/ingestion/processors/GitLabDiscoveryProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/GitLabDiscoveryProcessor.ts index c8996e8d3e..b534d50044 100644 --- a/plugins/catalog-backend/src/ingestion/processors/GitLabDiscoveryProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/GitLabDiscoveryProcessor.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import { LocationSpec } from '@backstage/catalog-model'; import { Config } from '@backstage/config'; import { ScmIntegrationRegistry, @@ -22,7 +21,7 @@ import { } from '@backstage/integration'; import { Logger } from 'winston'; import * as results from './results'; -import { CatalogProcessor, CatalogProcessorEmit } from './types'; +import { CatalogProcessor, CatalogProcessorEmit, LocationSpec } from './types'; import { GitLabClient, GitLabProject, paginated } from './gitlab'; import { CacheClient, diff --git a/plugins/catalog-backend/src/ingestion/processors/GithubDiscoveryProcessor.test.ts b/plugins/catalog-backend/src/ingestion/processors/GithubDiscoveryProcessor.test.ts index 1866247212..55e5560451 100644 --- a/plugins/catalog-backend/src/ingestion/processors/GithubDiscoveryProcessor.test.ts +++ b/plugins/catalog-backend/src/ingestion/processors/GithubDiscoveryProcessor.test.ts @@ -15,9 +15,9 @@ */ import { getVoidLogger } from '@backstage/backend-common'; -import { LocationSpec } from '@backstage/catalog-model'; import { GithubDiscoveryProcessor, parseUrl } from './GithubDiscoveryProcessor'; import { getOrganizationRepositories } from './github'; +import { LocationSpec } from './types'; import { ConfigReader } from '@backstage/config'; import { ScmIntegrations, diff --git a/plugins/catalog-backend/src/ingestion/processors/GithubDiscoveryProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/GithubDiscoveryProcessor.ts index 982007d3a5..e790134011 100644 --- a/plugins/catalog-backend/src/ingestion/processors/GithubDiscoveryProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/GithubDiscoveryProcessor.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import { LocationSpec } from '@backstage/catalog-model'; import { Config } from '@backstage/config'; import { DefaultGithubCredentialsProvider, @@ -26,7 +25,7 @@ import { graphql } from '@octokit/graphql'; import { Logger } from 'winston'; import { getOrganizationRepositories } from './github'; import * as results from './results'; -import { CatalogProcessor, CatalogProcessorEmit } from './types'; +import { CatalogProcessor, CatalogProcessorEmit, LocationSpec } from './types'; /** * Extracts repositories out of a GitHub org. diff --git a/plugins/catalog-backend/src/ingestion/processors/GithubMultiOrgReaderProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/GithubMultiOrgReaderProcessor.ts index 765b2139fd..383b82c019 100644 --- a/plugins/catalog-backend/src/ingestion/processors/GithubMultiOrgReaderProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/GithubMultiOrgReaderProcessor.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import { LocationSpec } from '@backstage/catalog-model'; import { Config } from '@backstage/config'; import { DefaultGithubCredentialsProvider, @@ -33,7 +32,7 @@ import { readGithubMultiOrgConfig, } from './github'; import * as results from './results'; -import { CatalogProcessor, CatalogProcessorEmit } from './types'; +import { CatalogProcessor, CatalogProcessorEmit, LocationSpec } from './types'; import { buildOrgHierarchy } from './util/org'; /** diff --git a/plugins/catalog-backend/src/ingestion/processors/GithubOrgReaderProcessor.test.ts b/plugins/catalog-backend/src/ingestion/processors/GithubOrgReaderProcessor.test.ts index 953c926c71..c01db88d3a 100644 --- a/plugins/catalog-backend/src/ingestion/processors/GithubOrgReaderProcessor.test.ts +++ b/plugins/catalog-backend/src/ingestion/processors/GithubOrgReaderProcessor.test.ts @@ -14,7 +14,6 @@ * limitations under the License. */ import { getVoidLogger } from '@backstage/backend-common'; -import { LocationSpec } from '@backstage/catalog-model'; import { ConfigReader } from '@backstage/config'; import { ScmIntegrations, @@ -22,6 +21,7 @@ import { } from '@backstage/integration'; import { graphql } from '@octokit/graphql'; import { GithubOrgReaderProcessor } from './GithubOrgReaderProcessor'; +import { LocationSpec } from './types'; jest.mock('@octokit/graphql'); diff --git a/plugins/catalog-backend/src/ingestion/processors/GithubOrgReaderProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/GithubOrgReaderProcessor.ts index 39384be0dc..8b5914cc80 100644 --- a/plugins/catalog-backend/src/ingestion/processors/GithubOrgReaderProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/GithubOrgReaderProcessor.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import { LocationSpec } from '@backstage/catalog-model'; import { Config } from '@backstage/config'; import { GithubCredentialType, @@ -31,7 +30,7 @@ import { parseGitHubOrgUrl, } from './github'; import * as results from './results'; -import { CatalogProcessor, CatalogProcessorEmit } from './types'; +import { CatalogProcessor, CatalogProcessorEmit, LocationSpec } from './types'; import { assignGroupsToUsers, buildOrgHierarchy } from './util/org'; type GraphQL = typeof graphql; diff --git a/plugins/catalog-backend/src/ingestion/processors/LocationEntityProcessor.test.ts b/plugins/catalog-backend/src/ingestion/processors/LocationEntityProcessor.test.ts index c4551e30f8..83f1ca1925 100644 --- a/plugins/catalog-backend/src/ingestion/processors/LocationEntityProcessor.test.ts +++ b/plugins/catalog-backend/src/ingestion/processors/LocationEntityProcessor.test.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import { LocationSpec } from '@backstage/catalog-model'; import { ConfigReader } from '@backstage/config'; import { ScmIntegrations, @@ -22,6 +21,7 @@ import { } from '@backstage/integration'; import path from 'path'; import { toAbsoluteUrl } from './LocationEntityProcessor'; +import { LocationSpec } from './types'; describe('LocationEntityProcessor', () => { describe('toAbsoluteUrl', () => { diff --git a/plugins/catalog-backend/src/ingestion/processors/LocationEntityProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/LocationEntityProcessor.ts index 5aee5a1ca2..533a366f57 100644 --- a/plugins/catalog-backend/src/ingestion/processors/LocationEntityProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/LocationEntityProcessor.ts @@ -14,11 +14,11 @@ * limitations under the License. */ -import { Entity, LocationEntity, LocationSpec } from '@backstage/catalog-model'; +import { Entity, LocationEntity } from '@backstage/catalog-model'; import { ScmIntegrationRegistry } from '@backstage/integration'; import path from 'path'; import * as result from './results'; -import { CatalogProcessor, CatalogProcessorEmit } from './types'; +import { CatalogProcessor, CatalogProcessorEmit, LocationSpec } from './types'; export function toAbsoluteUrl( integrations: ScmIntegrationRegistry, diff --git a/plugins/catalog-backend/src/ingestion/processors/PlaceholderProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/PlaceholderProcessor.ts index e19576d782..0d572a024d 100644 --- a/plugins/catalog-backend/src/ingestion/processors/PlaceholderProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/PlaceholderProcessor.ts @@ -15,11 +15,11 @@ */ import { UrlReader } from '@backstage/backend-common'; -import { Entity, LocationSpec } from '@backstage/catalog-model'; +import { Entity } from '@backstage/catalog-model'; import { JsonValue } from '@backstage/types'; import { ScmIntegrationRegistry } from '@backstage/integration'; import yaml from 'yaml'; -import { CatalogProcessor } from './types'; +import { CatalogProcessor, LocationSpec } from './types'; /** @public */ export type PlaceholderResolverRead = (url: string) => Promise; diff --git a/plugins/catalog-backend/src/ingestion/processors/StaticLocationProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/StaticLocationProcessor.ts index bcafa33162..1c2c27f425 100644 --- a/plugins/catalog-backend/src/ingestion/processors/StaticLocationProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/StaticLocationProcessor.ts @@ -14,10 +14,9 @@ * limitations under the License. */ -import { LocationSpec } from '@backstage/catalog-model'; import { Config } from '@backstage/config'; import * as result from './results'; -import { CatalogProcessorEmit } from './types'; +import { CatalogProcessorEmit, LocationSpec } from './types'; /** * @deprecated no longer in use, replaced by the ConfigLocationEntityProvider. diff --git a/plugins/catalog-backend/src/ingestion/processors/UrlReaderProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/UrlReaderProcessor.ts index d13e5dfeda..c2be454bcf 100644 --- a/plugins/catalog-backend/src/ingestion/processors/UrlReaderProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/UrlReaderProcessor.ts @@ -15,7 +15,7 @@ */ import { UrlReader } from '@backstage/backend-common'; -import { Entity, LocationSpec } from '@backstage/catalog-model'; +import { Entity } from '@backstage/catalog-model'; import { assertError } from '@backstage/errors'; import parseGitUrl from 'git-url-parse'; import limiterFactory from 'p-limit'; @@ -28,6 +28,7 @@ import { CatalogProcessorEntityResult, CatalogProcessorParser, CatalogProcessorResult, + LocationSpec, } from './types'; const CACHE_KEY = 'v1'; diff --git a/plugins/catalog-backend/src/ingestion/processors/results.ts b/plugins/catalog-backend/src/ingestion/processors/results.ts index 539f915fba..01583678df 100644 --- a/plugins/catalog-backend/src/ingestion/processors/results.ts +++ b/plugins/catalog-backend/src/ingestion/processors/results.ts @@ -15,8 +15,8 @@ */ import { InputError, NotFoundError } from '@backstage/errors'; -import { Entity, LocationSpec } from '@backstage/catalog-model'; -import { CatalogProcessorResult } from './types'; +import { Entity } from '@backstage/catalog-model'; +import { CatalogProcessorResult, LocationSpec } from './types'; import { EntityRelationSpec } from '../../processing/types'; /** @public */ diff --git a/plugins/catalog-backend/src/ingestion/processors/types.ts b/plugins/catalog-backend/src/ingestion/processors/types.ts index 1bd65c6f7a..879b4d32a8 100644 --- a/plugins/catalog-backend/src/ingestion/processors/types.ts +++ b/plugins/catalog-backend/src/ingestion/processors/types.ts @@ -14,10 +14,27 @@ * limitations under the License. */ -import { Entity, LocationSpec } from '@backstage/catalog-model'; +import { Entity } from '@backstage/catalog-model'; import { JsonValue } from '@backstage/types'; import { EntityRelationSpec } from '../../processing/types'; +/** + * Holds the entity location information. + * + * @remarks + * + * `presence` flag: when using repo importer plugin, location is being created before the component yaml file is merged to the main branch. + * This flag is then set to indicate that the file can be not present. + * default value: 'required'. + * + * @public + */ +export type LocationSpec = { + type: string; + target: string; + presence?: 'optional' | 'required'; +}; + /** * @public */ diff --git a/plugins/catalog-backend/src/ingestion/processors/util/parse.ts b/plugins/catalog-backend/src/ingestion/processors/util/parse.ts index 5637170f9b..0beaf1cd4c 100644 --- a/plugins/catalog-backend/src/ingestion/processors/util/parse.ts +++ b/plugins/catalog-backend/src/ingestion/processors/util/parse.ts @@ -14,15 +14,15 @@ * limitations under the License. */ -import { - Entity, - LocationSpec, - stringifyLocationRef, -} from '@backstage/catalog-model'; +import { Entity, stringifyLocationRef } from '@backstage/catalog-model'; import lodash from 'lodash'; import yaml from 'yaml'; import * as result from '../results'; -import { CatalogProcessorParser, CatalogProcessorResult } from '../types'; +import { + CatalogProcessorParser, + CatalogProcessorResult, + LocationSpec, +} from '../types'; /** @public */ export function* parseEntityYaml( diff --git a/plugins/catalog-backend/src/ingestion/types.ts b/plugins/catalog-backend/src/ingestion/types.ts index 7d7a185231..eccf583e4b 100644 --- a/plugins/catalog-backend/src/ingestion/types.ts +++ b/plugins/catalog-backend/src/ingestion/types.ts @@ -14,8 +14,9 @@ * limitations under the License. */ -import { Entity, LocationSpec } from '@backstage/catalog-model'; +import { Entity } from '@backstage/catalog-model'; import { RecursivePartial } from '../util/RecursivePartial'; +import { LocationSpec } from './processors'; /** @public */ export type LocationAnalyzer = { diff --git a/plugins/catalog-backend/src/processing/DefaultCatalogProcessingOrchestrator.test.ts b/plugins/catalog-backend/src/processing/DefaultCatalogProcessingOrchestrator.test.ts index bdfc623278..0853484408 100644 --- a/plugins/catalog-backend/src/processing/DefaultCatalogProcessingOrchestrator.test.ts +++ b/plugins/catalog-backend/src/processing/DefaultCatalogProcessingOrchestrator.test.ts @@ -21,7 +21,6 @@ import { Entity, EntityPolicies, LocationEntity, - LocationSpec, } from '@backstage/catalog-model'; import { ScmIntegrations } from '@backstage/integration'; import { @@ -29,6 +28,7 @@ import { CatalogProcessorCache, CatalogProcessorEmit, CatalogProcessorParser, + LocationSpec, results, } from '../ingestion'; import { CatalogRulesEnforcer } from '../ingestion/CatalogRules'; diff --git a/plugins/catalog-backend/src/processing/DefaultCatalogProcessingOrchestrator.ts b/plugins/catalog-backend/src/processing/DefaultCatalogProcessingOrchestrator.ts index 2ffaa2912f..9649bc937b 100644 --- a/plugins/catalog-backend/src/processing/DefaultCatalogProcessingOrchestrator.ts +++ b/plugins/catalog-backend/src/processing/DefaultCatalogProcessingOrchestrator.ts @@ -18,7 +18,6 @@ import { Entity, EntityPolicy, LocationEntity, - LocationSpec, parseLocationRef, stringifyEntityRef, stringifyLocationRef, @@ -36,6 +35,7 @@ import { Logger } from 'winston'; import { CatalogProcessor, CatalogProcessorParser, + LocationSpec, } from '../ingestion/processors'; import * as results from '../ingestion/processors/results'; import { diff --git a/plugins/catalog-backend/src/processing/util.ts b/plugins/catalog-backend/src/processing/util.ts index a4fa984dc1..5cf7821371 100644 --- a/plugins/catalog-backend/src/processing/util.ts +++ b/plugins/catalog-backend/src/processing/util.ts @@ -19,7 +19,6 @@ import { entityEnvelopeSchemaValidator, entitySchemaValidator, LocationEntity, - LocationSpec, ANNOTATION_LOCATION, ANNOTATION_ORIGIN_LOCATION, stringifyEntityRef, @@ -28,6 +27,7 @@ import { JsonObject, JsonValue } from '@backstage/types'; import { InputError } from '@backstage/errors'; import { ScmIntegrationRegistry } from '@backstage/integration'; import path from 'path'; +import { LocationSpec } from '../ingestion'; export function isLocationEntity(entity: Entity): entity is LocationEntity { return entity.kind === 'Location'; diff --git a/plugins/catalog-backend/src/providers/DefaultLocationStore.ts b/plugins/catalog-backend/src/providers/DefaultLocationStore.ts index f93afedbaa..9d5971508f 100644 --- a/plugins/catalog-backend/src/providers/DefaultLocationStore.ts +++ b/plugins/catalog-backend/src/providers/DefaultLocationStore.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import { LocationSpec } from '@backstage/catalog-model'; import { Location } from '@backstage/catalog-client'; import { ConflictError, NotFoundError } from '@backstage/errors'; import { Knex } from 'knex'; @@ -23,7 +22,7 @@ import { DbLocationsRow } from '../database/tables'; import { getEntityLocationRef } from '../processing/util'; import { EntityProvider, EntityProviderConnection } from './types'; import { locationSpecToLocationEntity } from '../util/conversion'; -import { LocationStore } from '../service'; +import { LocationInput, LocationStore } from '../service'; export class DefaultLocationStore implements LocationStore, EntityProvider { private _connection: EntityProviderConnection | undefined; @@ -34,25 +33,25 @@ export class DefaultLocationStore implements LocationStore, EntityProvider { return 'DefaultLocationStore'; } - async createLocation(spec: LocationSpec): Promise { + async createLocation(input: LocationInput): Promise { const location = await this.db.transaction(async tx => { - // Attempt to find a previous location matching the spec + // Attempt to find a previous location matching the input const previousLocations = await this.locations(tx); - // TODO: when location id's are a compilation of spec target we can remove this full + // TODO: when location id's are a compilation of input target we can remove this full // lookup of locations first and just grab the by that instead. const previousLocation = previousLocations.some( - l => spec.type === l.type && spec.target === l.target, + l => input.type === l.type && input.target === l.target, ); if (previousLocation) { throw new ConflictError( - `Location ${spec.type}:${spec.target} already exists`, + `Location ${input.type}:${input.target} already exists`, ); } const inner: DbLocationsRow = { id: uuid(), - type: spec.type, - target: spec.target, + type: input.type, + target: input.target, }; await tx('locations').insert(inner); diff --git a/plugins/catalog-backend/src/service/AuthorizedLocationService.ts b/plugins/catalog-backend/src/service/AuthorizedLocationService.ts index 13557102c9..077f56c737 100644 --- a/plugins/catalog-backend/src/service/AuthorizedLocationService.ts +++ b/plugins/catalog-backend/src/service/AuthorizedLocationService.ts @@ -15,7 +15,7 @@ */ import { Location } from '@backstage/catalog-client'; -import { LocationSpec, Entity } from '@backstage/catalog-model'; +import { Entity } from '@backstage/catalog-model'; import { NotAllowedError, NotFoundError } from '@backstage/errors'; import { catalogLocationCreatePermission, @@ -26,7 +26,7 @@ import { AuthorizeResult, PermissionAuthorizer, } from '@backstage/plugin-permission-common'; -import { LocationService } from './types'; +import { LocationInput, LocationService } from './types'; export class AuthorizedLocationService implements LocationService { constructor( @@ -35,7 +35,7 @@ export class AuthorizedLocationService implements LocationService { ) {} async createLocation( - spec: LocationSpec, + spec: LocationInput, dryRun: boolean, options?: { authorizationToken?: string; diff --git a/plugins/catalog-backend/src/service/DefaultLocationService.ts b/plugins/catalog-backend/src/service/DefaultLocationService.ts index 8bc02e24f6..c6b5eaf162 100644 --- a/plugins/catalog-backend/src/service/DefaultLocationService.ts +++ b/plugins/catalog-backend/src/service/DefaultLocationService.ts @@ -15,7 +15,6 @@ */ import { Entity, - LocationSpec, ANNOTATION_LOCATION, ANNOTATION_ORIGIN_LOCATION, stringifyEntityRef, @@ -25,7 +24,7 @@ import { CatalogProcessingOrchestrator, DeferredEntity, } from '../processing/types'; -import { LocationService, LocationStore } from './types'; +import { LocationInput, LocationService, LocationStore } from './types'; import { locationSpecToMetadataName } from '../util/conversion'; export class DefaultLocationService implements LocationService { @@ -35,13 +34,13 @@ export class DefaultLocationService implements LocationService { ) {} async createLocation( - spec: LocationSpec, + input: LocationInput, dryRun: boolean, ): Promise<{ location: Location; entities: Entity[]; exists?: boolean }> { if (dryRun) { - return this.dryRunCreateLocation(spec); + return this.dryRunCreateLocation(input); } - const location = await this.store.createLocation(spec); + const location = await this.store.createLocation(input); return { location, entities: [] }; } @@ -93,7 +92,7 @@ export class DefaultLocationService implements LocationService { } private async dryRunCreateLocation( - spec: LocationSpec, + spec: LocationInput, ): Promise<{ location: Location; entities: Entity[]; exists?: boolean }> { // Run the existence check in parallel with the processing const existsPromise = this.store diff --git a/plugins/catalog-backend/src/service/createRouter.test.ts b/plugins/catalog-backend/src/service/createRouter.test.ts index 755134c3d9..8db15cb4a1 100644 --- a/plugins/catalog-backend/src/service/createRouter.test.ts +++ b/plugins/catalog-backend/src/service/createRouter.test.ts @@ -18,11 +18,11 @@ import { getVoidLogger } from '@backstage/backend-common'; import { ConfigReader } from '@backstage/config'; import { NotFoundError } from '@backstage/errors'; import type { Location } from '@backstage/catalog-client'; -import type { Entity, LocationSpec } from '@backstage/catalog-model'; +import type { Entity } from '@backstage/catalog-model'; import express from 'express'; import request from 'supertest'; import { EntitiesCatalog } from '../catalog'; -import { LocationService, RefreshService } from './types'; +import { LocationInput, LocationService, RefreshService } from './types'; import { basicEntityFilter } from './request'; import { createRouter } from './createRouter'; import { AuthorizeResult } from '@backstage/plugin-permission-common'; @@ -299,7 +299,7 @@ describe('createRouter readonly disabled', () => { const spec = { typez: 'b', target: 'c', - } as unknown as LocationSpec; + } as unknown as LocationInput; const response = await request(app) .post('/locations') @@ -311,7 +311,7 @@ describe('createRouter readonly disabled', () => { }); it('passes the body down', async () => { - const spec: LocationSpec = { + const spec: LocationInput = { type: 'b', target: 'c', }; @@ -339,7 +339,7 @@ describe('createRouter readonly disabled', () => { }); it('supports dry run', async () => { - const spec: LocationSpec = { + const spec: LocationInput = { type: 'b', target: 'c', }; @@ -506,7 +506,7 @@ describe('createRouter readonly enabled', () => { describe('POST /locations', () => { it('is not allowed', async () => { - const spec: LocationSpec = { + const spec: LocationInput = { type: 'b', target: 'c', }; @@ -522,7 +522,7 @@ describe('createRouter readonly enabled', () => { }); it('supports dry run', async () => { - const spec: LocationSpec = { + const spec: LocationInput = { type: 'b', target: 'c', }; diff --git a/plugins/catalog-backend/src/service/createRouter.ts b/plugins/catalog-backend/src/service/createRouter.ts index a4d911a421..56121f4155 100644 --- a/plugins/catalog-backend/src/service/createRouter.ts +++ b/plugins/catalog-backend/src/service/createRouter.ts @@ -32,7 +32,7 @@ import { } from './request'; import { disallowReadonlyMode, - locationSpec, + locationInput, validateRequestBody, } from './util'; import { RefreshOptions, LocationService, RefreshService } from './types'; @@ -175,7 +175,7 @@ export async function createRouter( if (locationService) { router .post('/locations', async (req, res) => { - const location = await validateRequestBody(req, locationSpec); + const location = await validateRequestBody(req, locationInput); const dryRun = yn(req.query.dryRun, { default: false }); // when in dryRun addLocation is effectively a read operation so we don't @@ -218,9 +218,9 @@ export async function createRouter( router.post('/analyze-location', async (req, res) => { const body = await validateRequestBody( req, - z.object({ location: locationSpec }), + z.object({ location: locationInput }), ); - const schema = z.object({ location: locationSpec }); + const schema = z.object({ location: locationInput }); const output = await locationAnalyzer.analyzeLocation(schema.parse(body)); res.status(200).json(output); }); diff --git a/plugins/catalog-backend/src/service/index.ts b/plugins/catalog-backend/src/service/index.ts index fd1b31b9d1..e1c7f54475 100644 --- a/plugins/catalog-backend/src/service/index.ts +++ b/plugins/catalog-backend/src/service/index.ts @@ -19,6 +19,7 @@ export type { RefreshService, RefreshOptions, LocationStore, + LocationInput, } from './types'; export { createRouter } from './createRouter'; export type { RouterOptions } from './createRouter'; diff --git a/plugins/catalog-backend/src/service/types.ts b/plugins/catalog-backend/src/service/types.ts index c10ccda14b..02268ab63c 100644 --- a/plugins/catalog-backend/src/service/types.ts +++ b/plugins/catalog-backend/src/service/types.ts @@ -14,16 +14,28 @@ * limitations under the License. */ -import { Entity, LocationSpec } from '@backstage/catalog-model'; +import { Entity } from '@backstage/catalog-model'; import { Location } from '@backstage/catalog-client'; +/** + * Holds the information required to create a new location in the catalog location store. + * + * @public + */ +export interface LocationInput { + type: string; + target: string; + /** @deprecated This field is ignored and will be removed */ + presence?: 'optional' | 'required'; +} + /** * The location service manages entity locations. * @public */ export interface LocationService { createLocation( - spec: LocationSpec, + location: LocationInput, dryRun: boolean, options?: { authorizationToken?: string; @@ -67,7 +79,7 @@ export interface RefreshService { * Interacts with the database to manage locations. * @public */ export interface LocationStore { - createLocation(spec: LocationSpec): Promise; + createLocation(location: LocationInput): Promise; listLocations(): Promise; getLocation(id: string): Promise; deleteLocation(id: string): Promise; diff --git a/plugins/catalog-backend/src/service/util.ts b/plugins/catalog-backend/src/service/util.ts index 09f1c2d8cf..9a914aadcb 100644 --- a/plugins/catalog-backend/src/service/util.ts +++ b/plugins/catalog-backend/src/service/util.ts @@ -40,7 +40,7 @@ export async function requireRequestBody(req: Request): Promise { return body; } -export const locationSpec = z +export const locationInput = z .object({ type: z.string(), target: z.string(), diff --git a/plugins/catalog-backend/src/util/conversion.ts b/plugins/catalog-backend/src/util/conversion.ts index 9dd5ce7986..75ed4f5e96 100644 --- a/plugins/catalog-backend/src/util/conversion.ts +++ b/plugins/catalog-backend/src/util/conversion.ts @@ -17,13 +17,13 @@ import { Entity, LocationEntityV1alpha1, - LocationSpec, ANNOTATION_LOCATION, ANNOTATION_ORIGIN_LOCATION, stringifyEntityRef, stringifyLocationRef, } from '@backstage/catalog-model'; import { createHash } from 'crypto'; +import { LocationSpec } from '../ingestion'; export function locationSpecToMetadataName(location: LocationSpec) { const hash = createHash('sha1') diff --git a/plugins/scaffolder-backend/api-report.md b/plugins/scaffolder-backend/api-report.md index bd507d892a..fb1469cb05 100644 --- a/plugins/scaffolder-backend/api-report.md +++ b/plugins/scaffolder-backend/api-report.md @@ -18,7 +18,7 @@ import { GithubCredentialsProvider } from '@backstage/integration'; import { JsonObject } from '@backstage/types'; import { JsonValue } from '@backstage/types'; import { Knex } from 'knex'; -import { LocationSpec } from '@backstage/catalog-model'; +import { LocationSpec } from '@backstage/plugin-catalog-backend'; import { Logger as Logger_2 } from 'winston'; import { Octokit } from 'octokit'; import { PluginDatabaseManager } from '@backstage/backend-common'; diff --git a/plugins/scaffolder-backend/src/processor/ScaffolderEntitiesProcessor.ts b/plugins/scaffolder-backend/src/processor/ScaffolderEntitiesProcessor.ts index c7d5db38c1..43559fcd5f 100644 --- a/plugins/scaffolder-backend/src/processor/ScaffolderEntitiesProcessor.ts +++ b/plugins/scaffolder-backend/src/processor/ScaffolderEntitiesProcessor.ts @@ -17,7 +17,6 @@ import { Entity, getEntityName, - LocationSpec, parseEntityRef, RELATION_OWNED_BY, RELATION_OWNER_OF, @@ -25,6 +24,7 @@ import { import { CatalogProcessor, CatalogProcessorEmit, + LocationSpec, results, } from '@backstage/plugin-catalog-backend'; import { diff --git a/plugins/techdocs/api-report.md b/plugins/techdocs/api-report.md index 768363f8fb..7d554a293c 100644 --- a/plugins/techdocs/api-report.md +++ b/plugins/techdocs/api-report.md @@ -15,7 +15,6 @@ import { Entity } from '@backstage/catalog-model'; import { EntityName } from '@backstage/catalog-model'; import { FetchApi } from '@backstage/core-plugin-api'; import { IdentityApi } from '@backstage/core-plugin-api'; -import { LocationSpec } from '@backstage/catalog-model'; import { PropsWithChildren } from 'react'; import { default as React_2 } from 'react'; import { RouteRef } from '@backstage/core-plugin-api'; diff --git a/plugins/techdocs/src/types.ts b/plugins/techdocs/src/types.ts index dd35e255b6..fbe6f4b870 100644 --- a/plugins/techdocs/src/types.ts +++ b/plugins/techdocs/src/types.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import { Entity, LocationSpec } from '@backstage/catalog-model'; +import { Entity } from '@backstage/catalog-model'; export type TechDocsMetadata = { site_name: string; @@ -22,5 +22,5 @@ export type TechDocsMetadata = { }; export type TechDocsEntityMetadata = Entity & { - locationMetadata?: LocationSpec; + locationMetadata?: { type: string; target: string }; }; From 46dee04ebaa20d337e9d3ce5f2d16f72b8069d37 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Fri, 18 Feb 2022 16:10:27 +0100 Subject: [PATCH 313/383] catalog-client: deprecate AddLocationRequest.presence Signed-off-by: Patrik Oldsberg --- .changeset/lovely-frogs-retire.md | 5 +++++ packages/catalog-client/src/types/api.ts | 1 + 2 files changed, 6 insertions(+) create mode 100644 .changeset/lovely-frogs-retire.md diff --git a/.changeset/lovely-frogs-retire.md b/.changeset/lovely-frogs-retire.md new file mode 100644 index 0000000000..2b7228f7e7 --- /dev/null +++ b/.changeset/lovely-frogs-retire.md @@ -0,0 +1,5 @@ +--- +'@backstage/catalog-client': patch +--- + +Deprecated `AddLocationRequest.presence`, as it is already being ignored. diff --git a/packages/catalog-client/src/types/api.ts b/packages/catalog-client/src/types/api.ts index bbafedb27d..4a86ca41f3 100644 --- a/packages/catalog-client/src/types/api.ts +++ b/packages/catalog-client/src/types/api.ts @@ -257,6 +257,7 @@ export type AddLocationRequest = { type?: string; target: string; dryRun?: boolean; + /** @deprecated This field is is ignored */ presence?: 'optional' | 'required'; }; From b2f8bb99d3b385804a91f2d84c4d865747b37efe Mon Sep 17 00:00:00 2001 From: Mike Lewis Date: Mon, 21 Feb 2022 18:23:47 +0000 Subject: [PATCH 314/383] backend-common: make configuration objects optional in config schema The previous schema meant that if any other plugin introduced something under backend.auth, the keys property would be mandatory, which isn't correct. This commit relaxes the requirement so that backend.auth.keys is always optional, even if backend.auth is configured. Signed-off-by: Mike Lewis --- .changeset/brave-crews-move.md | 5 +++++ packages/backend-common/config.d.ts | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 .changeset/brave-crews-move.md diff --git a/.changeset/brave-crews-move.md b/.changeset/brave-crews-move.md new file mode 100644 index 0000000000..a5d22361f4 --- /dev/null +++ b/.changeset/brave-crews-move.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-common': patch +--- + +Make backend.auth.keys optional in config schema. Previously backend.auth was optional but keys was not, which meant that if another plugin introduced additional properties under backend.auth, it would implicitly make backend.auth.keys mandatory. diff --git a/packages/backend-common/config.d.ts b/packages/backend-common/config.d.ts index 16ca1698f6..72995dde85 100644 --- a/packages/backend-common/config.d.ts +++ b/packages/backend-common/config.d.ts @@ -23,7 +23,7 @@ export interface Config { /** Backend configuration for when request authentication is enabled */ auth?: { /** Keys shared by all backends for signing and validating backend tokens. */ - keys: { + keys?: { /** * Secret for generating tokens. Should be a base64 string, recommended * length is 24 bytes. From 04d4829cf4781ebb11f53f9a860933c86d6450d4 Mon Sep 17 00:00:00 2001 From: djamaile Date: Mon, 21 Feb 2022 20:26:54 +0100 Subject: [PATCH 315/383] refactor: respond to comments #2 Signed-off-by: djamaile --- .../MultistepJsonForm/MultistepJsonForm.tsx | 56 +++++++++---------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/plugins/scaffolder/src/components/MultistepJsonForm/MultistepJsonForm.tsx b/plugins/scaffolder/src/components/MultistepJsonForm/MultistepJsonForm.tsx index 6e2ac32c89..4d37eafee4 100644 --- a/plugins/scaffolder/src/components/MultistepJsonForm/MultistepJsonForm.tsx +++ b/plugins/scaffolder/src/components/MultistepJsonForm/MultistepJsonForm.tsx @@ -34,6 +34,7 @@ import { Theme as MuiTheme } from '@rjsf/material-ui'; import React, { useState } from 'react'; import { transformSchemaToProps } from './schema'; import { Content, StructuredMetadataTable } from '@backstage/core-components'; +import cloneDeep from 'lodash/cloneDeep'; import * as fieldOverrides from './FieldOverrides'; const Form = withTheme(MuiTheme); @@ -115,44 +116,43 @@ export const MultistepJsonForm = (props: Props) => { const errorApi = useApi(errorApiRef); const featureFlagApi = useApi(featureFlagsApiRef); const featureFlagKey = 'backstage:featureFlag'; - const filterOutProperties = (schema: JsonObject): JsonObject => { + const filterOutProperties = (step: Step): Step => { + const filteredStep = cloneDeep(step); const removedPropertyKeys: Array = []; - if (schema.properties) { - schema.properties = Object.fromEntries( - Object.entries(schema.properties).filter(([key, value]) => { - if (value[featureFlagKey]) { - if (featureFlagApi.isActive(value[featureFlagKey])) { - return true; + if (filteredStep.schema.properties) { + filteredStep.schema.properties = Object.fromEntries( + Object.entries(filteredStep.schema.properties).filter( + ([key, value]) => { + if (value[featureFlagKey]) { + if (featureFlagApi.isActive(value[featureFlagKey])) { + return true; + } + removedPropertyKeys.push(key); + return false; } - removedPropertyKeys.push(key); - return false; - } - return true; - }), + return true; + }, + ), ); // remove the feature flag property key from required if they are not active - schema.required = Array.isArray(schema.required) - ? schema.required?.filter( + filteredStep.schema.required = Array.isArray(filteredStep.schema.required) + ? filteredStep.schema.required?.filter( r => !removedPropertyKeys.includes(r as string), ) - : schema.required; + : filteredStep.schema.required; } - return schema; + return filteredStep; }; - const steps = props.steps.filter(s => { - const featureFlag = s.schema[featureFlagKey]; - if ( - typeof featureFlag === 'string' && - !featureFlagApi.isActive(featureFlag) - ) { - return null; - } - // filter out properties accordingly to the feature flag settings; - s.schema = filterOutProperties(s.schema); - return s; - }); + const steps = props.steps + .filter(step => { + const featureFlag = step.schema[featureFlagKey]; + return ( + typeof featureFlag !== 'string' || featureFlagApi.isActive(featureFlag) + ); + }) + .map(filterOutProperties); const handleReset = () => { setActiveStep(0); From 5b7079a6965768137fbe801f91bca9bb9e240436 Mon Sep 17 00:00:00 2001 From: blam Date: Mon, 21 Feb 2022 20:48:09 +0100 Subject: [PATCH 316/383] chore review comments Signed-off-by: blam Signed-off-by: blam --- .../actions/builtin/github/OctokitProvider.ts | 4 ++-- .../actions/builtin/github/githubWebhook.ts | 8 ++++---- .../actions/builtin/github/helpers.ts | 20 +++++++------------ .../actions/builtin/publish/github.ts | 8 ++++---- 4 files changed, 17 insertions(+), 23 deletions(-) diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/OctokitProvider.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/OctokitProvider.ts index 92b8554e37..2f3c43a6b8 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/OctokitProvider.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/OctokitProvider.ts @@ -34,7 +34,7 @@ export type OctokitIntegration = { * OctokitProvider supports GitHub credentials caching out of the box. * * @deprecated we are no longer providing a way from the scaffolder to generate octokit instances. - * Implement your own if you're using this method from an external package, or suse the internal `getOctokitOptions` function instead + * Implement your own if you're using this method from an external package, or use the internal `getOctokitOptions` function instead */ export class OctokitProvider { private readonly integrations: ScmIntegrationRegistry; @@ -56,7 +56,7 @@ export class OctokitProvider { * @param repoUrl - Repository URL * * @deprecated we are no longer providing a way from the scaffolder to generate octokit instances. - * Implement your own if you're using this method from an external package, or suse the internal `getOctokitOptions` function instead + * Implement your own if you're using this method from an external package, or use the internal `getOctokitOptions` function instead */ async getOctokit( repoUrl: string, diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubWebhook.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubWebhook.ts index ac75dd9d82..e2cf744845 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubWebhook.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubWebhook.ts @@ -126,6 +126,10 @@ export function createGithubWebhookAction(options: { ctx.logger.info(`Creating webhook ${webhookUrl} for repo ${repoUrl}`); const { owner, repo } = parseRepoUrl(repoUrl, integrations); + if (!owner) { + throw new InputError('Invalid repository owner provided in repoUrl'); + } + const client = new Octokit( await getOctokitOptions({ integrations, @@ -135,10 +139,6 @@ export function createGithubWebhookAction(options: { }), ); - if (!owner) { - throw new InputError('Invalid repository owner provided in repoUrl'); - } - try { const insecure_ssl = insecureSsl ? '1' : '0'; await client.rest.repos.createWebhook({ 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 4f369b7263..542de013b4 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/helpers.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/helpers.ts @@ -22,18 +22,13 @@ import { import { OctokitOptions } from '@octokit/core/dist-types/types'; import { parseRepoUrl } from '../publish/util'; -interface GetOctokitOptionsInput { +export async function getOctokitOptions(options: { integrations: ScmIntegrationRegistry; credentialsProvider?: GithubCredentialsProvider; token?: string; repoUrl: string; -} -export const getOctokitOptions = async ({ - integrations, - credentialsProvider, - repoUrl, - token, -}: GetOctokitOptionsInput): Promise => { +}): Promise { + const { integrations, credentialsProvider, repoUrl, token } = options; const { owner, repo, host } = parseRepoUrl(repoUrl, integrations); if (!owner) { @@ -46,8 +41,7 @@ export const getOctokitOptions = async ({ throw new InputError(`No integration for host ${host}`); } - // Short circuit the internal Github Token provider the token provided - // by the action or the caller. + // short circuit the `githubCredentialsProvider` if there is a token provided by the caller already if (token) { return { auth: token, @@ -60,8 +54,8 @@ export const getOctokitOptions = async ({ credentialsProvider ?? DefaultGithubCredentialsProvider.fromIntegrations(integrations); - // TODO(blam): Consider changing this API to have owner, repo interface instead of URL as the it's - // needless to create URL and then parse again the other side. + // TODO(blam): Consider changing this API to take host and repo instead of repoUrl, as we end up parsing in this function + // and then parsing in the `getCredentials` function too the other side const { token: credentialProviderToken, } = await githubCredentialsProvider.getCredentials({ @@ -81,4 +75,4 @@ export const getOctokitOptions = async ({ baseUrl: integrationConfig.apiBaseUrl, previews: ['nebula-preview'], }; -}; +} 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 7ae9f317cf..37e2ffb7d3 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/github.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/github.ts @@ -157,6 +157,10 @@ export function createPublishGithubAction(options: { const { owner, repo } = parseRepoUrl(repoUrl, integrations); + if (!owner) { + throw new InputError('Invalid repository owner provided in repoUrl'); + } + const octokitOptions = await getOctokitOptions({ integrations, credentialsProvider: githubCredentialsProvider, @@ -166,10 +170,6 @@ export function createPublishGithubAction(options: { const client = new Octokit(octokitOptions); - if (!owner) { - throw new InputError('Invalid repository owner provided in repoUrl'); - } - const user = await client.rest.users.getByUsername({ username: owner, }); From 63dc066dcd83e80a9340fb91d0f0e5990ddb10ef Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 22 Feb 2022 04:06:43 +0000 Subject: [PATCH 317/383] chore(deps-dev): bump @graphql-codegen/typescript from 2.4.2 to 2.4.5 Bumps [@graphql-codegen/typescript](https://github.com/dotansimha/graphql-code-generator/tree/HEAD/packages/plugins/typescript/typescript) from 2.4.2 to 2.4.5. - [Release notes](https://github.com/dotansimha/graphql-code-generator/releases) - [Changelog](https://github.com/dotansimha/graphql-code-generator/blob/master/packages/plugins/typescript/typescript/CHANGELOG.md) - [Commits](https://github.com/dotansimha/graphql-code-generator/commits/@graphql-codegen/typescript@2.4.5/packages/plugins/typescript/typescript) --- updated-dependencies: - dependency-name: "@graphql-codegen/typescript" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- yarn.lock | 34 +++++++++++++++++++++++++--------- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/yarn.lock b/yarn.lock index bbd75035ce..0e77e19cd8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1997,10 +1997,10 @@ parse-filepath "^1.0.2" tslib "~2.3.0" -"@graphql-codegen/plugin-helpers@^2.3.2": - version "2.3.2" - resolved "https://registry.npmjs.org/@graphql-codegen/plugin-helpers/-/plugin-helpers-2.3.2.tgz#3f9ba625791901d19be733db1dfc9a3dbd0dac44" - integrity sha512-19qFA5XMAWaAY64sBljjDPYfHjE+QMk/+oalCyY13WjSlcLDvYPfmFlCNgFSsydArDELlHR8T1GMbA7C42M8TA== +"@graphql-codegen/plugin-helpers@^2.3.2", "@graphql-codegen/plugin-helpers@^2.4.0": + version "2.4.1" + resolved "https://registry.npmjs.org/@graphql-codegen/plugin-helpers/-/plugin-helpers-2.4.1.tgz#433845a89b0b4b3a2a0e959e0a2cfe444cf7aeac" + integrity sha512-OPMma7aUnES3Dh+M0BfiNBnJLmYuH60EnbULAhufxFDn/Y2OA0Ht/LQok9beX6VN4ASZEMCOAGItJezGJr5DJw== dependencies: "@graphql-tools/utils" "^8.5.2" change-case-all "1.0.14" @@ -2031,13 +2031,13 @@ tslib "~2.3.0" "@graphql-codegen/typescript@^2.4.2": - version "2.4.2" - resolved "https://registry.npmjs.org/@graphql-codegen/typescript/-/typescript-2.4.2.tgz#a239d5fd8f11140d5d4c81cfae7ff02054b724dc" - integrity sha512-8ajWidiFqF1KNAywtb/692SjwTyjzrDHo1sf2Q7Z+rh9qDEIrh83VHB8naT/1CefOvxj3MS6GbcsvJMizaE/AQ== + version "2.4.5" + resolved "https://registry.npmjs.org/@graphql-codegen/typescript/-/typescript-2.4.5.tgz#80ca7a343511a27cd587c0b220b0a0dd99a4dc4b" + integrity sha512-Ytb8phNHKl/v/wxudsMOAV1dmzIbckWHm2J83PLNOvnu9CGEhgsd67vfe3ZoF95VU2BKSG8BXGa6uL9z2xDmuA== dependencies: - "@graphql-codegen/plugin-helpers" "^2.3.2" + "@graphql-codegen/plugin-helpers" "^2.4.0" "@graphql-codegen/schema-ast" "^2.4.1" - "@graphql-codegen/visitor-plugin-common" "2.5.2" + "@graphql-codegen/visitor-plugin-common" "2.7.1" auto-bind "~4.0.0" tslib "~2.3.0" @@ -2057,6 +2057,22 @@ parse-filepath "^1.0.2" tslib "~2.3.0" +"@graphql-codegen/visitor-plugin-common@2.7.1": + version "2.7.1" + resolved "https://registry.npmjs.org/@graphql-codegen/visitor-plugin-common/-/visitor-plugin-common-2.7.1.tgz#bdcded24d1d6f329d32b90704397d6001374b893" + integrity sha512-Ew/+0GwGwL3ZSXS0cYz6lVvE7S5SkbTr7caRpLa4FpAdLGNskCgdA1n6W5tX5c7qsaYstqlxp30hJTfgTsYS6A== + dependencies: + "@graphql-codegen/plugin-helpers" "^2.4.0" + "@graphql-tools/optimize" "^1.0.1" + "@graphql-tools/relay-operation-optimizer" "^6.3.7" + "@graphql-tools/utils" "^8.3.0" + auto-bind "~4.0.0" + change-case-all "1.0.14" + dependency-graph "^0.11.0" + graphql-tag "^2.11.0" + parse-filepath "^1.0.2" + tslib "~2.3.0" + "@graphql-tools/apollo-engine-loader@^7.0.5": version "7.2.1" resolved "https://registry.npmjs.org/@graphql-tools/apollo-engine-loader/-/apollo-engine-loader-7.2.1.tgz#14e5d0b1032a7d882d22a7533c8969ee3fa797f2" From 02473f82a63464958fe0662df569215176c397e2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 22 Feb 2022 04:13:10 +0000 Subject: [PATCH 318/383] chore(deps-dev): bump @types/color from 3.0.2 to 3.0.3 Bumps [@types/color](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/color) from 3.0.2 to 3.0.3. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/color) --- updated-dependencies: - dependency-name: "@types/color" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index bbd75035ce..b11733d3a0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5397,9 +5397,9 @@ integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== "@types/color@^3.0.1": - version "3.0.2" - resolved "https://registry.npmjs.org/@types/color/-/color-3.0.2.tgz#3779043e782f562aa9157b5fc6bd07e14fd8e7f3" - integrity sha512-INiJl6sfNn8iyC5paxVzqiVUEj2boIlFki02uRTAkKwAj++7aAF+ZfEv/XrIeBa0XI/fTZuDHW8rEEcEVnON+Q== + version "3.0.3" + resolved "https://registry.npmjs.org/@types/color/-/color-3.0.3.tgz#e6d8d72b7aaef4bb9fe80847c26c7c786191016d" + integrity sha512-X//qzJ3d3Zj82J9sC/C18ZY5f43utPbAJ6PhYt/M7uG6etcF6MRpKdN880KBy43B0BMzSfeT96MzrsNjFI3GbA== dependencies: "@types/color-convert" "*" From 37bcc9ec529ac2e916f26f52d95e0d562ffb5926 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 22 Feb 2022 04:15:17 +0000 Subject: [PATCH 319/383] chore(deps): bump vm2 from 3.9.7 to 3.9.8 Bumps [vm2](https://github.com/patriksimek/vm2) from 3.9.7 to 3.9.8. - [Release notes](https://github.com/patriksimek/vm2/releases) - [Changelog](https://github.com/patriksimek/vm2/blob/master/CHANGELOG.md) - [Commits](https://github.com/patriksimek/vm2/compare/3.9.7...3.9.8) --- updated-dependencies: - dependency-name: vm2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index bbd75035ce..96f1b3ad4a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -24946,9 +24946,9 @@ vm-browserify@^1.0.1: integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== vm2@^3.9.6: - version "3.9.7" - resolved "https://registry.npmjs.org/vm2/-/vm2-3.9.7.tgz#bb87aa677c97c61e23a6cb6547e44e990517a6f6" - integrity sha512-g/GZ7V0Mlmch3eDVOATvAXr1GsJNg6kQ5PjvYy3HbJMCRn5slNbo/u73Uy7r5yUej1cRa3ZjtoVwcWSQuQ/fow== + version "3.9.8" + resolved "https://registry.npmjs.org/vm2/-/vm2-3.9.8.tgz#e99c000db042735cd2f94d8db6c42163a17be04e" + integrity sha512-/1PYg/BwdKzMPo8maOZ0heT7DLI0DAFTm7YQaz/Lim9oIaFZsJs3EdtalvXuBfZwczNwsYhju75NW4d6E+4q+w== dependencies: acorn "^8.7.0" acorn-walk "^8.2.0" From ed78516480a9b59725e44becfe30921b98ab76a4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 22 Feb 2022 04:19:06 +0000 Subject: [PATCH 320/383] chore(deps-dev): bump cypress from 7.3.0 to 9.5.0 Bumps [cypress](https://github.com/cypress-io/cypress) from 7.3.0 to 9.5.0. - [Release notes](https://github.com/cypress-io/cypress/releases) - [Changelog](https://github.com/cypress-io/cypress/blob/develop/.releaserc.base.js) - [Commits](https://github.com/cypress-io/cypress/compare/v7.3.0...v9.5.0) --- updated-dependencies: - dependency-name: cypress dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .changeset/dependabot-5342be5.md | 5 + packages/app/package.json | 2 +- .../techdocs-cli-embedded-app/package.json | 2 +- packages/techdocs-cli/package.json | 2 +- yarn.lock | 159 +++++++----------- 5 files changed, 69 insertions(+), 101 deletions(-) create mode 100644 .changeset/dependabot-5342be5.md diff --git a/.changeset/dependabot-5342be5.md b/.changeset/dependabot-5342be5.md new file mode 100644 index 0000000000..ea6f0c9dba --- /dev/null +++ b/.changeset/dependabot-5342be5.md @@ -0,0 +1,5 @@ +--- +'@techdocs/cli': patch +--- + +chore(deps-dev): bump `cypress` from 7.3.0 to 9.5.0 diff --git a/packages/app/package.json b/packages/app/package.json index d1f63b1fd2..ce742ec1dd 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -87,7 +87,7 @@ "@types/react-dom": "*", "@types/zen-observable": "^0.8.0", "cross-env": "^7.0.0", - "cypress": "^7.3.0", + "cypress": "^9.5.0", "eslint-plugin-cypress": "^2.10.3", "start-server-and-test": "^1.10.11" }, diff --git a/packages/techdocs-cli-embedded-app/package.json b/packages/techdocs-cli-embedded-app/package.json index 06e8ae6f2c..a1c37d0200 100644 --- a/packages/techdocs-cli-embedded-app/package.json +++ b/packages/techdocs-cli-embedded-app/package.json @@ -37,7 +37,7 @@ "@types/node": "^14.14.32", "@types/react-dom": "*", "cross-env": "^7.0.0", - "cypress": "^7.3.0", + "cypress": "^9.5.0", "eslint-plugin-cypress": "^2.10.3", "start-server-and-test": "^1.10.11" }, diff --git a/packages/techdocs-cli/package.json b/packages/techdocs-cli/package.json index a9491a8847..68ea79eded 100644 --- a/packages/techdocs-cli/package.json +++ b/packages/techdocs-cli/package.json @@ -45,7 +45,7 @@ "@types/node": "^14.14.32", "@types/serve-handler": "^6.1.0", "@types/webpack-env": "^1.15.3", - "cypress": "^7.3.0", + "cypress": "^9.5.0", "cypress-plugin-snapshots": "^1.4.4", "find-process": "^1.4.5", "nodemon": "^2.0.2", diff --git a/yarn.lock b/yarn.lock index bbd75035ce..389f363286 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1656,17 +1656,7 @@ dependencies: "@cspotcode/source-map-consumer" "0.8.0" -"@cypress/listr-verbose-renderer@^0.4.1": - version "0.4.1" - resolved "https://registry.npmjs.org/@cypress/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz#a77492f4b11dcc7c446a34b3e28721afd33c642a" - integrity sha1-p3SS9LEdzHxEajSz4ochr9M8ZCo= - dependencies: - chalk "^1.1.3" - cli-cursor "^1.0.2" - date-fns "^1.27.2" - figures "^1.7.0" - -"@cypress/request@^2.88.5": +"@cypress/request@^2.88.10": version "2.88.10" resolved "https://registry.npmjs.org/@cypress/request/-/request-2.88.10.tgz#b66d76b07f860d3a4b8d7a0604d020c662752cce" integrity sha512-Zp7F+R93N0yZyG34GutyTNr+okam7s/Fzc1+i3kcqOP8vk6OuajuE9qZJ6Rs+10/1JFtXFYMdyarnU1rZuJesg== @@ -6371,10 +6361,10 @@ dependencies: "@types/node" "*" -"@types/sinonjs__fake-timers@^6.0.2": - version "6.0.2" - resolved "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.2.tgz#3a84cf5ec3249439015e14049bd3161419bf9eae" - integrity sha512-dIPoZ3g5gcx9zZEszaxLSVTvMReD3xxyyDnQUjA6IYDG9Ba2AV0otMPs+77sG9ojB4Qr2N2Vk5RnKeuA0X/0bg== +"@types/sinonjs__fake-timers@8.1.1": + version "8.1.1" + resolved "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.1.tgz#b49c2c70150141a15e0fa7e79cf1f92a72934ce3" + integrity sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g== "@types/sizzle@*", "@types/sizzle@^2.3.2": version "2.3.2" @@ -8340,7 +8330,7 @@ buffer@4.9.2, buffer@^4.3.0: ieee754 "^1.1.4" isarray "^1.0.0" -buffer@^5.2.0, buffer@^5.2.1, buffer@^5.5.0, buffer@^5.7.0: +buffer@^5.2.0, buffer@^5.2.1, buffer@^5.5.0, buffer@^5.6.0, buffer@^5.7.0: version "5.7.1" resolved "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== @@ -8837,13 +8827,6 @@ cli-boxes@^2.2.1: resolved "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== -cli-cursor@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987" - integrity sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc= - dependencies: - restore-cursor "^1.0.1" - cli-cursor@^2.0.0, cli-cursor@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" @@ -8863,15 +8846,14 @@ cli-spinners@^2.5.0: resolved "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.5.0.tgz#12763e47251bf951cb75c201dfa58ff1bcb2d047" integrity sha512-PC+AmIuK04E6aeSs/pUccSujsTzBhu4HzC2dL+CfJB/Jcc2qTRbEwZQDfIUpt2Xl8BodYBEq8w4fc0kU2I9DjQ== -cli-table3@~0.6.0: - version "0.6.0" - resolved "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.0.tgz#b7b1bc65ca8e7b5cef9124e13dc2b21e2ce4faee" - integrity sha512-gnB85c3MGC7Nm9I/FkiasNBOKjOiO1RNuXXarQms37q4QMpWdlbBgD/VnOStA2faG1dpXMv31RFApjX1/QdgWQ== +cli-table3@~0.6.1: + version "0.6.1" + resolved "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.1.tgz#36ce9b7af4847f288d3cdd081fbd09bf7bd237b8" + integrity sha512-w0q/enDHhPLq44ovMGdQeeDLvwxwavsJX7oQGYt/LrBlYsyaxyDnp6z3QzFut/6kLLKnlcUVJLrpB7KBfgG/RA== dependencies: - object-assign "^4.1.0" string-width "^4.2.0" optionalDependencies: - colors "^1.1.2" + colors "1.4.0" cli-table@^0.3.1: version "0.3.6" @@ -9117,7 +9099,7 @@ colors@1.0.3: resolved "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" integrity sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs= -colors@1.4.0, colors@^1.1.2: +colors@1.4.0: version "1.4.0" resolved "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== @@ -9205,16 +9187,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-tags@1.8.2: +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" integrity sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA== -common-tags@^1.8.0: - version "1.8.0" - resolved "https://registry.npmjs.org/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937" - integrity sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw== - commondir@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" @@ -9302,16 +9279,6 @@ concat-map@0.0.1: resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -concat-stream@^1.6.2: - version "1.6.2" - resolved "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" - integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - concat-stream@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz#414cf5af790a48c60ab9be4527d56d5e41133cb1" @@ -10041,49 +10008,52 @@ cypress-plugin-snapshots@^1.4.4: source-map-support "^0.5.10" unidiff "1.0.2" -cypress@^7.3.0: - version "7.3.0" - resolved "https://registry.npmjs.org/cypress/-/cypress-7.3.0.tgz#17345b8d18681c120f033e7d8fd0f0271e9d0d51" - integrity sha512-aseRCH1tRVCrM6oEfja6fR/bo5l6e4SkHRRSATh27UeN4f/ANC8U7tGIulmrISJVy9xuOkOdbYKbUb2MNM+nrw== +cypress@^9.5.0: + version "9.5.0" + resolved "https://registry.npmjs.org/cypress/-/cypress-9.5.0.tgz#704a79f0d3d4e775f433334eb8f5ae065e3bea31" + integrity sha512-rC5QPolKsVjJ8QJZ7IeZ6HlKM4gswBGZc0XvoAJNL8urQCSL8zTX0A/ai/h35WfF47NQ0iSZnwIXBlHX3MOUIQ== dependencies: - "@cypress/listr-verbose-renderer" "^0.4.1" - "@cypress/request" "^2.88.5" + "@cypress/request" "^2.88.10" "@cypress/xvfb" "^1.2.4" "@types/node" "^14.14.31" - "@types/sinonjs__fake-timers" "^6.0.2" + "@types/sinonjs__fake-timers" "8.1.1" "@types/sizzle" "^2.3.2" arch "^2.2.0" blob-util "^2.0.2" bluebird "^3.7.2" + buffer "^5.6.0" cachedir "^2.3.0" chalk "^4.1.0" check-more-types "^2.24.0" - cli-table3 "~0.6.0" + cli-cursor "^3.1.0" + cli-table3 "~0.6.1" commander "^5.1.0" common-tags "^1.8.0" dayjs "^1.10.4" - debug "4.3.2" + debug "^4.3.2" + enquirer "^2.3.6" eventemitter2 "^6.4.3" execa "4.1.0" executable "^4.1.1" - extract-zip "^1.7.0" + extract-zip "2.0.1" + figures "^3.2.0" fs-extra "^9.1.0" getos "^3.2.1" is-ci "^3.0.0" is-installed-globally "~0.4.0" lazy-ass "^1.6.0" - listr "^0.14.3" + listr2 "^3.8.3" lodash "^4.17.21" log-symbols "^4.0.0" minimist "^1.2.5" ospath "^1.2.2" pretty-bytes "^5.6.0" - ramda "~0.27.1" + proxy-from-env "1.0.0" request-progress "^3.0.0" + semver "^7.3.2" supports-color "^8.1.1" tmp "~0.2.1" untildify "^4.0.0" - url "^0.11.0" yauzl "^2.10.0" d3-array@2, d3-array@^2.3.0: @@ -11155,7 +11125,7 @@ enhanced-resolve@^5.8.3: graceful-fs "^4.2.4" tapable "^2.2.0" -enquirer@^2.3.0: +enquirer@^2.3.0, enquirer@^2.3.6: version "2.3.6" resolved "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== @@ -11839,12 +11809,7 @@ event-target-shim@^5.0.0: resolved "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== -eventemitter2@^6.4.3: - version "6.4.4" - resolved "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.4.tgz#aa96e8275c4dbeb017a5d0e03780c65612a1202b" - integrity sha512-HLU3NDY6wARrLCEwyGKRBvuWYyvW6mHYv72SJJAH3iJN3a6eVUvkjFkcxah1bcTgGVBBrFdIopBJPhCQFMLyXw== - -eventemitter2@^6.4.4: +eventemitter2@^6.4.3, eventemitter2@^6.4.4: version "6.4.5" resolved "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.5.tgz#97380f758ae24ac15df8353e0cc27f8b95644655" integrity sha512-bXE7Dyc1i6oQElDG0jMRZJrRAn9QR2xyyFGmBdZleNmyQX0FqGYmhZIrIrpPfm/w//LTo4tVQGOGQcGCb5q9uw== @@ -12021,11 +11986,6 @@ exif-parser@^0.1.12: resolved "https://registry.npmjs.org/exif-parser/-/exif-parser-0.1.12.tgz#58a9d2d72c02c1f6f02a0ef4a9166272b7760922" integrity sha1-WKnS1ywCwfbwKg70qRZicrd2CSI= -exit-hook@^1.0.0: - version "1.1.1" - resolved "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" - integrity sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g= - exit-on-epipe@~1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz#0bdd92e87d5285d267daa8171d0eb06159689692" @@ -12211,16 +12171,6 @@ extract-zip@2.0.1: optionalDependencies: "@types/yauzl" "^2.9.1" -extract-zip@^1.7.0: - version "1.7.0" - resolved "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz#556cc3ae9df7f452c493a0cfb51cc30277940927" - integrity sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA== - dependencies: - concat-stream "^1.6.2" - debug "^2.6.9" - mkdirp "^0.5.4" - yauzl "^2.10.0" - extsprintf@1.3.0: version "1.3.0" resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" @@ -12388,7 +12338,7 @@ figures@^2.0.0: dependencies: escape-string-regexp "^1.0.5" -figures@^3.0.0: +figures@^3.0.0, figures@^3.2.0: version "3.2.0" resolved "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== @@ -16388,6 +16338,20 @@ listr-verbose-renderer@^0.5.0: date-fns "^1.27.2" figures "^2.0.0" +listr2@^3.8.3: + version "3.14.0" + resolved "https://registry.npmjs.org/listr2/-/listr2-3.14.0.tgz#23101cc62e1375fd5836b248276d1d2b51fdbe9e" + integrity sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g== + dependencies: + cli-truncate "^2.1.0" + colorette "^2.0.16" + log-update "^4.0.0" + p-map "^4.0.0" + rfdc "^1.3.0" + rxjs "^7.5.1" + through "^2.3.8" + wrap-ansi "^7.0.0" + listr2@^4.0.1: version "4.0.2" resolved "https://registry.npmjs.org/listr2/-/listr2-4.0.2.tgz#04d66f8c8694a14920d7df08ebe01568948fb500" @@ -17885,7 +17849,7 @@ mkdirp@0.3.0: resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz#1bbf5ab1ba827af23575143490426455f481fe1e" integrity sha1-G79asbqCevI1dRQ0kEJkVfSB/h4= -"mkdirp@>=0.5 0", mkdirp@^0.5.1, mkdirp@^0.5.4, mkdirp@^0.5.5: +"mkdirp@>=0.5 0", mkdirp@^0.5.1, mkdirp@^0.5.5: version "0.5.5" resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== @@ -18783,11 +18747,6 @@ one-time@^1.0.0: dependencies: fn.name "1.x.x" -onetime@^1.0.0: - version "1.1.0" - resolved "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" - integrity sha1-ofeDj4MUxRbwXs78vEzP4EtO14k= - onetime@^2.0.0: version "2.0.1" resolved "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" @@ -20375,6 +20334,11 @@ proxy-addr@~2.0.7: forwarded "0.2.0" ipaddr.js "1.9.1" +proxy-from-env@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz#33c50398f70ea7eb96d21f7b817630a55791c7ee" + integrity sha1-M8UDmPcOp+uW0h97gXYwpVeRx+4= + proxy-from-env@1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" @@ -20555,7 +20519,7 @@ raf@^3.4.0: dependencies: performance-now "^2.1.0" -ramda@^0.27.1, ramda@~0.27.1: +ramda@^0.27.1: version "0.27.2" resolved "https://registry.npmjs.org/ramda/-/ramda-0.27.2.tgz#84463226f7f36dc33592f6f4ed6374c48306c3f1" integrity sha512-SbiLPU40JuJniHexQSAgad32hfwd+DRUdwF2PlVuI5RZD0/vahUco7R8vD86J/tcEKKF9vZrUVwgtmGCqlCKyA== @@ -21152,7 +21116,7 @@ readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.2, readable-stre string_decoder "^1.1.1" util-deprecate "^1.0.1" -readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: +readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -21749,14 +21713,6 @@ responselike@^2.0.0: dependencies: lowercase-keys "^2.0.0" -restore-cursor@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541" - integrity sha1-NGYfRohjJ/7SmRR5FSJS35LapUE= - dependencies: - exit-hook "^1.0.0" - onetime "^1.0.0" - restore-cursor@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" @@ -21961,6 +21917,13 @@ rxjs@^7.1.0, rxjs@^7.2.0, rxjs@^7.5.2: dependencies: tslib "^2.1.0" +rxjs@^7.5.1: + version "7.5.4" + resolved "https://registry.npmjs.org/rxjs/-/rxjs-7.5.4.tgz#3d6bd407e6b7ce9a123e76b1e770dc5761aa368d" + integrity sha512-h5M3Hk78r6wAheJF0a5YahB1yRQKCsZ4MsGdZ5O9ETbVtjPcScGfrMmoOq7EBsCRzd4BDkvDJ7ogP8Sz5tTFiQ== + dependencies: + tslib "^2.1.0" + sade@^1.7.3: version "1.8.1" resolved "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz#0a78e81d658d394887be57d2a409bf703a3b2701" From f2dfc0460789303e527d36f549a738adea668c77 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 22 Feb 2022 04:21:14 +0000 Subject: [PATCH 321/383] chore(deps-dev): bump @types/xml2js from 0.4.8 to 0.4.9 Bumps [@types/xml2js](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/xml2js) from 0.4.8 to 0.4.9. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/xml2js) --- updated-dependencies: - dependency-name: "@types/xml2js" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index bbd75035ce..9d142a0909 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6600,9 +6600,9 @@ "@types/node" "*" "@types/xml2js@*", "@types/xml2js@^0.4.7": - version "0.4.8" - resolved "https://registry.npmjs.org/@types/xml2js/-/xml2js-0.4.8.tgz#84c120c864a5976d0b5cf2f930a75d850fc2b03a" - integrity sha512-EyvT83ezOdec7BhDaEcsklWy7RSIdi6CNe95tmOAK0yx/Lm30C9K75snT3fYayK59ApC2oyW+rcHErdG05FHJA== + version "0.4.9" + resolved "https://registry.npmjs.org/@types/xml2js/-/xml2js-0.4.9.tgz#a38267d8c2fe121c96922b12ee3bd89a58a6e20e" + integrity sha512-CHiCKIihl1pychwR2RNX5mAYmJDACgFVCMT5OArMaO3erzwXVcBqPcusr+Vl8yeeXukxZqtF8mZioqX+mpjjdw== dependencies: "@types/node" "*" From d733bf633ab9576033a3b3428c9c3bce3e5479e2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 22 Feb 2022 04:23:30 +0000 Subject: [PATCH 322/383] chore(deps-dev): bump @types/humanize-duration from 3.25.1 to 3.27.1 Bumps [@types/humanize-duration](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/humanize-duration) from 3.25.1 to 3.27.1. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/humanize-duration) --- updated-dependencies: - dependency-name: "@types/humanize-duration" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- yarn.lock | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/yarn.lock b/yarn.lock index bbd75035ce..d89b5eb45c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5775,15 +5775,10 @@ dependencies: "@types/node" "*" -"@types/humanize-duration@^3.18.1": - version "3.18.1" - resolved "https://registry.npmjs.org/@types/humanize-duration/-/humanize-duration-3.18.1.tgz#10090d596053703e7de0ac43a37b96cd9fc78309" - integrity sha512-MUgbY3CF7hg/a/jogixmAufLjJBQT7WEf8Q+kYJkOc47ytngg1IuZobCngdTjAgY83JWEogippge5O5fplaQlw== - -"@types/humanize-duration@^3.25.1": - version "3.25.1" - resolved "https://registry.npmjs.org/@types/humanize-duration/-/humanize-duration-3.25.1.tgz#b6140d5fc00ff3917b3f521784abef4bc0387ccc" - integrity sha512-WZU/4bb+lvzyDmZzjJtp++9mfKy6B3lH6gGISgkcz6SU8hMILKRM0vi08TxIsb0dQB4Gzo68MWLmctu6xqUi9g== +"@types/humanize-duration@^3.18.1", "@types/humanize-duration@^3.25.1": + version "3.27.1" + resolved "https://registry.npmjs.org/@types/humanize-duration/-/humanize-duration-3.27.1.tgz#f14740d1f585a0a8e3f46359b62fda8b0eaa31e7" + integrity sha512-K3e+NZlpCKd6Bd/EIdqjFJRFHbrq5TzPPLwREk5Iv/YoIjQrs6ljdAUCo+Lb2xFlGNOjGSE0dqsVD19cZL137w== "@types/inquirer@^7.3.3": version "7.3.3" From c03f71a4cc9fcf140b829a0677172202b70c9b7e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 22 Feb 2022 04:34:41 +0000 Subject: [PATCH 323/383] chore(deps-dev): bump @changesets/cli from 2.20.0 to 2.21.0 Bumps [@changesets/cli](https://github.com/changesets/changesets) from 2.20.0 to 2.21.0. - [Release notes](https://github.com/changesets/changesets/releases) - [Changelog](https://github.com/changesets/changesets/blob/main/docs/modifying-changelog-format.md) - [Commits](https://github.com/changesets/changesets/compare/@changesets/cli@2.20.0...@changesets/cli@2.21.0) --- updated-dependencies: - dependency-name: "@changesets/cli" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- yarn.lock | 171 +++++++++++++++++++++++++++--------------------------- 1 file changed, 86 insertions(+), 85 deletions(-) diff --git a/yarn.lock b/yarn.lock index bbd75035ce..bb65e2b4a1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1295,14 +1295,7 @@ core-js-pure "^3.20.2" regenerator-runtime "^0.13.4" -"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.0", "@babel/runtime@^7.10.1", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.4", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.14.6", "@babel/runtime@^7.15.4", "@babel/runtime@^7.16.3", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.0", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": - version "7.16.7" - resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.7.tgz#03ff99f64106588c9c403c6ecb8c3bafbbdff1fa" - integrity sha512-9E9FJowqAsytyOY6LG+1KuueckRL+aQW+mKvXRXnuFGyRAyepJPmEo9vgMfXUA6O9u3IeEdv9MAkppFcaQwogQ== - dependencies: - regenerator-runtime "^0.13.4" - -"@babel/runtime@^7.7.2": +"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.0", "@babel/runtime@^7.10.1", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.4", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.14.6", "@babel/runtime@^7.15.4", "@babel/runtime@^7.16.3", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.0", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": version "7.17.2" resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.2.tgz#66f68591605e59da47523c631416b18508779941" integrity sha512-hzeyJyMA1YGdJTuWU0e/j4wKXrU4OMFvY2MSlaI9B7VQb0r5cxTE3EAIS2Q7Tn2RIcDkRvTA/v2JsAEhxe99uw== @@ -1387,16 +1380,16 @@ resolved "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-5.0.2.tgz#b23080fa35520e993a8a37a0f5bca26aa4650a48" integrity sha512-NBEJlHWrhQucLhZGHtSxM2loSaNUMajC7KOYJLyfcdW/6goVoff2HoYI3bz8YCDN0wKGbxtUL0gx2dvHpvnWlw== -"@changesets/apply-release-plan@^5.0.4": - version "5.0.4" - resolved "https://registry.npmjs.org/@changesets/apply-release-plan/-/apply-release-plan-5.0.4.tgz#fefffecf73b59dbee7ae905b3c6a2e64c489f0cb" - integrity sha512-czayDIrgC8qBnqwClvh9nxjCMem+XZG7xtfdYwq3dxpzA30qGppcI0i088VYug5RCFR+l1N+HUvkujSZuBK65w== +"@changesets/apply-release-plan@^5.0.5": + version "5.0.5" + resolved "https://registry.npmjs.org/@changesets/apply-release-plan/-/apply-release-plan-5.0.5.tgz#d67b1e022c876d18d887f3c475a3abcad9944b68" + integrity sha512-CxL9dkhzjHiVmXCyHgsLCQj7i/coFTMv/Yy0v6BC5cIWZkQml+lf7zvQqAcFXwY7b54HxRWZPku02XFB53Q0Uw== dependencies: "@babel/runtime" "^7.10.4" - "@changesets/config" "^1.6.4" + "@changesets/config" "^1.7.0" "@changesets/get-version-range-type" "^0.3.2" - "@changesets/git" "^1.3.0" - "@changesets/types" "^4.0.2" + "@changesets/git" "^1.3.1" + "@changesets/types" "^4.1.0" "@manypkg/get-packages" "^1.1.3" detect-indent "^6.0.0" fs-extra "^7.0.1" @@ -1406,36 +1399,44 @@ resolve-from "^5.0.0" semver "^5.4.1" -"@changesets/assemble-release-plan@^5.0.5": - version "5.0.5" - resolved "https://registry.npmjs.org/@changesets/assemble-release-plan/-/assemble-release-plan-5.0.5.tgz#60e4adc9bf458dd6ec38dee78d8f1bbeddfe3936" - integrity sha512-ejCVSM4I1jgaNi30we3/qltj2NQtS68w7C3H8Gvb6ZOvbIpAW/Tr0uMmPgRj4Vzkez5+fx0If02AvOdssz1btA== +"@changesets/assemble-release-plan@^5.1.0": + version "5.1.0" + resolved "https://registry.npmjs.org/@changesets/assemble-release-plan/-/assemble-release-plan-5.1.0.tgz#0fcb18253998e3bc037a554874de43bcc58c4840" + integrity sha512-iYlqffCMhcwZ+6Cv8cimf10OBGYXQKufBI7J6htpRgCV2nT99RKXEjbYOtrXWKQqzu0XxOsk15apSEwjZN0JRw== dependencies: "@babel/runtime" "^7.10.4" "@changesets/errors" "^0.1.4" - "@changesets/get-dependents-graph" "^1.3.0" - "@changesets/types" "^4.0.2" + "@changesets/get-dependents-graph" "^1.3.1" + "@changesets/types" "^4.1.0" "@manypkg/get-packages" "^1.1.3" semver "^5.4.1" +"@changesets/changelog-git@^0.1.10": + version "0.1.10" + resolved "https://registry.npmjs.org/@changesets/changelog-git/-/changelog-git-0.1.10.tgz#df616e92671082a7976381280b4af98ff3a7067d" + integrity sha512-4t7zqPOv3aDZp4Y+AyDhiOG2ypaUXDpOz+MT1wOk3uSZNv78AaDByam0hdk5kfYuH1RlMecWU4/U5lO1ZL5eaA== + dependencies: + "@changesets/types" "^4.1.0" + "@changesets/cli@^2.14.0": - version "2.20.0" - resolved "https://registry.npmjs.org/@changesets/cli/-/cli-2.20.0.tgz#f24dbd38bd4bc47bf083e59b6bb9cbf531465808" - integrity sha512-IUYSgZKtS+wXPD5hxfnCfZ1JWCbBI0CRrhxpkgVKcXDwpxiRU8stCwuSuVj14kiYlThuH2zL0/ZuGvhF4r28Gg== + version "2.21.0" + resolved "https://registry.npmjs.org/@changesets/cli/-/cli-2.21.0.tgz#b689f91ed908150efc06e0985e6b4cfbd9aea3a3" + integrity sha512-cJXRg28MmF9VbQrlwSjpY4AJA2xZUbXFCpQ3kFmX0IeppO7wknZ2QfocAhIqwM828t8d3R4Zpi5xnvJ/crIcQw== dependencies: "@babel/runtime" "^7.10.4" - "@changesets/apply-release-plan" "^5.0.4" - "@changesets/assemble-release-plan" "^5.0.5" - "@changesets/config" "^1.6.4" + "@changesets/apply-release-plan" "^5.0.5" + "@changesets/assemble-release-plan" "^5.1.0" + "@changesets/changelog-git" "^0.1.10" + "@changesets/config" "^1.7.0" "@changesets/errors" "^0.1.4" - "@changesets/get-dependents-graph" "^1.3.0" - "@changesets/get-release-plan" "^3.0.5" - "@changesets/git" "^1.3.0" + "@changesets/get-dependents-graph" "^1.3.1" + "@changesets/get-release-plan" "^3.0.6" + "@changesets/git" "^1.3.1" "@changesets/logger" "^0.0.5" - "@changesets/pre" "^1.0.9" - "@changesets/read" "^0.5.3" - "@changesets/types" "^4.0.2" - "@changesets/write" "^0.1.6" + "@changesets/pre" "^1.0.10" + "@changesets/read" "^0.5.4" + "@changesets/types" "^4.1.0" + "@changesets/write" "^0.1.7" "@manypkg/get-packages" "^1.1.3" "@types/is-ci" "^3.0.0" "@types/semver" "^6.0.0" @@ -1454,15 +1455,15 @@ term-size "^2.1.0" tty-table "^2.8.10" -"@changesets/config@^1.6.4": - version "1.6.4" - resolved "https://registry.npmjs.org/@changesets/config/-/config-1.6.4.tgz#c904c84f067b49c09b378618b751089dd29ed0b7" - integrity sha512-WWa8eR8GzS/p2atLc/+5UEDn7fsRCZ+/sShLkB/3efVbTkSTB1PwoKwQRXLYXM1DY289T7UnJT4HLZA3Gcreww== +"@changesets/config@^1.7.0": + version "1.7.0" + resolved "https://registry.npmjs.org/@changesets/config/-/config-1.7.0.tgz#18353f88ea8153d7f1fb7c321a3fe8667035eddb" + integrity sha512-Ctk6ZO5Ay6oZ95bbKXyA2a1QG0jQUePaGCY6BKkZtUG4PgysesfmiQOPgOY5OsRMt8exJeo6l+DJ75YiKmh0rQ== dependencies: "@changesets/errors" "^0.1.4" - "@changesets/get-dependents-graph" "^1.3.0" + "@changesets/get-dependents-graph" "^1.3.1" "@changesets/logger" "^0.0.5" - "@changesets/types" "^4.0.2" + "@changesets/types" "^4.1.0" "@manypkg/get-packages" "^1.1.3" fs-extra "^7.0.1" micromatch "^4.0.2" @@ -1474,28 +1475,28 @@ dependencies: extendable-error "^0.1.5" -"@changesets/get-dependents-graph@^1.3.0": - version "1.3.0" - resolved "https://registry.npmjs.org/@changesets/get-dependents-graph/-/get-dependents-graph-1.3.0.tgz#892bbb63406911baac1f77a31303620492d466ec" - integrity sha512-4VHQWEluWySPgDdkL94YNxrEjDb9nwNFw515sWDmVrlfpQN5qaP1hdaotrp4mJm4ky85t4cTlrWSP+CTY7IDbw== +"@changesets/get-dependents-graph@^1.3.1": + version "1.3.1" + resolved "https://registry.npmjs.org/@changesets/get-dependents-graph/-/get-dependents-graph-1.3.1.tgz#f1ebadbd4e17bb2b987c4542a588e0ee9f2e829a" + integrity sha512-HwUs8U0XK/ZqCQon1/80jJEyswS8JVmTiHTZslrTpuavyhhhxrSpO1eVCdKgaVHBRalOw3gRzdS3uzkmqYsQSQ== dependencies: - "@changesets/types" "^4.0.2" + "@changesets/types" "^4.1.0" "@manypkg/get-packages" "^1.1.3" chalk "^2.1.0" fs-extra "^7.0.1" semver "^5.4.1" -"@changesets/get-release-plan@^3.0.5": - version "3.0.5" - resolved "https://registry.npmjs.org/@changesets/get-release-plan/-/get-release-plan-3.0.5.tgz#c05cff031bba737c8dd236afe97e77b007ee44a3" - integrity sha512-67td3LA1RTJpY5Q+wJaTTRtAjZ2suAhDfj3VRjFv0gCgUPXs8rNx17n9UPbegPTQjeTS1r7hVRVifycmT0fQtA== +"@changesets/get-release-plan@^3.0.6": + version "3.0.6" + resolved "https://registry.npmjs.org/@changesets/get-release-plan/-/get-release-plan-3.0.6.tgz#15aac108b9d0f139841562c9372d8cfd738503dc" + integrity sha512-HpPyr8y6xkihy3rONLZ6OtfgYq88NotidPAuS3nwMeZjLHiIVLyejR2+/5q717f6HKcrATxAjTwMAcjl7X/uzA== dependencies: "@babel/runtime" "^7.10.4" - "@changesets/assemble-release-plan" "^5.0.5" - "@changesets/config" "^1.6.4" - "@changesets/pre" "^1.0.9" - "@changesets/read" "^0.5.3" - "@changesets/types" "^4.0.2" + "@changesets/assemble-release-plan" "^5.1.0" + "@changesets/config" "^1.7.0" + "@changesets/pre" "^1.0.10" + "@changesets/read" "^0.5.4" + "@changesets/types" "^4.1.0" "@manypkg/get-packages" "^1.1.3" "@changesets/get-version-range-type@^0.3.2": @@ -1503,14 +1504,14 @@ resolved "https://registry.npmjs.org/@changesets/get-version-range-type/-/get-version-range-type-0.3.2.tgz#8131a99035edd11aa7a44c341cbb05e668618c67" integrity sha512-SVqwYs5pULYjYT4op21F2pVbcrca4qA/bAA3FmFXKMN7Y+HcO8sbZUTx3TAy2VXulP2FACd1aC7f2nTuqSPbqg== -"@changesets/git@^1.3.0": - version "1.3.0" - resolved "https://registry.npmjs.org/@changesets/git/-/git-1.3.0.tgz#7f62e1983552efecb738054db5178eef77f41241" - integrity sha512-Ydj4lWX33d2PCDaTXOMSbyTjgk1go1V6EyXjKTmOV7nB/qvgKdDZLSt+AexKWKp3Ac2FTrtVnl9G5gMNVYNmuQ== +"@changesets/git@^1.3.1": + version "1.3.1" + resolved "https://registry.npmjs.org/@changesets/git/-/git-1.3.1.tgz#e86b4d2b28acdf9bc8949031027a9ac12420b99e" + integrity sha512-yg60QUi38VA0XGXdBy9SRYJhs8xJHE97Z1CaB/hFyByBlh5k1i+avFNBvvw66MsoT/aiml6y9scIG6sC8R5mfg== dependencies: "@babel/runtime" "^7.10.4" "@changesets/errors" "^0.1.4" - "@changesets/types" "^4.0.2" + "@changesets/types" "^4.1.0" "@manypkg/get-packages" "^1.1.3" is-subdir "^1.1.1" spawndamnit "^2.0.0" @@ -1522,51 +1523,51 @@ dependencies: chalk "^2.1.0" -"@changesets/parse@^0.3.11": - version "0.3.11" - resolved "https://registry.npmjs.org/@changesets/parse/-/parse-0.3.11.tgz#b53485f36152e6e9a097b56fc46cafb6705ce2b5" - integrity sha512-w5/X8KijcCrvv5lHimXIBR9o35c78niiBoesBjBUlWeifwPz0DHc/lzVYJKRkA5w0BGqft6T/9hKI68GaYj5wA== +"@changesets/parse@^0.3.12": + version "0.3.12" + resolved "https://registry.npmjs.org/@changesets/parse/-/parse-0.3.12.tgz#60569bb39ad4ffe47fc01d431613ce5c42e6590f" + integrity sha512-FOBz2L1dT9PcvyQU1Qp2sQ0B4Jw7EgRDAKFVzAQwhzXqCq03TcE7vgKU6VSksCJAioMYDowdVVHNnv/Uak6yZQ== dependencies: - "@changesets/types" "^4.0.2" + "@changesets/types" "^4.1.0" js-yaml "^3.13.1" -"@changesets/pre@^1.0.9": - version "1.0.9" - resolved "https://registry.npmjs.org/@changesets/pre/-/pre-1.0.9.tgz#f1a0efea42733c25ef4a782377b2ac61023bd1b7" - integrity sha512-F3+qMun89KlynecBD15fEpwGT/KxbYb3WGeut6w1xhZb0u7V/jdcPy9b+kJ2xmBqFZLn1WteWIP96IjxS57H7A== +"@changesets/pre@^1.0.10": + version "1.0.10" + resolved "https://registry.npmjs.org/@changesets/pre/-/pre-1.0.10.tgz#e677031f271cdab8443b21e0b3cda036a3919c30" + integrity sha512-cZC1C1wTSC17/TcTWivAQ4LAXz5jEYDuy3UeZiBz1wnTTzMHyTHLLwJi60juhl4hawXunDLw0mwZkcpS8Ivitg== dependencies: "@babel/runtime" "^7.10.4" "@changesets/errors" "^0.1.4" - "@changesets/types" "^4.0.2" + "@changesets/types" "^4.1.0" "@manypkg/get-packages" "^1.1.3" fs-extra "^7.0.1" -"@changesets/read@^0.5.3": - version "0.5.3" - resolved "https://registry.npmjs.org/@changesets/read/-/read-0.5.3.tgz#5afb14ee0e806751c255e94fe8742843a9b12487" - integrity sha512-zoj5NjNR4AhiGXz6aHTxsBLojChHgDOSbz6VfAVxMKX7tF7UhyNYptG2VEbSjxeamNKABx6k1pkM2IyVVlOcbQ== +"@changesets/read@^0.5.4": + version "0.5.4" + resolved "https://registry.npmjs.org/@changesets/read/-/read-0.5.4.tgz#c6dc6ab00c4f70f2ce6766433d92eebde1b00e7a" + integrity sha512-12dTx+p5ztFs9QgJDGHRHR6HzTIbHct9S4lK2I/i6Qkz1cNfAPVIbdoMCdbPIWeLank9muMUjiiFmCWJD7tQIg== dependencies: "@babel/runtime" "^7.10.4" - "@changesets/git" "^1.3.0" + "@changesets/git" "^1.3.1" "@changesets/logger" "^0.0.5" - "@changesets/parse" "^0.3.11" - "@changesets/types" "^4.0.2" + "@changesets/parse" "^0.3.12" + "@changesets/types" "^4.1.0" chalk "^2.1.0" fs-extra "^7.0.1" p-filter "^2.1.0" -"@changesets/types@^4.0.1", "@changesets/types@^4.0.2": - version "4.0.2" - resolved "https://registry.npmjs.org/@changesets/types/-/types-4.0.2.tgz#d20e1e45bdc96a97cc509c655e708b53a9292465" - integrity sha512-OeDaB7D+WVy/ErymPzFm58IeGvz4DOl+oedyZETfnkfMezF/Uhrm1Ub6MHrO5LcAaQTW+ptDmr0fmaVyoTxgHw== +"@changesets/types@^4.0.1", "@changesets/types@^4.1.0": + version "4.1.0" + resolved "https://registry.npmjs.org/@changesets/types/-/types-4.1.0.tgz#fb8f7ca2324fd54954824e864f9a61a82cb78fe0" + integrity sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw== -"@changesets/write@^0.1.6": - version "0.1.6" - resolved "https://registry.npmjs.org/@changesets/write/-/write-0.1.6.tgz#798d882bada93f391902a854a17965f3b80a5201" - integrity sha512-JWE2gJs9eHhorxqembkf43fllKlCz+sp1TJKSheaWfhWILMHPdfa/xQG4+sMZkISo1qZ+IlJyiBLha6iGGjXyA== +"@changesets/write@^0.1.7": + version "0.1.7" + resolved "https://registry.npmjs.org/@changesets/write/-/write-0.1.7.tgz#671def0d871cf5970c5b2f766f0ac4b19ecf1ddb" + integrity sha512-6r+tc6u2l5BBIwEAh7ivRYWFir+XKiw0q/6Hx6NJA4dSN5fNu9uyWRQ+IMHCllD9dBcsh+e79sOepc+xT8l28g== dependencies: "@babel/runtime" "^7.10.4" - "@changesets/types" "^4.0.2" + "@changesets/types" "^4.1.0" fs-extra "^7.0.1" human-id "^1.0.2" prettier "^1.19.1" From 3334ad47d40eb9e6bc87988d21eee48898c7b845 Mon Sep 17 00:00:00 2001 From: Johan Haals Date: Tue, 22 Feb 2022 10:22:38 +0100 Subject: [PATCH 324/383] catalog-react: Remove EntityContext Signed-off-by: Johan Haals --- .changeset/fair-hounds-leave.md | 5 +++ .changeset/pretty-lemons-mate.md | 5 +++ plugins/catalog-react/api-report.md | 4 -- plugins/catalog-react/src/hooks/index.ts | 1 - .../src/hooks/useEntity.test.tsx | 42 +------------------ plugins/catalog-react/src/hooks/useEntity.tsx | 42 ++----------------- .../components/EntityLayout/EntityLayout.tsx | 6 +-- 7 files changed, 18 insertions(+), 87 deletions(-) create mode 100644 .changeset/fair-hounds-leave.md create mode 100644 .changeset/pretty-lemons-mate.md diff --git a/.changeset/fair-hounds-leave.md b/.changeset/fair-hounds-leave.md new file mode 100644 index 0000000000..e986ca3177 --- /dev/null +++ b/.changeset/fair-hounds-leave.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-react': minor +--- + +Removed the deprecated `EntityContext` which have been replaced by `useEntity`, `EntityProvider` and `AsyncEntityProvider`. diff --git a/.changeset/pretty-lemons-mate.md b/.changeset/pretty-lemons-mate.md new file mode 100644 index 0000000000..7dd7aa3646 --- /dev/null +++ b/.changeset/pretty-lemons-mate.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog': patch +--- + +Removed usage of `EntityContext`. diff --git a/plugins/catalog-react/api-report.md b/plugins/catalog-react/api-report.md index 0a7bbbfc9e..37e959f93b 100644 --- a/plugins/catalog-react/api-report.md +++ b/plugins/catalog-react/api-report.md @@ -11,7 +11,6 @@ import { CATALOG_FILTER_EXISTS } from '@backstage/catalog-client'; import { CatalogApi } from '@backstage/catalog-client'; import { ComponentEntity } from '@backstage/catalog-model'; import { ComponentProps } from 'react'; -import { Context } from 'react'; import { Entity } from '@backstage/catalog-model'; import { EntityName } from '@backstage/catalog-model'; import { GetEntitiesResponse } from '@backstage/catalog-client'; @@ -151,9 +150,6 @@ export class DefaultStarredEntitiesApi implements StarredEntitiesApi { toggleStarred(entityRef: string): Promise; } -// @public @deprecated (undocumented) -export const EntityContext: Context; - // @public (undocumented) export type EntityFilter = { getCatalogFilters?: () => Record< diff --git a/plugins/catalog-react/src/hooks/index.ts b/plugins/catalog-react/src/hooks/index.ts index 170ea37394..5ce1fabbc6 100644 --- a/plugins/catalog-react/src/hooks/index.ts +++ b/plugins/catalog-react/src/hooks/index.ts @@ -14,7 +14,6 @@ * limitations under the License. */ export { - EntityContext, useEntity, useEntityFromUrl, EntityProvider, diff --git a/plugins/catalog-react/src/hooks/useEntity.test.tsx b/plugins/catalog-react/src/hooks/useEntity.test.tsx index 9e73ed1475..f61283f2cf 100644 --- a/plugins/catalog-react/src/hooks/useEntity.test.tsx +++ b/plugins/catalog-react/src/hooks/useEntity.test.tsx @@ -16,12 +16,7 @@ import React from 'react'; import { renderHook } from '@testing-library/react-hooks'; -import { - useEntity, - EntityProvider, - AsyncEntityProvider, - EntityContext, -} from './useEntity'; +import { useEntity, EntityProvider, AsyncEntityProvider } from './useEntity'; import { Entity } from '@backstage/catalog-model'; describe('EntityProvider', () => { @@ -103,38 +98,3 @@ describe('AsyncEntityProvider', () => { expect(result.current.refresh).toBe(undefined); }); }); - -describe('EntityContext.Provider', () => { - it('should provide no entity', async () => { - const { result } = renderHook(() => useEntity(), { - wrapper: ({ children }) => ( - - ), - }); - - expect(result.current.entity).toBe(undefined); - expect(result.current.loading).toBe(false); - expect(result.current.error).toBe(undefined); - expect(result.current.refresh).toBe(undefined); - }); - - it('should provide an entity', async () => { - const entity = { kind: 'MyEntity' } as Entity; - const { result } = renderHook(() => useEntity(), { - wrapper: ({ children }) => ( - - ), - }); - - expect(result.current.entity).toBe(entity); - expect(result.current.loading).toBe(false); - expect(result.current.error).toBe(undefined); - expect(result.current.refresh).toBe(undefined); - }); -}); diff --git a/plugins/catalog-react/src/hooks/useEntity.tsx b/plugins/catalog-react/src/hooks/useEntity.tsx index 908bfceb0b..5cb67cb79a 100644 --- a/plugins/catalog-react/src/hooks/useEntity.tsx +++ b/plugins/catalog-react/src/hooks/useEntity.tsx @@ -20,13 +20,7 @@ import { createVersionedValueMap, useVersionedContext, } from '@backstage/version-bridge'; -import React, { - ReactNode, - useEffect, - createContext, - Provider, - Context, -} from 'react'; +import React, { ReactNode, useEffect } from 'react'; import { useNavigate } from 'react-router'; import useAsyncRetry from 'react-use/lib/useAsyncRetry'; import { catalogApiRef } from '../api'; @@ -40,20 +34,6 @@ export type EntityLoadingStatus = { refresh?: VoidFunction; }; -/** - * @public - * @deprecated use `useEntity` and `EntityProvider` or `AsyncEntityProvider` instead. - */ -export const EntityContext: Context = - createContext({ - entity: undefined, - loading: true, - error: undefined, - refresh: () => {}, - }); -// We grab this for use in the new provider, since we're overriding it later on -const OldEntityProvider = EntityContext.Provider; - // This context has support for multiple concurrent versions of this package. // It is currently used in parallel with the old context in order to provide // a smooth transition, but will eventually be the only context we use. @@ -89,11 +69,9 @@ export const AsyncEntityProvider = ({ // We provide both the old and the new context, since // consumers might be doing things like `useContext(EntityContext)` return ( - - - {children} - - + + {children} + ); }; @@ -122,18 +100,6 @@ export const EntityProvider = ({ entity, children }: EntityProviderProps) => ( /> ); -// This is used for forwards compatibility with the new entity context -const CompatibilityProvider = ({ - value, - children, -}: { - value: EntityLoadingStatus; - children: ReactNode; -}) => { - return ; -}; -EntityContext.Provider = CompatibilityProvider as Provider; - /** @public * @deprecated will be deleted shortly due to low external usage, re-implement if needed. */ diff --git a/plugins/catalog/src/components/EntityLayout/EntityLayout.tsx b/plugins/catalog/src/components/EntityLayout/EntityLayout.tsx index 42658109f9..634662f386 100644 --- a/plugins/catalog/src/components/EntityLayout/EntityLayout.tsx +++ b/plugins/catalog/src/components/EntityLayout/EntityLayout.tsx @@ -35,17 +35,17 @@ import { useElementFilter, } from '@backstage/core-plugin-api'; import { - EntityContext, EntityRefLinks, FavoriteEntity, getEntityRelations, InspectEntityDialog, UnregisterEntityDialog, + useEntity, useEntityCompoundName, } from '@backstage/plugin-catalog-react'; import { Box, TabProps } from '@material-ui/core'; import { Alert } from '@material-ui/lab'; -import React, { useContext, useEffect, useState } from 'react'; +import React, { useEffect, useState } from 'react'; import { useLocation, useNavigate } from 'react-router'; import { EntityContextMenu } from '../EntityContextMenu/EntityContextMenu'; @@ -177,7 +177,7 @@ export const EntityLayout = (props: EntityLayoutProps) => { children, } = props; const { kind, namespace, name } = useEntityCompoundName(); - const { entity, loading, error } = useContext(EntityContext); + const { entity, loading, error } = useEntity(); const location = useLocation(); const routes = useElementFilter( children, From e7d2599d356bbb01c2e59f614cd43571606bb759 Mon Sep 17 00:00:00 2001 From: Saksham Sharma Date: Mon, 21 Feb 2022 14:59:56 +0530 Subject: [PATCH 325/383] Update the docs Signed-off-by: Saksham Sharma --- CONTRIBUTING.md | 4 ++-- GOVERNANCE.md | 6 +++--- STYLE.md | 4 ++-- docs/getting-started/configuration.md | 10 +++++----- docs/overview/adopting.md | 14 +++++++------- docs/overview/roadmap.md | 2 +- 6 files changed, 20 insertions(+), 20 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index f054de05ce..3513545420 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -2,7 +2,7 @@ Our vision for Backstage is for it to become the trusted standard toolbox (read: UX layer) for the open source infrastructure landscape. Think of it like Kubernetes for developer experience. We realize this is an ambitious goal. We can’t do it alone. -Therefore we want to create strong community of contributors -- all working together to create the kind of delightful experience that our developers deserve. +Therefore we want to a create strong community of contributors -- all working together to create the kind of delightful experience that our developers deserve. Contributions are welcome, and they are greatly appreciated! Every little bit helps, and credit will always be given. ❤️ @@ -100,7 +100,7 @@ Signed-off-by: Jane Smith - In case you forgot to add it to the last N commits in your branch, use `git rebase --signoff HEAD~N` and replace N with the number of new commits you created in your branch. - If you have a very deep branch with a lot of commits, run `git rebase -i --signoff $(git merge-base -a master HEAD)`, double check to make sense of the commits (keep all lines as `pick`) and save and close the editor. This should bulk sign all the commits in your PR. Do be careful though. If you have a complex flow with a lot of branching and re-merging of work branches and stuff, merge-base may not be the right solution for you. -Note: If you have already pushed you branch to a remote, you might have to force push: `git push -f` after the rebase. +Note: If you have already pushed your branch to a remote, you might have to force push: `git push -f` after the rebase. ### Using GitHub Desktop? diff --git a/GOVERNANCE.md b/GOVERNANCE.md index 3bcef61021..e841f7020a 100644 --- a/GOVERNANCE.md +++ b/GOVERNANCE.md @@ -24,7 +24,7 @@ To become a maintainer you need to demonstrate the following: - Monitor Discord (delayed response is perfectly acceptable). - Triage GitHub issues and perform pull request reviews for other maintainers and the community. - Triage build issues - file issues for known flaky builds or bugs, and either fix or find someone to fix any master build breakages. -- During GitHub issue triage, apply all applicable ([labels](https://github.com/backstage/backstage/labels)) to each new issue. Labels are extremely useful for future issue follow up. Which labels to apply is somewhat subjective so just use your best judgment. A few of the most important labels that are not self explanatory are: +- During GitHub issue triage, apply all applicable ([labels](https://github.com/backstage/backstage/labels)) to each new issue. Labels are extremely useful for future issue to follow-up. Which labels to apply is somewhat subjective so just use your best judgment. A few of the most important labels that are not self-explanatory are: - good first issue: Mark any issue that can reasonably be accomplished by a new contributor with this label. - help wanted: Unless it is immediately obvious that someone is going to work on an issue (and if so assign it), mark it help wanted. - Make sure that ongoing PRs are moving forward at the right pace or closing them. @@ -71,9 +71,9 @@ The following is a non-exhaustive list of types of change, for which a reviewer - Additions and removals of entire packages - Releases (e.g. pull requests titled `Version Packages`) -A maintainer may suggest an addition to the reviewers team by opening a pull request that modifies [`OWNERS.md`](./OWNERS.md) accordingly. Prospective reviewers are not expected to do this themselves, but should rather ask a maintainer to sponsor their addition. All of the maintainers and sponsors are called to vote on the addition (see the section below about voting). If the vote passes, the pull request can be approved and merged, and the corresponding addition to the GitHub team can be made. +A maintainer may suggest an addition to the reviewers' team by opening a pull request that modifies [`OWNERS.md`](./OWNERS.md) accordingly. Prospective reviewers are not expected to do this themselves, but should rather ask a maintainer to sponsor their addition. All of the maintainers and sponsors are called to vote on the addition (see the section below about voting). If the vote passes, the pull request can be approved and merged, and the corresponding addition to the GitHub team can be made. -A reviewer can elect to remove themselves from the reviewers group by opening, or asking a maintainer to open, a pull request that modifies [`OWNERS.md`](./OWNERS.md) accordingly. A maintainer will approve and merge the pull request, and the corresponding removal from the GitHub team can be made. +A reviewer can elect to remove themselves from the reviewers' group by opening, or asking a maintainer to open, a pull request that modifies [`OWNERS.md`](./OWNERS.md) accordingly. A maintainer will approve and merge the pull request, and the corresponding removal from the GitHub team can be made. A maintainer can call on the other maintainers and sponsors for a vote to remove a reviewer (see the section below about conflict resolution and voting). If the vote passes, a maintainer creates a pull request that modifies [`OWNERS.md`](./OWNERS.md) accordingly. After approval by another maintainer, the pull request can be merged, and the corresponding removal from the GitHub team can be made. diff --git a/STYLE.md b/STYLE.md index d968d387fc..1c40ed241e 100644 --- a/STYLE.md +++ b/STYLE.md @@ -131,7 +131,7 @@ We use [API Extractor](https://api-extractor.com/pages/overview/demo_docs/) to g The doc comments are of the good old `/** ... */` format, with tags of the format `@` used to mark various things. The [TSDoc website](https://tsdoc.org/) has a good index of all available tags. -There are a few things to pay attention to make the documentation show up in a nice way on the website... +There are a few things to pay attention to to make the documentation show up in a nice way on the website... ## Declare exported functions using the `function` keyword @@ -163,7 +163,7 @@ If the parameters of a function are destructed in the parameter list, they will ![image](https://user-images.githubusercontent.com/4984472/133117011-3e6cb6da-40dd-450e-8d33-51bdcf412e08.png) -Instead prefer to use a single parameter variable and then move the destructuring into the function body instead, which will look much nicer: +Instead prefer to use a single parameter variable and then move the destructuring into the function body, which will look much nicer: ![image](https://user-images.githubusercontent.com/4984472/133120542-d648de43-5495-43a8-b532-f5e6f6ab736e.png) diff --git a/docs/getting-started/configuration.md b/docs/getting-started/configuration.md index 55285e7f4e..2f989b9cf3 100644 --- a/docs/getting-started/configuration.md +++ b/docs/getting-started/configuration.md @@ -28,7 +28,7 @@ At the end of this tutorial, you can expect: These instructions can be skipped if you already have a PostgreSQL server installed and created a schema and user. The example below is for Linux, but -luckily there's detailed instructions on how to +luckily there are detailed instructions on how to [install PostgreSQL](https://www.postgresql.org/download/) to help you get started. @@ -113,7 +113,7 @@ new component, or register an existing one it will be saved in the database. Later in this tutorial you'll add a service, and you can test if it's persistent as advertised. -If you want to read more about the database configuration, here's some helpful +If you want to read more about the database configuration, here are some helpful links: - [Configuring Plugin Databases](../tutorials/configuring-plugin-databases.md#privileges) @@ -122,7 +122,7 @@ links: ### Setting up authentication -There's multiple authentication providers available for you to use with +There are multiple authentication providers available for you to use with Backstage, feel free to follow [the instructions for adding authentication](../auth/). @@ -191,7 +191,7 @@ components: { That should be it. You can stop your Backstage App. When you start it again and go to your Backstage portal in your browser, you should have your login prompt! -To learn more about Authentication in Backstage, there's the following docs you +To learn more about Authentication in Backstage, here are the following docs you could read: - [Adding Authentication](../auth/) @@ -208,7 +208,7 @@ and Groups can also be loaded from an organization. While using GitHub Apps might be the best way to set up integrations, for this tutorial you'll use a Personal Access Token. -Create your Personal Access Token by opening the +Create your Personal Access Token by opening [the GitHub token creation page](https://github.com/settings/tokens/new). Use a name to identify this token and put it in the notes field. Choose a number of days for expiration. If you have a hard time picking a number, we suggest to go diff --git a/docs/overview/adopting.md b/docs/overview/adopting.md index 152be21a2c..0765d4a452 100644 --- a/docs/overview/adopting.md +++ b/docs/overview/adopting.md @@ -25,7 +25,7 @@ This team will have **four** primary objectives: 2. Drive adoption of customers (developers at your company). -3. Work with senior tech leadership and architects to ensure your organizations +3. Work with senior tech leadership and architects to ensure your organization's best practices for software development are encoded into a set of [Software Templates](../features/software-templates/index.md). @@ -62,7 +62,7 @@ products they maintain. ### Tactics -Example of tactics we have used to evangelize Backstage internally: +Examples of tactics we have used to evangelize Backstage internally: - Arrange "Lunch & Learns" and seminars. Frequently offer teams interested in Backstage development to come to a seminar where you show, for example, how to @@ -77,13 +77,13 @@ Example of tactics we have used to evangelize Backstage internally: - Show & tell meetings. In order to build an internal community around Backstage we have quarterly meetings where anyone working on Backstage is invited to - present their work. This is a not only a great way to get early feedback, but + present their work. This is not only a great way to get early feedback, but also helps coordination between teams that are building overlapping experiences. - Provide metrics. Add instrumentation to your Backstage deployment and make - metrics available to contributing teams. At Spotify we have even gone so far - as sending out weekly digest email showing how usage metrics have changed for + metrics available to contributing teams. At Spotify, we have even gone so far + as to send out weekly digest emails showing how usage metrics have changed for individual plugins. - Pro-actively identify new plugins. Reach out to teams that own internal UIs or @@ -109,12 +109,12 @@ successful impact on your software development process: - **Deploys to production** Cousin to the metric above: How many times does an engineer push changes into production. -- **MTTR** With clear ownership of all the pieces in your micro services +- **MTTR** With clear ownership of all the pieces in your microservices ecosystem and all tools integrated into one place, Backstage makes it quicker for teams to find the root cause of failures, and fix them. - **Context switching** Reducing context switching can help engineers stay in - the "zone". We measure the number of different tools an engineer have to + the "zone". We measure the number of different tools an engineer has to interact with in order to get a certain job done (e.g. push a change, follow it into production and validate it did not break anything). diff --git a/docs/overview/roadmap.md b/docs/overview/roadmap.md index 1c620348bb..8ecd7c4a38 100644 --- a/docs/overview/roadmap.md +++ b/docs/overview/roadmap.md @@ -21,7 +21,7 @@ mean features in the radar, but not yet scheduled. The long-term roadmap (12 - 36 months) is not detailed in the public roadmap. Third-party contributions are also not currently included in the roadmap. Let us -know about any ongoing developments and we’re happy to include it here as well. +know about any ongoing developments and we’re happy to include them here as well. ## What’s next From 5c58400dfe22c9a2177aff9071ac02cbaae3fbad Mon Sep 17 00:00:00 2001 From: Saksham Sharma Date: Mon, 21 Feb 2022 15:04:15 +0530 Subject: [PATCH 326/383] Fix a typo in CONTRIBUTING.md Signed-off-by: Saksham Sharma --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 3513545420..e853a68ad3 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -2,7 +2,7 @@ Our vision for Backstage is for it to become the trusted standard toolbox (read: UX layer) for the open source infrastructure landscape. Think of it like Kubernetes for developer experience. We realize this is an ambitious goal. We can’t do it alone. -Therefore we want to a create strong community of contributors -- all working together to create the kind of delightful experience that our developers deserve. +Therefore we want to create a strong community of contributors -- all working together to create the kind of delightful experience that our developers deserve. Contributions are welcome, and they are greatly appreciated! Every little bit helps, and credit will always be given. ❤️ From a0976784752311487534ce9bbdcbc42741edf311 Mon Sep 17 00:00:00 2001 From: Guilherme Oenning Date: Tue, 22 Feb 2022 10:03:20 +0000 Subject: [PATCH 327/383] add configuration to use search criteria to select groups Signed-off-by: Guilherme Oenning --- .changeset/tender-dogs-behave.md | 5 ++++ .../api-report.md | 5 ++++ .../config.d.ts | 12 ++++++++ .../src/microsoftGraph/client.ts | 10 +++++++ .../src/microsoftGraph/config.ts | 29 +++++++++++++++---- .../src/microsoftGraph/read.ts | 8 +++++ .../MicrosoftGraphOrgEntityProvider.ts | 2 ++ .../MicrosoftGraphOrgReaderProcessor.ts | 2 ++ 8 files changed, 67 insertions(+), 6 deletions(-) create mode 100644 .changeset/tender-dogs-behave.md diff --git a/.changeset/tender-dogs-behave.md b/.changeset/tender-dogs-behave.md new file mode 100644 index 0000000000..f59842c70a --- /dev/null +++ b/.changeset/tender-dogs-behave.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend-module-msgraph': patch +--- + +add configuration to use search criteria to select groups diff --git a/plugins/catalog-backend-module-msgraph/api-report.md b/plugins/catalog-backend-module-msgraph/api-report.md index bb442aa544..9d98b12249 100644 --- a/plugins/catalog-backend-module-msgraph/api-report.md +++ b/plugins/catalog-backend-module-msgraph/api-report.md @@ -153,7 +153,9 @@ export type MicrosoftGraphProviderConfig = { userFilter?: string; userExpand?: string[]; userGroupMemberFilter?: string; + userGroupMemberSearch?: string; groupFilter?: string; + groupSearch?: string; }; // @public @@ -161,6 +163,7 @@ export function normalizeEntityName(name: string): string; // @public export type ODataQuery = { + search?: string; filter?: string; expand?: string[]; select?: string[]; @@ -183,7 +186,9 @@ export function readMicrosoftGraphOrg( options: { userExpand?: string[]; userFilter?: string; + userGroupMemberSearch?: string; userGroupMemberFilter?: string; + groupSearch?: string; groupFilter?: string; userTransformer?: UserTransformer; groupTransformer?: GroupTransformer; diff --git a/plugins/catalog-backend-module-msgraph/config.d.ts b/plugins/catalog-backend-module-msgraph/config.d.ts index c7eb5ae8e4..d47abf60bb 100644 --- a/plugins/catalog-backend-module-msgraph/config.d.ts +++ b/plugins/catalog-backend-module-msgraph/config.d.ts @@ -73,12 +73,24 @@ export interface Config { * E.g. "securityEnabled eq false and mailEnabled eq true" */ groupFilter?: string; + /** + * The search criteria to apply to extract users by groups memberships. + * + * E.g. "\"displayName:-team\"" would only match groups which contain '-team' + */ + groupSearch?: string; /** * The filter to apply to extract users by groups memberships. * * E.g. "displayName eq 'Backstage Users'" */ userGroupMemberFilter?: string; + /** + * The search criteria to apply to extract groups. + * + * E.g. "\"displayName:-team\"" would only match groups which contain '-team' + */ + userGroupMemberSearch?: string; }>; }; }; diff --git a/plugins/catalog-backend-module-msgraph/src/microsoftGraph/client.ts b/plugins/catalog-backend-module-msgraph/src/microsoftGraph/client.ts index 827c9fc14d..8814c9d662 100644 --- a/plugins/catalog-backend-module-msgraph/src/microsoftGraph/client.ts +++ b/plugins/catalog-backend-module-msgraph/src/microsoftGraph/client.ts @@ -27,6 +27,10 @@ import { MicrosoftGraphProviderConfig } from './config'; * @public */ export type ODataQuery = { + /** + * search resources within a collection matching a free-text search expression. + */ + search?: string; /** * filter a collection of resources */ @@ -135,6 +139,7 @@ export class MicrosoftGraphClient { async requestApi(path: string, query?: ODataQuery): Promise { const queryString = qs.stringify( { + $search: query?.search, $filter: query?.filter, $select: query?.select?.join(','), $expand: query?.expand?.join(','), @@ -167,6 +172,11 @@ export class MicrosoftGraphClient { return await fetch(url, { headers: { Authorization: `Bearer ${token.accessToken}`, + + // Eventual consistency is required to use $search. + // Groups/Users are not changed that frequently to require strong consistency + // If a new user/group is not found, it'll eventually be imported on a subsequent call + ConsistencyLevel: 'eventual' }, }); } diff --git a/plugins/catalog-backend-module-msgraph/src/microsoftGraph/config.ts b/plugins/catalog-backend-module-msgraph/src/microsoftGraph/config.ts index c401bc2553..8d72833475 100644 --- a/plugins/catalog-backend-module-msgraph/src/microsoftGraph/config.ts +++ b/plugins/catalog-backend-module-msgraph/src/microsoftGraph/config.ts @@ -64,12 +64,24 @@ export type MicrosoftGraphProviderConfig = { * E.g. "displayName eq 'Backstage Users'" */ userGroupMemberFilter?: string; + /** + * The search criteria to apply to extract users by groups memberships. + * + * E.g. "\"displayName:-team\"" would only match groups which contain '-team' + */ + userGroupMemberSearch?: string; /** * The filter to apply to extract groups. * * E.g. "securityEnabled eq false and mailEnabled eq true" */ groupFilter?: string; + /** + * The search criteria to apply to extract groups. + * + * E.g. "\"displayName:-team\"" would only match groups which contain '-team' + */ + groupSearch?: string; }; /** @@ -93,18 +105,21 @@ export function readMicrosoftGraphConfig( : 'https://login.microsoftonline.com'; const tenantId = providerConfig.getString('tenantId'); const clientId = providerConfig.getString('clientId'); - const clientSecret = providerConfig.getString('clientSecret'); - const userFilter = providerConfig.getOptionalString('userFilter'); - const userGroupMemberFilter = providerConfig.getOptionalString( - 'userGroupMemberFilter', - ); - const groupFilter = providerConfig.getOptionalString('groupFilter'); + const clientSecret = providerConfig.getString("clientSecret"); + const userFilter = providerConfig.getOptionalString("userFilter"); + const userGroupMemberFilter = providerConfig.getOptionalString("userGroupMemberFilter"); + const userGroupMemberSearch = providerConfig.getOptionalString("userGroupMemberSearch"); + const groupFilter = providerConfig.getOptionalString("groupFilter"); + const groupSearch = providerConfig.getOptionalString("groupSearch"); if (userFilter && userGroupMemberFilter) { throw new Error( `userFilter and userGroupMemberFilter are mutually exclusive, only one can be specified.`, ); } + if (userFilter && userGroupMemberSearch) { + throw new Error(`userGroupMemberSearch cannot be specified when userFilter is defined.`); + } providers.push({ target, @@ -114,7 +129,9 @@ export function readMicrosoftGraphConfig( clientSecret, userFilter, userGroupMemberFilter, + userGroupMemberSearch, groupFilter, + groupSearch }); } diff --git a/plugins/catalog-backend-module-msgraph/src/microsoftGraph/read.ts b/plugins/catalog-backend-module-msgraph/src/microsoftGraph/read.ts index 58e60ab76a..f862fd5ace 100644 --- a/plugins/catalog-backend-module-msgraph/src/microsoftGraph/read.ts +++ b/plugins/catalog-backend-module-msgraph/src/microsoftGraph/read.ts @@ -137,6 +137,7 @@ export async function readMicrosoftGraphUsers( export async function readMicrosoftGraphUsersInGroups( client: MicrosoftGraphClient, options: { + userGroupMemberSearch?: string; userGroupMemberFilter?: string; transformer?: UserTransformer; logger: Logger; @@ -155,6 +156,7 @@ export async function readMicrosoftGraphUsersInGroups( const groupMemberUsers: Set = new Set(); for await (const group of client.getGroups({ + search: options?.userGroupMemberSearch, filter: options?.userGroupMemberFilter, })) { // Process all groups in parallel, otherwise it can take quite some time @@ -324,6 +326,7 @@ export async function readMicrosoftGraphGroups( client: MicrosoftGraphClient, tenantId: string, options?: { + groupSearch?: string; groupFilter?: string; groupTransformer?: GroupTransformer; organizationTransformer?: OrganizationTransformer; @@ -351,6 +354,7 @@ export async function readMicrosoftGraphGroups( const promises: Promise[] = []; for await (const group of client.getGroups({ + search: options?.groupSearch, filter: options?.groupFilter, })) { // Process all groups in parallel, otherwise it can take quite some time @@ -504,7 +508,9 @@ export async function readMicrosoftGraphOrg( options: { userExpand?: string[]; userFilter?: string; + userGroupMemberSearch?: string; userGroupMemberFilter?: string; + groupSearch?: string; groupFilter?: string; userTransformer?: UserTransformer; groupTransformer?: GroupTransformer; @@ -519,6 +525,7 @@ export async function readMicrosoftGraphOrg( client, { userGroupMemberFilter: options.userGroupMemberFilter, + userGroupMemberSearch: options.userGroupMemberSearch, transformer: options.userTransformer, logger: options.logger, }, @@ -535,6 +542,7 @@ export async function readMicrosoftGraphOrg( } const { groups, rootGroup, groupMember, groupMemberOf } = await readMicrosoftGraphGroups(client, tenantId, { + groupSearch: options?.groupSearch, groupFilter: options?.groupFilter, groupTransformer: options?.groupTransformer, organizationTransformer: options?.organizationTransformer, diff --git a/plugins/catalog-backend-module-msgraph/src/processors/MicrosoftGraphOrgEntityProvider.ts b/plugins/catalog-backend-module-msgraph/src/processors/MicrosoftGraphOrgEntityProvider.ts index 92836893f0..7d27e87d73 100644 --- a/plugins/catalog-backend-module-msgraph/src/processors/MicrosoftGraphOrgEntityProvider.ts +++ b/plugins/catalog-backend-module-msgraph/src/processors/MicrosoftGraphOrgEntityProvider.ts @@ -123,7 +123,9 @@ export class MicrosoftGraphOrgEntityProvider implements EntityProvider { { userFilter: provider.userFilter, userGroupMemberFilter: provider.userGroupMemberFilter, + userGroupMemberSearch: provider.userGroupMemberSearch, groupFilter: provider.groupFilter, + groupSearch: provider.groupSearch, groupTransformer: this.options.groupTransformer, userTransformer: this.options.userTransformer, organizationTransformer: this.options.organizationTransformer, diff --git a/plugins/catalog-backend-module-msgraph/src/processors/MicrosoftGraphOrgReaderProcessor.ts b/plugins/catalog-backend-module-msgraph/src/processors/MicrosoftGraphOrgReaderProcessor.ts index 78b2922f60..2a7776f449 100644 --- a/plugins/catalog-backend-module-msgraph/src/processors/MicrosoftGraphOrgReaderProcessor.ts +++ b/plugins/catalog-backend-module-msgraph/src/processors/MicrosoftGraphOrgReaderProcessor.ts @@ -108,7 +108,9 @@ export class MicrosoftGraphOrgReaderProcessor implements CatalogProcessor { userExpand: provider.userExpand, userFilter: provider.userFilter, userGroupMemberFilter: provider.userGroupMemberFilter, + userGroupMemberSearch: provider.userGroupMemberSearch, groupFilter: provider.groupFilter, + groupSearch: provider.groupSearch, userTransformer: this.userTransformer, groupTransformer: this.groupTransformer, organizationTransformer: this.organizationTransformer, From 3791961a4a7d6b42aa8e15463c568eab2253f416 Mon Sep 17 00:00:00 2001 From: Saksham Sharma Date: Tue, 22 Feb 2022 15:45:36 +0530 Subject: [PATCH 328/383] Add the requested changes Signed-off-by: Saksham Sharma --- GOVERNANCE.md | 6 +++--- STYLE.md | 2 +- docs/getting-started/configuration.md | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/GOVERNANCE.md b/GOVERNANCE.md index e841f7020a..5bafa19c81 100644 --- a/GOVERNANCE.md +++ b/GOVERNANCE.md @@ -24,7 +24,7 @@ To become a maintainer you need to demonstrate the following: - Monitor Discord (delayed response is perfectly acceptable). - Triage GitHub issues and perform pull request reviews for other maintainers and the community. - Triage build issues - file issues for known flaky builds or bugs, and either fix or find someone to fix any master build breakages. -- During GitHub issue triage, apply all applicable ([labels](https://github.com/backstage/backstage/labels)) to each new issue. Labels are extremely useful for future issue to follow-up. Which labels to apply is somewhat subjective so just use your best judgment. A few of the most important labels that are not self-explanatory are: +- During GitHub issue triage, apply all applicable ([labels](https://github.com/backstage/backstage/labels)) to each new issue. Labels are extremely useful for future issue follow-up. Which labels to apply is somewhat subjective so just use your best judgment. A few of the most important labels that are not self-explanatory are: - good first issue: Mark any issue that can reasonably be accomplished by a new contributor with this label. - help wanted: Unless it is immediately obvious that someone is going to work on an issue (and if so assign it), mark it help wanted. - Make sure that ongoing PRs are moving forward at the right pace or closing them. @@ -71,9 +71,9 @@ The following is a non-exhaustive list of types of change, for which a reviewer - Additions and removals of entire packages - Releases (e.g. pull requests titled `Version Packages`) -A maintainer may suggest an addition to the reviewers' team by opening a pull request that modifies [`OWNERS.md`](./OWNERS.md) accordingly. Prospective reviewers are not expected to do this themselves, but should rather ask a maintainer to sponsor their addition. All of the maintainers and sponsors are called to vote on the addition (see the section below about voting). If the vote passes, the pull request can be approved and merged, and the corresponding addition to the GitHub team can be made. +A maintainer may suggest an addition to the reviewers team by opening a pull request that modifies [`OWNERS.md`](./OWNERS.md) accordingly. Prospective reviewers are not expected to do this themselves, but should rather ask a maintainer to sponsor their addition. All of the maintainers and sponsors are called to vote on the addition (see the section below about voting). If the vote passes, the pull request can be approved and merged, and the corresponding addition to the GitHub team can be made. -A reviewer can elect to remove themselves from the reviewers' group by opening, or asking a maintainer to open, a pull request that modifies [`OWNERS.md`](./OWNERS.md) accordingly. A maintainer will approve and merge the pull request, and the corresponding removal from the GitHub team can be made. +A reviewer can elect to remove themselves from the reviewers group by opening, or asking a maintainer to open, a pull request that modifies [`OWNERS.md`](./OWNERS.md) accordingly. A maintainer will approve and merge the pull request, and the corresponding removal from the GitHub team can be made. A maintainer can call on the other maintainers and sponsors for a vote to remove a reviewer (see the section below about conflict resolution and voting). If the vote passes, a maintainer creates a pull request that modifies [`OWNERS.md`](./OWNERS.md) accordingly. After approval by another maintainer, the pull request can be merged, and the corresponding removal from the GitHub team can be made. diff --git a/STYLE.md b/STYLE.md index 1c40ed241e..d74616a88c 100644 --- a/STYLE.md +++ b/STYLE.md @@ -131,7 +131,7 @@ We use [API Extractor](https://api-extractor.com/pages/overview/demo_docs/) to g The doc comments are of the good old `/** ... */` format, with tags of the format `@` used to mark various things. The [TSDoc website](https://tsdoc.org/) has a good index of all available tags. -There are a few things to pay attention to to make the documentation show up in a nice way on the website... +There are a few things to pay attention to, in order to make the documentation show up in a nice way on the website... ## Declare exported functions using the `function` keyword diff --git a/docs/getting-started/configuration.md b/docs/getting-started/configuration.md index 2f989b9cf3..082fbf5b70 100644 --- a/docs/getting-started/configuration.md +++ b/docs/getting-started/configuration.md @@ -191,7 +191,7 @@ components: { That should be it. You can stop your Backstage App. When you start it again and go to your Backstage portal in your browser, you should have your login prompt! -To learn more about Authentication in Backstage, here are the following docs you +To learn more about Authentication in Backstage, here are some docs you could read: - [Adding Authentication](../auth/) From 981a841e5f6673c0439989ced7d1dd2833b907d6 Mon Sep 17 00:00:00 2001 From: Guilherme Oenning Date: Tue, 22 Feb 2022 10:21:23 +0000 Subject: [PATCH 329/383] fix prettier Signed-off-by: Guilherme Oenning --- .../src/microsoftGraph/client.ts | 2 +- .../src/microsoftGraph/config.ts | 22 ++++++++++++------- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/plugins/catalog-backend-module-msgraph/src/microsoftGraph/client.ts b/plugins/catalog-backend-module-msgraph/src/microsoftGraph/client.ts index 8814c9d662..8a9b2fd161 100644 --- a/plugins/catalog-backend-module-msgraph/src/microsoftGraph/client.ts +++ b/plugins/catalog-backend-module-msgraph/src/microsoftGraph/client.ts @@ -176,7 +176,7 @@ export class MicrosoftGraphClient { // Eventual consistency is required to use $search. // Groups/Users are not changed that frequently to require strong consistency // If a new user/group is not found, it'll eventually be imported on a subsequent call - ConsistencyLevel: 'eventual' + ConsistencyLevel: 'eventual', }, }); } diff --git a/plugins/catalog-backend-module-msgraph/src/microsoftGraph/config.ts b/plugins/catalog-backend-module-msgraph/src/microsoftGraph/config.ts index 8d72833475..6809144f80 100644 --- a/plugins/catalog-backend-module-msgraph/src/microsoftGraph/config.ts +++ b/plugins/catalog-backend-module-msgraph/src/microsoftGraph/config.ts @@ -105,12 +105,16 @@ export function readMicrosoftGraphConfig( : 'https://login.microsoftonline.com'; const tenantId = providerConfig.getString('tenantId'); const clientId = providerConfig.getString('clientId'); - const clientSecret = providerConfig.getString("clientSecret"); - const userFilter = providerConfig.getOptionalString("userFilter"); - const userGroupMemberFilter = providerConfig.getOptionalString("userGroupMemberFilter"); - const userGroupMemberSearch = providerConfig.getOptionalString("userGroupMemberSearch"); - const groupFilter = providerConfig.getOptionalString("groupFilter"); - const groupSearch = providerConfig.getOptionalString("groupSearch"); + const clientSecret = providerConfig.getString('clientSecret'); + const userFilter = providerConfig.getOptionalString('userFilter'); + const userGroupMemberFilter = providerConfig.getOptionalString( + 'userGroupMemberFilter', + ); + const userGroupMemberSearch = providerConfig.getOptionalString( + 'userGroupMemberSearch', + ); + const groupFilter = providerConfig.getOptionalString('groupFilter'); + const groupSearch = providerConfig.getOptionalString('groupSearch'); if (userFilter && userGroupMemberFilter) { throw new Error( @@ -118,7 +122,9 @@ export function readMicrosoftGraphConfig( ); } if (userFilter && userGroupMemberSearch) { - throw new Error(`userGroupMemberSearch cannot be specified when userFilter is defined.`); + throw new Error( + `userGroupMemberSearch cannot be specified when userFilter is defined.`, + ); } providers.push({ @@ -131,7 +137,7 @@ export function readMicrosoftGraphConfig( userGroupMemberFilter, userGroupMemberSearch, groupFilter, - groupSearch + groupSearch, }); } From dc978454221c76c2ebc2c33679ceb5db4493fb3d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Tue, 22 Feb 2022 11:27:53 +0100 Subject: [PATCH 330/383] backend-tasks: no unnecessary janitor log output on sqlite MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .changeset/nervous-pears-cover.md | 5 +++++ .../src/tasks/PluginTaskSchedulerJanitor.ts | 14 ++++++++------ 2 files changed, 13 insertions(+), 6 deletions(-) create mode 100644 .changeset/nervous-pears-cover.md diff --git a/.changeset/nervous-pears-cover.md b/.changeset/nervous-pears-cover.md new file mode 100644 index 0000000000..165fea96c0 --- /dev/null +++ b/.changeset/nervous-pears-cover.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-tasks': patch +--- + +Only output janitor logs when actually timing out tasks diff --git a/packages/backend-tasks/src/tasks/PluginTaskSchedulerJanitor.ts b/packages/backend-tasks/src/tasks/PluginTaskSchedulerJanitor.ts index 8b90afff42..c77fe4e925 100644 --- a/packages/backend-tasks/src/tasks/PluginTaskSchedulerJanitor.ts +++ b/packages/backend-tasks/src/tasks/PluginTaskSchedulerJanitor.ts @@ -62,19 +62,21 @@ export class PluginTaskSchedulerJanitor { const dbNull = this.knex.raw('null'); - const tasksQuery = this.knex(DB_TASKS_TABLE) + const tasks = await this.knex(DB_TASKS_TABLE) .where('current_run_expires_at', '<', this.knex.fn.now()) .update({ current_run_ticket: dbNull, current_run_started_at: dbNull, current_run_expires_at: dbNull, - }); + }) + .returning(['id']); - if (this.knex.client.config.client === 'sqlite3') { - const tasks = await tasksQuery; - this.logger.warn(`${tasks} tasks timed out and were lost`); + // sqlite ignores "returning", returns number of rows changed instead + if (typeof tasks === 'number') { + if (tasks > 0) { + this.logger.warn(`${tasks} tasks timed out and were lost`); + } } else { - const tasks = await tasksQuery.returning(['id']); for (const { id } of tasks) { this.logger.warn(`Task timed out and was lost: ${id}`); } From 8142c09b3f08f27f571d0ece8c10992d2d9efcea Mon Sep 17 00:00:00 2001 From: blam Date: Tue, 22 Feb 2022 11:29:35 +0100 Subject: [PATCH 331/383] chore: wth prettier Signed-off-by: blam --- .../scaffolder/actions/builtin/github/helpers.ts | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) 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 542de013b4..c310389488 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/helpers.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/helpers.ts @@ -56,13 +56,12 @@ export async function getOctokitOptions(options: { // TODO(blam): Consider changing this API to take host and repo instead of repoUrl, as we end up parsing in this function // and then parsing in the `getCredentials` function too the other side - const { - token: credentialProviderToken, - } = await githubCredentialsProvider.getCredentials({ - url: `https://${host}/${encodeURIComponent(owner)}/${encodeURIComponent( - repo, - )}`, - }); + const { token: credentialProviderToken } = + await githubCredentialsProvider.getCredentials({ + url: `https://${host}/${encodeURIComponent(owner)}/${encodeURIComponent( + repo, + )}`, + }); if (!credentialProviderToken) { throw new InputError( From 0045270527c2aa59a4dc626c9deef1f69217e8df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Tue, 22 Feb 2022 11:31:05 +0100 Subject: [PATCH 332/383] airbrake: fix config to be optional, unbreak local dev startup MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .changeset/tidy-otters-roll.md | 5 +++++ plugins/airbrake-backend/config.d.ts | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 .changeset/tidy-otters-roll.md diff --git a/.changeset/tidy-otters-roll.md b/.changeset/tidy-otters-roll.md new file mode 100644 index 0000000000..13017e4b0e --- /dev/null +++ b/.changeset/tidy-otters-roll.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-airbrake-backend': patch +--- + +Make config optional diff --git a/plugins/airbrake-backend/config.d.ts b/plugins/airbrake-backend/config.d.ts index af28d7e73e..9563121127 100644 --- a/plugins/airbrake-backend/config.d.ts +++ b/plugins/airbrake-backend/config.d.ts @@ -16,7 +16,7 @@ export interface Config { /** Configuration options for the Airbrake plugin */ - airbrake: { + airbrake?: { /** * The API Key to authenticate requests. More details on how to get this here: https://airbrake.io/docs/api/#authentication * @visibility secret From 48c0316f3e0d0c034bbb5d553e323c5828ab5748 Mon Sep 17 00:00:00 2001 From: blam Date: Tue, 22 Feb 2022 12:28:19 +0100 Subject: [PATCH 333/383] chore: add type option for emitLogEvent Signed-off-by: blam --- .../src/scaffolder/tasks/DatabaseTaskStore.ts | 9 ++++++--- plugins/scaffolder-backend/src/scaffolder/tasks/types.ts | 4 ++-- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/DatabaseTaskStore.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/DatabaseTaskStore.ts index 389ecae5c6..b81cbc9dcc 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/DatabaseTaskStore.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/DatabaseTaskStore.ts @@ -252,12 +252,15 @@ export class DatabaseTaskStore implements TaskStore { }); } - async emitLogEvent({ taskId, body }: TaskStoreEmitOptions): Promise { - const serliazedBody = JSON.stringify(body); + async emitLogEvent({ + taskId, + body, + }: TaskStoreEmitOptions<{ message: string } & JsonObject>): Promise { + const serializedBo = JSON.stringify(body); await this.db('task_events').insert({ task_id: taskId, event_type: 'log', - body: serliazedBody, + body: serializedBo, }); } diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/types.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/types.ts index e17f8b2c3b..ddcd3e7b4e 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/types.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/types.ts @@ -180,9 +180,9 @@ export interface TaskBroker { * * @public */ -export type TaskStoreEmitOptions = { +export type TaskStoreEmitOptions

= { taskId: string; - body: JsonObject; + body: TBody; }; /** From 1bb10229086ac765bfd5806b63a0ba4639784c02 Mon Sep 17 00:00:00 2001 From: blam Date: Tue, 22 Feb 2022 12:45:56 +0100 Subject: [PATCH 334/383] chore: removing the rexports Signed-off-by: blam --- .../src/scaffolder/actions/types.ts | 7 +++++-- .../tasks/HandlebarsWorkflowRunner.test.ts | 3 ++- .../scaffolder/tasks/HandlebarsWorkflowRunner.ts | 9 ++------- .../tasks/NunjucksWorkflowRunner.test.ts | 3 ++- .../scaffolder/tasks/NunjucksWorkflowRunner.ts | 14 ++++++-------- .../scaffolder/tasks/StorageTaskBroker.test.ts | 3 ++- .../src/scaffolder/tasks/StorageTaskBroker.ts | 2 +- .../src/scaffolder/tasks/index.ts | 4 ---- .../src/scaffolder/tasks/types.ts | 16 +--------------- plugins/scaffolder-backend/src/service/router.ts | 2 +- 10 files changed, 22 insertions(+), 41 deletions(-) diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/types.ts b/plugins/scaffolder-backend/src/scaffolder/actions/types.ts index b2227426b8..1aa4f81bdd 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/types.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/types.ts @@ -18,8 +18,11 @@ import { Logger } from 'winston'; import { Writable } from 'stream'; import { JsonValue, JsonObject } from '@backstage/types'; import { Schema } from 'jsonschema'; -import { TaskSecrets, TemplateMetadata } from '../tasks/types'; -import { TemplateInfo } from '@backstage/plugin-scaffolder-common'; +import { TaskSecrets } from '../tasks/types'; +import { + TemplateInfo, + TemplateMetadata, +} from '@backstage/plugin-scaffolder-common'; export type ActionContext = { /** diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/HandlebarsWorkflowRunner.test.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/HandlebarsWorkflowRunner.test.ts index 9f4135b3d1..dcad1fc5d0 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/HandlebarsWorkflowRunner.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/HandlebarsWorkflowRunner.test.ts @@ -21,8 +21,9 @@ import { ScmIntegrations } from '@backstage/integration'; import { ConfigReader } from '@backstage/config'; import { getVoidLogger } from '@backstage/backend-common'; import { HandlebarsWorkflowRunner } from './HandlebarsWorkflowRunner'; -import { TaskContext, TaskSpec } from './types'; +import { TaskContext } from './types'; import { RepoSpec } from '../actions/builtin/publish/util'; +import { TaskSpec } from '@backstage/plugin-scaffolder-common'; describe('LegacyWorkflowRunner', () => { let runner: HandlebarsWorkflowRunner; diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/HandlebarsWorkflowRunner.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/HandlebarsWorkflowRunner.ts index e525e6bd14..c82da51ead 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/HandlebarsWorkflowRunner.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/HandlebarsWorkflowRunner.ts @@ -13,13 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { - TaskContext, - WorkflowRunner, - WorkflowResponse, - TaskSpecV1beta2, - TaskSpec, -} from './types'; +import { TaskContext, WorkflowRunner, WorkflowResponse } from './types'; import * as Handlebars from 'handlebars'; import { TemplateActionRegistry } from '..'; import { ScmIntegrations } from '@backstage/integration'; @@ -33,6 +27,7 @@ import fs from 'fs-extra'; import { validate as validateJsonSchema } from 'jsonschema'; import { JsonObject, JsonValue } from '@backstage/types'; import { InputError } from '@backstage/errors'; +import { TaskSpec, TaskSpecV1beta2 } from '@backstage/plugin-scaffolder-common'; type Options = { workingDirectory: string; diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts index b66c69ee17..1b635b695c 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts @@ -22,7 +22,8 @@ import { NunjucksWorkflowRunner } from './NunjucksWorkflowRunner'; import { TemplateActionRegistry } from '../actions'; import { ScmIntegrations } from '@backstage/integration'; import { ConfigReader } from '@backstage/config'; -import { TaskContext, TaskSpec, TaskSecrets } from './types'; +import { TaskContext, TaskSecrets } from './types'; +import { TaskSpec } from '@backstage/plugin-scaffolder-common'; const realFiles = Object.fromEntries( [ diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.ts index b1177ca49c..fb9da56c22 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.ts @@ -15,14 +15,7 @@ */ import { ScmIntegrations } from '@backstage/integration'; -import { - TaskContext, - TaskSpec, - TaskSpecV1beta3, - TaskStep, - WorkflowResponse, - WorkflowRunner, -} from './types'; +import { TaskContext, WorkflowResponse, WorkflowRunner } from './types'; import * as winston from 'winston'; import fs from 'fs-extra'; import path from 'path'; @@ -39,6 +32,11 @@ import { SecureTemplater, SecureTemplateRenderer, } from '../../lib/templating/SecureTemplater'; +import { + TaskSpec, + TaskSpecV1beta3, + TaskStep, +} from '@backstage/plugin-scaffolder-common'; type NunjucksWorkflowRunnerOptions = { workingDirectory: string; diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.test.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.test.ts index daf444cdd8..639d61d4fd 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.test.ts @@ -16,9 +16,10 @@ import { getVoidLogger, DatabaseManager } from '@backstage/backend-common'; import { ConfigReader } from '@backstage/config'; +import { TaskSpec } from '@backstage/plugin-scaffolder-common'; import { DatabaseTaskStore } from './DatabaseTaskStore'; import { StorageTaskBroker, TaskManager } from './StorageTaskBroker'; -import { TaskSecrets, TaskSpec, SerializedTaskEvent } from './types'; +import { TaskSecrets, SerializedTaskEvent } from './types'; async function createStore(): Promise { const manager = DatabaseManager.fromConfig( diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.ts index 898516ef3b..71653f503b 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.ts @@ -15,12 +15,12 @@ */ import { JsonObject } from '@backstage/types'; import { assertError } from '@backstage/errors'; +import { TaskSpec } from '@backstage/plugin-scaffolder-common'; import { Logger } from 'winston'; import { TaskCompletionState, TaskContext, TaskSecrets, - TaskSpec, TaskStore, TaskBroker, SerializedTaskEvent, diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/index.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/index.ts index aa1640dae2..a2bf5f0e1c 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/index.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/index.ts @@ -20,15 +20,12 @@ export { TaskWorker } from './TaskWorker'; export type { CreateWorkerOptions } from './TaskWorker'; export type { TaskSecrets, - TaskSpec, TaskCompletionState, CompletedTaskState, TaskStoreEmitOptions, TaskStoreListEventsOptions, SerializedTask, SerializedTaskEvent, - TaskSpecV1beta2, - TaskSpecV1beta3, Status, TaskStatus, TaskEventType, @@ -40,5 +37,4 @@ export type { TaskBrokerDispatchOptions, TaskStoreCreateTaskOptions, TaskStoreCreateTaskResult, - TemplateMetadata, } from './types'; diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/types.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/types.ts index ddcd3e7b4e..a28ccce239 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/types.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/types.ts @@ -15,21 +15,7 @@ */ import { JsonValue, JsonObject } from '@backstage/types'; -import { - TaskSpec, - TaskStep, - TemplateMetadata, - TaskSpecV1beta2, - TaskSpecV1beta3, -} from '@backstage/plugin-scaffolder-common'; - -export type { - TaskSpec, - TaskStep, - TemplateMetadata, - TaskSpecV1beta2, - TaskSpecV1beta3, -}; +import { TaskSpec } from '@backstage/plugin-scaffolder-common'; /** * The status of each step of the Task diff --git a/plugins/scaffolder-backend/src/service/router.ts b/plugins/scaffolder-backend/src/service/router.ts index 371fc47dc2..50a1e4bba0 100644 --- a/plugins/scaffolder-backend/src/service/router.ts +++ b/plugins/scaffolder-backend/src/service/router.ts @@ -29,6 +29,7 @@ import { TemplateEntityV1beta2, TemplateEntityV1beta3, TaskSpecV1beta3, + TaskSpec, TaskSpecV1beta2, } from '@backstage/plugin-scaffolder-common'; import express from 'express'; @@ -40,7 +41,6 @@ import { createBuiltinActions, DatabaseTaskStore, TaskBroker, - TaskSpec, TaskWorker, TemplateAction, TemplateActionRegistry, From 9d9b2bab47b3dbb41f2abcf2882cf8452a73b2bd Mon Sep 17 00:00:00 2001 From: blam Date: Tue, 22 Feb 2022 13:08:19 +0100 Subject: [PATCH 335/383] chore: added changesets Signed-off-by: blam --- .changeset/clean-suits-hear.md | 5 +++++ .changeset/six-cobras-allow.md | 5 +++++ 2 files changed, 10 insertions(+) create mode 100644 .changeset/clean-suits-hear.md create mode 100644 .changeset/six-cobras-allow.md diff --git a/.changeset/clean-suits-hear.md b/.changeset/clean-suits-hear.md new file mode 100644 index 0000000000..a02327fe49 --- /dev/null +++ b/.changeset/clean-suits-hear.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-backend': patch +--- + +patch diff --git a/.changeset/six-cobras-allow.md b/.changeset/six-cobras-allow.md new file mode 100644 index 0000000000..b0727512d6 --- /dev/null +++ b/.changeset/six-cobras-allow.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-backend': minor +--- + +breaking From dbe239808d18aa1adb877ff7d8dda3c34e403ab6 Mon Sep 17 00:00:00 2001 From: blam Date: Tue, 22 Feb 2022 13:10:39 +0100 Subject: [PATCH 336/383] chore: encodeURIComponent Signed-off-by: blam diff --git c/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/githubPullRequest.ts i/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/githubPullRequest.ts index ca70084ef5..9efc11210a 100644 --- c/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/githubPullRequest.ts +++ i/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/githubPullRequest.ts @@ -65,10 +65,14 @@ export const defaultClientFactory = async ({ host = 'github.com', token: providedToken, }: ClientFactoryInput): Promise => { + const [encodedHost, encodedOwner, encodedRepo] = [host, owner, repo].map( + encodeURIComponent, + ); + const octokitOptions = await getOctokitOptions({ integrations, credentialsProvider: githubCredentialsProvider, - repoUrl: `https://${host}/${owner}/${repo}`, + repoUrl: `https://${encodedHost}/${encodedOwner}/${encodedRepo}`, token: providedToken, }); --- .../scaffolder/actions/builtin/publish/githubPullRequest.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/githubPullRequest.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/githubPullRequest.ts index ca70084ef5..9efc11210a 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/githubPullRequest.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/githubPullRequest.ts @@ -65,10 +65,14 @@ export const defaultClientFactory = async ({ host = 'github.com', token: providedToken, }: ClientFactoryInput): Promise => { + const [encodedHost, encodedOwner, encodedRepo] = [host, owner, repo].map( + encodeURIComponent, + ); + const octokitOptions = await getOctokitOptions({ integrations, credentialsProvider: githubCredentialsProvider, - repoUrl: `https://${host}/${owner}/${repo}`, + repoUrl: `https://${encodedHost}/${encodedOwner}/${encodedRepo}`, token: providedToken, }); From 67771d2b21a0c15dae5fcc4bcac310b686b0dc40 Mon Sep 17 00:00:00 2001 From: blam Date: Tue, 22 Feb 2022 14:31:20 +0100 Subject: [PATCH 337/383] chore: remove the observe method in favour of an observable Signed-off-by: blam --- plugins/scaffolder-backend/package.json | 4 +- .../tasks/StorageTaskBroker.test.ts | 10 +- .../src/scaffolder/tasks/StorageTaskBroker.ts | 57 +++--- .../src/scaffolder/tasks/types.ts | 16 +- .../src/service/router.test.ts | 191 +++++++++--------- .../scaffolder-backend/src/service/router.ts | 52 ++--- 6 files changed, 155 insertions(+), 175 deletions(-) diff --git a/plugins/scaffolder-backend/package.json b/plugins/scaffolder-backend/package.json index 8c61ee65c4..5d23ea0aff 100644 --- a/plugins/scaffolder-backend/package.json +++ b/plugins/scaffolder-backend/package.json @@ -72,7 +72,8 @@ "uuid": "^8.2.0", "winston": "^3.2.1", "yaml": "^1.10.0", - "vm2": "^3.9.6" + "vm2": "^3.9.6", + "zen-observable": "^0.8.15" }, "devDependencies": { "@backstage/cli": "^0.14.0", @@ -83,6 +84,7 @@ "@types/mock-fs": "^4.13.0", "@types/nunjucks": "^3.1.4", "@types/supertest": "^2.0.8", + "@types/zen-observable": "^0.8.0", "esbuild": "^0.14.1", "jest-when": "^3.1.0", "mock-fs": "^5.1.0", diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.test.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.test.ts index 639d61d4fd..52fd175dc8 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.test.ts @@ -125,7 +125,7 @@ describe('StorageTaskBroker', () => { const logPromise = new Promise(resolve => { const observedEvents = new Array(); - broker2.observe({ taskId, after: undefined }, (_err, { events }) => { + broker2.event$({ taskId, after: undefined }).subscribe(({ events }) => { observedEvents.push(...events); if (events.some(e => e.type === 'completion')) { resolve(observedEvents); @@ -147,9 +147,11 @@ describe('StorageTaskBroker', () => { ]); const afterLogs = await new Promise(resolve => { - broker2.observe({ taskId, after: logs[1].id }, (_err, { events }) => - resolve(events.map(e => e.body.message as string)), - ); + broker2 + .event$({ taskId, after: logs[1].id }) + .subscribe(({ events }) => + resolve(events.map(e => e.body.message as string)), + ); }); expect(afterLogs).toEqual([ 'log 3', diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.ts index 71653f503b..0a1fc31bc8 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.ts @@ -13,7 +13,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { JsonObject } from '@backstage/types'; +import { JsonObject, Observable } from '@backstage/types'; +import ObservableImpl from 'zen-observable'; import { assertError } from '@backstage/errors'; import { TaskSpec } from '@backstage/plugin-scaffolder-common'; import { Logger } from 'winston'; @@ -176,43 +177,33 @@ export class StorageTaskBroker implements TaskBroker { return this.storage.getTask(taskId); } - observe( - options: { - taskId: string; - after: number | undefined; - }, - callback: ( - error: Error | undefined, - result: { events: SerializedTaskEvent[] }, - ) => void, - ): { unsubscribe: () => void } { - const { taskId } = options; + event$(options: { + taskId: string; + after?: number; + }): Observable<{ events: SerializedTaskEvent[] }> { + return new ObservableImpl(observer => { + const { taskId } = options; - let cancelled = false; - const unsubscribe = () => { - cancelled = true; - }; - - (async () => { let after = options.after; - while (!cancelled) { - const result = await this.storage.listEvents({ taskId, after: after }); - const { events } = result; - if (events.length) { - after = events[events.length - 1].id; - try { - callback(undefined, result); - } catch (error) { - assertError(error); - callback(error, { events: [] }); + let cancelled = false; + + (async () => { + while (!cancelled) { + const result = await this.storage.listEvents({ taskId, after }); + const { events } = result; + if (events.length) { + after = events[events.length - 1].id; + observer.next(result); } + + await new Promise(resolve => setTimeout(resolve, 1000)); } + })(); - await new Promise(resolve => setTimeout(resolve, 1000)); - } - })(); - - return { unsubscribe }; + return () => { + cancelled = true; + }; + }); } async vacuumTasks(options: { timeoutS: number }): Promise { diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/types.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/types.ts index a28ccce239..57b92e0222 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/types.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/types.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import { JsonValue, JsonObject } from '@backstage/types'; +import { JsonValue, JsonObject, Observable } from '@backstage/types'; import { TaskSpec } from '@backstage/plugin-scaffolder-common'; /** @@ -148,16 +148,10 @@ export interface TaskBroker { options: TaskBrokerDispatchOptions, ): Promise; vacuumTasks(options: { timeoutS: number }): Promise; - observe( - options: { - taskId: string; - after: number | undefined; - }, - callback: ( - error: Error | undefined, - result: { events: SerializedTaskEvent[] }, - ) => void, - ): { unsubscribe: () => void }; + event$(options: { + taskId: string; + after: number | undefined; + }): Observable<{ events: SerializedTaskEvent[] }>; get(taskId: string): Promise; } diff --git a/plugins/scaffolder-backend/src/service/router.test.ts b/plugins/scaffolder-backend/src/service/router.test.ts index b20dfa5d24..f8336179eb 100644 --- a/plugins/scaffolder-backend/src/service/router.test.ts +++ b/plugins/scaffolder-backend/src/service/router.test.ts @@ -38,6 +38,7 @@ import { import { CatalogApi } from '@backstage/catalog-client'; import { TemplateEntityV1beta2 } from '@backstage/plugin-scaffolder-common'; import { ConfigReader } from '@backstage/config'; +import ObservableImpl from 'zen-observable'; import express from 'express'; import request from 'supertest'; /** @@ -113,7 +114,7 @@ describe('createRouter', () => { jest.spyOn(taskBroker, 'dispatch'); jest.spyOn(taskBroker, 'get'); - jest.spyOn(taskBroker, 'observe'); + jest.spyOn(taskBroker, 'event$'); const router = await createRouter({ logger: getVoidLogger(), @@ -194,37 +195,38 @@ describe('createRouter', () => { describe('GET /v2/tasks/:taskId/eventstream', () => { it('should return log messages', async () => { - const unsubscribe = jest.fn(); + let subscriber: ZenObservable.SubscriptionObserver; ( - taskBroker.observe as jest.Mocked['observe'] - ).mockImplementation(({ taskId }, callback) => { - // emit after this function returned - setImmediate(() => { - callback(undefined, { - events: [ - { - id: 0, - taskId, - type: 'log', - createdAt: '', - body: { message: 'My log message' }, - }, - ], - }); - callback(undefined, { - events: [ - { - id: 1, - taskId, - type: 'completion', - createdAt: '', - body: { message: 'Finished!' }, - }, - ], + taskBroker.event$ as jest.Mocked['event$'] + ).mockImplementation(({ taskId }) => { + return new ObservableImpl(observer => { + subscriber = observer; + setImmediate(() => { + observer.next({ + events: [ + { + id: 0, + taskId, + type: 'log', + createdAt: '', + body: { message: 'My log message' }, + }, + ], + }); + observer.next({ + events: [ + { + id: 1, + taskId, + type: 'completion', + createdAt: '', + body: { message: 'Finished!' }, + }, + ], + }); }); }); - - return { unsubscribe }; + // emit after this function returned }); let statusCode: any = undefined; @@ -264,34 +266,32 @@ data: {"id":1,"taskId":"a-random-id","type":"completion","createdAt":"","body":{ `); - expect(taskBroker.observe).toBeCalledTimes(1); - expect(taskBroker.observe).toBeCalledWith( - { taskId: 'a-random-id' }, - expect.any(Function), - ); - - expect(unsubscribe).toBeCalledTimes(1); + expect(taskBroker.event$).toBeCalledTimes(1); + expect(taskBroker.event$).toBeCalledWith({ taskId: 'a-random-id' }); + expect(subscriber!.closed).toBe(true); }); it('should return log messages with after query', async () => { - const unsubscribe = jest.fn(); + let subscriber: ZenObservable.SubscriptionObserver; ( - taskBroker.observe as jest.Mocked['observe'] - ).mockImplementation(({ taskId }, callback) => { - setImmediate(() => { - callback(undefined, { - events: [ - { - id: 1, - taskId, - type: 'completion', - createdAt: '', - body: { message: 'Finished!' }, - }, - ], + taskBroker.event$ as jest.Mocked['event$'] + ).mockImplementation(({ taskId }) => { + return new ObservableImpl(observer => { + subscriber = observer; + setImmediate(() => { + observer.next({ + events: [ + { + id: 1, + taskId, + type: 'completion', + createdAt: '', + body: { message: 'Finished!' }, + }, + ], + }); }); }); - return { unsubscribe }; }); let statusCode: any = undefined; @@ -318,41 +318,43 @@ data: {"id":1,"taskId":"a-random-id","type":"completion","createdAt":"","body":{ expect(statusCode).toBe(200); expect(headers['content-type']).toBe('text/event-stream'); - expect(taskBroker.observe).toBeCalledTimes(1); - expect(taskBroker.observe).toBeCalledWith( - { taskId: 'a-random-id', after: 10 }, - expect.any(Function), - ); + expect(taskBroker.event$).toBeCalledTimes(1); + expect(taskBroker.event$).toBeCalledWith({ + taskId: 'a-random-id', + after: 10, + }); - expect(unsubscribe).toBeCalledTimes(1); + expect(subscriber!.closed).toBe(true); }); }); describe('GET /v2/tasks/:taskId/events', () => { it('should return log messages', async () => { - const unsubscribe = jest.fn(); + let subscriber: ZenObservable.SubscriptionObserver; ( - taskBroker.observe as jest.Mocked['observe'] - ).mockImplementation(({ taskId }, callback) => { - callback(undefined, { - events: [ - { - id: 0, - taskId, - type: 'log', - createdAt: '', - body: { message: 'My log message' }, - }, - { - id: 1, - taskId, - type: 'completion', - createdAt: '', - body: { message: 'Finished!' }, - }, - ], + taskBroker.event$ as jest.Mocked['event$'] + ).mockImplementation(({ taskId }) => { + return new ObservableImpl(observer => { + subscriber = observer; + observer.next({ + events: [ + { + id: 0, + taskId, + type: 'log', + createdAt: '', + body: { message: 'My log message' }, + }, + { + id: 1, + taskId, + type: 'completion', + createdAt: '', + body: { message: 'Finished!' }, + }, + ], + }); }); - return { unsubscribe }; }); const response = await request(app).get('/v2/tasks/a-random-id/events'); @@ -375,21 +377,20 @@ data: {"id":1,"taskId":"a-random-id","type":"completion","createdAt":"","body":{ }, ]); - expect(taskBroker.observe).toBeCalledTimes(1); - expect(taskBroker.observe).toBeCalledWith( - { taskId: 'a-random-id' }, - expect.any(Function), - ); - expect(unsubscribe).toBeCalledTimes(1); + expect(taskBroker.event$).toBeCalledTimes(1); + expect(taskBroker.event$).toBeCalledWith({ taskId: 'a-random-id' }); + expect(subscriber!.closed).toBe(true); }); it('should return log messages with after query', async () => { - const unsubscribe = jest.fn(); + let subscriber: ZenObservable.SubscriptionObserver; ( - taskBroker.observe as jest.Mocked['observe'] - ).mockImplementation((_, callback) => { - callback(undefined, { events: [] }); - return { unsubscribe }; + taskBroker.event$ as jest.Mocked['event$'] + ).mockImplementation(() => { + return new ObservableImpl(observer => { + subscriber = observer; + observer.next({ events: [] }); + }); }); const response = await request(app) @@ -399,12 +400,12 @@ data: {"id":1,"taskId":"a-random-id","type":"completion","createdAt":"","body":{ expect(response.status).toEqual(200); expect(response.body).toEqual([]); - expect(taskBroker.observe).toBeCalledTimes(1); - expect(taskBroker.observe).toBeCalledWith( - { taskId: 'a-random-id', after: 10 }, - expect.any(Function), - ); - expect(unsubscribe).toBeCalledTimes(1); + expect(taskBroker.event$).toBeCalledTimes(1); + expect(taskBroker.event$).toBeCalledWith({ + taskId: 'a-random-id', + after: 10, + }); + expect(subscriber!.closed).toBe(true); }); }); }); diff --git a/plugins/scaffolder-backend/src/service/router.ts b/plugins/scaffolder-backend/src/service/router.ts index 50a1e4bba0..b36670a340 100644 --- a/plugins/scaffolder-backend/src/service/router.ts +++ b/plugins/scaffolder-backend/src/service/router.ts @@ -301,15 +301,13 @@ export async function createRouter( }); // After client opens connection send all events as string - const { unsubscribe } = taskBroker.observe( - { taskId, after }, - (error, { events }) => { - if (error) { - logger.error( - `Received error from event stream when observing taskId '${taskId}', ${error}`, - ); - } - + const subscription = taskBroker.event$({ taskId, after }).subscribe({ + error: error => { + logger.error( + `Received error from event stream when observing taskId '${taskId}', ${error}`, + ); + }, + next: ({ events }) => { let shouldUnsubscribe = false; for (const event of events) { res.write( @@ -317,19 +315,18 @@ export async function createRouter( ); if (event.type === 'completion') { shouldUnsubscribe = true; - // Closing the event stream here would cause the frontend - // to automatically reconnect because it lost connection. } } // res.flush() is only available with the compression middleware res.flush?.(); - if (shouldUnsubscribe) unsubscribe(); + if (shouldUnsubscribe) subscription.unsubscribe(); }, - ); + }); + // When client closes connection we update the clients list // avoiding the disconnected one req.on('close', () => { - unsubscribe(); + subscription.unsubscribe(); logger.debug(`Event stream observing taskId '${taskId}' closed`); }); }) @@ -337,36 +334,29 @@ export async function createRouter( const { taskId } = req.params; const after = Number(req.query.after) || undefined; - let unsubscribe = () => {}; - // cancel the request after 30 seconds. this aligns with the recommendations of RFC 6202. const timeout = setTimeout(() => { - unsubscribe(); res.json([]); }, 30_000); // Get all known events after an id (always includes the completion event) and return the first callback - ({ unsubscribe } = taskBroker.observe( - { taskId, after }, - (error, { events }) => { - // stop the timeout + const subscription = taskBroker.event$({ taskId, after }).subscribe({ + error: error => { + logger.error( + `Received error from event stream when observing taskId '${taskId}', ${error}`, + ); + }, + next: ({ events }) => { clearTimeout(timeout); - unsubscribe(); - - if (error) { - logger.error( - `Received error from log when observing taskId '${taskId}', ${error}`, - ); - } - + subscription.unsubscribe(); res.json(events); }, - )); + }); // When client closes connection we update the clients list // avoiding the disconnected one req.on('close', () => { - unsubscribe(); + subscription.unsubscribe(); clearTimeout(timeout); }); }); From b5a65f99467d99ede1365223e1b8cc729e2aa56a Mon Sep 17 00:00:00 2001 From: blam Date: Tue, 22 Feb 2022 14:33:42 +0100 Subject: [PATCH 338/383] chore: rebuild api-reports Signed-off-by: blam --- plugins/scaffolder-backend/api-report.md | 43 +++++++------------ .../src/scaffolder/tasks/StorageTaskBroker.ts | 1 - 2 files changed, 15 insertions(+), 29 deletions(-) diff --git a/plugins/scaffolder-backend/api-report.md b/plugins/scaffolder-backend/api-report.md index bd507d892a..b4a094285a 100644 --- a/plugins/scaffolder-backend/api-report.md +++ b/plugins/scaffolder-backend/api-report.md @@ -20,6 +20,7 @@ import { JsonValue } from '@backstage/types'; import { Knex } from 'knex'; import { LocationSpec } from '@backstage/catalog-model'; import { Logger as Logger_2 } from 'winston'; +import { Observable } from '@backstage/types'; import { Octokit } from 'octokit'; import { PluginDatabaseManager } from '@backstage/backend-common'; import { Schema } from 'jsonschema'; @@ -27,8 +28,6 @@ import { ScmIntegrationRegistry } from '@backstage/integration'; import { ScmIntegrations } from '@backstage/integration'; import { SpawnOptionsWithoutStdio } from 'child_process'; import { TaskSpec } from '@backstage/plugin-scaffolder-common'; -import { TaskSpecV1beta2 } from '@backstage/plugin-scaffolder-common'; -import { TaskSpecV1beta3 } from '@backstage/plugin-scaffolder-common'; import { TemplateInfo } from '@backstage/plugin-scaffolder-common'; import { TemplateMetadata } from '@backstage/plugin-scaffolder-common'; import { UrlReader } from '@backstage/backend-common'; @@ -355,7 +354,14 @@ export class DatabaseTaskStore implements TaskStore { options: TaskStoreCreateTaskOptions, ): Promise; // (undocumented) - emitLogEvent({ taskId, body }: TaskStoreEmitOptions): Promise; + emitLogEvent({ + taskId, + body, + }: TaskStoreEmitOptions< + { + message: string; + } & JsonObject + >): Promise; // (undocumented) getTask(taskId: string): Promise; // (undocumented) @@ -487,22 +493,11 @@ export interface TaskBroker { options: TaskBrokerDispatchOptions, ): Promise; // (undocumented) - get(taskId: string): Promise; + event$(options: { taskId: string; after: number | undefined }): Observable<{ + events: SerializedTaskEvent[]; + }>; // (undocumented) - observe( - options: { - taskId: string; - after: number | undefined; - }, - callback: ( - error: Error | undefined, - result: { - events: SerializedTaskEvent[]; - }, - ) => void, - ): { - unsubscribe: () => void; - }; + get(taskId: string): Promise; // (undocumented) vacuumTasks(options: { timeoutS: number }): Promise; } @@ -567,12 +562,6 @@ export type TaskSecrets = Record & { backstageToken?: string; }; -export { TaskSpec }; - -export { TaskSpecV1beta2 }; - -export { TaskSpecV1beta3 }; - // @public @deprecated export type TaskState = CurrentClaimedTask; @@ -628,9 +617,9 @@ export type TaskStoreCreateTaskResult = { }; // @public -export type TaskStoreEmitOptions = { +export type TaskStoreEmitOptions = { taskId: string; - body: JsonObject; + body: TBody; }; // @public @@ -678,6 +667,4 @@ export class TemplateActionRegistry { // // @public (undocumented) export type TemplateFilter = (...args: JsonValue[]) => JsonValue | undefined; - -export { TemplateMetadata }; ``` diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.ts index 0a1fc31bc8..0fd593f2f3 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.ts @@ -15,7 +15,6 @@ */ import { JsonObject, Observable } from '@backstage/types'; import ObservableImpl from 'zen-observable'; -import { assertError } from '@backstage/errors'; import { TaskSpec } from '@backstage/plugin-scaffolder-common'; import { Logger } from 'winston'; import { From 9cd76a98e12f0949595ebfab0b32c691d19658db Mon Sep 17 00:00:00 2001 From: blam Date: Tue, 22 Feb 2022 14:37:24 +0100 Subject: [PATCH 339/383] chore: fix up the changeset Signed-off-by: blam --- .changeset/clean-suits-hear.md | 2 +- .changeset/six-cobras-allow.md | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.changeset/clean-suits-hear.md b/.changeset/clean-suits-hear.md index a02327fe49..9c167ff15e 100644 --- a/.changeset/clean-suits-hear.md +++ b/.changeset/clean-suits-hear.md @@ -2,4 +2,4 @@ '@backstage/plugin-scaffolder-backend': patch --- -patch +Added a type parameter to `TaskStoreEmitOptions` to type the `body` property diff --git a/.changeset/six-cobras-allow.md b/.changeset/six-cobras-allow.md index b0727512d6..db34ecb1f9 100644 --- a/.changeset/six-cobras-allow.md +++ b/.changeset/six-cobras-allow.md @@ -2,4 +2,5 @@ '@backstage/plugin-scaffolder-backend': minor --- -breaking +- **BREAKING** - Removed the re-export of types `TaskSpec` `TaskSpecV1Beta2` and `TaskSpecV1Beta3` these should now be import from `@backstage/plugin-scaffolder-common` directly. +- **BREAKING** - Removed the `observe` method from the `TaskBroker` interface, this has now been replaced with an `Observable` implementation under `event$`. From c4276915c07776881a4a11bee6f9fba53a2919ca Mon Sep 17 00:00:00 2001 From: Johan Haals Date: Tue, 22 Feb 2022 14:47:14 +0100 Subject: [PATCH 340/383] catalog-react: Delete loadIdentityOwnerRefs, deprecate loadCatalogOwnerRefs Signed-off-by: Johan Haals --- .changeset/moody-elephants-float.md | 7 ++++++ plugins/catalog-react/api-report.md | 8 +----- plugins/catalog-react/src/hooks/index.ts | 6 +---- .../src/hooks/useEntityOwnership.test.tsx | 18 +------------ .../src/hooks/useEntityOwnership.ts | 25 ++----------------- .../src/hooks/useOwnedEntities.ts | 8 +++--- 6 files changed, 15 insertions(+), 57 deletions(-) create mode 100644 .changeset/moody-elephants-float.md diff --git a/.changeset/moody-elephants-float.md b/.changeset/moody-elephants-float.md new file mode 100644 index 0000000000..c637a870ec --- /dev/null +++ b/.changeset/moody-elephants-float.md @@ -0,0 +1,7 @@ +--- +'@backstage/plugin-catalog-react': minor +--- + +Deleted the deprecated `loadIdentityOwnerRefs` function which is replaced by `ownershipEntityRefs` from `identityApi.getBackstageIdentity()`. + +Deprecated the `loadCatalogOwnerRefs` hook as membership references should be added as `ent` inside `claims` sections of the `SignInResolver` when issuing tokens. See https://backstage.io/docs/auth/identity-resolver for more details on how to prepare your `SignInResolver` if not done already. Usage of the `loadCatalogOwnerRefs` hook should be replaced by `ownershipEntityRefs` from `identityApi.getBackstageIdentity()` instead. diff --git a/plugins/catalog-react/api-report.md b/plugins/catalog-react/api-report.md index 0a7bbbfc9e..ef5802aa52 100644 --- a/plugins/catalog-react/api-report.md +++ b/plugins/catalog-react/api-report.md @@ -16,7 +16,6 @@ import { Entity } from '@backstage/catalog-model'; import { EntityName } from '@backstage/catalog-model'; import { GetEntitiesResponse } from '@backstage/catalog-client'; import { IconButton } from '@material-ui/core'; -import { IdentityApi } from '@backstage/core-plugin-api'; import { LinkProps } from '@backstage/core-components'; import { Observable } from '@backstage/types'; import { Overrides } from '@material-ui/core/styles/overrides'; @@ -479,17 +478,12 @@ export function InspectEntityDialog(props: { // @public export function isOwnerOf(owner: Entity, owned: Entity): boolean; -// @public +// @public @deprecated export function loadCatalogOwnerRefs( catalogApi: CatalogApi, identityOwnerRefs: string[], ): Promise; -// @public @deprecated -export function loadIdentityOwnerRefs( - identityApi: IdentityApi, -): Promise; - // @public (undocumented) export const MockEntityListContextProvider: ({ children, diff --git a/plugins/catalog-react/src/hooks/index.ts b/plugins/catalog-react/src/hooks/index.ts index 170ea37394..a1d3cfac62 100644 --- a/plugins/catalog-react/src/hooks/index.ts +++ b/plugins/catalog-react/src/hooks/index.ts @@ -43,10 +43,6 @@ export { useOwnUser } from './useOwnUser'; export { useRelatedEntities } from './useRelatedEntities'; export { useStarredEntities } from './useStarredEntities'; export { useStarredEntity } from './useStarredEntity'; -export { - loadCatalogOwnerRefs, - useEntityOwnership, - loadIdentityOwnerRefs, -} from './useEntityOwnership'; +export { loadCatalogOwnerRefs, useEntityOwnership } from './useEntityOwnership'; export { useOwnedEntities } from './useOwnedEntities'; export { useEntityPermission } from './useEntityPermission'; diff --git a/plugins/catalog-react/src/hooks/useEntityOwnership.test.tsx b/plugins/catalog-react/src/hooks/useEntityOwnership.test.tsx index 7f838163a2..55d0d9299b 100644 --- a/plugins/catalog-react/src/hooks/useEntityOwnership.test.tsx +++ b/plugins/catalog-react/src/hooks/useEntityOwnership.test.tsx @@ -26,11 +26,7 @@ import { TestApiProvider } from '@backstage/test-utils'; import { renderHook } from '@testing-library/react-hooks'; import React from 'react'; import { catalogApiRef } from '../api'; -import { - loadCatalogOwnerRefs, - loadIdentityOwnerRefs, - useEntityOwnership, -} from './useEntityOwnership'; +import { loadCatalogOwnerRefs, useEntityOwnership } from './useEntityOwnership'; describe('useEntityOwnership', () => { type MockIdentityApi = jest.Mocked>; @@ -101,18 +97,6 @@ describe('useEntityOwnership', () => { jest.resetAllMocks(); }); - describe('loadIdentityOwnerRefs', () => { - it('passes through the ownershipEntityRefs', async () => { - const refs = new Array(); - mockIdentityApi.getBackstageIdentity.mockResolvedValueOnce({ - type: 'user', - userEntityRef: 'user:default/guest', - ownershipEntityRefs: refs, - }); - await expect(loadIdentityOwnerRefs(identityApi)).resolves.toBe(refs); - }); - }); - describe('loadCatalogOwnerRefs', () => { it('loads the first user from the catalog', async () => { mockCatalogApi.getEntityByName.mockResolvedValueOnce(user2Entity); diff --git a/plugins/catalog-react/src/hooks/useEntityOwnership.ts b/plugins/catalog-react/src/hooks/useEntityOwnership.ts index 1138dada1f..77f6c4bf24 100644 --- a/plugins/catalog-react/src/hooks/useEntityOwnership.ts +++ b/plugins/catalog-react/src/hooks/useEntityOwnership.ts @@ -23,34 +23,12 @@ import { RELATION_OWNED_BY, stringifyEntityRef, } from '@backstage/catalog-model'; -import { - IdentityApi, - identityApiRef, - useApi, -} from '@backstage/core-plugin-api'; +import { identityApiRef, useApi } from '@backstage/core-plugin-api'; import { useMemo } from 'react'; import useAsync from 'react-use/lib/useAsync'; import { catalogApiRef } from '../api'; import { getEntityRelations } from '../utils/getEntityRelations'; -/** - * Takes the relevant parts of the Backstage identity, and translates them into - * a list of entity refs on string form that represent the user's ownership - * connections. - * - * @public - * @deprecated Use `ownershipEntityRefs` from `identityApi.getBackstageIdentity()` instead. - * - * @param identityApi - The IdentityApi implementation - * @returns IdentityOwner refs as a string array - */ -export async function loadIdentityOwnerRefs( - identityApi: IdentityApi, -): Promise { - const identity = await identityApi.getBackstageIdentity(); - return identity.ownershipEntityRefs; -} - /** * Takes the relevant parts of the User entity corresponding to the Backstage * identity, and translates them into a list of entity refs on string form that @@ -61,6 +39,7 @@ export async function loadIdentityOwnerRefs( * @param catalogApi - The Catalog API implementation * @param identityOwnerRefs - List of identity owner refs as strings * @returns OwnerRefs as a string array + * @deprecated Use `ownershipEntityRefs` from `identityApi.getBackstageIdentity()` instead. */ export async function loadCatalogOwnerRefs( catalogApi: CatalogApi, diff --git a/plugins/catalog-react/src/hooks/useOwnedEntities.ts b/plugins/catalog-react/src/hooks/useOwnedEntities.ts index dad73740c1..dbbd499d13 100644 --- a/plugins/catalog-react/src/hooks/useOwnedEntities.ts +++ b/plugins/catalog-react/src/hooks/useOwnedEntities.ts @@ -14,10 +14,7 @@ * limitations under the License. */ import { catalogApiRef } from './../api'; -import { - loadCatalogOwnerRefs, - loadIdentityOwnerRefs, -} from './useEntityOwnership'; +import { loadCatalogOwnerRefs } from './useEntityOwnership'; import { identityApiRef, useApi } from '@backstage/core-plugin-api'; import { RELATION_OWNED_BY } from '@backstage/catalog-model'; import { GetEntitiesResponse } from '@backstage/catalog-client'; @@ -41,7 +38,8 @@ export function useOwnedEntities(allowedKinds?: string[]): { const catalogApi = useApi(catalogApiRef); const { loading, value: refs } = useAsync(async () => { - const identityRefs = await loadIdentityOwnerRefs(identityApi); + const identity = await identityApi.getBackstageIdentity(); + const identityRefs = identity.ownershipEntityRefs; const catalogRefs = await loadCatalogOwnerRefs(catalogApi, identityRefs); const catalogs = await catalogApi.getEntities( allowedKinds From 354caaa67f154df3b9707007e80fabe26740484d Mon Sep 17 00:00:00 2001 From: Himanshu Mishra Date: Tue, 22 Feb 2022 13:42:42 +0100 Subject: [PATCH 341/383] adopters.md - add a line about the list and why to add Signed-off-by: Himanshu Mishra --- ADOPTERS.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/ADOPTERS.md b/ADOPTERS.md index 772651d54c..86d747c9df 100644 --- a/ADOPTERS.md +++ b/ADOPTERS.md @@ -1,3 +1,7 @@ +# Adopters + +_If you're using Backstage in your organization, please try to add your company name to this list. This really helps the project to gain momentum and credibility. It's a small contribution back to the project with a big impact._ + | Organization | Contact | Description of Use | | --------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | [Spotify](https://www.spotify.com) | [@leemills83](https://github.com/leemills83) | Main interface towards all of Spotify's infrastructure and technical documentation. | @@ -74,7 +78,7 @@ | [GoTo](https://www.goto.com) | [Lorenzo Orsatti](https://github.com/lorsatti) | Improve onboarding experience of new developers. Discover faster and painlessly developer documentation, API definitions and team information. Provide useful dev metrics in a central place. Provide easy-to-use templates for new services. | | [Telstra](https://www.telstra.com.au) | [@kiranpatel11](https://github.com/kiranpatel11), [JasonC](https://github.com/JasonC17) | Primary usage: software catalog and templates
Emerging usage : TechDocs, Explore Ecosystem, TechRadar, etc | | [Mosaico](https://www.mosaico.com.br/) | [Wédney Yuri](https://github.com/wedneyyuri),[@tino.milton](https://github.com/miltonjacomini) | A centralized service catalog of our documentation for our service engineers. | -| [Mox Bank](https://www.mox.com/) | [Nick Laqua](https://github.com/nick-laqua-dragon) | "Single pane of glass" developer portal for providing a best-in-class developer experience to our product teams and making Mox the best tech environment in Hongkong 🥰🚀 | +| [Mox Bank](https://www.mox.com/) | [Nick Laqua](https://github.com/nick-laqua-dragon) | "Single pane of glass" developer portal for providing a best-in-class developer experience to our product teams and making Mox the best tech environment in Hongkong 🥰🚀 | | [Keyloop](https://www.keyloop.com/) | [Andre Wanlin](https://github.com/awanlin) | Future-motive Developer Portal to help our teams create technology to make everything about buying and owning a car better. 🚗 | | [Simply Business](https://sbtech.simplybusiness.co.uk/) | [@addersuk](https://github.com/addersuk), [@LightningStairs](https://github.com/LightningStairs), [@punitcse](https://github.com/punitcse), [@moltenice](https://github.com/moltenice) | Central developer portal to access everything a developer needs such as docs, internal service catalog, and the ability to quickly create a new service from a template. Internally developed Backstage plugins allow us to customise the experience to how we work. | | [Overwolf](https://www.overwolf.com) | [@tomwolfgang](https://github.com/tomwolfgang) | Dev portal - software catalog, tech-docs, scaffolding | @@ -93,4 +97,4 @@ | [Invitae](https://www.invitae.com/en) | [@ryan-hanchett](https://github.com/ryan-hanchett), [@gmandler42](https://github.com/gmandler42) | Centralized Developer Experience portal, putting all of our tooling behind a single pane of glass and creating a living service catalog. | | [Fortum](https://www.fortum.com/) | [@brunoamaroalmeida](https://github.com/brunoamaroalmeida), [@dhaval-vithalani](https://github.com/dhaval-vithalani), [@sunilkumarmohanty](https://github.com/sunilkumarmohanty) | A central portal containing information about our applications, services, processes and other software assets to be used by Fortum software engineering community. | | [Procore](https://www.procore.com/jobs/engineering) | [@shayon](https://github.com/Shayon), [@jamesdabbs-procore](https://github.com/jamesdabbs-procore) | Developer portal - centralized software catalog and templates to enable self serve and reduce cognitive load. | -| [Bradesco](https://banco.bradesco/html/classic/sobre/index.shtm) | [@danilosoarescardoso](https://github.com/danilosoarescardoso) | Centralized developer portal with software catalog, software templates, techdocs and some plugins from community and by our own. | \ No newline at end of file +| [Bradesco](https://banco.bradesco/html/classic/sobre/index.shtm) | [@danilosoarescardoso](https://github.com/danilosoarescardoso) | Centralized developer portal with software catalog, software templates, techdocs and some plugins from community and by our own. | From c1069d2c406b6f119617e30d9cd7eee0ee773ae7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Tue, 22 Feb 2022 12:13:42 +0100 Subject: [PATCH 342/383] further airbrake fix MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- app-config.yaml | 3 -- plugins/airbrake-backend/README.md | 15 ++++++- plugins/airbrake-backend/api-report.md | 6 +-- plugins/airbrake-backend/config.d.ts | 4 +- .../src/config/ExtractAirbrakeConfig.test.ts | 43 +++---------------- .../src/config/ExtractAirbrakeConfig.ts | 28 +++--------- .../src/service/router.test.ts | 2 +- .../src/service/standaloneServer.ts | 2 +- plugins/airbrake/README.md | 2 +- 9 files changed, 32 insertions(+), 73 deletions(-) diff --git a/app-config.yaml b/app-config.yaml index e49e29c45a..b025064c74 100644 --- a/app-config.yaml +++ b/app-config.yaml @@ -464,6 +464,3 @@ apacheAirflow: gocd: baseUrl: https://your.gocd.instance.com - -airbrake: - apiKey: ${AIRBRAKE_API_KEY} diff --git a/plugins/airbrake-backend/README.md b/plugins/airbrake-backend/README.md index 7ded50c85a..9c9b56ade4 100644 --- a/plugins/airbrake-backend/README.md +++ b/plugins/airbrake-backend/README.md @@ -10,8 +10,19 @@ See the [Airbrake plugin instructions](../airbrake/README.md#how-to-use). This method of serving the plugin provides quicker iteration speed and a faster startup and hot reloads. -1. Set the environment variable `AIRBRAKE_API_KEY` with your [API key](https://airbrake.io/docs/api/#authentication). -2. Run this plugin in standalone mode by running `yarn start`. The configuration is already setup in the root [`app-config.yaml`](../../app-config.yaml) to pick up your API key from the environment variable above. +1. Add the required config to your `app-config.local.yaml`: + + ```yaml + airbrake: + apiKey: ${AIRBRAKE_API_KEY} + ``` + +2. Set the environment variable `AIRBRAKE_API_KEY` with your [API + key](https://airbrake.io/docs/api/#authentication). You can also write it + directly into the config file above for convenience - but beware of + accidentally leaking the key. + +3. Go into the plugin's directory and run it in standalone mode by running `yarn start`. Access it from http://localhost:7007/api/airbrake. Or use the Airbrake plugin which will talk to it automatically. diff --git a/plugins/airbrake-backend/api-report.md b/plugins/airbrake-backend/api-report.md index 58f299fb4c..b9e9a50e0b 100644 --- a/plugins/airbrake-backend/api-report.md +++ b/plugins/airbrake-backend/api-report.md @@ -6,7 +6,6 @@ import { Config } from '@backstage/config'; import express from 'express'; import { Logger as Logger_2 } from 'winston'; -import * as winston from 'winston'; // @public export interface AirbrakeConfig { @@ -17,10 +16,7 @@ export interface AirbrakeConfig { export function createRouter(options: RouterOptions): Promise; // @public -export function extractAirbrakeConfig( - config: Config, - logger: winston.Logger, -): AirbrakeConfig; +export function extractAirbrakeConfig(config: Config): AirbrakeConfig; // @public export interface RouterOptions { diff --git a/plugins/airbrake-backend/config.d.ts b/plugins/airbrake-backend/config.d.ts index 9563121127..a21f609550 100644 --- a/plugins/airbrake-backend/config.d.ts +++ b/plugins/airbrake-backend/config.d.ts @@ -18,7 +18,9 @@ export interface Config { /** Configuration options for the Airbrake plugin */ airbrake?: { /** - * The API Key to authenticate requests. More details on how to get this here: https://airbrake.io/docs/api/#authentication + * The API Key to authenticate requests. More details on how to get this + * here: https://airbrake.io/docs/api/#authentication + * * @visibility secret */ apiKey: string; diff --git a/plugins/airbrake-backend/src/config/ExtractAirbrakeConfig.test.ts b/plugins/airbrake-backend/src/config/ExtractAirbrakeConfig.test.ts index d94746c8ef..53d744b9ee 100644 --- a/plugins/airbrake-backend/src/config/ExtractAirbrakeConfig.test.ts +++ b/plugins/airbrake-backend/src/config/ExtractAirbrakeConfig.test.ts @@ -13,20 +13,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { getVoidLogger } from '@backstage/backend-common'; + import { ConfigReader } from '@backstage/config'; import { extractAirbrakeConfig } from './ExtractAirbrakeConfig'; -import * as winston from 'winston'; describe('ExtractAirbrakeConfig', () => { - let oldProcessEnv: NodeJS.ProcessEnv; - let voidLogger: winston.Logger; - - beforeEach(() => { - oldProcessEnv = process.env; - voidLogger = getVoidLogger(); - }); - it('gets the API key', () => { const config = new ConfigReader({ airbrake: { @@ -34,34 +25,14 @@ describe('ExtractAirbrakeConfig', () => { }, }); - const airbrakeConfig = extractAirbrakeConfig(config, voidLogger); + const airbrakeConfig = extractAirbrakeConfig(config); expect(airbrakeConfig.apiKey).toStrictEqual('fakeApiKey'); }); - it('does not fail in development', () => { - process.env = { - ...oldProcessEnv, - NODE_ENV: 'development', - }; - - const config = new ConfigReader({}); - - expect(() => extractAirbrakeConfig(config, voidLogger)).not.toThrow(); - const airbrakeConfig = extractAirbrakeConfig(config, voidLogger); - expect(airbrakeConfig.apiKey).toStrictEqual(''); - }); - - it('fails in production', () => { - process.env = { - ...oldProcessEnv, - NODE_ENV: 'production', - }; - - const config = new ConfigReader({}); - expect(() => extractAirbrakeConfig(config, voidLogger)).toThrow(); - }); - - afterEach(() => { - process.env = { ...oldProcessEnv }; + it('fails for missing keys', () => { + expect(() => extractAirbrakeConfig(new ConfigReader({}))).toThrow(); + expect(() => + extractAirbrakeConfig(new ConfigReader({ airbrake: {} })), + ).toThrow(); }); }); diff --git a/plugins/airbrake-backend/src/config/ExtractAirbrakeConfig.ts b/plugins/airbrake-backend/src/config/ExtractAirbrakeConfig.ts index 20542ccbde..de6a31feec 100644 --- a/plugins/airbrake-backend/src/config/ExtractAirbrakeConfig.ts +++ b/plugins/airbrake-backend/src/config/ExtractAirbrakeConfig.ts @@ -13,8 +13,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + import { Config } from '@backstage/config'; -import * as winston from 'winston'; /** * The configuration needed for the airbrake-backend plugin @@ -34,27 +34,9 @@ export interface AirbrakeConfig { * @public * * @param config - The config object to extract from - * @param logger - THe logger object */ -export function extractAirbrakeConfig( - config: Config, - logger: winston.Logger, -): AirbrakeConfig { - try { - return { - apiKey: config.getString('airbrake.apiKey'), - }; - } catch (e) { - if (process.env.NODE_ENV !== 'development') { - throw e; - } else { - logger.warn( - 'Airbrake config missing, Airbrake plugin will probably not work', - e, - ); - return { - apiKey: '', - }; - } - } +export function extractAirbrakeConfig(config: Config): AirbrakeConfig { + return { + apiKey: config.getString('airbrake.apiKey'), + }; } diff --git a/plugins/airbrake-backend/src/service/router.test.ts b/plugins/airbrake-backend/src/service/router.test.ts index 05c9308d7f..7ccafd7eba 100644 --- a/plugins/airbrake-backend/src/service/router.test.ts +++ b/plugins/airbrake-backend/src/service/router.test.ts @@ -40,7 +40,7 @@ describe('createRouter', () => { apiKey: 'fakeApiKey', }, }); - airbrakeConfig = extractAirbrakeConfig(config, voidLogger); + airbrakeConfig = extractAirbrakeConfig(config); const router = await createRouter({ logger: voidLogger, diff --git a/plugins/airbrake-backend/src/service/standaloneServer.ts b/plugins/airbrake-backend/src/service/standaloneServer.ts index 2f2de71fa1..6825e60a0a 100644 --- a/plugins/airbrake-backend/src/service/standaloneServer.ts +++ b/plugins/airbrake-backend/src/service/standaloneServer.ts @@ -34,7 +34,7 @@ export async function startStandaloneServer( ): Promise { const logger = options.logger.child({ service: 'airbrake-backend' }); const config = await loadBackendConfig({ logger, argv: process.argv }); - const airbrakeConfig = extractAirbrakeConfig(config, logger); + const airbrakeConfig = extractAirbrakeConfig(config); logger.debug('Starting application server...'); const router = await createRouter({ logger, diff --git a/plugins/airbrake/README.md b/plugins/airbrake/README.md index 2fb5dbd2fc..d5ea9bb006 100644 --- a/plugins/airbrake/README.md +++ b/plugins/airbrake/README.md @@ -68,7 +68,7 @@ The Airbrake plugin provides connectivity between Backstage and Airbrake (https: ## Local Development -Start this plugin in standalone mode by running `yarn start`. This method of serving the plugin provides quicker +Start this plugin in standalone mode by running `yarn start` inside the plugin directory. This method of serving the plugin provides quicker iteration speed and a faster startup and hot reloads. It is only meant for local development, and the setup for it can be found inside the [/dev](./dev) directory. From 43da908ca61045d9743a78737f2ca8756b9951b8 Mon Sep 17 00:00:00 2001 From: zoefkip Date: Tue, 22 Feb 2022 15:53:35 +0100 Subject: [PATCH 343/383] small typo in bitbucket auth provider docs --- docs/auth/bitbucket/provider.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/auth/bitbucket/provider.md b/docs/auth/bitbucket/provider.md index ee87c2d4e6..c54fb75ffa 100644 --- a/docs/auth/bitbucket/provider.md +++ b/docs/auth/bitbucket/provider.md @@ -67,7 +67,7 @@ Bitbucket username to `bitbucket.org/username` annotations of `User` entities in the catalog. Note that you must populate your catalog with matching entities or users will not be able to sign in. -The second resolver is the `bitbucketUsernameSignInResolver`, which works the +The second resolver is the `bitbucketUserIdSignInResolver`, which works the same way, but uses the Bitbucket user ID instead, and matches on the `bitbucket.org/user-id` annotation. From 8286e40f1320b97d863c1801e0fae29d4b31ce1b Mon Sep 17 00:00:00 2001 From: Johan Haals Date: Tue, 22 Feb 2022 16:00:16 +0100 Subject: [PATCH 344/383] prefix with breaking Signed-off-by: Johan Haals --- .changeset/moody-elephants-float.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/moody-elephants-float.md b/.changeset/moody-elephants-float.md index c637a870ec..4fbe1afa18 100644 --- a/.changeset/moody-elephants-float.md +++ b/.changeset/moody-elephants-float.md @@ -2,6 +2,6 @@ '@backstage/plugin-catalog-react': minor --- -Deleted the deprecated `loadIdentityOwnerRefs` function which is replaced by `ownershipEntityRefs` from `identityApi.getBackstageIdentity()`. +**BREAKING**: Deleted the deprecated `loadIdentityOwnerRefs` function which is replaced by `ownershipEntityRefs` from `identityApi.getBackstageIdentity()`. Deprecated the `loadCatalogOwnerRefs` hook as membership references should be added as `ent` inside `claims` sections of the `SignInResolver` when issuing tokens. See https://backstage.io/docs/auth/identity-resolver for more details on how to prepare your `SignInResolver` if not done already. Usage of the `loadCatalogOwnerRefs` hook should be replaced by `ownershipEntityRefs` from `identityApi.getBackstageIdentity()` instead. From 09f3666785c7d74f3c4847f1a633a13d9457f928 Mon Sep 17 00:00:00 2001 From: Guilherme Oenning Date: Tue, 22 Feb 2022 15:06:05 +0000 Subject: [PATCH 345/383] conditionally add consistency level Signed-off-by: Guilherme Oenning --- .../src/microsoftGraph/client.ts | 25 +++++++++++-------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/plugins/catalog-backend-module-msgraph/src/microsoftGraph/client.ts b/plugins/catalog-backend-module-msgraph/src/microsoftGraph/client.ts index 8a9b2fd161..457a83c703 100644 --- a/plugins/catalog-backend-module-msgraph/src/microsoftGraph/client.ts +++ b/plugins/catalog-backend-module-msgraph/src/microsoftGraph/client.ts @@ -106,7 +106,14 @@ export class MicrosoftGraphClient { path: string, query?: ODataQuery, ): AsyncIterable { - let response = await this.requestApi(path, query); + + const headers: Record = query?.search ? { + // Eventual consistency is required to use $search. + // If a new user/group is not found, it'll eventually be imported on a subsequent read + ConsistencyLevel: 'eventual', + } : {} + + let response = await this.requestApi(path, query, headers); for (;;) { if (response.status !== 200) { @@ -125,7 +132,7 @@ export class MicrosoftGraphClient { return; } - response = await this.requestRaw(result['@odata.nextLink']); + response = await this.requestRaw(result['@odata.nextLink'], headers); } } @@ -135,8 +142,9 @@ export class MicrosoftGraphClient { * @public * @param path - Resource in Microsoft Graph * @param query - OData Query {@link ODataQuery} + * @param headers - optional HTTP headers */ - async requestApi(path: string, query?: ODataQuery): Promise { + async requestApi(path: string, query?: ODataQuery, headers?: Record): Promise { const queryString = qs.stringify( { $search: query?.search, @@ -151,15 +159,16 @@ export class MicrosoftGraphClient { }, ); - return await this.requestRaw(`${this.baseUrl}/${path}${queryString}`); + return await this.requestRaw(`${this.baseUrl}/${path}${queryString}`, headers); } /** * Makes a HTTP call to Graph API with token * * @param url - HTTP Endpoint of Graph API + * @param headers - optional HTTP headers */ - async requestRaw(url: string): Promise { + async requestRaw(url: string, headers?: Record): Promise { // Make sure that we always have a valid access token (might be cached) const token = await this.pca.acquireTokenByClientCredential({ scopes: ['https://graph.microsoft.com/.default'], @@ -171,12 +180,8 @@ export class MicrosoftGraphClient { return await fetch(url, { headers: { + ...headers, Authorization: `Bearer ${token.accessToken}`, - - // Eventual consistency is required to use $search. - // Groups/Users are not changed that frequently to require strong consistency - // If a new user/group is not found, it'll eventually be imported on a subsequent call - ConsistencyLevel: 'eventual', }, }); } From 4165cc0ce4b80c5f5207dd22ad998599bca78cb2 Mon Sep 17 00:00:00 2001 From: blam Date: Tue, 22 Feb 2022 16:09:44 +0100 Subject: [PATCH 346/383] chore: the last of the migrations Signed-off-by: blam --- .changeset/clean-suits-hear.md | 3 +- .../src/actions/fetch/cookiecutter.test.ts | 12 +++---- .../src/actions/fetch/cookiecutter.ts | 4 +-- .../fetch/rails/railsNewRunner.test.ts | 10 +++--- .../src/actions/fetch/rails/railsNewRunner.ts | 4 +-- plugins/scaffolder-backend/api-report.md | 32 ++++++++----------- .../src/scaffolder/actions/builtin/helpers.ts | 24 ++++++++++---- .../src/scaffolder/actions/builtin/index.ts | 2 +- .../src/scaffolder/tasks/DatabaseTaskStore.ts | 12 +++---- 9 files changed, 56 insertions(+), 47 deletions(-) diff --git a/.changeset/clean-suits-hear.md b/.changeset/clean-suits-hear.md index 9c167ff15e..911a46a55a 100644 --- a/.changeset/clean-suits-hear.md +++ b/.changeset/clean-suits-hear.md @@ -2,4 +2,5 @@ '@backstage/plugin-scaffolder-backend': patch --- -Added a type parameter to `TaskStoreEmitOptions` to type the `body` property +- **DEPRECATED** - Deprecated the `runCommand` export in favour of `executeShellCommand`. Please migrate to using the new method. +- Added a type parameter to `TaskStoreEmitOptions` to type the `body` property 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 2c1ecd06f9..18a6722663 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,14 +13,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -const runCommand = jest.fn(); +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, - runCommand, + executeShellCommand, })); jest.mock('command-exists', () => commandExists); @@ -115,8 +115,8 @@ describe('fetch:cookiecutter', () => { }); }); - // Mock when runCommand is called it creats some new files in the mock filesystem - runCommand.mockImplementation(async () => { + // Mock when executeShellCommand is called it creats some new files in the mock filesystem + executeShellCommand.mockImplementation(async () => { mockFs({ [`${join(mockTmpDir, 'intermediate')}`]: { 'testfile.json': '{}', @@ -163,12 +163,12 @@ describe('fetch:cookiecutter', () => { ); }); - it('should call out to cookiecutter using runCommand when cookiecutter is installed', async () => { + it('should call out to cookiecutter using executeShellCommand when cookiecutter is installed', async () => { commandExists.mockResolvedValue(true); await action.handler(mockContext); - expect(runCommand).toHaveBeenCalledWith( + expect(executeShellCommand).toHaveBeenCalledWith( expect.objectContaining({ command: 'cookiecutter', args: [ diff --git a/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.ts b/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.ts index 0455f01989..6b0cb4695d 100644 --- a/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.ts +++ b/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.ts @@ -27,9 +27,9 @@ import fs from 'fs-extra'; import path, { resolve as resolvePath } from 'path'; import { Writable } from 'stream'; import { - runCommand, createTemplateAction, fetchContents, + executeShellCommand, } from '@backstage/plugin-scaffolder-backend'; export class CookiecutterRunner { @@ -89,7 +89,7 @@ export class CookiecutterRunner { () => false, ); if (cookieCutterInstalled) { - await runCommand({ + await executeShellCommand({ command: 'cookiecutter', args: ['--no-input', '-o', intermediateDir, templateDir, '--verbose'], logStream, 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 03d894f832..0767e63f29 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,10 +14,12 @@ * limitations under the License. */ -const runCommand = jest.fn(); +const executeShellCommand = jest.fn(); const commandExists = jest.fn(); -jest.mock('@backstage/plugin-scaffolder-backend', () => ({ runCommand })); +jest.mock('@backstage/plugin-scaffolder-backend', () => ({ + executeShellCommand, +})); jest.mock('command-exists', () => commandExists); jest.mock('fs-extra'); @@ -195,7 +197,7 @@ describe('Rails Templater', () => { logStream: stream, }); - expect(runCommand).toHaveBeenCalledWith({ + expect(executeShellCommand).toHaveBeenCalledWith({ command: 'rails', args: expect.arrayContaining([ 'new', @@ -225,7 +227,7 @@ describe('Rails Templater', () => { logStream: stream, }); - expect(runCommand).toHaveBeenCalledWith({ + expect(executeShellCommand).toHaveBeenCalledWith({ command: 'rails', args: expect.arrayContaining([ 'new', 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 f7817c7fb5..4a4672795a 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 @@ -17,7 +17,7 @@ import { ContainerRunner } from '@backstage/backend-common'; import fs from 'fs-extra'; import path from 'path'; -import { runCommand } from '@backstage/plugin-scaffolder-backend'; +import { executeShellCommand } from '@backstage/plugin-scaffolder-backend'; import commandExists from 'command-exists'; import { railsArgumentResolver, @@ -64,7 +64,7 @@ export class RailsNewRunner { railsArguments as RailsRunOptions, ); - await runCommand({ + await executeShellCommand({ command: baseCommand, args: [ ...baseArguments, diff --git a/plugins/scaffolder-backend/api-report.md b/plugins/scaffolder-backend/api-report.md index b4a094285a..bbbcf680c7 100644 --- a/plugins/scaffolder-backend/api-report.md +++ b/plugins/scaffolder-backend/api-report.md @@ -354,14 +354,13 @@ export class DatabaseTaskStore implements TaskStore { options: TaskStoreCreateTaskOptions, ): Promise; // (undocumented) - emitLogEvent({ - taskId, - body, - }: TaskStoreEmitOptions< - { - message: string; - } & JsonObject - >): Promise; + emitLogEvent( + options: TaskStoreEmitOptions< + { + message: string; + } & JsonObject + >, + ): Promise; // (undocumented) getTask(taskId: string): Promise; // (undocumented) @@ -381,6 +380,11 @@ export class DatabaseTaskStore implements TaskStore { // @public @deprecated export type DispatchResult = TaskBrokerDispatchResult; +// Warning: (ae-forgotten-export) The symbol "RunCommandOptions" needs to be exported by the entry point index.d.ts +// +// @public +export const executeShellCommand: (options: RunCommandOptions) => Promise; + // @public export function fetchContents({ reader, @@ -437,16 +441,8 @@ export interface RouterOptions { taskWorkers?: number; } -// Warning: (ae-forgotten-export) The symbol "RunCommandOptions" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "runCommand" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public -export const runCommand: ({ - command, - args, - logStream, - options, -}: RunCommandOptions) => Promise; +// @public @deprecated +export const runCommand: (options: RunCommandOptions) => Promise; // @public (undocumented) export class ScaffolderEntitiesProcessor implements CatalogProcessor { diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/helpers.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/helpers.ts index 9303b5e487..7ee334a3f7 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/helpers.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/helpers.ts @@ -34,15 +34,18 @@ export type RunCommandOptions = { /** * Run a command in a sub-process, normally a shell command. + * + * @public */ -export const runCommand = async ({ - command, - args, - logStream = new PassThrough(), - options, -}: RunCommandOptions) => { +export const executeShellCommand = async (options: RunCommandOptions) => { + const { + command, + args, + options: spawnOptions, + logStream = new PassThrough(), + } = options; await new Promise((resolve, reject) => { - const process = spawn(command, args, options); + const process = spawn(command, args, spawnOptions); process.stdout.on('data', stream => { logStream.write(stream); @@ -67,6 +70,13 @@ export const runCommand = async ({ }); }; +/** + * Run a command in a sub-process, normally a shell command. + * @public + * @deprecated use {@link executeShellCommand} instead + */ +export const runCommand = executeShellCommand; + export async function initRepoAndPush({ dir, remoteUrl, diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/index.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/index.ts index 5f4c04cc7d..8930c23126 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/index.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/index.ts @@ -25,4 +25,4 @@ export * from './github'; /** @deprecated please add this package to your own installation manually */ export { createFetchCookiecutterAction } from '@backstage/plugin-scaffolder-backend-module-cookiecutter'; -export { runCommand } from './helpers'; +export { runCommand, executeShellCommand } from './helpers'; diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/DatabaseTaskStore.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/DatabaseTaskStore.ts index b81cbc9dcc..65b890c265 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/DatabaseTaskStore.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/DatabaseTaskStore.ts @@ -252,15 +252,15 @@ export class DatabaseTaskStore implements TaskStore { }); } - async emitLogEvent({ - taskId, - body, - }: TaskStoreEmitOptions<{ message: string } & JsonObject>): Promise { - const serializedBo = JSON.stringify(body); + async emitLogEvent( + options: TaskStoreEmitOptions<{ message: string } & JsonObject>, + ): Promise { + const { taskId, body } = options; + const serializedBody = JSON.stringify(body); await this.db('task_events').insert({ task_id: taskId, event_type: 'log', - body: serializedBo, + body: serializedBody, }); } From d4f67fa728400d0dc0beb83eaa4379eb58b1d13b Mon Sep 17 00:00:00 2001 From: Johan Haals Date: Tue, 22 Feb 2022 16:19:45 +0100 Subject: [PATCH 347/383] catalog-react: Deprecate useOwnedEntities & useOwnUser Signed-off-by: Johan Haals --- .changeset/stale-shirts-grow.md | 5 ++++ .changeset/wicked-masks-own.md | 6 +++++ plugins/catalog-react/api-report.md | 4 +-- plugins/catalog-react/src/hooks/useOwnUser.ts | 1 + .../src/hooks/useOwnedEntities.ts | 1 + .../home/components/TechDocsCustomHome.tsx | 27 ++++++++++++++++--- 6 files changed, 38 insertions(+), 6 deletions(-) create mode 100644 .changeset/stale-shirts-grow.md create mode 100644 .changeset/wicked-masks-own.md diff --git a/.changeset/stale-shirts-grow.md b/.changeset/stale-shirts-grow.md new file mode 100644 index 0000000000..93d38fed5b --- /dev/null +++ b/.changeset/stale-shirts-grow.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-techdocs': patch +--- + +Removed import of deprecated hook. diff --git a/.changeset/wicked-masks-own.md b/.changeset/wicked-masks-own.md new file mode 100644 index 0000000000..cdca1c10a6 --- /dev/null +++ b/.changeset/wicked-masks-own.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-catalog-react': patch +--- + +Deprecated the `useOwnedEntities` hook which is replaced by the IdentityAPI. +Deprecated the `useOwnUser` hook due to low external value. diff --git a/plugins/catalog-react/api-report.md b/plugins/catalog-react/api-report.md index 0a7bbbfc9e..4efd2fd9e9 100644 --- a/plugins/catalog-react/api-report.md +++ b/plugins/catalog-react/api-report.md @@ -584,13 +584,13 @@ export function useEntityPermission(permission: Permission): { // @public export function useEntityTypeFilter(): EntityTypeReturn; -// @public +// @public @deprecated export function useOwnedEntities(allowedKinds?: string[]): { loading: boolean; ownedEntities: GetEntitiesResponse | undefined; }; -// @public +// @public @deprecated export function useOwnUser(): AsyncState; // @public (undocumented) diff --git a/plugins/catalog-react/src/hooks/useOwnUser.ts b/plugins/catalog-react/src/hooks/useOwnUser.ts index 1477de67aa..74c44bc638 100644 --- a/plugins/catalog-react/src/hooks/useOwnUser.ts +++ b/plugins/catalog-react/src/hooks/useOwnUser.ts @@ -26,6 +26,7 @@ import { identityApiRef, useApi } from '@backstage/core-plugin-api'; /** * Get the catalog User entity (if any) that matches the logged-in user. * @public + * @deprecated due to low external usage. */ export function useOwnUser(): AsyncState { const catalogApi = useApi(catalogApiRef); diff --git a/plugins/catalog-react/src/hooks/useOwnedEntities.ts b/plugins/catalog-react/src/hooks/useOwnedEntities.ts index dad73740c1..da023a543e 100644 --- a/plugins/catalog-react/src/hooks/useOwnedEntities.ts +++ b/plugins/catalog-react/src/hooks/useOwnedEntities.ts @@ -32,6 +32,7 @@ import { useMemo } from 'react'; * @public * * @param allowedKinds - Array of allowed kinds to filter the entities + * @deprecated Use `ownershipEntityRefs` from `identityApi.getBackstageIdentity()` instead. */ export function useOwnedEntities(allowedKinds?: string[]): { loading: boolean; diff --git a/plugins/techdocs/src/home/components/TechDocsCustomHome.tsx b/plugins/techdocs/src/home/components/TechDocsCustomHome.tsx index b32cadaa05..54c622fdf3 100644 --- a/plugins/techdocs/src/home/components/TechDocsCustomHome.tsx +++ b/plugins/techdocs/src/home/components/TechDocsCustomHome.tsx @@ -15,7 +15,7 @@ */ import React, { useState } from 'react'; -import useAsync from 'react-use/lib/useAsync'; +import useAsync, { AsyncState } from 'react-use/lib/useAsync'; import { makeStyles } from '@material-ui/core'; import { CSSProperties } from '@material-ui/styles'; import { @@ -23,9 +23,13 @@ import { catalogApiRef, CatalogApi, isOwnerOf, - useOwnUser, } from '@backstage/plugin-catalog-react'; -import { Entity } from '@backstage/catalog-model'; +import { + DEFAULT_NAMESPACE, + Entity, + parseEntityRef, + UserEntity, +} from '@backstage/catalog-model'; import { DocsTable } from './DocsTable'; import { DocsCardGrid } from './DocsCardGrid'; import { TechDocsPageWrapper } from './TechDocsPageWrapper'; @@ -40,7 +44,7 @@ import { ContentHeader, } from '@backstage/core-components'; -import { useApi } from '@backstage/core-plugin-api'; +import { identityApiRef, useApi } from '@backstage/core-plugin-api'; const panels = { DocsTable: DocsTable, @@ -195,3 +199,18 @@ export const TechDocsCustomHome = ({ ); }; + +function useOwnUser(): AsyncState { + const catalogApi = useApi(catalogApiRef); + const identityApi = useApi(identityApiRef); + + return useAsync(async () => { + const identity = await identityApi.getBackstageIdentity(); + return catalogApi.getEntityByName( + parseEntityRef(identity.userEntityRef, { + defaultKind: 'User', + defaultNamespace: DEFAULT_NAMESPACE, + }), + ) as Promise; + }, [catalogApi, identityApi]); +} From e621d9658b48ae39c4648b7dfb2769789f9a7362 Mon Sep 17 00:00:00 2001 From: Frank Cycan Date: Tue, 22 Feb 2022 11:53:46 -0500 Subject: [PATCH 348/383] [Plugin] Code Climate Signed-off-by: Frank Cycan --- .changeset/poor-icons-flow.md | 5 + plugins/code-climate/.eslintrc.js | 3 + plugins/code-climate/README.md | 85 +++++++ plugins/code-climate/api-report.md | 87 +++++++ plugins/code-climate/dev/index.tsx | 93 ++++++++ .../code-climate/docs/code-climate-card.png | Bin 0 -> 65389 bytes plugins/code-climate/package.json | 56 +++++ .../code-climate/src/api/code-climate-api.ts | 26 +++ .../code-climate/src/api/code-climate-data.ts | 184 +++++++++++++++ plugins/code-climate/src/api/index.ts | 21 ++ .../code-climate-maintainability-mock.json | 49 ++++ .../mock/code-climate-test-coverage-mock.json | 21 ++ plugins/code-climate/src/api/mock/index.ts | 18 ++ plugins/code-climate/src/api/mock/mock-api.ts | 56 +++++ .../code-climate/src/api/production-api.ts | 160 +++++++++++++ .../CodeClimateCard/CodeClimateCard.tsx | 25 +++ .../src/components/CodeClimateCard/index.ts | 17 ++ .../CodeClimateCardContents.tsx | 64 ++++++ .../CodeClimateCardContents/index.ts | 17 ++ .../CodeClimateTable.test.tsx | 37 +++ .../CodeClimateTable/CodeClimateTable.tsx | 212 ++++++++++++++++++ .../src/components/CodeClimateTable/index.ts | 17 ++ plugins/code-climate/src/index.ts | 24 ++ plugins/code-climate/src/plugin.test.ts | 23 ++ plugins/code-climate/src/plugin.ts | 58 +++++ plugins/code-climate/src/setupTests.ts | 20 ++ yarn.lock | 12 +- 27 files changed, 1389 insertions(+), 1 deletion(-) create mode 100644 .changeset/poor-icons-flow.md create mode 100644 plugins/code-climate/.eslintrc.js create mode 100644 plugins/code-climate/README.md create mode 100644 plugins/code-climate/api-report.md create mode 100644 plugins/code-climate/dev/index.tsx create mode 100644 plugins/code-climate/docs/code-climate-card.png create mode 100644 plugins/code-climate/package.json create mode 100644 plugins/code-climate/src/api/code-climate-api.ts create mode 100644 plugins/code-climate/src/api/code-climate-data.ts create mode 100644 plugins/code-climate/src/api/index.ts create mode 100644 plugins/code-climate/src/api/mock/code-climate-maintainability-mock.json create mode 100644 plugins/code-climate/src/api/mock/code-climate-test-coverage-mock.json create mode 100644 plugins/code-climate/src/api/mock/index.ts create mode 100644 plugins/code-climate/src/api/mock/mock-api.ts create mode 100644 plugins/code-climate/src/api/production-api.ts create mode 100644 plugins/code-climate/src/components/CodeClimateCard/CodeClimateCard.tsx create mode 100644 plugins/code-climate/src/components/CodeClimateCard/index.ts create mode 100644 plugins/code-climate/src/components/CodeClimateCardContents/CodeClimateCardContents.tsx create mode 100644 plugins/code-climate/src/components/CodeClimateCardContents/index.ts create mode 100644 plugins/code-climate/src/components/CodeClimateTable/CodeClimateTable.test.tsx create mode 100644 plugins/code-climate/src/components/CodeClimateTable/CodeClimateTable.tsx create mode 100644 plugins/code-climate/src/components/CodeClimateTable/index.ts create mode 100644 plugins/code-climate/src/index.ts create mode 100644 plugins/code-climate/src/plugin.test.ts create mode 100644 plugins/code-climate/src/plugin.ts create mode 100644 plugins/code-climate/src/setupTests.ts diff --git a/.changeset/poor-icons-flow.md b/.changeset/poor-icons-flow.md new file mode 100644 index 0000000000..f3cc22c339 --- /dev/null +++ b/.changeset/poor-icons-flow.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-code-climate': minor +--- + +Added Code Climate plugin diff --git a/plugins/code-climate/.eslintrc.js b/plugins/code-climate/.eslintrc.js new file mode 100644 index 0000000000..13573efa9c --- /dev/null +++ b/plugins/code-climate/.eslintrc.js @@ -0,0 +1,3 @@ +module.exports = { + extends: [require.resolve('@backstage/cli/config/eslint')], +}; diff --git a/plugins/code-climate/README.md b/plugins/code-climate/README.md new file mode 100644 index 0000000000..a67e70b11a --- /dev/null +++ b/plugins/code-climate/README.md @@ -0,0 +1,85 @@ +# Code Climate Plugin + +The Code Climate Plugin displays a few stats from the quality section from [Code Climate](https://codeclimate.com). + +![Code Climate Card](./docs/code-climate-card.png) + +## Getting Started + +1. Install the Code Climate Plugin: + +```bash +# From your Backstage root directory +cd packages/app +yarn add @backstage/plugin-code-climate +``` + +2. Add the `EntityCodeClimateCard` to the EntityPage: + +```jsx +// packages/app/src/components/catalog/EntityPage.tsx + +import { EntityCodeClimateCard } from '@backstage/plugin-code-climate'; + +const overviewContent = ( + + // ... + + + + // ... + +); +``` + +3. Add the proxy config: + +```yaml +# app-config.yaml + +proxy: + '/codeclimate/api': + target: https://api.codeclimate.com/v1 + headers: + Authorization: Token token=${CODECLIMATE_TOKEN} +``` + +4. Create a new API access token (https://codeclimate.com/profile/tokens) and provide `CODECLIMATE_TOKEN` as an env variable. + +5. Add the `codeclimate.com/repo-id` annotation to your `catalog-info.yaml` file: + +```yaml +apiVersion: backstage.io/v1alpha1 +kind: Component +metadata: + name: backstage + description: | + Backstage is an open-source developer portal that puts the developer experience first. + annotations: + codeclimate.com/repo-id: YOUR_REPO_ID +spec: + type: library + owner: CNCF + lifecycle: experimental +``` + +### Demo Mode + +The plugin provides a MockAPI that always returns dummy data instead of talking to the Code Climate backend. +You can add it by overriding the `codeClimateApiRef`: + +```ts +// packages/app/src/apis.ts + +import { createApiFactory } from '@backstage/core-plugin-api'; +import { + MockCodeClimateApi, + codeClimateApiRef, +} from '@backstage/plugin-code-climate'; + +export const apis = [ + // ... + + createApiFactory(codeClimateApiRef, new MockCodeClimateApi()), +]; +``` diff --git a/plugins/code-climate/api-report.md b/plugins/code-climate/api-report.md new file mode 100644 index 0000000000..11366384d3 --- /dev/null +++ b/plugins/code-climate/api-report.md @@ -0,0 +1,87 @@ +## API Report File for "@backstage/plugin-code-climate" + +> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). + +```ts +/// + +import { ApiRef } from '@backstage/core-plugin-api'; +import { BackstagePlugin } from '@backstage/core-plugin-api'; +import { DiscoveryApi } 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; + maintainability: { + letter: string; + value: string; + }; + testCoverage: { + letter: string; + value: string; + }; + numberOfCodeSmells: number; + numberOfDuplication: number; + 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< + { + root: RouteRef; + }, + {} +>; + +// 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 { + constructor(discoveryApi: DiscoveryApi); + // (undocumented) + fetchAllData(options: { + apiUrl: string; + repoID: string; + snapshotID: string; + testReportID: string; + }): Promise; + // (undocumented) + fetchData(repoID: string): Promise; +} +``` diff --git a/plugins/code-climate/dev/index.tsx b/plugins/code-climate/dev/index.tsx new file mode 100644 index 0000000000..d5fc4c28e3 --- /dev/null +++ b/plugins/code-climate/dev/index.tsx @@ -0,0 +1,93 @@ +/* + * Copyright 2020 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { Entity } from '@backstage/catalog-model'; +// eslint-disable-next-line import/no-extraneous-dependencies +import { createDevApp, EntityGridItem } from '@backstage/dev-utils'; +import { Grid } from '@material-ui/core'; +import React from 'react'; +import { + EntityCodeClimateCard, + MockCodeClimateApi, + CodeClimateApi, + codeClimateApiRef, +} from '../src'; +import { CODECLIMATE_REPO_ID_ANNOTATION } from '../src/plugin'; +import { Content, Header, Page } from '@backstage/core-components'; + +const entity = (name?: string) => + ({ + apiVersion: 'backstage.io/v1alpha1', + kind: 'Component', + metadata: { + annotations: { + [CODECLIMATE_REPO_ID_ANNOTATION]: name, + }, + name: name, + }, + } as Entity); + +createDevApp() + .registerApi({ + api: codeClimateApiRef, + deps: {}, + factory: () => + ({ + fetchData: async (repoID: string) => { + switch (repoID) { + case 'error': + throw new Error('Error!'); + + case 'never': + return new Promise(() => {}); + + case 'no-values': + return undefined; + + case 'with-values': + return new MockCodeClimateApi().fetchData(); + + default: + return []; + } + }, + } as CodeClimateApi), + }) + .addPage({ + title: 'Cards', + element: ( + +
+ + + + + + + + + + + + + + + + + + ), + }) + .render(); diff --git a/plugins/code-climate/docs/code-climate-card.png b/plugins/code-climate/docs/code-climate-card.png new file mode 100644 index 0000000000000000000000000000000000000000..b94e23eebe4ce2dd54ec40d3910ad48ecd54ef7d GIT binary patch literal 65389 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℘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 literal 0 HcmV?d00001 diff --git a/plugins/code-climate/package.json b/plugins/code-climate/package.json new file mode 100644 index 0000000000..ef1c83c522 --- /dev/null +++ b/plugins/code-climate/package.json @@ -0,0 +1,56 @@ +{ + "name": "@backstage/plugin-code-climate", + "version": "0.0.0", + "main": "src/index.ts", + "types": "src/index.ts", + "license": "Apache-2.0", + "publishConfig": { + "access": "public", + "main": "dist/index.esm.js", + "types": "dist/index.d.ts" + }, + "scripts": { + "build": "backstage-cli plugin:build", + "start": "backstage-cli plugin:serve", + "lint": "backstage-cli lint", + "test": "backstage-cli test", + "diff": "backstage-cli plugin:diff", + "prepack": "backstage-cli prepack", + "postpack": "backstage-cli postpack", + "clean": "backstage-cli clean" + }, + "dependencies": { + "@backstage/catalog-model": "^0.10.0", + "@backstage/core-components": "^0.8.9", + "@backstage/core-plugin-api": "^0.6.1", + "@backstage/plugin-catalog-react": "^0.6.15", + "@backstage/theme": "^0.2.15", + "@material-ui/core": "^4.12.2", + "@material-ui/icons": "^4.9.1", + "@material-ui/lab": "4.0.0-alpha.57", + "humanize-duration": "^3.27.1", + "luxon": "^2.0.2", + "react-router": "6.0.0-beta.0", + "react-use": "^17.2.4" + }, + "peerDependencies": { + "react": "^16.13.1 || ^17.0.0" + }, + "devDependencies": { + "@backstage/cli": "^0.14.0", + "@backstage/dev-utils": "^0.2.22", + "@backstage/test-utils": "^0.2.5", + "@testing-library/jest-dom": "^5.10.1", + "@testing-library/react": "^11.2.5", + "@testing-library/user-event": "^13.1.8", + "@types/humanize-duration": "^3.27.1", + "@types/jest": "^26.0.7", + "@types/luxon": "^2.0.9", + "@types/node": "^14.14.32", + "cross-fetch": "^3.1.5", + "msw": "^0.35.0" + }, + "files": [ + "dist" + ] +} diff --git a/plugins/code-climate/src/api/code-climate-api.ts b/plugins/code-climate/src/api/code-climate-api.ts new file mode 100644 index 0000000000..fb4f41ebb5 --- /dev/null +++ b/plugins/code-climate/src/api/code-climate-api.ts @@ -0,0 +1,26 @@ +/* + * Copyright 2020 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { CodeClimateData } from './code-climate-data'; +import { createApiRef } from '@backstage/core-plugin-api'; + +export const codeClimateApiRef = createApiRef({ + id: 'plugin.code-climate.service', +}); + +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 new file mode 100644 index 0000000000..9271905157 --- /dev/null +++ b/plugins/code-climate/src/api/code-climate-data.ts @@ -0,0 +1,184 @@ +/* + * Copyright 2020 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export type CodeClimateRepoData = { + data: { + id: string; + type: string; + attributes: { + analysis_version: number; + badge_token: string; + branch: string; + created_at: string; + delegated_config_repo_id: string; + diff_coverage_enforced: boolean; + diff_coverage_threshold: number; + enable_notifications: boolean; + github_slug: string; + human_name: string; + last_activity_at: string; + test_reporter_id: string | null; + total_coverage_enforced: boolean; + vcs_database_id: string; + vcs_host: string; + score: string | null; + }; + relationships: { + latest_default_branch_snapshot: { + data: { id: string; type: string }; + }; + latest_default_branch_test_report: { + data: { id: string; type: string }; + }; + account: { + data: { id: string; type: string }; + }; + }; + links: { + self: string; + services: string; + web_coverage: string; + web_issues: string; + maintainability_badge: string; + test_coverage_badge: string; + }; + meta: { permissions: { admin: boolean } }; + }; +}; + +export type CodeClimateMaintainabilityData = { + data: { + id: string; + type: string; + attributes: { + commit_sha: string; + committed_at: string; + created_at: string; + lines_of_code: number; + ratings: [ + { + path: string; + letter: string; + measure: { + value: number; + unit: string; + meta: { + remediation_time: { value: number; unit: string }; + implementation_time: { + value: number; + unit: string; + }; + }; + }; + pillar: string; + }, + ]; + gpa: string | null; + worker_version: number; + }; + meta: { + issues_count: number; + measures: { + remediation: { value: number; unit: string }; + technical_debt_ratio: { + value: number; + unit: string; + meta: { + remediation_time: { value: number; unit: string }; + implementation_time: { + value: number; + unit: string; + }; + }; + }; + }; + }; + }; +}; + +export type CodeClimateTestCoverageData = { + data: { + id: string; + type: string; + attributes: { + branch: string; + commit_sha: string; + committed_at: string; + covered_percent: number; + lines_of_code: number; + rating: { + path: string; + letter: string; + measure: { value: number; unit: string }; + pillar: string; + }; + received_at: string; + state: string; + }; + }; +}; + +export type CodeClimateIssuesData = { + data: [ + { + id: string; + type: string; + attributes: { + categories: string[]; + check_name: string; + constant_name: string; + content: { body: string }; + description: string; + engine_name: string; + fingerprint: string; + location: { + path: string; + end_line: number; + start_line: number; + }; + other_locations: string[]; + remediation_points: number; + severity: string; + }; + meta: { permissions: { manageable: boolean } }; + }, + ]; + links: { + self: string; + next: string; + last: string; + }; + meta: { current_page: number; total_pages: number; total_count: number }; +}; + +export type CodeClimateData = { + repoID: string; + maintainability: { + letter: string; + value: string; + }; + testCoverage: { + letter: string; + value: string; + }; + numberOfCodeSmells: number; + numberOfDuplication: number; + numberOfOtherIssues: number; +}; + +export type CodeClimateApiError = { + detail: string; +}; diff --git a/plugins/code-climate/src/api/index.ts b/plugins/code-climate/src/api/index.ts new file mode 100644 index 0000000000..60fc079698 --- /dev/null +++ b/plugins/code-climate/src/api/index.ts @@ -0,0 +1,21 @@ +/* + * Copyright 2020 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export * from './mock'; +export type { CodeClimateApi } from './code-climate-api'; +export { codeClimateApiRef } from './code-climate-api'; +export type { CodeClimateData } from './code-climate-data'; +export { ProductionCodeClimateApi } from './production-api'; diff --git a/plugins/code-climate/src/api/mock/code-climate-maintainability-mock.json b/plugins/code-climate/src/api/mock/code-climate-maintainability-mock.json new file mode 100644 index 0000000000..46a7905e4b --- /dev/null +++ b/plugins/code-climate/src/api/mock/code-climate-maintainability-mock.json @@ -0,0 +1,49 @@ +{ + "data": { + "id": "6b8cc37a64b741dd9d516119", + "type": "snapshots", + "attributes": { + "commit_sha": "d670460b4b4aece5915caf5c68d12f560a9fe3e4", + "committed_at": "2022-01-14T15:17:29.311Z", + "created_at": "2022-01-31T10:07:40.415Z", + "lines_of_code": 8854, + "ratings": [ + { + "path": "/", + "letter": "B", + "measure": { + "value": 5.264879308188034, + "unit": "percent", + "meta": { + "remediation_time": { "value": 7186.52, "unit": "minute" }, + "implementation_time": { + "value": 136499.2353922225, + "unit": "minute" + } + } + }, + "pillar": "Maintainability" + } + ], + "gpa": null, + "worker_version": 69440 + }, + "meta": { + "issues_count": 127, + "measures": { + "remediation": { "value": 7186.52, "unit": "minute" }, + "technical_debt_ratio": { + "value": 5.264879308188034, + "unit": "percent", + "meta": { + "remediation_time": { "value": 7186.52, "unit": "minute" }, + "implementation_time": { + "value": 136499.2353922225, + "unit": "minute" + } + } + } + } + } + } +} diff --git a/plugins/code-climate/src/api/mock/code-climate-test-coverage-mock.json b/plugins/code-climate/src/api/mock/code-climate-test-coverage-mock.json new file mode 100644 index 0000000000..203dd81776 --- /dev/null +++ b/plugins/code-climate/src/api/mock/code-climate-test-coverage-mock.json @@ -0,0 +1,21 @@ +{ + "data": { + "id": "6b8cc37a64b741dd9d516119", + "type": "test_reports", + "attributes": { + "branch": "master", + "commit_sha": "d670460b4b4aece5915caf5c68d12f560a9fe3e4", + "committed_at": "2022-01-14T15:17:26.000Z", + "covered_percent": 88.41059602649007, + "lines_of_code": 8854, + "rating": { + "path": "/", + "letter": "B", + "measure": { "value": 88.41059602649007, "unit": "percent" }, + "pillar": "Test Coverage" + }, + "received_at": "2022-01-14T15:25:38.352Z", + "state": "done" + } + } +} diff --git a/plugins/code-climate/src/api/mock/index.ts b/plugins/code-climate/src/api/mock/index.ts new file mode 100644 index 0000000000..56ba9c7974 --- /dev/null +++ b/plugins/code-climate/src/api/mock/index.ts @@ -0,0 +1,18 @@ +/* + * Copyright 2020 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export { 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 new file mode 100644 index 0000000000..74e4d83027 --- /dev/null +++ b/plugins/code-climate/src/api/mock/mock-api.ts @@ -0,0 +1,56 @@ +/* + * Copyright 2020 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { CodeClimateData } from '../code-climate-data'; +import { CodeClimateApi } from '../code-climate-api'; +import maintainabilityMock from './code-climate-maintainability-mock.json'; +import testCoverageMock from './code-climate-test-coverage-mock.json'; +import { Duration } from 'luxon'; +import humanizeDuration from 'humanize-duration'; + +const maintainabilityData = maintainabilityMock.data.attributes.ratings[0]; +const testCoverageData = testCoverageMock.data.attributes.rating; + +const maintainabilityValue: any = {}; +maintainabilityValue[ + maintainabilityData.measure.meta.implementation_time.unit +] = maintainabilityData.measure.meta.implementation_time.value.toFixed(); + +export const mockData: CodeClimateData = { + repoID: '6b8cc37a64b741dd9d516119', + maintainability: { + letter: maintainabilityData.letter, + value: humanizeDuration( + Duration.fromObject(maintainabilityValue).toMillis(), + { largest: 1 }, + ), + }, + testCoverage: { + letter: testCoverageData.letter, + value: testCoverageData.measure.value.toFixed(), + }, + numberOfCodeSmells: 97, + numberOfDuplication: 49, + numberOfOtherIssues: 26, +}; + +export class MockCodeClimateApi implements CodeClimateApi { + fetchData(): Promise { + return new Promise(resolve => { + setTimeout(() => resolve(mockData), 800); + }); + } +} diff --git a/plugins/code-climate/src/api/production-api.ts b/plugins/code-climate/src/api/production-api.ts new file mode 100644 index 0000000000..665d7e9f63 --- /dev/null +++ b/plugins/code-climate/src/api/production-api.ts @@ -0,0 +1,160 @@ +/* + * Copyright 2020 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { + CodeClimateData, + CodeClimateRepoData, + CodeClimateMaintainabilityData, + CodeClimateTestCoverageData, + CodeClimateIssuesData, +} from './code-climate-data'; +import { CodeClimateApi } from './code-climate-api'; +import { DiscoveryApi } from '@backstage/core-plugin-api'; +import { Duration } from 'luxon'; +import humanizeDuration from 'humanize-duration'; + +const pageQuery = encodeURIComponent('page[size]'); +const statusFilter = encodeURIComponent('filter[status][$in][]'); +const categoriesFilter = encodeURIComponent('filter[categories][$in][]'); +const basicIssuesOptions = `${pageQuery}=1&${statusFilter}=open&${statusFilter}=confirmed`; +const codeSmellsQuery = `${basicIssuesOptions}&${categoriesFilter}=Complexity`; +const duplicationQuery = `${basicIssuesOptions}&${categoriesFilter}=Duplication`; +const otherIssuesQuery = `${basicIssuesOptions}&${categoriesFilter}=Bug%20Risk`; + +export class ProductionCodeClimateApi implements CodeClimateApi { + constructor(private readonly discoveryApi: DiscoveryApi) {} + + async fetchAllData(options: { + apiUrl: string; + repoID: string; + snapshotID: string; + testReportID: string; + }): Promise { + const { apiUrl, repoID, snapshotID, testReportID } = options; + + const [ + maintainabilityResponse, + testCoverageResponse, + codeSmellsResponse, + duplicationResponse, + otherIssuesResponse, + ] = await Promise.all([ + await fetch(`${apiUrl}/repos/${repoID}/snapshots/${snapshotID}`), + await fetch(`${apiUrl}/repos/${repoID}/test_reports/${testReportID}`), + await fetch( + `${apiUrl}/repos/${repoID}/snapshots/${snapshotID}/issues?${codeSmellsQuery}`, + ), + await fetch( + `${apiUrl}/repos/${repoID}/snapshots/${snapshotID}/issues?${duplicationQuery}`, + ), + await fetch( + `${apiUrl}/repos/${repoID}/snapshots/${snapshotID}/issues?${otherIssuesQuery}`, + ), + ]); + + if ( + !maintainabilityResponse.ok || + !testCoverageResponse.ok || + !codeSmellsResponse.ok || + !duplicationResponse.ok || + !otherIssuesResponse.ok + ) { + throw new Error('Failed fetching Code Climate info'); + } + + const maintainabilityData = ( + (await maintainabilityResponse.json()) as CodeClimateMaintainabilityData + ).data.attributes.ratings[0]; + const testCoverageData = ( + (await testCoverageResponse.json()) as CodeClimateTestCoverageData + ).data.attributes.rating; + const codeSmellsData = ( + (await codeSmellsResponse.json()) as CodeClimateIssuesData + ).meta.total_count; + const duplicationData = ( + (await duplicationResponse.json()) as CodeClimateIssuesData + ).meta.total_count; + const otherIssuesData = ( + (await otherIssuesResponse.json()) as CodeClimateIssuesData + ).meta.total_count; + + return [ + maintainabilityData, + testCoverageData, + codeSmellsData, + duplicationData, + otherIssuesData, + ]; + } + + async fetchData(repoID: string): Promise { + if (!repoID) { + throw new Error('No Repo id found'); + } + + const apiUrl = `${await this.discoveryApi.getBaseUrl( + 'proxy', + )}/codeclimate/api`; + + const repoResponse = await fetch(`${apiUrl}/repos/${repoID}`); + + if (!repoResponse.ok) { + throw new Error('Failed fetching Code Climate info'); + } + + const repoData = ((await repoResponse.json()) as CodeClimateRepoData).data; + const snapshotID = + repoData.relationships.latest_default_branch_snapshot.data.id; + const testReportID = + repoData.relationships.latest_default_branch_test_report.data.id; + + const [ + maintainabilityData, + testCoverageData, + codeSmellsData, + duplicationData, + otherIssuesData, + ] = await this.fetchAllData({ + apiUrl, + repoID, + snapshotID, + testReportID, + }); + + const maintainabilityValue: any = {}; + maintainabilityValue[ + maintainabilityData.measure.meta.implementation_time.unit + ] = maintainabilityData.measure.meta.implementation_time.value.toFixed(); + + return { + repoID, + maintainability: { + letter: maintainabilityData.letter, + value: humanizeDuration( + Duration.fromObject(maintainabilityValue).toMillis(), + { largest: 1 }, + ), + }, + testCoverage: { + letter: testCoverageData.letter, + value: testCoverageData.measure.value.toFixed(), + }, + numberOfCodeSmells: codeSmellsData, + numberOfDuplication: duplicationData, + numberOfOtherIssues: otherIssuesData, + }; + } +} diff --git a/plugins/code-climate/src/components/CodeClimateCard/CodeClimateCard.tsx b/plugins/code-climate/src/components/CodeClimateCard/CodeClimateCard.tsx new file mode 100644 index 0000000000..82af326690 --- /dev/null +++ b/plugins/code-climate/src/components/CodeClimateCard/CodeClimateCard.tsx @@ -0,0 +1,25 @@ +/* + * Copyright 2020 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import React from 'react'; +import { InfoCard } from '@backstage/core-components'; +import { CodeClimateCardContents } from '../CodeClimateCardContents'; + +export const CodeClimateCard = () => ( + + + +); diff --git a/plugins/code-climate/src/components/CodeClimateCard/index.ts b/plugins/code-climate/src/components/CodeClimateCard/index.ts new file mode 100644 index 0000000000..51eaaf71af --- /dev/null +++ b/plugins/code-climate/src/components/CodeClimateCard/index.ts @@ -0,0 +1,17 @@ +/* + * Copyright 2020 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export { CodeClimateCard } from './CodeClimateCard'; diff --git a/plugins/code-climate/src/components/CodeClimateCardContents/CodeClimateCardContents.tsx b/plugins/code-climate/src/components/CodeClimateCardContents/CodeClimateCardContents.tsx new file mode 100644 index 0000000000..c9dc1894fc --- /dev/null +++ b/plugins/code-climate/src/components/CodeClimateCardContents/CodeClimateCardContents.tsx @@ -0,0 +1,64 @@ +/* + * Copyright 2020 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import React from 'react'; +import useAsync from 'react-use/lib/useAsync'; +import { codeClimateApiRef } from '../../api'; +import { CodeClimateTable } from '../CodeClimateTable'; +import { CODECLIMATE_REPO_ID_ANNOTATION } from '../../plugin'; +import { useEntity } from '@backstage/plugin-catalog-react'; +import { + EmptyState, + ErrorPanel, + MissingAnnotationEmptyState, + Progress, +} from '@backstage/core-components'; +import { useApi } from '@backstage/core-plugin-api'; + +export const CodeClimateCardContents = () => { + const { entity } = useEntity(); + const codeClimateApi = useApi(codeClimateApiRef); + + const repoID = + entity?.metadata.annotations?.[CODECLIMATE_REPO_ID_ANNOTATION] ?? ''; + + const { loading, value, error } = useAsync( + () => codeClimateApi.fetchData(repoID), + [codeClimateApi, repoID], + ); + + if (loading) { + return ; + } else if (!repoID) { + return ( + + ); + } else if (error) { + return ; + } else if (!value) { + return ( + + ); + } + + return ; +}; diff --git a/plugins/code-climate/src/components/CodeClimateCardContents/index.ts b/plugins/code-climate/src/components/CodeClimateCardContents/index.ts new file mode 100644 index 0000000000..29f59be2a3 --- /dev/null +++ b/plugins/code-climate/src/components/CodeClimateCardContents/index.ts @@ -0,0 +1,17 @@ +/* + * Copyright 2020 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export { CodeClimateCardContents } from './CodeClimateCardContents'; diff --git a/plugins/code-climate/src/components/CodeClimateTable/CodeClimateTable.test.tsx b/plugins/code-climate/src/components/CodeClimateTable/CodeClimateTable.test.tsx new file mode 100644 index 0000000000..a2ced6f5a2 --- /dev/null +++ b/plugins/code-climate/src/components/CodeClimateTable/CodeClimateTable.test.tsx @@ -0,0 +1,37 @@ +/* + * Copyright 2020 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import React from 'react'; +import { render } from '@testing-library/react'; +import { CodeClimateTable } from './CodeClimateTable'; +import { mockData } from '../../api/mock'; +import { ThemeProvider } from '@material-ui/core'; +import { lightTheme } from '@backstage/theme'; + +describe('CodeClimateTable', () => { + it('should render values in a table', async () => { + const table = await render( + + + , + ); + expect(await table.findByText('3 months')).toBeInTheDocument(); + expect(await table.findByText('88%')).toBeInTheDocument(); + expect(await table.findByText('97')).toBeInTheDocument(); + expect(await table.findByText('49')).toBeInTheDocument(); + expect(await table.findByText('26')).toBeInTheDocument(); + }); +}); diff --git a/plugins/code-climate/src/components/CodeClimateTable/CodeClimateTable.tsx b/plugins/code-climate/src/components/CodeClimateTable/CodeClimateTable.tsx new file mode 100644 index 0000000000..e8e204ff9a --- /dev/null +++ b/plugins/code-climate/src/components/CodeClimateTable/CodeClimateTable.tsx @@ -0,0 +1,212 @@ +/* + * Copyright 2020 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import React from 'react'; +import { CodeClimateData } from '../../api'; +import { Link } from '@backstage/core-components'; +import { Box, makeStyles, Typography } from '@material-ui/core'; +import { BackstageTheme } from '@backstage/theme'; + +const letterStyle = { + color: 'white', + border: 0, + borderRadius: '3px', + fontSize: '40px', + padding: '5px 20px', +}; + +const fontSize = { + fontSize: '25px', +}; + +const letterColor = (letter: string) => { + if (letter === 'A') { + return '#45d298'; + } else if (letter === 'B') { + return '#a5d86e'; + } else if (letter === 'C') { + return '#f1ce0c'; + } else if (letter === 'D') { + return '#f29141'; + } else if (letter === 'F') { + return '#df5869'; + } + + return '#45d298'; +}; + +const useStyles = makeStyles< + BackstageTheme, + { + maintainabilityLetter: string; + testCoverageLetter: string; + } +>({ + spaceAround: { + display: 'flex', + justifyContent: 'space-around', + }, + spaceBetween: { + display: 'flex', + justifyContent: 'space-between', + alignItems: 'center', + }, + maintainabilityLetterColor: { + ...letterStyle, + backgroundColor: props => letterColor(props.maintainabilityLetter), + }, + testCoverageLetterColor: { + ...letterStyle, + backgroundColor: props => letterColor(props.testCoverageLetter), + }, + fontSize: { + ...fontSize, + }, + letterDetails: { + ...fontSize, + paddingLeft: '10px', + }, + paddingSides20: { + padding: '0px 20px', + }, +}); + +export const CodeClimateTable = ({ + codeClimateData, +}: { + codeClimateData: CodeClimateData; +}) => { + const { + repoID, + maintainability: { + letter: maintainabilityLetter, + value: maintainabilityValue, + }, + testCoverage: { letter: testCoverageLetter, value: testCoverageValue }, + numberOfCodeSmells, + numberOfDuplication, + numberOfOtherIssues, + } = codeClimateData; + + const classes = useStyles({ maintainabilityLetter, testCoverageLetter }); + + if (!codeClimateData) { + return null; + } + + return ( + <> +
+
+ + Maintainability + +
+ + {maintainabilityLetter} + + + + {maintainabilityValue} + + +
+
+
+ + Test Coverage + +
+ + {testCoverageLetter} + + + + {testCoverageValue}% + + +
+
+
+ +
+ + Code Smells: + + + + {numberOfCodeSmells} + + +
+ + + Duplication: + + + + {numberOfDuplication} + + + +
+ + Other Issues: + + + + {numberOfOtherIssues} + + +
+
+ + ); +}; diff --git a/plugins/code-climate/src/components/CodeClimateTable/index.ts b/plugins/code-climate/src/components/CodeClimateTable/index.ts new file mode 100644 index 0000000000..bdf79bb94b --- /dev/null +++ b/plugins/code-climate/src/components/CodeClimateTable/index.ts @@ -0,0 +1,17 @@ +/* + * Copyright 2020 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export { CodeClimateTable } from './CodeClimateTable'; diff --git a/plugins/code-climate/src/index.ts b/plugins/code-climate/src/index.ts new file mode 100644 index 0000000000..b6ef174b8f --- /dev/null +++ b/plugins/code-climate/src/index.ts @@ -0,0 +1,24 @@ +/* + * Copyright 2020 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * A Backstage plugin that integrates towards Code Climate + * + * @packageDocumentation + */ + +export * from './api'; +export { codeClimatePlugin, EntityCodeClimateCard } from './plugin'; diff --git a/plugins/code-climate/src/plugin.test.ts b/plugins/code-climate/src/plugin.test.ts new file mode 100644 index 0000000000..ea791f2c87 --- /dev/null +++ b/plugins/code-climate/src/plugin.test.ts @@ -0,0 +1,23 @@ +/* + * Copyright 2020 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { codeClimatePlugin } from './plugin'; + +describe('codeclimate', () => { + it('should export plugin', () => { + expect(codeClimatePlugin).toBeDefined(); + }); +}); diff --git a/plugins/code-climate/src/plugin.ts b/plugins/code-climate/src/plugin.ts new file mode 100644 index 0000000000..dcf86f1e19 --- /dev/null +++ b/plugins/code-climate/src/plugin.ts @@ -0,0 +1,58 @@ +/* + * Copyright 2020 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { ProductionCodeClimateApi, codeClimateApiRef } from './api'; +import { + createApiFactory, + createPlugin, + createRouteRef, + discoveryApiRef, + identityApiRef, + createComponentExtension, +} from '@backstage/core-plugin-api'; + +export const CODECLIMATE_REPO_ID_ANNOTATION = 'codeclimate.com/repo-id'; + +export const rootRouteRef = createRouteRef({ + id: 'code-climate', +}); + +export const codeClimatePlugin = createPlugin({ + id: 'code-climate', + apis: [ + createApiFactory({ + api: codeClimateApiRef, + deps: { + discoveryApi: discoveryApiRef, + identityApi: identityApiRef, + }, + factory: ({ discoveryApi }) => new ProductionCodeClimateApi(discoveryApi), + }), + ], + routes: { + root: rootRouteRef, + }, +}); + +export const EntityCodeClimateCard = codeClimatePlugin.provide( + createComponentExtension({ + name: 'EntityCodeClimateCard', + component: { + lazy: () => + import('./components/CodeClimateCard').then(m => m.CodeClimateCard), + }, + }), +); diff --git a/plugins/code-climate/src/setupTests.ts b/plugins/code-climate/src/setupTests.ts new file mode 100644 index 0000000000..43d9e09713 --- /dev/null +++ b/plugins/code-climate/src/setupTests.ts @@ -0,0 +1,20 @@ +/* + * Copyright 2020 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* eslint-disable import/no-extraneous-dependencies */ + +import '@testing-library/jest-dom'; +import 'cross-fetch/polyfill'; diff --git a/yarn.lock b/yarn.lock index bbd75035ce..a3adc4d7bf 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5785,6 +5785,11 @@ resolved "https://registry.npmjs.org/@types/humanize-duration/-/humanize-duration-3.25.1.tgz#b6140d5fc00ff3917b3f521784abef4bc0387ccc" integrity sha512-WZU/4bb+lvzyDmZzjJtp++9mfKy6B3lH6gGISgkcz6SU8hMILKRM0vi08TxIsb0dQB4Gzo68MWLmctu6xqUi9g== +"@types/humanize-duration@^3.27.1": + version "3.27.1" + resolved "https://registry.npmjs.org/@types/humanize-duration/-/humanize-duration-3.27.1.tgz#f14740d1f585a0a8e3f46359b62fda8b0eaa31e7" + integrity sha512-K3e+NZlpCKd6Bd/EIdqjFJRFHbrq5TzPPLwREk5Iv/YoIjQrs6ljdAUCo+Lb2xFlGNOjGSE0dqsVD19cZL137w== + "@types/inquirer@^7.3.3": version "7.3.3" resolved "https://registry.npmjs.org/@types/inquirer/-/inquirer-7.3.3.tgz#92e6676efb67fa6925c69a2ee638f67a822952ac" @@ -5954,6 +5959,11 @@ resolved "https://registry.npmjs.org/@types/luxon/-/luxon-2.0.9.tgz#782a0edfa6d699191292c13168bd496cd66b87c6" integrity sha512-ZuzIc7aN+i2ZDMWIiSmMdubR9EMMSTdEzF6R+FckP4p6xdnOYKqknTo/k+xXQvciSXlNGIwA4OPU5X7JIFzYdA== +"@types/luxon@^2.0.9": + version "2.0.9" + resolved "https://registry.npmjs.org/@types/luxon/-/luxon-2.0.9.tgz#782a0edfa6d699191292c13168bd496cd66b87c6" + integrity sha512-ZuzIc7aN+i2ZDMWIiSmMdubR9EMMSTdEzF6R+FckP4p6xdnOYKqknTo/k+xXQvciSXlNGIwA4OPU5X7JIFzYdA== + "@types/mdast@^3.0.0", "@types/mdast@^3.0.3": version "3.0.3" resolved "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.3.tgz#2d7d671b1cd1ea3deb306ea75036c2a0407d2deb" @@ -13948,7 +13958,7 @@ human-signals@^2.1.0: resolved "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== -humanize-duration@^3.25.1, humanize-duration@^3.26.0, humanize-duration@^3.27.0: +humanize-duration@^3.25.1, humanize-duration@^3.26.0, humanize-duration@^3.27.0, humanize-duration@^3.27.1: version "3.27.1" resolved "https://registry.npmjs.org/humanize-duration/-/humanize-duration-3.27.1.tgz#2cd4ea4b03bd92184aee6d90d77a8f3d7628df69" integrity sha512-jCVkMl+EaM80rrMrAPl96SGG4NRac53UyI1o/yAzebDntEY6K6/Fj2HOjdPg8omTqIe5Y0wPBai2q5xXrIbarA== From f6cd2b51c778b6fab6d32efa79dcca1ace1d8cde Mon Sep 17 00:00:00 2001 From: Zach Hammer Date: Tue, 22 Feb 2022 13:43:53 -0500 Subject: [PATCH 349/383] Add SeatGeek to ADOPTERS.md Signed-off-by: Zach Hammer --- ADOPTERS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/ADOPTERS.md b/ADOPTERS.md index 86d747c9df..1d2eb79ae8 100644 --- a/ADOPTERS.md +++ b/ADOPTERS.md @@ -98,3 +98,4 @@ _If you're using Backstage in your organization, please try to add your company | [Fortum](https://www.fortum.com/) | [@brunoamaroalmeida](https://github.com/brunoamaroalmeida), [@dhaval-vithalani](https://github.com/dhaval-vithalani), [@sunilkumarmohanty](https://github.com/sunilkumarmohanty) | A central portal containing information about our applications, services, processes and other software assets to be used by Fortum software engineering community. | | [Procore](https://www.procore.com/jobs/engineering) | [@shayon](https://github.com/Shayon), [@jamesdabbs-procore](https://github.com/jamesdabbs-procore) | Developer portal - centralized software catalog and templates to enable self serve and reduce cognitive load. | | [Bradesco](https://banco.bradesco/html/classic/sobre/index.shtm) | [@danilosoarescardoso](https://github.com/danilosoarescardoso) | Centralized developer portal with software catalog, software templates, techdocs and some plugins from community and by our own. | +| [SeatGeek](https://seatgeek.com) | [@zhammer](https://github.com/zhammer) | Software catalog and documentation platform | From 7d12e4cf32e828c01b1fae098de75ebc25b0244b Mon Sep 17 00:00:00 2001 From: Magnus Persson Date: Mon, 21 Feb 2022 21:37:12 +0100 Subject: [PATCH 350/383] backend-common: add Redis backed cache store Signed-off-by: Magnus Persson --- .changeset/thick-guests-greet.md | 5 ++ docs/overview/architecture-overview.md | 19 ++++-- packages/backend-common/config.d.ts | 8 +++ packages/backend-common/package.json | 1 + .../src/cache/CacheManager.test.ts | 31 +++++++++ .../backend-common/src/cache/CacheManager.ts | 14 +++++ yarn.lock | 63 ++++++++++++++++++- 7 files changed, 135 insertions(+), 6 deletions(-) create mode 100644 .changeset/thick-guests-greet.md diff --git a/.changeset/thick-guests-greet.md b/.changeset/thick-guests-greet.md new file mode 100644 index 0000000000..6efff5fc87 --- /dev/null +++ b/.changeset/thick-guests-greet.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-common': minor +--- + +feat(backend-common): add Redis backed cache store diff --git a/docs/overview/architecture-overview.md b/docs/overview/architecture-overview.md index 5d27cc4184..358dc53852 100644 --- a/docs/overview/architecture-overview.md +++ b/docs/overview/architecture-overview.md @@ -281,11 +281,11 @@ stores as a means of improving performance or reliability. Similar to how databases are supported, plugins receive logically separated cache connections, which are powered by [Keyv](https://github.com/lukechilds/keyv) under the hood. -At this time of writing, Backstage can be configured to use one of two cache -stores: memory, which is mainly used for local testing, and memcache, which is a -cache store better suited for production deployment. The right cache store for -your Backstage instance will depend on your own run-time constraints and those -required of the plugins you're running. +At this time of writing, Backstage can be configured to use one of three cache +stores: memory, which is mainly used for local testing, memcache or Redis, +which are cache stores better suited for production deployment. The right cache +store for your Backstage instance will depend on your own run-time constraints +and those required of the plugins you're running. ### Use memory for cache @@ -304,6 +304,15 @@ backend: connection: user:pass@cache.example.com:11211 ``` +### Use Redis for cache + +```yaml +backend: + cache: + store: redis + connection: user:pass@cache.example.com:6379 +``` + Contributions supporting other cache stores are welcome! ## Containerization diff --git a/packages/backend-common/config.d.ts b/packages/backend-common/config.d.ts index 16ca1698f6..d658aaeb00 100644 --- a/packages/backend-common/config.d.ts +++ b/packages/backend-common/config.d.ts @@ -134,6 +134,14 @@ export interface Config { | { store: 'memory'; } + | { + store: 'redis'; + /** + * A redis connection string in the form `user:pass@host:port`. + * @secret + */ + connection: string; + } | { store: 'memcache'; /** diff --git a/packages/backend-common/package.json b/packages/backend-common/package.json index 229134dffd..57016228f8 100644 --- a/packages/backend-common/package.json +++ b/packages/backend-common/package.json @@ -62,6 +62,7 @@ "jose": "^1.27.1", "keyv": "^4.0.3", "keyv-memcache": "^1.2.5", + "@keyv/redis": "^2.2.3", "knex": "^1.0.2", "lodash": "^4.17.21", "logform": "^2.3.2", diff --git a/packages/backend-common/src/cache/CacheManager.test.ts b/packages/backend-common/src/cache/CacheManager.test.ts index ce5b6f5999..660aa82bb0 100644 --- a/packages/backend-common/src/cache/CacheManager.test.ts +++ b/packages/backend-common/src/cache/CacheManager.test.ts @@ -18,6 +18,8 @@ import { ConfigReader } from '@backstage/config'; import Keyv from 'keyv'; /* @ts-expect-error */ import KeyvMemcache from 'keyv-memcache'; +/* @ts-expect-error */ +import KeyvRedis from '@keyv/redis'; import { DefaultCacheClient } from './CacheClient'; import { CacheManager } from './CacheManager'; import { NoStore } from './NoStore'; @@ -26,6 +28,8 @@ jest.createMockFromModule('keyv'); jest.mock('keyv'); jest.createMockFromModule('keyv-memcache'); jest.mock('keyv-memcache'); +jest.createMockFromModule('@keyv/redis'); +jest.mock('@keyv/redis'); jest.mock('./CacheClient', () => { return { DefaultCacheClient: jest.fn(), @@ -190,6 +194,33 @@ describe('CacheManager', () => { }); }); + it('returns a Redis client when configured', () => { + const redisHostAndPort = '127.0.0.1:6379'; + const expectedHost = `redis://${redisHostAndPort}`; + const manager = CacheManager.fromConfig( + new ConfigReader({ + backend: { + cache: { + store: 'redis', + connection: redisHostAndPort, + }, + }, + }), + ); + const expectedTtl = 3600; + manager.forPlugin('test').getClient({ defaultTtl: expectedTtl }); + + const cache = Keyv as unknown as jest.Mock; + const mockCacheCalls = cache.mock.calls.splice(-1); + expect(mockCacheCalls[0][0]).toMatchObject({ + ttl: expectedTtl, + }); + expect(mockCacheCalls[0][0].store).toBeInstanceOf(KeyvRedis); + const redis = KeyvRedis as jest.Mock; + const mockRedisCalls = redis.mock.calls.splice(-1); + expect(mockRedisCalls[0][0]).toEqual(expectedHost); + }); + describe('connection errors', () => { it('uses provided logger', () => { // Set up and inject mock logger. diff --git a/packages/backend-common/src/cache/CacheManager.ts b/packages/backend-common/src/cache/CacheManager.ts index 66e9849e77..d63ac6d940 100644 --- a/packages/backend-common/src/cache/CacheManager.ts +++ b/packages/backend-common/src/cache/CacheManager.ts @@ -18,6 +18,8 @@ import { Config } from '@backstage/config'; import Keyv from 'keyv'; // @ts-expect-error import KeyvMemcache from 'keyv-memcache'; +// @ts-expect-error +import KeyvRedis from '@keyv/redis'; import { Logger } from 'winston'; import { getRootLogger } from '../logging'; import { DefaultCacheClient, CacheClient } from './CacheClient'; @@ -37,6 +39,7 @@ export class CacheManager { * that return Keyv instances appropriate to the store. */ private readonly storeFactories = { + redis: this.getRedisClient, memcache: this.getMemcacheClient, memory: this.getMemoryClient, none: this.getNoneClient, @@ -123,6 +126,17 @@ export class CacheManager { return this.storeFactories[this.store].call(this, pluginId, ttl); } + private getRedisClient( + pluginId: string, + defaultTtl: number | undefined, + ): Keyv { + return new Keyv({ + namespace: pluginId, + ttl: defaultTtl, + store: new KeyvRedis(`redis://${this.connection}`), + }); + } + private getMemcacheClient( pluginId: string, defaultTtl: number | undefined, diff --git a/yarn.lock b/yarn.lock index bbd75035ce..0354fd8f11 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3075,6 +3075,13 @@ resolved "https://registry.npmjs.org/@juggle/resize-observer/-/resize-observer-3.3.1.tgz#b50a781709c81e10701004214340f25475a171a0" integrity sha512-zMM9Ds+SawiUkakS7y94Ymqx+S0ORzpG3frZirN3l+UlXUmSUR7hF4wxCVqW+ei94JzV5kt0uXBcoOEAuiydrw== +"@keyv/redis@^2.2.3": + version "2.2.3" + resolved "https://registry.npmjs.org/@keyv/redis/-/redis-2.2.3.tgz#af5b1ea32d847a63ce24012844af7323b3c421a7" + integrity sha512-d9Maf1LzT6Ti5hWsVzaWFriFmXrscK1eUl/etNquQgAJxH7Drecbn+uNZXMc6xb78Ju9szy0fD9RAp/G9RzAdg== + dependencies: + ioredis "^4.28.5" + "@kubernetes/client-node@^0.16.0": version "0.16.1" resolved "https://registry.npmjs.org/@kubernetes/client-node/-/client-node-0.16.1.tgz#c78ef667579777c1a532983922807e228dbc9b90" @@ -8986,6 +8993,11 @@ clsx@^1.0.2, clsx@^1.0.4: resolved "https://registry.npmjs.org/clsx/-/clsx-1.1.1.tgz#98b3134f9abbdf23b2663491ace13c5c03a73188" integrity sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA== +cluster-key-slot@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.0.tgz#30474b2a981fb12172695833052bc0d01336d10d" + integrity sha512-2Nii8p3RwAPiFwsnZvukotvow2rIHM+yQ6ZcBXGHdniadkYGZYiGmkHJIbZPIV9nfv7m/U1IPMVVcAhoWFeklw== + cmd-shim@^4.0.1, cmd-shim@^4.1.0: version "4.1.0" resolved "https://registry.npmjs.org/cmd-shim/-/cmd-shim-4.1.0.tgz#b3a904a6743e9fede4148c6f3800bf2a08135bdd" @@ -10617,6 +10629,11 @@ delegates@^1.0.0: resolved "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= +denque@^1.1.0: + version "1.5.1" + resolved "https://registry.npmjs.org/denque/-/denque-1.5.1.tgz#07f670e29c9a78f8faecb2566a1e2c11929c5cbf" + integrity sha512-XwE+iZ4D6ZUB7mfYRMb5wByE8L74HCn30FBN7sWnXksWc1LO1bPDl67pBR9o/kC4z/xSNAwkMYcGgqDV3BE3Hw== + denque@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/denque/-/denque-2.0.1.tgz#bcef4c1b80dc32efe97515744f21a4229ab8934a" @@ -14294,6 +14311,23 @@ invert-kv@^1.0.0: resolved "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= +ioredis@^4.28.5: + version "4.28.5" + resolved "https://registry.npmjs.org/ioredis/-/ioredis-4.28.5.tgz#5c149e6a8d76a7f8fa8a504ffc85b7d5b6797f9f" + integrity sha512-3GYo0GJtLqgNXj4YhrisLaNNvWSNwSS2wS4OELGfGxH8I69+XfNdnmV1AyN+ZqMh0i7eX+SWjrwFKDBDgfBC1A== + dependencies: + cluster-key-slot "^1.1.0" + debug "^4.3.1" + denque "^1.1.0" + lodash.defaults "^4.2.0" + lodash.flatten "^4.4.0" + lodash.isarguments "^3.1.0" + p-map "^2.1.0" + redis-commands "1.7.0" + redis-errors "^1.2.0" + redis-parser "^3.0.0" + standard-as-callback "^2.1.0" + ip-regex@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" @@ -16605,6 +16639,11 @@ lodash.includes@^4.3.0: resolved "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz#60bb98a87cb923c68ca1e51325483314849f553f" integrity sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8= +lodash.isarguments@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" + integrity sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo= + lodash.isboolean@^3.0.3: version "3.0.3" resolved "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz#6c2e171db2a257cd96802fd43b01b20d5f5870f6" @@ -19010,7 +19049,7 @@ p-map-series@^2.1.0: resolved "https://registry.npmjs.org/p-map-series/-/p-map-series-2.1.0.tgz#7560d4c452d9da0c07e692fdbfe6e2c81a2a91f2" integrity sha512-RpYIIK1zXSNEOdwxcfe7FdvGcs7+y5n8rifMhMNWvaxRNMPINJHF5GDeuVxWqnfrcHPSCnp7Oo5yNXHId9Av2Q== -p-map@^2.0.0: +p-map@^2.0.0, p-map@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== @@ -21286,6 +21325,23 @@ redent@^3.0.0: indent-string "^4.0.0" strip-indent "^3.0.0" +redis-commands@1.7.0: + version "1.7.0" + resolved "https://registry.npmjs.org/redis-commands/-/redis-commands-1.7.0.tgz#15a6fea2d58281e27b1cd1acfb4b293e278c3a89" + integrity sha512-nJWqw3bTFy21hX/CPKHth6sfhZbdiHP6bTawSgQBlKOVRG7EZkfHbbHwQJnrE4vsQf0CMNE+3gJ4Fmm16vdVlQ== + +redis-errors@^1.0.0, redis-errors@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz#eb62d2adb15e4eaf4610c04afe1529384250abad" + integrity sha1-62LSrbFeTq9GEMBK/hUpOEJQq60= + +redis-parser@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/redis-parser/-/redis-parser-3.0.0.tgz#b66d828cdcafe6b4b8a428a7def4c6bcac31c8b4" + integrity sha1-tm2CjNyv5rS4pCin3vTGvKwxyLQ= + dependencies: + redis-errors "^1.0.0" + reduce-css-calc@^1.3.0: version "1.3.0" resolved "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz#747c914e049614a4c9cfbba629871ad1d2927716" @@ -22924,6 +22980,11 @@ stacktrace-js@^2.0.2: stack-generator "^2.0.5" stacktrace-gps "^3.0.4" +standard-as-callback@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/standard-as-callback/-/standard-as-callback-2.1.0.tgz#8953fc05359868a77b5b9739a665c5977bb7df45" + integrity sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A== + start-server-and-test@^1.10.11: version "1.14.0" resolved "https://registry.npmjs.org/start-server-and-test/-/start-server-and-test-1.14.0.tgz#c57f04f73eac15dd51733b551d775b40837fdde3" From 35f0434d3b72202ab47a95ca3801bf25b160a451 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 23 Feb 2022 04:09:43 +0000 Subject: [PATCH 351/383] chore(deps): bump swr from 1.2.1 to 1.2.2 Bumps [swr](https://github.com/vercel/swr) from 1.2.1 to 1.2.2. - [Release notes](https://github.com/vercel/swr/releases) - [Commits](https://github.com/vercel/swr/compare/1.2.1...1.2.2) --- updated-dependencies: - dependency-name: swr dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index b4317b6d56..661d738fa1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -23489,9 +23489,9 @@ swap-case@^2.0.2: tslib "^2.0.3" swr@^1.1.2: - version "1.2.1" - resolved "https://registry.npmjs.org/swr/-/swr-1.2.1.tgz#c21a4fe2139cb1c4630450589b5b5add947a9d41" - integrity sha512-1cuWXqJqXcFwbgONGCY4PHZ8v05009JdHsC3CIC6u7d00kgbMswNr1sHnnhseOBxtzVqcCNpOHEgVDciRer45w== + version "1.2.2" + resolved "https://registry.npmjs.org/swr/-/swr-1.2.2.tgz#6cae09928d30593a7980d80f85823e57468fac5d" + integrity sha512-ky0BskS/V47GpW8d6RU7CPsr6J8cr7mQD6+do5eky3bM0IyJaoi3vO8UhvrzJaObuTlGhPl2szodeB2dUd76Xw== symbol-observable@1.2.0, symbol-observable@^1.0.4, symbol-observable@^1.1.0, symbol-observable@^1.2.0: version "1.2.0" From 0feac2ad0e61bf5a4bf25ecfb64ac3652b5b56dc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 23 Feb 2022 04:17:17 +0000 Subject: [PATCH 352/383] chore(deps): bump camelcase-keys from 7.0.1 to 7.0.2 Bumps [camelcase-keys](https://github.com/sindresorhus/camelcase-keys) from 7.0.1 to 7.0.2. - [Release notes](https://github.com/sindresorhus/camelcase-keys/releases) - [Commits](https://github.com/sindresorhus/camelcase-keys/compare/v7.0.1...v7.0.2) --- updated-dependencies: - dependency-name: camelcase-keys dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- yarn.lock | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/yarn.lock b/yarn.lock index b4317b6d56..852d30abe0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8524,11 +8524,11 @@ camelcase-keys@^6.2.2: quick-lru "^4.0.1" camelcase-keys@^7.0.1: - version "7.0.1" - resolved "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-7.0.1.tgz#5a57e6dfb3f6c7929dad15599ee4476a7e9a3b2d" - integrity sha512-P331lEls98pW8JLyodNWfzuz91BEDVA4VpW2/SwXnyv2K495tq1N777xzDbFgnEigfA7UIY0xa6PwR/H9jijjA== + version "7.0.2" + resolved "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-7.0.2.tgz#d048d8c69448745bb0de6fc4c1c52a30dfbe7252" + integrity sha512-Rjs1H+A9R+Ig+4E/9oyB66UC5Mj9Xq3N//vcLf2WzgdTi/3gUu3Z9KoqmlrEG4VuuLK8wJHofxzdQXz/knhiYg== dependencies: - camelcase "^6.2.0" + camelcase "^6.3.0" map-obj "^4.1.0" quick-lru "^5.1.1" type-fest "^1.2.1" @@ -8548,10 +8548,10 @@ camelcase@^5.0.0, camelcase@^5.3.1: resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -camelcase@^6.0.0, camelcase@^6.2.0: - version "6.2.0" - resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" - integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== +camelcase@^6.0.0, camelcase@^6.2.0, camelcase@^6.3.0: + version "6.3.0" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== caniuse-api@^3.0.0: version "3.0.0" From 4bd17cb0b5932aad918a3f45eb937e6ee9a77518 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 23 Feb 2022 04:17:53 +0000 Subject: [PATCH 353/383] chore(deps): bump apollo-server-express from 3.6.1 to 3.6.3 Bumps [apollo-server-express](https://github.com/apollographql/apollo-server/tree/HEAD/packages/apollo-server-express) from 3.6.1 to 3.6.3. - [Release notes](https://github.com/apollographql/apollo-server/releases) - [Changelog](https://github.com/apollographql/apollo-server/blob/main/CHANGELOG.md) - [Commits](https://github.com/apollographql/apollo-server/commits/apollo-server-express@3.6.3/packages/apollo-server-express) --- updated-dependencies: - dependency-name: apollo-server-express dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- yarn.lock | 97 +++++++++++++++++++++++-------------------------------- 1 file changed, 40 insertions(+), 57 deletions(-) diff --git a/yarn.lock b/yarn.lock index b4317b6d56..25ab1815bb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2450,13 +2450,6 @@ camel-case "4.1.2" tslib "~2.2.0" -"@graphql-tools/utils@^8.0.0": - version "8.6.1" - resolved "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.6.1.tgz#52c7eb108f2ca2fd01bdba8eef85077ead1bf882" - integrity sha512-uxcfHCocp4ENoIiovPxUWZEHOnbXqj3ekWc0rm7fUhW93a1xheARNHcNKhwMTR+UKXVJbTFQdGI1Rl5XdyvDBg== - dependencies: - tslib "~2.3.0" - "@graphql-tools/utils@^8.1.1", "@graphql-tools/utils@^8.3.0", "@graphql-tools/utils@^8.5.2", "@graphql-tools/utils@^8.6.0": version "8.6.0" resolved "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.6.0.tgz#f424256a1f3b87d1dcf6f9f675739b2d3627be33" @@ -5657,7 +5650,7 @@ resolved "https://registry.npmjs.org/@types/expect/-/expect-1.20.4.tgz#8288e51737bf7e3ab5d7c77bfa695883745264e5" integrity sha512-Q5Vn3yjTDyCMV50TB6VRIbQNxSE4OmZR86VSbGaNpfUolm0iePBB4KdEEHmxoY5sT2+2DIvXW0rvMDP2nHZ4Mg== -"@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.18", "@types/express-serve-static-core@^4.17.5": +"@types/express-serve-static-core@*", "@types/express-serve-static-core@4.17.28", "@types/express-serve-static-core@^4.17.18", "@types/express-serve-static-core@^4.17.5": version "4.17.28" resolved "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz#c47def9f34ec81dc6328d0b1b5303d1ec98d86b8" integrity sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig== @@ -5666,15 +5659,6 @@ "@types/qs" "*" "@types/range-parser" "*" -"@types/express-serve-static-core@4.17.27": - version "4.17.27" - resolved "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.27.tgz#7a776191e47295d2a05962ecbb3a4ce97e38b401" - integrity sha512-e/sVallzUTPdyOTiqi8O8pMdBBphscvI6E4JYaKlja4Lm+zh7UFSSdW5VMkRbhDtmrONqOUHOXRguPsDckzxNA== - dependencies: - "@types/node" "*" - "@types/qs" "*" - "@types/range-parser" "*" - "@types/express-session@^1.17.2": version "1.17.4" resolved "https://registry.npmjs.org/@types/express-session/-/express-session-1.17.4.tgz#97a30a35e853a61bdd26e727453b8ed314d6166b" @@ -7239,13 +7223,13 @@ anymatch@^3.0.3, anymatch@~3.1.2: normalize-path "^3.0.0" picomatch "^2.0.4" -apollo-datasource@^3.3.0: - version "3.3.0" - resolved "https://registry.npmjs.org/apollo-datasource/-/apollo-datasource-3.3.0.tgz#ee84a802c45818e6a21a5f2d427f94851a4f9ebe" - integrity sha512-It8POTZTOCAnedRj2izEVeySN06LIfojigZjWaOY7voLe0DIgtvhql91xr27fuIWsR/Ew9twO3dLBjjvy34J4Q== +apollo-datasource@^3.3.1: + version "3.3.1" + resolved "https://registry.npmjs.org/apollo-datasource/-/apollo-datasource-3.3.1.tgz#a1168dd68371930de3ed4245ad12fa8600efe2cc" + integrity sha512-Z3a8rEUXVPIZ1p8xrFL8bcNhWmhOmovgDArvwIwmJOBnh093ZpRfO+ESJEDAN4KswmyzCLDAwjsW4zQOONdRUw== dependencies: apollo-server-caching "^3.3.0" - apollo-server-env "^4.2.0" + apollo-server-env "^4.2.1" apollo-reporting-protobuf@^3.3.0: version "3.3.0" @@ -7261,24 +7245,23 @@ apollo-server-caching@^3.3.0: dependencies: lru-cache "^6.0.0" -apollo-server-core@^3.6.1: - version "3.6.1" - resolved "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-3.6.1.tgz#e835198a2eda5bcb61d2a1174d44ecb0ac414d15" - integrity sha512-V2Us5x7d+w8dVdyFLxEygMgaQ3KZ6Z59HpaQBNHQ7C5wVZhjUXIsgbehBtfzQbMpyMx0z5/8Z8eIrC4zNoGJDw== +apollo-server-core@^3.6.1, apollo-server-core@^3.6.3: + version "3.6.3" + resolved "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-3.6.3.tgz#6b12ffa1af8bc8799930f72360090834915033d1" + integrity sha512-TFJmAlI6vPp1MHOSXqYkE6leAyMekWv/D/3ma11uETkcd3EPjERGmxtTXPJElMVEkOK9BEElYKthCrH7bjYLuw== dependencies: "@apollographql/apollo-tools" "^0.5.1" "@apollographql/graphql-playground-html" "1.6.29" "@graphql-tools/mock" "^8.1.2" "@graphql-tools/schema" "^8.0.0" - "@graphql-tools/utils" "^8.0.0" "@josephg/resolvable" "^1.0.0" - apollo-datasource "^3.3.0" + apollo-datasource "^3.3.1" apollo-reporting-protobuf "^3.3.0" apollo-server-caching "^3.3.0" - apollo-server-env "^4.2.0" - apollo-server-errors "^3.3.0" - apollo-server-plugin-base "^3.5.0" - apollo-server-types "^3.5.0" + apollo-server-env "^4.2.1" + apollo-server-errors "^3.3.1" + apollo-server-plugin-base "^3.5.1" + apollo-server-types "^3.5.1" async-retry "^1.2.1" fast-json-stable-stringify "^2.1.0" graphql-tag "^2.11.0" @@ -7288,50 +7271,50 @@ apollo-server-core@^3.6.1: sha.js "^2.4.11" uuid "^8.0.0" -apollo-server-env@^4.2.0: - version "4.2.0" - resolved "https://registry.npmjs.org/apollo-server-env/-/apollo-server-env-4.2.0.tgz#d7cb08a81cee3025cd47b08be80b359d61d85913" - integrity sha512-4xJ+PCoWsFLj4rU6iXrIhqD7nI42goi4Iqrhsof9680ljSzkzd+PCwZsja3mHOFXKUQQUvJ7StVSgwaiRu45+A== +apollo-server-env@^4.2.1: + version "4.2.1" + resolved "https://registry.npmjs.org/apollo-server-env/-/apollo-server-env-4.2.1.tgz#ea5b1944accdbdba311f179e4dfaeca482c20185" + integrity sha512-vm/7c7ld+zFMxibzqZ7SSa5tBENc4B0uye9LTfjJwGoQFY5xsUPH5FpO5j0bMUDZ8YYNbrF9SNtzc5Cngcr90g== dependencies: - node-fetch "^2.6.1" + node-fetch "^2.6.7" -apollo-server-errors@^3.3.0: - version "3.3.0" - resolved "https://registry.npmjs.org/apollo-server-errors/-/apollo-server-errors-3.3.0.tgz#ac8ceb1400064312f983d8d70195693fbcf2be3c" - integrity sha512-9/MNlPZBbEjcCdJcUSbKbVEBT9xZS8GSpX7T/TyzcxHSbsXJszSDSipQNGC+PRKTKAUnv61IONScVyLKEZ5XEQ== +apollo-server-errors@^3.3.1: + version "3.3.1" + resolved "https://registry.npmjs.org/apollo-server-errors/-/apollo-server-errors-3.3.1.tgz#ba5c00cdaa33d4cbd09779f8cb6f47475d1cd655" + integrity sha512-xnZJ5QWs6FixHICXHxUfm+ZWqqxrNuPlQ+kj5m6RtEgIpekOPssH/SD9gf2B4HuWV0QozorrygwZnux8POvyPA== apollo-server-express@^3.0.0, apollo-server-express@^3.6.1: - version "3.6.1" - resolved "https://registry.npmjs.org/apollo-server-express/-/apollo-server-express-3.6.1.tgz#b8bda303e05c551ac76c9c0b26bc651ca1466912" - integrity sha512-29imWvRPn5GsQq02Akt0+jejpWzpOIZfUmgoiFm4YB7somvhDNw15Pu7fv4sISK8ehNIDF68IpLd2cpY8sCkYQ== + version "3.6.3" + resolved "https://registry.npmjs.org/apollo-server-express/-/apollo-server-express-3.6.3.tgz#5daf58bf0bdf0107ded7cd52c7e6ce6cd32c8b44" + integrity sha512-3CjahZ+n+1T7pHH1qW1B6Ns0BzwOMeupAp2u0+M8ruOmE/e7VKn0OSOQQckZ8Z2AcWxWeno9K89fIv3PoSYgYA== dependencies: "@types/accepts" "^1.3.5" "@types/body-parser" "1.19.2" "@types/cors" "2.8.12" "@types/express" "4.17.13" - "@types/express-serve-static-core" "4.17.27" + "@types/express-serve-static-core" "4.17.28" accepts "^1.3.5" - apollo-server-core "^3.6.1" - apollo-server-types "^3.5.0" + apollo-server-core "^3.6.3" + apollo-server-types "^3.5.1" body-parser "^1.19.0" cors "^2.8.5" parseurl "^1.3.3" -apollo-server-plugin-base@^3.5.0: - version "3.5.0" - resolved "https://registry.npmjs.org/apollo-server-plugin-base/-/apollo-server-plugin-base-3.5.0.tgz#f3cb4f677152b60113f06f8d23b6234ecff847b4" - integrity sha512-dpi+W6wexT4H3cjIhxC9SJABkR8TCfxycoHK+U4jxQXUdg50da+KnMgoWlQbF1tuXtUs4gnJtij1RjuGtKwBhw== +apollo-server-plugin-base@^3.5.1: + version "3.5.1" + resolved "https://registry.npmjs.org/apollo-server-plugin-base/-/apollo-server-plugin-base-3.5.1.tgz#73fc1591522e36e32eff3d033975333e30cf1a7c" + integrity sha512-wgDHz3lLrCqpecDky3z6AOQ0vik0qs0Cya/Ti6n3ESYXJ9MdK3jE/QunATIrOYYJaa+NKl9V7YwU+/bojNfFuQ== dependencies: - apollo-server-types "^3.5.0" + apollo-server-types "^3.5.1" -apollo-server-types@^3.5.0: - version "3.5.0" - resolved "https://registry.npmjs.org/apollo-server-types/-/apollo-server-types-3.5.0.tgz#82f912d7765152fe1fde86cea8a076e9a0831a9d" - integrity sha512-4JaZNu1kjrzIbppgc78hhIe2DFe+XONf8grprcjTOe0v8dIsuV0tFUnl+awTvTpHU1sdjRCKwnj382BebiL+qw== +apollo-server-types@^3.5.1: + version "3.5.1" + resolved "https://registry.npmjs.org/apollo-server-types/-/apollo-server-types-3.5.1.tgz#73fc8aa82b3175fde3906fa3d6786ee4d3e8c982" + integrity sha512-zG7xLl4mmHuZMAYOfjWKHY/IC/GgIkJ3HnYuR7FRrnPpRA9Yt5Kf1M1rjm1Esuqzpb/dt8pM7cX40QaIQObCYQ== dependencies: apollo-reporting-protobuf "^3.3.0" apollo-server-caching "^3.3.0" - apollo-server-env "^4.2.0" + apollo-server-env "^4.2.1" apollo-server@^3.0.0: version "3.6.1" From 11592cdc82bf6f573130239f9527154a437c1cc6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 23 Feb 2022 04:18:57 +0000 Subject: [PATCH 354/383] chore(deps): bump @svgr/plugin-jsx from 6.2.0 to 6.2.1 Bumps [@svgr/plugin-jsx](https://github.com/gregberge/svgr) from 6.2.0 to 6.2.1. - [Release notes](https://github.com/gregberge/svgr/releases) - [Changelog](https://github.com/gregberge/svgr/blob/main/CHANGELOG.md) - [Commits](https://github.com/gregberge/svgr/compare/v6.2.0...v6.2.1) --- updated-dependencies: - dependency-name: "@svgr/plugin-jsx" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- yarn.lock | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/yarn.lock b/yarn.lock index b4317b6d56..5667da32ff 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5069,7 +5069,7 @@ camelcase "^6.2.0" cosmiconfig "^7.0.1" -"@svgr/hast-util-to-babel-ast@^6.0.0", "@svgr/hast-util-to-babel-ast@^6.2.1": +"@svgr/hast-util-to-babel-ast@^6.2.1": version "6.2.1" resolved "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-6.2.1.tgz#ae065567b74cbe745afae617053adf9a764bea25" integrity sha512-pt7MMkQFDlWJVy9ULJ1h+hZBDGFfSCwlBNW1HkLnVi7jUhyEXUaGYWi1x6bM2IXuAR9l265khBT4Av4lPmaNLQ== @@ -5077,17 +5077,7 @@ "@babel/types" "^7.15.6" entities "^3.0.1" -"@svgr/plugin-jsx@6.2.x": - version "6.2.0" - resolved "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-6.2.0.tgz#5e41a75b12b34cb66509e63e535606161770ff42" - integrity sha512-QJDEe7K5Hkd4Eewu4pcjiOKTCtjB47Ol6lDLXVhf+jEewi+EKJAaAmM+bNixfW6LSNEg8RwOYQN3GZcprqKfHw== - dependencies: - "@babel/core" "^7.15.5" - "@svgr/babel-preset" "^6.2.0" - "@svgr/hast-util-to-babel-ast" "^6.0.0" - svg-parser "^2.0.2" - -"@svgr/plugin-jsx@^6.2.1": +"@svgr/plugin-jsx@6.2.x", "@svgr/plugin-jsx@^6.2.1": version "6.2.1" resolved "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-6.2.1.tgz#5668f1d2aa18c2f1bb7a1fc9f682d3f9aed263bd" integrity sha512-u+MpjTsLaKo6r3pHeeSVsh9hmGRag2L7VzApWIaS8imNguqoUwDq/u6U/NDmYs/KAsrmtBjOEaAAPbwNGXXp1g== From b3f235ea18097ba6db48c8e376a7285bf5b32027 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 23 Feb 2022 04:20:21 +0000 Subject: [PATCH 355/383] chore(deps): bump kafkajs from 1.16.0-beta.32 to 1.16.0 Bumps [kafkajs](https://github.com/tulios/kafkajs) from 1.16.0-beta.32 to 1.16.0. - [Release notes](https://github.com/tulios/kafkajs/releases) - [Changelog](https://github.com/tulios/kafkajs/blob/master/CHANGELOG.md) - [Commits](https://github.com/tulios/kafkajs/commits/v1.16.0) --- updated-dependencies: - dependency-name: kafkajs dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index b4317b6d56..189de03cc9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -16094,9 +16094,9 @@ jwt-decode@*, jwt-decode@^3.1.0: integrity sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A== kafkajs@^1.16.0-beta.6: - version "1.16.0-beta.32" - resolved "https://registry.npmjs.org/kafkajs/-/kafkajs-1.16.0-beta.32.tgz#c39fe37367e200eeb95c9ae1412d79db4cf55eca" - integrity sha512-fXnpfvQI7b0xJNRMMiDX05ezfG1/MtDJPdWhQ1e6SptDB/xe8JaGJwd/Fzd2viwgwYzhmHSg681PNOkX4Dz2DQ== + version "1.16.0" + resolved "https://registry.npmjs.org/kafkajs/-/kafkajs-1.16.0.tgz#bfcc3ae2b69265ca8435b53a01ee9e8787b9fee5" + integrity sha512-+Rcfu2hyQ/jv5skqRY8xA7Ra+mmRkDAzCaLDYbkGtgsNKpzxPWiLbk8ub0dgr4EbWrN1Zb4BCXHUkD6+zYfdWg== keyv-memcache@^1.2.5: version "1.2.9" From d64b8d3678b47d471c30b158156b77454d18bc47 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 23 Feb 2022 04:23:16 +0000 Subject: [PATCH 356/383] chore(deps): bump minimatch from 3.0.4 to 5.0.0 Bumps [minimatch](https://github.com/isaacs/minimatch) from 3.0.4 to 5.0.0. - [Release notes](https://github.com/isaacs/minimatch/releases) - [Commits](https://github.com/isaacs/minimatch/compare/v3.0.4...v5.0.0) --- updated-dependencies: - dependency-name: minimatch dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .changeset/dependabot-be06070.md | 7 +++++++ packages/backend-common/package.json | 2 +- packages/cli/package.json | 2 +- plugins/auth-backend/package.json | 2 +- yarn.lock | 16 +++++++++++++++- 5 files changed, 25 insertions(+), 4 deletions(-) create mode 100644 .changeset/dependabot-be06070.md diff --git a/.changeset/dependabot-be06070.md b/.changeset/dependabot-be06070.md new file mode 100644 index 0000000000..df34b699a2 --- /dev/null +++ b/.changeset/dependabot-be06070.md @@ -0,0 +1,7 @@ +--- +'@backstage/backend-common': patch +'@backstage/cli': patch +'@backstage/plugin-auth-backend': patch +--- + +chore(deps): bump `minimatch` from 3.0.4 to 5.0.0 diff --git a/packages/backend-common/package.json b/packages/backend-common/package.json index 229134dffd..b529fa74fc 100644 --- a/packages/backend-common/package.json +++ b/packages/backend-common/package.json @@ -66,7 +66,7 @@ "lodash": "^4.17.21", "logform": "^2.3.2", "luxon": "^2.0.2", - "minimatch": "^3.0.4", + "minimatch": "^5.0.0", "minimist": "^1.2.5", "morgan": "^1.10.0", "node-abort-controller": "^3.0.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index 8531bf0750..4ae496f27e 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -88,7 +88,7 @@ "json-schema": "^0.4.0", "jest-transform-yaml": "^1.0.0", "lodash": "^4.17.21", - "minimatch": "3.0.4", + "minimatch": "5.0.0", "mini-css-extract-plugin": "^2.4.2", "npm-packlist": "^3.0.0", "node-libs-browser": "^2.2.1", diff --git a/plugins/auth-backend/package.json b/plugins/auth-backend/package.json index 3b2946d89a..fdf6452dbe 100644 --- a/plugins/auth-backend/package.json +++ b/plugins/auth-backend/package.json @@ -56,7 +56,7 @@ "knex": "^1.0.2", "lodash": "^4.17.21", "luxon": "^2.0.2", - "minimatch": "^3.0.3", + "minimatch": "^5.0.0", "morgan": "^1.10.0", "node-fetch": "^2.6.7", "node-cache": "^5.1.2", diff --git a/yarn.lock b/yarn.lock index b4317b6d56..b432267699 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8176,6 +8176,13 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + braces@^2.3.1: version "2.3.2" resolved "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" @@ -17760,13 +17767,20 @@ minimalistic-crypto-utils@^1.0.1: resolved "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= -minimatch@3.0.4, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4: +minimatch@3.0.4, minimatch@^3.0.2, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== dependencies: brace-expansion "^1.1.7" +minimatch@5.0.0, minimatch@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-5.0.0.tgz#281d8402aaaeed18a9e8406ad99c46a19206c6ef" + integrity sha512-EU+GCVjXD00yOUf1TwAHVP7v3fBD3A8RkkPYsWWKGWesxM/572sL53wJQnHxquHlRhYUV36wHkqrN8cdikKc2g== + dependencies: + brace-expansion "^2.0.1" + minimist-options@4.1.0, minimist-options@^4.0.2: version "4.1.0" resolved "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" From c08ed7c47d6eb0ee2820132adcfef968c1423a25 Mon Sep 17 00:00:00 2001 From: roylisto Date: Wed, 23 Feb 2022 11:45:21 +0700 Subject: [PATCH 357/383] Add sync button to Group page Signed-off-by: roylisto --- .../Group/GroupProfile/GroupProfileCard.tsx | 36 +++++++++++++++++-- 1 file changed, 33 insertions(+), 3 deletions(-) diff --git a/plugins/org/src/components/Cards/Group/GroupProfile/GroupProfileCard.tsx b/plugins/org/src/components/Cards/Group/GroupProfile/GroupProfileCard.tsx index 8d5a553860..8291dfdc1d 100644 --- a/plugins/org/src/components/Cards/Group/GroupProfile/GroupProfileCard.tsx +++ b/plugins/org/src/components/Cards/Group/GroupProfile/GroupProfileCard.tsx @@ -18,8 +18,11 @@ import { GroupEntity, RELATION_CHILD_OF, RELATION_PARENT_OF, + ANNOTATION_LOCATION, + stringifyEntityRef, } from '@backstage/catalog-model'; import { + catalogApiRef, EntityRefLinks, getEntityRelations, useEntity, @@ -39,14 +42,16 @@ import AccountTreeIcon from '@material-ui/icons/AccountTree'; import EmailIcon from '@material-ui/icons/Email'; import GroupIcon from '@material-ui/icons/Group'; import EditIcon from '@material-ui/icons/Edit'; +import CachedIcon from '@material-ui/icons/Cached'; import Alert from '@material-ui/lab/Alert'; -import React from 'react'; +import React, { useCallback } from 'react'; import { Avatar, InfoCard, InfoCardVariants, Link, } from '@backstage/core-components'; +import { alertApiRef, useApi } from '@backstage/core-plugin-api'; const CardTitle = ({ title }: { title: string }) => ( @@ -60,13 +65,21 @@ export const GroupProfileCard = ({ }: { variant?: InfoCardVariants; }) => { + const catalogApi = useApi(catalogApiRef); + const alertApi = useApi(alertApiRef); const { entity: group } = useEntity(); + + const refreshEntity = useCallback(async () => { + await catalogApi.refreshEntity(stringifyEntityRef(group)); + alertApi.post({ message: 'Refresh scheduled', severity: 'info' }); + }, [catalogApi, alertApi, group]); + if (!group) { return Group not found; } const { - metadata: { name, description }, + metadata: { name, description, annotations }, spec: { profile }, } = group; @@ -77,6 +90,10 @@ export const GroupProfileCard = ({ kind: 'group', }); + const entityLocation = annotations?.[ANNOTATION_LOCATION]; + const allowRefresh = + entityLocation?.startsWith('url:') || entityLocation?.startsWith('file:'); + const entityMetadataEditUrl = getEntityMetadataEditUrl(group); const displayName = profile?.displayName ?? name; @@ -101,7 +118,20 @@ export const GroupProfileCard = ({ title={} subheader={description} variant={variant} - action={infoCardAction} + action={ + <> + {allowRefresh && ( + + + + )} + {infoCardAction} + + } > From cd8c6970edf71e4c0b26a39f3201d2dbaea73217 Mon Sep 17 00:00:00 2001 From: roylisto Date: Wed, 23 Feb 2022 11:50:55 +0700 Subject: [PATCH 358/383] Update changeset Signed-off-by: roylisto --- .changeset/rude-tools-vanish.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/rude-tools-vanish.md diff --git a/.changeset/rude-tools-vanish.md b/.changeset/rude-tools-vanish.md new file mode 100644 index 0000000000..72849ff4ab --- /dev/null +++ b/.changeset/rude-tools-vanish.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-org': patch +--- + +Add entity sync button to Group page From 4cca190797f5be681e19e9b8f0eef65300ecb712 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Fri, 18 Feb 2022 13:56:52 +0100 Subject: [PATCH 359/383] add EntityRelation.targetRef MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- packages/catalog-model/src/entity/Entity.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/packages/catalog-model/src/entity/Entity.ts b/packages/catalog-model/src/entity/Entity.ts index 7199334e51..63ddb6aa53 100644 --- a/packages/catalog-model/src/entity/Entity.ts +++ b/packages/catalog-model/src/entity/Entity.ts @@ -197,8 +197,15 @@ export type EntityRelation = { /** * The target entity of this relation. + * + * @deprecated use targetRef instead */ target: EntityName; + + /** + * The entity ref of the target of this relation. + */ + targetRef: string; }; /** From d0582b2d0fd821ba95b80035621a2a5fbff0fdd3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Fri, 18 Feb 2022 13:57:58 +0100 Subject: [PATCH 360/383] stitch targetRef and backwards compat inject it on read MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- packages/catalog-model/api-report.md | 1 + .../DefaultApiExplorerPage.test.tsx | 3 +- .../ApisCards/ConsumedApisCard.test.tsx | 3 +- .../components/ApisCards/HasApisCard.test.tsx | 3 +- .../ApisCards/ProvidedApisCard.test.tsx | 3 +- .../ConsumingComponentsCard.test.tsx | 3 +- .../ProvidingComponentsCard.test.tsx | 3 +- .../lib/catalog/CatalogIdentityClient.test.ts | 6 +- .../src/lib/catalog/CatalogIdentityClient.ts | 4 +- .../auth-backend/src/lib/catalog/helpers.ts | 6 +- plugins/catalog-backend/src/catalog/types.ts | 2 +- .../permissions/rules/isEntityOwner.test.ts | 2 + .../src/permissions/rules/isEntityOwner.ts | 9 +-- .../service/DefaultEntitiesCatalog.test.ts | 56 +++++++++++++++++++ .../src/service/DefaultEntitiesCatalog.ts | 35 ++++++++++-- .../src/stitching/Stitcher.test.ts | 3 + .../catalog-backend/src/stitching/Stitcher.ts | 3 +- .../src/stitching/buildEntitySearch.test.ts | 24 ++++++-- .../src/stitching/buildEntitySearch.ts | 8 +-- plugins/catalog-graph/dev/index.tsx | 5 ++ .../CatalogGraphPage.test.tsx | 2 + .../EntityRelationsGraph.test.tsx | 9 +++ .../useEntityRelationGraph.test.ts | 8 +++ .../useEntityRelationGraph.ts | 16 +++--- .../useEntityRelationNodesAndEdges.test.ts | 8 +++ .../useEntityRelationNodesAndEdges.ts | 27 ++++----- plugins/catalog-react/api-report.md | 7 +-- .../EntityOwnerPicker.test.tsx | 8 ++- .../EntityRefLink/EntityRefLink.tsx | 24 ++++---- .../components/EntityTable/presets.test.tsx | 20 ++++--- .../src/components/EntityTable/presets.tsx | 3 +- .../components/EntityKindIcon.tsx | 45 ++++++++++++--- .../components/OverviewPage.tsx | 12 ++-- .../UserListPicker/UserListPicker.test.tsx | 2 + .../src/hooks/useEntityListProvider.test.tsx | 1 + .../src/hooks/useEntityOwnership.test.tsx | 3 + .../src/hooks/useRelatedEntities.ts | 26 ++++----- .../src/utils/getEntityRelations.test.ts | 16 ++++-- .../src/utils/getEntityRelations.ts | 8 ++- .../catalog-react/src/utils/isOwnerOf.test.ts | 3 + .../components/AboutCard/AboutCard.test.tsx | 1 + .../AboutCard/AboutContent.test.tsx | 13 +++++ .../CatalogPage/DefaultCatalogPage.test.tsx | 7 ++- .../DependencyOfComponentsCard.test.tsx | 3 +- .../DependsOnComponentsCard.test.tsx | 3 +- .../DependsOnResourcesCard.test.tsx | 3 +- .../HasComponentsCard.test.tsx | 3 +- .../HasResourcesCard.test.tsx | 3 +- .../HasSubcomponentsCard.test.tsx | 3 +- .../HasSystemsCard/HasSystemsCard.test.tsx | 3 +- .../SystemDiagramCard.test.tsx | 4 +- plugins/fossa/dev/index.tsx | 3 +- .../GroupProfile/GroupProfileCard.stories.tsx | 1 + .../MembersList/MembersListCard.stories.tsx | 1 + .../MembersList/MembersListCard.test.tsx | 1 + .../OwnershipCard/OwnershipCard.stories.tsx | 3 +- .../OwnershipCard/OwnershipCard.test.tsx | 18 ++++-- .../UserProfileCard.stories.tsx | 1 + .../UserProfileCard/UserProfileCard.test.tsx | 5 +- .../entityMetadataFactRetriever.test.ts | 1 + .../entityOwnershipFactRetriever.test.ts | 1 + .../techdocsFactRetriever.test.ts | 1 + .../src/search/DefaultTechDocsCollator.ts | 16 +++++- .../src/home/components/DocsTable.test.tsx | 3 + 64 files changed, 388 insertions(+), 143 deletions(-) diff --git a/packages/catalog-model/api-report.md b/packages/catalog-model/api-report.md index 0afe87e709..f27cfa5417 100644 --- a/packages/catalog-model/api-report.md +++ b/packages/catalog-model/api-report.md @@ -231,6 +231,7 @@ export type EntityRefContext = { export type EntityRelation = { type: string; target: EntityName; + targetRef: string; }; // @public diff --git a/plugins/api-docs/src/components/ApiExplorerPage/DefaultApiExplorerPage.test.tsx b/plugins/api-docs/src/components/ApiExplorerPage/DefaultApiExplorerPage.test.tsx index 18222eea3a..16b335b0a7 100644 --- a/plugins/api-docs/src/components/ApiExplorerPage/DefaultApiExplorerPage.test.tsx +++ b/plugins/api-docs/src/components/ApiExplorerPage/DefaultApiExplorerPage.test.tsx @@ -66,7 +66,8 @@ describe('DefaultApiExplorerPage', () => { relations: [ { type: RELATION_MEMBER_OF, - target: { namespace: 'default', kind: 'Group', name: 'tools' }, + targetRef: 'group:default/tools', + target: { namespace: 'default', kind: 'group', name: 'tools' }, }, ], }; diff --git a/plugins/api-docs/src/components/ApisCards/ConsumedApisCard.test.tsx b/plugins/api-docs/src/components/ApisCards/ConsumedApisCard.test.tsx index d04a36770d..f84f66cee8 100644 --- a/plugins/api-docs/src/components/ApisCards/ConsumedApisCard.test.tsx +++ b/plugins/api-docs/src/components/ApisCards/ConsumedApisCard.test.tsx @@ -95,10 +95,11 @@ describe('', () => { relations: [ { target: { - kind: 'API', + kind: 'api', namespace: 'my-namespace', name: 'target-name', }, + targetRef: 'api:my-namespace/target-name', type: RELATION_CONSUMES_API, }, ], diff --git a/plugins/api-docs/src/components/ApisCards/HasApisCard.test.tsx b/plugins/api-docs/src/components/ApisCards/HasApisCard.test.tsx index 050eeb8707..daa909c7f8 100644 --- a/plugins/api-docs/src/components/ApisCards/HasApisCard.test.tsx +++ b/plugins/api-docs/src/components/ApisCards/HasApisCard.test.tsx @@ -95,10 +95,11 @@ describe('', () => { relations: [ { target: { - kind: 'API', + kind: 'api', namespace: 'my-namespace', name: 'target-name', }, + targetRef: 'api:my-namespace/target-name', type: RELATION_HAS_PART, }, ], diff --git a/plugins/api-docs/src/components/ApisCards/ProvidedApisCard.test.tsx b/plugins/api-docs/src/components/ApisCards/ProvidedApisCard.test.tsx index 34043c519b..852386140c 100644 --- a/plugins/api-docs/src/components/ApisCards/ProvidedApisCard.test.tsx +++ b/plugins/api-docs/src/components/ApisCards/ProvidedApisCard.test.tsx @@ -95,10 +95,11 @@ describe('', () => { relations: [ { target: { - kind: 'API', + kind: 'api', namespace: 'my-namespace', name: 'target-name', }, + targetRef: 'api:my-namespace/target-name', type: RELATION_PROVIDES_API, }, ], diff --git a/plugins/api-docs/src/components/ComponentsCards/ConsumingComponentsCard.test.tsx b/plugins/api-docs/src/components/ComponentsCards/ConsumingComponentsCard.test.tsx index c81b4750bc..a62b2119c7 100644 --- a/plugins/api-docs/src/components/ComponentsCards/ConsumingComponentsCard.test.tsx +++ b/plugins/api-docs/src/components/ComponentsCards/ConsumingComponentsCard.test.tsx @@ -98,10 +98,11 @@ describe('', () => { relations: [ { target: { - kind: 'Component', + kind: 'component', namespace: 'my-namespace', name: 'target-name', }, + targetRef: 'component:my-namespace/target-name', type: RELATION_API_CONSUMED_BY, }, ], diff --git a/plugins/api-docs/src/components/ComponentsCards/ProvidingComponentsCard.test.tsx b/plugins/api-docs/src/components/ComponentsCards/ProvidingComponentsCard.test.tsx index 84e45dc058..1a0aae12c7 100644 --- a/plugins/api-docs/src/components/ComponentsCards/ProvidingComponentsCard.test.tsx +++ b/plugins/api-docs/src/components/ComponentsCards/ProvidingComponentsCard.test.tsx @@ -98,10 +98,11 @@ describe('', () => { relations: [ { target: { - kind: 'Component', + kind: 'component', namespace: 'my-namespace', name: 'target-name', }, + targetRef: 'component:my-namespace/target-name', type: RELATION_API_PROVIDED_BY, }, ], diff --git a/plugins/auth-backend/src/lib/catalog/CatalogIdentityClient.test.ts b/plugins/auth-backend/src/lib/catalog/CatalogIdentityClient.test.ts index 4388c2f82f..d2cee7bd89 100644 --- a/plugins/auth-backend/src/lib/catalog/CatalogIdentityClient.test.ts +++ b/plugins/auth-backend/src/lib/catalog/CatalogIdentityClient.test.ts @@ -79,8 +79,9 @@ describe('CatalogIdentityClient', () => { relations: [ { type: RELATION_MEMBER_OF, + targetRef: 'group:default/team-a', target: { - kind: 'Group', + kind: 'group', namespace: 'default', name: 'team-a', }, @@ -100,8 +101,9 @@ describe('CatalogIdentityClient', () => { relations: [ { type: RELATION_MEMBER_OF, + targetRef: 'group:reality/screen-actors-guild', target: { - kind: 'Group', + kind: 'group', namespace: 'reality', name: 'screen-actors-guild', }, diff --git a/plugins/auth-backend/src/lib/catalog/CatalogIdentityClient.ts b/plugins/auth-backend/src/lib/catalog/CatalogIdentityClient.ts index aecf018975..d948af2e05 100644 --- a/plugins/auth-backend/src/lib/catalog/CatalogIdentityClient.ts +++ b/plugins/auth-backend/src/lib/catalog/CatalogIdentityClient.ts @@ -120,11 +120,11 @@ export class CatalogIdentityClient { e => e!.relations ?.filter(r => r.type === RELATION_MEMBER_OF) - .map(r => r.target) ?? [], + .map(r => r.targetRef) ?? [], ); const newEntityRefs = [ - ...new Set(resolvedEntityRefs.concat(memberOf).map(stringifyEntityRef)), + ...new Set(resolvedEntityRefs.map(stringifyEntityRef).concat(memberOf)), ]; logger?.debug(`Found catalog membership: ${newEntityRefs.join()}`); diff --git a/plugins/auth-backend/src/lib/catalog/helpers.ts b/plugins/auth-backend/src/lib/catalog/helpers.ts index 61dc428b3f..db9b38e2a6 100644 --- a/plugins/auth-backend/src/lib/catalog/helpers.ts +++ b/plugins/auth-backend/src/lib/catalog/helpers.ts @@ -27,11 +27,9 @@ export function getEntityClaims(entity: UserEntity): TokenParams['claims'] { const membershipRefs = entity.relations ?.filter( - r => - r.type === RELATION_MEMBER_OF && - r.target.kind.toLocaleLowerCase('en-US') === 'group', + r => r.type === RELATION_MEMBER_OF && r.targetRef.startsWith('group:'), ) - .map(r => stringifyEntityRef(r.target)) ?? []; + .map(r => r.targetRef) ?? []; return { sub: userRef, diff --git a/plugins/catalog-backend/src/catalog/types.ts b/plugins/catalog-backend/src/catalog/types.ts index abf9e4d114..b575b96c6c 100644 --- a/plugins/catalog-backend/src/catalog/types.ts +++ b/plugins/catalog-backend/src/catalog/types.ts @@ -40,7 +40,7 @@ export type EntityPagination = { }; /** - * Matches rows in the entities_search table. + * Matches rows in the search table. * @public */ export type EntitiesSearchFilter = { diff --git a/plugins/catalog-backend/src/permissions/rules/isEntityOwner.test.ts b/plugins/catalog-backend/src/permissions/rules/isEntityOwner.test.ts index 282d2558ef..8e20655393 100644 --- a/plugins/catalog-backend/src/permissions/rules/isEntityOwner.test.ts +++ b/plugins/catalog-backend/src/permissions/rules/isEntityOwner.test.ts @@ -29,6 +29,7 @@ describe('isEntityOwner', () => { relations: [ { type: 'ownedBy', + targetRef: 'user:default/spiderman', target: { kind: 'user', namespace: 'default', @@ -52,6 +53,7 @@ describe('isEntityOwner', () => { relations: [ { type: 'ownedBy', + targetRef: 'user:default/green-goblin', target: { kind: 'user', namespace: 'default', diff --git a/plugins/catalog-backend/src/permissions/rules/isEntityOwner.ts b/plugins/catalog-backend/src/permissions/rules/isEntityOwner.ts index 3176b31b87..a6dda13c29 100644 --- a/plugins/catalog-backend/src/permissions/rules/isEntityOwner.ts +++ b/plugins/catalog-backend/src/permissions/rules/isEntityOwner.ts @@ -14,16 +14,13 @@ * limitations under the License. */ -import { - Entity, - RELATION_OWNED_BY, - stringifyEntityRef, -} from '@backstage/catalog-model'; +import { Entity, RELATION_OWNED_BY } from '@backstage/catalog-model'; import { createCatalogPermissionRule } from './util'; /** * A catalog {@link @backstage/plugin-permission-node#PermissionRule} which * filters for entities with a specified owner. + * * @public */ export const isEntityOwner = createCatalogPermissionRule({ @@ -36,7 +33,7 @@ export const isEntityOwner = createCatalogPermissionRule({ return resource.relations .filter(relation => relation.type === RELATION_OWNED_BY) - .some(relation => claims.includes(stringifyEntityRef(relation.target))); + .some(relation => claims.includes(relation.targetRef)); }, toQuery: (claims: string[]) => ({ key: 'relations.ownedBy', diff --git a/plugins/catalog-backend/src/service/DefaultEntitiesCatalog.test.ts b/plugins/catalog-backend/src/service/DefaultEntitiesCatalog.test.ts index 7094cfd1c2..43e208197f 100644 --- a/plugins/catalog-backend/src/service/DefaultEntitiesCatalog.test.ts +++ b/plugins/catalog-backend/src/service/DefaultEntitiesCatalog.test.ts @@ -469,6 +469,62 @@ describe('DefaultEntitiesCatalog', () => { expect(entities.length).toBe(0); }, ); + + it.each(databases.eachSupportedId())( + 'should return both target and targetRef for entities', + async databaseId => { + const { knex } = await createDatabase(databaseId); + await addEntity( + knex, + { + apiVersion: 'a', + kind: 'k', + metadata: { name: 'one' }, + spec: {}, + relations: [{ type: 'r', targetRef: 'x:y/z' } as any], + }, + [], + ); + await addEntity( + knex, + { + apiVersion: 'a', + kind: 'k', + metadata: { name: 'two' }, + spec: {}, + relations: [ + { + type: 'r', + target: { kind: 'x', namespace: 'y', name: 'z' }, + } as any, + ], + }, + [], + ); + const catalog = new DefaultEntitiesCatalog(knex); + + const { entities } = await catalog.entities(); + + expect( + entities.find(e => e.metadata.name === 'one')!.relations, + ).toEqual([ + { + type: 'r', + targetRef: 'x:y/z', + target: { kind: 'x', namespace: 'y', name: 'z' }, + }, + ]); + expect( + entities.find(e => e.metadata.name === 'two')!.relations, + ).toEqual([ + { + type: 'r', + targetRef: 'x:y/z', + target: { kind: 'x', namespace: 'y', name: 'z' }, + }, + ]); + }, + ); }); describe('removeEntityByUid', () => { diff --git a/plugins/catalog-backend/src/service/DefaultEntitiesCatalog.ts b/plugins/catalog-backend/src/service/DefaultEntitiesCatalog.ts index 1ac70bda30..3b20282d78 100644 --- a/plugins/catalog-backend/src/service/DefaultEntitiesCatalog.ts +++ b/plugins/catalog-backend/src/service/DefaultEntitiesCatalog.ts @@ -14,7 +14,11 @@ * limitations under the License. */ -import { Entity, stringifyEntityRef } from '@backstage/catalog-model'; +import { + Entity, + parseEntityRef, + stringifyEntityRef, +} from '@backstage/catalog-model'; import { InputError, NotFoundError } from '@backstage/errors'; import { Knex } from 'knex'; import lodash from 'lodash'; @@ -194,11 +198,32 @@ export class DefaultEntitiesCatalog implements EntitiesCatalog { }; } - const dbResponse = rows.map(e => JSON.parse(e.final_entity!)); + let entities: Entity[] = rows.map(e => JSON.parse(e.final_entity!)); - const entities = dbResponse.map(e => - request?.fields ? request.fields(e) : e, - ); + if (request?.fields) { + entities = entities.map(e => request.fields!(e)); + } + + // TODO(freben): This is added as a compatibility guarantee, until we can be + // sure that all adopters have re-stitched their entities so that the new + // targetRef field is present on them, and that they have stopped consuming + // the now-removed old field + for (const entity of entities) { + if (entity.relations) { + for (const relation of entity.relations) { + if (!relation.targetRef) { + // This is the case where an old-form entity, not yet stitched with + // the updated code, was in the database + relation.targetRef = stringifyEntityRef(relation.target); + } else if (!relation.target) { + // This is the case where a new-form entity, stitched with the + // updated code, was in the database but we still want to produce + // the old data shape as well for compatibility reasons + relation.target = parseEntityRef(relation.targetRef); + } + } + } + } return { entities, diff --git a/plugins/catalog-backend/src/stitching/Stitcher.test.ts b/plugins/catalog-backend/src/stitching/Stitcher.test.ts index be57ff7083..9df4bedd60 100644 --- a/plugins/catalog-backend/src/stitching/Stitcher.test.ts +++ b/plugins/catalog-backend/src/stitching/Stitcher.test.ts @@ -93,6 +93,7 @@ describe('Stitcher', () => { relations: [ { type: 'looksAt', + targetRef: 'k:ns/other', target: { kind: 'k', namespace: 'ns', @@ -159,6 +160,7 @@ describe('Stitcher', () => { relations: expect.arrayContaining([ { type: 'looksAt', + targetRef: 'k:ns/other', target: { kind: 'k', namespace: 'ns', @@ -167,6 +169,7 @@ describe('Stitcher', () => { }, { type: 'looksAt', + targetRef: 'k:ns/third', target: { kind: 'k', namespace: 'ns', diff --git a/plugins/catalog-backend/src/stitching/Stitcher.ts b/plugins/catalog-backend/src/stitching/Stitcher.ts index 9ec028ed35..018e223e46 100644 --- a/plugins/catalog-backend/src/stitching/Stitcher.ts +++ b/plugins/catalog-backend/src/stitching/Stitcher.ts @@ -186,6 +186,7 @@ export class Stitcher { .map(row => ({ type: row.relationType!, target: parseEntityRef(row.relationTarget!), + targetRef: row.relationTarget!, })); if (statusItems.length) { entity.status = { @@ -210,7 +211,7 @@ export class Stitcher { } // This may throw if the entity is invalid, so we call it before - // the final_entites write, even though we may end up not needing + // the final_entities write, even though we may end up not needing // to write the search index. const searchEntries = buildEntitySearch(entityId, entity); diff --git a/plugins/catalog-backend/src/stitching/buildEntitySearch.test.ts b/plugins/catalog-backend/src/stitching/buildEntitySearch.test.ts index 173538f18f..52e3392676 100644 --- a/plugins/catalog-backend/src/stitching/buildEntitySearch.test.ts +++ b/plugins/catalog-backend/src/stitching/buildEntitySearch.test.ts @@ -141,8 +141,16 @@ describe('buildEntitySearch', () => { it('adds relations', () => { const input: Entity = { relations: [ - { type: 't1', target: { kind: 'k', namespace: 'ns', name: 'a' } }, - { type: 't2', target: { kind: 'k', namespace: 'ns', name: 'b' } }, + { + type: 't1', + targetRef: 'k:ns/a', + target: { kind: 'k', namespace: 'ns', name: 'a' }, + }, + { + type: 't2', + targetRef: 'k:ns/b', + target: { kind: 'k', namespace: 'ns', name: 'b' }, + }, ], apiVersion: 'a', kind: 'b', @@ -182,8 +190,16 @@ describe('buildEntitySearch', () => { expect(() => buildEntitySearch('eid', { relations: [ - { type: 'dup', target: { kind: 'k', namespace: 'ns', name: 'a' } }, - { type: 'DUP', target: { kind: 'k', namespace: 'ns', name: 'b' } }, + { + type: 'dup', + targetRef: 'k:ns/a', + target: { kind: 'k', namespace: 'ns', name: 'a' }, + }, + { + type: 'DUP', + targetRef: 'k:ns/b', + target: { kind: 'k', namespace: 'ns', name: 'b' }, + }, ], apiVersion: 'a', kind: 'b', diff --git a/plugins/catalog-backend/src/stitching/buildEntitySearch.ts b/plugins/catalog-backend/src/stitching/buildEntitySearch.ts index d0506e8998..cd8a3735de 100644 --- a/plugins/catalog-backend/src/stitching/buildEntitySearch.ts +++ b/plugins/catalog-backend/src/stitching/buildEntitySearch.ts @@ -14,11 +14,7 @@ * limitations under the License. */ -import { - Entity, - DEFAULT_NAMESPACE, - stringifyEntityRef, -} from '@backstage/catalog-model'; +import { Entity, DEFAULT_NAMESPACE } from '@backstage/catalog-model'; import { InputError } from '@backstage/errors'; import { DbSearchRow } from '../database/tables'; @@ -181,7 +177,7 @@ export function buildEntitySearch( for (const relation of entity.relations ?? []) { raw.push({ key: `relations.${relation.type}`, - value: stringifyEntityRef(relation.target), + value: relation.targetRef, }); } diff --git a/plugins/catalog-graph/dev/index.tsx b/plugins/catalog-graph/dev/index.tsx index 3ff9285a81..0fceb87e02 100644 --- a/plugins/catalog-graph/dev/index.tsx +++ b/plugins/catalog-graph/dev/index.tsx @@ -118,6 +118,11 @@ const entities = ( }, relations: relations.map(([type, k, n]) => ({ target: { kind: k, name: n, namespace: DEFAULT_NAMESPACE }, + targetRef: stringifyEntityRef({ + kind: k, + namespace: DEFAULT_NAMESPACE, + name: n, + }), type, })), }; diff --git a/plugins/catalog-graph/src/components/CatalogGraphPage/CatalogGraphPage.test.tsx b/plugins/catalog-graph/src/components/CatalogGraphPage/CatalogGraphPage.test.tsx index f98aca0081..2f686f8f62 100644 --- a/plugins/catalog-graph/src/components/CatalogGraphPage/CatalogGraphPage.test.tsx +++ b/plugins/catalog-graph/src/components/CatalogGraphPage/CatalogGraphPage.test.tsx @@ -58,6 +58,7 @@ describe('', () => { relations: [ { type: RELATION_PART_OF, + targetRef: 'b:d/e', target: { kind: 'b', namespace: 'd', @@ -76,6 +77,7 @@ describe('', () => { relations: [ { type: RELATION_HAS_PART, + targetRef: 'b:d/c', target: { kind: 'b', namespace: 'd', diff --git a/plugins/catalog-graph/src/components/EntityRelationsGraph/EntityRelationsGraph.test.tsx b/plugins/catalog-graph/src/components/EntityRelationsGraph/EntityRelationsGraph.test.tsx index f16d06f809..36dc816444 100644 --- a/plugins/catalog-graph/src/components/EntityRelationsGraph/EntityRelationsGraph.test.tsx +++ b/plugins/catalog-graph/src/components/EntityRelationsGraph/EntityRelationsGraph.test.tsx @@ -54,6 +54,7 @@ describe('', () => { name: 'a1', namespace: 'd', }, + targetRef: 'k:d/a1', type: RELATION_OWNER_OF, }, { @@ -62,6 +63,7 @@ describe('', () => { name: 'c1', namespace: 'd', }, + targetRef: 'b:d/c1', type: RELATION_HAS_PART, }, ], @@ -80,6 +82,7 @@ describe('', () => { name: 'c', namespace: 'd', }, + targetRef: 'b:d/c', type: RELATION_OWNED_BY, }, { @@ -88,6 +91,7 @@ describe('', () => { name: 'c1', namespace: 'd', }, + targetRef: 'b:d/c1', type: RELATION_OWNED_BY, }, ], @@ -106,6 +110,7 @@ describe('', () => { name: 'c', namespace: 'd', }, + targetRef: 'b:d/c', type: RELATION_PART_OF, }, { @@ -114,6 +119,7 @@ describe('', () => { name: 'a1', namespace: 'd', }, + targetRef: 'k:d/a1', type: RELATION_OWNER_OF, }, { @@ -122,6 +128,7 @@ describe('', () => { name: 'c2', namespace: 'd', }, + targetRef: 'b:d/c2', type: RELATION_HAS_PART, }, ], @@ -140,6 +147,7 @@ describe('', () => { name: 'c1', namespace: 'd', }, + targetRef: 'b:d/c1', type: RELATION_PART_OF, }, ], @@ -225,6 +233,7 @@ describe('', () => { name: 'some-component', namespace: 'default', }, + targetRef: 'component:default/some-component', type: RELATION_OWNER_OF, }, ], diff --git a/plugins/catalog-graph/src/components/EntityRelationsGraph/useEntityRelationGraph.test.ts b/plugins/catalog-graph/src/components/EntityRelationsGraph/useEntityRelationGraph.test.ts index bf6fc9ee3f..7e0cd411ce 100644 --- a/plugins/catalog-graph/src/components/EntityRelationsGraph/useEntityRelationGraph.test.ts +++ b/plugins/catalog-graph/src/components/EntityRelationsGraph/useEntityRelationGraph.test.ts @@ -49,6 +49,7 @@ describe('useEntityRelationGraph', () => { name: 'a1', namespace: 'd', }, + targetRef: 'k:d/a1', type: RELATION_OWNER_OF, }, { @@ -57,6 +58,7 @@ describe('useEntityRelationGraph', () => { name: 'c1', namespace: 'd', }, + targetRef: 'b:d/c1', type: RELATION_HAS_PART, }, ], @@ -75,6 +77,7 @@ describe('useEntityRelationGraph', () => { name: 'c', namespace: 'd', }, + targetRef: 'b:d/c', type: RELATION_OWNED_BY, }, { @@ -83,6 +86,7 @@ describe('useEntityRelationGraph', () => { name: 'c1', namespace: 'd', }, + targetRef: 'b:d/c1', type: RELATION_OWNED_BY, }, ], @@ -101,6 +105,7 @@ describe('useEntityRelationGraph', () => { name: 'c', namespace: 'd', }, + targetRef: 'b:d/c', type: RELATION_PART_OF, }, { @@ -109,6 +114,7 @@ describe('useEntityRelationGraph', () => { name: 'a1', namespace: 'd', }, + targetRef: 'k:d/a1', type: RELATION_OWNER_OF, }, { @@ -117,6 +123,7 @@ describe('useEntityRelationGraph', () => { name: 'c2', namespace: 'd', }, + targetRef: 'b:d/c2', type: RELATION_HAS_PART, }, ], @@ -135,6 +142,7 @@ describe('useEntityRelationGraph', () => { name: 'c1', namespace: 'd', }, + targetRef: 'b:d/c1', type: RELATION_PART_OF, }, ], diff --git a/plugins/catalog-graph/src/components/EntityRelationsGraph/useEntityRelationGraph.ts b/plugins/catalog-graph/src/components/EntityRelationsGraph/useEntityRelationGraph.ts index e0d393168b..957f35dc25 100644 --- a/plugins/catalog-graph/src/components/EntityRelationsGraph/useEntityRelationGraph.ts +++ b/plugins/catalog-graph/src/components/EntityRelationsGraph/useEntityRelationGraph.ts @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { Entity, stringifyEntityRef } from '@backstage/catalog-model'; +import { Entity } from '@backstage/catalog-model'; import { useEffect } from 'react'; import { useEntityStore } from './useEntityStore'; @@ -64,13 +64,15 @@ export function useEntityRelationGraph({ if ( (!relations || relations.includes(rel.type)) && (!kinds || - kinds.includes(rel.target.kind.toLocaleLowerCase('en-US'))) + kinds.some(kind => + rel.targetRef.startsWith( + `${kind.toLocaleLowerCase('en-US')}:`, + ), + )) ) { - const relationEntityRef = stringifyEntityRef(rel.target); - - if (!processedEntityRefs.has(relationEntityRef)) { - nextDepthRefQueue.push(relationEntityRef); - expectedEntities.add(relationEntityRef); + if (!processedEntityRefs.has(rel.targetRef)) { + nextDepthRefQueue.push(rel.targetRef); + expectedEntities.add(rel.targetRef); } } } diff --git a/plugins/catalog-graph/src/components/EntityRelationsGraph/useEntityRelationNodesAndEdges.test.ts b/plugins/catalog-graph/src/components/EntityRelationsGraph/useEntityRelationNodesAndEdges.test.ts index 37073352d6..4715cb106a 100644 --- a/plugins/catalog-graph/src/components/EntityRelationsGraph/useEntityRelationNodesAndEdges.test.ts +++ b/plugins/catalog-graph/src/components/EntityRelationsGraph/useEntityRelationNodesAndEdges.test.ts @@ -49,6 +49,7 @@ describe('useEntityRelationNodesAndEdges', () => { name: 'a1', namespace: 'd', }, + targetRef: 'k:d/a1', type: RELATION_OWNER_OF, }, { @@ -57,6 +58,7 @@ describe('useEntityRelationNodesAndEdges', () => { name: 'c1', namespace: 'd', }, + targetRef: 'b:d/c1', type: RELATION_HAS_PART, }, ], @@ -75,6 +77,7 @@ describe('useEntityRelationNodesAndEdges', () => { name: 'c', namespace: 'd', }, + targetRef: 'b:d/c', type: RELATION_OWNED_BY, }, { @@ -83,6 +86,7 @@ describe('useEntityRelationNodesAndEdges', () => { name: 'c1', namespace: 'd', }, + targetRef: 'b:d/c1', type: RELATION_OWNED_BY, }, ], @@ -101,6 +105,7 @@ describe('useEntityRelationNodesAndEdges', () => { name: 'c', namespace: 'd', }, + targetRef: 'b:d/c', type: RELATION_PART_OF, }, { @@ -109,6 +114,7 @@ describe('useEntityRelationNodesAndEdges', () => { name: 'a1', namespace: 'd', }, + targetRef: 'k:d/a1', type: RELATION_OWNER_OF, }, { @@ -117,6 +123,7 @@ describe('useEntityRelationNodesAndEdges', () => { name: 'c2', namespace: 'd', }, + targetRef: 'b:d/c2', type: RELATION_HAS_PART, }, ], @@ -135,6 +142,7 @@ describe('useEntityRelationNodesAndEdges', () => { name: 'c1', namespace: 'd', }, + targetRef: 'b:d/c1', type: RELATION_PART_OF, }, ], diff --git a/plugins/catalog-graph/src/components/EntityRelationsGraph/useEntityRelationNodesAndEdges.ts b/plugins/catalog-graph/src/components/EntityRelationsGraph/useEntityRelationNodesAndEdges.ts index b272abc654..a1c3416d4f 100644 --- a/plugins/catalog-graph/src/components/EntityRelationsGraph/useEntityRelationNodesAndEdges.ts +++ b/plugins/catalog-graph/src/components/EntityRelationsGraph/useEntityRelationNodesAndEdges.ts @@ -13,10 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { - DEFAULT_NAMESPACE, - stringifyEntityRef, -} from '@backstage/catalog-model'; +import { DEFAULT_NAMESPACE } from '@backstage/catalog-model'; import { MouseEvent, useState } from 'react'; import useDebounce from 'react-use/lib/useDebounce'; import { RelationPairs, ALL_RELATION_PAIRS } from './relations'; @@ -100,11 +97,9 @@ export function useEntityRelationNodesAndEdges({ if (entity) { entity?.relations?.forEach(rel => { - const targetRef = stringifyEntityRef(rel.target); - // Check if the related entity should be displayed, if not, ignore // the relation too - if (!entities[targetRef]) { + if (!entities[rel.targetRef]) { return; } @@ -114,12 +109,14 @@ export function useEntityRelationNodesAndEdges({ if ( kinds && - !kinds.includes(rel.target.kind.toLocaleLowerCase('en-US')) + !kinds.some(kind => + rel.targetRef.startsWith(`${kind.toLocaleLowerCase('en-US')}:`), + ) ) { return; } - if (!unidirectional || !visitedNodes.has(targetRef)) { + if (!unidirectional || !visitedNodes.has(rel.targetRef)) { if (mergeRelations) { const pair = relationPairs.find( ([l, r]) => l === rel.type || r === rel.type, @@ -127,24 +124,24 @@ export function useEntityRelationNodesAndEdges({ const [left] = pair; edges.push({ - from: left === rel.type ? entityRef : targetRef, - to: left === rel.type ? targetRef : entityRef, + from: left === rel.type ? entityRef : rel.targetRef, + to: left === rel.type ? rel.targetRef : entityRef, relations: pair, label: 'visible', }); } else { edges.push({ from: entityRef, - to: targetRef, + to: rel.targetRef, relations: [rel.type], label: 'visible', }); } } - if (!visitedNodes.has(targetRef)) { - nodeQueue.push(targetRef); - visitedNodes.add(targetRef); + if (!visitedNodes.has(rel.targetRef)) { + nodeQueue.push(rel.targetRef); + visitedNodes.add(rel.targetRef); } }); } diff --git a/plugins/catalog-react/api-report.md b/plugins/catalog-react/api-report.md index 37e959f93b..15a22c98d7 100644 --- a/plugins/catalog-react/api-report.md +++ b/plugins/catalog-react/api-report.md @@ -266,7 +266,7 @@ export const EntityRefLink: (props: EntityRefLinkProps) => JSX.Element; // @public export type EntityRefLinkProps = { - entityRef: Entity | EntityName; + entityRef: Entity | EntityName | string; defaultKind?: string; title?: string; children?: React_2.ReactNode; @@ -592,10 +592,7 @@ export function useOwnUser(): AsyncState; // @public (undocumented) export function useRelatedEntities( entity: Entity, - { - type, - kind, - }: { + relationFilter: { type?: string; kind?: string; }, diff --git a/plugins/catalog-react/src/components/EntityOwnerPicker/EntityOwnerPicker.test.tsx b/plugins/catalog-react/src/components/EntityOwnerPicker/EntityOwnerPicker.test.tsx index 14abc358db..de21bfeee3 100644 --- a/plugins/catalog-react/src/components/EntityOwnerPicker/EntityOwnerPicker.test.tsx +++ b/plugins/catalog-react/src/components/EntityOwnerPicker/EntityOwnerPicker.test.tsx @@ -14,7 +14,7 @@ * limitations under the License. */ -import { Entity } from '@backstage/catalog-model'; +import { Entity, parseEntityRef } from '@backstage/catalog-model'; import { fireEvent, render } from '@testing-library/react'; import React from 'react'; import { MockEntityListContextProvider } from '../../testUtils/providers'; @@ -31,6 +31,7 @@ const sampleEntities: Entity[] = [ relations: [ { type: 'ownedBy', + targetRef: 'group:default/some-owner', target: { name: 'some-owner', namespace: 'default', @@ -39,6 +40,7 @@ const sampleEntities: Entity[] = [ }, { type: 'ownedBy', + targetRef: 'group:default/some-owner-2', target: { name: 'some-owner-2', namespace: 'default', @@ -56,6 +58,7 @@ const sampleEntities: Entity[] = [ relations: [ { type: 'ownedBy', + targetRef: 'group:default/another-owner', target: { name: 'another-owner', namespace: 'default', @@ -73,6 +76,7 @@ const sampleEntities: Entity[] = [ relations: [ { type: 'ownedBy', + targetRef: 'group:default/some-owner', target: { name: 'some-owner', namespace: 'default', @@ -96,7 +100,7 @@ describe('', () => { fireEvent.click(rendered.getByTestId('owner-picker-expand')); sampleEntities - .flatMap(e => e.relations?.map(r => r.target.name)) + .flatMap(e => e.relations?.map(r => parseEntityRef(r.targetRef).name)) .forEach(owner => { expect(rendered.getByText(owner as string)).toBeInTheDocument(); }); diff --git a/plugins/catalog-react/src/components/EntityRefLink/EntityRefLink.tsx b/plugins/catalog-react/src/components/EntityRefLink/EntityRefLink.tsx index f2c67f1087..1e01402ddf 100644 --- a/plugins/catalog-react/src/components/EntityRefLink/EntityRefLink.tsx +++ b/plugins/catalog-react/src/components/EntityRefLink/EntityRefLink.tsx @@ -18,6 +18,7 @@ import { Entity, EntityName, DEFAULT_NAMESPACE, + parseEntityRef, } from '@backstage/catalog-model'; import React, { forwardRef } from 'react'; import { entityRouteRef } from '../../routes'; @@ -32,7 +33,7 @@ import { Tooltip } from '@material-ui/core'; * @public */ export type EntityRefLinkProps = { - entityRef: Entity | EntityName; + entityRef: Entity | EntityName | string; defaultKind?: string; title?: string; children?: React.ReactNode; @@ -52,7 +53,12 @@ export const EntityRefLink = forwardRef( let namespace; let name; - if ('metadata' in entityRef) { + if (typeof entityRef === 'string') { + const parsed = parseEntityRef(entityRef); + kind = parsed.kind; + namespace = parsed.namespace; + name = parsed.name; + } else if ('metadata' in entityRef) { kind = entityRef.kind; namespace = entityRef.metadata.namespace; name = entityRef.metadata.name; @@ -63,15 +69,13 @@ export const EntityRefLink = forwardRef( } kind = kind.toLocaleLowerCase('en-US'); + namespace = namespace?.toLocaleLowerCase('en-US') ?? DEFAULT_NAMESPACE; - const routeParams = { - kind, - namespace: namespace?.toLocaleLowerCase('en-US') ?? DEFAULT_NAMESPACE, - name, - }; - const formattedEntityRefTitle = formatEntityRefTitle(entityRef, { - defaultKind, - }); + const routeParams = { kind, namespace, name }; + const formattedEntityRefTitle = formatEntityRefTitle( + { kind, namespace, name }, + { defaultKind }, + ); const link = ( diff --git a/plugins/catalog-react/src/components/EntityTable/presets.test.tsx b/plugins/catalog-react/src/components/EntityTable/presets.test.tsx index a509b67477..f2fcd016f0 100644 --- a/plugins/catalog-react/src/components/EntityTable/presets.test.tsx +++ b/plugins/catalog-react/src/components/EntityTable/presets.test.tsx @@ -44,17 +44,19 @@ describe('systemEntityColumns', () => { relations: [ { type: RELATION_PART_OF, + targetRef: 'domain:my-namespace/my-domain', target: { - kind: 'Domain', + kind: 'domain', name: 'my-domain', namespace: 'my-namespace', }, }, { type: RELATION_OWNED_BY, + targetRef: 'group:default/test', target: { - kind: 'Group', - name: 'Test', + kind: 'group', + name: 'test', namespace: 'default', }, }, @@ -79,7 +81,7 @@ describe('systemEntityColumns', () => { await waitFor(() => { expect(getByText('my-namespace/my-system')).toBeInTheDocument(); expect(getByText('my-namespace/my-domain')).toBeInTheDocument(); - expect(getByText('Test')).toBeInTheDocument(); + expect(getByText('test')).toBeInTheDocument(); expect(getByText(/Some/)).toBeInTheDocument(); }); }); @@ -104,17 +106,19 @@ describe('componentEntityColumns', () => { relations: [ { type: RELATION_PART_OF, + targetRef: 'system:my-namespace/my-system', target: { - kind: 'System', + kind: 'system', name: 'my-system', namespace: 'my-namespace', }, }, { type: RELATION_OWNED_BY, + targetRef: 'group:default/test', target: { - kind: 'Group', - name: 'Test', + kind: 'group', + name: 'test', namespace: 'default', }, }, @@ -139,7 +143,7 @@ describe('componentEntityColumns', () => { await waitFor(() => { expect(getByText('my-namespace/my-component')).toBeInTheDocument(); expect(getByText('my-namespace/my-system')).toBeInTheDocument(); - expect(getByText('Test')).toBeInTheDocument(); + expect(getByText('test')).toBeInTheDocument(); expect(getByText('production')).toBeInTheDocument(); expect(getByText('service')).toBeInTheDocument(); expect(getByText(/Some/)).toBeInTheDocument(); diff --git a/plugins/catalog-react/src/components/EntityTable/presets.tsx b/plugins/catalog-react/src/components/EntityTable/presets.tsx index 971ecfed20..6e4ddb2081 100644 --- a/plugins/catalog-react/src/components/EntityTable/presets.tsx +++ b/plugins/catalog-react/src/components/EntityTable/presets.tsx @@ -15,9 +15,8 @@ */ import { ComponentEntity, SystemEntity } from '@backstage/catalog-model'; -import { columnFactories } from './columns'; - import { TableColumn } from '@backstage/core-components'; +import { columnFactories } from './columns'; export const systemEntityColumns: TableColumn[] = [ columnFactories.createEntityRefColumn({ defaultKind: 'system' }), diff --git a/plugins/catalog-react/src/components/InspectEntityDialog/components/EntityKindIcon.tsx b/plugins/catalog-react/src/components/InspectEntityDialog/components/EntityKindIcon.tsx index c2fc49aa0c..4bb41c91c1 100644 --- a/plugins/catalog-react/src/components/InspectEntityDialog/components/EntityKindIcon.tsx +++ b/plugins/catalog-react/src/components/InspectEntityDialog/components/EntityKindIcon.tsx @@ -14,23 +14,54 @@ * limitations under the License. */ +import { parseEntityRef } from '@backstage/catalog-model'; import { useApp } from '@backstage/core-plugin-api'; import WorkIcon from '@material-ui/icons/Work'; import React from 'react'; +const DEFAULT_ICON = WorkIcon; + +function getKind( + kind: string | undefined, + entityRef: string | undefined, +): string | undefined { + if (kind) { + return kind.toLocaleLowerCase('en-US'); + } + + if (entityRef) { + try { + return parseEntityRef(entityRef).kind.toLocaleLowerCase('en-US'); + } catch { + return undefined; + } + } + + return undefined; +} + +function useIcon(kind: string | undefined, entityRef: string | undefined) { + const app = useApp(); + + const actualKind = getKind(kind, entityRef); + if (!actualKind) { + return DEFAULT_ICON; + } + + const icon = app.getSystemIcon(`kind:${actualKind}`); + return icon || DEFAULT_ICON; +} + export function EntityKindIcon(props: { - kind: string; + kind?: string; + entityRef?: string; x?: number; y?: number; width?: number; height?: number; className?: string; }) { - const app = useApp(); - - const { kind, ...otherProps } = props; - const Icon = - app.getSystemIcon(`kind:${kind.toLocaleLowerCase('en-US')}`) ?? WorkIcon; - + const { kind, entityRef, ...otherProps } = props; + const Icon = useIcon(kind, entityRef); return ; } diff --git a/plugins/catalog-react/src/components/InspectEntityDialog/components/OverviewPage.tsx b/plugins/catalog-react/src/components/InspectEntityDialog/components/OverviewPage.tsx index dbb7399481..a4e8523beb 100644 --- a/plugins/catalog-react/src/components/InspectEntityDialog/components/OverviewPage.tsx +++ b/plugins/catalog-react/src/components/InspectEntityDialog/components/OverviewPage.tsx @@ -14,7 +14,7 @@ * limitations under the License. */ -import { AlphaEntity, stringifyEntityRef } from '@backstage/catalog-model'; +import { AlphaEntity } from '@backstage/catalog-model'; import { Box, DialogContentText, @@ -56,7 +56,7 @@ export function OverviewPage(props: { entity: AlphaEntity }) { } = props.entity; const groupedRelations = groupBy( - sortBy(relations, r => stringifyEntityRef(r.target)), + sortBy(relations, r => r.targetRef), 'type', ); @@ -143,12 +143,14 @@ export function OverviewPage(props: { entity: AlphaEntity }) {
{type}}> {groupRelations.map(group => ( - + - + } + primary={ + + } /> ))} diff --git a/plugins/catalog-react/src/components/UserListPicker/UserListPicker.test.tsx b/plugins/catalog-react/src/components/UserListPicker/UserListPicker.test.tsx index 630a995bbe..316a0f2c06 100644 --- a/plugins/catalog-react/src/components/UserListPicker/UserListPicker.test.tsx +++ b/plugins/catalog-react/src/components/UserListPicker/UserListPicker.test.tsx @@ -103,6 +103,7 @@ const backendEntities: Entity[] = [ relations: [ { type: RELATION_OWNED_BY, + targetRef: 'user:default/testuser', target: { kind: 'User', namespace: 'default', name: 'testUser' }, }, ], @@ -136,6 +137,7 @@ const backendEntities: Entity[] = [ relations: [ { type: RELATION_OWNED_BY, + targetRef: 'user:default/testuser', target: { kind: 'User', namespace: 'default', name: 'testUser' }, }, ], diff --git a/plugins/catalog-react/src/hooks/useEntityListProvider.test.tsx b/plugins/catalog-react/src/hooks/useEntityListProvider.test.tsx index c0a90fa834..c8ca29b07f 100644 --- a/plugins/catalog-react/src/hooks/useEntityListProvider.test.tsx +++ b/plugins/catalog-react/src/hooks/useEntityListProvider.test.tsx @@ -45,6 +45,7 @@ const entities: Entity[] = [ relations: [ { type: 'ownedBy', + targetRef: 'user:default/guest', target: { name: 'guest', namespace: 'default', diff --git a/plugins/catalog-react/src/hooks/useEntityOwnership.test.tsx b/plugins/catalog-react/src/hooks/useEntityOwnership.test.tsx index 7f838163a2..17c35afecc 100644 --- a/plugins/catalog-react/src/hooks/useEntityOwnership.test.tsx +++ b/plugins/catalog-react/src/hooks/useEntityOwnership.test.tsx @@ -70,10 +70,12 @@ describe('useEntityOwnership', () => { relations: [ { type: RELATION_OWNED_BY, + targetRef: 'user:default/user1', target: { kind: 'User', namespace: 'default', name: 'user1' }, }, { type: RELATION_OWNED_BY, + targetRef: 'group:default/group1', target: { kind: 'Group', namespace: 'default', name: 'group1' }, }, ], @@ -92,6 +94,7 @@ describe('useEntityOwnership', () => { relations: [ { type: RELATION_MEMBER_OF, + targetRef: 'group:default/group1', target: { kind: 'Group', namespace: 'default', name: 'group1' }, }, ], diff --git a/plugins/catalog-react/src/hooks/useRelatedEntities.ts b/plugins/catalog-react/src/hooks/useRelatedEntities.ts index 56dfbe6403..4cf5690ac3 100644 --- a/plugins/catalog-react/src/hooks/useRelatedEntities.ts +++ b/plugins/catalog-react/src/hooks/useRelatedEntities.ts @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { Entity, EntityRelation } from '@backstage/catalog-model'; +import { Entity, parseEntityRef } from '@backstage/catalog-model'; import { useApi } from '@backstage/core-plugin-api'; import { chunk, groupBy } from 'lodash'; import useAsync from 'react-use/lib/useAsync'; @@ -24,28 +24,28 @@ const BATCH_SIZE = 20; /** @public */ export function useRelatedEntities( entity: Entity, - { type, kind }: { type?: string; kind?: string }, + relationFilter: { type?: string; kind?: string }, ): { entities: Entity[] | undefined; loading: boolean; error: Error | undefined; } { + const filterByTypeLower = relationFilter?.type?.toLocaleLowerCase('en-US'); + const filterByKindLower = relationFilter?.kind?.toLocaleLowerCase('en-US'); + const catalogApi = useApi(catalogApiRef); const { loading, value: entities, error, } = useAsync(async () => { - const relations = - entity.relations && - entity.relations.filter( + const relations = entity.relations + ?.map(r => ({ type: r.type, target: parseEntityRef(r.targetRef) })) + .filter( r => - (!type || - r.type.toLocaleLowerCase('en-US') === - type.toLocaleLowerCase('en-US')) && - (!kind || - r.target.kind.toLocaleLowerCase('en-US') === - kind.toLocaleLowerCase('en-US')), + (!filterByTypeLower || + r.type.toLocaleLowerCase('en-US') === filterByTypeLower) && + (!filterByKindLower || r.target.kind === filterByKindLower), ); if (!relations) { @@ -57,7 +57,7 @@ export function useRelatedEntities( // `filter=kind=component,namespace=default,name=example1&filter=kind=component,namespace=default,name=example2` // with grouping, we can generate a query a string like // `filter=kind=component,namespace=default,name=example1,example2` - const relationsByKindAndNamespace: EntityRelation[][] = Object.values( + const relationsByKindAndNamespace = Object.values( groupBy(relations, ({ target }) => { return `${target.kind}:${target.namespace}`.toLocaleLowerCase('en-US'); }), @@ -96,7 +96,7 @@ export function useRelatedEntities( ); return results.flatMap(r => r.items); - }, [entity, type]); + }, [entity, filterByTypeLower, filterByKindLower]); return { entities, diff --git a/plugins/catalog-react/src/utils/getEntityRelations.test.ts b/plugins/catalog-react/src/utils/getEntityRelations.test.ts index 22c695043f..ea0ba59399 100644 --- a/plugins/catalog-react/src/utils/getEntityRelations.test.ts +++ b/plugins/catalog-react/src/utils/getEntityRelations.test.ts @@ -31,17 +31,19 @@ describe('getEntityRelations', () => { relations: [ { type: RELATION_MEMBER_OF, - target: { kind: 'group', name: 'member' }, + targetRef: 'group:default/member', + target: { kind: 'group', namespace: 'default', name: 'member' }, }, { type: RELATION_CHILD_OF, - target: { kind: 'group', name: 'child' }, + targetRef: 'group:default/child', + target: { kind: 'group', namespace: 'default', name: 'child' }, }, ], } as Entity; expect(getEntityRelations(entity, RELATION_MEMBER_OF)).toEqual([ - { kind: 'group', name: 'member' }, + { kind: 'group', namespace: 'default', name: 'member' }, ]); }); @@ -50,17 +52,19 @@ describe('getEntityRelations', () => { relations: [ { type: RELATION_MEMBER_OF, - target: { kind: 'group', name: 'member' }, + targetRef: 'group:default/member', + target: { kind: 'group', namespace: 'default', name: 'member' }, }, { type: RELATION_MEMBER_OF, - target: { kind: 'user', name: 'child' }, + targetRef: 'user:default/child', + target: { kind: 'user', namespace: 'default', name: 'child' }, }, ], } as Entity; expect( getEntityRelations(entity, RELATION_MEMBER_OF, { kind: 'Group' }), - ).toEqual([{ kind: 'group', name: 'member' }]); + ).toEqual([{ kind: 'group', namespace: 'default', name: 'member' }]); }); }); diff --git a/plugins/catalog-react/src/utils/getEntityRelations.ts b/plugins/catalog-react/src/utils/getEntityRelations.ts index 25666a9960..45cbc6967f 100644 --- a/plugins/catalog-react/src/utils/getEntityRelations.ts +++ b/plugins/catalog-react/src/utils/getEntityRelations.ts @@ -14,10 +14,12 @@ * limitations under the License. */ -import { Entity, EntityName } from '@backstage/catalog-model'; +import { Entity, EntityName, parseEntityRef } from '@backstage/catalog-model'; +// TODO(freben): This should be returning entity refs instead /** * Get the related entity references. + * * @public */ export function getEntityRelations( @@ -28,10 +30,10 @@ export function getEntityRelations( let entityNames = entity?.relations ?.filter(r => r.type === relationType) - ?.map(r => r.target) || []; + .map(r => parseEntityRef(r.targetRef)) || []; if (filter?.kind) { - entityNames = entityNames?.filter( + entityNames = entityNames.filter( e => e.kind.toLocaleLowerCase('en-US') === filter.kind.toLocaleLowerCase('en-US'), diff --git a/plugins/catalog-react/src/utils/isOwnerOf.test.ts b/plugins/catalog-react/src/utils/isOwnerOf.test.ts index 2cd6cfafa3..d3053646d8 100644 --- a/plugins/catalog-react/src/utils/isOwnerOf.test.ts +++ b/plugins/catalog-react/src/utils/isOwnerOf.test.ts @@ -31,6 +31,7 @@ describe('isOwnerOf', () => { relations: [ { type: RELATION_OWNED_BY, + targetRef: 'user:default/user', target: { kind: 'user', namespace: 'default', name: 'user' }, }, ], @@ -46,6 +47,7 @@ describe('isOwnerOf', () => { relations: [ { type: RELATION_MEMBER_OF, + targetRef: 'group:default/group', target: { kind: 'group', namespace: 'default', name: 'group' }, }, ], @@ -54,6 +56,7 @@ describe('isOwnerOf', () => { relations: [ { type: RELATION_OWNED_BY, + targetRef: 'group:default/group', target: { kind: 'group', namespace: 'default', name: 'group' }, }, ], diff --git a/plugins/catalog/src/components/AboutCard/AboutCard.test.tsx b/plugins/catalog/src/components/AboutCard/AboutCard.test.tsx index 74c6490534..9a878e3b60 100644 --- a/plugins/catalog/src/components/AboutCard/AboutCard.test.tsx +++ b/plugins/catalog/src/components/AboutCard/AboutCard.test.tsx @@ -63,6 +63,7 @@ describe('', () => { relations: [ { type: RELATION_OWNED_BY, + targetRef: 'user:default/guest', target: { kind: 'user', name: 'guest', diff --git a/plugins/catalog/src/components/AboutCard/AboutContent.test.tsx b/plugins/catalog/src/components/AboutCard/AboutContent.test.tsx index 860ef2c532..cf9673eeeb 100644 --- a/plugins/catalog/src/components/AboutCard/AboutContent.test.tsx +++ b/plugins/catalog/src/components/AboutCard/AboutContent.test.tsx @@ -47,6 +47,7 @@ describe('', () => { relations: [ { type: RELATION_OWNED_BY, + targetRef: 'user:default/o', target: { kind: 'user', name: 'o', @@ -55,6 +56,7 @@ describe('', () => { }, { type: RELATION_PART_OF, + targetRef: 'system:default/s', target: { kind: 'system', name: 's', @@ -63,6 +65,7 @@ describe('', () => { }, { type: RELATION_PART_OF, + targetRef: 'domain:default/d', target: { kind: 'domain', name: 'd', @@ -152,6 +155,7 @@ describe('', () => { relations: [ { type: RELATION_OWNED_BY, + targetRef: 'user:default/guest', target: { kind: 'user', name: 'guest', @@ -160,6 +164,7 @@ describe('', () => { }, { type: RELATION_PART_OF, + targetRef: 'system:default/system', target: { kind: 'system', name: 'system', @@ -257,6 +262,7 @@ describe('', () => { relations: [ { type: RELATION_OWNED_BY, + targetRef: 'user:default/guest', target: { kind: 'user', name: 'guest', @@ -265,6 +271,7 @@ describe('', () => { }, { type: RELATION_PART_OF, + targetRef: 'system:default/system', target: { kind: 'system', name: 'system', @@ -273,6 +280,7 @@ describe('', () => { }, { type: RELATION_PART_OF, + targetRef: 'component:default/parent-software', target: { kind: 'component', name: 'parent-software', @@ -369,6 +377,7 @@ describe('', () => { relations: [ { type: RELATION_OWNED_BY, + targetRef: 'user:default/guest', target: { kind: 'user', name: 'guest', @@ -528,6 +537,7 @@ describe('', () => { relations: [ { type: RELATION_OWNED_BY, + targetRef: 'user:default/guest', target: { kind: 'user', name: 'guest', @@ -536,6 +546,7 @@ describe('', () => { }, { type: RELATION_PART_OF, + targetRef: 'system:default/system', target: { kind: 'system', name: 'system', @@ -625,6 +636,7 @@ describe('', () => { relations: [ { type: RELATION_OWNED_BY, + targetRef: 'user:default/guest', target: { kind: 'user', name: 'guest', @@ -633,6 +645,7 @@ describe('', () => { }, { type: RELATION_PART_OF, + targetRef: 'domain:default/domain', target: { kind: 'domain', name: 'domain', diff --git a/plugins/catalog/src/components/CatalogPage/DefaultCatalogPage.test.tsx b/plugins/catalog/src/components/CatalogPage/DefaultCatalogPage.test.tsx index 34aee0bbf3..dcf819f976 100644 --- a/plugins/catalog/src/components/CatalogPage/DefaultCatalogPage.test.tsx +++ b/plugins/catalog/src/components/CatalogPage/DefaultCatalogPage.test.tsx @@ -73,7 +73,8 @@ describe('DefaultCatalogPage', () => { relations: [ { type: RELATION_OWNED_BY, - target: { kind: 'Group', name: 'tools', namespace: 'default' }, + targetRef: 'group:default/tools', + target: { kind: 'group', name: 'tools', namespace: 'default' }, }, ], }, @@ -90,8 +91,9 @@ describe('DefaultCatalogPage', () => { relations: [ { type: RELATION_OWNED_BY, + targetRef: 'group:default/not-tools', target: { - kind: 'Group', + kind: 'group', name: 'not-tools', namespace: 'default', }, @@ -110,6 +112,7 @@ describe('DefaultCatalogPage', () => { relations: [ { type: RELATION_MEMBER_OF, + targetRef: 'group:default/tools', target: { namespace: 'default', kind: 'Group', name: 'tools' }, }, ], diff --git a/plugins/catalog/src/components/DependencyOfComponentsCard/DependencyOfComponentsCard.test.tsx b/plugins/catalog/src/components/DependencyOfComponentsCard/DependencyOfComponentsCard.test.tsx index e43104b67d..05d836870f 100644 --- a/plugins/catalog/src/components/DependencyOfComponentsCard/DependencyOfComponentsCard.test.tsx +++ b/plugins/catalog/src/components/DependencyOfComponentsCard/DependencyOfComponentsCard.test.tsx @@ -81,10 +81,11 @@ describe('', () => { relations: [ { target: { - kind: 'Component', + kind: 'component', namespace: 'my-namespace', name: 'target-name', }, + targetRef: 'component:my-namespace/target-name', type: RELATION_DEPENDENCY_OF, }, ], diff --git a/plugins/catalog/src/components/DependsOnComponentsCard/DependsOnComponentsCard.test.tsx b/plugins/catalog/src/components/DependsOnComponentsCard/DependsOnComponentsCard.test.tsx index b654136d18..b7ef594522 100644 --- a/plugins/catalog/src/components/DependsOnComponentsCard/DependsOnComponentsCard.test.tsx +++ b/plugins/catalog/src/components/DependsOnComponentsCard/DependsOnComponentsCard.test.tsx @@ -81,10 +81,11 @@ describe('', () => { relations: [ { target: { - kind: 'Component', + kind: 'component', namespace: 'my-namespace', name: 'target-name', }, + targetRef: 'component:my-namespace/target-name', type: RELATION_DEPENDS_ON, }, ], diff --git a/plugins/catalog/src/components/DependsOnResourcesCard/DependsOnResourcesCard.test.tsx b/plugins/catalog/src/components/DependsOnResourcesCard/DependsOnResourcesCard.test.tsx index 40685705aa..b8d2801e48 100644 --- a/plugins/catalog/src/components/DependsOnResourcesCard/DependsOnResourcesCard.test.tsx +++ b/plugins/catalog/src/components/DependsOnResourcesCard/DependsOnResourcesCard.test.tsx @@ -81,10 +81,11 @@ describe('', () => { relations: [ { target: { - kind: 'Resource', + kind: 'resource', namespace: 'my-namespace', name: 'target-name', }, + targetRef: 'resource:my-namespace/target-name', type: RELATION_DEPENDS_ON, }, ], diff --git a/plugins/catalog/src/components/HasComponentsCard/HasComponentsCard.test.tsx b/plugins/catalog/src/components/HasComponentsCard/HasComponentsCard.test.tsx index 45f7561d6e..fbb474825f 100644 --- a/plugins/catalog/src/components/HasComponentsCard/HasComponentsCard.test.tsx +++ b/plugins/catalog/src/components/HasComponentsCard/HasComponentsCard.test.tsx @@ -81,10 +81,11 @@ describe('', () => { relations: [ { target: { - kind: 'Component', + kind: 'component', namespace: 'my-namespace', name: 'target-name', }, + targetRef: 'component:my-namespace/target-name', type: RELATION_HAS_PART, }, ], diff --git a/plugins/catalog/src/components/HasResourcesCard/HasResourcesCard.test.tsx b/plugins/catalog/src/components/HasResourcesCard/HasResourcesCard.test.tsx index a01922d988..c75273e484 100644 --- a/plugins/catalog/src/components/HasResourcesCard/HasResourcesCard.test.tsx +++ b/plugins/catalog/src/components/HasResourcesCard/HasResourcesCard.test.tsx @@ -76,10 +76,11 @@ describe('', () => { relations: [ { target: { - kind: 'Resource', + kind: 'resource', namespace: 'my-namespace', name: 'target-name', }, + targetRef: 'resource:my-namespace/target-name', type: RELATION_HAS_PART, }, ], diff --git a/plugins/catalog/src/components/HasSubcomponentsCard/HasSubcomponentsCard.test.tsx b/plugins/catalog/src/components/HasSubcomponentsCard/HasSubcomponentsCard.test.tsx index e517bd38ae..e021fea2f3 100644 --- a/plugins/catalog/src/components/HasSubcomponentsCard/HasSubcomponentsCard.test.tsx +++ b/plugins/catalog/src/components/HasSubcomponentsCard/HasSubcomponentsCard.test.tsx @@ -81,10 +81,11 @@ describe('', () => { relations: [ { target: { - kind: 'Component', + kind: 'component', namespace: 'my-namespace', name: 'target-name', }, + targetRef: 'component:my-namespace/target-name', type: RELATION_HAS_PART, }, ], diff --git a/plugins/catalog/src/components/HasSystemsCard/HasSystemsCard.test.tsx b/plugins/catalog/src/components/HasSystemsCard/HasSystemsCard.test.tsx index 050550101f..6a2e2a0b7f 100644 --- a/plugins/catalog/src/components/HasSystemsCard/HasSystemsCard.test.tsx +++ b/plugins/catalog/src/components/HasSystemsCard/HasSystemsCard.test.tsx @@ -79,10 +79,11 @@ describe('', () => { relations: [ { target: { - kind: 'System', + kind: 'system', namespace: 'my-namespace', name: 'target-name', }, + targetRef: 'system:my-namespace/target-name', type: RELATION_HAS_PART, }, ], diff --git a/plugins/catalog/src/components/SystemDiagramCard/SystemDiagramCard.test.tsx b/plugins/catalog/src/components/SystemDiagramCard/SystemDiagramCard.test.tsx index e0ec48fbed..eb6b71c47e 100644 --- a/plugins/catalog/src/components/SystemDiagramCard/SystemDiagramCard.test.tsx +++ b/plugins/catalog/src/components/SystemDiagramCard/SystemDiagramCard.test.tsx @@ -103,10 +103,11 @@ describe('', () => { relations: [ { target: { - kind: 'Domain', + kind: 'domain', namespace: 'namespace', name: 'domain', }, + targetRef: 'domain:namespace/domain', type: RELATION_PART_OF, }, ], @@ -166,6 +167,7 @@ describe('', () => { namespace: 'namespace', name: 'alongdomainthatshouldgettruncated', }, + targetRef: 'domain:namespace/alongdomainthatshouldgettruncated', type: RELATION_PART_OF, }, ], diff --git a/plugins/fossa/dev/index.tsx b/plugins/fossa/dev/index.tsx index 018d3e3acb..1ce9ec58b2 100644 --- a/plugins/fossa/dev/index.tsx +++ b/plugins/fossa/dev/index.tsx @@ -42,7 +42,8 @@ const entity = (name?: string) => relations: [ { type: RELATION_OWNED_BY, - target: { kind: 'Group', namespace: 'default', name }, + targetRef: `group:default/${name}`, + target: { kind: 'group', namespace: 'default', name }, }, ], } as Entity); diff --git a/plugins/org/src/components/Cards/Group/GroupProfile/GroupProfileCard.stories.tsx b/plugins/org/src/components/Cards/Group/GroupProfile/GroupProfileCard.stories.tsx index dc90a46fdf..cdf6240fc0 100644 --- a/plugins/org/src/components/Cards/Group/GroupProfile/GroupProfileCard.stories.tsx +++ b/plugins/org/src/components/Cards/Group/GroupProfile/GroupProfileCard.stories.tsx @@ -28,6 +28,7 @@ export default { const dummyDepartment = { type: 'childOf', + targetRef: 'group:default/department-a', target: { namespace: 'default', kind: 'group', diff --git a/plugins/org/src/components/Cards/Group/MembersList/MembersListCard.stories.tsx b/plugins/org/src/components/Cards/Group/MembersList/MembersListCard.stories.tsx index b6b549d934..b0a7ed8c70 100644 --- a/plugins/org/src/components/Cards/Group/MembersList/MembersListCard.stories.tsx +++ b/plugins/org/src/components/Cards/Group/MembersList/MembersListCard.stories.tsx @@ -54,6 +54,7 @@ const makeUser = ({ relations: [ { type: 'memberOf', + targetRef: 'group:default/team-a', target: { namespace: 'default', kind: 'group', diff --git a/plugins/org/src/components/Cards/Group/MembersList/MembersListCard.test.tsx b/plugins/org/src/components/Cards/Group/MembersList/MembersListCard.test.tsx index 99be8571e0..cffe3e0228 100644 --- a/plugins/org/src/components/Cards/Group/MembersList/MembersListCard.test.tsx +++ b/plugins/org/src/components/Cards/Group/MembersList/MembersListCard.test.tsx @@ -59,6 +59,7 @@ describe('MemberTab Test', () => { relations: [ { type: 'memberOf', + targetRef: 'group:default/team-d', target: { kind: 'group', name: 'team-d', diff --git a/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.stories.tsx b/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.stories.tsx index a0536e1a74..c07815f39e 100644 --- a/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.stories.tsx +++ b/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.stories.tsx @@ -69,9 +69,10 @@ const makeComponent = ({ type, name }: { type: string; name: string }) => ({ relations: [ { type: 'ownedBy', + targetRef: 'group:default/team-a', target: { namespace: 'default', - kind: 'Group', + kind: 'group', name: 'team-a', }, }, diff --git a/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.test.tsx b/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.test.tsx index 2030f4c100..3fc770e6b5 100644 --- a/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.test.tsx +++ b/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.test.tsx @@ -43,10 +43,11 @@ const items = [ relations: [ { type: 'ownedBy', + targetRef: 'group:default/my-team', target: { name: 'my-team', namespace: 'default', - kind: 'Group', + kind: 'group', }, }, ], @@ -62,10 +63,11 @@ const items = [ relations: [ { type: 'ownedBy', + targetRef: 'group:default/my-team', target: { name: 'my-team', namespace: 'default', - kind: 'Group', + kind: 'group', }, }, ], @@ -82,10 +84,11 @@ const items = [ relations: [ { type: 'ownedBy', + targetRef: 'group:default/my-team', target: { name: 'my-team', namespace: 'default', - kind: 'Group', + kind: 'group', }, }, ], @@ -99,10 +102,11 @@ const items = [ relations: [ { type: 'ownedBy', + targetRef: 'group:default/my-team', target: { name: 'my-team', namespace: 'default', - kind: 'Group', + kind: 'group', }, }, ], @@ -135,9 +139,10 @@ describe('OwnershipCard', () => { relations: [ { type: 'memberOf', + targetRef: 'group:default/examplegroup', target: { kind: 'group', - name: 'ExampleGroup', + name: 'examplegroup', namespace: 'default', }, }, @@ -260,8 +265,9 @@ describe('OwnershipCard', () => { relations: [ { type: 'memberOf', + targetRef: 'group:default/my-team', target: { - kind: 'Group', + kind: 'group', name: 'my-team', namespace: 'default', }, diff --git a/plugins/org/src/components/Cards/User/UserProfileCard/UserProfileCard.stories.tsx b/plugins/org/src/components/Cards/User/UserProfileCard/UserProfileCard.stories.tsx index 0cb3987c77..0b2d2790a0 100644 --- a/plugins/org/src/components/Cards/User/UserProfileCard/UserProfileCard.stories.tsx +++ b/plugins/org/src/components/Cards/User/UserProfileCard/UserProfileCard.stories.tsx @@ -28,6 +28,7 @@ export default { const dummyGroup = { type: 'memberOf', + targetRef: 'group:default/team-a', target: { namespace: 'default', kind: 'group', 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 cf84381830..3e5e595eef 100644 --- a/plugins/org/src/components/Cards/User/UserProfileCard/UserProfileCard.test.tsx +++ b/plugins/org/src/components/Cards/User/UserProfileCard/UserProfileCard.test.tsx @@ -42,6 +42,7 @@ describe('UserSummary Test', () => { relations: [ { type: 'memberOf', + targetRef: 'group:default/examplegroup', target: { kind: 'group', name: 'ExampleGroup', @@ -70,9 +71,9 @@ describe('UserSummary Test', () => { 'src', 'https://example.com/staff/calum.jpeg', ); - expect(rendered.getByText('ExampleGroup')).toHaveAttribute( + expect(rendered.getByText('examplegroup')).toHaveAttribute( 'href', - '/catalog/default/group/ExampleGroup', + '/catalog/default/group/examplegroup', ); expect(rendered.getByText('Super awesome human')).toBeInTheDocument(); }); diff --git a/plugins/tech-insights-backend/src/service/fact/factRetrievers/entityMetadataFactRetriever.test.ts b/plugins/tech-insights-backend/src/service/fact/factRetrievers/entityMetadataFactRetriever.test.ts index a51ce0ab83..14d0728cf6 100644 --- a/plugins/tech-insights-backend/src/service/fact/factRetrievers/entityMetadataFactRetriever.test.ts +++ b/plugins/tech-insights-backend/src/service/fact/factRetrievers/entityMetadataFactRetriever.test.ts @@ -57,6 +57,7 @@ const defaultEntityListResponse: GetEntitiesResponse = { relations: [ { type: RELATION_OWNED_BY, + targetRef: 'group:default/my-team', target: { name: 'team-a', kind: 'group', namespace: 'default' }, }, ], diff --git a/plugins/tech-insights-backend/src/service/fact/factRetrievers/entityOwnershipFactRetriever.test.ts b/plugins/tech-insights-backend/src/service/fact/factRetrievers/entityOwnershipFactRetriever.test.ts index 2108379f06..374bda2569 100644 --- a/plugins/tech-insights-backend/src/service/fact/factRetrievers/entityOwnershipFactRetriever.test.ts +++ b/plugins/tech-insights-backend/src/service/fact/factRetrievers/entityOwnershipFactRetriever.test.ts @@ -57,6 +57,7 @@ const defaultEntityListResponse: GetEntitiesResponse = { relations: [ { type: RELATION_OWNED_BY, + targetRef: 'group:default/team-a', target: { name: 'team-a', kind: 'group', namespace: 'default' }, }, ], diff --git a/plugins/tech-insights-backend/src/service/fact/factRetrievers/techdocsFactRetriever.test.ts b/plugins/tech-insights-backend/src/service/fact/factRetrievers/techdocsFactRetriever.test.ts index a3604129b7..b4fa8ba67c 100644 --- a/plugins/tech-insights-backend/src/service/fact/factRetrievers/techdocsFactRetriever.test.ts +++ b/plugins/tech-insights-backend/src/service/fact/factRetrievers/techdocsFactRetriever.test.ts @@ -57,6 +57,7 @@ const defaultEntityListResponse: GetEntitiesResponse = { relations: [ { type: RELATION_OWNED_BY, + targetRef: 'group:default/team-a', target: { name: 'team-a', kind: 'group', namespace: 'default' }, }, ], diff --git a/plugins/techdocs-backend/src/search/DefaultTechDocsCollator.ts b/plugins/techdocs-backend/src/search/DefaultTechDocsCollator.ts index 86b70379ad..2c8786d92e 100644 --- a/plugins/techdocs-backend/src/search/DefaultTechDocsCollator.ts +++ b/plugins/techdocs-backend/src/search/DefaultTechDocsCollator.ts @@ -20,6 +20,7 @@ import { } from '@backstage/backend-common'; import { Entity, + parseEntityRef, RELATION_OWNED_BY, stringifyEntityRef, } from '@backstage/catalog-model'; @@ -154,9 +155,7 @@ export class DefaultTechDocsCollator implements DocumentCollator { entityTitle: entity.metadata.title, componentType: entity.spec?.type?.toString() || 'other', lifecycle: (entity.spec?.lifecycle as string) || '', - owner: - entity.relations?.find(r => r.type === RELATION_OWNED_BY) - ?.target?.name || '', + owner: getSimpleEntityOwnerString(entity), authorization: { resourceRef: stringifyEntityRef(entity), }, @@ -202,3 +201,14 @@ export class DefaultTechDocsCollator implements DocumentCollator { }, {} as EntityInfo); } } + +function getSimpleEntityOwnerString(entity: Entity): string { + if (entity.relations) { + const owner = entity.relations.find(r => r.type === RELATION_OWNED_BY); + if (owner) { + const { name } = parseEntityRef(owner.targetRef); + return name; + } + } + return ''; +} diff --git a/plugins/techdocs/src/home/components/DocsTable.test.tsx b/plugins/techdocs/src/home/components/DocsTable.test.tsx index 4564725db6..9586cfb2ef 100644 --- a/plugins/techdocs/src/home/components/DocsTable.test.tsx +++ b/plugins/techdocs/src/home/components/DocsTable.test.tsx @@ -66,6 +66,7 @@ describe('DocsTable test', () => { namespace: 'default', name: 'owned', }, + targetRef: 'user:default/owned', type: 'ownedBy', }, ], @@ -86,6 +87,7 @@ describe('DocsTable test', () => { namespace: 'default', name: 'not-owned', }, + targetRef: 'user:default/not-owned', type: 'ownedBy', }, ], @@ -137,6 +139,7 @@ describe('DocsTable test', () => { namespace: 'default', name: 'owned', }, + targetRef: 'user:default/owned', type: 'ownedBy', }, ], From 919cf2f836984718e7879c1e0f9b9858892b4f81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Fri, 18 Feb 2022 19:53:02 +0100 Subject: [PATCH 361/383] add changesets MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .changeset/brown-chairs-punch.md | 13 +++++++++++++ .changeset/kind-cobras-admire.md | 24 ++++++++++++++++++++++++ .changeset/yellow-goats-drop.md | 14 ++++++++++++++ 3 files changed, 51 insertions(+) create mode 100644 .changeset/brown-chairs-punch.md create mode 100644 .changeset/kind-cobras-admire.md create mode 100644 .changeset/yellow-goats-drop.md diff --git a/.changeset/brown-chairs-punch.md b/.changeset/brown-chairs-punch.md new file mode 100644 index 0000000000..da3325400e --- /dev/null +++ b/.changeset/brown-chairs-punch.md @@ -0,0 +1,13 @@ +--- +'@backstage/plugin-catalog-backend': patch +--- + +The catalog API now returns entity relations that have three fields: The old +`type` and `target` fields, as well as a new `targetRef` field. The last one is +the stringified form of the second one. + +**DEPRECATION**: The `target` field is hereby deprecated, both as seen from the +catalog API as well as from the `@backstage/catalog-model` package. Both +`target` and `targetRef` will be produced for some time, but eventually, +`target` will be removed entirely. Please update your readers to stop consuming +the `relations.[].target` field from the catalog API as soon as possible. diff --git a/.changeset/kind-cobras-admire.md b/.changeset/kind-cobras-admire.md new file mode 100644 index 0000000000..d2e2208f57 --- /dev/null +++ b/.changeset/kind-cobras-admire.md @@ -0,0 +1,24 @@ +--- +'@backstage/catalog-model': minor +--- + +**BREAKING**: Added `EntityRelation.targetRef` (a string form entity ref), and +deprecated `EntityRelation.target` (a kind + namespace + name object). This +aligns the type with our goal of using string form entity refs more coherently. +There will be a period of time when both fields need to be present, which may in +particular affect your tests which now have to list both the string form and the +object form side by side. + +```diff + const mockEntity: Entity = { + kind: 'Component', + relations: [ + { + type: RELATION_MEMBER_OF, ++ targetRef: 'component:default/foo', + target: { kind: 'component', namespace: 'default', name: 'foo' } + } + ] +``` + +The `target` field will be entirely removed from this type in a future release. diff --git a/.changeset/yellow-goats-drop.md b/.changeset/yellow-goats-drop.md new file mode 100644 index 0000000000..4deb9acd1f --- /dev/null +++ b/.changeset/yellow-goats-drop.md @@ -0,0 +1,14 @@ +--- +'@backstage/plugin-api-docs': patch +'@backstage/plugin-auth-backend': patch +'@backstage/plugin-catalog': patch +'@backstage/plugin-catalog-graph': patch +'@backstage/plugin-catalog-react': patch +'@backstage/plugin-fossa': patch +'@backstage/plugin-org': patch +'@backstage/plugin-tech-insights-backend': patch +'@backstage/plugin-techdocs': patch +'@backstage/plugin-techdocs-backend': patch +--- + +Minor updates to match the new `targetRef` field of relations, and to stop consuming the `target` field From 78e1bb7fd1f1f00037845da1bbf507a8f4f0a8dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Sat, 19 Feb 2022 13:46:45 +0100 Subject: [PATCH 362/383] oh vale, how i love thee MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .github/styles/vocab.txt | 2 ++ ...20222164811_reprocess_for_relation_refs.js | 31 +++++++++++++++++++ .../src/service/DefaultEntitiesCatalog.ts | 4 +-- .../catalog-backend/src/stitching/Stitcher.ts | 4 ++- 4 files changed, 38 insertions(+), 3 deletions(-) create mode 100644 plugins/catalog-backend/migrations/20220222164811_reprocess_for_relation_refs.js diff --git a/.github/styles/vocab.txt b/.github/styles/vocab.txt index fea996b03b..6359493d4b 100644 --- a/.github/styles/vocab.txt +++ b/.github/styles/vocab.txt @@ -278,6 +278,8 @@ sqlite squidfunk src stdout +stringify +stringified subcomponent subcomponents subkey diff --git a/plugins/catalog-backend/migrations/20220222164811_reprocess_for_relation_refs.js b/plugins/catalog-backend/migrations/20220222164811_reprocess_for_relation_refs.js new file mode 100644 index 0000000000..f4be2172a0 --- /dev/null +++ b/plugins/catalog-backend/migrations/20220222164811_reprocess_for_relation_refs.js @@ -0,0 +1,31 @@ +/* + * 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. + */ + +// @ts-check + +/** + * @param {import('knex').Knex} knex + */ +exports.up = async function up(knex) { + // Make sure to reprocess everything, to make sure that relations have a targetRef produced + await knex('refresh_state').update({ + result_hash: '', + next_update_at: knex.fn.now(), + }); + await knex('final_entities').update({ hash: '' }); +}; + +exports.down = async function down() {}; diff --git a/plugins/catalog-backend/src/service/DefaultEntitiesCatalog.ts b/plugins/catalog-backend/src/service/DefaultEntitiesCatalog.ts index 3b20282d78..f8b68bebc5 100644 --- a/plugins/catalog-backend/src/service/DefaultEntitiesCatalog.ts +++ b/plugins/catalog-backend/src/service/DefaultEntitiesCatalog.ts @@ -211,11 +211,11 @@ export class DefaultEntitiesCatalog implements EntitiesCatalog { for (const entity of entities) { if (entity.relations) { for (const relation of entity.relations) { - if (!relation.targetRef) { + if (!relation.targetRef && relation.target) { // This is the case where an old-form entity, not yet stitched with // the updated code, was in the database relation.targetRef = stringifyEntityRef(relation.target); - } else if (!relation.target) { + } else if (!relation.target && relation.targetRef) { // This is the case where a new-form entity, stitched with the // updated code, was in the database but we still want to produce // the old data shape as well for compatibility reasons diff --git a/plugins/catalog-backend/src/stitching/Stitcher.ts b/plugins/catalog-backend/src/stitching/Stitcher.ts index 018e223e46..37b86fef46 100644 --- a/plugins/catalog-backend/src/stitching/Stitcher.ts +++ b/plugins/catalog-backend/src/stitching/Stitcher.ts @@ -18,6 +18,7 @@ import { ENTITY_STATUS_CATALOG_PROCESSING_TYPE } from '@backstage/catalog-client import { AlphaEntity, parseEntityRef, + EntityRelation, EntityStatusItem, } from '@backstage/catalog-model'; import { SerializedError, stringifyError } from '@backstage/errors'; @@ -183,8 +184,9 @@ export class Stitcher { ); entity.relations = uniqueRelationRows .filter(row => row.relationType /* exclude null row, if relevant */) - .map(row => ({ + .map(row => ({ type: row.relationType!, + // TODO(freben): This field is deprecated and should be removed in a future release target: parseEntityRef(row.relationTarget!), targetRef: row.relationTarget!, })); From b5c02d10a60aa1092254435cb0ba6c98b4b9257a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Wed, 23 Feb 2022 10:32:00 +0100 Subject: [PATCH 363/383] remove usage of deprecated ENTITY_DEFAULT_NAMESPACE MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .changeset/pink-wasps-lick.md | 5 +++++ .../DefaultNamespaceEntityPolicy.test.ts | 4 ++-- .../policies/DefaultNamespaceEntityPolicy.ts | 4 ++-- packages/catalog-model/src/entity/ref.test.ts | 12 ++++++------ packages/catalog-model/src/entity/ref.ts | 16 ++++++++-------- 5 files changed, 23 insertions(+), 18 deletions(-) create mode 100644 .changeset/pink-wasps-lick.md diff --git a/.changeset/pink-wasps-lick.md b/.changeset/pink-wasps-lick.md new file mode 100644 index 0000000000..a0b8c3552c --- /dev/null +++ b/.changeset/pink-wasps-lick.md @@ -0,0 +1,5 @@ +--- +'@backstage/catalog-model': patch +--- + +Remove all usage of the deprecated `ENTITY_DEFAULT_NAMESPACE` diff --git a/packages/catalog-model/src/entity/policies/DefaultNamespaceEntityPolicy.test.ts b/packages/catalog-model/src/entity/policies/DefaultNamespaceEntityPolicy.test.ts index 55188d84c8..b92abb0fc2 100644 --- a/packages/catalog-model/src/entity/policies/DefaultNamespaceEntityPolicy.test.ts +++ b/packages/catalog-model/src/entity/policies/DefaultNamespaceEntityPolicy.test.ts @@ -15,7 +15,7 @@ */ import yaml from 'yaml'; -import { ENTITY_DEFAULT_NAMESPACE } from '../constants'; +import { DEFAULT_NAMESPACE } from '../constants'; import { DefaultNamespaceEntityPolicy } from './DefaultNamespaceEntityPolicy'; describe('DefaultNamespaceEntityPolicy', () => { @@ -57,7 +57,7 @@ describe('DefaultNamespaceEntityPolicy', () => { expect.objectContaining({ metadata: { name: 'my-component-yay', - namespace: ENTITY_DEFAULT_NAMESPACE, + namespace: DEFAULT_NAMESPACE, }, }), ); diff --git a/packages/catalog-model/src/entity/policies/DefaultNamespaceEntityPolicy.ts b/packages/catalog-model/src/entity/policies/DefaultNamespaceEntityPolicy.ts index 9511dfb05f..5f6efc03dc 100644 --- a/packages/catalog-model/src/entity/policies/DefaultNamespaceEntityPolicy.ts +++ b/packages/catalog-model/src/entity/policies/DefaultNamespaceEntityPolicy.ts @@ -16,7 +16,7 @@ import lodash from 'lodash'; import { EntityPolicy } from './types'; -import { ENTITY_DEFAULT_NAMESPACE } from '../constants'; +import { DEFAULT_NAMESPACE } from '../constants'; import { Entity } from '../Entity'; /** @@ -27,7 +27,7 @@ import { Entity } from '../Entity'; export class DefaultNamespaceEntityPolicy implements EntityPolicy { private readonly namespace: string; - constructor(namespace: string = ENTITY_DEFAULT_NAMESPACE) { + constructor(namespace: string = DEFAULT_NAMESPACE) { this.namespace = namespace; } diff --git a/packages/catalog-model/src/entity/ref.test.ts b/packages/catalog-model/src/entity/ref.test.ts index f80b588d55..9fc55612fe 100644 --- a/packages/catalog-model/src/entity/ref.test.ts +++ b/packages/catalog-model/src/entity/ref.test.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import { ENTITY_DEFAULT_NAMESPACE } from './constants'; +import { DEFAULT_NAMESPACE } from './constants'; import { Entity } from './Entity'; import { compareEntityToRef, parseEntityName, parseEntityRef } from './ref'; @@ -29,7 +29,7 @@ describe('ref', () => { expect(() => parseEntityName('b/c')).toThrow(/kind/); expect(parseEntityName('a:c')).toEqual({ kind: 'a', - namespace: ENTITY_DEFAULT_NAMESPACE, + namespace: DEFAULT_NAMESPACE, name: 'c', }); expect(() => parseEntityName('c')).toThrow(/kind/); @@ -118,7 +118,7 @@ describe('ref', () => { ).toEqual({ kind: 'a', namespace: 'y', name: 'c' }); expect(parseEntityName('a:c', { defaultKind: 'x' })).toEqual({ kind: 'a', - namespace: ENTITY_DEFAULT_NAMESPACE, + namespace: DEFAULT_NAMESPACE, name: 'c', }); expect( @@ -126,7 +126,7 @@ describe('ref', () => { ).toEqual({ kind: 'x', namespace: 'y', name: 'c' }); expect(parseEntityName('c', { defaultKind: 'x' })).toEqual({ kind: 'x', - namespace: ENTITY_DEFAULT_NAMESPACE, + namespace: DEFAULT_NAMESPACE, name: 'c', }); }); @@ -152,7 +152,7 @@ describe('ref', () => { ).toEqual({ kind: 'a', namespace: 'y', name: 'c' }); expect( parseEntityName({ kind: 'a', name: 'c' }, { defaultKind: 'x' }), - ).toEqual({ kind: 'a', namespace: ENTITY_DEFAULT_NAMESPACE, name: 'c' }); + ).toEqual({ kind: 'a', namespace: DEFAULT_NAMESPACE, name: 'c' }); expect( parseEntityName( { name: 'c' }, @@ -161,7 +161,7 @@ describe('ref', () => { ).toEqual({ kind: 'x', namespace: 'y', name: 'c' }); expect(parseEntityName({ name: 'c' }, { defaultKind: 'x' })).toEqual({ kind: 'x', - namespace: ENTITY_DEFAULT_NAMESPACE, + namespace: DEFAULT_NAMESPACE, name: 'c', }); // empty strings are errors, not defaults diff --git a/packages/catalog-model/src/entity/ref.ts b/packages/catalog-model/src/entity/ref.ts index 122fe0b31a..769273dc45 100644 --- a/packages/catalog-model/src/entity/ref.ts +++ b/packages/catalog-model/src/entity/ref.ts @@ -15,7 +15,7 @@ */ import { EntityName, EntityRef } from '../types'; -import { ENTITY_DEFAULT_NAMESPACE } from './constants'; +import { DEFAULT_NAMESPACE } from './constants'; import { Entity } from './Entity'; function parseRefString(ref: string): { @@ -48,7 +48,7 @@ function parseRefString(ref: string): { export function getEntityName(entity: Entity): EntityName { return { kind: entity.kind, - namespace: entity.metadata.namespace || ENTITY_DEFAULT_NAMESPACE, + namespace: entity.metadata.namespace || DEFAULT_NAMESPACE, name: entity.metadata.name, }; } @@ -91,7 +91,7 @@ export function parseEntityName( } = {}, ): EntityName { const { kind, namespace, name } = parseEntityRef(ref, { - defaultNamespace: ENTITY_DEFAULT_NAMESPACE, + defaultNamespace: DEFAULT_NAMESPACE, ...context, }); @@ -218,11 +218,11 @@ export function stringifyEntityRef( if ('metadata' in ref) { kind = ref.kind; - namespace = ref.metadata.namespace ?? ENTITY_DEFAULT_NAMESPACE; + namespace = ref.metadata.namespace ?? DEFAULT_NAMESPACE; name = ref.metadata.name; } else { kind = ref.kind; - namespace = ref.namespace ?? ENTITY_DEFAULT_NAMESPACE; + namespace = ref.namespace ?? DEFAULT_NAMESPACE; name = ref.name; } @@ -258,7 +258,7 @@ export function compareEntityToRef( }, ): boolean { const entityKind = entity.kind; - const entityNamespace = entity.metadata.namespace || ENTITY_DEFAULT_NAMESPACE; + const entityNamespace = entity.metadata.namespace || DEFAULT_NAMESPACE; const entityName = entity.metadata.name; let refKind: string | undefined; @@ -268,12 +268,12 @@ export function compareEntityToRef( const parsed = parseRefString(ref); refKind = parsed.kind || context?.defaultKind; refNamespace = - parsed.namespace || context?.defaultNamespace || ENTITY_DEFAULT_NAMESPACE; + parsed.namespace || context?.defaultNamespace || DEFAULT_NAMESPACE; refName = parsed.name; } else { refKind = ref.kind || context?.defaultKind; refNamespace = - ref.namespace || context?.defaultNamespace || ENTITY_DEFAULT_NAMESPACE; + ref.namespace || context?.defaultNamespace || DEFAULT_NAMESPACE; refName = ref.name; } From 3f480db96366194de7927ab372c602258337319a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Wed, 23 Feb 2022 11:08:57 +0100 Subject: [PATCH 364/383] stop using EntityRef in scaffolder-backend MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .../scaffolder-backend/src/service/helpers.ts | 60 +++++++------------ .../scaffolder-backend/src/service/router.ts | 26 +++----- 2 files changed, 28 insertions(+), 58 deletions(-) diff --git a/plugins/scaffolder-backend/src/service/helpers.ts b/plugins/scaffolder-backend/src/service/helpers.ts index 5cfc58d586..e49c28cb74 100644 --- a/plugins/scaffolder-backend/src/service/helpers.ts +++ b/plugins/scaffolder-backend/src/service/helpers.ts @@ -20,11 +20,11 @@ import { ANNOTATION_LOCATION, parseLocationRef, ANNOTATION_SOURCE_LOCATION, - EntityRef, - parseEntityRef, + EntityName, + DEFAULT_NAMESPACE, } from '@backstage/catalog-model'; import { Config } from '@backstage/config'; -import { assertError, ConflictError, NotFoundError } from '@backstage/errors'; +import { assertError, InputError, NotFoundError } from '@backstage/errors'; import { TemplateEntityV1beta2, TemplateEntityV1beta3, @@ -87,47 +87,29 @@ export function getEntityBaseUrl(entity: Entity): string | undefined { } /** - * Will use the provided CatalogApi to go find the template entity ref that is provided with and additional token - * Returns the first matching template, throws a NotFoundError or ConflictError if 0 or multiple templates are found. + * Will use the provided CatalogApi to go find the given template entity with an additional token. + * Returns the matching template, or throws a NotFoundError if no such template existed. */ -export async function findTemplate({ - entityRef, - token, - catalogApi, -}: { - entityRef: EntityRef; +export async function findTemplate(options: { + entityRef: EntityName; token?: string; catalogApi: CatalogApi; }): Promise { - const parsedEntityRef = parseEntityRef(entityRef, { - defaultKind: 'template', - defaultNamespace: 'default', - }); - const { items } = await catalogApi.getEntities( - { - filter: { - kind: 'template', - 'metadata.name': parsedEntityRef.name, - 'metadata.namespace': parsedEntityRef.namespace, - }, - }, - { - token, - }, - ); + const { entityRef, token, catalogApi } = options; - const templates = items.filter( - (entity): entity is TemplateEntityV1beta3 | TemplateEntityV1beta2 => - entity.kind === 'Template', - ); - - if (templates.length !== 1) { - if (templates.length > 1) { - throw new ConflictError('Templates lookup resulted in multiple matches'); - } else { - throw new NotFoundError('Template not found'); - } + if (entityRef.namespace.toLocaleLowerCase('en-US') !== DEFAULT_NAMESPACE) { + throw new InputError( + `Invalid namespace, only '${DEFAULT_NAMESPACE}' namespace is supported`, + ); + } + if (entityRef.kind.toLocaleLowerCase('en-US') !== 'template') { + throw new InputError(`Invalid kind, only 'Template' kind is supported`); } - return templates[0]; + const template = await catalogApi.getEntityByName(entityRef, { token }); + if (!template) { + throw new NotFoundError(`Template ${entityRef} not found`); + } + + return template as TemplateEntityV1beta3 | TemplateEntityV1beta2; } diff --git a/plugins/scaffolder-backend/src/service/router.ts b/plugins/scaffolder-backend/src/service/router.ts index b36670a340..f768e354de 100644 --- a/plugins/scaffolder-backend/src/service/router.ts +++ b/plugins/scaffolder-backend/src/service/router.ts @@ -20,7 +20,10 @@ import { UrlReader, } from '@backstage/backend-common'; import { CatalogApi } from '@backstage/catalog-client'; -import { stringifyEntityRef } from '@backstage/catalog-model'; +import { + DEFAULT_NAMESPACE, + stringifyEntityRef, +} from '@backstage/catalog-model'; import { Entity } from '@backstage/catalog-model'; import { Config } from '@backstage/config'; import { InputError, NotFoundError } from '@backstage/errors'; @@ -141,18 +144,6 @@ export async function createRouter( '/v2/templates/:namespace/:kind/:name/parameter-schema', async (req, res) => { const { namespace, kind, name } = req.params; - - if (namespace !== 'default') { - throw new InputError( - `Invalid namespace, only 'default' namespace is supported`, - ); - } - if (kind.toLowerCase() !== 'template') { - throw new InputError( - `Invalid kind, only 'Template' kind is supported`, - ); - } - const template = await findTemplate({ catalogApi: catalogClient, entityRef: { kind, namespace, name }, @@ -188,16 +179,13 @@ export async function createRouter( }) .post('/v2/tasks', async (req, res) => { const templateName: string = req.body.templateName; - const { kind, namespace } = { kind: 'template', namespace: 'default' }; + const kind = 'Template'; + const namespace = DEFAULT_NAMESPACE; const values = req.body.values; const token = getBearerToken(req.headers.authorization); const template = await findTemplate({ catalogApi: catalogClient, - entityRef: { - name: templateName, - kind, - namespace, - }, + entityRef: { kind, namespace, name: templateName }, token: getBearerToken(req.headers.authorization), }); From 410e592552a46aa439fe81852bb957cd5bc3307b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Wed, 23 Feb 2022 11:14:03 +0100 Subject: [PATCH 365/383] stop using EntityRef in bazaar MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .../HomePageBazaarInfoCard/HomePageBazaarInfoCard.tsx | 3 +-- plugins/bazaar/src/components/SortView/SortView.tsx | 2 +- plugins/bazaar/src/types.ts | 4 +--- 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/plugins/bazaar/src/components/HomePageBazaarInfoCard/HomePageBazaarInfoCard.tsx b/plugins/bazaar/src/components/HomePageBazaarInfoCard/HomePageBazaarInfoCard.tsx index 5624f40765..ec29d1429b 100644 --- a/plugins/bazaar/src/components/HomePageBazaarInfoCard/HomePageBazaarInfoCard.tsx +++ b/plugins/bazaar/src/components/HomePageBazaarInfoCard/HomePageBazaarInfoCard.tsx @@ -47,7 +47,6 @@ import useAsyncFn from 'react-use/lib/useAsyncFn'; import { catalogApiRef, entityRouteRef } from '@backstage/plugin-catalog-react'; import { - parseEntityName, stringifyEntityRef, Entity, parseEntityRef, @@ -150,7 +149,7 @@ export const HomePageBazaarInfoCard = ({ const getEntityPageLink = () => { if (bazaarProject?.value?.entityRef) { - const { name, kind, namespace } = parseEntityName( + const { name, kind, namespace } = parseEntityRef( bazaarProject.value.entityRef, ); return entityLink({ kind, namespace, name }); diff --git a/plugins/bazaar/src/components/SortView/SortView.tsx b/plugins/bazaar/src/components/SortView/SortView.tsx index fa97ac69ee..f5bb6facd7 100644 --- a/plugins/bazaar/src/components/SortView/SortView.tsx +++ b/plugins/bazaar/src/components/SortView/SortView.tsx @@ -107,7 +107,7 @@ export const SortView = () => { if (catalogEntityRefs) { bazaarProjects.value?.forEach(async (project: BazaarProject) => { if (project.entityRef) { - if (!catalogEntityRefs?.includes(project.entityRef as string)) { + if (!catalogEntityRefs?.includes(project.entityRef)) { await bazaarApi.updateProject({ ...project, entityRef: null, diff --git a/plugins/bazaar/src/types.ts b/plugins/bazaar/src/types.ts index 30c07286ac..ec3996d1e2 100644 --- a/plugins/bazaar/src/types.ts +++ b/plugins/bazaar/src/types.ts @@ -14,8 +14,6 @@ * limitations under the License. */ -import { EntityRef } from '@backstage/catalog-model'; - export type Member = { itemId: number; userId: string; @@ -30,7 +28,7 @@ export type Size = 'small' | 'medium' | 'large'; export type BazaarProject = { name: string; id: number; - entityRef?: EntityRef; + entityRef?: string; community: string; status: Status; description: string; From 19521af0453c96b182a17fcb4b80e1830c16d7f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Wed, 23 Feb 2022 11:17:24 +0100 Subject: [PATCH 366/383] stop using EntityRef in code-coverage-backend MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- plugins/code-coverage-backend/src/service/router.ts | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/plugins/code-coverage-backend/src/service/router.ts b/plugins/code-coverage-backend/src/service/router.ts index 5f136cc8e9..4922f5c887 100644 --- a/plugins/code-coverage-backend/src/service/router.ts +++ b/plugins/code-coverage-backend/src/service/router.ts @@ -34,9 +34,8 @@ import { Cobertura } from './converter/cobertura'; import { Jacoco } from './converter/jacoco'; import { Converter } from './converter'; import { - EntityRef, getEntitySourceLocation, - parseEntityName, + parseEntityRef, } from '@backstage/catalog-model'; export interface RouterOptions { @@ -78,7 +77,7 @@ export const makeRouter = async ( */ router.get('/report', async (req, res) => { const { entity } = req.query; - const entityName = parseEntityName(entity as EntityRef); + const entityName = parseEntityRef(entity as string); const entityLookup = await catalogApi.getEntityByName(entityName); if (!entityLookup) { throw new NotFoundError(`No entity found matching ${entity}`); @@ -101,7 +100,7 @@ export const makeRouter = async ( */ router.get('/history', async (req, res) => { const { entity } = req.query; - const entityName = parseEntityName(entity as EntityRef); + const entityName = parseEntityRef(entity as string); const entityLookup = await catalogApi.getEntityByName(entityName); if (!entityLookup) { throw new NotFoundError(`No entity found matching ${entity}`); @@ -120,7 +119,7 @@ export const makeRouter = async ( */ router.get('/file-content', async (req, res) => { const { entity, path } = req.query; - const entityName = parseEntityName(entity as EntityRef); + const entityName = parseEntityRef(entity as string); const entityLookup = await catalogApi.getEntityByName(entityName); if (!entityLookup) { throw new NotFoundError(`No entity found matching ${entity}`); @@ -172,7 +171,7 @@ export const makeRouter = async ( */ router.post('/report', async (req, res) => { const { entity, coverageType } = req.query; - const entityName = parseEntityName(entity as EntityRef); + const entityName = parseEntityRef(entity as string); const entityLookup = await catalogApi.getEntityByName(entityName); if (!entityLookup) { throw new NotFoundError(`No entity found matching ${entity}`); From 184366af8b888ef86908b651569f12e5359e0ee5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Wed, 23 Feb 2022 11:19:03 +0100 Subject: [PATCH 367/383] stop using EntityRef in 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/src/service/standaloneServer.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/jenkins-backend/src/service/standaloneServer.ts b/plugins/jenkins-backend/src/service/standaloneServer.ts index b99bdcfd5a..7f47d57ac3 100644 --- a/plugins/jenkins-backend/src/service/standaloneServer.ts +++ b/plugins/jenkins-backend/src/service/standaloneServer.ts @@ -18,7 +18,7 @@ import { createServiceBuilder } from '@backstage/backend-common'; import { Server } from 'http'; import { Logger } from 'winston'; import { createRouter } from './router'; -import { EntityRef } from '@backstage/catalog-model'; +import { EntityName } from '@backstage/catalog-model'; import { JenkinsInfo } from './jenkinsInfoProvider'; export interface ServerOptions { @@ -35,7 +35,7 @@ export async function startStandaloneServer( const router = await createRouter({ logger, jenkinsInfoProvider: { - async getInstance(_: { entityRef: EntityRef }): Promise { + async getInstance(_: { entityRef: EntityName }): Promise { return { baseUrl: 'https://example.com/', jobFullName: 'build-foo' }; }, }, From 7d82685c9d79dae88b2d2cf144fd4b85ec5e382e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Wed, 23 Feb 2022 11:25:50 +0100 Subject: [PATCH 368/383] stop using EntityRef in jenkins MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- plugins/jenkins/api-report.md | 20 ++++---------------- plugins/jenkins/src/api/JenkinsApi.ts | 24 ++++++++---------------- 2 files changed, 12 insertions(+), 32 deletions(-) diff --git a/plugins/jenkins/api-report.md b/plugins/jenkins/api-report.md index 05ebd1fd03..5db5fd0dfe 100644 --- a/plugins/jenkins/api-report.md +++ b/plugins/jenkins/api-report.md @@ -10,7 +10,6 @@ import { BackstagePlugin } from '@backstage/core-plugin-api'; import { DiscoveryApi } from '@backstage/core-plugin-api'; import { Entity } from '@backstage/catalog-model'; import type { EntityName } from '@backstage/catalog-model'; -import type { EntityRef } from '@backstage/catalog-model'; import { IdentityApi } from '@backstage/core-plugin-api'; import { InfoCardVariants } from '@backstage/core-components'; import { RouteRef } from '@backstage/core-plugin-api'; @@ -55,7 +54,7 @@ export interface JenkinsApi { }): Promise; // Warning: (ae-forgotten-export) The symbol "Project" needs to be exported by the entry point index.d.ts getProjects(options: { - entity: EntityRef; + entity: EntityName; filter: { branch?: string; }; @@ -82,31 +81,20 @@ export class JenkinsClient implements JenkinsApi { identityApi: IdentityApi; }); // (undocumented) - getBuild({ - entity, - jobFullName, - buildNumber, - }: { + getBuild(options: { entity: EntityName; jobFullName: string; buildNumber: string; }): Promise; // (undocumented) - getProjects({ - entity, - filter, - }: { + getProjects(options: { entity: EntityName; filter: { branch?: string; }; }): Promise; // (undocumented) - retry({ - entity, - jobFullName, - buildNumber, - }: { + retry(options: { entity: EntityName; jobFullName: string; buildNumber: string; diff --git a/plugins/jenkins/src/api/JenkinsApi.ts b/plugins/jenkins/src/api/JenkinsApi.ts index 65ac79b62b..dd169de78b 100644 --- a/plugins/jenkins/src/api/JenkinsApi.ts +++ b/plugins/jenkins/src/api/JenkinsApi.ts @@ -19,7 +19,7 @@ import { DiscoveryApi, IdentityApi, } from '@backstage/core-plugin-api'; -import type { EntityName, EntityRef } from '@backstage/catalog-model'; +import type { EntityName } from '@backstage/catalog-model'; import { ResponseError } from '@backstage/errors'; export const jenkinsApiRef = createApiRef({ @@ -80,7 +80,7 @@ export interface JenkinsApi { */ getProjects(options: { /** the entity whose jobs should be retrieved. */ - entity: EntityRef; + entity: EntityName; /** a filter on jobs. Currently this just takes a branch (and assumes certain structures in jenkins) */ filter: { branch?: string }; }): Promise; @@ -117,13 +117,11 @@ export class JenkinsClient implements JenkinsApi { this.identityApi = options.identityApi; } - async getProjects({ - entity, - filter, - }: { + async getProjects(options: { entity: EntityName; filter: { branch?: string }; }): Promise { + const { entity, filter } = options; const url = new URL( `${await this.discoveryApi.getBaseUrl( 'jenkins', @@ -158,15 +156,12 @@ export class JenkinsClient implements JenkinsApi { ); } - async getBuild({ - entity, - jobFullName, - buildNumber, - }: { + async getBuild(options: { entity: EntityName; jobFullName: string; buildNumber: string; }): Promise { + const { entity, jobFullName, buildNumber } = options; const url = `${await this.discoveryApi.getBaseUrl( 'jenkins', )}/v1/entity/${encodeURIComponent(entity.namespace)}/${encodeURIComponent( @@ -186,15 +181,12 @@ export class JenkinsClient implements JenkinsApi { return (await response.json()).build; } - async retry({ - entity, - jobFullName, - buildNumber, - }: { + async retry(options: { entity: EntityName; jobFullName: string; buildNumber: string; }): Promise { + const { entity, jobFullName, buildNumber } = options; const url = `${await this.discoveryApi.getBaseUrl( 'jenkins', )}/v1/entity/${encodeURIComponent(entity.namespace)}/${encodeURIComponent( From 35280f66b3c3fabfbb338076d010fbb7f5a37481 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Wed, 23 Feb 2022 11:27:24 +0100 Subject: [PATCH 369/383] stop using EntityRef in tech-insights-backend MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- plugins/tech-insights-backend/src/service/router.ts | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/plugins/tech-insights-backend/src/service/router.ts b/plugins/tech-insights-backend/src/service/router.ts index 22a80c2d79..b13802358f 100644 --- a/plugins/tech-insights-backend/src/service/router.ts +++ b/plugins/tech-insights-backend/src/service/router.ts @@ -28,8 +28,7 @@ import { DateTime } from 'luxon'; import { PersistenceContext } from './persistence/persistenceContext'; import { EntityName, - EntityRef, - parseEntityName, + parseEntityRef, stringifyEntityRef, } from '@backstage/catalog-model'; import { errorHandler } from '@backstage/backend-common'; @@ -130,7 +129,7 @@ export async function createRouter< */ router.get('/facts/latest', async (req, res) => { const { entity } = req.query; - const { namespace, kind, name } = parseEntityName(entity as EntityRef); + const { namespace, kind, name } = parseEntityRef(entity as string); const ids = req.query.ids as string[]; return res.send( await techInsightsStore.getLatestFactsByIds( @@ -145,7 +144,7 @@ export async function createRouter< */ router.get('/facts/range', async (req, res) => { const { entity } = req.query; - const { namespace, kind, name } = parseEntityName(entity as EntityRef); + const { namespace, kind, name } = parseEntityRef(entity as string); const ids = req.query.ids as string[]; const startDatetime = DateTime.fromISO(req.query.startDatetime as string); From bbbd0f0950d72597421528afd3420efee51ba306 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Wed, 23 Feb 2022 11:43:03 +0100 Subject: [PATCH 370/383] deprecate parseEntityName MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .../src/service/CodeCoverageDatabase.ts | 4 ++-- .../scaffolder/src/components/TaskPage/TaskPageLinks.tsx | 4 ++-- .../src/service/persistence/TechInsightsDatabase.ts | 6 +++--- plugins/todo-backend/src/service/router.ts | 4 ++-- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/plugins/code-coverage-backend/src/service/CodeCoverageDatabase.ts b/plugins/code-coverage-backend/src/service/CodeCoverageDatabase.ts index 580d560bae..9235f3a8fd 100644 --- a/plugins/code-coverage-backend/src/service/CodeCoverageDatabase.ts +++ b/plugins/code-coverage-backend/src/service/CodeCoverageDatabase.ts @@ -15,7 +15,7 @@ */ import { resolvePackagePath } from '@backstage/backend-common'; import { NotFoundError } from '@backstage/errors'; -import { parseEntityName, stringifyEntityRef } from '@backstage/catalog-model'; +import { parseEntityRef, stringifyEntityRef } from '@backstage/catalog-model'; import { Knex } from 'knex'; import { v4 as uuid } from 'uuid'; import { aggregateCoverage } from './CoverageUtils'; @@ -103,7 +103,7 @@ export class CodeCoverageDatabase implements CodeCoverageStore { .map(r => JSON.parse(r.coverage)) .map(c => aggregateCoverage(c)); - const entityName = parseEntityName(entity); + const entityName = parseEntityRef(entity); return { entity: { diff --git a/plugins/scaffolder/src/components/TaskPage/TaskPageLinks.tsx b/plugins/scaffolder/src/components/TaskPage/TaskPageLinks.tsx index 2adec564a1..d53b5d705c 100644 --- a/plugins/scaffolder/src/components/TaskPage/TaskPageLinks.tsx +++ b/plugins/scaffolder/src/components/TaskPage/TaskPageLinks.tsx @@ -14,7 +14,7 @@ * limitations under the License. */ -import { parseEntityName } from '@backstage/catalog-model'; +import { parseEntityRef } from '@backstage/catalog-model'; import { entityRouteRef } from '@backstage/plugin-catalog-react'; import { Box } from '@material-ui/core'; import LanguageIcon from '@material-ui/icons/Language'; @@ -57,7 +57,7 @@ export const TaskPageLinks = ({ output }: TaskPageLinksProps) => { .filter(({ url, entityRef }) => url || entityRef) .map(({ url, entityRef, title, icon }) => { if (entityRef) { - const entityName = parseEntityName(entityRef); + const entityName = parseEntityRef(entityRef); const target = entityRoute(entityName); return { title, icon, url: target }; } diff --git a/plugins/tech-insights-backend/src/service/persistence/TechInsightsDatabase.ts b/plugins/tech-insights-backend/src/service/persistence/TechInsightsDatabase.ts index 0b7013295f..ddb90b75cd 100644 --- a/plugins/tech-insights-backend/src/service/persistence/TechInsightsDatabase.ts +++ b/plugins/tech-insights-backend/src/service/persistence/TechInsightsDatabase.ts @@ -26,7 +26,7 @@ import { rsort } from 'semver'; import { groupBy, omit } from 'lodash'; import { DateTime } from 'luxon'; import { Logger } from 'winston'; -import { parseEntityName, stringifyEntityRef } from '@backstage/catalog-model'; +import { parseEntityRef, stringifyEntityRef } from '@backstage/catalog-model'; import { isMaxItems, isTtl } from '../fact/factRetrievers/utils'; type Transaction = Knex.Transaction; @@ -161,7 +161,7 @@ export class TechInsightsDatabase implements TechInsightsStore { return groupBy( results.map(it => { - const { namespace, kind, name } = parseEntityName(it.entity); + const { namespace, kind, name } = parseEntityRef(it.entity); const timestamp = typeof it.timestamp === 'string' ? DateTime.fromISO(it.timestamp) @@ -253,7 +253,7 @@ export class TechInsightsDatabase implements TechInsightsStore { private dbFactRowsToTechInsightFacts(rows: RawDbFactRow[]) { return rows.reduce((acc, it) => { - const { namespace, kind, name } = parseEntityName(it.entity); + const { namespace, kind, name } = parseEntityRef(it.entity); const timestamp = typeof it.timestamp === 'string' ? DateTime.fromISO(it.timestamp) diff --git a/plugins/todo-backend/src/service/router.ts b/plugins/todo-backend/src/service/router.ts index 203e552161..a0e6a6ec94 100644 --- a/plugins/todo-backend/src/service/router.ts +++ b/plugins/todo-backend/src/service/router.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import { EntityName, parseEntityName } from '@backstage/catalog-model'; +import { EntityName, parseEntityRef } from '@backstage/catalog-model'; import { InputError } from '@backstage/errors'; import express from 'express'; import Router from 'express-promise-router'; @@ -55,7 +55,7 @@ export async function createRouter( let entity: EntityName | undefined = undefined; if (entityRef) { try { - entity = parseEntityName(entityRef); + entity = parseEntityRef(entityRef); } catch (error) { throw new InputError(`Invalid entity ref, ${error}`); } From ff3c04041f4e2322a0995cbc0be396b18c044d5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Wed, 23 Feb 2022 11:50:45 +0100 Subject: [PATCH 371/383] remove all usage of EntityRef MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- packages/catalog-model/src/entity/ref.ts | 18 +++++++++++------- packages/catalog-model/src/types.ts | 1 + 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/packages/catalog-model/src/entity/ref.ts b/packages/catalog-model/src/entity/ref.ts index 769273dc45..850b11686f 100644 --- a/packages/catalog-model/src/entity/ref.ts +++ b/packages/catalog-model/src/entity/ref.ts @@ -14,8 +14,8 @@ * limitations under the License. */ -import { EntityName, EntityRef } from '../types'; import { DEFAULT_NAMESPACE } from './constants'; +import { EntityName } from '../types'; import { Entity } from './Entity'; function parseRefString(ref: string): { @@ -76,13 +76,14 @@ export type EntityRefContext = { * otherwise specified as part of the options, and will throw an error if no * kind was specified in the input reference and no default kind was given. * + * @deprecated Please use parseEntityRef instead * @public * @param ref - The reference to parse * @param context - The context of defaults that the parsing happens within * @returns A complete entity name */ export function parseEntityName( - ref: EntityRef, + ref: string | { kind?: string; namespace?: string; name: string }, context: { /** The default kind, if none is given in the reference */ defaultKind?: string; @@ -119,7 +120,7 @@ export function parseEntityName( * @returns The compound form of the reference */ export function parseEntityRef( - ref: EntityRef, + ref: string | { kind?: string; namespace?: string; name: string }, context?: { defaultKind: string; defaultNamespace: string }, ): EntityName; /** @@ -128,7 +129,7 @@ export function parseEntityRef( * @public */ export function parseEntityRef( - ref: EntityRef, + ref: string | { kind?: string; namespace?: string; name: string }, context?: { defaultKind: string }, ): { kind: string; @@ -141,7 +142,7 @@ export function parseEntityRef( * @public */ export function parseEntityRef( - ref: EntityRef, + ref: string | { kind?: string; namespace?: string; name: string }, context?: { defaultNamespace: string }, ): { kind?: string; @@ -154,7 +155,7 @@ export function parseEntityRef( * @public */ export function parseEntityRef( - ref: EntityRef, + ref: string | { kind?: string; namespace?: string; name: string }, context: { /** The default kind, if none is given in the reference */ defaultKind?: string; @@ -249,7 +250,10 @@ export function stringifyEntityRef( */ export function compareEntityToRef( entity: Entity, - ref: EntityRef | EntityName, + ref: + | string + | { kind?: string; namespace?: string; name: string } + | EntityName, context?: { /** The default kind, if none is given in the reference */ defaultKind?: string; diff --git a/packages/catalog-model/src/types.ts b/packages/catalog-model/src/types.ts index 0526f8807e..13550968be 100644 --- a/packages/catalog-model/src/types.ts +++ b/packages/catalog-model/src/types.ts @@ -40,6 +40,7 @@ export type EntityName = { * A reference by name to an entity, either as a compact string representation, * or as a compound reference structure. * + * @deprecated Please use string directly, or EntityName (depending on what you actually need) * @remarks * * The string representation is on the form `[:][/]`. From 67a7c02d266b9115fa29eae096077ea117c5581d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Wed, 23 Feb 2022 12:01:13 +0100 Subject: [PATCH 372/383] changesets MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .changeset/happy-balloons-smell.md | 12 ++++++++ .changeset/slow-waves-press.md | 8 +++++ packages/catalog-model/api-report.md | 45 +++++++++++++++++++++++----- 3 files changed, 58 insertions(+), 7 deletions(-) create mode 100644 .changeset/happy-balloons-smell.md create mode 100644 .changeset/slow-waves-press.md diff --git a/.changeset/happy-balloons-smell.md b/.changeset/happy-balloons-smell.md new file mode 100644 index 0000000000..74b1f34230 --- /dev/null +++ b/.changeset/happy-balloons-smell.md @@ -0,0 +1,12 @@ +--- +'@backstage/plugin-bazaar': patch +'@backstage/plugin-code-coverage-backend': patch +'@backstage/plugin-jenkins': patch +'@backstage/plugin-jenkins-backend': patch +'@backstage/plugin-scaffolder': patch +'@backstage/plugin-scaffolder-backend': patch +'@backstage/plugin-tech-insights-backend': patch +'@backstage/plugin-todo-backend': patch +--- + +Remove usages of `EntityRef` and `parseEntityName` from `@backstage/catalog-model` diff --git a/.changeset/slow-waves-press.md b/.changeset/slow-waves-press.md new file mode 100644 index 0000000000..d2a06df58e --- /dev/null +++ b/.changeset/slow-waves-press.md @@ -0,0 +1,8 @@ +--- +'@backstage/catalog-model': patch +--- + +**DEPRECATED**: The `EntityRef` type and `parseEntityName` function are now +deprecated, and will soon be removed. This is part of a larger movement toward +fixing the poorly named `EntityName` type which should instead have been named +`EntityRef`. Please remove any usage of these as soon as possible. diff --git a/packages/catalog-model/api-report.md b/packages/catalog-model/api-report.md index 0afe87e709..5d8540d3cd 100644 --- a/packages/catalog-model/api-report.md +++ b/packages/catalog-model/api-report.md @@ -69,7 +69,14 @@ export class CommonValidatorFunctions { // @public @deprecated export function compareEntityToRef( entity: Entity, - ref: EntityRef | EntityName, + ref: + | string + | { + kind?: string; + namespace?: string; + name: string; + } + | EntityName, context?: { defaultKind?: string; defaultNamespace?: string; @@ -212,7 +219,7 @@ export type EntityPolicy = { enforce(entity: Entity): Promise; }; -// @public +// @public @deprecated export type EntityRef = | string | { @@ -384,9 +391,15 @@ export class NoForeignRootFieldsEntityPolicy implements EntityPolicy { export const ORIGIN_LOCATION_ANNOTATION = 'backstage.io/managed-by-origin-location'; -// @public +// @public @deprecated export function parseEntityName( - ref: EntityRef, + ref: + | string + | { + kind?: string; + namespace?: string; + name: string; + }, context?: { defaultKind?: string; defaultNamespace?: string; @@ -395,7 +408,13 @@ export function parseEntityName( // @public export function parseEntityRef( - ref: EntityRef, + ref: + | string + | { + kind?: string; + namespace?: string; + name: string; + }, context?: { defaultKind: string; defaultNamespace: string; @@ -404,7 +423,13 @@ export function parseEntityRef( // @public export function parseEntityRef( - ref: EntityRef, + ref: + | string + | { + kind?: string; + namespace?: string; + name: string; + }, context?: { defaultKind: string; }, @@ -416,7 +441,13 @@ export function parseEntityRef( // @public export function parseEntityRef( - ref: EntityRef, + ref: + | string + | { + kind?: string; + namespace?: string; + name: string; + }, context?: { defaultNamespace: string; }, From f7c6b4a9f4ff2ae8727234714bd94641423bce6f Mon Sep 17 00:00:00 2001 From: Hasan Oezdemir <21654050+nodify-at@users.noreply.github.com> Date: Wed, 23 Feb 2022 13:18:45 +0100 Subject: [PATCH 373/383] (bugfix): ignore setupTests and the file inside ./dev folder recursively. eslint can not resolve relative paths as we expected here, and it does not apply this rule. Signed-off-by: Hasan Oezdemir <21654050+nodify-at@users.noreply.github.com> --- packages/cli/config/eslint.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/cli/config/eslint.js b/packages/cli/config/eslint.js index 06f22933e8..5555dad451 100644 --- a/packages/cli/config/eslint.js +++ b/packages/cli/config/eslint.js @@ -55,8 +55,8 @@ module.exports = { devDependencies: [ '**/*.test.*', '**/*.stories.*', - 'src/setupTests.*', - 'dev/**', + '**/src/setupTests.*', + '**/dev/**', ], optionalDependencies: true, peerDependencies: true, From 3d7ed5377a90b5dabc8d28cb3046f72a037ac138 Mon Sep 17 00:00:00 2001 From: Hasan Oezdemir <21654050+nodify-at@users.noreply.github.com> Date: Wed, 23 Feb 2022 13:22:23 +0100 Subject: [PATCH 374/383] (bugfix): add a change set Signed-off-by: Hasan Oezdemir <21654050+nodify-at@users.noreply.github.com> --- .changeset/unlucky-squids-drop.md | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 .changeset/unlucky-squids-drop.md diff --git a/.changeset/unlucky-squids-drop.md b/.changeset/unlucky-squids-drop.md new file mode 100644 index 0000000000..644766f2f9 --- /dev/null +++ b/.changeset/unlucky-squids-drop.md @@ -0,0 +1,9 @@ +--- +'@backstage/cli': patch +--- + +Ignore setupTests and the file inside ./dev folder recursively. Eslint +can not resolve relative paths as we defined in the rule import/no-extraneous-dependencies, and it does not apply this rule. + +A downside to use a recursive definition would be to checking all `dev` folders, which might not be wanted. Ensure you don't use +the `dev` folder out of scope (must be used for dev. env. only) From da44c47f436d24607844ad6fc0038bb8cf42e8ed Mon Sep 17 00:00:00 2001 From: Johan Haals Date: Wed, 23 Feb 2022 13:29:46 +0100 Subject: [PATCH 375/383] catalog-model: Deprecate `entity.metadata.generation` Signed-off-by: Johan Haals --- .changeset/thirty-keys-study.md | 5 +++++ packages/catalog-model/src/entity/Entity.ts | 1 + 2 files changed, 6 insertions(+) create mode 100644 .changeset/thirty-keys-study.md diff --git a/.changeset/thirty-keys-study.md b/.changeset/thirty-keys-study.md new file mode 100644 index 0000000000..310f5bca34 --- /dev/null +++ b/.changeset/thirty-keys-study.md @@ -0,0 +1,5 @@ +--- +'@backstage/catalog-model': patch +--- + +Deprecated the `entity.metadata.generation` field which has been superseded by `entity.metadata.etag`. diff --git a/packages/catalog-model/src/entity/Entity.ts b/packages/catalog-model/src/entity/Entity.ts index 7199334e51..00865c6671 100644 --- a/packages/catalog-model/src/entity/Entity.ts +++ b/packages/catalog-model/src/entity/Entity.ts @@ -116,6 +116,7 @@ export type EntityMeta = JsonObject & { * This field can not be set by the user at creation time, and the server * will reject an attempt to do so. The field will be populated in read * operations. + * @deprecated replaced by etag. */ generation?: number; From a561569a10b2cd73b039b4546593e72f2409f341 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Wed, 23 Feb 2022 13:36:46 +0100 Subject: [PATCH 376/383] default namespace MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- packages/catalog-model/src/entity/ref.test.ts | 4 ++-- packages/catalog-model/src/entity/ref.ts | 6 ++++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/packages/catalog-model/src/entity/ref.test.ts b/packages/catalog-model/src/entity/ref.test.ts index 9fc55612fe..ba0402cb71 100644 --- a/packages/catalog-model/src/entity/ref.test.ts +++ b/packages/catalog-model/src/entity/ref.test.ts @@ -194,12 +194,12 @@ describe('ref', () => { }); expect(parseEntityRef('a:c')).toEqual({ kind: 'a', - namespace: undefined, + namespace: 'default', name: 'c', }); expect(parseEntityRef('c')).toEqual({ kind: undefined, - namespace: undefined, + namespace: 'default', name: 'c', }); }); diff --git a/packages/catalog-model/src/entity/ref.ts b/packages/catalog-model/src/entity/ref.ts index 850b11686f..3c77998eb8 100644 --- a/packages/catalog-model/src/entity/ref.ts +++ b/packages/catalog-model/src/entity/ref.ts @@ -171,11 +171,13 @@ export function parseEntityRef( throw new Error(`Entity reference must not be empty`); } + const defaultNamespace = context.defaultNamespace || DEFAULT_NAMESPACE; + if (typeof ref === 'string') { const parsed = parseRefString(ref); return { kind: parsed.kind ?? context.defaultKind, - namespace: parsed.namespace ?? context.defaultNamespace, + namespace: parsed.namespace ?? defaultNamespace, name: parsed.name, }; } @@ -191,7 +193,7 @@ export function parseEntityRef( return { kind: kind ?? context.defaultKind, - namespace: namespace ?? context.defaultNamespace, + namespace: namespace ?? defaultNamespace, name, }; } From 14bed12b763feac729890e289adba601ec923c44 Mon Sep 17 00:00:00 2001 From: Johan Haals Date: Wed, 23 Feb 2022 13:37:42 +0100 Subject: [PATCH 377/383] deprecate generation in entity schema Signed-off-by: Johan Haals --- packages/catalog-model/src/schema/EntityMeta.schema.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/catalog-model/src/schema/EntityMeta.schema.json b/packages/catalog-model/src/schema/EntityMeta.schema.json index c834bfb113..7b2b9d3f82 100644 --- a/packages/catalog-model/src/schema/EntityMeta.schema.json +++ b/packages/catalog-model/src/schema/EntityMeta.schema.json @@ -38,7 +38,8 @@ "type": "integer", "description": "A positive nonzero number that indicates the current generation of data for this entity; the value is incremented each time the spec changes. This field can not be set by the user at creation time, and the server will reject an attempt to do so. The field will be populated in read operations.", "examples": [1], - "minimum": 1 + "minimum": 1, + "deprecated": true }, "name": { "type": "string", From f3164b0c4637fb9785db1c5d4a8bfad9ff391e0d Mon Sep 17 00:00:00 2001 From: Francisco Ribas Date: Wed, 23 Feb 2022 10:10:44 -0300 Subject: [PATCH 378/383] =?UTF-8?q?Including=20Grupo=20Botic=C3=A1rio=20as?= =?UTF-8?q?=20adopter?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Francisco Ribas --- ADOPTERS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/ADOPTERS.md b/ADOPTERS.md index 1d2eb79ae8..eb83726b8d 100644 --- a/ADOPTERS.md +++ b/ADOPTERS.md @@ -99,3 +99,4 @@ _If you're using Backstage in your organization, please try to add your company | [Procore](https://www.procore.com/jobs/engineering) | [@shayon](https://github.com/Shayon), [@jamesdabbs-procore](https://github.com/jamesdabbs-procore) | Developer portal - centralized software catalog and templates to enable self serve and reduce cognitive load. | | [Bradesco](https://banco.bradesco/html/classic/sobre/index.shtm) | [@danilosoarescardoso](https://github.com/danilosoarescardoso) | Centralized developer portal with software catalog, software templates, techdocs and some plugins from community and by our own. | | [SeatGeek](https://seatgeek.com) | [@zhammer](https://github.com/zhammer) | Software catalog and documentation platform | +| [Grupo Boticário](https://www.grupoboticario.com.br/) | [@chicoribas](https://github.com/chicoribas), [@fndiaz](https://github.com/fndiaz), [@digogid](https://github.com/digogid), [@manumbs](https://github.com/manumbs), [@haooliveira84](https://github.com/haooliveira84), [@Rhullyam](https://github.com/Rhullyam) | Centralized developer portal with catalog, documentation, and software templates to build a ready to go application, including pipelines (CI/CD) and cloud services provisioning | \ No newline at end of file From 4d8b9320b328521c2ebd0199485bfafdbfadaa28 Mon Sep 17 00:00:00 2001 From: Johan Haals Date: Wed, 23 Feb 2022 14:12:15 +0100 Subject: [PATCH 379/383] update wording Signed-off-by: Johan Haals --- .changeset/thirty-keys-study.md | 2 +- packages/catalog-model/src/entity/Entity.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.changeset/thirty-keys-study.md b/.changeset/thirty-keys-study.md index 310f5bca34..e2cc5fa76e 100644 --- a/.changeset/thirty-keys-study.md +++ b/.changeset/thirty-keys-study.md @@ -2,4 +2,4 @@ '@backstage/catalog-model': patch --- -Deprecated the `entity.metadata.generation` field which has been superseded by `entity.metadata.etag`. +Deprecated the `entity.metadata.generation` as the field has never been fully functioning. diff --git a/packages/catalog-model/src/entity/Entity.ts b/packages/catalog-model/src/entity/Entity.ts index 00865c6671..3b8205fba6 100644 --- a/packages/catalog-model/src/entity/Entity.ts +++ b/packages/catalog-model/src/entity/Entity.ts @@ -116,7 +116,7 @@ export type EntityMeta = JsonObject & { * This field can not be set by the user at creation time, and the server * will reject an attempt to do so. The field will be populated in read * operations. - * @deprecated replaced by etag. + * @deprecated field is not supported. */ generation?: number; From 76e3cb1153def4edc9129b8dd7e46a3c58690ebc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Wed, 23 Feb 2022 14:33:35 +0100 Subject: [PATCH 380/383] fix tests MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- plugins/scaffolder-backend/src/service/router.test.ts | 8 ++++---- plugins/scaffolder-backend/src/service/router.ts | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/plugins/scaffolder-backend/src/service/router.test.ts b/plugins/scaffolder-backend/src/service/router.test.ts index f8336179eb..6a66d6df47 100644 --- a/plugins/scaffolder-backend/src/service/router.test.ts +++ b/plugins/scaffolder-backend/src/service/router.test.ts @@ -50,10 +50,10 @@ import request from 'supertest'; import { createRouter, DatabaseTaskStore, TaskBroker } from '../index'; import { StorageTaskBroker } from '../scaffolder/tasks/StorageTaskBroker'; -const createCatalogClient = (templates: any[] = []) => +const createCatalogClient = (template: any) => ({ - getEntities: async () => ({ items: templates }), - } as CatalogApi); + getEntityByName: async () => template, + } as unknown as CatalogApi); function createDatabase(): PluginDatabaseManager { return DatabaseManager.fromConfig( @@ -120,7 +120,7 @@ describe('createRouter', () => { logger: getVoidLogger(), config: new ConfigReader({}), database: createDatabase(), - catalogClient: createCatalogClient([template]), + catalogClient: createCatalogClient(template), containerRunner: new DockerContainerRunner({} as any), reader: mockUrlReader, taskBroker, diff --git a/plugins/scaffolder-backend/src/service/router.ts b/plugins/scaffolder-backend/src/service/router.ts index f768e354de..e1cd75dcc2 100644 --- a/plugins/scaffolder-backend/src/service/router.ts +++ b/plugins/scaffolder-backend/src/service/router.ts @@ -179,7 +179,7 @@ export async function createRouter( }) .post('/v2/tasks', async (req, res) => { const templateName: string = req.body.templateName; - const kind = 'Template'; + const kind = 'template'; const namespace = DEFAULT_NAMESPACE; const values = req.body.values; const token = getBearerToken(req.headers.authorization); From 21fb25f1c37fe6824afe2867c1d549f16c2a2c47 Mon Sep 17 00:00:00 2001 From: Guilherme Oenning Date: Wed, 23 Feb 2022 13:49:53 +0000 Subject: [PATCH 381/383] fix formatting Signed-off-by: Guilherme Oenning --- .../src/microsoftGraph/client.ts | 29 +++++++++++++------ 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/plugins/catalog-backend-module-msgraph/src/microsoftGraph/client.ts b/plugins/catalog-backend-module-msgraph/src/microsoftGraph/client.ts index 457a83c703..db749a536e 100644 --- a/plugins/catalog-backend-module-msgraph/src/microsoftGraph/client.ts +++ b/plugins/catalog-backend-module-msgraph/src/microsoftGraph/client.ts @@ -106,12 +106,13 @@ export class MicrosoftGraphClient { path: string, query?: ODataQuery, ): AsyncIterable { - - const headers: Record = query?.search ? { - // Eventual consistency is required to use $search. - // If a new user/group is not found, it'll eventually be imported on a subsequent read - ConsistencyLevel: 'eventual', - } : {} + const headers: Record = query?.search + ? { + // Eventual consistency is required to use $search. + // If a new user/group is not found, it'll eventually be imported on a subsequent read + ConsistencyLevel: 'eventual', + } + : {}; let response = await this.requestApi(path, query, headers); @@ -144,7 +145,11 @@ export class MicrosoftGraphClient { * @param query - OData Query {@link ODataQuery} * @param headers - optional HTTP headers */ - async requestApi(path: string, query?: ODataQuery, headers?: Record): Promise { + async requestApi( + path: string, + query?: ODataQuery, + headers?: Record, + ): Promise { const queryString = qs.stringify( { $search: query?.search, @@ -159,7 +164,10 @@ export class MicrosoftGraphClient { }, ); - return await this.requestRaw(`${this.baseUrl}/${path}${queryString}`, headers); + return await this.requestRaw( + `${this.baseUrl}/${path}${queryString}`, + headers, + ); } /** @@ -168,7 +176,10 @@ export class MicrosoftGraphClient { * @param url - HTTP Endpoint of Graph API * @param headers - optional HTTP headers */ - async requestRaw(url: string, headers?: Record): Promise { + async requestRaw( + url: string, + headers?: Record, + ): Promise { // Make sure that we always have a valid access token (might be cached) const token = await this.pca.acquireTokenByClientCredential({ scopes: ['https://graph.microsoft.com/.default'], From 420f8d710f88352507d82c2b966bf8b32947a22a Mon Sep 17 00:00:00 2001 From: Johan Haals Date: Wed, 23 Feb 2022 14:49:43 +0100 Subject: [PATCH 382/383] catalog-backend: Remove `processors.githubOrg` config section Signed-off-by: Johan Haals --- .changeset/metal-onions-explode.md | 5 ++ app-config.yaml | 8 --- plugins/catalog-backend/config.d.ts | 33 --------- .../processors/github/config.test.ts | 61 +---------------- .../src/ingestion/processors/github/config.ts | 68 ------------------- .../src/ingestion/processors/github/index.ts | 4 +- plugins/config-schema/dev/example-schema.json | 30 -------- 7 files changed, 8 insertions(+), 201 deletions(-) create mode 100644 .changeset/metal-onions-explode.md diff --git a/.changeset/metal-onions-explode.md b/.changeset/metal-onions-explode.md new file mode 100644 index 0000000000..447b21f7bb --- /dev/null +++ b/.changeset/metal-onions-explode.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend': patch +--- + +Removed the `processors.githubOrg` config section which is unused and has been replaced by the integrations config. diff --git a/app-config.yaml b/app-config.yaml index b025064c74..ab68d4398f 100644 --- a/app-config.yaml +++ b/app-config.yaml @@ -211,14 +211,6 @@ catalog: - Location processors: - githubOrg: - providers: - - target: https://github.com - token: ${GITHUB_TOKEN} - #### Example for how to add your GitHub Enterprise instance using the API: - # - target: https://ghe.example.net - # apiBaseUrl: https://ghe.example.net/api - # token: ${GHE_TOKEN} ldapOrg: ### Example for how to add your enterprise LDAP server # providers: diff --git a/plugins/catalog-backend/config.d.ts b/plugins/catalog-backend/config.d.ts index 8964e1ab0e..957f18c15f 100644 --- a/plugins/catalog-backend/config.d.ts +++ b/plugins/catalog-backend/config.d.ts @@ -110,39 +110,6 @@ export interface Config { * List of processor-specific options and attributes */ processors?: { - /** - * GithubOrgReaderProcessor configuration - * - * @deprecated Configure a GitHub integration instead. - */ - githubOrg?: { - /** - * The configuration parameters for each single GitHub org provider. - */ - providers: Array<{ - /** - * The prefix of the target that this matches on, e.g. - * "https://github.com", with no trailing slash. - */ - target: string; - /** - * The base URL of the API of this provider, e.g. - * "https://api.github.com", with no trailing slash. - * - * May be omitted specifically for GitHub; then it will be deduced. - */ - apiBaseUrl?: string; - /** - * The authorization token to use for requests to this provider. - * - * If no token is specified, anonymous access is used. - * - * @visibility secret - */ - token?: string; - }>; - }; - /** * GithubMultiOrgReaderProcessor configuration */ diff --git a/plugins/catalog-backend/src/ingestion/processors/github/config.test.ts b/plugins/catalog-backend/src/ingestion/processors/github/config.test.ts index a67d2378d0..3b722a0e7b 100644 --- a/plugins/catalog-backend/src/ingestion/processors/github/config.test.ts +++ b/plugins/catalog-backend/src/ingestion/processors/github/config.test.ts @@ -15,68 +15,9 @@ */ import { ConfigReader } from '@backstage/config'; -import { readGithubConfig, readGithubMultiOrgConfig } from './config'; +import { readGithubMultiOrgConfig } from './config'; describe('config', () => { - describe('readGithubConfig', () => { - function config( - providers: { target: string; apiBaseUrl?: string; token?: string }[], - ) { - return new ConfigReader({ - catalog: { processors: { githubOrg: { providers } } }, - }); - } - - it('adds a default GitHub entry when missing', () => { - const output = readGithubConfig(config([])); - expect(output).toEqual([ - { - target: 'https://github.com', - apiBaseUrl: 'https://api.github.com', - }, - ]); - }); - - it('injects the correct GitHub API base URL when missing', () => { - const output = readGithubConfig( - config([{ target: 'https://github.com' }]), - ); - expect(output).toEqual([ - { - target: 'https://github.com', - apiBaseUrl: 'https://api.github.com', - }, - ]); - }); - - it('rejects custom targets with no base URLs', () => { - expect(() => - readGithubConfig(config([{ target: 'https://ghe.company.com' }])), - ).toThrow( - 'Provider at https://ghe.company.com must configure an explicit apiBaseUrl', - ); - }); - - it('rejects funky configs', () => { - expect(() => readGithubConfig(config([{ target: 7 } as any]))).toThrow( - /target/, - ); - expect(() => - readGithubConfig(config([{ noTarget: '7' } as any])), - ).toThrow(/target/); - expect(() => - readGithubConfig( - config([{ target: 'https://github.com', apiBaseUrl: 7 } as any]), - ), - ).toThrow(/apiBaseUrl/); - expect(() => - readGithubConfig( - config([{ target: 'https://github.com', token: 7 } as any]), - ), - ).toThrow(/token/); - }); - }); - describe('readGithubMultiOrgConfig', () => { function config( orgs: { name: string; groupNamespace?: string; userNamespace?: string }[], diff --git a/plugins/catalog-backend/src/ingestion/processors/github/config.ts b/plugins/catalog-backend/src/ingestion/processors/github/config.ts index cd17d30311..242296b4be 100644 --- a/plugins/catalog-backend/src/ingestion/processors/github/config.ts +++ b/plugins/catalog-backend/src/ingestion/processors/github/config.ts @@ -15,74 +15,6 @@ */ import { Config } from '@backstage/config'; -import { trimEnd } from 'lodash'; - -/** - * The configuration parameters for a single GitHub API provider. - */ -export type ProviderConfig = { - /** - * The prefix of the target that this matches on, e.g. "https://github.com", - * with no trailing slash. - */ - target: string; - - /** - * The base URL of the API of this provider, e.g. "https://api.github.com", - * with no trailing slash. - * - * May be omitted specifically for GitHub; then it will be deduced. - */ - apiBaseUrl?: string; - - /** - * The authorization token to use for requests to this provider. - * - * If no token is specified, anonymous access is used. - */ - token?: string; -}; - -// TODO(freben): Break out common code and config from here and GithubReaderProcessor -export function readGithubConfig(config: Config): ProviderConfig[] { - const providers: ProviderConfig[] = []; - - const providerConfigs = - config.getOptionalConfigArray('catalog.processors.githubOrg.providers') ?? - []; - - // First read all the explicit providers - for (const providerConfig of providerConfigs) { - const target = trimEnd(providerConfig.getString('target'), '/'); - let apiBaseUrl = providerConfig.getOptionalString('apiBaseUrl'); - const token = providerConfig.getOptionalString('token'); - - if (apiBaseUrl) { - apiBaseUrl = trimEnd(apiBaseUrl, '/'); - } else if (target === 'https://github.com') { - apiBaseUrl = 'https://api.github.com'; - } - - if (!apiBaseUrl) { - throw new Error( - `Provider at ${target} must configure an explicit apiBaseUrl`, - ); - } - - providers.push({ target, apiBaseUrl, token }); - } - - // If no explicit github.com provider was added, put one in the list as - // a convenience - if (!providers.some(p => p.target === 'https://github.com')) { - providers.push({ - target: 'https://github.com', - apiBaseUrl: 'https://api.github.com', - }); - } - - return providers; -} /** * The configuration parameters for a multi-org GitHub processor. diff --git a/plugins/catalog-backend/src/ingestion/processors/github/index.ts b/plugins/catalog-backend/src/ingestion/processors/github/index.ts index 3d9e881ddd..3e31d9e00c 100644 --- a/plugins/catalog-backend/src/ingestion/processors/github/index.ts +++ b/plugins/catalog-backend/src/ingestion/processors/github/index.ts @@ -14,8 +14,8 @@ * limitations under the License. */ -export { readGithubConfig, readGithubMultiOrgConfig } from './config'; -export type { GithubMultiOrgConfig, ProviderConfig } from './config'; +export { readGithubMultiOrgConfig } from './config'; +export type { GithubMultiOrgConfig } from './config'; export { getOrganizationRepositories, getOrganizationTeams, diff --git a/plugins/config-schema/dev/example-schema.json b/plugins/config-schema/dev/example-schema.json index ac5c2ad347..be297aaa8d 100644 --- a/plugins/config-schema/dev/example-schema.json +++ b/plugins/config-schema/dev/example-schema.json @@ -746,36 +746,6 @@ "description": "List of processor-specific options and attributes", "type": "object", "properties": { - "githubOrg": { - "description": "GithubOrgReaderProcessor configuration", - "type": "object", - "required": ["providers"], - "properties": { - "providers": { - "description": "The configuration parameters for each single GitHub org provider.", - "type": "array", - "items": { - "type": "object", - "required": ["target"], - "properties": { - "target": { - "description": "The prefix of the target that this matches on, e.g.\n\"https://github.com\", with no trailing slash.", - "type": "string" - }, - "apiBaseUrl": { - "description": "The base URL of the API of this provider, e.g.\n\"https://api.github.com\", with no trailing slash.\n\nMay be omitted specifically for GitHub; then it will be deduced.", - "type": "string" - }, - "token": { - "description": "The authorization token to use for requests to this provider.\n\nIf no token is specified, anonymous access is used.", - "visibility": "secret", - "type": "string" - } - } - } - } - } - }, "ldapOrg": { "description": "LdapOrgReaderProcessor configuration", "type": "object", From 918c4df3c91781b873e3d25ccd9df211c171d0f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Wed, 23 Feb 2022 16:20:08 +0100 Subject: [PATCH 383/383] api report MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- plugins/catalog-backend-module-msgraph/api-report.md | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/plugins/catalog-backend-module-msgraph/api-report.md b/plugins/catalog-backend-module-msgraph/api-report.md index 9d98b12249..b83567b982 100644 --- a/plugins/catalog-backend-module-msgraph/api-report.md +++ b/plugins/catalog-backend-module-msgraph/api-report.md @@ -80,9 +80,16 @@ export class MicrosoftGraphClient { ): Promise; getUserProfile(userId: string): Promise; getUsers(query?: ODataQuery): AsyncIterable; - requestApi(path: string, query?: ODataQuery): Promise; + requestApi( + path: string, + query?: ODataQuery, + headers?: Record, + ): Promise; requestCollection(path: string, query?: ODataQuery): AsyncIterable; - requestRaw(url: string): Promise; + requestRaw( + url: string, + headers?: Record, + ): Promise; } // @public