diff --git a/.changeset/eighty-snakes-melt.md b/.changeset/eighty-snakes-melt.md
deleted file mode 100644
index f980d1c02e..0000000000
--- a/.changeset/eighty-snakes-melt.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/plugin-scaffolder': patch
----
-
-chore: set the lifecycle as beta logo
diff --git a/.changeset/famous-pillows-love.md b/.changeset/famous-pillows-love.md
deleted file mode 100644
index 972a2b10b4..0000000000
--- a/.changeset/famous-pillows-love.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-'@backstage/core-components': patch
-'@backstage/plugin-catalog': patch
-'@backstage/plugin-catalog-react': patch
----
-
-Improve accessibility of core & catalog components by adjusting them with non-breaking changes.
diff --git a/.changeset/fluffy-cats-approve.md b/.changeset/fluffy-cats-approve.md
new file mode 100644
index 0000000000..dff0972249
--- /dev/null
+++ b/.changeset/fluffy-cats-approve.md
@@ -0,0 +1,5 @@
+---
+'@backstage/create-app': patch
+---
+
+fix typo in the comments of EntityPage component
diff --git a/.changeset/kind-needles-appear.md b/.changeset/kind-needles-appear.md
deleted file mode 100644
index 9a8f56bf48..0000000000
--- a/.changeset/kind-needles-appear.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/plugin-catalog-backend-module-ldap': patch
----
-
-chore(deps): bump `@types/ldapjs` from 1.0.10 to 2.2.0
diff --git a/.changeset/lazy-apples-scream.md b/.changeset/lazy-apples-scream.md
deleted file mode 100644
index b666c3498a..0000000000
--- a/.changeset/lazy-apples-scream.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/plugin-auth-backend': patch
----
-
-Allow to configure SAML auth `acceptedClockSkewMs`
diff --git a/.changeset/pink-glasses-type.md b/.changeset/pink-glasses-type.md
deleted file mode 100644
index 45eb01987d..0000000000
--- a/.changeset/pink-glasses-type.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/plugin-api-docs': patch
----
-
-Add explicit import for `isomorphic-form-data` needed for `swagger-ui-react`
diff --git a/.changeset/pink-plants-reflect.md b/.changeset/pink-plants-reflect.md
deleted file mode 100644
index 7b0069644b..0000000000
--- a/.changeset/pink-plants-reflect.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/create-app': patch
----
-
-Update the `software-templates` to point to `main` branch instead of `master`
diff --git a/.changeset/purple-comics-fold.md b/.changeset/purple-comics-fold.md
new file mode 100644
index 0000000000..f5e02d64db
--- /dev/null
+++ b/.changeset/purple-comics-fold.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-kubernetes-backend': patch
+---
+
+Add configuration option to the kubernetes object types. Config option is under `kubernetes.resources`. Defaults to ['pods', 'services', 'configmaps', 'deployments', 'replicasets', 'horizontalpodautoscalers', 'ingresses']
diff --git a/.changeset/slimy-elephants-sell.md b/.changeset/slimy-elephants-sell.md
deleted file mode 100644
index c002e8e950..0000000000
--- a/.changeset/slimy-elephants-sell.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-'@backstage/plugin-kubernetes-backend': patch
-'@backstage/plugin-kubernetes-common': patch
-'@backstage/plugin-kubernetes': patch
----
-
-chore(deps): bump `@kubernetes/client-node` from 0.14.3 to 0.15.0
diff --git a/.changeset/small-emus-sin.md b/.changeset/small-emus-sin.md
deleted file mode 100644
index e5683d18f9..0000000000
--- a/.changeset/small-emus-sin.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/plugin-catalog-react': patch
----
-
-Fix `EntityListProvider` to not update url if unmounted
diff --git a/.changeset/soft-news-float.md b/.changeset/soft-news-float.md
new file mode 100644
index 0000000000..03eaf792c7
--- /dev/null
+++ b/.changeset/soft-news-float.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-scaffolder-backend': patch
+---
+
+Add the `scaffolder.defaultCommitMessage`, which defaults to `Initial commit`, so it can be customized.
diff --git a/.changeset/techdocs-she-was-gone.md b/.changeset/techdocs-she-was-gone.md
deleted file mode 100644
index a6821abcf6..0000000000
--- a/.changeset/techdocs-she-was-gone.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/plugin-techdocs': patch
----
-
-TechDocs now uses a "safe by default" sanitization library, rather than relying on its own, hard-coded list of allowable tags and attributes.
diff --git a/.changeset/weak-toes-agree.md b/.changeset/weak-toes-agree.md
deleted file mode 100644
index 8bdcf46fa2..0000000000
--- a/.changeset/weak-toes-agree.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/plugin-xcmetrics': minor
----
-
-New data in form of trend lines, status timeline and other is added to the dashboard of XCMetrics to give a better understanding of how the build system is behaving.
diff --git a/ADOPTERS.md b/ADOPTERS.md
index 041242c083..3291abc346 100644
--- a/ADOPTERS.md
+++ b/ADOPTERS.md
@@ -39,3 +39,4 @@
| [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. |
diff --git a/app-config.yaml b/app-config.yaml
index 074e28c086..f2df97b7b2 100644
--- a/app-config.yaml
+++ b/app-config.yaml
@@ -256,6 +256,8 @@ scaffolder:
# defaultAuthor:
# name: Scaffolder
# email: scaffolder@backstage.io
+ # Use to customize the default commit message when new components are created
+ # defaultCommitMessage: 'Initial commit'
github:
token: ${GITHUB_TOKEN}
visibility: public # or 'internal' or 'private'
diff --git a/docs/getting-started/app-custom-theme.md b/docs/getting-started/app-custom-theme.md
index aa3851463f..7973a54ab6 100644
--- a/docs/getting-started/app-custom-theme.md
+++ b/docs/getting-started/app-custom-theme.md
@@ -35,7 +35,7 @@ If you want more control over the theme, and for example customize font sizes
and margins, you can use the lower-level `createThemeOverrides` function
exported by [@backstage/theme](https://www.npmjs.com/package/@backstage/theme)
in combination with
-[createMuiTheme](https://material-ui.com/customization/theming/#createmuitheme-options-args-theme)
+[createTheme](https://material-ui.com/customization/theming/#createmuitheme-options-args-theme)
from [@material-ui/core](https://www.npmjs.com/package/@material-ui/core). See
the
[@backstage/theme source](https://github.com/backstage/backstage/tree/master/packages/theme/src)
diff --git a/microsite/static/css/custom.css b/microsite/static/css/custom.css
index 2c8b46ff00..393a5af118 100644
--- a/microsite/static/css/custom.css
+++ b/microsite/static/css/custom.css
@@ -288,6 +288,16 @@ td {
.tocToggler {
display: none;
}
+
+ .docsSliderActive .toc section .navGroups {
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .docsSliderActive.docsNavContainer {
+ background-color: #121212;
+ padding-bottom: 0;
+ }
}
/* content */
diff --git a/package.json b/package.json
index 93517d3374..ea1cf0c9b4 100644
--- a/package.json
+++ b/package.json
@@ -41,6 +41,7 @@
]
},
"resolutions": {
+ "**/@graphql-codegen/cli/**/ws": "^7.4.6",
"**/@roadiehq/**/@backstage/core": "*",
"**/@roadiehq/**/@backstage/plugin-catalog": "*",
"**/@roadiehq/**/@backstage/catalog-model": "*",
diff --git a/packages/app/CHANGELOG.md b/packages/app/CHANGELOG.md
index 494e7dbad2..af4e604a1b 100644
--- a/packages/app/CHANGELOG.md
+++ b/packages/app/CHANGELOG.md
@@ -1,5 +1,46 @@
# example-app
+## 0.2.39
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-scaffolder@0.10.2
+ - @backstage/core-components@0.2.0
+ - @backstage/plugin-catalog@0.6.9
+ - @backstage/plugin-catalog-react@0.4.0
+ - @backstage/cli@0.7.6
+ - @backstage/core-app-api@0.1.6
+ - @backstage/core-plugin-api@0.1.4
+ - @backstage/integration-react@0.1.5
+ - @backstage/theme@0.2.9
+ - @backstage/plugin-api-docs@0.6.4
+ - @backstage/plugin-badges@0.2.6
+ - @backstage/plugin-catalog-import@0.5.15
+ - @backstage/plugin-circleci@0.2.20
+ - @backstage/plugin-cloudbuild@0.2.20
+ - @backstage/plugin-code-coverage@0.1.8
+ - @backstage/plugin-cost-insights@0.11.2
+ - @backstage/plugin-explore@0.3.11
+ - @backstage/plugin-gcp-projects@0.3.1
+ - @backstage/plugin-github-actions@0.4.14
+ - @backstage/plugin-graphiql@0.2.13
+ - @backstage/plugin-jenkins@0.5.1
+ - @backstage/plugin-kafka@0.2.12
+ - @backstage/plugin-kubernetes@0.4.9
+ - @backstage/plugin-lighthouse@0.2.21
+ - @backstage/plugin-newrelic@0.3.1
+ - @backstage/plugin-org@0.3.18
+ - @backstage/plugin-pagerduty@0.3.9
+ - @backstage/plugin-rollbar@0.3.10
+ - @backstage/plugin-search@0.4.5
+ - @backstage/plugin-sentry@0.3.16
+ - @backstage/plugin-shortcuts@0.1.5
+ - @backstage/plugin-tech-radar@0.4.3
+ - @backstage/plugin-techdocs@0.10.2
+ - @backstage/plugin-todo@0.1.6
+ - @backstage/plugin-user-settings@0.3.2
+
## 0.2.37
### Patch Changes
diff --git a/packages/app/package.json b/packages/app/package.json
index 388635e56b..abba8492da 100644
--- a/packages/app/package.json
+++ b/packages/app/package.json
@@ -1,47 +1,47 @@
{
"name": "example-app",
- "version": "0.2.37",
+ "version": "0.2.39",
"private": true,
"bundled": true,
"dependencies": {
"@backstage/catalog-model": "^0.9.0",
- "@backstage/cli": "^0.7.4",
- "@backstage/core-app-api": "^0.1.3",
- "@backstage/core-components": "^0.1.5",
- "@backstage/core-plugin-api": "^0.1.3",
- "@backstage/integration-react": "^0.1.4",
- "@backstage/plugin-api-docs": "^0.6.2",
- "@backstage/plugin-badges": "^0.2.5",
- "@backstage/plugin-catalog": "^0.6.7",
- "@backstage/plugin-catalog-import": "^0.5.13",
- "@backstage/plugin-catalog-react": "^0.3.0",
- "@backstage/plugin-circleci": "^0.2.19",
- "@backstage/plugin-cloudbuild": "^0.2.19",
- "@backstage/plugin-code-coverage": "^0.1.7",
- "@backstage/plugin-cost-insights": "^0.11.0",
- "@backstage/plugin-explore": "^0.3.10",
- "@backstage/plugin-gcp-projects": "^0.3.0",
- "@backstage/plugin-github-actions": "^0.4.13",
- "@backstage/plugin-graphiql": "^0.2.12",
- "@backstage/plugin-jenkins": "^0.5.0",
- "@backstage/plugin-kafka": "^0.2.11",
- "@backstage/plugin-kubernetes": "^0.4.8",
- "@backstage/plugin-lighthouse": "^0.2.20",
- "@backstage/plugin-newrelic": "^0.3.0",
- "@backstage/plugin-org": "^0.3.17",
- "@backstage/plugin-pagerduty": "0.3.8",
- "@backstage/plugin-rollbar": "^0.3.9",
- "@backstage/plugin-scaffolder": "^0.10.1",
- "@backstage/plugin-search": "^0.4.3",
- "@backstage/plugin-sentry": "^0.3.15",
- "@backstage/plugin-shortcuts": "^0.1.4",
- "@backstage/plugin-tech-radar": "^0.4.1",
- "@backstage/plugin-techdocs": "^0.10.0",
- "@backstage/plugin-todo": "^0.1.5",
- "@backstage/plugin-user-settings": "^0.3.0",
+ "@backstage/cli": "^0.7.6",
+ "@backstage/core-app-api": "^0.1.6",
+ "@backstage/core-components": "^0.2.0",
+ "@backstage/core-plugin-api": "^0.1.4",
+ "@backstage/integration-react": "^0.1.5",
+ "@backstage/plugin-api-docs": "^0.6.4",
+ "@backstage/plugin-badges": "^0.2.6",
+ "@backstage/plugin-catalog": "^0.6.9",
+ "@backstage/plugin-catalog-import": "^0.5.15",
+ "@backstage/plugin-catalog-react": "^0.4.0",
+ "@backstage/plugin-circleci": "^0.2.20",
+ "@backstage/plugin-cloudbuild": "^0.2.20",
+ "@backstage/plugin-code-coverage": "^0.1.8",
+ "@backstage/plugin-cost-insights": "^0.11.2",
+ "@backstage/plugin-explore": "^0.3.11",
+ "@backstage/plugin-gcp-projects": "^0.3.1",
+ "@backstage/plugin-github-actions": "^0.4.14",
+ "@backstage/plugin-graphiql": "^0.2.13",
+ "@backstage/plugin-jenkins": "^0.5.1",
+ "@backstage/plugin-kafka": "^0.2.12",
+ "@backstage/plugin-kubernetes": "^0.4.9",
+ "@backstage/plugin-lighthouse": "^0.2.21",
+ "@backstage/plugin-newrelic": "^0.3.1",
+ "@backstage/plugin-org": "^0.3.18",
+ "@backstage/plugin-pagerduty": "0.3.9",
+ "@backstage/plugin-rollbar": "^0.3.10",
+ "@backstage/plugin-scaffolder": "^0.10.2",
+ "@backstage/plugin-search": "^0.4.5",
+ "@backstage/plugin-sentry": "^0.3.16",
+ "@backstage/plugin-shortcuts": "^0.1.5",
+ "@backstage/plugin-tech-radar": "^0.4.3",
+ "@backstage/plugin-techdocs": "^0.10.2",
+ "@backstage/plugin-todo": "^0.1.6",
+ "@backstage/plugin-user-settings": "^0.3.2",
"@backstage/search-common": "^0.1.2",
- "@backstage/theme": "^0.2.8",
- "@material-ui/core": "^4.11.0",
+ "@backstage/theme": "^0.2.9",
+ "@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.45",
"@octokit/rest": "^18.5.3",
@@ -60,7 +60,7 @@
"zen-observable": "^0.8.15"
},
"devDependencies": {
- "@backstage/test-utils": "^0.1.14",
+ "@backstage/test-utils": "^0.1.16",
"@testing-library/cypress": "^7.0.1",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^11.2.5",
diff --git a/packages/app/src/components/catalog/EntityPage.tsx b/packages/app/src/components/catalog/EntityPage.tsx
index 4e2e32cc86..d84a7341bc 100644
--- a/packages/app/src/components/catalog/EntityPage.tsx
+++ b/packages/app/src/components/catalog/EntityPage.tsx
@@ -40,6 +40,8 @@ import {
isKind,
EntityHasResourcesCard,
EntityOrphanWarning,
+ EntityProcessingErrorsPanel,
+ hasCatalogProcessingErrors,
isOrphan,
} from '@backstage/plugin-catalog';
import {
@@ -231,6 +233,14 @@ const overviewContent = (
+
+
+
+
+
+
+
+
diff --git a/packages/catalog-client/CHANGELOG.md b/packages/catalog-client/CHANGELOG.md
index d417f74f96..d04d1dc936 100644
--- a/packages/catalog-client/CHANGELOG.md
+++ b/packages/catalog-client/CHANGELOG.md
@@ -1,5 +1,11 @@
# @backstage/catalog-client
+## 0.3.18
+
+### Patch Changes
+
+- 11c370af2: Support filtering entities via property existence
+
## 0.3.17
### Patch Changes
diff --git a/packages/catalog-client/api-report.md b/packages/catalog-client/api-report.md
index c356deed4f..173af9aef3 100644
--- a/packages/catalog-client/api-report.md
+++ b/packages/catalog-client/api-report.md
@@ -25,6 +25,11 @@ export type AddLocationResponse = {
entities: Entity[];
};
+// Warning: (ae-missing-release-tag) "CATALOG_FILTER_EXISTS" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
+//
+// @public (undocumented)
+export const CATALOG_FILTER_EXISTS: unique symbol;
+
// Warning: (ae-missing-release-tag) "CatalogApi" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
@@ -123,8 +128,8 @@ export class CatalogClient implements CatalogApi {
// @public (undocumented)
export type CatalogEntitiesRequest = {
filter?:
- | Record[]
- | Record
+ | Record[]
+ | Record
| undefined;
fields?: string[] | undefined;
};
diff --git a/packages/catalog-client/package.json b/packages/catalog-client/package.json
index a114871a6e..cdbee32305 100644
--- a/packages/catalog-client/package.json
+++ b/packages/catalog-client/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/catalog-client",
- "version": "0.3.17",
+ "version": "0.3.18",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -35,7 +35,7 @@
"cross-fetch": "^3.0.6"
},
"devDependencies": {
- "@backstage/cli": "^0.7.5",
+ "@backstage/cli": "^0.7.6",
"@types/jest": "^26.0.7",
"msw": "^0.29.0"
},
diff --git a/packages/catalog-client/src/CatalogClient.test.ts b/packages/catalog-client/src/CatalogClient.test.ts
index 4e3d95f99f..d2db98bb25 100644
--- a/packages/catalog-client/src/CatalogClient.test.ts
+++ b/packages/catalog-client/src/CatalogClient.test.ts
@@ -18,7 +18,7 @@ import { Entity } from '@backstage/catalog-model';
import { rest } from 'msw';
import { setupServer } from 'msw/node';
import { CatalogClient } from './CatalogClient';
-import { CatalogListResponse } from './types/api';
+import { CATALOG_FILTER_EXISTS, CatalogListResponse } from './types/api';
import { DiscoveryApi } from './types/discovery';
const server = setupServer();
@@ -83,7 +83,7 @@ describe('CatalogClient', () => {
server.use(
rest.get(`${mockBaseUrl}/entities`, (req, res, ctx) => {
expect(req.url.search).toBe(
- '?filter=a=1,b=2,b=3,%C3%B6=%3D&filter=a=2',
+ '?filter=a=1,b=2,b=3,%C3%B6=%3D&filter=a=2&filter=c',
);
return res(ctx.json([]));
}),
@@ -100,6 +100,9 @@ describe('CatalogClient', () => {
{
a: '2',
},
+ {
+ c: CATALOG_FILTER_EXISTS,
+ },
],
},
{ token },
@@ -113,7 +116,7 @@ describe('CatalogClient', () => {
server.use(
rest.get(`${mockBaseUrl}/entities`, (req, res, ctx) => {
- expect(req.url.search).toBe('?filter=a=1,b=2,b=3,%C3%B6=%3D');
+ expect(req.url.search).toBe('?filter=a=1,b=2,b=3,%C3%B6=%3D,c');
return res(ctx.json([]));
}),
);
@@ -124,6 +127,7 @@ describe('CatalogClient', () => {
a: '1',
b: ['2', '3'],
รถ: '=',
+ c: CATALOG_FILTER_EXISTS,
},
},
{ token },
diff --git a/packages/catalog-client/src/CatalogClient.ts b/packages/catalog-client/src/CatalogClient.ts
index 5dfcddde0c..ef90287c37 100644
--- a/packages/catalog-client/src/CatalogClient.ts
+++ b/packages/catalog-client/src/CatalogClient.ts
@@ -26,6 +26,7 @@ import {
import { ResponseError } from '@backstage/errors';
import fetch from 'cross-fetch';
import {
+ CATALOG_FILTER_EXISTS,
AddLocationRequest,
AddLocationResponse,
CatalogApi,
@@ -69,9 +70,13 @@ export class CatalogClient implements CatalogApi {
const filterParts: string[] = [];
for (const [key, value] of Object.entries(filterItem)) {
for (const v of [value].flat()) {
- filterParts.push(
- `${encodeURIComponent(key)}=${encodeURIComponent(v)}`,
- );
+ if (v === CATALOG_FILTER_EXISTS) {
+ filterParts.push(encodeURIComponent(key));
+ } else if (typeof v === 'string') {
+ filterParts.push(
+ `${encodeURIComponent(key)}=${encodeURIComponent(v)}`,
+ );
+ }
}
}
diff --git a/packages/catalog-client/src/types/api.ts b/packages/catalog-client/src/types/api.ts
index ae3fd7b514..d30caa50d6 100644
--- a/packages/catalog-client/src/types/api.ts
+++ b/packages/catalog-client/src/types/api.ts
@@ -16,10 +16,12 @@
import { Entity, EntityName, Location } from '@backstage/catalog-model';
+export const CATALOG_FILTER_EXISTS = Symbol('CATALOG_FILTER_EXISTS');
+
export type CatalogEntitiesRequest = {
filter?:
- | Record[]
- | Record
+ | Record[]
+ | Record
| undefined;
fields?: string[] | undefined;
};
diff --git a/packages/catalog-client/src/types/index.ts b/packages/catalog-client/src/types/index.ts
index 6ec17fbae1..3bfcdd7fba 100644
--- a/packages/catalog-client/src/types/index.ts
+++ b/packages/catalog-client/src/types/index.ts
@@ -22,4 +22,5 @@ export type {
CatalogListResponse,
CatalogRequestOptions,
} from './api';
+export { CATALOG_FILTER_EXISTS } from './api';
export { ENTITY_STATUS_CATALOG_PROCESSING_TYPE } from './status';
diff --git a/packages/cli/CHANGELOG.md b/packages/cli/CHANGELOG.md
index b2877572fe..226712d209 100644
--- a/packages/cli/CHANGELOG.md
+++ b/packages/cli/CHANGELOG.md
@@ -1,5 +1,16 @@
# @backstage/cli
+## 0.7.6
+
+### Patch Changes
+
+- 9d40fcb1e: - Bumping `material-ui/core` version to at least `4.12.2` as they made some breaking changes in later versions which broke `Pagination` of the `Table`.
+ - Switching out `material-table` to `@material-table/core` for support for the later versions of `material-ui/core`
+ - This causes a minor API change to `@backstage/core-components` as the interface for `Table` re-exports the `prop` from the underlying `Table` components.
+ - `onChangeRowsPerPage` has been renamed to `onRowsPerPageChange`
+ - `onChangePage` has been renamed to `onPageChange`
+ - Migration guide is here: https://material-table-core.com/docs/breaking-changes
+
## 0.7.5
### Patch Changes
diff --git a/packages/cli/package.json b/packages/cli/package.json
index 1adaeaf725..91bb94d43b 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.7.5",
+ "version": "0.7.6",
"private": false,
"publishConfig": {
"access": "public"
@@ -120,12 +120,12 @@
"devDependencies": {
"@backstage/backend-common": "^0.8.7",
"@backstage/config": "^0.1.5",
- "@backstage/core-components": "^0.1.6",
- "@backstage/core-plugin-api": "^0.1.3",
- "@backstage/core-app-api": "^0.1.5",
- "@backstage/dev-utils": "^0.2.3",
- "@backstage/test-utils": "^0.1.15",
- "@backstage/theme": "^0.2.8",
+ "@backstage/core-components": "^0.2.0",
+ "@backstage/core-plugin-api": "^0.1.4",
+ "@backstage/core-app-api": "^0.1.6",
+ "@backstage/dev-utils": "^0.2.4",
+ "@backstage/test-utils": "^0.1.16",
+ "@backstage/theme": "^0.2.9",
"@types/diff": "^5.0.0",
"@types/express": "^4.17.6",
"@types/fs-extra": "^9.0.1",
diff --git a/packages/cli/templates/default-plugin/package.json.hbs b/packages/cli/templates/default-plugin/package.json.hbs
index dbba628055..fdac5a0c67 100644
--- a/packages/cli/templates/default-plugin/package.json.hbs
+++ b/packages/cli/templates/default-plugin/package.json.hbs
@@ -27,7 +27,7 @@
"@backstage/core-components": "^{{version '@backstage/core-components'}}",
"@backstage/core-plugin-api": "^{{version '@backstage/core-plugin-api'}}",
"@backstage/theme": "^{{version '@backstage/theme'}}",
- "@material-ui/core": "^4.11.0",
+ "@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.45",
"react": "^16.13.1",
diff --git a/packages/codemods/CHANGELOG.md b/packages/codemods/CHANGELOG.md
index 0c104d6c33..820780ced3 100644
--- a/packages/codemods/CHANGELOG.md
+++ b/packages/codemods/CHANGELOG.md
@@ -1,5 +1,14 @@
# @backstage/codemods
+## 0.1.7
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.2.0
+ - @backstage/core-app-api@0.1.6
+ - @backstage/core-plugin-api@0.1.4
+
## 0.1.6
### Patch Changes
diff --git a/packages/codemods/package.json b/packages/codemods/package.json
index 19c71c843c..18c621a523 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.6",
+ "version": "0.1.7",
"private": false,
"publishConfig": {
"access": "public",
diff --git a/packages/core-app-api/CHANGELOG.md b/packages/core-app-api/CHANGELOG.md
index 8e188a6577..904932a9b5 100644
--- a/packages/core-app-api/CHANGELOG.md
+++ b/packages/core-app-api/CHANGELOG.md
@@ -1,5 +1,20 @@
# @backstage/core-app-api
+## 0.1.6
+
+### Patch Changes
+
+- 9d40fcb1e: - Bumping `material-ui/core` version to at least `4.12.2` as they made some breaking changes in later versions which broke `Pagination` of the `Table`.
+ - Switching out `material-table` to `@material-table/core` for support for the later versions of `material-ui/core`
+ - This causes a minor API change to `@backstage/core-components` as the interface for `Table` re-exports the `prop` from the underlying `Table` components.
+ - `onChangeRowsPerPage` has been renamed to `onRowsPerPageChange`
+ - `onChangePage` has been renamed to `onPageChange`
+ - Migration guide is here: https://material-table-core.com/docs/breaking-changes
+- Updated dependencies
+ - @backstage/core-components@0.2.0
+ - @backstage/core-plugin-api@0.1.4
+ - @backstage/theme@0.2.9
+
## 0.1.5
### Patch Changes
diff --git a/packages/core-app-api/package.json b/packages/core-app-api/package.json
index 41e7c52393..d49d89eab6 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.1.5",
+ "version": "0.1.6",
"private": false,
"publishConfig": {
"access": "public",
@@ -29,11 +29,11 @@
"clean": "backstage-cli clean"
},
"dependencies": {
- "@backstage/core-components": "^0.1.6",
+ "@backstage/core-components": "^0.2.0",
"@backstage/config": "^0.1.3",
- "@backstage/core-plugin-api": "^0.1.3",
- "@backstage/theme": "^0.2.8",
- "@material-ui/core": "^4.11.0",
+ "@backstage/core-plugin-api": "^0.1.4",
+ "@backstage/theme": "^0.2.9",
+ "@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@types/react": "^16.9",
"@types/prop-types": "^15.7.3",
@@ -44,8 +44,8 @@
"zen-observable": "^0.8.15"
},
"devDependencies": {
- "@backstage/cli": "^0.7.5",
- "@backstage/test-utils": "^0.1.15",
+ "@backstage/cli": "^0.7.6",
+ "@backstage/test-utils": "^0.1.16",
"@backstage/test-utils-core": "^0.1.1",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^11.2.5",
diff --git a/packages/core-components/CHANGELOG.md b/packages/core-components/CHANGELOG.md
index 8372b25563..a7d2715f3e 100644
--- a/packages/core-components/CHANGELOG.md
+++ b/packages/core-components/CHANGELOG.md
@@ -1,5 +1,48 @@
# @backstage/core-components
+## 0.2.0
+
+### Minor Changes
+
+- 9d40fcb1e: - Bumping `material-ui/core` version to at least `4.12.2` as they made some breaking changes in later versions which broke `Pagination` of the `Table`.
+ - Switching out `material-table` to `@material-table/core` for support for the later versions of `material-ui/core`
+ - This causes a minor API change to `@backstage/core-components` as the interface for `Table` re-exports the `prop` from the underlying `Table` components.
+ - `onChangeRowsPerPage` has been renamed to `onRowsPerPageChange`
+ - `onChangePage` has been renamed to `onPageChange`
+ - Migration guide is here: https://material-table-core.com/docs/breaking-changes
+
+### Patch Changes
+
+- 19d9995b6: Improve accessibility of core & catalog components by adjusting them with non-breaking changes.
+- 224e54484: Added an `EntityProcessingErrorsPanel` component to show any errors that occurred when refreshing an entity from its source location.
+
+ If upgrading, this should be added to your `EntityPage` in your Backstage application:
+
+ ```diff
+ // packages/app/src/components/catalog/EntityPage.tsx
+
+ const overviewContent = (
+ ...
+
+
+
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+
+ ```
+
+ Additionally, `WarningPanel` now changes color based on the provided severity.
+
+- Updated dependencies
+ - @backstage/core-plugin-api@0.1.4
+ - @backstage/theme@0.2.9
+
## 0.1.6
### Patch Changes
diff --git a/packages/core-components/api-report.md b/packages/core-components/api-report.md
index ccafa4cfa7..5ce289d8d8 100644
--- a/packages/core-components/api-report.md
+++ b/packages/core-components/api-report.md
@@ -11,7 +11,7 @@ import { Breadcrumbs as Breadcrumbs_2 } from '@material-ui/core';
import { ButtonProps } from '@material-ui/core';
import { ButtonTypeMap } from '@material-ui/core';
import { CardHeaderProps } from '@material-ui/core';
-import { Column } from 'material-table';
+import { Column } from '@material-table/core';
import { CommonProps } from '@material-ui/core/OverridableComponent';
import { ComponentClass } from 'react';
import { ComponentProps } from 'react';
@@ -26,7 +26,7 @@ import { IconComponent } from '@backstage/core-plugin-api';
import { LinearProgressProps } from '@material-ui/core';
import { LinkProps as LinkProps_2 } from '@material-ui/core';
import { LinkProps as LinkProps_3 } from 'react-router-dom';
-import { MaterialTableProps } from 'material-table';
+import { MaterialTableProps } from '@material-table/core';
import { NavLinkProps } from 'react-router-dom';
import { ProfileInfoApi } from '@backstage/core-plugin-api';
import { PropsWithChildren } from 'react';
@@ -80,7 +80,7 @@ export const Avatar: ({
// Warning: (ae-missing-release-tag) "Breadcrumbs" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
-export const Breadcrumbs: ({ children, ...props }: Props_25) => JSX.Element;
+export const Breadcrumbs: ({ children, ...props }: Props_24) => JSX.Element;
// Warning: (ae-missing-release-tag) "BrokenImageIcon" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
@@ -441,7 +441,7 @@ export const Content: ({
noPadding,
children,
...props
-}: PropsWithChildren) => JSX.Element;
+}: PropsWithChildren) => JSX.Element;
// Warning: (ae-forgotten-export) The symbol "ContentHeaderProps" needs to be exported by the entry point index.d.ts
// Warning: (ae-missing-release-tag) "ContentHeader" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
@@ -695,7 +695,7 @@ export const Header: ({
tooltip,
type,
typeLink,
-}: PropsWithChildren) => JSX.Element;
+}: PropsWithChildren) => 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) "HeaderIconLinkRow" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
@@ -777,7 +777,7 @@ export const InfoCard: ({
className,
noPadding,
titleTypographyProps,
-}: Props_20) => JSX.Element;
+}: Props_19) => JSX.Element;
// Warning: (ae-missing-release-tag) "InfoCardVariants" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
@@ -1200,7 +1200,7 @@ export const OverflowTooltip: (props: Props_12) => JSX.Element;
export const Page: ({
themeId,
children,
-}: PropsWithChildren) => JSX.Element;
+}: PropsWithChildren) => JSX.Element;
// Warning: (ae-forgotten-export) The symbol "PageWithHeaderProps" needs to be exported by the entry point index.d.ts
// Warning: (ae-missing-release-tag) "PageWithHeader" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
@@ -1291,7 +1291,7 @@ export const Sidebar: ({
openDelayMs,
closeDelayMs,
children,
-}: PropsWithChildren) => JSX.Element;
+}: PropsWithChildren) => JSX.Element;
// Warning: (ae-missing-release-tag) "SIDEBAR_INTRO_LOCAL_STORAGE" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
@@ -2448,7 +2448,7 @@ export const SidebarSpacer: React_2.ComponentType<
// Warning: (ae-missing-release-tag) "SignInPage" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
-export const SignInPage: (props: Props_23) => JSX.Element;
+export const SignInPage: (props: Props_22) => JSX.Element;
// Warning: (ae-missing-release-tag) "SignInProviderConfig" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
@@ -2592,7 +2592,7 @@ export const TabbedCard: ({
deepLink,
value,
onChange,
-}: PropsWithChildren) => JSX.Element;
+}: PropsWithChildren) => JSX.Element;
// Warning: (ae-missing-release-tag) "TabbedLayout" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
@@ -2715,11 +2715,17 @@ export const WarningIcon: IconComponent;
// Warning: (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen
// Warning: (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets.
// Warning: (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}'
-// Warning: (ae-forgotten-export) The symbol "Props" needs to be exported by the entry point index.d.ts
+// Warning: (ae-forgotten-export) The symbol "WarningProps" needs to be exported by the entry point index.d.ts
// Warning: (ae-missing-release-tag) "WarningPanel" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public
-export const WarningPanel: (props: Props_17) => JSX.Element;
+export const WarningPanel: ({
+ severity,
+ title,
+ message,
+ children,
+ defaultExpanded,
+}: WarningProps) => JSX.Element;
// Warnings were encountered during analysis:
//
diff --git a/packages/core-components/package.json b/packages/core-components/package.json
index 944002c74f..d28d8a177e 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.1.6",
+ "version": "0.2.0",
"private": false,
"publishConfig": {
"access": "public",
@@ -30,10 +30,10 @@
},
"dependencies": {
"@backstage/config": "^0.1.5",
- "@backstage/core-plugin-api": "^0.1.2",
+ "@backstage/core-plugin-api": "^0.1.4",
"@backstage/errors": "^0.1.1",
- "@backstage/theme": "^0.2.8",
- "@material-ui/core": "^4.11.0",
+ "@backstage/theme": "^0.2.9",
+ "@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.45",
"@testing-library/react-hooks": "^3.4.2",
@@ -50,7 +50,7 @@
"dagre": "^0.8.5",
"immer": "^9.0.1",
"lodash": "^4.17.15",
- "material-table": "^1.69.1",
+ "@material-table/core": "^3.1.0",
"pluralize": "^8.0.0",
"prop-types": "^15.7.2",
"qs": "^6.9.4",
@@ -70,9 +70,9 @@
"zen-observable": "^0.8.15"
},
"devDependencies": {
- "@backstage/core-app-api": "^0.1.5",
- "@backstage/cli": "^0.7.5",
- "@backstage/test-utils": "^0.1.15",
+ "@backstage/core-app-api": "^0.1.6",
+ "@backstage/cli": "^0.7.6",
+ "@backstage/test-utils": "^0.1.16",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^11.2.5",
"@testing-library/user-event": "^13.1.8",
diff --git a/packages/core-components/src/components/ErrorPanel/ErrorPanel.tsx b/packages/core-components/src/components/ErrorPanel/ErrorPanel.tsx
index 14b5d50325..f9996b9b1f 100644
--- a/packages/core-components/src/components/ErrorPanel/ErrorPanel.tsx
+++ b/packages/core-components/src/components/ErrorPanel/ErrorPanel.tsx
@@ -100,6 +100,7 @@ export const ErrorPanel = ({
}: PropsWithChildren) => {
return (
diff --git a/packages/core-components/src/components/Table/Table.tsx b/packages/core-components/src/components/Table/Table.tsx
index f518a84d52..6e049d1b6a 100644
--- a/packages/core-components/src/components/Table/Table.tsx
+++ b/packages/core-components/src/components/Table/Table.tsx
@@ -47,14 +47,13 @@ import MTable, {
MTableHeader,
MTableToolbar,
Options,
-} from 'material-table';
+} from '@material-table/core';
import React, {
forwardRef,
MutableRefObject,
ReactNode,
useCallback,
useEffect,
- useRef,
useState,
} from 'react';
import { CheckboxTreeProps } from '../CheckboxTree/CheckboxTree';
@@ -298,13 +297,6 @@ export function Table({
const MTColumns = convertColumns(columns, theme);
const [search, setSearch] = useState(calculatedInitialState.search);
- const toolbarRef = useRef();
-
- useEffect(() => {
- if (toolbarRef.current) {
- toolbarRef.current.onSearchChange(search);
- }
- }, [search, toolbarRef]);
useEffect(() => {
if (onStateChange) {
@@ -440,7 +432,6 @@ export function Table({
toolbarProps => {
return (
({
/>
);
},
- [toggleFilters, hasFilters, selectedFiltersLength, setSearch, toolbarRef],
+ [toggleFilters, hasFilters, selectedFiltersLength, setSearch],
);
const hasNoRows = typeof data !== 'function' && data.length === 0;
diff --git a/packages/core-components/src/components/WarningPanel/WarningPanel.test.tsx b/packages/core-components/src/components/WarningPanel/WarningPanel.test.tsx
index 36b5372900..4ae6423333 100644
--- a/packages/core-components/src/components/WarningPanel/WarningPanel.test.tsx
+++ b/packages/core-components/src/components/WarningPanel/WarningPanel.test.tsx
@@ -19,11 +19,19 @@ import { fireEvent, screen } from '@testing-library/react';
import { renderInTestApp } from '@backstage/test-utils';
import { Typography } from '@material-ui/core';
-import { WarningPanel } from './WarningPanel';
+import { WarningPanel, WarningProps } from './WarningPanel';
-const propsTitle = { title: 'Mock title' };
-const propsTitleMessage = { title: 'Mock title', message: 'Some more info' };
-const propsMessage = { message: 'Some more info' };
+const propsTitle: WarningProps = { title: 'Mock title' };
+const propsTitleMessage: WarningProps = {
+ title: 'Mock title',
+ message: 'Some more info',
+};
+const propsMessage: WarningProps = { message: 'Some more info' };
+const propsErrorMessage: WarningProps = {
+ severity: 'error',
+ title: 'Mock title',
+ message: 'Some more info',
+};
describe('', () => {
it('renders without exploding', async () => {
@@ -64,4 +72,8 @@ describe('', () => {
expect(screen.getByText('Some more info')).toBeInTheDocument();
expect(screen.getByText('Java stacktrace')).toBeInTheDocument();
});
+ it('renders message using severity', async () => {
+ await renderInTestApp();
+ expect(screen.getByText('Error: Mock title')).toBeInTheDocument();
+ });
});
diff --git a/packages/core-components/src/components/WarningPanel/WarningPanel.tsx b/packages/core-components/src/components/WarningPanel/WarningPanel.tsx
index 37ae5b2c62..e6188172b7 100644
--- a/packages/core-components/src/components/WarningPanel/WarningPanel.tsx
+++ b/packages/core-components/src/components/WarningPanel/WarningPanel.tsx
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
import { BackstageTheme } from '@backstage/theme';
import {
Accordion,
@@ -22,30 +21,61 @@ import {
Grid,
makeStyles,
Typography,
+ darken,
+ lighten,
} from '@material-ui/core';
import ErrorOutline from '@material-ui/icons/ErrorOutline';
import ExpandMoreIcon from '@material-ui/icons/ExpandMore';
import React from 'react';
+const getWarningTextColor = (
+ severity: NonNullable,
+ theme: BackstageTheme,
+) => {
+ const getColor = theme.palette.type === 'light' ? darken : lighten;
+ return getColor(theme.palette[severity].light, 0.6);
+};
+
+const getWarningBackgroundColor = (
+ severity: NonNullable,
+ theme: BackstageTheme,
+) => {
+ const getBackgroundColor = theme.palette.type === 'light' ? lighten : darken;
+ return getBackgroundColor(theme.palette[severity].light, 0.9);
+};
+
const useErrorOutlineStyles = makeStyles(theme => ({
root: {
marginRight: theme.spacing(1),
- fill: theme.palette.warningText,
+ fill: ({ severity }: WarningProps) =>
+ getWarningTextColor(
+ severity as NonNullable,
+ theme,
+ ),
},
}));
-const ErrorOutlineStyled = () => {
- const classes = useErrorOutlineStyles();
+
+const ErrorOutlineStyled = ({ severity }: Pick) => {
+ const classes = useErrorOutlineStyles({ severity });
return ;
};
-const ExpandMoreIconStyled = () => {
- const classes = useErrorOutlineStyles();
+const ExpandMoreIconStyled = ({ severity }: Pick) => {
+ const classes = useErrorOutlineStyles({ severity });
return ;
};
const useStyles = makeStyles(theme => ({
panel: {
- backgroundColor: theme.palette.warningBackground,
- color: theme.palette.warningText,
+ backgroundColor: ({ severity }: WarningProps) =>
+ getWarningBackgroundColor(
+ severity as NonNullable,
+ theme,
+ ),
+ color: ({ severity }: WarningProps) =>
+ getWarningTextColor(
+ severity as NonNullable,
+ theme,
+ ),
verticalAlign: 'middle',
},
summary: {
@@ -53,14 +83,26 @@ const useStyles = makeStyles(theme => ({
flexDirection: 'row',
},
summaryText: {
- color: theme.palette.warningText,
+ color: ({ severity }: WarningProps) =>
+ getWarningTextColor(
+ severity as NonNullable,
+ theme,
+ ),
fontWeight: 'bold',
},
message: {
width: '100%',
display: 'block',
- color: theme.palette.warningText,
- backgroundColor: theme.palette.warningBackground,
+ color: ({ severity }: WarningProps) =>
+ getWarningTextColor(
+ severity as NonNullable,
+ theme,
+ ),
+ backgroundColor: ({ severity }: WarningProps) =>
+ getWarningBackgroundColor(
+ severity as NonNullable,
+ theme,
+ ),
},
details: {
width: '100%',
@@ -73,7 +115,7 @@ const useStyles = makeStyles(theme => ({
},
}));
-type Props = {
+export type WarningProps = {
title?: string;
severity?: 'warning' | 'error' | 'info';
message?: React.ReactNode;
@@ -89,19 +131,23 @@ const capitalize = (s: string) => {
* WarningPanel. Show a user friendly error message to a user similar to ErrorPanel except that the warning panel
* only shows the warning message to the user.
*
- * @param {string} [severity=warning] Ability to change the severity of the alert. Not fully implemented. (error, warning, info)
+ * @param {string} [severity=warning] Ability to change the severity of the alert.
* @param {string} [title] A title for the warning. If not supplied, "Warning" will be used.
* @param {Object} [message] Optional more detailed user-friendly message elaborating on the cause of the error.
* @param {Object} [children] Objects to provide context, such as a stack trace or detailed error reporting.
* Will be available inside an unfolded accordion.
*/
-export const WarningPanel = (props: Props) => {
- const classes = useStyles(props);
- const { severity, title, message, children, defaultExpanded } = props;
+export const WarningPanel = ({
+ severity = 'warning',
+ title,
+ message,
+ children,
+ defaultExpanded,
+}: WarningProps) => {
+ const classes = useStyles({ severity });
// If no severity or title provided, the heading will read simply "Warning"
- const subTitle =
- (severity ? capitalize(severity) : 'Warning') + (title ? `: ${title}` : '');
+ const subTitle = capitalize(severity) + (title ? `: ${title}` : '');
return (
{
role="alert"
>
}
+ expandIcon={}
className={classes.summary}
>
-
+
{subTitle}
diff --git a/packages/core-plugin-api/CHANGELOG.md b/packages/core-plugin-api/CHANGELOG.md
index 740f42708f..cd3b2a9a59 100644
--- a/packages/core-plugin-api/CHANGELOG.md
+++ b/packages/core-plugin-api/CHANGELOG.md
@@ -1,5 +1,18 @@
# @backstage/core-plugin-api
+## 0.1.4
+
+### Patch Changes
+
+- 9d40fcb1e: - Bumping `material-ui/core` version to at least `4.12.2` as they made some breaking changes in later versions which broke `Pagination` of the `Table`.
+ - Switching out `material-table` to `@material-table/core` for support for the later versions of `material-ui/core`
+ - This causes a minor API change to `@backstage/core-components` as the interface for `Table` re-exports the `prop` from the underlying `Table` components.
+ - `onChangeRowsPerPage` has been renamed to `onRowsPerPageChange`
+ - `onChangePage` has been renamed to `onPageChange`
+ - Migration guide is here: https://material-table-core.com/docs/breaking-changes
+- Updated dependencies
+ - @backstage/theme@0.2.9
+
## 0.1.3
### Patch Changes
diff --git a/packages/core-plugin-api/package.json b/packages/core-plugin-api/package.json
index 7b2aa3deea..374c158d57 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.1.3",
+ "version": "0.1.4",
"private": false,
"publishConfig": {
"access": "public",
@@ -30,8 +30,8 @@
},
"dependencies": {
"@backstage/config": "^0.1.3",
- "@backstage/theme": "^0.2.8",
- "@material-ui/core": "^4.11.0",
+ "@backstage/theme": "^0.2.9",
+ "@material-ui/core": "^4.12.2",
"@types/react": "^16.9",
"history": "^5.0.0",
"prop-types": "^15.7.2",
@@ -41,9 +41,9 @@
"zen-observable": "^0.8.15"
},
"devDependencies": {
- "@backstage/cli": "^0.7.2",
- "@backstage/core-app-api": "^0.1.3",
- "@backstage/test-utils": "^0.1.14",
+ "@backstage/cli": "^0.7.6",
+ "@backstage/core-app-api": "^0.1.6",
+ "@backstage/test-utils": "^0.1.16",
"@backstage/test-utils-core": "^0.1.1",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^11.2.5",
diff --git a/packages/create-app/CHANGELOG.md b/packages/create-app/CHANGELOG.md
index 1bbb66710b..ba2fbeebfc 100644
--- a/packages/create-app/CHANGELOG.md
+++ b/packages/create-app/CHANGELOG.md
@@ -1,5 +1,41 @@
# @backstage/create-app
+## 0.3.33
+
+### Patch Changes
+
+- 9d40fcb1e: - Bumping `material-ui/core` version to at least `4.12.2` as they made some breaking changes in later versions which broke `Pagination` of the `Table`.
+ - Switching out `material-table` to `@material-table/core` for support for the later versions of `material-ui/core`
+ - This causes a minor API change to `@backstage/core-components` as the interface for `Table` re-exports the `prop` from the underlying `Table` components.
+ - `onChangeRowsPerPage` has been renamed to `onRowsPerPageChange`
+ - `onChangePage` has been renamed to `onPageChange`
+ - Migration guide is here: https://material-table-core.com/docs/breaking-changes
+- d50c9e7c0: Update the `software-templates` to point to `main` branch instead of `master`
+- 224e54484: Added an `EntityProcessingErrorsPanel` component to show any errors that occurred when refreshing an entity from its source location.
+
+ If upgrading, this should be added to your `EntityPage` in your Backstage application:
+
+ ```diff
+ // packages/app/src/components/catalog/EntityPage.tsx
+
+ const overviewContent = (
+ ...
+
+
+
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+
+ ```
+
+ Additionally, `WarningPanel` now changes color based on the provided severity.
+
## 0.3.32
### Patch Changes
diff --git a/packages/create-app/package.json b/packages/create-app/package.json
index cedcba42c7..4a5d7b18f1 100644
--- a/packages/create-app/package.json
+++ b/packages/create-app/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/create-app",
"description": "Create app package for Backstage",
- "version": "0.3.32",
+ "version": "0.3.33",
"private": false,
"publishConfig": {
"access": "public"
diff --git a/packages/create-app/templates/default-app/packages/app/package.json.hbs b/packages/create-app/templates/default-app/packages/app/package.json.hbs
index 71cc86ba34..219f503aa0 100644
--- a/packages/create-app/templates/default-app/packages/app/package.json.hbs
+++ b/packages/create-app/templates/default-app/packages/app/package.json.hbs
@@ -23,7 +23,7 @@
"@backstage/plugin-user-settings": "^{{version '@backstage/plugin-user-settings'}}",
"@backstage/test-utils": "^{{version '@backstage/test-utils'}}",
"@backstage/theme": "^{{version '@backstage/theme'}}",
- "@material-ui/core": "^4.11.0",
+ "@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"history": "^5.0.0",
"react": "^16.13.1",
diff --git a/packages/create-app/templates/default-app/packages/app/src/components/catalog/EntityPage.tsx b/packages/create-app/templates/default-app/packages/app/src/components/catalog/EntityPage.tsx
index 2074a2712c..6b285aff92 100644
--- a/packages/create-app/templates/default-app/packages/app/src/components/catalog/EntityPage.tsx
+++ b/packages/create-app/templates/default-app/packages/app/src/components/catalog/EntityPage.tsx
@@ -35,8 +35,12 @@ import {
EntityLayout,
EntityLinksCard,
EntitySwitch,
+ EntityOrphanWarning,
+ EntityProcessingErrorsPanel,
isComponentType,
isKind,
+ hasCatalogProcessingErrors,
+ isOrphan,
} from '@backstage/plugin-catalog';
import {
isGithubActionsAvailable,
@@ -80,6 +84,22 @@ const cicdContent = (
const overviewContent = (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -160,7 +180,7 @@ const websiteEntityPage = (
/**
* NOTE: This page is designed to work on small screens such as mobile devices.
* This is based on Material UI Grid. If breakpoints are used, each grid item must set the `xs` prop to a column size or to `true`,
- * since this does not default. If no breakpoints are used, the items will equitably share the asvailable space.
+ * since this does not default. If no breakpoints are used, the items will equitably share the available space.
* https://material-ui.com/components/grid/#basic-grid.
*/
diff --git a/packages/dev-utils/CHANGELOG.md b/packages/dev-utils/CHANGELOG.md
index ea620350ef..e8fbab1d6f 100644
--- a/packages/dev-utils/CHANGELOG.md
+++ b/packages/dev-utils/CHANGELOG.md
@@ -1,5 +1,24 @@
# @backstage/dev-utils
+## 0.2.4
+
+### Patch Changes
+
+- 9d40fcb1e: - Bumping `material-ui/core` version to at least `4.12.2` as they made some breaking changes in later versions which broke `Pagination` of the `Table`.
+ - Switching out `material-table` to `@material-table/core` for support for the later versions of `material-ui/core`
+ - This causes a minor API change to `@backstage/core-components` as the interface for `Table` re-exports the `prop` from the underlying `Table` components.
+ - `onChangeRowsPerPage` has been renamed to `onRowsPerPageChange`
+ - `onChangePage` has been renamed to `onPageChange`
+ - Migration guide is here: https://material-table-core.com/docs/breaking-changes
+- Updated dependencies
+ - @backstage/core-components@0.2.0
+ - @backstage/plugin-catalog-react@0.4.0
+ - @backstage/core-app-api@0.1.6
+ - @backstage/core-plugin-api@0.1.4
+ - @backstage/integration-react@0.1.5
+ - @backstage/test-utils@0.1.16
+ - @backstage/theme@0.2.9
+
## 0.2.3
### Patch Changes
diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json
index a80745284c..b211c67f44 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.3",
+ "version": "0.2.4",
"private": false,
"publishConfig": {
"access": "public",
@@ -29,15 +29,15 @@
"clean": "backstage-cli clean"
},
"dependencies": {
- "@backstage/core-app-api": "^0.1.5",
- "@backstage/core-components": "^0.1.6",
- "@backstage/core-plugin-api": "^0.1.3",
+ "@backstage/core-app-api": "^0.1.6",
+ "@backstage/core-components": "^0.2.0",
+ "@backstage/core-plugin-api": "^0.1.4",
"@backstage/catalog-model": "^0.9.0",
- "@backstage/integration-react": "^0.1.4",
- "@backstage/plugin-catalog-react": "^0.3.1",
- "@backstage/test-utils": "^0.1.15",
- "@backstage/theme": "^0.2.8",
- "@material-ui/core": "^4.11.0",
+ "@backstage/integration-react": "^0.1.5",
+ "@backstage/plugin-catalog-react": "^0.4.0",
+ "@backstage/test-utils": "^0.1.16",
+ "@backstage/theme": "^0.2.9",
+ "@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^11.2.5",
@@ -50,7 +50,7 @@
"react-router-dom": "6.0.0-beta.0"
},
"devDependencies": {
- "@backstage/cli": "^0.7.5",
+ "@backstage/cli": "^0.7.6",
"@types/jest": "^26.0.7",
"@types/node": "^14.14.32"
},
diff --git a/packages/integration-react/CHANGELOG.md b/packages/integration-react/CHANGELOG.md
index 48c0260fc5..8dc9742651 100644
--- a/packages/integration-react/CHANGELOG.md
+++ b/packages/integration-react/CHANGELOG.md
@@ -1,5 +1,20 @@
# @backstage/integration-react
+## 0.1.5
+
+### Patch Changes
+
+- 9d40fcb1e: - Bumping `material-ui/core` version to at least `4.12.2` as they made some breaking changes in later versions which broke `Pagination` of the `Table`.
+ - Switching out `material-table` to `@material-table/core` for support for the later versions of `material-ui/core`
+ - This causes a minor API change to `@backstage/core-components` as the interface for `Table` re-exports the `prop` from the underlying `Table` components.
+ - `onChangeRowsPerPage` has been renamed to `onRowsPerPageChange`
+ - `onChangePage` has been renamed to `onPageChange`
+ - Migration guide is here: https://material-table-core.com/docs/breaking-changes
+- Updated dependencies
+ - @backstage/core-components@0.2.0
+ - @backstage/core-plugin-api@0.1.4
+ - @backstage/theme@0.2.9
+
## 0.1.4
### Patch Changes
diff --git a/packages/integration-react/package.json b/packages/integration-react/package.json
index e0161cb5ab..e285462539 100644
--- a/packages/integration-react/package.json
+++ b/packages/integration-react/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/integration-react",
- "version": "0.1.4",
+ "version": "0.1.5",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -21,11 +21,11 @@
},
"dependencies": {
"@backstage/config": "^0.1.2",
- "@backstage/core-components": "^0.1.3",
- "@backstage/core-plugin-api": "^0.1.3",
+ "@backstage/core-components": "^0.2.0",
+ "@backstage/core-plugin-api": "^0.1.4",
"@backstage/integration": "^0.5.6",
- "@backstage/theme": "^0.2.3",
- "@material-ui/core": "^4.11.0",
+ "@backstage/theme": "^0.2.9",
+ "@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.45",
"react": "^16.13.1",
@@ -33,9 +33,9 @@
"react-use": "^17.2.4"
},
"devDependencies": {
- "@backstage/cli": "^0.7.2",
- "@backstage/dev-utils": "^0.2.0",
- "@backstage/test-utils": "^0.1.14",
+ "@backstage/cli": "^0.7.6",
+ "@backstage/dev-utils": "^0.2.4",
+ "@backstage/test-utils": "^0.1.16",
"@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-common/CHANGELOG.md b/packages/techdocs-common/CHANGELOG.md
index ab5eff10e3..d548d84409 100644
--- a/packages/techdocs-common/CHANGELOG.md
+++ b/packages/techdocs-common/CHANGELOG.md
@@ -1,5 +1,15 @@
# @backstage/techdocs-common
+## 0.7.1
+
+### Patch Changes
+
+- 59a5fa319: Migrated files are now printed when `techdocs-cli migrate` is run with the
+ `--verbose` flag set.
+- 54356336e: TechDocs generator stage now supports `mkdocs.yaml` file, in addition to `.yml`
+ depending on whichever is present at the time of generation. (Assumes the
+ latest `spotify/techdocs` container, running mkdocs `v1.2.2` or greater).
+
## 0.7.0
### Minor Changes
diff --git a/packages/techdocs-common/package.json b/packages/techdocs-common/package.json
index bb81c875fd..e9cdade22f 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.7.0",
+ "version": "0.7.1",
"main": "src/index.ts",
"types": "src/index.ts",
"private": false,
@@ -60,7 +60,7 @@
"winston": "^3.2.1"
},
"devDependencies": {
- "@backstage/cli": "^0.7.5",
+ "@backstage/cli": "^0.7.6",
"@types/fs-extra": "^9.0.5",
"@types/git-url-parse": "^9.0.0",
"@types/js-yaml": "^4.0.0",
diff --git a/packages/techdocs-common/src/stages/generate/helpers.test.ts b/packages/techdocs-common/src/stages/generate/helpers.test.ts
index a5a6d99c29..a267736bd2 100644
--- a/packages/techdocs-common/src/stages/generate/helpers.test.ts
+++ b/packages/techdocs-common/src/stages/generate/helpers.test.ts
@@ -23,6 +23,7 @@ import { RemoteProtocol } from '../prepare/types';
import {
addBuildTimestampMetadata,
getGeneratorKey,
+ getMkdocsYml,
getRepoUrlFromLocationAnnotation,
isValidRepoUrlForMkdocs,
patchMkdocsYmlPreBuild,
@@ -53,6 +54,9 @@ const mkdocsYmlWithValidDocDir = fs.readFileSync(
const mkdocsYmlWithInvalidDocDir = fs.readFileSync(
resolvePath(__filename, '../__fixtures__/mkdocs_invalid_doc_dir.yml'),
);
+const mkdocsYmlWithInvalidDocDir2 = fs.readFileSync(
+ resolvePath(__filename, '../__fixtures__/mkdocs_invalid_doc_dir2.yml'),
+);
const mockLogger = getVoidLogger();
const rootDir = os.platform() === 'win32' ? 'C:\\rootDir' : '/rootDir';
@@ -334,48 +338,68 @@ describe('helpers', () => {
});
});
- describe('validateMkdocsYaml', () => {
- beforeEach(() => {
- mockFs({
- '/mkdocs.yml': mkdocsYml,
- '/mkdocs_with_extensions.yml': mkdocsYmlWithExtensions,
- '/mkdocs_valid_doc_dir.yml': mkdocsYmlWithValidDocDir,
- '/mkdocs_invalid_doc_dir.yml': mkdocsYmlWithInvalidDocDir,
- });
- });
-
+ describe('getMkdocsYml', () => {
afterEach(() => {
mockFs.restore();
});
const inputDir = resolvePath(__filename, '../__fixtures__/');
+
+ it('returns expected contents when .yml file is present', async () => {
+ const key = path.join(inputDir, 'mkdocs.yml');
+ mockFs({ [key]: mkdocsYml });
+ const { path: mkdocsPath, content } = await getMkdocsYml(inputDir);
+
+ expect(mkdocsPath).toBe(key);
+ expect(content).toBe(mkdocsYml.toString());
+ });
+
+ it('returns expected contents when .yaml file is present', async () => {
+ const key = path.join(inputDir, 'mkdocs.yaml');
+ mockFs({ [key]: mkdocsYml });
+ const { path: mkdocsPath, content } = await getMkdocsYml(inputDir);
+ expect(mkdocsPath).toBe(key);
+ expect(content).toBe(mkdocsYml.toString());
+ });
+
+ it('throws when neither .yml nor .yaml file is present', async () => {
+ const invalidInputDir = resolvePath(__filename);
+ await expect(getMkdocsYml(invalidInputDir)).rejects.toThrowError(
+ /Could not read MkDocs YAML config file mkdocs.yml or mkdocs.yaml for validation/,
+ );
+ });
+ });
+
+ describe('validateMkdocsYaml', () => {
+ const inputDir = resolvePath(__filename, '../__fixtures__/');
+
it('should return true on when no docs_dir present', async () => {
await expect(
- validateMkdocsYaml(inputDir, '/mkdocs.yml'),
+ validateMkdocsYaml(inputDir, mkdocsYml.toString()),
).resolves.toBeUndefined();
});
it('should return true on when a valid docs_dir is present', async () => {
await expect(
- validateMkdocsYaml(inputDir, '/mkdocs_valid_doc_dir.yml'),
+ validateMkdocsYaml(inputDir, mkdocsYmlWithValidDocDir.toString()),
).resolves.toBeUndefined();
});
it('should return false on absolute doc_dir path', async () => {
await expect(
- validateMkdocsYaml(inputDir, '/mkdocs_invalid_doc_dir.yml'),
+ validateMkdocsYaml(inputDir, mkdocsYmlWithInvalidDocDir.toString()),
).rejects.toThrow();
});
it('should return false on doc_dir path that traverses directory structure backwards', async () => {
await expect(
- validateMkdocsYaml(inputDir, '/mkdocs_invalid_doc_dir2.yml'),
+ validateMkdocsYaml(inputDir, mkdocsYmlWithInvalidDocDir2.toString()),
).rejects.toThrow();
});
it('should validate files with custom yaml tags', async () => {
await expect(
- validateMkdocsYaml(inputDir, '/mkdocs_with_extensions.yml'),
+ validateMkdocsYaml(inputDir, mkdocsYmlWithExtensions.toString()),
).resolves.toBeUndefined();
});
});
diff --git a/packages/techdocs-common/src/stages/generate/helpers.ts b/packages/techdocs-common/src/stages/generate/helpers.ts
index 590e75e7b2..c10303f29c 100644
--- a/packages/techdocs-common/src/stages/generate/helpers.ts
+++ b/packages/techdocs-common/src/stages/generate/helpers.ts
@@ -19,7 +19,7 @@ import { isChildPath } from '@backstage/backend-common';
import { spawn } from 'child_process';
import fs from 'fs-extra';
import yaml, { DEFAULT_SCHEMA, Type } from 'js-yaml';
-import { resolve as resolvePath } from 'path';
+import path, { resolve as resolvePath } from 'path';
import { PassThrough, Writable } from 'stream';
import { Logger } from 'winston';
import { ParsedLocationAnnotation } from '../../helpers';
@@ -155,26 +155,50 @@ const MKDOCS_SCHEMA = DEFAULT_SCHEMA.extend([
}),
]);
+/**
+ * Finds and loads the contents of either an mkdocs.yml or mkdocs.yaml file,
+ * depending on which is present (MkDocs supports both as of v1.2.2).
+ *
+ * @param {string} inputDir base dir to be searched for either an mkdocs.yml or
+ * mkdocs.yaml file.
+ */
+export const getMkdocsYml = async (
+ inputDir: string,
+): Promise<{ path: string; content: string }> => {
+ let mkdocsYmlPath: string;
+ let mkdocsYmlFileString: string;
+ try {
+ mkdocsYmlPath = path.join(inputDir, 'mkdocs.yaml');
+ mkdocsYmlFileString = await fs.readFile(mkdocsYmlPath, 'utf8');
+ } catch {
+ try {
+ mkdocsYmlPath = path.join(inputDir, 'mkdocs.yml');
+ mkdocsYmlFileString = await fs.readFile(mkdocsYmlPath, 'utf8');
+ } catch (error) {
+ throw new Error(
+ `Could not read MkDocs YAML config file mkdocs.yml or mkdocs.yaml for validation: ${error.message}`,
+ );
+ }
+ }
+
+ return {
+ path: mkdocsYmlPath,
+ content: mkdocsYmlFileString,
+ };
+};
+
/**
* Validating mkdocs config file for incorrect/insecure values
* Throws on invalid configs
*
* @param {string} inputDir base dir to be used as a docs_dir path validity check
- * @param {string} mkdocsYmlPath Absolute path to mkdocs.yml or equivalent of a docs site
+ * @param {string} mkdocsYmlFileString The string contents of the loaded
+ * mkdocs.yml or equivalent of a docs site
*/
export const validateMkdocsYaml = async (
inputDir: string,
- mkdocsYmlPath: string,
+ mkdocsYmlFileString: string,
) => {
- let mkdocsYmlFileString;
- try {
- mkdocsYmlFileString = await fs.readFile(mkdocsYmlPath, 'utf8');
- } catch (error) {
- throw new Error(
- `Could not read MkDocs YAML config file ${mkdocsYmlPath} before for validation: ${error.message}`,
- );
- }
-
const mkdocsYml: any = yaml.load(mkdocsYmlFileString, {
schema: MKDOCS_SCHEMA,
});
diff --git a/packages/techdocs-common/src/stages/generate/techdocs.ts b/packages/techdocs-common/src/stages/generate/techdocs.ts
index 9d6bf38c54..1a6577cad9 100644
--- a/packages/techdocs-common/src/stages/generate/techdocs.ts
+++ b/packages/techdocs-common/src/stages/generate/techdocs.ts
@@ -20,6 +20,7 @@ import path from 'path';
import { Logger } from 'winston';
import {
addBuildTimestampMetadata,
+ getMkdocsYml,
patchMkdocsYmlPreBuild,
runCommand,
storeEtagMetadata,
@@ -71,10 +72,8 @@ export class TechdocsGenerator implements GeneratorBase {
logger: childLogger,
logStream,
}: GeneratorRunOptions): Promise {
- // TODO: In future mkdocs.yml can be mkdocs.yaml. So, use a config variable here to find out
- // the correct file name.
// Do some updates to mkdocs.yml before generating docs e.g. adding repo_url
- const mkdocsYmlPath = path.join(inputDir, 'mkdocs.yml');
+ const { path: mkdocsYmlPath, content } = await getMkdocsYml(inputDir);
if (parsedLocationAnnotation) {
await patchMkdocsYmlPreBuild(
mkdocsYmlPath,
@@ -83,7 +82,7 @@ export class TechdocsGenerator implements GeneratorBase {
);
}
- await validateMkdocsYaml(inputDir, mkdocsYmlPath);
+ await validateMkdocsYaml(inputDir, content);
// Directories to bind on container
const mountDirs = {
diff --git a/packages/techdocs-common/src/stages/publish/awsS3.ts b/packages/techdocs-common/src/stages/publish/awsS3.ts
index 2942e33380..7bdc91ffd4 100644
--- a/packages/techdocs-common/src/stages/publish/awsS3.ts
+++ b/packages/techdocs-common/src/stages/publish/awsS3.ts
@@ -337,7 +337,7 @@ export class AwsS3Publish implements PublisherBase {
}
try {
- this.logger.debug(`Migrating ${file}`);
+ this.logger.verbose(`Migrating ${file}`);
await this.storageClient
.copyObject({
Bucket: this.bucketName,
diff --git a/packages/techdocs-common/src/stages/publish/azureBlobStorage.ts b/packages/techdocs-common/src/stages/publish/azureBlobStorage.ts
index 7ee67a0016..fe8fe9c2ce 100644
--- a/packages/techdocs-common/src/stages/publish/azureBlobStorage.ts
+++ b/packages/techdocs-common/src/stages/publish/azureBlobStorage.ts
@@ -323,7 +323,7 @@ export class AzureBlobStoragePublish implements PublisherBase {
if (originalPath === newPath) return;
try {
- this.logger.debug(`Migrating ${originalPath}`);
+ this.logger.verbose(`Migrating ${originalPath}`);
await this.renameBlob(originalPath, newPath, removeOriginal);
} catch (e) {
this.logger.warn(`Unable to migrate ${originalPath}: ${e.message}`);
diff --git a/packages/techdocs-common/src/stages/publish/local.ts b/packages/techdocs-common/src/stages/publish/local.ts
index 3414d273dd..24af34932f 100644
--- a/packages/techdocs-common/src/stages/publish/local.ts
+++ b/packages/techdocs-common/src/stages/publish/local.ts
@@ -196,7 +196,7 @@ export class LocalPublish implements PublisherBase {
// Otherwise, copy or move the file.
await new Promise(resolve => {
const migrate = removeOriginal ? fs.move : fs.copyFile;
- this.logger.debug(`Migrating ${relativeFile}`);
+ this.logger.verbose(`Migrating ${relativeFile}`);
migrate(file, newFile, err => {
if (err) {
this.logger.warn(
diff --git a/packages/techdocs-common/src/stages/publish/migrations/GoogleMigration.ts b/packages/techdocs-common/src/stages/publish/migrations/GoogleMigration.ts
index cc35b351ea..192cefbfe2 100644
--- a/packages/techdocs-common/src/stages/publish/migrations/GoogleMigration.ts
+++ b/packages/techdocs-common/src/stages/publish/migrations/GoogleMigration.ts
@@ -64,7 +64,7 @@ export class MigrateWriteStream extends Writable {
const migrate = this.removeOriginal
? file.move.bind(file)
: file.copy.bind(file);
- this.logger.debug(`Migrating ${file.name}`);
+ this.logger.verbose(`Migrating ${file.name}`);
migrate(newFile)
.catch(e =>
this.logger.warn(`Unable to migrate ${file.name}: ${e.message}`),
diff --git a/packages/test-utils/CHANGELOG.md b/packages/test-utils/CHANGELOG.md
index 12627e55a0..a16b2a6259 100644
--- a/packages/test-utils/CHANGELOG.md
+++ b/packages/test-utils/CHANGELOG.md
@@ -1,5 +1,20 @@
# @backstage/test-utils
+## 0.1.16
+
+### Patch Changes
+
+- 9d40fcb1e: - Bumping `material-ui/core` version to at least `4.12.2` as they made some breaking changes in later versions which broke `Pagination` of the `Table`.
+ - Switching out `material-table` to `@material-table/core` for support for the later versions of `material-ui/core`
+ - This causes a minor API change to `@backstage/core-components` as the interface for `Table` re-exports the `prop` from the underlying `Table` components.
+ - `onChangeRowsPerPage` has been renamed to `onRowsPerPageChange`
+ - `onChangePage` has been renamed to `onPageChange`
+ - Migration guide is here: https://material-table-core.com/docs/breaking-changes
+- Updated dependencies
+ - @backstage/core-app-api@0.1.6
+ - @backstage/core-plugin-api@0.1.4
+ - @backstage/theme@0.2.9
+
## 0.1.15
### Patch Changes
diff --git a/packages/test-utils/package.json b/packages/test-utils/package.json
index cfe4f2198e..d5c8c505e4 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.1.15",
+ "version": "0.1.16",
"private": false,
"publishConfig": {
"access": "public",
@@ -29,11 +29,11 @@
"clean": "backstage-cli clean"
},
"dependencies": {
- "@backstage/core-app-api": "^0.1.5",
- "@backstage/core-plugin-api": "^0.1.3",
+ "@backstage/core-app-api": "^0.1.6",
+ "@backstage/core-plugin-api": "^0.1.4",
"@backstage/test-utils-core": "^0.1.1",
- "@backstage/theme": "^0.2.8",
- "@material-ui/core": "^4.11.0",
+ "@backstage/theme": "^0.2.9",
+ "@material-ui/core": "^4.12.2",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^11.2.5",
"@testing-library/user-event": "^13.1.8",
@@ -46,7 +46,7 @@
"zen-observable": "^0.8.15"
},
"devDependencies": {
- "@backstage/cli": "^0.7.5",
+ "@backstage/cli": "^0.7.6",
"@types/jest": "^26.0.7",
"@types/node": "^14.14.32"
},
diff --git a/packages/theme/CHANGELOG.md b/packages/theme/CHANGELOG.md
index e19e044977..8b00be65f5 100644
--- a/packages/theme/CHANGELOG.md
+++ b/packages/theme/CHANGELOG.md
@@ -1,5 +1,16 @@
# @backstage/theme
+## 0.2.9
+
+### Patch Changes
+
+- 9d40fcb1e: - Bumping `material-ui/core` version to at least `4.12.2` as they made some breaking changes in later versions which broke `Pagination` of the `Table`.
+ - Switching out `material-table` to `@material-table/core` for support for the later versions of `material-ui/core`
+ - This causes a minor API change to `@backstage/core-components` as the interface for `Table` re-exports the `prop` from the underlying `Table` components.
+ - `onChangeRowsPerPage` has been renamed to `onRowsPerPageChange`
+ - `onChangePage` has been renamed to `onPageChange`
+ - Migration guide is here: https://material-table-core.com/docs/breaking-changes
+
## 0.2.8
### Patch Changes
diff --git a/packages/theme/package.json b/packages/theme/package.json
index d433be4648..f041134cd5 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.8",
+ "version": "0.2.9",
"private": false,
"publishConfig": {
"access": "public",
@@ -28,10 +28,10 @@
"clean": "backstage-cli clean"
},
"dependencies": {
- "@material-ui/core": "^4.11.0"
+ "@material-ui/core": "^4.12.2"
},
"devDependencies": {
- "@backstage/cli": "^0.7.0"
+ "@backstage/cli": "^0.7.6"
},
"files": [
"dist"
diff --git a/packages/theme/src/baseTheme.ts b/packages/theme/src/baseTheme.ts
index 93132d8b7a..b2d964c4db 100644
--- a/packages/theme/src/baseTheme.ts
+++ b/packages/theme/src/baseTheme.ts
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-import { createMuiTheme } from '@material-ui/core';
+import { createTheme as createMuiTheme } from '@material-ui/core';
import { darken, lighten } from '@material-ui/core/styles/colorManipulator';
import { Overrides } from '@material-ui/core/styles/overrides';
diff --git a/plugins/api-docs/CHANGELOG.md b/plugins/api-docs/CHANGELOG.md
index dfa9130b4d..1a12d645c4 100644
--- a/plugins/api-docs/CHANGELOG.md
+++ b/plugins/api-docs/CHANGELOG.md
@@ -1,5 +1,23 @@
# @backstage/plugin-api-docs
+## 0.6.4
+
+### Patch Changes
+
+- 9d40fcb1e: - Bumping `material-ui/core` version to at least `4.12.2` as they made some breaking changes in later versions which broke `Pagination` of the `Table`.
+ - Switching out `material-table` to `@material-table/core` for support for the later versions of `material-ui/core`
+ - This causes a minor API change to `@backstage/core-components` as the interface for `Table` re-exports the `prop` from the underlying `Table` components.
+ - `onChangeRowsPerPage` has been renamed to `onRowsPerPageChange`
+ - `onChangePage` has been renamed to `onPageChange`
+ - Migration guide is here: https://material-table-core.com/docs/breaking-changes
+- bebc09fa8: Add explicit import for `isomorphic-form-data` needed for `swagger-ui-react`
+- Updated dependencies
+ - @backstage/core-components@0.2.0
+ - @backstage/plugin-catalog@0.6.9
+ - @backstage/plugin-catalog-react@0.4.0
+ - @backstage/core-plugin-api@0.1.4
+ - @backstage/theme@0.2.9
+
## 0.6.3
### Patch Changes
diff --git a/plugins/api-docs/package.json b/plugins/api-docs/package.json
index 4294daea20..ffa488de2f 100644
--- a/plugins/api-docs/package.json
+++ b/plugins/api-docs/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-api-docs",
- "version": "0.6.3",
+ "version": "0.6.4",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -31,13 +31,13 @@
"dependencies": {
"@asyncapi/react-component": "^0.23.0",
"@backstage/catalog-model": "^0.9.0",
- "@backstage/core-components": "^0.1.6",
- "@backstage/core-plugin-api": "^0.1.3",
- "@backstage/plugin-catalog": "^0.6.8",
- "@backstage/plugin-catalog-react": "^0.3.1",
- "@backstage/theme": "^0.2.8",
+ "@backstage/core-components": "^0.2.0",
+ "@backstage/core-plugin-api": "^0.1.4",
+ "@backstage/plugin-catalog": "^0.6.9",
+ "@backstage/plugin-catalog-react": "^0.4.0",
+ "@backstage/theme": "^0.2.9",
"@material-icons/font": "^1.0.2",
- "@material-ui/core": "^4.11.0",
+ "@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.45",
"@types/react": "^16.9",
@@ -52,10 +52,10 @@
"swagger-ui-react": "^3.37.2"
},
"devDependencies": {
- "@backstage/cli": "^0.7.5",
- "@backstage/core-app-api": "^0.1.5",
- "@backstage/dev-utils": "^0.2.3",
- "@backstage/test-utils": "^0.1.15",
+ "@backstage/cli": "^0.7.6",
+ "@backstage/core-app-api": "^0.1.6",
+ "@backstage/dev-utils": "^0.2.4",
+ "@backstage/test-utils": "^0.1.16",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^11.2.5",
"@testing-library/user-event": "^13.1.8",
diff --git a/plugins/auth-backend/CHANGELOG.md b/plugins/auth-backend/CHANGELOG.md
index 218e20cd0e..9183eac0ad 100644
--- a/plugins/auth-backend/CHANGELOG.md
+++ b/plugins/auth-backend/CHANGELOG.md
@@ -1,5 +1,15 @@
# @backstage/plugin-auth-backend
+## 0.3.19
+
+### Patch Changes
+
+- 4edca1bd0: Allow to configure SAML auth `acceptedClockSkewMs`
+- b68f2c83c: Added the `disableRefresh` option to the `OAuth2` config
+- Updated dependencies
+ - @backstage/test-utils@0.1.16
+ - @backstage/catalog-client@0.3.18
+
## 0.3.18
### Patch Changes
diff --git a/plugins/auth-backend/config.d.ts b/plugins/auth-backend/config.d.ts
index ed6417850c..e3d626a9df 100644
--- a/plugins/auth-backend/config.d.ts
+++ b/plugins/auth-backend/config.d.ts
@@ -65,6 +65,7 @@ export interface Config {
authorizationUrl: string;
tokenUrl: string;
scope?: string;
+ disableRefresh?: boolean;
};
};
oidc?: {
diff --git a/plugins/auth-backend/package.json b/plugins/auth-backend/package.json
index 07097a880f..c9219ddfae 100644
--- a/plugins/auth-backend/package.json
+++ b/plugins/auth-backend/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-auth-backend",
- "version": "0.3.18",
+ "version": "0.3.19",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -30,11 +30,11 @@
},
"dependencies": {
"@backstage/backend-common": "^0.8.7",
- "@backstage/catalog-client": "^0.3.17",
+ "@backstage/catalog-client": "^0.3.18",
"@backstage/catalog-model": "^0.9.0",
"@backstage/config": "^0.1.5",
"@backstage/errors": "^0.1.1",
- "@backstage/test-utils": "^0.1.15",
+ "@backstage/test-utils": "^0.1.16",
"@types/express": "^4.17.6",
"@types/passport": "^1.0.3",
"compression": "^1.7.4",
@@ -68,7 +68,7 @@
"yn": "^4.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.7.5",
+ "@backstage/cli": "^0.7.6",
"@types/body-parser": "^1.19.0",
"@types/cookie-parser": "^1.4.2",
"@types/express-session": "^1.17.2",
diff --git a/plugins/auth-backend/src/providers/oauth2/provider.ts b/plugins/auth-backend/src/providers/oauth2/provider.ts
index f174543a63..6b1f92a2d5 100644
--- a/plugins/auth-backend/src/providers/oauth2/provider.ts
+++ b/plugins/auth-backend/src/providers/oauth2/provider.ts
@@ -177,6 +177,8 @@ export const createOAuth2Provider = (
const authorizationUrl = envConfig.getString('authorizationUrl');
const tokenUrl = envConfig.getString('tokenUrl');
const scope = envConfig.getOptionalString('scope');
+ const disableRefresh =
+ envConfig.getOptionalBoolean('disableRefresh') ?? false;
const provider = new OAuth2AuthProvider({
clientId,
@@ -188,7 +190,7 @@ export const createOAuth2Provider = (
});
return OAuthAdapter.fromConfig(globalConfig, provider, {
- disableRefresh: false,
+ disableRefresh,
providerId,
tokenIssuer,
});
diff --git a/plugins/badges/CHANGELOG.md b/plugins/badges/CHANGELOG.md
index c6f4b82596..db9510015a 100644
--- a/plugins/badges/CHANGELOG.md
+++ b/plugins/badges/CHANGELOG.md
@@ -1,5 +1,21 @@
# @backstage/plugin-badges
+## 0.2.6
+
+### Patch Changes
+
+- 9d40fcb1e: - Bumping `material-ui/core` version to at least `4.12.2` as they made some breaking changes in later versions which broke `Pagination` of the `Table`.
+ - Switching out `material-table` to `@material-table/core` for support for the later versions of `material-ui/core`
+ - This causes a minor API change to `@backstage/core-components` as the interface for `Table` re-exports the `prop` from the underlying `Table` components.
+ - `onChangeRowsPerPage` has been renamed to `onRowsPerPageChange`
+ - `onChangePage` has been renamed to `onPageChange`
+ - Migration guide is here: https://material-table-core.com/docs/breaking-changes
+- Updated dependencies
+ - @backstage/core-components@0.2.0
+ - @backstage/plugin-catalog-react@0.4.0
+ - @backstage/core-plugin-api@0.1.4
+ - @backstage/theme@0.2.9
+
## 0.2.5
### Patch Changes
diff --git a/plugins/badges/package.json b/plugins/badges/package.json
index 3d38bc6d92..f2ac4c748b 100644
--- a/plugins/badges/package.json
+++ b/plugins/badges/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-badges",
- "version": "0.2.5",
+ "version": "0.2.6",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -21,12 +21,12 @@
},
"dependencies": {
"@backstage/catalog-model": "^0.9.0",
- "@backstage/core-components": "^0.1.6",
- "@backstage/core-plugin-api": "^0.1.3",
+ "@backstage/core-components": "^0.2.0",
+ "@backstage/core-plugin-api": "^0.1.4",
"@backstage/errors": "^0.1.1",
- "@backstage/plugin-catalog-react": "^0.3.0",
- "@backstage/theme": "^0.2.8",
- "@material-ui/core": "^4.11.0",
+ "@backstage/plugin-catalog-react": "^0.4.0",
+ "@backstage/theme": "^0.2.9",
+ "@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.45",
"react": "^16.13.1",
@@ -35,10 +35,10 @@
"react-use": "^17.2.4"
},
"devDependencies": {
- "@backstage/cli": "^0.7.5",
- "@backstage/core-app-api": "^0.1.5",
- "@backstage/dev-utils": "^0.2.3",
- "@backstage/test-utils": "^0.1.15",
+ "@backstage/cli": "^0.7.6",
+ "@backstage/core-app-api": "^0.1.6",
+ "@backstage/dev-utils": "^0.2.4",
+ "@backstage/test-utils": "^0.1.16",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^11.2.5",
"@testing-library/user-event": "^13.1.8",
diff --git a/plugins/bitrise/CHANGELOG.md b/plugins/bitrise/CHANGELOG.md
index 388f7ecd27..83db6141f3 100644
--- a/plugins/bitrise/CHANGELOG.md
+++ b/plugins/bitrise/CHANGELOG.md
@@ -1,5 +1,21 @@
# @backstage/plugin-bitrise
+## 0.1.8
+
+### Patch Changes
+
+- 9d40fcb1e: - Bumping `material-ui/core` version to at least `4.12.2` as they made some breaking changes in later versions which broke `Pagination` of the `Table`.
+ - Switching out `material-table` to `@material-table/core` for support for the later versions of `material-ui/core`
+ - This causes a minor API change to `@backstage/core-components` as the interface for `Table` re-exports the `prop` from the underlying `Table` components.
+ - `onChangeRowsPerPage` has been renamed to `onRowsPerPageChange`
+ - `onChangePage` has been renamed to `onPageChange`
+ - Migration guide is here: https://material-table-core.com/docs/breaking-changes
+- Updated dependencies
+ - @backstage/core-components@0.2.0
+ - @backstage/plugin-catalog-react@0.4.0
+ - @backstage/core-plugin-api@0.1.4
+ - @backstage/theme@0.2.9
+
## 0.1.7
### Patch Changes
diff --git a/plugins/bitrise/package.json b/plugins/bitrise/package.json
index 00eb35f055..12d3b73d4f 100644
--- a/plugins/bitrise/package.json
+++ b/plugins/bitrise/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-bitrise",
- "version": "0.1.7",
+ "version": "0.1.8",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -21,11 +21,11 @@
},
"dependencies": {
"@backstage/catalog-model": "^0.9.0",
- "@backstage/core-components": "^0.1.6",
- "@backstage/core-plugin-api": "^0.1.3",
- "@backstage/plugin-catalog-react": "^0.3.0",
- "@backstage/theme": "^0.2.8",
- "@material-ui/core": "^4.11.0",
+ "@backstage/core-components": "^0.2.0",
+ "@backstage/core-plugin-api": "^0.1.4",
+ "@backstage/plugin-catalog-react": "^0.4.0",
+ "@backstage/theme": "^0.2.9",
+ "@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.45",
"cross-fetch": "^3.0.6",
@@ -38,10 +38,10 @@
"recharts": "^1.8.5"
},
"devDependencies": {
- "@backstage/cli": "^0.7.5",
- "@backstage/core-app-api": "^0.1.5",
- "@backstage/dev-utils": "^0.2.3",
- "@backstage/test-utils": "^0.1.15",
+ "@backstage/cli": "^0.7.6",
+ "@backstage/core-app-api": "^0.1.6",
+ "@backstage/dev-utils": "^0.2.4",
+ "@backstage/test-utils": "^0.1.16",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^11.2.5",
"@testing-library/user-event": "^13.1.8",
diff --git a/plugins/bitrise/src/components/BitriseBuildsTableComponent/BitriseBuildsTableComponent.tsx b/plugins/bitrise/src/components/BitriseBuildsTableComponent/BitriseBuildsTableComponent.tsx
index d6c7ab166b..0966de3377 100644
--- a/plugins/bitrise/src/components/BitriseBuildsTableComponent/BitriseBuildsTableComponent.tsx
+++ b/plugins/bitrise/src/components/BitriseBuildsTableComponent/BitriseBuildsTableComponent.tsx
@@ -219,10 +219,10 @@ export const BitriseBuildsTable = ({
}}
totalCount={builds.value?.paging?.total_item_count || 0}
page={page}
- onChangePage={pageIndex => {
+ onPageChange={pageIndex => {
handleChangePage(pageIndex, builds.value?.paging?.next);
}}
- onChangeRowsPerPage={handleChangeRowsPerPage}
+ onRowsPerPageChange={handleChangeRowsPerPage}
columns={columns}
data={builds.value?.data || []}
onSearchChange={(searchTerm: string) =>
diff --git a/plugins/catalog-backend-module-ldap/CHANGELOG.md b/plugins/catalog-backend-module-ldap/CHANGELOG.md
index 8974e896ff..8c6ae136aa 100644
--- a/plugins/catalog-backend-module-ldap/CHANGELOG.md
+++ b/plugins/catalog-backend-module-ldap/CHANGELOG.md
@@ -1,5 +1,13 @@
# @backstage/plugin-catalog-backend-module-ldap
+## 0.2.2
+
+### Patch Changes
+
+- 2a2a2749b: chore(deps): bump `@types/ldapjs` from 1.0.10 to 2.2.0
+- Updated dependencies
+ - @backstage/plugin-catalog-backend@0.13.1
+
## 0.2.1
### Patch Changes
diff --git a/plugins/catalog-backend-module-ldap/package.json b/plugins/catalog-backend-module-ldap/package.json
index e6c8b4e801..d6b521a422 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",
- "version": "0.2.1",
+ "version": "0.2.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -30,15 +30,15 @@
"dependencies": {
"@backstage/catalog-model": "^0.9.0",
"@backstage/config": "^0.1.5",
- "@backstage/plugin-catalog-backend": "^0.13.0",
+ "@backstage/plugin-catalog-backend": "^0.13.1",
"@types/ldapjs": "^2.2.0",
"ldapjs": "^2.2.0",
"lodash": "^4.17.15",
"winston": "^3.2.1"
},
"devDependencies": {
- "@backstage/cli": "^0.7.4",
- "@backstage/test-utils": "^0.1.13",
+ "@backstage/cli": "^0.7.6",
+ "@backstage/test-utils": "^0.1.16",
"@types/lodash": "^4.14.151",
"msw": "^0.29.0"
},
diff --git a/plugins/catalog-backend/CHANGELOG.md b/plugins/catalog-backend/CHANGELOG.md
index daa6c5a0e8..07799cfad4 100644
--- a/plugins/catalog-backend/CHANGELOG.md
+++ b/plugins/catalog-backend/CHANGELOG.md
@@ -1,5 +1,13 @@
# @backstage/plugin-catalog-backend
+## 0.13.1
+
+### Patch Changes
+
+- 11c370af2: Support filtering entities via property existence. For example you can now query with `/entities?filter=metadata.annotations.blah` to fetch all entities that has the particular property defined.
+- Updated dependencies
+ - @backstage/catalog-client@0.3.18
+
## 0.13.0
### Minor Changes
diff --git a/plugins/catalog-backend/api-report.md b/plugins/catalog-backend/api-report.md
index 0bf7831c6d..b6f2df602a 100644
--- a/plugins/catalog-backend/api-report.md
+++ b/plugins/catalog-backend/api-report.md
@@ -636,6 +636,7 @@ export type EntitiesCatalog = {
export type EntitiesSearchFilter = {
key: string;
matchValueIn?: string[];
+ matchValueExists?: boolean;
};
// Warning: (ae-missing-release-tag) "entity" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
@@ -1077,16 +1078,16 @@ export class UrlReaderProcessor implements CatalogProcessor {
// src/catalog/types.d.ts:44:8 - (tsdoc-param-tag-with-invalid-name) The @param block should be followed by a valid parameter name: The identifier cannot non-word characters
// src/catalog/types.d.ts:45:8 - (tsdoc-param-tag-with-invalid-name) The @param block should be followed by a valid parameter name: The identifier cannot non-word characters
// src/catalog/types.d.ts:75:5 - (ae-forgotten-export) The symbol "LocationUpdateLogEvent" needs to be exported by the entry point index.d.ts
-// src/database/types.d.ts:121:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen
-// src/database/types.d.ts:127:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen
-// src/database/types.d.ts:128:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen
-// src/database/types.d.ts:142:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen
-// src/database/types.d.ts:143:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen
-// src/database/types.d.ts:144:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen
+// src/database/types.d.ts:125:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen
+// src/database/types.d.ts:131:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen
+// src/database/types.d.ts:132:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen
// src/database/types.d.ts:146:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen
-// src/database/types.d.ts:159:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen
-// src/database/types.d.ts:160:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen
-// src/database/types.d.ts:161:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen
+// src/database/types.d.ts:147:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen
+// src/database/types.d.ts:148:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen
+// src/database/types.d.ts:150:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen
+// src/database/types.d.ts:163:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen
+// src/database/types.d.ts:164:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen
+// src/database/types.d.ts:165:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen
// src/ingestion/processors/GithubMultiOrgReaderProcessor.d.ts:23:9 - (ae-forgotten-export) The symbol "GithubMultiOrgConfig" needs to be exported by the entry point index.d.ts
// src/ingestion/processors/types.d.ts:7:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen
// src/ingestion/processors/types.d.ts:8:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen
diff --git a/plugins/catalog-backend/package.json b/plugins/catalog-backend/package.json
index 10d89c41f2..d67cd7553b 100644
--- a/plugins/catalog-backend/package.json
+++ b/plugins/catalog-backend/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-catalog-backend",
- "version": "0.13.0",
+ "version": "0.13.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -30,7 +30,7 @@
},
"dependencies": {
"@backstage/backend-common": "^0.8.6",
- "@backstage/catalog-client": "^0.3.16",
+ "@backstage/catalog-client": "^0.3.18",
"@backstage/catalog-model": "^0.9.0",
"@backstage/config": "^0.1.5",
"@backstage/errors": "^0.1.1",
@@ -62,8 +62,8 @@
},
"devDependencies": {
"@backstage/backend-test-utils": "^0.1.4",
- "@backstage/cli": "^0.7.4",
- "@backstage/test-utils": "^0.1.14",
+ "@backstage/cli": "^0.7.6",
+ "@backstage/test-utils": "^0.1.16",
"@types/core-js": "^2.5.4",
"@types/git-url-parse": "^9.0.0",
"@types/lodash": "^4.14.151",
diff --git a/plugins/catalog-backend/src/database/CommonDatabase.test.ts b/plugins/catalog-backend/src/database/CommonDatabase.test.ts
index 2dc3d91465..f459cbc446 100644
--- a/plugins/catalog-backend/src/database/CommonDatabase.test.ts
+++ b/plugins/catalog-backend/src/database/CommonDatabase.test.ts
@@ -491,6 +491,98 @@ describe('CommonDatabase', () => {
]),
);
});
+
+ it('can get all specific entities for matching existence filters', async () => {
+ const entities: Entity[] = [
+ {
+ apiVersion: 'A',
+ kind: 'K1',
+ metadata: {
+ name: 'N',
+ annotations: {
+ foo: 'bar',
+ },
+ },
+ spec: { c: 'SOME' },
+ },
+ {
+ apiVersion: 'a',
+ kind: 'k2',
+ metadata: {
+ name: 'N',
+ annotations: {
+ foo: 'bar',
+ },
+ },
+ spec: { c: 'Some' },
+ },
+ {
+ apiVersion: 'a',
+ kind: 'k3',
+ metadata: { name: 'n' },
+ spec: { c: 'somE' },
+ },
+ ];
+
+ await db.transaction(async tx => {
+ await db.addEntities(
+ tx,
+ entities.map(entity => ({ entity, relations: [] })),
+ );
+ });
+
+ const existRows = await db.transaction(async tx =>
+ db.entities(tx, {
+ filter: {
+ anyOf: [
+ {
+ allOf: [
+ { key: 'metadata.annotations.foo', matchValueExists: true },
+ ],
+ },
+ ],
+ },
+ }),
+ );
+
+ expect(existRows.entities.length).toEqual(2);
+ expect(existRows.entities).toEqual(
+ expect.arrayContaining([
+ {
+ locationId: undefined,
+ entity: expect.objectContaining({ kind: 'K1' }),
+ },
+ {
+ locationId: undefined,
+ entity: expect.objectContaining({ kind: 'k2' }),
+ },
+ ]),
+ );
+
+ const nonExistRows = await db.transaction(async tx =>
+ db.entities(tx, {
+ filter: {
+ anyOf: [
+ {
+ allOf: [
+ { key: 'metadata.annotations.foo', matchValueExists: false },
+ ],
+ },
+ ],
+ },
+ }),
+ );
+
+ expect(nonExistRows.entities.length).toEqual(1);
+ expect(nonExistRows.entities).toEqual(
+ expect.arrayContaining([
+ {
+ locationId: undefined,
+ entity: expect.objectContaining({ kind: 'k3' }),
+ },
+ ]),
+ );
+ });
});
describe('setRelations', () => {
diff --git a/plugins/catalog-backend/src/database/CommonDatabase.ts b/plugins/catalog-backend/src/database/CommonDatabase.ts
index b4f76d5cbc..272ac08c4c 100644
--- a/plugins/catalog-backend/src/database/CommonDatabase.ts
+++ b/plugins/catalog-backend/src/database/CommonDatabase.ts
@@ -218,7 +218,11 @@ export class CommonDatabase implements Database {
for (const singleFilter of request?.filter?.anyOf ?? []) {
entitiesQuery = entitiesQuery.orWhere(function singleFilterFn() {
- for (const { key, matchValueIn } of singleFilter.allOf) {
+ for (const {
+ key,
+ matchValueIn,
+ matchValueExists,
+ } of singleFilter.allOf) {
// NOTE(freben): This used to be a set of OUTER JOIN, which may seem to
// make a lot of sense. However, it had abysmal performance on sqlite
// when datasets grew large, so we're using IN instead.
@@ -226,7 +230,7 @@ export class CommonDatabase implements Database {
.select('entity_id')
.where(function keyFilter() {
this.andWhere({ key: key.toLowerCase() });
- if (matchValueIn) {
+ if (matchValueExists !== false && matchValueIn) {
if (matchValueIn.length === 1) {
this.andWhere({ value: matchValueIn[0].toLowerCase() });
} else if (matchValueIn.length > 1) {
@@ -238,7 +242,12 @@ export class CommonDatabase implements Database {
}
}
});
- this.andWhere('id', 'in', matchQuery);
+ // Explicitly evaluate matchValueExists as a boolean since it may be undefined
+ this.andWhere(
+ 'id',
+ matchValueExists === false ? 'not in' : 'in',
+ matchQuery,
+ );
}
});
}
diff --git a/plugins/catalog-backend/src/database/types.ts b/plugins/catalog-backend/src/database/types.ts
index 3a3bbb7f1e..e1a253decc 100644
--- a/plugins/catalog-backend/src/database/types.ts
+++ b/plugins/catalog-backend/src/database/types.ts
@@ -118,6 +118,11 @@ export type EntitiesSearchFilter = {
* case insensitive.
*/
matchValueIn?: string[];
+
+ /**
+ * Match on existence of key.
+ */
+ matchValueExists?: boolean;
};
/**
diff --git a/plugins/catalog-backend/src/next/NextEntitiesCatalog.ts b/plugins/catalog-backend/src/next/NextEntitiesCatalog.ts
index f3921602e2..7cc99210c9 100644
--- a/plugins/catalog-backend/src/next/NextEntitiesCatalog.ts
+++ b/plugins/catalog-backend/src/next/NextEntitiesCatalog.ts
@@ -78,7 +78,11 @@ export class NextEntitiesCatalog implements EntitiesCatalog {
for (const singleFilter of request?.filter?.anyOf ?? []) {
entitiesQuery = entitiesQuery.orWhere(function singleFilterFn() {
- for (const { key, matchValueIn } of singleFilter.allOf) {
+ for (const {
+ key,
+ matchValueIn,
+ matchValueExists,
+ } of singleFilter.allOf) {
// NOTE(freben): This used to be a set of OUTER JOIN, which may seem to
// make a lot of sense. However, it had abysmal performance on sqlite
// when datasets grew large, so we're using IN instead.
@@ -86,7 +90,7 @@ export class NextEntitiesCatalog implements EntitiesCatalog {
.select('entity_id')
.where(function keyFilter() {
this.andWhere({ key: key.toLowerCase() });
- if (matchValueIn) {
+ if (matchValueExists !== false && matchValueIn) {
if (matchValueIn.length === 1) {
this.andWhere({ value: matchValueIn[0].toLowerCase() });
} else if (matchValueIn.length > 1) {
@@ -98,7 +102,12 @@ export class NextEntitiesCatalog implements EntitiesCatalog {
}
}
});
- this.andWhere('entity_id', 'in', matchQuery);
+ // Explicitly evaluate matchValueExists as a boolean since it may be undefined
+ this.andWhere(
+ 'entity_id',
+ matchValueExists === false ? 'not in' : 'in',
+ matchQuery,
+ );
}
});
}
diff --git a/plugins/catalog-backend/src/service/request/parseEntityFilterParams.test.ts b/plugins/catalog-backend/src/service/request/parseEntityFilterParams.test.ts
index e2b953ddef..fc22a638de 100644
--- a/plugins/catalog-backend/src/service/request/parseEntityFilterParams.test.ts
+++ b/plugins/catalog-backend/src/service/request/parseEntityFilterParams.test.ts
@@ -69,9 +69,11 @@ describe('parseEntityFilterParams', () => {
describe('parseEntityFilterString', () => {
it('works for the happy path', () => {
expect(parseEntityFilterString('')).toBeUndefined();
- expect(parseEntityFilterString('a=1,b=2,a=3')).toEqual([
+ expect(parseEntityFilterString('a=1,b=2,a=3,c,d=')).toEqual([
{ key: 'a', matchValueIn: ['1', '3'] },
{ key: 'b', matchValueIn: ['2'] },
+ { key: 'c', matchValueExists: true },
+ { key: 'd', matchValueIn: [''] },
]);
});
@@ -83,17 +85,11 @@ describe('parseEntityFilterString', () => {
});
it('rejects malformed strings', () => {
- expect(() => parseEntityFilterString('x=2,a=')).toThrow(
- "Invalid filter, 'a=' is not a valid statement (expected a string on the form a=b)",
- );
expect(() => parseEntityFilterString('x=2,=a')).toThrow(
- "Invalid filter, '=a' is not a valid statement (expected a string on the form a=b)",
+ "Invalid filter, '=a' is not a valid statement (expected a string on the form a=b or a= or a)",
);
expect(() => parseEntityFilterString('x=2,=')).toThrow(
- "Invalid filter, '=' is not a valid statement (expected a string on the form a=b)",
- );
- expect(() => parseEntityFilterString('x=2,a')).toThrow(
- "Invalid filter, 'a' is not a valid statement (expected a string on the form a=b)",
+ "Invalid filter, '=' is not a valid statement (expected a string on the form a=b or a= or a)",
);
});
});
diff --git a/plugins/catalog-backend/src/service/request/parseEntityFilterParams.ts b/plugins/catalog-backend/src/service/request/parseEntityFilterParams.ts
index 154a25c541..c63b366bc7 100644
--- a/plugins/catalog-backend/src/service/request/parseEntityFilterParams.ts
+++ b/plugins/catalog-backend/src/service/request/parseEntityFilterParams.ts
@@ -61,25 +61,26 @@ export function parseEntityFilterString(
for (const statement of statements) {
const equalsIndex = statement.indexOf('=');
- if (equalsIndex < 1) {
- throw new InputError(
- `Invalid filter, '${statement}' is not a valid statement (expected a string on the form a=b)`,
- );
- }
- const key = statement.substr(0, equalsIndex).trim();
- const value = statement.substr(equalsIndex + 1).trim();
- if (!key || !value) {
+ const key =
+ equalsIndex === -1 ? statement : statement.substr(0, equalsIndex).trim();
+ const value =
+ equalsIndex === -1 ? undefined : statement.substr(equalsIndex + 1).trim();
+ if (!key) {
throw new InputError(
- `Invalid filter, '${statement}' is not a valid statement (expected a string on the form a=b)`,
+ `Invalid filter, '${statement}' is not a valid statement (expected a string on the form a=b or a= or a)`,
);
}
const f =
- key in filtersByKey
- ? filtersByKey[key]
- : (filtersByKey[key] = { key, matchValueIn: [] });
- f.matchValueIn!.push(value);
+ key in filtersByKey ? filtersByKey[key] : (filtersByKey[key] = { key });
+
+ if (value === undefined) {
+ f.matchValueExists = true;
+ } else {
+ f.matchValueIn = f.matchValueIn || [];
+ f.matchValueIn.push(value);
+ }
}
return Object.values(filtersByKey);
diff --git a/plugins/catalog-import/CHANGELOG.md b/plugins/catalog-import/CHANGELOG.md
index ad1a05da5e..af785b43fb 100644
--- a/plugins/catalog-import/CHANGELOG.md
+++ b/plugins/catalog-import/CHANGELOG.md
@@ -1,5 +1,23 @@
# @backstage/plugin-catalog-import
+## 0.5.15
+
+### Patch Changes
+
+- 9d40fcb1e: - Bumping `material-ui/core` version to at least `4.12.2` as they made some breaking changes in later versions which broke `Pagination` of the `Table`.
+ - Switching out `material-table` to `@material-table/core` for support for the later versions of `material-ui/core`
+ - This causes a minor API change to `@backstage/core-components` as the interface for `Table` re-exports the `prop` from the underlying `Table` components.
+ - `onChangeRowsPerPage` has been renamed to `onRowsPerPageChange`
+ - `onChangePage` has been renamed to `onPageChange`
+ - Migration guide is here: https://material-table-core.com/docs/breaking-changes
+- Updated dependencies
+ - @backstage/core-components@0.2.0
+ - @backstage/plugin-catalog-react@0.4.0
+ - @backstage/core-plugin-api@0.1.4
+ - @backstage/integration-react@0.1.5
+ - @backstage/theme@0.2.9
+ - @backstage/catalog-client@0.3.18
+
## 0.5.14
### Patch Changes
diff --git a/plugins/catalog-import/package.json b/plugins/catalog-import/package.json
index d6f371bc65..f854bb423f 100644
--- a/plugins/catalog-import/package.json
+++ b/plugins/catalog-import/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-catalog-import",
- "version": "0.5.14",
+ "version": "0.5.15",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -30,15 +30,15 @@
"clean": "backstage-cli clean"
},
"dependencies": {
- "@backstage/catalog-client": "^0.3.17",
+ "@backstage/catalog-client": "^0.3.18",
"@backstage/catalog-model": "^0.9.0",
- "@backstage/core-components": "^0.1.6",
- "@backstage/core-plugin-api": "^0.1.3",
+ "@backstage/core-components": "^0.2.0",
+ "@backstage/core-plugin-api": "^0.1.4",
"@backstage/integration": "^0.5.8",
- "@backstage/integration-react": "^0.1.4",
- "@backstage/plugin-catalog-react": "^0.3.1",
- "@backstage/theme": "^0.2.8",
- "@material-ui/core": "^4.11.0",
+ "@backstage/integration-react": "^0.1.5",
+ "@backstage/plugin-catalog-react": "^0.4.0",
+ "@backstage/theme": "^0.2.9",
+ "@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.45",
"@octokit/rest": "^18.5.3",
@@ -54,10 +54,10 @@
"yaml": "^1.10.0"
},
"devDependencies": {
- "@backstage/cli": "^0.7.5",
- "@backstage/core-app-api": "^0.1.5",
- "@backstage/dev-utils": "^0.2.3",
- "@backstage/test-utils": "^0.1.15",
+ "@backstage/cli": "^0.7.6",
+ "@backstage/core-app-api": "^0.1.6",
+ "@backstage/dev-utils": "^0.2.4",
+ "@backstage/test-utils": "^0.1.16",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^11.2.5",
"@testing-library/react-hooks": "^3.3.0",
diff --git a/plugins/catalog-react/CHANGELOG.md b/plugins/catalog-react/CHANGELOG.md
index b0ce191ec8..90736d6c46 100644
--- a/plugins/catalog-react/CHANGELOG.md
+++ b/plugins/catalog-react/CHANGELOG.md
@@ -1,5 +1,45 @@
# @backstage/plugin-catalog-react
+## 0.4.0
+
+### Minor Changes
+
+- c5cb55803: Introduce the `useEntityOwnership` hook, which implements the full new ownership model.
+
+ This also means a breaking change to the interface of `UserListFilter`. It no longer
+ accepts a user entity as input, but rather a function that checks ownership of an
+ entity. This function is taken from the above mentioned hook output. So if you are
+ instantiating the filter yourself, you will change from something like
+
+ ```ts
+ const { entity } = useOwnUser();
+ const filter = new UserListFilter('owned', user, ...);
+ ```
+
+ to
+
+ ```ts
+ const { isOwnedEntity } = useEntityOwnership();
+ const filter = new UserListFilter('owned', isOwnedEntity, ...);
+ ```
+
+### Patch Changes
+
+- 19d9995b6: Improve accessibility of core & catalog components by adjusting them with non-breaking changes.
+- 11c370af2: Export `CATALOG_FILTER_EXISTS` symbol
+- 9d40fcb1e: - Bumping `material-ui/core` version to at least `4.12.2` as they made some breaking changes in later versions which broke `Pagination` of the `Table`.
+ - Switching out `material-table` to `@material-table/core` for support for the later versions of `material-ui/core`
+ - This causes a minor API change to `@backstage/core-components` as the interface for `Table` re-exports the `prop` from the underlying `Table` components.
+ - `onChangeRowsPerPage` has been renamed to `onRowsPerPageChange`
+ - `onChangePage` has been renamed to `onPageChange`
+ - Migration guide is here: https://material-table-core.com/docs/breaking-changes
+- 043a4238f: Fix `EntityListProvider` to not update url if unmounted
+- Updated dependencies
+ - @backstage/core-components@0.2.0
+ - @backstage/core-app-api@0.1.6
+ - @backstage/core-plugin-api@0.1.4
+ - @backstage/catalog-client@0.3.18
+
## 0.3.1
### Patch Changes
diff --git a/plugins/catalog-react/api-report.md b/plugins/catalog-react/api-report.md
index 2555cc7c0c..a8175c8ec2 100644
--- a/plugins/catalog-react/api-report.md
+++ b/plugins/catalog-react/api-report.md
@@ -7,6 +7,7 @@
import { ApiRef } from '@backstage/core-plugin-api';
import { AsyncState } from 'react-use/lib/useAsync';
+import { CATALOG_FILTER_EXISTS } from '@backstage/catalog-client';
import { CatalogApi } from '@backstage/catalog-client';
import { ComponentEntity } from '@backstage/catalog-model';
import { Context } from 'react';
@@ -22,6 +23,8 @@ import { SystemEntity } from '@backstage/catalog-model';
import { TableColumn } from '@backstage/core-components';
import { UserEntity } from '@backstage/catalog-model';
+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)
@@ -721,6 +724,14 @@ export function useEntityListProvider<
EntityFilters extends DefaultEntityFilters = DefaultEntityFilters
>(): EntityListContextProps;
+// Warning: (ae-missing-release-tag) "useEntityOwnership" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
+//
+// @public
+export function useEntityOwnership(): {
+ loading: boolean;
+ isOwnedEntity: (entity: Entity | EntityName) => boolean;
+};
+
// 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)
//
@@ -756,18 +767,18 @@ export function useRelatedEntities(
export class UserListFilter implements EntityFilter {
constructor(
value: UserListFilterKind,
- user: UserEntity | undefined,
+ isOwnedEntity: (entity: Entity) => boolean,
isStarredEntity: (entity: Entity) => boolean,
);
// (undocumented)
filterEntity(entity: Entity): boolean;
// (undocumented)
+ readonly isOwnedEntity: (entity: Entity) => boolean;
+ // (undocumented)
readonly isStarredEntity: (entity: Entity) => boolean;
// (undocumented)
toQueryValue(): string;
// (undocumented)
- readonly user: UserEntity | undefined;
- // (undocumented)
readonly value: UserListFilterKind;
}
diff --git a/plugins/catalog-react/package.json b/plugins/catalog-react/package.json
index d0cb5ac947..c8e6b2e604 100644
--- a/plugins/catalog-react/package.json
+++ b/plugins/catalog-react/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-catalog-react",
- "version": "0.3.1",
+ "version": "0.4.0",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -28,16 +28,17 @@
"clean": "backstage-cli clean"
},
"dependencies": {
- "@backstage/catalog-client": "^0.3.17",
+ "@backstage/catalog-client": "^0.3.18",
"@backstage/catalog-model": "^0.9.0",
- "@backstage/core-app-api": "^0.1.5",
- "@backstage/core-components": "^0.1.6",
- "@backstage/core-plugin-api": "^0.1.3",
+ "@backstage/core-app-api": "^0.1.6",
+ "@backstage/core-components": "^0.2.0",
+ "@backstage/core-plugin-api": "^0.1.4",
"@backstage/integration": "^0.5.8",
- "@material-ui/core": "^4.11.0",
+ "@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.45",
"@types/react": "^16.9",
+ "jwt-decode": "^3.1.0",
"lodash": "^4.17.15",
"qs": "^6.9.4",
"react": "^16.13.1",
@@ -46,14 +47,15 @@
"react-use": "^17.2.4"
},
"devDependencies": {
- "@backstage/cli": "^0.7.5",
- "@backstage/dev-utils": "^0.2.3",
- "@backstage/test-utils": "^0.1.15",
+ "@backstage/cli": "^0.7.6",
+ "@backstage/dev-utils": "^0.2.4",
+ "@backstage/test-utils": "^0.1.16",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^11.2.5",
"@testing-library/react-hooks": "^3.3.0",
"@testing-library/user-event": "^13.1.8",
"@types/jest": "^26.0.7",
+ "@types/jwt-decode": "^3.1.0",
"@types/node": "^14.14.32",
"cross-fetch": "^3.0.6",
"msw": "^0.29.0",
diff --git a/plugins/catalog-react/src/components/UserListPicker/UserListPicker.test.tsx b/plugins/catalog-react/src/components/UserListPicker/UserListPicker.test.tsx
index b54284da36..4662e58dd2 100644
--- a/plugins/catalog-react/src/components/UserListPicker/UserListPicker.test.tsx
+++ b/plugins/catalog-react/src/components/UserListPicker/UserListPicker.test.tsx
@@ -15,7 +15,7 @@
*/
import React from 'react';
-import { fireEvent, render } from '@testing-library/react';
+import { fireEvent, render, waitFor } from '@testing-library/react';
import {
Entity,
RELATION_OWNED_BY,
@@ -58,7 +58,8 @@ const mockCatalogApi = {
} as Partial;
const mockIdentityApi = {
- getUserId: () => '',
+ getUserId: () => 'testUser',
+ getIdToken: async () => undefined,
} as Partial;
const apis = ApiRegistry.from([
@@ -68,6 +69,9 @@ const apis = ApiRegistry.from([
[storageApiRef, MockStorageApi.create()],
]);
+const mockIsOwnedEntity = (entity: Entity) =>
+ entity.metadata.name === 'component-1';
+
const mockIsStarredEntity = (entity: Entity) =>
entity.metadata.name === 'component-3';
@@ -75,7 +79,9 @@ jest.mock('../../hooks', () => {
const actual = jest.requireActual('../../hooks');
return {
...actual,
- useOwnUser: () => ({ value: mockUser }),
+ useEntityOwnership: () => ({
+ isOwnedEntity: mockIsOwnedEntity,
+ }),
useStarredEntities: () => ({
isStarredEntity: mockIsStarredEntity,
}),
@@ -161,7 +167,7 @@ describe('', () => {
).toEqual(['Owned', 'Starred', 'All']);
});
- it('includes counts alongside each filter', () => {
+ it('includes counts alongside each filter', async () => {
const { getAllByRole } = render(
@@ -172,14 +178,16 @@ describe('', () => {
// Material UI renders ListItemSecondaryActions outside the
// menuitem itself, so we pick off the next sibling.
- expect(
- getAllByRole('menuitem').map(
- ({ nextSibling }) => nextSibling?.textContent,
- ),
- ).toEqual(['2', '1', '4']);
+ await waitFor(() => {
+ expect(
+ getAllByRole('menuitem').map(
+ ({ nextSibling }) => nextSibling?.textContent,
+ ),
+ ).toEqual(['1', '1', '4']);
+ });
});
- it('respects other frontend filters in counts', () => {
+ it('respects other frontend filters in counts', async () => {
const { getAllByRole } = render(
', () => {
,
);
- expect(
- getAllByRole('menuitem').map(
- ({ nextSibling }) => nextSibling?.textContent,
- ),
- ).toEqual(['1', '0', '2']);
+ await waitFor(() => {
+ expect(
+ getAllByRole('menuitem').map(
+ ({ nextSibling }) => nextSibling?.textContent,
+ ),
+ ).toEqual(['1', '0', '2']);
+ });
});
it('respects the query parameter filter value', () => {
@@ -214,7 +224,7 @@ describe('', () => {
);
expect(updateFilters).toHaveBeenLastCalledWith({
- user: new UserListFilter('owned', mockUser, mockIsStarredEntity),
+ user: new UserListFilter('owned', mockIsOwnedEntity, mockIsStarredEntity),
});
});
@@ -233,7 +243,11 @@ describe('', () => {
fireEvent.click(getByText('Starred'));
expect(updateFilters).toHaveBeenLastCalledWith({
- user: new UserListFilter('starred', mockUser, mockIsStarredEntity),
+ user: new UserListFilter(
+ 'starred',
+ mockIsOwnedEntity,
+ mockIsStarredEntity,
+ ),
});
});
});
diff --git a/plugins/catalog-react/src/components/UserListPicker/UserListPicker.tsx b/plugins/catalog-react/src/components/UserListPicker/UserListPicker.tsx
index 0212c0f0be..0e764507fe 100644
--- a/plugins/catalog-react/src/components/UserListPicker/UserListPicker.tsx
+++ b/plugins/catalog-react/src/components/UserListPicker/UserListPicker.tsx
@@ -14,15 +14,11 @@
* limitations under the License.
*/
-import React, { Fragment, useEffect, useMemo, useState } from 'react';
-import { compact } from 'lodash';
-import { UserListFilterKind } from '../../types';
-import { UserListFilter } from '../../filters';
import {
- useEntityListProvider,
- useOwnUser,
- useStarredEntities,
-} from '../../hooks';
+ configApiRef,
+ IconComponent,
+ useApi,
+} from '@backstage/core-plugin-api';
import {
Card,
List,
@@ -36,12 +32,16 @@ import {
} from '@material-ui/core';
import SettingsIcon from '@material-ui/icons/Settings';
import StarIcon from '@material-ui/icons/Star';
-import { reduceEntityFilters } from '../../utils';
+import { compact } from 'lodash';
+import React, { Fragment, useEffect, useMemo, useState } from 'react';
+import { UserListFilter } from '../../filters';
import {
- configApiRef,
- IconComponent,
- useApi,
-} from '@backstage/core-plugin-api';
+ useEntityListProvider,
+ useStarredEntities,
+ useEntityOwnership,
+} from '../../hooks';
+import { UserListFilterKind } from '../../types';
+import { reduceEntityFilters } from '../../utils';
const useStyles = makeStyles(theme => ({
root: {
@@ -136,20 +136,20 @@ export const UserListPicker = ({
queryParameters,
} = useEntityListProvider();
- const { value: user } = useOwnUser();
const { isStarredEntity } = useStarredEntities();
+ const { isOwnedEntity } = useEntityOwnership();
const [selectedUserFilter, setSelectedUserFilter] = useState(
[queryParameters.user].flat()[0] ?? initialFilter,
);
// Static filters; used for generating counts of potentially unselected kinds
const ownedFilter = useMemo(
- () => new UserListFilter('owned', user, isStarredEntity),
- [user, isStarredEntity],
+ () => new UserListFilter('owned', isOwnedEntity, isStarredEntity),
+ [isOwnedEntity, isStarredEntity],
);
const starredFilter = useMemo(
- () => new UserListFilter('starred', user, isStarredEntity),
- [user, isStarredEntity],
+ () => new UserListFilter('starred', isOwnedEntity, isStarredEntity),
+ [isOwnedEntity, isStarredEntity],
);
useEffect(() => {
@@ -157,12 +157,12 @@ export const UserListPicker = ({
user: selectedUserFilter
? new UserListFilter(
selectedUserFilter as UserListFilterKind,
- user,
+ isOwnedEntity,
isStarredEntity,
)
: undefined,
});
- }, [selectedUserFilter, user, isStarredEntity, updateFilters]);
+ }, [selectedUserFilter, isOwnedEntity, isStarredEntity, updateFilters]);
// To show proper counts for each section, apply all other frontend filters _except_ the user
// filter that's controlled by this picker.
diff --git a/plugins/catalog-react/src/filters.ts b/plugins/catalog-react/src/filters.ts
index 98c66e0c26..46fb708f93 100644
--- a/plugins/catalog-react/src/filters.ts
+++ b/plugins/catalog-react/src/filters.ts
@@ -14,14 +14,10 @@
* limitations under the License.
*/
-import {
- Entity,
- UserEntity,
- RELATION_OWNED_BY,
-} from '@backstage/catalog-model';
-import { EntityFilter, UserListFilterKind } from './types';
-import { getEntityRelations, isOwnerOf } from './utils';
+import { Entity, RELATION_OWNED_BY } from '@backstage/catalog-model';
import { formatEntityRefTitle } from './components/EntityRefLink';
+import { EntityFilter, UserListFilterKind } from './types';
+import { getEntityRelations } from './utils';
export class EntityKindFilter implements EntityFilter {
constructor(readonly value: string) {}
@@ -116,14 +112,14 @@ export class EntityLifecycleFilter implements EntityFilter {
export class UserListFilter implements EntityFilter {
constructor(
readonly value: UserListFilterKind,
- readonly user: UserEntity | undefined,
+ readonly isOwnedEntity: (entity: Entity) => boolean,
readonly isStarredEntity: (entity: Entity) => boolean,
) {}
filterEntity(entity: Entity): boolean {
switch (this.value) {
case 'owned':
- return this.user !== undefined && isOwnerOf(this.user, entity);
+ return this.isOwnedEntity(entity);
case 'starred':
return this.isStarredEntity(entity);
default:
diff --git a/plugins/catalog-react/src/hooks/index.ts b/plugins/catalog-react/src/hooks/index.ts
index 483f1ab787..868e50c852 100644
--- a/plugins/catalog-react/src/hooks/index.ts
+++ b/plugins/catalog-react/src/hooks/index.ts
@@ -25,3 +25,4 @@ export { useEntityTypeFilter } from './useEntityTypeFilter';
export { useOwnUser } from './useOwnUser';
export { useRelatedEntities } from './useRelatedEntities';
export { useStarredEntities } from './useStarredEntities';
+export { useEntityOwnership } from './useEntityOwnership';
diff --git a/plugins/catalog-react/src/hooks/useEntityListProvider.test.tsx b/plugins/catalog-react/src/hooks/useEntityListProvider.test.tsx
index c66af03da0..815c9e289e 100644
--- a/plugins/catalog-react/src/hooks/useEntityListProvider.test.tsx
+++ b/plugins/catalog-react/src/hooks/useEntityListProvider.test.tsx
@@ -20,7 +20,7 @@ import { MemoryRouter as Router } from 'react-router-dom';
import { act, renderHook } from '@testing-library/react-hooks';
import { MockStorageApi } from '@backstage/test-utils';
import { CatalogApi } from '@backstage/catalog-client';
-import { Entity, UserEntity } from '@backstage/catalog-model';
+import { Entity } from '@backstage/catalog-model';
import {
EntityListProvider,
useEntityListProvider,
@@ -39,17 +39,6 @@ import {
storageApiRef,
} from '@backstage/core-plugin-api';
-const mockUser: UserEntity = {
- apiVersion: 'backstage.io/v1beta1',
- kind: 'User',
- metadata: {
- name: 'guest',
- },
- spec: {
- memberOf: [],
- },
-};
-
const entities: Entity[] = [
{
apiVersion: '1',
@@ -81,13 +70,12 @@ const mockConfigApi = {
getOptionalString: () => '',
} as Partial;
const mockIdentityApi: Partial = {
- getUserId: () => 'guest@example.com',
+ getUserId: () => 'guest',
+ getIdToken: async () => undefined,
};
const mockCatalogApi: Partial = {
- getEntities: jest
- .fn()
- .mockImplementation(() => Promise.resolve({ items: entities })),
- getEntityByName: () => Promise.resolve(mockUser),
+ getEntities: jest.fn().mockImplementation(async () => ({ items: entities })),
+ getEntityByName: async () => undefined,
};
const apis = ApiRegistry.from([
[configApiRef, mockConfigApi],
@@ -117,7 +105,7 @@ const wrapper = ({
);
};
-describe('', () => {
+describe('', () => {
beforeEach(() => {
jest.clearAllMocks();
});
@@ -171,18 +159,26 @@ describe('', () => {
const { result, waitFor } = renderHook(() => useEntityListProvider(), {
wrapper,
});
- await waitFor(() => !!result.current.entities.length);
- expect(result.current.entities.length).toBe(2);
- expect(mockCatalogApi.getEntities).toHaveBeenCalledTimes(1);
+
+ await waitFor(() => {
+ expect(result.current.entities.length).toBe(2);
+ expect(mockCatalogApi.getEntities).toHaveBeenCalledTimes(1);
+ });
act(() =>
result.current.updateFilters({
- user: new UserListFilter('owned', mockUser, () => true),
+ user: new UserListFilter(
+ 'owned',
+ entity => entity.metadata.name === 'component-1',
+ () => true,
+ ),
}),
);
- await waitFor(() => result.current.entities.length !== 2);
- expect(mockCatalogApi.getEntities).toHaveBeenCalledTimes(1);
- expect(result.current.entities.length).toBe(1);
+
+ await waitFor(() => {
+ expect(result.current.entities.length).toBe(1);
+ expect(mockCatalogApi.getEntities).toHaveBeenCalledTimes(1);
+ });
});
it('debounces multiple filter changes', async () => {
@@ -205,7 +201,7 @@ describe('', () => {
});
it('returns an error on catalogApi failure', async () => {
- const { result, waitForNextUpdate, waitForValueToChange } = renderHook(
+ const { result, waitForValueToChange, waitFor } = renderHook(
() => useEntityListProvider(),
{
wrapper,
@@ -218,7 +214,8 @@ describe('', () => {
act(() => {
result.current.updateFilters({ kind: new EntityKindFilter('api') });
});
- await waitForNextUpdate();
- expect(result.current.error).toBeDefined();
+ await waitFor(() => {
+ expect(result.current.error).toBeDefined();
+ });
});
});
diff --git a/plugins/catalog-react/src/hooks/useEntityOwnership.test.tsx b/plugins/catalog-react/src/hooks/useEntityOwnership.test.tsx
new file mode 100644
index 0000000000..f617565e81
--- /dev/null
+++ b/plugins/catalog-react/src/hooks/useEntityOwnership.test.tsx
@@ -0,0 +1,255 @@
+/*
+ * Copyright 2021 The Backstage Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import { CatalogApi } from '@backstage/catalog-client';
+import {
+ ComponentEntity,
+ RELATION_MEMBER_OF,
+ RELATION_OWNED_BY,
+ UserEntity,
+} from '@backstage/catalog-model';
+import { ApiProvider, ApiRegistry } from '@backstage/core-app-api';
+import { IdentityApi, identityApiRef } from '@backstage/core-plugin-api';
+import { renderHook } from '@testing-library/react-hooks';
+import React from 'react';
+import { catalogApiRef } from '../api';
+import {
+ loadCatalogOwnerRefs,
+ loadIdentityOwnerRefs,
+ useEntityOwnership,
+} from './useEntityOwnership';
+
+describe('useEntityOwnership', () => {
+ type MockIdentityApi = jest.Mocked<
+ Pick
+ >;
+ type MockCatalogApi = jest.Mocked>;
+
+ const mockIdentityApi: MockIdentityApi = {
+ getUserId: jest.fn(),
+ getIdToken: jest.fn(),
+ };
+ const mockCatalogApi: MockCatalogApi = {
+ getEntityByName: jest.fn(),
+ };
+
+ const identityApi = (mockIdentityApi as unknown) as IdentityApi;
+ const catalogApi = (mockCatalogApi as unknown) as CatalogApi;
+
+ const Wrapper = ({ children }: { children?: React.ReactNode }) => (
+
+ {children}
+
+ );
+
+ const ownedEntity: ComponentEntity = {
+ apiVersion: 'backstage.io/v1beta1',
+ kind: 'Component',
+ metadata: {
+ name: 'component1',
+ namespace: 'default',
+ },
+ spec: {
+ /* should not be accessed */
+ } as any,
+ relations: [
+ {
+ type: RELATION_OWNED_BY,
+ target: { kind: 'User', namespace: 'default', name: 'user1' },
+ },
+ {
+ type: RELATION_OWNED_BY,
+ target: { kind: 'Group', namespace: 'default', name: 'group1' },
+ },
+ ],
+ };
+
+ const user2Entity: UserEntity = {
+ apiVersion: 'backstage.io/v1beta1',
+ kind: 'User',
+ metadata: {
+ name: 'user2',
+ namespace: 'default',
+ },
+ spec: {
+ /* should not be accessed */
+ } as any,
+ relations: [
+ {
+ type: RELATION_MEMBER_OF,
+ target: { kind: 'Group', namespace: 'default', name: 'group1' },
+ },
+ ],
+ };
+
+ // these were generated on https://jwt.io, based off of its default example token
+ // no ent at all
+ const tokenNoEnt =
+ 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c';
+ // "ent": []
+ const tokenEmptyEnt =
+ 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyLCJlbnQiOltdfQ.Khyza2whczkoC4wSCLBhBaBB9-ktIkk7gpXEgQPHhtY';
+ // "ent": ["user:default/user1"]
+ const tokenUserEnt =
+ 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyLCJlbnQiOlsidXNlcjpkZWZhdWx0L3VzZXIxIl19.CMCxjwI4rj_TD3uUoBNgFjkZI23LwRTbQnSPBxzncoY';
+ // "ent": ["user:default/user1", "group:default/group1"]
+ const tokenUserAndGroupEnt =
+ 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyLCJlbnQiOlsidXNlcjpkZWZhdWx0L3VzZXIxIiwiZ3JvdXA6ZGVmYXVsdC9ncm91cDEiXX0.ZZmZrogbQKx0hnForw63ETkyAhUyeoBE8Hgloi45rdg';
+
+ afterEach(() => {
+ jest.resetAllMocks();
+ });
+
+ describe('loadIdentityOwnerRefs', () => {
+ it('returns the user id when there is no relevant token info', async () => {
+ mockIdentityApi.getUserId.mockReturnValueOnce('foo');
+ mockIdentityApi.getIdToken.mockResolvedValueOnce(undefined);
+ await expect(loadIdentityOwnerRefs(identityApi)).resolves.toEqual([
+ 'user:default/foo',
+ ]);
+
+ mockIdentityApi.getUserId.mockReturnValueOnce('ns/foo');
+ mockIdentityApi.getIdToken.mockResolvedValueOnce(undefined);
+ await expect(loadIdentityOwnerRefs(identityApi)).resolves.toEqual([
+ 'user:ns/foo',
+ ]);
+
+ mockIdentityApi.getUserId.mockReturnValueOnce('user:ns/foo');
+ mockIdentityApi.getIdToken.mockResolvedValueOnce(undefined);
+ await expect(loadIdentityOwnerRefs(identityApi)).resolves.toEqual([
+ 'user:ns/foo',
+ ]);
+
+ mockIdentityApi.getUserId.mockReturnValueOnce('foo');
+ mockIdentityApi.getIdToken.mockResolvedValueOnce(tokenNoEnt);
+ await expect(loadIdentityOwnerRefs(identityApi)).resolves.toEqual([
+ 'user:default/foo',
+ ]);
+
+ mockIdentityApi.getUserId.mockReturnValueOnce('foo');
+ mockIdentityApi.getIdToken.mockResolvedValueOnce(tokenEmptyEnt);
+ await expect(loadIdentityOwnerRefs(identityApi)).resolves.toEqual([
+ 'user:default/foo',
+ ]);
+ });
+
+ it('returns both the user id and the token parts', async () => {
+ mockIdentityApi.getUserId.mockReturnValueOnce('foo');
+ mockIdentityApi.getIdToken.mockResolvedValueOnce(tokenUserEnt);
+ await expect(loadIdentityOwnerRefs(identityApi)).resolves.toEqual([
+ 'user:default/foo',
+ 'user:default/user1',
+ ]);
+
+ mockIdentityApi.getUserId.mockReturnValueOnce('foo');
+ mockIdentityApi.getIdToken.mockResolvedValueOnce(tokenUserAndGroupEnt);
+ await expect(loadIdentityOwnerRefs(identityApi)).resolves.toEqual([
+ 'user:default/foo',
+ 'user:default/user1',
+ 'group:default/group1',
+ ]);
+ });
+
+ it('gracefully ignores broken token', async () => {
+ mockIdentityApi.getUserId.mockReturnValueOnce('foo');
+ mockIdentityApi.getIdToken.mockResolvedValueOnce('not a jwt');
+ await expect(loadIdentityOwnerRefs(identityApi)).resolves.toEqual([
+ 'user:default/foo',
+ ]);
+ });
+ });
+
+ describe('loadCatalogOwnerRefs', () => {
+ it('loads the first user from the catalog', async () => {
+ mockCatalogApi.getEntityByName.mockResolvedValueOnce(user2Entity);
+ await expect(
+ loadCatalogOwnerRefs(catalogApi, ['user:default/user2']),
+ ).resolves.toEqual(['group:default/group1']);
+ expect(mockCatalogApi.getEntityByName).toBeCalledWith({
+ kind: 'user',
+ namespace: 'default',
+ name: 'user2',
+ });
+ });
+
+ it('gracefully handles missing user', async () => {
+ mockCatalogApi.getEntityByName.mockResolvedValueOnce(undefined);
+ await expect(
+ loadCatalogOwnerRefs(catalogApi, ['user:default/user2']),
+ ).resolves.toEqual([]);
+ expect(mockCatalogApi.getEntityByName).toBeCalledWith({
+ kind: 'user',
+ namespace: 'default',
+ name: 'user2',
+ });
+ });
+ });
+
+ describe('useEntityOwnership', () => {
+ it('matches ownership via token claims', async () => {
+ mockIdentityApi.getUserId.mockReturnValue('foo');
+ mockIdentityApi.getIdToken.mockResolvedValue(tokenUserAndGroupEnt);
+ mockCatalogApi.getEntityByName.mockResolvedValue(undefined);
+
+ const { result, waitForValueToChange } = renderHook(
+ () => useEntityOwnership(),
+ {
+ wrapper: Wrapper,
+ },
+ );
+
+ expect(result.current.loading).toBe(true);
+ expect(result.current.isOwnedEntity(ownedEntity)).toBe(false);
+
+ await waitForValueToChange(() => result.current.loading);
+
+ expect(result.current.loading).toBe(false);
+ expect(result.current.isOwnedEntity(ownedEntity)).toBe(true);
+ });
+
+ it('matches ownership via catalog user entity', async () => {
+ mockIdentityApi.getUserId.mockReturnValue('user2');
+ mockIdentityApi.getIdToken.mockResolvedValue(undefined);
+ mockCatalogApi.getEntityByName.mockResolvedValue(user2Entity);
+
+ const { result, waitForValueToChange } = renderHook(
+ () => useEntityOwnership(),
+ {
+ wrapper: Wrapper,
+ },
+ );
+
+ expect(result.current.loading).toBe(true);
+ expect(result.current.isOwnedEntity(ownedEntity)).toBe(false);
+
+ await waitForValueToChange(() => result.current.loading);
+
+ expect(result.current.loading).toBe(false);
+ expect(result.current.isOwnedEntity(ownedEntity)).toBe(true);
+
+ expect(mockCatalogApi.getEntityByName).toBeCalledWith({
+ kind: 'user',
+ namespace: 'default',
+ name: 'user2',
+ });
+ });
+ });
+});
diff --git a/plugins/catalog-react/src/hooks/useEntityOwnership.ts b/plugins/catalog-react/src/hooks/useEntityOwnership.ts
new file mode 100644
index 0000000000..93c79de207
--- /dev/null
+++ b/plugins/catalog-react/src/hooks/useEntityOwnership.ts
@@ -0,0 +1,148 @@
+/*
+ * Copyright 2021 The Backstage Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import { CatalogApi } from '@backstage/catalog-client';
+import {
+ Entity,
+ EntityName,
+ parseEntityRef,
+ RELATION_MEMBER_OF,
+ RELATION_OWNED_BY,
+ stringifyEntityRef,
+} from '@backstage/catalog-model';
+import {
+ IdentityApi,
+ identityApiRef,
+ useApi,
+} from '@backstage/core-plugin-api';
+import jwtDecoder from 'jwt-decode';
+import { useMemo } from 'react';
+import { useAsync } from 'react-use';
+import { catalogApiRef } from '../api';
+import { getEntityRelations } from '../utils/getEntityRelations';
+
+// Takes a user ID from the identity, which can be on basically any form, and
+// returns an entity ref. E.g. if the input is "foo", it returns
+// "user:default/foo" to make sure it's a full ref.
+function extendUserId(id: string): string {
+ try {
+ const ref = parseEntityRef(id, {
+ defaultKind: 'User',
+ defaultNamespace: 'default',
+ });
+ return stringifyEntityRef(ref);
+ } catch {
+ return id;
+ }
+}
+
+// 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.
+export async function loadIdentityOwnerRefs(
+ identityApi: IdentityApi,
+): Promise {
+ const id = identityApi.getUserId();
+ const token = await identityApi.getIdToken();
+ const result: string[] = [];
+
+ if (id) {
+ result.push(extendUserId(id));
+ }
+
+ if (token) {
+ try {
+ const decoded = jwtDecoder(token) as any;
+ if (decoded?.ent) {
+ [decoded.ent]
+ .flat()
+ .filter(x => typeof x === 'string')
+ .map(x => x.toLocaleLowerCase('en-US'))
+ .forEach(x => result.push(x));
+ }
+ } catch {
+ // ignore
+ }
+ }
+
+ return result;
+}
+
+// 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
+// represent the user's ownership connections.
+export async function loadCatalogOwnerRefs(
+ catalogApi: CatalogApi,
+ identityOwnerRefs: string[],
+): Promise {
+ const result = new Array();
+
+ const primaryUserRef = identityOwnerRefs.find(ref => ref.startsWith('user:'));
+ if (primaryUserRef) {
+ const entity = await catalogApi.getEntityByName(
+ parseEntityRef(primaryUserRef),
+ );
+ if (entity) {
+ const memberOf = getEntityRelations(entity, RELATION_MEMBER_OF, {
+ kind: 'Group',
+ });
+ for (const group of memberOf) {
+ result.push(stringifyEntityRef(group));
+ }
+ }
+ }
+
+ return result;
+}
+
+/**
+ * Returns a function that checks whether the currently signed-in user is an
+ * owner of a given entity. When the hook is initially mounted, the loading
+ * flag will be true and the results returned from the function will always be
+ * false.
+ */
+export function useEntityOwnership(): {
+ loading: boolean;
+ isOwnedEntity: (entity: Entity | EntityName) => boolean;
+} {
+ const identityApi = useApi(identityApiRef);
+ const catalogApi = useApi(catalogApiRef);
+
+ // Trigger load only on mount
+ const { loading, value: refs } = useAsync(async () => {
+ const identityRefs = await loadIdentityOwnerRefs(identityApi);
+ const catalogRefs = await loadCatalogOwnerRefs(catalogApi, identityRefs);
+ return new Set([...identityRefs, ...catalogRefs]);
+ }, []);
+
+ const isOwnedEntity = useMemo(() => {
+ const myOwnerRefs = new Set(refs ?? []);
+ return (entity: Entity | EntityName) => {
+ const entityOwnerRefs = ('metadata' in entity
+ ? getEntityRelations(entity, RELATION_OWNED_BY)
+ : [entity]
+ ).map(stringifyEntityRef);
+ for (const ref of entityOwnerRefs) {
+ if (myOwnerRefs.has(ref)) {
+ return true;
+ }
+ }
+ return false;
+ };
+ }, [refs]);
+
+ return useMemo(() => ({ loading, isOwnedEntity }), [loading, isOwnedEntity]);
+}
diff --git a/plugins/catalog-react/src/index.ts b/plugins/catalog-react/src/index.ts
index 4ee613012d..4e005c0cdc 100644
--- a/plugins/catalog-react/src/index.ts
+++ b/plugins/catalog-react/src/index.ts
@@ -14,6 +14,7 @@
* limitations under the License.
*/
export type { CatalogApi } from '@backstage/catalog-client';
+export { CATALOG_FILTER_EXISTS } from '@backstage/catalog-client';
export { catalogApiRef } from './api';
export * from './components';
export * from './hooks';
diff --git a/plugins/catalog-react/src/utils/isOwnerOf.ts b/plugins/catalog-react/src/utils/isOwnerOf.ts
index e62a0db1ba..38ad90e4a6 100644
--- a/plugins/catalog-react/src/utils/isOwnerOf.ts
+++ b/plugins/catalog-react/src/utils/isOwnerOf.ts
@@ -16,10 +16,10 @@
import {
Entity,
- EntityName,
getEntityName,
RELATION_MEMBER_OF,
RELATION_OWNED_BY,
+ stringifyEntityRef,
} from '@backstage/catalog-model';
import { getEntityRelations } from './getEntityRelations';
@@ -27,22 +27,19 @@ import { getEntityRelations } from './getEntityRelations';
* Get the related entity references.
*/
export function isOwnerOf(owner: Entity, owned: Entity) {
- const possibleOwners: EntityName[] = [
- ...getEntityRelations(owner, RELATION_MEMBER_OF, { kind: 'group' }),
- ...(owner ? [getEntityName(owner)] : []),
- ];
+ const possibleOwners = new Set(
+ [
+ ...getEntityRelations(owner, RELATION_MEMBER_OF, { kind: 'group' }),
+ ...(owner ? [getEntityName(owner)] : []),
+ ].map(stringifyEntityRef),
+ );
- const owners = getEntityRelations(owned, RELATION_OWNED_BY);
+ const owners = getEntityRelations(owned, RELATION_OWNED_BY).map(
+ stringifyEntityRef,
+ );
for (const ownerItem of owners) {
- if (
- possibleOwners.find(
- o =>
- ownerItem.kind.toLowerCase() === o.kind.toLowerCase() &&
- ownerItem.namespace.toLowerCase() === o.namespace.toLowerCase() &&
- ownerItem.name.toLowerCase() === o.name.toLowerCase(),
- ) !== undefined
- ) {
+ if (possibleOwners.has(ownerItem)) {
return true;
}
}
diff --git a/plugins/catalog/CHANGELOG.md b/plugins/catalog/CHANGELOG.md
index 295c1fe15c..c3818a44e7 100644
--- a/plugins/catalog/CHANGELOG.md
+++ b/plugins/catalog/CHANGELOG.md
@@ -1,5 +1,49 @@
# @backstage/plugin-catalog
+## 0.6.9
+
+### Patch Changes
+
+- 19d9995b6: Improve accessibility of core & catalog components by adjusting them with non-breaking changes.
+- 9d40fcb1e: - Bumping `material-ui/core` version to at least `4.12.2` as they made some breaking changes in later versions which broke `Pagination` of the `Table`.
+ - Switching out `material-table` to `@material-table/core` for support for the later versions of `material-ui/core`
+ - This causes a minor API change to `@backstage/core-components` as the interface for `Table` re-exports the `prop` from the underlying `Table` components.
+ - `onChangeRowsPerPage` has been renamed to `onRowsPerPageChange`
+ - `onChangePage` has been renamed to `onPageChange`
+ - Migration guide is here: https://material-table-core.com/docs/breaking-changes
+- 224e54484: Added an `EntityProcessingErrorsPanel` component to show any errors that occurred when refreshing an entity from its source location.
+
+ If upgrading, this should be added to your `EntityPage` in your Backstage application:
+
+ ```diff
+ // packages/app/src/components/catalog/EntityPage.tsx
+
+ const overviewContent = (
+ ...
+
+
+
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+
+ ```
+
+ Additionally, `WarningPanel` now changes color based on the provided severity.
+
+- Updated dependencies
+ - @backstage/core-components@0.2.0
+ - @backstage/plugin-catalog-react@0.4.0
+ - @backstage/core-plugin-api@0.1.4
+ - @backstage/integration-react@0.1.5
+ - @backstage/theme@0.2.9
+ - @backstage/catalog-client@0.3.18
+
## 0.6.8
### Patch Changes
diff --git a/plugins/catalog/api-report.md b/plugins/catalog/api-report.md
index a416e70038..c030882bca 100644
--- a/plugins/catalog/api-report.md
+++ b/plugins/catalog/api-report.md
@@ -327,6 +327,11 @@ export const EntityPageLayout: {
}) => null;
};
+// 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;
+
// 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)
@@ -358,6 +363,11 @@ export const FilteredEntityLayout: ({
children,
}: PropsWithChildren<{}>) => 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: (entity: Entity) => boolean;
+
// 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)
diff --git a/plugins/catalog/package.json b/plugins/catalog/package.json
index 821e029616..0935f797fc 100644
--- a/plugins/catalog/package.json
+++ b/plugins/catalog/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-catalog",
- "version": "0.6.8",
+ "version": "0.6.9",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -30,16 +30,16 @@
"clean": "backstage-cli clean"
},
"dependencies": {
- "@backstage/catalog-client": "^0.3.17",
+ "@backstage/catalog-client": "^0.3.18",
"@backstage/catalog-model": "^0.9.0",
- "@backstage/core-components": "^0.1.6",
- "@backstage/core-plugin-api": "^0.1.3",
+ "@backstage/core-components": "^0.2.0",
+ "@backstage/core-plugin-api": "^0.1.4",
"@backstage/errors": "^0.1.1",
"@backstage/integration": "^0.5.8",
- "@backstage/integration-react": "^0.1.4",
- "@backstage/plugin-catalog-react": "^0.3.1",
- "@backstage/theme": "^0.2.8",
- "@material-ui/core": "^4.11.0",
+ "@backstage/integration-react": "^0.1.5",
+ "@backstage/plugin-catalog-react": "^0.4.0",
+ "@backstage/theme": "^0.2.9",
+ "@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.45",
"@types/react": "^16.9",
@@ -54,10 +54,10 @@
"react-use": "^17.2.4"
},
"devDependencies": {
- "@backstage/cli": "^0.7.5",
- "@backstage/core-app-api": "^0.1.5",
- "@backstage/dev-utils": "^0.2.3",
- "@backstage/test-utils": "^0.1.15",
+ "@backstage/cli": "^0.7.6",
+ "@backstage/core-app-api": "^0.1.6",
+ "@backstage/dev-utils": "^0.2.4",
+ "@backstage/test-utils": "^0.1.16",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^11.2.5",
"@testing-library/react-hooks": "^3.3.0",
diff --git a/plugins/catalog/src/components/CatalogPage/CatalogPage.test.tsx b/plugins/catalog/src/components/CatalogPage/CatalogPage.test.tsx
index e09aec55e7..8e3c59ffa3 100644
--- a/plugins/catalog/src/components/CatalogPage/CatalogPage.test.tsx
+++ b/plugins/catalog/src/components/CatalogPage/CatalogPage.test.tsx
@@ -55,7 +55,7 @@ describe('CatalogPage', () => {
name: 'Entity1',
},
spec: {
- owner: 'tools@example.com',
+ owner: 'tools',
type: 'service',
},
relations: [
@@ -72,7 +72,7 @@ describe('CatalogPage', () => {
name: 'Entity2',
},
spec: {
- owner: 'not-tools@example.com',
+ owner: 'not-tools',
type: 'service',
},
relations: [
@@ -108,7 +108,8 @@ describe('CatalogPage', () => {
displayName: 'Display Name',
};
const identityApi: Partial = {
- getUserId: () => 'tools@example.com',
+ getUserId: () => 'tools',
+ getIdToken: async () => undefined,
getProfile: () => testProfile,
};
diff --git a/plugins/catalog/src/components/CatalogTable/CatalogTable.test.tsx b/plugins/catalog/src/components/CatalogTable/CatalogTable.test.tsx
index 7867ad6f46..efbd6989e4 100644
--- a/plugins/catalog/src/components/CatalogTable/CatalogTable.test.tsx
+++ b/plugins/catalog/src/components/CatalogTable/CatalogTable.test.tsx
@@ -73,7 +73,11 @@ describe('CatalogTable component', () => {
value={{
entities,
filters: {
- user: new UserListFilter('owned', undefined, () => false),
+ user: new UserListFilter(
+ 'owned',
+ () => false,
+ () => false,
+ ),
},
}}
>
diff --git a/plugins/catalog/src/components/EntityProcessingErrorsPanel/EntityProcessingErrorsPanel.test.tsx b/plugins/catalog/src/components/EntityProcessingErrorsPanel/EntityProcessingErrorsPanel.test.tsx
new file mode 100644
index 0000000000..a4e284a0eb
--- /dev/null
+++ b/plugins/catalog/src/components/EntityProcessingErrorsPanel/EntityProcessingErrorsPanel.test.tsx
@@ -0,0 +1,103 @@
+/*
+ * 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 { EntityProvider } from '@backstage/plugin-catalog-react';
+
+import { renderInTestApp } from '@backstage/test-utils';
+import React from 'react';
+import { EntityProcessingErrorsPanel } from './EntityProcessingErrorsPanel';
+import { Entity } from '@backstage/catalog-model';
+
+describe('', () => {
+ it('renders EntityProcessErrors if the entity has errors', async () => {
+ const entity: Entity = {
+ apiVersion: 'v1',
+ kind: 'Component',
+ metadata: {
+ name: 'software',
+ description: 'This is the description',
+ },
+
+ spec: {
+ owner: 'guest',
+ type: 'service',
+ lifecycle: 'production',
+ },
+ status: {
+ items: [
+ {
+ type: 'backstage.io/catalog-processing',
+ level: 'error',
+ message:
+ 'InputError: Policy check failed; caused by Error: Malformed envelope, /metadata/labels should be object',
+ error: {
+ name: 'InputError',
+ message:
+ 'Policy check failed; caused by Error: Malformed envelope, /metadata/labels should be object',
+ cause: {
+ name: 'Error',
+ message:
+ 'Malformed envelope, /metadata/labels should be object',
+ },
+ },
+ },
+ {
+ type: 'foo',
+ level: 'error',
+ message: 'InputError: This should not be rendered',
+ error: {
+ name: 'InputError',
+ message: 'Foo',
+ cause: {
+ name: 'Error',
+ message:
+ 'Malformed envelope, /metadata/labels should be object',
+ },
+ },
+ },
+ {
+ type: 'backstage.io/catalog-processing',
+ level: 'error',
+ message: 'InputError: Foo',
+ error: {
+ name: 'InputError',
+ message: 'Foo',
+ cause: {
+ name: 'Error',
+ message:
+ 'Malformed envelope, /metadata/labels should be object',
+ },
+ },
+ },
+ ],
+ },
+ };
+
+ const { getByText, queryByText } = await renderInTestApp(
+
+
+ ,
+ );
+
+ expect(
+ getByText(
+ 'Error: Policy check failed; caused by Error: Malformed envelope, /metadata/labels should be object',
+ ),
+ ).toBeInTheDocument();
+ expect(getByText('Error: Foo')).toBeInTheDocument();
+ expect(queryByText('Error: This should not be rendered')).toBeNull();
+ });
+});
diff --git a/plugins/catalog/src/components/EntityProcessingErrorsPanel/EntityProcessingErrorsPanel.tsx b/plugins/catalog/src/components/EntityProcessingErrorsPanel/EntityProcessingErrorsPanel.tsx
new file mode 100644
index 0000000000..833ca74daa
--- /dev/null
+++ b/plugins/catalog/src/components/EntityProcessingErrorsPanel/EntityProcessingErrorsPanel.tsx
@@ -0,0 +1,51 @@
+/*
+ * Copyright 2021 The Backstage Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import { Entity, UNSTABLE_EntityStatusItem } from '@backstage/catalog-model';
+import { useEntity } from '@backstage/plugin-catalog-react';
+import { Box } from '@material-ui/core';
+import React from 'react';
+import { ResponseErrorPanel } from '@backstage/core-components';
+import { ENTITY_STATUS_CATALOG_PROCESSING_TYPE } from '@backstage/catalog-client';
+
+const errorfilter = (i: UNSTABLE_EntityStatusItem) =>
+ i.error &&
+ i.level === 'error' &&
+ i.type === ENTITY_STATUS_CATALOG_PROCESSING_TYPE;
+
+export const hasCatalogProcessingErrors = (entity: Entity) =>
+ entity?.status?.items?.filter(errorfilter).length! > 0;
+
+/**
+ * Displays a list of errors if the entity is invalid.
+ */
+export const EntityProcessingErrorsPanel = () => {
+ const { entity } = useEntity();
+ const catalogProcessingErrors =
+ (entity?.status?.items?.filter(
+ errorfilter,
+ ) as Required[]) || [];
+
+ return (
+ <>
+ {catalogProcessingErrors.map(({ error }, index) => (
+
+
+
+ ))}
+ >
+ );
+};
diff --git a/plugins/catalog/src/components/EntityProcessingErrorsPanel/index.ts b/plugins/catalog/src/components/EntityProcessingErrorsPanel/index.ts
new file mode 100644
index 0000000000..1af2c80484
--- /dev/null
+++ b/plugins/catalog/src/components/EntityProcessingErrorsPanel/index.ts
@@ -0,0 +1,20 @@
+/*
+ * 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 {
+ EntityProcessingErrorsPanel,
+ hasCatalogProcessingErrors,
+} from './EntityProcessingErrorsPanel';
diff --git a/plugins/catalog/src/index.ts b/plugins/catalog/src/index.ts
index 215a18f661..fd542fafa3 100644
--- a/plugins/catalog/src/index.ts
+++ b/plugins/catalog/src/index.ts
@@ -23,6 +23,7 @@ export * from './components/CatalogTable/columns';
export * from './components/CreateComponentButton';
export * from './components/EntityLayout';
export * from './components/EntityOrphanWarning';
+export * from './components/EntityProcessingErrorsPanel';
export * from './components/EntityPageLayout';
export * from './components/EntitySwitch';
export * from './components/FilteredEntityLayout';
diff --git a/plugins/circleci/CHANGELOG.md b/plugins/circleci/CHANGELOG.md
index 015bd04ca8..32c093228a 100644
--- a/plugins/circleci/CHANGELOG.md
+++ b/plugins/circleci/CHANGELOG.md
@@ -1,5 +1,21 @@
# @backstage/plugin-circleci
+## 0.2.20
+
+### Patch Changes
+
+- 9d40fcb1e: - Bumping `material-ui/core` version to at least `4.12.2` as they made some breaking changes in later versions which broke `Pagination` of the `Table`.
+ - Switching out `material-table` to `@material-table/core` for support for the later versions of `material-ui/core`
+ - This causes a minor API change to `@backstage/core-components` as the interface for `Table` re-exports the `prop` from the underlying `Table` components.
+ - `onChangeRowsPerPage` has been renamed to `onRowsPerPageChange`
+ - `onChangePage` has been renamed to `onPageChange`
+ - Migration guide is here: https://material-table-core.com/docs/breaking-changes
+- Updated dependencies
+ - @backstage/core-components@0.2.0
+ - @backstage/plugin-catalog-react@0.4.0
+ - @backstage/core-plugin-api@0.1.4
+ - @backstage/theme@0.2.9
+
## 0.2.19
### Patch Changes
diff --git a/plugins/circleci/package.json b/plugins/circleci/package.json
index 52aae08b57..a1b43e7e40 100644
--- a/plugins/circleci/package.json
+++ b/plugins/circleci/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-circleci",
- "version": "0.2.19",
+ "version": "0.2.20",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -32,11 +32,11 @@
},
"dependencies": {
"@backstage/catalog-model": "^0.9.0",
- "@backstage/core-components": "^0.1.6",
- "@backstage/core-plugin-api": "^0.1.3",
- "@backstage/plugin-catalog-react": "^0.3.0",
- "@backstage/theme": "^0.2.8",
- "@material-ui/core": "^4.11.0",
+ "@backstage/core-components": "^0.2.0",
+ "@backstage/core-plugin-api": "^0.1.4",
+ "@backstage/plugin-catalog-react": "^0.4.0",
+ "@backstage/theme": "^0.2.9",
+ "@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.45",
"circleci-api": "^4.0.0",
@@ -50,10 +50,10 @@
"react-use": "^17.2.4"
},
"devDependencies": {
- "@backstage/cli": "^0.7.5",
- "@backstage/core-app-api": "^0.1.5",
- "@backstage/dev-utils": "^0.2.3",
- "@backstage/test-utils": "^0.1.15",
+ "@backstage/cli": "^0.7.6",
+ "@backstage/core-app-api": "^0.1.6",
+ "@backstage/dev-utils": "^0.2.4",
+ "@backstage/test-utils": "^0.1.16",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^11.2.5",
"@testing-library/user-event": "^13.1.8",
diff --git a/plugins/circleci/src/components/BuildsPage/lib/CITable/CITable.tsx b/plugins/circleci/src/components/BuildsPage/lib/CITable/CITable.tsx
index 40829e7e66..b33e1b40cc 100644
--- a/plugins/circleci/src/components/BuildsPage/lib/CITable/CITable.tsx
+++ b/plugins/circleci/src/components/BuildsPage/lib/CITable/CITable.tsx
@@ -260,8 +260,8 @@ export const CITable = ({
},
]}
data={builds}
- onChangePage={onChangePage}
- onChangeRowsPerPage={onChangePageSize}
+ onPageChange={onChangePage}
+ onRowsPerPageChange={onChangePageSize}
title={
diff --git a/plugins/cloudbuild/CHANGELOG.md b/plugins/cloudbuild/CHANGELOG.md
index d0c5a647d8..d443e4c09a 100644
--- a/plugins/cloudbuild/CHANGELOG.md
+++ b/plugins/cloudbuild/CHANGELOG.md
@@ -1,5 +1,21 @@
# @backstage/plugin-cloudbuild
+## 0.2.20
+
+### Patch Changes
+
+- 9d40fcb1e: - Bumping `material-ui/core` version to at least `4.12.2` as they made some breaking changes in later versions which broke `Pagination` of the `Table`.
+ - Switching out `material-table` to `@material-table/core` for support for the later versions of `material-ui/core`
+ - This causes a minor API change to `@backstage/core-components` as the interface for `Table` re-exports the `prop` from the underlying `Table` components.
+ - `onChangeRowsPerPage` has been renamed to `onRowsPerPageChange`
+ - `onChangePage` has been renamed to `onPageChange`
+ - Migration guide is here: https://material-table-core.com/docs/breaking-changes
+- Updated dependencies
+ - @backstage/core-components@0.2.0
+ - @backstage/plugin-catalog-react@0.4.0
+ - @backstage/core-plugin-api@0.1.4
+ - @backstage/theme@0.2.9
+
## 0.2.19
### Patch Changes
diff --git a/plugins/cloudbuild/package.json b/plugins/cloudbuild/package.json
index ee9f8a4e0c..6f0dc1d8af 100644
--- a/plugins/cloudbuild/package.json
+++ b/plugins/cloudbuild/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-cloudbuild",
- "version": "0.2.19",
+ "version": "0.2.20",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -31,11 +31,11 @@
},
"dependencies": {
"@backstage/catalog-model": "^0.9.0",
- "@backstage/core-components": "^0.1.6",
- "@backstage/core-plugin-api": "^0.1.3",
- "@backstage/plugin-catalog-react": "^0.3.0",
- "@backstage/theme": "^0.2.8",
- "@material-ui/core": "^4.11.0",
+ "@backstage/core-components": "^0.2.0",
+ "@backstage/core-plugin-api": "^0.1.4",
+ "@backstage/plugin-catalog-react": "^0.4.0",
+ "@backstage/theme": "^0.2.9",
+ "@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.45",
"moment": "^2.27.0",
@@ -48,10 +48,10 @@
"react-use": "^17.2.4"
},
"devDependencies": {
- "@backstage/cli": "^0.7.5",
- "@backstage/core-app-api": "^0.1.5",
- "@backstage/dev-utils": "^0.2.3",
- "@backstage/test-utils": "^0.1.15",
+ "@backstage/cli": "^0.7.6",
+ "@backstage/core-app-api": "^0.1.6",
+ "@backstage/dev-utils": "^0.2.4",
+ "@backstage/test-utils": "^0.1.16",
"@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/src/components/WorkflowRunsTable/WorkflowRunsTable.tsx b/plugins/cloudbuild/src/components/WorkflowRunsTable/WorkflowRunsTable.tsx
index acacc8bec5..8fbf89cdce 100644
--- a/plugins/cloudbuild/src/components/WorkflowRunsTable/WorkflowRunsTable.tsx
+++ b/plugins/cloudbuild/src/components/WorkflowRunsTable/WorkflowRunsTable.tsx
@@ -138,8 +138,8 @@ export const WorkflowRunsTableView = ({
},
]}
data={runs ?? []}
- onChangePage={onChangePage}
- onChangeRowsPerPage={onChangePageSize}
+ onPageChange={onChangePage}
+ onRowsPerPageChange={onChangePageSize}
style={{ width: '100%' }}
title={
diff --git a/plugins/code-coverage/CHANGELOG.md b/plugins/code-coverage/CHANGELOG.md
index a0b44e590f..96f3569495 100644
--- a/plugins/code-coverage/CHANGELOG.md
+++ b/plugins/code-coverage/CHANGELOG.md
@@ -1,5 +1,21 @@
# @backstage/plugin-code-coverage
+## 0.1.8
+
+### Patch Changes
+
+- 9d40fcb1e: - Bumping `material-ui/core` version to at least `4.12.2` as they made some breaking changes in later versions which broke `Pagination` of the `Table`.
+ - Switching out `material-table` to `@material-table/core` for support for the later versions of `material-ui/core`
+ - This causes a minor API change to `@backstage/core-components` as the interface for `Table` re-exports the `prop` from the underlying `Table` components.
+ - `onChangeRowsPerPage` has been renamed to `onRowsPerPageChange`
+ - `onChangePage` has been renamed to `onPageChange`
+ - Migration guide is here: https://material-table-core.com/docs/breaking-changes
+- Updated dependencies
+ - @backstage/core-components@0.2.0
+ - @backstage/plugin-catalog-react@0.4.0
+ - @backstage/core-plugin-api@0.1.4
+ - @backstage/theme@0.2.9
+
## 0.1.7
### Patch Changes
diff --git a/plugins/code-coverage/package.json b/plugins/code-coverage/package.json
index bd632972df..dcbcc181e7 100644
--- a/plugins/code-coverage/package.json
+++ b/plugins/code-coverage/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-code-coverage",
- "version": "0.1.7",
+ "version": "0.1.8",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -22,12 +22,12 @@
"dependencies": {
"@backstage/catalog-model": "^0.9.0",
"@backstage/config": "^0.1.4",
- "@backstage/core-components": "^0.1.6",
- "@backstage/core-plugin-api": "^0.1.3",
+ "@backstage/core-components": "^0.2.0",
+ "@backstage/core-plugin-api": "^0.1.4",
"@backstage/errors": "^0.1.1",
- "@backstage/plugin-catalog-react": "^0.3.0",
- "@backstage/theme": "^0.2.8",
- "@material-ui/core": "^4.11.0",
+ "@backstage/plugin-catalog-react": "^0.4.0",
+ "@backstage/theme": "^0.2.9",
+ "@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.45",
"@material-ui/styles": "^4.11.0",
@@ -40,10 +40,10 @@
"recharts": "^1.8.5"
},
"devDependencies": {
- "@backstage/cli": "^0.7.5",
- "@backstage/core-app-api": "^0.1.5",
- "@backstage/dev-utils": "^0.2.3",
- "@backstage/test-utils": "^0.1.15",
+ "@backstage/cli": "^0.7.6",
+ "@backstage/core-app-api": "^0.1.6",
+ "@backstage/dev-utils": "^0.2.4",
+ "@backstage/test-utils": "^0.1.16",
"@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 e594b4dbc6..f531f66122 100644
--- a/plugins/config-schema/CHANGELOG.md
+++ b/plugins/config-schema/CHANGELOG.md
@@ -1,5 +1,20 @@
# @backstage/plugin-config-schema
+## 0.1.4
+
+### Patch Changes
+
+- 9d40fcb1e: - Bumping `material-ui/core` version to at least `4.12.2` as they made some breaking changes in later versions which broke `Pagination` of the `Table`.
+ - Switching out `material-table` to `@material-table/core` for support for the later versions of `material-ui/core`
+ - This causes a minor API change to `@backstage/core-components` as the interface for `Table` re-exports the `prop` from the underlying `Table` components.
+ - `onChangeRowsPerPage` has been renamed to `onRowsPerPageChange`
+ - `onChangePage` has been renamed to `onPageChange`
+ - Migration guide is here: https://material-table-core.com/docs/breaking-changes
+- Updated dependencies
+ - @backstage/core-components@0.2.0
+ - @backstage/core-plugin-api@0.1.4
+ - @backstage/theme@0.2.9
+
## 0.1.3
### Patch Changes
diff --git a/plugins/config-schema/package.json b/plugins/config-schema/package.json
index 7ef279f123..0a8d46260d 100644
--- a/plugins/config-schema/package.json
+++ b/plugins/config-schema/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-config-schema",
- "version": "0.1.3",
+ "version": "0.1.4",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -21,11 +21,11 @@
},
"dependencies": {
"@backstage/config": "^0.1.4",
- "@backstage/core-components": "^0.1.6",
- "@backstage/core-plugin-api": "^0.1.3",
+ "@backstage/core-components": "^0.2.0",
+ "@backstage/core-plugin-api": "^0.1.4",
"@backstage/errors": "^0.1.1",
- "@backstage/theme": "^0.2.8",
- "@material-ui/core": "^4.11.0",
+ "@backstage/theme": "^0.2.9",
+ "@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.45",
"jsonschema": "^1.2.6",
@@ -35,10 +35,10 @@
"zen-observable": "^0.8.15"
},
"devDependencies": {
- "@backstage/cli": "^0.7.5",
- "@backstage/core-app-api": "^0.1.5",
- "@backstage/dev-utils": "^0.2.3",
- "@backstage/test-utils": "^0.1.15",
+ "@backstage/cli": "^0.7.6",
+ "@backstage/core-app-api": "^0.1.6",
+ "@backstage/dev-utils": "^0.2.4",
+ "@backstage/test-utils": "^0.1.16",
"@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 bfecedcedc..76516fd8bf 100644
--- a/plugins/cost-insights/CHANGELOG.md
+++ b/plugins/cost-insights/CHANGELOG.md
@@ -1,5 +1,20 @@
# @backstage/plugin-cost-insights
+## 0.11.2
+
+### Patch Changes
+
+- 9d40fcb1e: - Bumping `material-ui/core` version to at least `4.12.2` as they made some breaking changes in later versions which broke `Pagination` of the `Table`.
+ - Switching out `material-table` to `@material-table/core` for support for the later versions of `material-ui/core`
+ - This causes a minor API change to `@backstage/core-components` as the interface for `Table` re-exports the `prop` from the underlying `Table` components.
+ - `onChangeRowsPerPage` has been renamed to `onRowsPerPageChange`
+ - `onChangePage` has been renamed to `onPageChange`
+ - Migration guide is here: https://material-table-core.com/docs/breaking-changes
+- Updated dependencies
+ - @backstage/core-components@0.2.0
+ - @backstage/core-plugin-api@0.1.4
+ - @backstage/theme@0.2.9
+
## 0.11.1
### Patch Changes
diff --git a/plugins/cost-insights/package.json b/plugins/cost-insights/package.json
index 2f6fac1479..469cc7075f 100644
--- a/plugins/cost-insights/package.json
+++ b/plugins/cost-insights/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-cost-insights",
- "version": "0.11.1",
+ "version": "0.11.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -31,10 +31,10 @@
},
"dependencies": {
"@backstage/config": "^0.1.5",
- "@backstage/core-components": "^0.1.6",
- "@backstage/core-plugin-api": "^0.1.3",
- "@backstage/theme": "^0.2.8",
- "@material-ui/core": "^4.11.0",
+ "@backstage/core-components": "^0.2.0",
+ "@backstage/core-plugin-api": "^0.1.4",
+ "@backstage/theme": "^0.2.9",
+ "@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.45",
"@material-ui/styles": "^4.9.6",
@@ -54,10 +54,10 @@
"yup": "^0.29.3"
},
"devDependencies": {
- "@backstage/cli": "^0.7.5",
- "@backstage/core-app-api": "^0.1.5",
- "@backstage/dev-utils": "^0.2.3",
- "@backstage/test-utils": "^0.1.15",
+ "@backstage/cli": "^0.7.6",
+ "@backstage/core-app-api": "^0.1.6",
+ "@backstage/dev-utils": "^0.2.4",
+ "@backstage/test-utils": "^0.1.16",
"@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/src/components/CostInsightsPage/CostInsightsThemeProvider.tsx b/plugins/cost-insights/src/components/CostInsightsPage/CostInsightsThemeProvider.tsx
index e56d72cc09..7c64c41116 100644
--- a/plugins/cost-insights/src/components/CostInsightsPage/CostInsightsThemeProvider.tsx
+++ b/plugins/cost-insights/src/components/CostInsightsPage/CostInsightsThemeProvider.tsx
@@ -15,7 +15,10 @@
*/
import React, { PropsWithChildren } from 'react';
-import { createMuiTheme, ThemeProvider } from '@material-ui/core';
+import {
+ createTheme as createMuiTheme,
+ ThemeProvider,
+} from '@material-ui/core';
import { BackstageTheme } from '@backstage/theme';
import {
costInsightsDarkTheme,
diff --git a/plugins/explore/CHANGELOG.md b/plugins/explore/CHANGELOG.md
index 2cb7e849d3..a6d473a6e1 100644
--- a/plugins/explore/CHANGELOG.md
+++ b/plugins/explore/CHANGELOG.md
@@ -1,5 +1,21 @@
# @backstage/plugin-explore
+## 0.3.11
+
+### Patch Changes
+
+- 9d40fcb1e: - Bumping `material-ui/core` version to at least `4.12.2` as they made some breaking changes in later versions which broke `Pagination` of the `Table`.
+ - Switching out `material-table` to `@material-table/core` for support for the later versions of `material-ui/core`
+ - This causes a minor API change to `@backstage/core-components` as the interface for `Table` re-exports the `prop` from the underlying `Table` components.
+ - `onChangeRowsPerPage` has been renamed to `onRowsPerPageChange`
+ - `onChangePage` has been renamed to `onPageChange`
+ - Migration guide is here: https://material-table-core.com/docs/breaking-changes
+- Updated dependencies
+ - @backstage/core-components@0.2.0
+ - @backstage/plugin-catalog-react@0.4.0
+ - @backstage/core-plugin-api@0.1.4
+ - @backstage/theme@0.2.9
+
## 0.3.10
### Patch Changes
diff --git a/plugins/explore/package.json b/plugins/explore/package.json
index 2059632c08..78a51dfbea 100644
--- a/plugins/explore/package.json
+++ b/plugins/explore/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-explore",
- "version": "0.3.10",
+ "version": "0.3.11",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -31,12 +31,12 @@
},
"dependencies": {
"@backstage/catalog-model": "^0.9.0",
- "@backstage/core-components": "^0.1.6",
- "@backstage/core-plugin-api": "^0.1.3",
- "@backstage/plugin-catalog-react": "^0.3.0",
+ "@backstage/core-components": "^0.2.0",
+ "@backstage/core-plugin-api": "^0.1.4",
+ "@backstage/plugin-catalog-react": "^0.4.0",
"@backstage/plugin-explore-react": "^0.0.6",
- "@backstage/theme": "^0.2.8",
- "@material-ui/core": "^4.11.0",
+ "@backstage/theme": "^0.2.9",
+ "@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.45",
"@types/react": "^16.9",
@@ -48,10 +48,10 @@
"react-use": "^17.2.4"
},
"devDependencies": {
- "@backstage/cli": "^0.7.5",
- "@backstage/core-app-api": "^0.1.5",
- "@backstage/dev-utils": "^0.2.3",
- "@backstage/test-utils": "^0.1.15",
+ "@backstage/cli": "^0.7.6",
+ "@backstage/core-app-api": "^0.1.6",
+ "@backstage/dev-utils": "^0.2.4",
+ "@backstage/test-utils": "^0.1.16",
"@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/src/components/GroupsExplorerContent/GroupsExplorerContent.test.tsx b/plugins/explore/src/components/GroupsExplorerContent/GroupsExplorerContent.test.tsx
index 6953cf57a2..7b3a73673e 100644
--- a/plugins/explore/src/components/GroupsExplorerContent/GroupsExplorerContent.test.tsx
+++ b/plugins/explore/src/components/GroupsExplorerContent/GroupsExplorerContent.test.tsx
@@ -100,7 +100,7 @@ describe('', () => {
const catalogError = new Error('Network timeout');
catalogApi.getEntities.mockRejectedValueOnce(catalogError);
- const { getByText } = await renderInTestApp(
+ const { getAllByText } = await renderInTestApp(
,
@@ -108,7 +108,7 @@ describe('', () => {
);
await waitFor(() =>
- expect(getByText(/Warning: Network timeout/)).toBeInTheDocument(),
+ expect(getAllByText(/Error: Network timeout/).length).not.toBe(0),
);
});
});
diff --git a/plugins/fossa/CHANGELOG.md b/plugins/fossa/CHANGELOG.md
index 8d7faa87f9..0ea7c3a574 100644
--- a/plugins/fossa/CHANGELOG.md
+++ b/plugins/fossa/CHANGELOG.md
@@ -1,5 +1,21 @@
# @backstage/plugin-fossa
+## 0.2.12
+
+### Patch Changes
+
+- 9d40fcb1e: - Bumping `material-ui/core` version to at least `4.12.2` as they made some breaking changes in later versions which broke `Pagination` of the `Table`.
+ - Switching out `material-table` to `@material-table/core` for support for the later versions of `material-ui/core`
+ - This causes a minor API change to `@backstage/core-components` as the interface for `Table` re-exports the `prop` from the underlying `Table` components.
+ - `onChangeRowsPerPage` has been renamed to `onRowsPerPageChange`
+ - `onChangePage` has been renamed to `onPageChange`
+ - Migration guide is here: https://material-table-core.com/docs/breaking-changes
+- Updated dependencies
+ - @backstage/core-components@0.2.0
+ - @backstage/plugin-catalog-react@0.4.0
+ - @backstage/core-plugin-api@0.1.4
+ - @backstage/theme@0.2.9
+
## 0.2.11
### Patch Changes
diff --git a/plugins/fossa/package.json b/plugins/fossa/package.json
index cc4a27a5c0..f5bd84e763 100644
--- a/plugins/fossa/package.json
+++ b/plugins/fossa/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-fossa",
- "version": "0.2.11",
+ "version": "0.2.12",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -32,12 +32,12 @@
},
"dependencies": {
"@backstage/catalog-model": "^0.9.0",
- "@backstage/core-components": "^0.1.6",
- "@backstage/core-plugin-api": "^0.1.3",
+ "@backstage/core-components": "^0.2.0",
+ "@backstage/core-plugin-api": "^0.1.4",
"@backstage/errors": "^0.1.1",
- "@backstage/plugin-catalog-react": "^0.3.0",
- "@backstage/theme": "^0.2.8",
- "@material-ui/core": "^4.11.0",
+ "@backstage/plugin-catalog-react": "^0.4.0",
+ "@backstage/theme": "^0.2.9",
+ "@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.45",
"cross-fetch": "^3.0.6",
@@ -48,10 +48,10 @@
"react-use": "^17.2.4"
},
"devDependencies": {
- "@backstage/cli": "^0.7.5",
- "@backstage/core-app-api": "^0.1.5",
- "@backstage/dev-utils": "^0.2.3",
- "@backstage/test-utils": "^0.1.15",
+ "@backstage/cli": "^0.7.6",
+ "@backstage/core-app-api": "^0.1.6",
+ "@backstage/dev-utils": "^0.2.4",
+ "@backstage/test-utils": "^0.1.16",
"@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/src/components/FossaCard/FossaCard.test.tsx b/plugins/fossa/src/components/FossaCard/FossaCard.test.tsx
index 3c771bd7d6..79b401e4a8 100644
--- a/plugins/fossa/src/components/FossaCard/FossaCard.test.tsx
+++ b/plugins/fossa/src/components/FossaCard/FossaCard.test.tsx
@@ -74,7 +74,7 @@ describe('', () => {
fossaApi.getFindingSummary.mockRejectedValue(new Error('My Error'));
- const { getByText } = await renderInTestApp(
+ const { getAllByText } = await renderInTestApp(
@@ -82,7 +82,7 @@ describe('', () => {
,
);
- expect(getByText(/Warning: My Error/i)).toBeInTheDocument();
+ expect(getAllByText(/Error: My Error/i).length).not.toBe(0);
});
it('shows empty', async () => {
diff --git a/plugins/gcp-projects/CHANGELOG.md b/plugins/gcp-projects/CHANGELOG.md
index fc99dcbe09..564453dc1e 100644
--- a/plugins/gcp-projects/CHANGELOG.md
+++ b/plugins/gcp-projects/CHANGELOG.md
@@ -1,5 +1,20 @@
# @backstage/plugin-gcp-projects
+## 0.3.1
+
+### Patch Changes
+
+- 9d40fcb1e: - Bumping `material-ui/core` version to at least `4.12.2` as they made some breaking changes in later versions which broke `Pagination` of the `Table`.
+ - Switching out `material-table` to `@material-table/core` for support for the later versions of `material-ui/core`
+ - This causes a minor API change to `@backstage/core-components` as the interface for `Table` re-exports the `prop` from the underlying `Table` components.
+ - `onChangeRowsPerPage` has been renamed to `onRowsPerPageChange`
+ - `onChangePage` has been renamed to `onPageChange`
+ - Migration guide is here: https://material-table-core.com/docs/breaking-changes
+- Updated dependencies
+ - @backstage/core-components@0.2.0
+ - @backstage/core-plugin-api@0.1.4
+ - @backstage/theme@0.2.9
+
## 0.3.0
### Minor Changes
diff --git a/plugins/gcp-projects/package.json b/plugins/gcp-projects/package.json
index 1d04d7f1d5..f50f125d25 100644
--- a/plugins/gcp-projects/package.json
+++ b/plugins/gcp-projects/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-gcp-projects",
- "version": "0.3.0",
+ "version": "0.3.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -30,10 +30,10 @@
"clean": "backstage-cli clean"
},
"dependencies": {
- "@backstage/core-components": "^0.1.6",
- "@backstage/core-plugin-api": "^0.1.3",
- "@backstage/theme": "^0.2.8",
- "@material-ui/core": "^4.11.0",
+ "@backstage/core-components": "^0.2.0",
+ "@backstage/core-plugin-api": "^0.1.4",
+ "@backstage/theme": "^0.2.9",
+ "@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.45",
"react": "^16.13.1",
@@ -42,10 +42,10 @@
"react-use": "^17.2.4"
},
"devDependencies": {
- "@backstage/cli": "^0.7.5",
- "@backstage/core-app-api": "^0.1.5",
- "@backstage/dev-utils": "^0.2.3",
- "@backstage/test-utils": "^0.1.15",
+ "@backstage/cli": "^0.7.6",
+ "@backstage/core-app-api": "^0.1.6",
+ "@backstage/dev-utils": "^0.2.4",
+ "@backstage/test-utils": "^0.1.16",
"@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 6f2eaae984..d10213f39b 100644
--- a/plugins/git-release-manager/CHANGELOG.md
+++ b/plugins/git-release-manager/CHANGELOG.md
@@ -1,5 +1,20 @@
# @backstage/plugin-git-release-manager
+## 0.2.1
+
+### Patch Changes
+
+- 9d40fcb1e: - Bumping `material-ui/core` version to at least `4.12.2` as they made some breaking changes in later versions which broke `Pagination` of the `Table`.
+ - Switching out `material-table` to `@material-table/core` for support for the later versions of `material-ui/core`
+ - This causes a minor API change to `@backstage/core-components` as the interface for `Table` re-exports the `prop` from the underlying `Table` components.
+ - `onChangeRowsPerPage` has been renamed to `onRowsPerPageChange`
+ - `onChangePage` has been renamed to `onPageChange`
+ - Migration guide is here: https://material-table-core.com/docs/breaking-changes
+- Updated dependencies
+ - @backstage/core-components@0.2.0
+ - @backstage/core-plugin-api@0.1.4
+ - @backstage/theme@0.2.9
+
## 0.2.0
### Minor Changes
diff --git a/plugins/git-release-manager/package.json b/plugins/git-release-manager/package.json
index 5598fcd6ef..97c22558a9 100644
--- a/plugins/git-release-manager/package.json
+++ b/plugins/git-release-manager/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-git-release-manager",
- "version": "0.2.0",
+ "version": "0.2.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -20,11 +20,11 @@
"clean": "backstage-cli clean"
},
"dependencies": {
- "@backstage/core-components": "^0.1.6",
- "@backstage/core-plugin-api": "^0.1.3",
+ "@backstage/core-components": "^0.2.0",
+ "@backstage/core-plugin-api": "^0.1.4",
"@backstage/integration": "^0.5.6",
- "@backstage/theme": "^0.2.8",
- "@material-ui/core": "^4.11.0",
+ "@backstage/theme": "^0.2.9",
+ "@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.45",
"@octokit/rest": "^18.5.3",
@@ -38,10 +38,10 @@
"recharts": "^1.8.5"
},
"devDependencies": {
- "@backstage/cli": "^0.7.5",
- "@backstage/core-app-api": "^0.1.5",
- "@backstage/dev-utils": "^0.2.3",
- "@backstage/test-utils": "^0.1.15",
+ "@backstage/cli": "^0.7.6",
+ "@backstage/core-app-api": "^0.1.6",
+ "@backstage/dev-utils": "^0.2.4",
+ "@backstage/test-utils": "^0.1.16",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react-hooks": "^3.4.2",
"@testing-library/react": "^11.2.5",
diff --git a/plugins/github-actions/CHANGELOG.md b/plugins/github-actions/CHANGELOG.md
index 88bc9d08df..0eab743f7c 100644
--- a/plugins/github-actions/CHANGELOG.md
+++ b/plugins/github-actions/CHANGELOG.md
@@ -1,5 +1,21 @@
# @backstage/plugin-github-actions
+## 0.4.14
+
+### Patch Changes
+
+- 9d40fcb1e: - Bumping `material-ui/core` version to at least `4.12.2` as they made some breaking changes in later versions which broke `Pagination` of the `Table`.
+ - Switching out `material-table` to `@material-table/core` for support for the later versions of `material-ui/core`
+ - This causes a minor API change to `@backstage/core-components` as the interface for `Table` re-exports the `prop` from the underlying `Table` components.
+ - `onChangeRowsPerPage` has been renamed to `onRowsPerPageChange`
+ - `onChangePage` has been renamed to `onPageChange`
+ - Migration guide is here: https://material-table-core.com/docs/breaking-changes
+- Updated dependencies
+ - @backstage/core-components@0.2.0
+ - @backstage/plugin-catalog-react@0.4.0
+ - @backstage/core-plugin-api@0.1.4
+ - @backstage/theme@0.2.9
+
## 0.4.13
### Patch Changes
diff --git a/plugins/github-actions/package.json b/plugins/github-actions/package.json
index d85d1e53fe..df07695c35 100644
--- a/plugins/github-actions/package.json
+++ b/plugins/github-actions/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-github-actions",
- "version": "0.4.13",
+ "version": "0.4.14",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -33,12 +33,12 @@
},
"dependencies": {
"@backstage/catalog-model": "^0.9.0",
- "@backstage/core-components": "^0.1.6",
- "@backstage/core-plugin-api": "^0.1.3",
+ "@backstage/core-components": "^0.2.0",
+ "@backstage/core-plugin-api": "^0.1.4",
"@backstage/integration": "^0.5.8",
- "@backstage/plugin-catalog-react": "^0.3.0",
- "@backstage/theme": "^0.2.8",
- "@material-ui/core": "^4.11.0",
+ "@backstage/plugin-catalog-react": "^0.4.0",
+ "@backstage/theme": "^0.2.9",
+ "@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.45",
"@octokit/rest": "^18.5.3",
@@ -51,10 +51,10 @@
"react-use": "^17.2.4"
},
"devDependencies": {
- "@backstage/cli": "^0.7.5",
- "@backstage/core-app-api": "^0.1.5",
- "@backstage/dev-utils": "^0.2.3",
- "@backstage/test-utils": "^0.1.15",
+ "@backstage/cli": "^0.7.6",
+ "@backstage/core-app-api": "^0.1.6",
+ "@backstage/dev-utils": "^0.2.4",
+ "@backstage/test-utils": "^0.1.16",
"@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-actions/src/components/WorkflowRunsTable/WorkflowRunsTable.tsx b/plugins/github-actions/src/components/WorkflowRunsTable/WorkflowRunsTable.tsx
index 34191bd307..8f1aff780d 100644
--- a/plugins/github-actions/src/components/WorkflowRunsTable/WorkflowRunsTable.tsx
+++ b/plugins/github-actions/src/components/WorkflowRunsTable/WorkflowRunsTable.tsx
@@ -130,8 +130,8 @@ export const WorkflowRunsTableView = ({
},
]}
data={runs ?? []}
- onChangePage={onChangePage}
- onChangeRowsPerPage={onChangePageSize}
+ onPageChange={onChangePage}
+ onRowsPerPageChange={onChangePageSize}
style={{ width: '100%' }}
title={
diff --git a/plugins/github-deployments/CHANGELOG.md b/plugins/github-deployments/CHANGELOG.md
index 524c1bd86b..68f6aa00b1 100644
--- a/plugins/github-deployments/CHANGELOG.md
+++ b/plugins/github-deployments/CHANGELOG.md
@@ -1,5 +1,22 @@
# @backstage/plugin-github-deployments
+## 0.1.12
+
+### Patch Changes
+
+- 9d40fcb1e: - Bumping `material-ui/core` version to at least `4.12.2` as they made some breaking changes in later versions which broke `Pagination` of the `Table`.
+ - Switching out `material-table` to `@material-table/core` for support for the later versions of `material-ui/core`
+ - This causes a minor API change to `@backstage/core-components` as the interface for `Table` re-exports the `prop` from the underlying `Table` components.
+ - `onChangeRowsPerPage` has been renamed to `onRowsPerPageChange`
+ - `onChangePage` has been renamed to `onPageChange`
+ - Migration guide is here: https://material-table-core.com/docs/breaking-changes
+- Updated dependencies
+ - @backstage/core-components@0.2.0
+ - @backstage/plugin-catalog-react@0.4.0
+ - @backstage/core-plugin-api@0.1.4
+ - @backstage/integration-react@0.1.5
+ - @backstage/theme@0.2.9
+
## 0.1.11
### Patch Changes
diff --git a/plugins/github-deployments/package.json b/plugins/github-deployments/package.json
index 9561083063..21f3c5ef10 100644
--- a/plugins/github-deployments/package.json
+++ b/plugins/github-deployments/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-github-deployments",
- "version": "0.1.11",
+ "version": "0.1.12",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -21,14 +21,14 @@
},
"dependencies": {
"@backstage/catalog-model": "^0.9.0",
- "@backstage/core-components": "^0.1.6",
- "@backstage/core-plugin-api": "^0.1.3",
+ "@backstage/core-components": "^0.2.0",
+ "@backstage/core-plugin-api": "^0.1.4",
"@backstage/errors": "^0.1.1",
"@backstage/integration": "^0.5.8",
- "@backstage/integration-react": "^0.1.4",
- "@backstage/plugin-catalog-react": "^0.3.0",
- "@backstage/theme": "^0.2.8",
- "@material-ui/core": "^4.11.0",
+ "@backstage/integration-react": "^0.1.5",
+ "@backstage/plugin-catalog-react": "^0.4.0",
+ "@backstage/theme": "^0.2.9",
+ "@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.45",
"@octokit/graphql": "^4.5.8",
@@ -38,10 +38,10 @@
"react-use": "^17.2.4"
},
"devDependencies": {
- "@backstage/cli": "^0.7.5",
- "@backstage/core-app-api": "^0.1.5",
- "@backstage/dev-utils": "^0.2.3",
- "@backstage/test-utils": "^0.1.15",
+ "@backstage/cli": "^0.7.6",
+ "@backstage/core-app-api": "^0.1.6",
+ "@backstage/dev-utils": "^0.2.4",
+ "@backstage/test-utils": "^0.1.16",
"@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/src/components/GithubDeploymentsCard.test.tsx b/plugins/github-deployments/src/components/GithubDeploymentsCard.test.tsx
index 474b4a5941..4c1b7854c6 100644
--- a/plugins/github-deployments/src/components/GithubDeploymentsCard.test.tsx
+++ b/plugins/github-deployments/src/components/GithubDeploymentsCard.test.tsx
@@ -311,7 +311,7 @@ describe('github-deployments', () => {
expect(
await rendered.findByText(
- 'Warning: No apiBaseUrl available for host my-github-3.com, please check your integrations config',
+ 'Error: No apiBaseUrl available for host my-github-3.com, please check your integrations config',
),
).toBeInTheDocument();
});
@@ -336,7 +336,7 @@ describe('github-deployments', () => {
expect(
await rendered.findByText(
- 'Warning: No matching GitHub integration configuration for host my-github-unknown.com, please check your integrations config',
+ 'Error: No matching GitHub integration configuration for host my-github-unknown.com, please check your integrations config',
),
).toBeInTheDocument();
});
diff --git a/plugins/gitops-profiles/CHANGELOG.md b/plugins/gitops-profiles/CHANGELOG.md
index 83cea3c807..796d4ac6ca 100644
--- a/plugins/gitops-profiles/CHANGELOG.md
+++ b/plugins/gitops-profiles/CHANGELOG.md
@@ -1,5 +1,20 @@
# @backstage/plugin-gitops-profiles
+## 0.3.1
+
+### Patch Changes
+
+- 9d40fcb1e: - Bumping `material-ui/core` version to at least `4.12.2` as they made some breaking changes in later versions which broke `Pagination` of the `Table`.
+ - Switching out `material-table` to `@material-table/core` for support for the later versions of `material-ui/core`
+ - This causes a minor API change to `@backstage/core-components` as the interface for `Table` re-exports the `prop` from the underlying `Table` components.
+ - `onChangeRowsPerPage` has been renamed to `onRowsPerPageChange`
+ - `onChangePage` has been renamed to `onPageChange`
+ - Migration guide is here: https://material-table-core.com/docs/breaking-changes
+- Updated dependencies
+ - @backstage/core-components@0.2.0
+ - @backstage/core-plugin-api@0.1.4
+ - @backstage/theme@0.2.9
+
## 0.3.0
### Minor Changes
diff --git a/plugins/gitops-profiles/package.json b/plugins/gitops-profiles/package.json
index e7e45ee2a6..b3f1fd9ad3 100644
--- a/plugins/gitops-profiles/package.json
+++ b/plugins/gitops-profiles/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-gitops-profiles",
- "version": "0.3.0",
+ "version": "0.3.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -31,10 +31,10 @@
"clean": "backstage-cli clean"
},
"dependencies": {
- "@backstage/core-components": "^0.1.6",
- "@backstage/core-plugin-api": "^0.1.3",
- "@backstage/theme": "^0.2.8",
- "@material-ui/core": "^4.11.0",
+ "@backstage/core-components": "^0.2.0",
+ "@backstage/core-plugin-api": "^0.1.4",
+ "@backstage/theme": "^0.2.9",
+ "@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.45",
"react": "^16.13.1",
@@ -43,10 +43,10 @@
"react-use": "^17.2.4"
},
"devDependencies": {
- "@backstage/cli": "^0.7.5",
- "@backstage/core-app-api": "^0.1.5",
- "@backstage/dev-utils": "^0.2.3",
- "@backstage/test-utils": "^0.1.15",
+ "@backstage/cli": "^0.7.6",
+ "@backstage/core-app-api": "^0.1.6",
+ "@backstage/dev-utils": "^0.2.4",
+ "@backstage/test-utils": "^0.1.16",
"@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 cfbc2de00a..e5f168ac55 100644
--- a/plugins/graphiql/CHANGELOG.md
+++ b/plugins/graphiql/CHANGELOG.md
@@ -1,5 +1,20 @@
# @backstage/plugin-graphiql
+## 0.2.13
+
+### Patch Changes
+
+- 9d40fcb1e: - Bumping `material-ui/core` version to at least `4.12.2` as they made some breaking changes in later versions which broke `Pagination` of the `Table`.
+ - Switching out `material-table` to `@material-table/core` for support for the later versions of `material-ui/core`
+ - This causes a minor API change to `@backstage/core-components` as the interface for `Table` re-exports the `prop` from the underlying `Table` components.
+ - `onChangeRowsPerPage` has been renamed to `onRowsPerPageChange`
+ - `onChangePage` has been renamed to `onPageChange`
+ - Migration guide is here: https://material-table-core.com/docs/breaking-changes
+- Updated dependencies
+ - @backstage/core-components@0.2.0
+ - @backstage/core-plugin-api@0.1.4
+ - @backstage/theme@0.2.9
+
## 0.2.12
### Patch Changes
diff --git a/plugins/graphiql/package.json b/plugins/graphiql/package.json
index 46f44cdcf4..1b04c3a00b 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.12",
+ "version": "0.2.13",
"private": false,
"publishConfig": {
"access": "public",
@@ -31,10 +31,10 @@
"clean": "backstage-cli clean"
},
"dependencies": {
- "@backstage/core-components": "^0.1.6",
- "@backstage/core-plugin-api": "^0.1.3",
- "@backstage/theme": "^0.2.8",
- "@material-ui/core": "^4.11.0",
+ "@backstage/core-components": "^0.2.0",
+ "@backstage/core-plugin-api": "^0.1.4",
+ "@backstage/theme": "^0.2.9",
+ "@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.45",
"graphiql": "^1.0.0-alpha.10",
@@ -44,10 +44,10 @@
"react-use": "^17.2.4"
},
"devDependencies": {
- "@backstage/cli": "^0.7.5",
- "@backstage/core-app-api": "^0.1.5",
- "@backstage/dev-utils": "^0.2.3",
- "@backstage/test-utils": "^0.1.15",
+ "@backstage/cli": "^0.7.6",
+ "@backstage/core-app-api": "^0.1.6",
+ "@backstage/dev-utils": "^0.2.4",
+ "@backstage/test-utils": "^0.1.16",
"@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 b7eef7ed31..331e6db713 100644
--- a/plugins/ilert/CHANGELOG.md
+++ b/plugins/ilert/CHANGELOG.md
@@ -1,5 +1,21 @@
# @backstage/plugin-ilert
+## 0.1.7
+
+### Patch Changes
+
+- 9d40fcb1e: - Bumping `material-ui/core` version to at least `4.12.2` as they made some breaking changes in later versions which broke `Pagination` of the `Table`.
+ - Switching out `material-table` to `@material-table/core` for support for the later versions of `material-ui/core`
+ - This causes a minor API change to `@backstage/core-components` as the interface for `Table` re-exports the `prop` from the underlying `Table` components.
+ - `onChangeRowsPerPage` has been renamed to `onRowsPerPageChange`
+ - `onChangePage` has been renamed to `onPageChange`
+ - Migration guide is here: https://material-table-core.com/docs/breaking-changes
+- Updated dependencies
+ - @backstage/core-components@0.2.0
+ - @backstage/plugin-catalog-react@0.4.0
+ - @backstage/core-plugin-api@0.1.4
+ - @backstage/theme@0.2.9
+
## 0.1.6
### Patch Changes
diff --git a/plugins/ilert/package.json b/plugins/ilert/package.json
index 01a8e7b013..0ecbc15d35 100644
--- a/plugins/ilert/package.json
+++ b/plugins/ilert/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-ilert",
- "version": "0.1.6",
+ "version": "0.1.7",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -21,13 +21,13 @@
},
"dependencies": {
"@backstage/catalog-model": "^0.9.0",
- "@backstage/core-components": "^0.1.6",
- "@backstage/core-plugin-api": "^0.1.3",
+ "@backstage/core-components": "^0.2.0",
+ "@backstage/core-plugin-api": "^0.1.4",
"@backstage/errors": "^0.1.1",
- "@backstage/plugin-catalog-react": "^0.3.0",
- "@backstage/theme": "^0.2.8",
+ "@backstage/plugin-catalog-react": "^0.4.0",
+ "@backstage/theme": "^0.2.9",
"@date-io/luxon": "2.x",
- "@material-ui/core": "^4.11.0",
+ "@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.45",
"@material-ui/pickers": "^3.3.10",
@@ -38,10 +38,10 @@
"react-use": "^17.2.4"
},
"devDependencies": {
- "@backstage/cli": "^0.7.5",
- "@backstage/core-app-api": "^0.1.5",
- "@backstage/dev-utils": "^0.2.3",
- "@backstage/test-utils": "^0.1.15",
+ "@backstage/cli": "^0.7.6",
+ "@backstage/core-app-api": "^0.1.6",
+ "@backstage/dev-utils": "^0.2.4",
+ "@backstage/test-utils": "^0.1.16",
"@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/src/components/IncidentsPage/IncidentsTable.tsx b/plugins/ilert/src/components/IncidentsPage/IncidentsTable.tsx
index de819c4cc2..9a938256e9 100644
--- a/plugins/ilert/src/components/IncidentsPage/IncidentsTable.tsx
+++ b/plugins/ilert/src/components/IncidentsPage/IncidentsTable.tsx
@@ -253,8 +253,8 @@ export const IncidentsTable = ({
}
page={tableState.page}
totalCount={incidentsCount}
- onChangePage={onChangePage}
- onChangeRowsPerPage={onChangeRowsPerPage}
+ onPageChange={onChangePage}
+ onRowsPerPageChange={onChangeRowsPerPage}
// localization={{ header: { actions: undefined } }}
columns={columns}
data={incidents}
diff --git a/plugins/ilert/src/components/UptimeMonitorsPage/UptimeMonitorsTable.tsx b/plugins/ilert/src/components/UptimeMonitorsPage/UptimeMonitorsTable.tsx
index 6d93385eb2..3099018e91 100644
--- a/plugins/ilert/src/components/UptimeMonitorsPage/UptimeMonitorsTable.tsx
+++ b/plugins/ilert/src/components/UptimeMonitorsPage/UptimeMonitorsTable.tsx
@@ -165,8 +165,8 @@ export const UptimeMonitorsTable = ({
}
page={tableState.page}
- onChangePage={onChangePage}
- onChangeRowsPerPage={onChangeRowsPerPage}
+ onPageChange={onChangePage}
+ onRowsPerPageChange={onChangeRowsPerPage}
localization={{ header: { actions: undefined } }}
isLoading={isLoading}
columns={columns}
diff --git a/plugins/jenkins/CHANGELOG.md b/plugins/jenkins/CHANGELOG.md
index db61a470f7..36c79236c1 100644
--- a/plugins/jenkins/CHANGELOG.md
+++ b/plugins/jenkins/CHANGELOG.md
@@ -1,5 +1,21 @@
# @backstage/plugin-jenkins
+## 0.5.1
+
+### Patch Changes
+
+- 9d40fcb1e: - Bumping `material-ui/core` version to at least `4.12.2` as they made some breaking changes in later versions which broke `Pagination` of the `Table`.
+ - Switching out `material-table` to `@material-table/core` for support for the later versions of `material-ui/core`
+ - This causes a minor API change to `@backstage/core-components` as the interface for `Table` re-exports the `prop` from the underlying `Table` components.
+ - `onChangeRowsPerPage` has been renamed to `onRowsPerPageChange`
+ - `onChangePage` has been renamed to `onPageChange`
+ - Migration guide is here: https://material-table-core.com/docs/breaking-changes
+- Updated dependencies
+ - @backstage/core-components@0.2.0
+ - @backstage/plugin-catalog-react@0.4.0
+ - @backstage/core-plugin-api@0.1.4
+ - @backstage/theme@0.2.9
+
## 0.5.0
### Minor Changes
diff --git a/plugins/jenkins/package.json b/plugins/jenkins/package.json
index 6030beee8e..9560d8d5e6 100644
--- a/plugins/jenkins/package.json
+++ b/plugins/jenkins/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-jenkins",
- "version": "0.5.0",
+ "version": "0.5.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -32,11 +32,11 @@
},
"dependencies": {
"@backstage/catalog-model": "^0.9.0",
- "@backstage/core-components": "^0.1.6",
- "@backstage/core-plugin-api": "^0.1.3",
- "@backstage/plugin-catalog-react": "^0.3.0",
- "@backstage/theme": "^0.2.8",
- "@material-ui/core": "^4.11.0",
+ "@backstage/core-components": "^0.2.0",
+ "@backstage/core-plugin-api": "^0.1.4",
+ "@backstage/plugin-catalog-react": "^0.4.0",
+ "@backstage/theme": "^0.2.9",
+ "@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.45",
"luxon": "^1.25.0",
@@ -47,10 +47,10 @@
"react-use": "^17.2.4"
},
"devDependencies": {
- "@backstage/cli": "^0.7.5",
- "@backstage/core-app-api": "^0.1.5",
- "@backstage/dev-utils": "^0.2.3",
- "@backstage/test-utils": "^0.1.15",
+ "@backstage/cli": "^0.7.6",
+ "@backstage/core-app-api": "^0.1.6",
+ "@backstage/dev-utils": "^0.2.4",
+ "@backstage/test-utils": "^0.1.16",
"@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/src/components/BuildsPage/lib/CITable/CITable.tsx b/plugins/jenkins/src/components/BuildsPage/lib/CITable/CITable.tsx
index 3e5eeffdaa..0519ed3816 100644
--- a/plugins/jenkins/src/components/BuildsPage/lib/CITable/CITable.tsx
+++ b/plugins/jenkins/src/components/BuildsPage/lib/CITable/CITable.tsx
@@ -208,8 +208,8 @@ export const CITableView = ({
},
]}
data={projects ?? []}
- onChangePage={onChangePage}
- onChangeRowsPerPage={onChangePageSize}
+ onPageChange={onChangePage}
+ onRowsPerPageChange={onChangePageSize}
title={
diff --git a/plugins/kafka/CHANGELOG.md b/plugins/kafka/CHANGELOG.md
index e81a64ef58..348b6768f1 100644
--- a/plugins/kafka/CHANGELOG.md
+++ b/plugins/kafka/CHANGELOG.md
@@ -1,5 +1,21 @@
# @backstage/plugin-kafka
+## 0.2.12
+
+### Patch Changes
+
+- 9d40fcb1e: - Bumping `material-ui/core` version to at least `4.12.2` as they made some breaking changes in later versions which broke `Pagination` of the `Table`.
+ - Switching out `material-table` to `@material-table/core` for support for the later versions of `material-ui/core`
+ - This causes a minor API change to `@backstage/core-components` as the interface for `Table` re-exports the `prop` from the underlying `Table` components.
+ - `onChangeRowsPerPage` has been renamed to `onRowsPerPageChange`
+ - `onChangePage` has been renamed to `onPageChange`
+ - Migration guide is here: https://material-table-core.com/docs/breaking-changes
+- Updated dependencies
+ - @backstage/core-components@0.2.0
+ - @backstage/plugin-catalog-react@0.4.0
+ - @backstage/core-plugin-api@0.1.4
+ - @backstage/theme@0.2.9
+
## 0.2.11
### Patch Changes
diff --git a/plugins/kafka/package.json b/plugins/kafka/package.json
index a7328b0c0c..860d17434a 100644
--- a/plugins/kafka/package.json
+++ b/plugins/kafka/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-kafka",
- "version": "0.2.11",
+ "version": "0.2.12",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -21,11 +21,11 @@
},
"dependencies": {
"@backstage/catalog-model": "^0.9.0",
- "@backstage/core-components": "^0.1.6",
- "@backstage/core-plugin-api": "^0.1.3",
- "@backstage/plugin-catalog-react": "^0.3.0",
- "@backstage/theme": "^0.2.8",
- "@material-ui/core": "^4.11.0",
+ "@backstage/core-components": "^0.2.0",
+ "@backstage/core-plugin-api": "^0.1.4",
+ "@backstage/plugin-catalog-react": "^0.4.0",
+ "@backstage/theme": "^0.2.9",
+ "@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.45",
"react": "^16.13.1",
@@ -34,10 +34,10 @@
"react-use": "^17.2.4"
},
"devDependencies": {
- "@backstage/cli": "^0.7.5",
- "@backstage/core-app-api": "^0.1.5",
- "@backstage/dev-utils": "^0.2.3",
- "@backstage/test-utils": "^0.1.15",
+ "@backstage/cli": "^0.7.6",
+ "@backstage/core-app-api": "^0.1.6",
+ "@backstage/dev-utils": "^0.2.4",
+ "@backstage/test-utils": "^0.1.16",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^11.2.5",
"@testing-library/react-hooks": "^3.4.2",
diff --git a/plugins/kubernetes-backend/CHANGELOG.md b/plugins/kubernetes-backend/CHANGELOG.md
index b5870c43e3..4ac6103d94 100644
--- a/plugins/kubernetes-backend/CHANGELOG.md
+++ b/plugins/kubernetes-backend/CHANGELOG.md
@@ -1,5 +1,13 @@
# @backstage/plugin-kubernetes-backend
+## 0.3.12
+
+### Patch Changes
+
+- 7f24f4088: chore(deps): bump `@kubernetes/client-node` from 0.14.3 to 0.15.0
+- Updated dependencies
+ - @backstage/plugin-kubernetes-common@0.1.3
+
## 0.3.11
### Patch Changes
diff --git a/plugins/kubernetes-backend/api-report.md b/plugins/kubernetes-backend/api-report.md
index 72d80050d8..899f1fff00 100644
--- a/plugins/kubernetes-backend/api-report.md
+++ b/plugins/kubernetes-backend/api-report.md
@@ -51,6 +51,11 @@ export interface CustomResource {
plural: string;
}
+// Warning: (ae-missing-release-tag) "DEFAULT_OBJECTS" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
+//
+// @public (undocumented)
+export const DEFAULT_OBJECTS: KubernetesObjectTypes[];
+
// Warning: (ae-missing-release-tag) "FetchResponseWrapper" 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/package.json b/plugins/kubernetes-backend/package.json
index 1467dba9d6..e7c4f2606c 100644
--- a/plugins/kubernetes-backend/package.json
+++ b/plugins/kubernetes-backend/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-kubernetes-backend",
- "version": "0.3.11",
+ "version": "0.3.12",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -34,7 +34,7 @@
"@backstage/backend-common": "^0.8.7",
"@backstage/catalog-model": "^0.9.0",
"@backstage/config": "^0.1.5",
- "@backstage/plugin-kubernetes-common": "^0.1.2",
+ "@backstage/plugin-kubernetes-common": "^0.1.3",
"@google-cloud/container": "^2.2.0",
"@kubernetes/client-node": "^0.15.0",
"@types/express": "^4.17.6",
@@ -53,7 +53,7 @@
"yn": "^4.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.7.5",
+ "@backstage/cli": "^0.7.6",
"@types/aws4": "^1.5.1",
"supertest": "^6.1.3",
"aws-sdk-mock": "^5.2.1",
diff --git a/plugins/kubernetes-backend/schema.d.ts b/plugins/kubernetes-backend/schema.d.ts
index 9d002670b9..8b96d5ceca 100644
--- a/plugins/kubernetes-backend/schema.d.ts
+++ b/plugins/kubernetes-backend/schema.d.ts
@@ -16,6 +16,15 @@
export interface Config {
kubernetes?: {
+ objectTypes?: Array<
+ | 'pods'
+ | 'services'
+ | 'configmaps'
+ | 'deployments'
+ | 'replicasets'
+ | 'horizontalpodautoscalers'
+ | 'ingresses'
+ >;
serviceLocatorMethod: {
type: 'multiTenant';
};
diff --git a/plugins/kubernetes-backend/src/index.ts b/plugins/kubernetes-backend/src/index.ts
index 155c4967d5..e5eb5e7c62 100644
--- a/plugins/kubernetes-backend/src/index.ts
+++ b/plugins/kubernetes-backend/src/index.ts
@@ -16,3 +16,5 @@
export * from './service/router';
export * from './types/types';
+
+export { DEFAULT_OBJECTS } from './service/KubernetesFanOutHandler';
diff --git a/plugins/kubernetes-backend/src/service/KubernetesFanOutHandler.test.ts b/plugins/kubernetes-backend/src/service/KubernetesFanOutHandler.test.ts
index 666b441226..a867efaaee 100644
--- a/plugins/kubernetes-backend/src/service/KubernetesFanOutHandler.test.ts
+++ b/plugins/kubernetes-backend/src/service/KubernetesFanOutHandler.test.ts
@@ -129,16 +129,16 @@ describe('handleGetKubernetesObjectsForService', () => {
mockFetch(fetchObjectsForService);
- const sut = new KubernetesFanOutHandler(
- getVoidLogger(),
- {
+ const sut = new KubernetesFanOutHandler({
+ logger: getVoidLogger(),
+ fetcher: {
fetchObjectsForService,
},
- {
+ serviceLocator: {
getClustersByServiceId,
},
- [],
- );
+ customResources: [],
+ });
const result = await sut.getKubernetesObjectsByEntity({
entity: {
@@ -221,16 +221,16 @@ describe('handleGetKubernetesObjectsForService', () => {
mockFetch(fetchObjectsForService);
- const sut = new KubernetesFanOutHandler(
- getVoidLogger(),
- {
+ const sut = new KubernetesFanOutHandler({
+ logger: getVoidLogger(),
+ fetcher: {
fetchObjectsForService,
},
- {
+ serviceLocator: {
getClustersByServiceId,
},
- [],
- );
+ customResources: [],
+ });
const result = await sut.getKubernetesObjectsByEntity({
auth: {
@@ -357,16 +357,16 @@ describe('handleGetKubernetesObjectsForService', () => {
mockFetch(fetchObjectsForService);
- const sut = new KubernetesFanOutHandler(
- getVoidLogger(),
- {
+ const sut = new KubernetesFanOutHandler({
+ logger: getVoidLogger(),
+ fetcher: {
fetchObjectsForService,
},
- {
+ serviceLocator: {
getClustersByServiceId,
},
- [],
- );
+ customResources: [],
+ });
const result = await sut.getKubernetesObjectsByEntity({
auth: {
@@ -497,16 +497,16 @@ describe('handleGetKubernetesObjectsForService', () => {
mockFetch(fetchObjectsForService);
- const sut = new KubernetesFanOutHandler(
- getVoidLogger(),
- {
+ const sut = new KubernetesFanOutHandler({
+ logger: getVoidLogger(),
+ fetcher: {
fetchObjectsForService,
},
- {
+ serviceLocator: {
getClustersByServiceId,
},
- [],
- );
+ customResources: [],
+ });
const result = await sut.getKubernetesObjectsByEntity({
auth: {
diff --git a/plugins/kubernetes-backend/src/service/KubernetesFanOutHandler.ts b/plugins/kubernetes-backend/src/service/KubernetesFanOutHandler.ts
index 3039560aad..0931d775d3 100644
--- a/plugins/kubernetes-backend/src/service/KubernetesFanOutHandler.ts
+++ b/plugins/kubernetes-backend/src/service/KubernetesFanOutHandler.ts
@@ -26,7 +26,7 @@ import { KubernetesRequestBody } from '@backstage/plugin-kubernetes-common';
import { KubernetesAuthTranslator } from '../kubernetes-auth-translator/types';
import { KubernetesAuthTranslatorGenerator } from '../kubernetes-auth-translator/KubernetesAuthTranslatorGenerator';
-const DEFAULT_OBJECTS = new Set([
+export const DEFAULT_OBJECTS: KubernetesObjectTypes[] = [
'pods',
'services',
'configmaps',
@@ -34,30 +34,38 @@ const DEFAULT_OBJECTS = new Set([
'replicasets',
'horizontalpodautoscalers',
'ingresses',
-]);
+];
+
+export interface KubernetesFanOutHandlerOptions {
+ logger: Logger;
+ fetcher: KubernetesFetcher;
+ serviceLocator: KubernetesServiceLocator;
+ customResources: CustomResource[];
+ objectTypesToFetch?: KubernetesObjectTypes[];
+}
export class KubernetesFanOutHandler {
private readonly logger: Logger;
private readonly fetcher: KubernetesFetcher;
private readonly serviceLocator: KubernetesServiceLocator;
private readonly customResources: CustomResource[];
+ private readonly objectTypesToFetch: KubernetesObjectTypes[];
- constructor(
- logger: Logger,
- fetcher: KubernetesFetcher,
- serviceLocator: KubernetesServiceLocator,
- customResources: CustomResource[],
- ) {
+ constructor({
+ logger,
+ fetcher,
+ serviceLocator,
+ customResources,
+ objectTypesToFetch = DEFAULT_OBJECTS,
+ }: KubernetesFanOutHandlerOptions) {
this.logger = logger;
this.fetcher = fetcher;
this.serviceLocator = serviceLocator;
this.customResources = customResources;
+ this.objectTypesToFetch = objectTypesToFetch;
}
- async getKubernetesObjectsByEntity(
- requestBody: KubernetesRequestBody,
- objectTypesToFetch: Set = DEFAULT_OBJECTS,
- ) {
+ async getKubernetesObjectsByEntity(requestBody: KubernetesRequestBody) {
const entityName =
requestBody.entity?.metadata?.annotations?.[
'backstage.io/kubernetes-id'
@@ -98,7 +106,7 @@ export class KubernetesFanOutHandler {
.fetchObjectsForService({
serviceId: entityName,
clusterDetails: clusterDetailsItem,
- objectTypesToFetch,
+ objectTypesToFetch: new Set(this.objectTypesToFetch),
labelSelector,
customResources: this.customResources,
})
diff --git a/plugins/kubernetes-backend/src/service/router.ts b/plugins/kubernetes-backend/src/service/router.ts
index 984b3f14a0..8a1f2fe627 100644
--- a/plugins/kubernetes-backend/src/service/router.ts
+++ b/plugins/kubernetes-backend/src/service/router.ts
@@ -23,6 +23,7 @@ import { MultiTenantServiceLocator } from '../service-locator/MultiTenantService
import {
ClusterDetails,
KubernetesClustersSupplier,
+ KubernetesObjectTypes,
KubernetesServiceLocator,
ServiceLocatorMethod,
CustomResource,
@@ -133,13 +134,17 @@ export async function createRouter(
);
const serviceLocator = getServiceLocator(options.config, clusterDetails);
+ const objectTypesToFetch = options.config.getOptionalStringArray(
+ 'kubernetes.objectTypes',
+ ) as KubernetesObjectTypes[];
- const kubernetesFanOutHandler = new KubernetesFanOutHandler(
+ const kubernetesFanOutHandler = new KubernetesFanOutHandler({
logger,
fetcher,
serviceLocator,
customResources,
- );
+ objectTypesToFetch,
+ });
return makeRouter(logger, kubernetesFanOutHandler, clusterDetails);
}
diff --git a/plugins/kubernetes-common/CHANGELOG.md b/plugins/kubernetes-common/CHANGELOG.md
index 3f6c1ea7db..49a312fa46 100644
--- a/plugins/kubernetes-common/CHANGELOG.md
+++ b/plugins/kubernetes-common/CHANGELOG.md
@@ -1,5 +1,11 @@
# @backstage/plugin-kubernetes-common
+## 0.1.3
+
+### Patch Changes
+
+- 7f24f4088: chore(deps): bump `@kubernetes/client-node` from 0.14.3 to 0.15.0
+
## 0.1.2
### Patch Changes
diff --git a/plugins/kubernetes-common/package.json b/plugins/kubernetes-common/package.json
index 5321c48e73..445ba3f7d9 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.1.2",
+ "version": "0.1.3",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -39,7 +39,7 @@
"@kubernetes/client-node": "^0.15.0"
},
"devDependencies": {
- "@backstage/cli": "^0.7.0"
+ "@backstage/cli": "^0.7.6"
},
"jest": {
"roots": [
diff --git a/plugins/kubernetes/CHANGELOG.md b/plugins/kubernetes/CHANGELOG.md
index a370dd9af5..35de89edf9 100644
--- a/plugins/kubernetes/CHANGELOG.md
+++ b/plugins/kubernetes/CHANGELOG.md
@@ -1,5 +1,23 @@
# @backstage/plugin-kubernetes
+## 0.4.9
+
+### Patch Changes
+
+- 9d40fcb1e: - Bumping `material-ui/core` version to at least `4.12.2` as they made some breaking changes in later versions which broke `Pagination` of the `Table`.
+ - Switching out `material-table` to `@material-table/core` for support for the later versions of `material-ui/core`
+ - This causes a minor API change to `@backstage/core-components` as the interface for `Table` re-exports the `prop` from the underlying `Table` components.
+ - `onChangeRowsPerPage` has been renamed to `onRowsPerPageChange`
+ - `onChangePage` has been renamed to `onPageChange`
+ - Migration guide is here: https://material-table-core.com/docs/breaking-changes
+- 7f24f4088: chore(deps): bump `@kubernetes/client-node` from 0.14.3 to 0.15.0
+- Updated dependencies
+ - @backstage/core-components@0.2.0
+ - @backstage/plugin-catalog-react@0.4.0
+ - @backstage/core-plugin-api@0.1.4
+ - @backstage/theme@0.2.9
+ - @backstage/plugin-kubernetes-common@0.1.3
+
## 0.4.8
### Patch Changes
diff --git a/plugins/kubernetes/package.json b/plugins/kubernetes/package.json
index ee58c6b222..3a53806e86 100644
--- a/plugins/kubernetes/package.json
+++ b/plugins/kubernetes/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-kubernetes",
- "version": "0.4.8",
+ "version": "0.4.9",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -32,13 +32,13 @@
"dependencies": {
"@backstage/catalog-model": "^0.9.0",
"@backstage/config": "^0.1.5",
- "@backstage/core-components": "^0.1.6",
- "@backstage/core-plugin-api": "^0.1.3",
- "@backstage/plugin-catalog-react": "^0.3.0",
- "@backstage/plugin-kubernetes-common": "^0.1.2",
- "@backstage/theme": "^0.2.8",
+ "@backstage/core-components": "^0.2.0",
+ "@backstage/core-plugin-api": "^0.1.4",
+ "@backstage/plugin-catalog-react": "^0.4.0",
+ "@backstage/plugin-kubernetes-common": "^0.1.3",
+ "@backstage/theme": "^0.2.9",
"@kubernetes/client-node": "^0.15.0",
- "@material-ui/core": "^4.11.0",
+ "@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.45",
"js-yaml": "^4.0.0",
@@ -50,10 +50,10 @@
"react-use": "^17.2.4"
},
"devDependencies": {
- "@backstage/cli": "^0.7.5",
- "@backstage/core-app-api": "^0.1.5",
- "@backstage/dev-utils": "^0.2.3",
- "@backstage/test-utils": "^0.1.15",
+ "@backstage/cli": "^0.7.6",
+ "@backstage/core-app-api": "^0.1.6",
+ "@backstage/dev-utils": "^0.2.4",
+ "@backstage/test-utils": "^0.1.16",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^11.2.5",
"@testing-library/react-hooks": "^3.4.2",
diff --git a/plugins/lighthouse/CHANGELOG.md b/plugins/lighthouse/CHANGELOG.md
index ea2d2efac5..a1753f3cdc 100644
--- a/plugins/lighthouse/CHANGELOG.md
+++ b/plugins/lighthouse/CHANGELOG.md
@@ -1,5 +1,21 @@
# @backstage/plugin-lighthouse
+## 0.2.21
+
+### Patch Changes
+
+- 9d40fcb1e: - Bumping `material-ui/core` version to at least `4.12.2` as they made some breaking changes in later versions which broke `Pagination` of the `Table`.
+ - Switching out `material-table` to `@material-table/core` for support for the later versions of `material-ui/core`
+ - This causes a minor API change to `@backstage/core-components` as the interface for `Table` re-exports the `prop` from the underlying `Table` components.
+ - `onChangeRowsPerPage` has been renamed to `onRowsPerPageChange`
+ - `onChangePage` has been renamed to `onPageChange`
+ - Migration guide is here: https://material-table-core.com/docs/breaking-changes
+- Updated dependencies
+ - @backstage/core-components@0.2.0
+ - @backstage/plugin-catalog-react@0.4.0
+ - @backstage/core-plugin-api@0.1.4
+ - @backstage/theme@0.2.9
+
## 0.2.20
### Patch Changes
diff --git a/plugins/lighthouse/package.json b/plugins/lighthouse/package.json
index 8ceaa35d20..47d816b857 100644
--- a/plugins/lighthouse/package.json
+++ b/plugins/lighthouse/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-lighthouse",
- "version": "0.2.20",
+ "version": "0.2.21",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -33,11 +33,11 @@
"dependencies": {
"@backstage/catalog-model": "^0.9.0",
"@backstage/config": "^0.1.4",
- "@backstage/core-components": "^0.1.6",
- "@backstage/core-plugin-api": "^0.1.3",
- "@backstage/plugin-catalog-react": "^0.3.0",
- "@backstage/theme": "^0.2.8",
- "@material-ui/core": "^4.11.0",
+ "@backstage/core-components": "^0.2.0",
+ "@backstage/core-plugin-api": "^0.1.4",
+ "@backstage/plugin-catalog-react": "^0.4.0",
+ "@backstage/theme": "^0.2.9",
+ "@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.45",
"@testing-library/react-hooks": "^3.4.2",
@@ -47,10 +47,10 @@
"react-use": "^17.2.4"
},
"devDependencies": {
- "@backstage/cli": "^0.7.5",
- "@backstage/core-app-api": "^0.1.5",
- "@backstage/dev-utils": "^0.2.3",
- "@backstage/test-utils": "^0.1.15",
+ "@backstage/cli": "^0.7.6",
+ "@backstage/core-app-api": "^0.1.6",
+ "@backstage/dev-utils": "^0.2.4",
+ "@backstage/test-utils": "^0.1.16",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^11.2.5",
"@testing-library/user-event": "^13.1.8",
diff --git a/plugins/newrelic/CHANGELOG.md b/plugins/newrelic/CHANGELOG.md
index 9f5d70354a..cc50042740 100644
--- a/plugins/newrelic/CHANGELOG.md
+++ b/plugins/newrelic/CHANGELOG.md
@@ -1,5 +1,20 @@
# @backstage/plugin-newrelic
+## 0.3.1
+
+### Patch Changes
+
+- 9d40fcb1e: - Bumping `material-ui/core` version to at least `4.12.2` as they made some breaking changes in later versions which broke `Pagination` of the `Table`.
+ - Switching out `material-table` to `@material-table/core` for support for the later versions of `material-ui/core`
+ - This causes a minor API change to `@backstage/core-components` as the interface for `Table` re-exports the `prop` from the underlying `Table` components.
+ - `onChangeRowsPerPage` has been renamed to `onRowsPerPageChange`
+ - `onChangePage` has been renamed to `onPageChange`
+ - Migration guide is here: https://material-table-core.com/docs/breaking-changes
+- Updated dependencies
+ - @backstage/core-components@0.2.0
+ - @backstage/core-plugin-api@0.1.4
+ - @backstage/theme@0.2.9
+
## 0.3.0
### Minor Changes
diff --git a/plugins/newrelic/package.json b/plugins/newrelic/package.json
index e927cf6eef..93e495b515 100644
--- a/plugins/newrelic/package.json
+++ b/plugins/newrelic/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-newrelic",
- "version": "0.3.0",
+ "version": "0.3.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -31,10 +31,10 @@
"clean": "backstage-cli clean"
},
"dependencies": {
- "@backstage/core-components": "^0.1.6",
- "@backstage/core-plugin-api": "^0.1.3",
- "@backstage/theme": "^0.2.8",
- "@material-ui/core": "^4.11.0",
+ "@backstage/core-components": "^0.2.0",
+ "@backstage/core-plugin-api": "^0.1.4",
+ "@backstage/theme": "^0.2.9",
+ "@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.45",
"react": "^16.13.1",
@@ -42,10 +42,10 @@
"react-use": "^17.2.4"
},
"devDependencies": {
- "@backstage/cli": "^0.7.5",
- "@backstage/core-app-api": "^0.1.5",
- "@backstage/dev-utils": "^0.2.3",
- "@backstage/test-utils": "^0.1.15",
+ "@backstage/cli": "^0.7.6",
+ "@backstage/core-app-api": "^0.1.6",
+ "@backstage/dev-utils": "^0.2.4",
+ "@backstage/test-utils": "^0.1.16",
"@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 ecf570b6b8..f2fdb0a8db 100644
--- a/plugins/org/CHANGELOG.md
+++ b/plugins/org/CHANGELOG.md
@@ -1,5 +1,21 @@
# @backstage/plugin-org
+## 0.3.18
+
+### Patch Changes
+
+- 9d40fcb1e: - Bumping `material-ui/core` version to at least `4.12.2` as they made some breaking changes in later versions which broke `Pagination` of the `Table`.
+ - Switching out `material-table` to `@material-table/core` for support for the later versions of `material-ui/core`
+ - This causes a minor API change to `@backstage/core-components` as the interface for `Table` re-exports the `prop` from the underlying `Table` components.
+ - `onChangeRowsPerPage` has been renamed to `onRowsPerPageChange`
+ - `onChangePage` has been renamed to `onPageChange`
+ - Migration guide is here: https://material-table-core.com/docs/breaking-changes
+- Updated dependencies
+ - @backstage/core-components@0.2.0
+ - @backstage/plugin-catalog-react@0.4.0
+ - @backstage/core-plugin-api@0.1.4
+ - @backstage/theme@0.2.9
+
## 0.3.17
### Patch Changes
diff --git a/plugins/org/package.json b/plugins/org/package.json
index f721675584..14f655d04a 100644
--- a/plugins/org/package.json
+++ b/plugins/org/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-org",
- "version": "0.3.17",
+ "version": "0.3.18",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -21,11 +21,11 @@
},
"dependencies": {
"@backstage/catalog-model": "^0.9.0",
- "@backstage/core-components": "^0.1.6",
- "@backstage/core-plugin-api": "^0.1.3",
- "@backstage/plugin-catalog-react": "^0.3.0",
- "@backstage/theme": "^0.2.8",
- "@material-ui/core": "^4.11.0",
+ "@backstage/core-components": "^0.2.0",
+ "@backstage/core-plugin-api": "^0.1.4",
+ "@backstage/plugin-catalog-react": "^0.4.0",
+ "@backstage/theme": "^0.2.9",
+ "@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.45",
"react": "^16.13.1",
@@ -35,10 +35,10 @@
"react-use": "^17.2.4"
},
"devDependencies": {
- "@backstage/cli": "^0.7.5",
- "@backstage/core-app-api": "^0.1.5",
- "@backstage/dev-utils": "^0.2.3",
- "@backstage/test-utils": "^0.1.15",
+ "@backstage/cli": "^0.7.6",
+ "@backstage/core-app-api": "^0.1.6",
+ "@backstage/dev-utils": "^0.2.4",
+ "@backstage/test-utils": "^0.1.16",
"@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 a83afa09f3..ae34b483ce 100644
--- a/plugins/pagerduty/CHANGELOG.md
+++ b/plugins/pagerduty/CHANGELOG.md
@@ -1,5 +1,21 @@
# @backstage/plugin-pagerduty
+## 0.3.9
+
+### Patch Changes
+
+- 9d40fcb1e: - Bumping `material-ui/core` version to at least `4.12.2` as they made some breaking changes in later versions which broke `Pagination` of the `Table`.
+ - Switching out `material-table` to `@material-table/core` for support for the later versions of `material-ui/core`
+ - This causes a minor API change to `@backstage/core-components` as the interface for `Table` re-exports the `prop` from the underlying `Table` components.
+ - `onChangeRowsPerPage` has been renamed to `onRowsPerPageChange`
+ - `onChangePage` has been renamed to `onPageChange`
+ - Migration guide is here: https://material-table-core.com/docs/breaking-changes
+- Updated dependencies
+ - @backstage/core-components@0.2.0
+ - @backstage/plugin-catalog-react@0.4.0
+ - @backstage/core-plugin-api@0.1.4
+ - @backstage/theme@0.2.9
+
## 0.3.8
### Patch Changes
diff --git a/plugins/pagerduty/package.json b/plugins/pagerduty/package.json
index 2a5c086e50..b5dccba914 100644
--- a/plugins/pagerduty/package.json
+++ b/plugins/pagerduty/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-pagerduty",
- "version": "0.3.8",
+ "version": "0.3.9",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -31,11 +31,11 @@
},
"dependencies": {
"@backstage/catalog-model": "^0.9.0",
- "@backstage/core-components": "^0.1.6",
- "@backstage/core-plugin-api": "^0.1.3",
- "@backstage/plugin-catalog-react": "^0.3.0",
- "@backstage/theme": "^0.2.8",
- "@material-ui/core": "^4.11.0",
+ "@backstage/core-components": "^0.2.0",
+ "@backstage/core-plugin-api": "^0.1.4",
+ "@backstage/plugin-catalog-react": "^0.4.0",
+ "@backstage/theme": "^0.2.9",
+ "@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.45",
"@types/react": "^16.9",
@@ -47,10 +47,10 @@
"react-use": "^17.2.4"
},
"devDependencies": {
- "@backstage/cli": "^0.7.5",
- "@backstage/core-app-api": "^0.1.5",
- "@backstage/dev-utils": "^0.2.3",
- "@backstage/test-utils": "^0.1.15",
+ "@backstage/cli": "^0.7.6",
+ "@backstage/core-app-api": "^0.1.6",
+ "@backstage/dev-utils": "^0.2.4",
+ "@backstage/test-utils": "^0.1.16",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^11.2.5",
"@testing-library/user-event": "^13.1.8",
diff --git a/plugins/register-component/CHANGELOG.md b/plugins/register-component/CHANGELOG.md
index 083f45c321..950ca6fa8f 100644
--- a/plugins/register-component/CHANGELOG.md
+++ b/plugins/register-component/CHANGELOG.md
@@ -1,5 +1,21 @@
# @backstage/plugin-register-component
+## 0.2.21
+
+### Patch Changes
+
+- 9d40fcb1e: - Bumping `material-ui/core` version to at least `4.12.2` as they made some breaking changes in later versions which broke `Pagination` of the `Table`.
+ - Switching out `material-table` to `@material-table/core` for support for the later versions of `material-ui/core`
+ - This causes a minor API change to `@backstage/core-components` as the interface for `Table` re-exports the `prop` from the underlying `Table` components.
+ - `onChangeRowsPerPage` has been renamed to `onRowsPerPageChange`
+ - `onChangePage` has been renamed to `onPageChange`
+ - Migration guide is here: https://material-table-core.com/docs/breaking-changes
+- Updated dependencies
+ - @backstage/core-components@0.2.0
+ - @backstage/plugin-catalog-react@0.4.0
+ - @backstage/core-plugin-api@0.1.4
+ - @backstage/theme@0.2.9
+
## 0.2.20
### Patch Changes
diff --git a/plugins/register-component/package.json b/plugins/register-component/package.json
index c9a4ca161b..ba97f8111b 100644
--- a/plugins/register-component/package.json
+++ b/plugins/register-component/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-register-component",
- "version": "0.2.20",
+ "version": "0.2.21",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -31,11 +31,11 @@
},
"dependencies": {
"@backstage/catalog-model": "^0.9.0",
- "@backstage/core-components": "^0.1.6",
- "@backstage/core-plugin-api": "^0.1.3",
- "@backstage/plugin-catalog-react": "^0.3.0",
- "@backstage/theme": "^0.2.8",
- "@material-ui/core": "^4.11.0",
+ "@backstage/core-components": "^0.2.0",
+ "@backstage/core-plugin-api": "^0.1.4",
+ "@backstage/plugin-catalog-react": "^0.4.0",
+ "@backstage/theme": "^0.2.9",
+ "@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.45",
"react": "^16.13.1",
@@ -46,10 +46,10 @@
"react-use": "^17.2.4"
},
"devDependencies": {
- "@backstage/cli": "^0.7.5",
- "@backstage/core-app-api": "^0.1.5",
- "@backstage/dev-utils": "^0.2.3",
- "@backstage/test-utils": "^0.1.15",
+ "@backstage/cli": "^0.7.6",
+ "@backstage/core-app-api": "^0.1.6",
+ "@backstage/dev-utils": "^0.2.4",
+ "@backstage/test-utils": "^0.1.16",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^11.2.5",
"@testing-library/user-event": "^13.1.8",
diff --git a/plugins/rollbar/CHANGELOG.md b/plugins/rollbar/CHANGELOG.md
index 5d04f96d6e..d2d1696d8d 100644
--- a/plugins/rollbar/CHANGELOG.md
+++ b/plugins/rollbar/CHANGELOG.md
@@ -1,5 +1,21 @@
# @backstage/plugin-rollbar
+## 0.3.10
+
+### Patch Changes
+
+- 9d40fcb1e: - Bumping `material-ui/core` version to at least `4.12.2` as they made some breaking changes in later versions which broke `Pagination` of the `Table`.
+ - Switching out `material-table` to `@material-table/core` for support for the later versions of `material-ui/core`
+ - This causes a minor API change to `@backstage/core-components` as the interface for `Table` re-exports the `prop` from the underlying `Table` components.
+ - `onChangeRowsPerPage` has been renamed to `onRowsPerPageChange`
+ - `onChangePage` has been renamed to `onPageChange`
+ - Migration guide is here: https://material-table-core.com/docs/breaking-changes
+- Updated dependencies
+ - @backstage/core-components@0.2.0
+ - @backstage/plugin-catalog-react@0.4.0
+ - @backstage/core-plugin-api@0.1.4
+ - @backstage/theme@0.2.9
+
## 0.3.9
### Patch Changes
diff --git a/plugins/rollbar/package.json b/plugins/rollbar/package.json
index f95bba8076..26d4194795 100644
--- a/plugins/rollbar/package.json
+++ b/plugins/rollbar/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-rollbar",
- "version": "0.3.9",
+ "version": "0.3.10",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -32,11 +32,11 @@
},
"dependencies": {
"@backstage/catalog-model": "^0.9.0",
- "@backstage/core-components": "^0.1.6",
- "@backstage/core-plugin-api": "^0.1.3",
- "@backstage/plugin-catalog-react": "^0.3.0",
- "@backstage/theme": "^0.2.8",
- "@material-ui/core": "^4.11.0",
+ "@backstage/core-components": "^0.2.0",
+ "@backstage/core-plugin-api": "^0.1.4",
+ "@backstage/plugin-catalog-react": "^0.4.0",
+ "@backstage/theme": "^0.2.9",
+ "@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.45",
"lodash": "^4.17.15",
@@ -48,10 +48,10 @@
"react-use": "^17.2.4"
},
"devDependencies": {
- "@backstage/cli": "^0.7.5",
- "@backstage/core-app-api": "^0.1.5",
- "@backstage/dev-utils": "^0.2.3",
- "@backstage/test-utils": "^0.1.15",
+ "@backstage/cli": "^0.7.6",
+ "@backstage/core-app-api": "^0.1.6",
+ "@backstage/dev-utils": "^0.2.4",
+ "@backstage/test-utils": "^0.1.16",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^11.2.5",
"@testing-library/react-hooks": "^3.3.0",
diff --git a/plugins/scaffolder-backend/config.d.ts b/plugins/scaffolder-backend/config.d.ts
index 795fe5b112..126c55e166 100644
--- a/plugins/scaffolder-backend/config.d.ts
+++ b/plugins/scaffolder-backend/config.d.ts
@@ -24,6 +24,10 @@ export interface Config {
name?: string;
email?: string;
};
+ /**
+ * The commit message used when new components are created.
+ */
+ defaultCommitMessage?: string;
github?: {
[key: string]: string;
/**
diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/helpers.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/helpers.ts
index e2459a8ca7..7a10046fd0 100644
--- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/helpers.ts
+++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/helpers.ts
@@ -62,6 +62,7 @@ export async function initRepoAndPush({
auth,
logger,
defaultBranch = 'master',
+ commitMessage = 'Initial commit',
gitAuthorInfo,
}: {
dir: string;
@@ -69,6 +70,7 @@ export async function initRepoAndPush({
auth: { username: string; password: string };
logger: Logger;
defaultBranch?: string;
+ commitMessage?: string;
gitAuthorInfo?: { name?: string; email?: string };
}): Promise {
const git = Git.fromAuth({
@@ -100,7 +102,7 @@ export async function initRepoAndPush({
await git.commit({
dir,
- message: 'Initial commit',
+ message: commitMessage,
author: authorInfo,
committer: authorInfo,
});
diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/azure.test.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/azure.test.ts
index 30995dee38..a242863ac7 100644
--- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/azure.test.ts
+++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/azure.test.ts
@@ -233,6 +233,44 @@ describe('publish:azure', () => {
});
});
+ it('should call initRepoAndPush with the configured defaultCommitMessage', async () => {
+ const customAuthorConfig = new ConfigReader({
+ integrations: {
+ azure: [
+ { host: 'dev.azure.com', token: 'tokenlols' },
+ { host: 'myazurehostnotoken.com' },
+ ],
+ },
+ scaffolder: {
+ defaultCommitMessage: 'Test commit message',
+ },
+ });
+
+ const customAuthorIntegrations = ScmIntegrations.fromConfig(
+ customAuthorConfig,
+ );
+ const customAuthorAction = createPublishAzureAction({
+ integrations: customAuthorIntegrations,
+ config: customAuthorConfig,
+ });
+
+ mockGitClient.createRepository.mockImplementation(() => ({
+ remoteUrl: 'https://dev.azure.com/organization/project/_git/repo',
+ }));
+
+ await customAuthorAction.handler(mockContext);
+
+ expect(initRepoAndPush).toHaveBeenCalledWith({
+ dir: mockContext.workspacePath,
+ remoteUrl: 'https://dev.azure.com/organization/project/_git/repo',
+ auth: { username: 'notempty', password: 'tokenlols' },
+ logger: mockContext.logger,
+ defaultBranch: 'master',
+ commitMessage: 'Test commit message',
+ gitAuthorInfo: { email: undefined, name: undefined },
+ });
+ });
+
it('should call output with the remoteUrl and the repoContentsUrl', async () => {
mockGitClient.createRepository.mockImplementation(() => ({
remoteUrl: 'https://dev.azure.com/organization/project/_git/repo',
diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/azure.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/azure.ts
index c58dd69424..f5c7879fa9 100644
--- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/azure.ts
+++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/azure.ts
@@ -139,6 +139,9 @@ export function createPublishAzureAction(options: {
password: integrationConfig.config.token,
},
logger: ctx.logger,
+ commitMessage: config.getOptionalString(
+ 'scaffolder.defaultCommitMessage',
+ ),
gitAuthorInfo,
});
diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/bitbucket.test.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/bitbucket.test.ts
index 9fe245935b..ebdd28260c 100644
--- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/bitbucket.test.ts
+++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/bitbucket.test.ts
@@ -407,6 +407,74 @@ describe('publish:bitbucket', () => {
});
});
+ it('should call initAndPush with the configured defaultCommitMessage', async () => {
+ const customAuthorConfig = new ConfigReader({
+ integrations: {
+ bitbucket: [
+ {
+ host: 'bitbucket.org',
+ token: 'tokenlols',
+ },
+ {
+ host: 'hosted.bitbucket.com',
+ token: 'thing',
+ apiBaseUrl: 'https://hosted.bitbucket.com/rest/api/1.0',
+ },
+ {
+ host: 'notoken.bitbucket.com',
+ },
+ ],
+ },
+ scaffolder: {
+ defaultCommitMessage: 'Test commit message',
+ },
+ });
+
+ const customAuthorIntegrations = ScmIntegrations.fromConfig(
+ customAuthorConfig,
+ );
+ const customAuthorAction = createPublishBitbucketAction({
+ integrations: customAuthorIntegrations,
+ config: customAuthorConfig,
+ });
+
+ server.use(
+ rest.post(
+ 'https://api.bitbucket.org/2.0/repositories/owner/repo',
+ (_, res, ctx) =>
+ res(
+ ctx.status(200),
+ ctx.set('Content-Type', 'application/json'),
+ ctx.json({
+ links: {
+ html: {
+ href: 'https://bitbucket.org/owner/repo',
+ },
+ clone: [
+ {
+ name: 'https',
+ href: 'https://bitbucket.org/owner/cloneurl',
+ },
+ ],
+ },
+ }),
+ ),
+ ),
+ );
+
+ await customAuthorAction.handler(mockContext);
+
+ expect(initRepoAndPush).toHaveBeenCalledWith({
+ dir: mockContext.workspacePath,
+ remoteUrl: 'https://bitbucket.org/owner/cloneurl',
+ auth: { username: 'x-token-auth', password: 'tokenlols' },
+ logger: mockContext.logger,
+ defaultBranch: 'master',
+ commitMessage: 'Test commit message',
+ gitAuthorInfo: { email: undefined, name: undefined },
+ });
+ });
+
it('should call outputs with the correct urls', async () => {
server.use(
rest.post(
diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/bitbucket.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/bitbucket.ts
index ffd2e4d6a7..41d71c9ab5 100644
--- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/bitbucket.ts
+++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/bitbucket.ts
@@ -304,6 +304,9 @@ export function createPublishBitbucketAction(options: {
},
defaultBranch,
logger: ctx.logger,
+ commitMessage: config.getOptionalString(
+ 'scaffolder.defaultCommitMessage',
+ ),
gitAuthorInfo,
});
diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/github.test.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/github.test.ts
index f0725d6e8e..173e44848b 100644
--- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/github.test.ts
+++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/github.test.ts
@@ -260,6 +260,51 @@ describe('publish:github', () => {
});
});
+ it('should call initRepoAndPush with the configured defaultCommitMessage', async () => {
+ const customAuthorConfig = new ConfigReader({
+ integrations: {
+ github: [
+ { host: 'github.com', token: 'tokenlols' },
+ { host: 'ghe.github.com' },
+ ],
+ },
+ scaffolder: {
+ defaultCommitMessage: 'Test commit message',
+ },
+ });
+
+ const customAuthorIntegrations = ScmIntegrations.fromConfig(
+ customAuthorConfig,
+ );
+ const customAuthorAction = createPublishGithubAction({
+ integrations: customAuthorIntegrations,
+ config: customAuthorConfig,
+ });
+
+ mockGithubClient.users.getByUsername.mockResolvedValue({
+ data: { type: 'User' },
+ });
+
+ mockGithubClient.repos.createForAuthenticatedUser.mockResolvedValue({
+ data: {
+ clone_url: 'https://github.com/clone/url.git',
+ html_url: 'https://github.com/html/url',
+ },
+ });
+
+ await customAuthorAction.handler(mockContext);
+
+ expect(initRepoAndPush).toHaveBeenCalledWith({
+ dir: mockContext.workspacePath,
+ remoteUrl: 'https://github.com/clone/url.git',
+ defaultBranch: 'master',
+ auth: { username: 'x-access-token', password: 'tokenlols' },
+ logger: mockContext.logger,
+ commitMessage: 'Test commit message',
+ gitAuthorInfo: { email: undefined, name: undefined },
+ });
+ });
+
it('should add access for the team when it starts with the owner', async () => {
mockGithubClient.users.getByUsername.mockResolvedValue({
data: { type: 'User' },
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 05301bda85..640ae5dfe5 100644
--- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/github.ts
+++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/github.ts
@@ -264,6 +264,9 @@ export function createPublishGithubAction(options: {
password: token,
},
logger: ctx.logger,
+ commitMessage: config.getOptionalString(
+ 'scaffolder.defaultCommitMessage',
+ ),
gitAuthorInfo,
});
diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gitlab.test.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gitlab.test.ts
index 5150205a08..d76f838797 100644
--- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gitlab.test.ts
+++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gitlab.test.ts
@@ -219,6 +219,52 @@ describe('publish:gitlab', () => {
});
});
+ it('should call initRepoAndPush with the configured defaultCommitMessage', async () => {
+ const customAuthorConfig = new ConfigReader({
+ integrations: {
+ gitlab: [
+ {
+ host: 'gitlab.com',
+ token: 'tokenlols',
+ apiBaseUrl: 'https://api.gitlab.com',
+ },
+ {
+ host: 'hosted.gitlab.com',
+ apiBaseUrl: 'https://api.hosted.gitlab.com',
+ },
+ ],
+ },
+ scaffolder: {
+ defaultCommitMessage: 'Test commit message',
+ },
+ });
+
+ const customAuthorIntegrations = ScmIntegrations.fromConfig(
+ customAuthorConfig,
+ );
+ const customAuthorAction = createPublishGitlabAction({
+ integrations: customAuthorIntegrations,
+ config: customAuthorConfig,
+ });
+
+ mockGitlabClient.Namespaces.show.mockResolvedValue({ id: 1234 });
+ mockGitlabClient.Projects.create.mockResolvedValue({
+ http_url_to_repo: 'http://mockurl.git',
+ });
+
+ await customAuthorAction.handler(mockContext);
+
+ expect(initRepoAndPush).toHaveBeenCalledWith({
+ dir: mockContext.workspacePath,
+ remoteUrl: 'http://mockurl.git',
+ auth: { username: 'oauth2', password: 'tokenlols' },
+ logger: mockContext.logger,
+ defaultBranch: 'master',
+ commitMessage: 'Test commit message',
+ gitAuthorInfo: { email: undefined, name: undefined },
+ });
+ });
+
it('should call output with the remoteUrl and repoContentsUrl', async () => {
mockGitlabClient.Namespaces.show.mockResolvedValue({ id: 1234 });
mockGitlabClient.Projects.create.mockResolvedValue({
diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gitlab.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gitlab.ts
index b99d40b1f7..fbd2dcaaae 100644
--- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gitlab.ts
+++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gitlab.ts
@@ -137,6 +137,9 @@ export function createPublishGitlabAction(options: {
password: integrationConfig.config.token,
},
logger: ctx.logger,
+ commitMessage: config.getOptionalString(
+ 'scaffolder.defaultCommitMessage',
+ ),
gitAuthorInfo,
});
diff --git a/plugins/scaffolder/CHANGELOG.md b/plugins/scaffolder/CHANGELOG.md
index 3e80dc993e..a5a3d4a75c 100644
--- a/plugins/scaffolder/CHANGELOG.md
+++ b/plugins/scaffolder/CHANGELOG.md
@@ -1,5 +1,24 @@
# @backstage/plugin-scaffolder
+## 0.10.2
+
+### Patch Changes
+
+- 0d5d0e2e6: chore: set the lifecycle as beta logo
+- 9d40fcb1e: - Bumping `material-ui/core` version to at least `4.12.2` as they made some breaking changes in later versions which broke `Pagination` of the `Table`.
+ - Switching out `material-table` to `@material-table/core` for support for the later versions of `material-ui/core`
+ - This causes a minor API change to `@backstage/core-components` as the interface for `Table` re-exports the `prop` from the underlying `Table` components.
+ - `onChangeRowsPerPage` has been renamed to `onRowsPerPageChange`
+ - `onChangePage` has been renamed to `onPageChange`
+ - Migration guide is here: https://material-table-core.com/docs/breaking-changes
+- Updated dependencies
+ - @backstage/core-components@0.2.0
+ - @backstage/plugin-catalog-react@0.4.0
+ - @backstage/core-plugin-api@0.1.4
+ - @backstage/integration-react@0.1.5
+ - @backstage/theme@0.2.9
+ - @backstage/catalog-client@0.3.18
+
## 0.10.1
### Patch Changes
diff --git a/plugins/scaffolder/package.json b/plugins/scaffolder/package.json
index edb2f44d94..f31be76803 100644
--- a/plugins/scaffolder/package.json
+++ b/plugins/scaffolder/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-scaffolder",
- "version": "0.10.1",
+ "version": "0.10.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -30,17 +30,17 @@
"clean": "backstage-cli clean"
},
"dependencies": {
- "@backstage/catalog-client": "^0.3.16",
+ "@backstage/catalog-client": "^0.3.18",
"@backstage/catalog-model": "^0.9.0",
"@backstage/config": "^0.1.5",
- "@backstage/core-components": "^0.1.6",
- "@backstage/core-plugin-api": "^0.1.3",
+ "@backstage/core-components": "^0.2.0",
+ "@backstage/core-plugin-api": "^0.1.4",
"@backstage/errors": "^0.1.1",
"@backstage/integration": "^0.5.8",
- "@backstage/integration-react": "^0.1.4",
- "@backstage/plugin-catalog-react": "^0.3.0",
- "@backstage/theme": "^0.2.8",
- "@material-ui/core": "^4.11.0",
+ "@backstage/integration-react": "^0.1.5",
+ "@backstage/plugin-catalog-react": "^0.4.0",
+ "@backstage/theme": "^0.2.9",
+ "@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.45",
"@rjsf/core": "^3.0.0",
@@ -63,10 +63,10 @@
"zen-observable": "^0.8.15"
},
"devDependencies": {
- "@backstage/cli": "^0.7.5",
- "@backstage/core-app-api": "^0.1.5",
- "@backstage/dev-utils": "^0.2.3",
- "@backstage/test-utils": "^0.1.15",
+ "@backstage/cli": "^0.7.6",
+ "@backstage/core-app-api": "^0.1.6",
+ "@backstage/dev-utils": "^0.2.4",
+ "@backstage/test-utils": "^0.1.16",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^11.2.5",
"@testing-library/react-hooks": "^3.3.0",
diff --git a/plugins/search/CHANGELOG.md b/plugins/search/CHANGELOG.md
index 0e19f854bd..2cdb82209f 100644
--- a/plugins/search/CHANGELOG.md
+++ b/plugins/search/CHANGELOG.md
@@ -1,5 +1,21 @@
# @backstage/plugin-search
+## 0.4.5
+
+### Patch Changes
+
+- 9d40fcb1e: - Bumping `material-ui/core` version to at least `4.12.2` as they made some breaking changes in later versions which broke `Pagination` of the `Table`.
+ - Switching out `material-table` to `@material-table/core` for support for the later versions of `material-ui/core`
+ - This causes a minor API change to `@backstage/core-components` as the interface for `Table` re-exports the `prop` from the underlying `Table` components.
+ - `onChangeRowsPerPage` has been renamed to `onRowsPerPageChange`
+ - `onChangePage` has been renamed to `onPageChange`
+ - Migration guide is here: https://material-table-core.com/docs/breaking-changes
+- Updated dependencies
+ - @backstage/core-components@0.2.0
+ - @backstage/plugin-catalog-react@0.4.0
+ - @backstage/core-plugin-api@0.1.4
+ - @backstage/theme@0.2.9
+
## 0.4.4
### Patch Changes
diff --git a/plugins/search/package.json b/plugins/search/package.json
index a6ca45497a..564e62a6ba 100644
--- a/plugins/search/package.json
+++ b/plugins/search/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-search",
- "version": "0.4.4",
+ "version": "0.4.5",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -31,13 +31,13 @@
"dependencies": {
"@backstage/catalog-model": "^0.9.0",
"@backstage/config": "^0.1.5",
- "@backstage/core-components": "^0.1.6",
- "@backstage/core-plugin-api": "^0.1.3",
+ "@backstage/core-components": "^0.2.0",
+ "@backstage/core-plugin-api": "^0.1.4",
"@backstage/errors": "^0.1.1",
- "@backstage/plugin-catalog-react": "^0.3.1",
+ "@backstage/plugin-catalog-react": "^0.4.0",
"@backstage/search-common": "^0.1.2",
- "@backstage/theme": "^0.2.8",
- "@material-ui/core": "^4.11.0",
+ "@backstage/theme": "^0.2.9",
+ "@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.45",
"@types/react": "^16.9",
@@ -49,10 +49,10 @@
"react-use": "^17.2.4"
},
"devDependencies": {
- "@backstage/cli": "^0.7.5",
- "@backstage/core-app-api": "^0.1.5",
- "@backstage/dev-utils": "^0.2.3",
- "@backstage/test-utils": "^0.1.15",
+ "@backstage/cli": "^0.7.6",
+ "@backstage/core-app-api": "^0.1.6",
+ "@backstage/dev-utils": "^0.2.4",
+ "@backstage/test-utils": "^0.1.16",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^11.2.5",
"@testing-library/react-hooks": "^3.4.2",
diff --git a/plugins/sentry/CHANGELOG.md b/plugins/sentry/CHANGELOG.md
index d341c1803e..47d483fbf1 100644
--- a/plugins/sentry/CHANGELOG.md
+++ b/plugins/sentry/CHANGELOG.md
@@ -1,5 +1,21 @@
# @backstage/plugin-sentry
+## 0.3.16
+
+### Patch Changes
+
+- 9d40fcb1e: - Bumping `material-ui/core` version to at least `4.12.2` as they made some breaking changes in later versions which broke `Pagination` of the `Table`.
+ - Switching out `material-table` to `@material-table/core` for support for the later versions of `material-ui/core`
+ - This causes a minor API change to `@backstage/core-components` as the interface for `Table` re-exports the `prop` from the underlying `Table` components.
+ - `onChangeRowsPerPage` has been renamed to `onRowsPerPageChange`
+ - `onChangePage` has been renamed to `onPageChange`
+ - Migration guide is here: https://material-table-core.com/docs/breaking-changes
+- Updated dependencies
+ - @backstage/core-components@0.2.0
+ - @backstage/plugin-catalog-react@0.4.0
+ - @backstage/core-plugin-api@0.1.4
+ - @backstage/theme@0.2.9
+
## 0.3.15
### Patch Changes
diff --git a/plugins/sentry/package.json b/plugins/sentry/package.json
index 989a18a6d9..648f930fb5 100644
--- a/plugins/sentry/package.json
+++ b/plugins/sentry/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-sentry",
- "version": "0.3.15",
+ "version": "0.3.16",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -32,11 +32,11 @@
},
"dependencies": {
"@backstage/catalog-model": "^0.9.0",
- "@backstage/core-components": "^0.1.6",
- "@backstage/core-plugin-api": "^0.1.3",
- "@backstage/plugin-catalog-react": "^0.3.0",
- "@backstage/theme": "^0.2.8",
- "@material-ui/core": "^4.11.0",
+ "@backstage/core-components": "^0.2.0",
+ "@backstage/core-plugin-api": "^0.1.4",
+ "@backstage/plugin-catalog-react": "^0.4.0",
+ "@backstage/theme": "^0.2.9",
+ "@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.45",
"luxon": "^1.27.0",
@@ -47,10 +47,10 @@
"react-use": "^17.2.4"
},
"devDependencies": {
- "@backstage/cli": "^0.7.5",
- "@backstage/core-app-api": "^0.1.5",
- "@backstage/dev-utils": "^0.2.3",
- "@backstage/test-utils": "^0.1.15",
+ "@backstage/cli": "^0.7.6",
+ "@backstage/core-app-api": "^0.1.6",
+ "@backstage/dev-utils": "^0.2.4",
+ "@backstage/test-utils": "^0.1.16",
"@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 77748cd722..8a75c784a5 100644
--- a/plugins/shortcuts/CHANGELOG.md
+++ b/plugins/shortcuts/CHANGELOG.md
@@ -1,5 +1,20 @@
# @backstage/plugin-shortcuts
+## 0.1.5
+
+### Patch Changes
+
+- 9d40fcb1e: - Bumping `material-ui/core` version to at least `4.12.2` as they made some breaking changes in later versions which broke `Pagination` of the `Table`.
+ - Switching out `material-table` to `@material-table/core` for support for the later versions of `material-ui/core`
+ - This causes a minor API change to `@backstage/core-components` as the interface for `Table` re-exports the `prop` from the underlying `Table` components.
+ - `onChangeRowsPerPage` has been renamed to `onRowsPerPageChange`
+ - `onChangePage` has been renamed to `onPageChange`
+ - Migration guide is here: https://material-table-core.com/docs/breaking-changes
+- Updated dependencies
+ - @backstage/core-components@0.2.0
+ - @backstage/core-plugin-api@0.1.4
+ - @backstage/theme@0.2.9
+
## 0.1.4
### Patch Changes
diff --git a/plugins/shortcuts/package.json b/plugins/shortcuts/package.json
index 293d71eeb9..bb0fe74778 100644
--- a/plugins/shortcuts/package.json
+++ b/plugins/shortcuts/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-shortcuts",
- "version": "0.1.4",
+ "version": "0.1.5",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -20,10 +20,10 @@
"clean": "backstage-cli clean"
},
"dependencies": {
- "@backstage/core-components": "^0.1.6",
- "@backstage/core-plugin-api": "^0.1.3",
- "@backstage/theme": "^0.2.8",
- "@material-ui/core": "^4.11.0",
+ "@backstage/core-components": "^0.2.0",
+ "@backstage/core-plugin-api": "^0.1.4",
+ "@backstage/theme": "^0.2.9",
+ "@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.45",
"@types/zen-observable": "^0.8.2",
@@ -36,10 +36,10 @@
"zen-observable": "^0.8.15"
},
"devDependencies": {
- "@backstage/cli": "^0.7.5",
- "@backstage/core-app-api": "^0.1.5",
- "@backstage/dev-utils": "^0.2.3",
- "@backstage/test-utils": "^0.1.15",
+ "@backstage/cli": "^0.7.6",
+ "@backstage/core-app-api": "^0.1.6",
+ "@backstage/dev-utils": "^0.2.4",
+ "@backstage/test-utils": "^0.1.16",
"@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 0da72704da..4976ef10e0 100644
--- a/plugins/sonarqube/CHANGELOG.md
+++ b/plugins/sonarqube/CHANGELOG.md
@@ -1,5 +1,21 @@
# @backstage/plugin-sonarqube
+## 0.1.23
+
+### Patch Changes
+
+- 9d40fcb1e: - Bumping `material-ui/core` version to at least `4.12.2` as they made some breaking changes in later versions which broke `Pagination` of the `Table`.
+ - Switching out `material-table` to `@material-table/core` for support for the later versions of `material-ui/core`
+ - This causes a minor API change to `@backstage/core-components` as the interface for `Table` re-exports the `prop` from the underlying `Table` components.
+ - `onChangeRowsPerPage` has been renamed to `onRowsPerPageChange`
+ - `onChangePage` has been renamed to `onPageChange`
+ - Migration guide is here: https://material-table-core.com/docs/breaking-changes
+- Updated dependencies
+ - @backstage/core-components@0.2.0
+ - @backstage/plugin-catalog-react@0.4.0
+ - @backstage/core-plugin-api@0.1.4
+ - @backstage/theme@0.2.9
+
## 0.1.22
### Patch Changes
diff --git a/plugins/sonarqube/package.json b/plugins/sonarqube/package.json
index a132da5702..2be9537d6c 100644
--- a/plugins/sonarqube/package.json
+++ b/plugins/sonarqube/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-sonarqube",
- "version": "0.1.22",
+ "version": "0.1.23",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -33,11 +33,11 @@
},
"dependencies": {
"@backstage/catalog-model": "^0.9.0",
- "@backstage/core-components": "^0.1.6",
- "@backstage/core-plugin-api": "^0.1.3",
- "@backstage/plugin-catalog-react": "^0.3.0",
- "@backstage/theme": "^0.2.8",
- "@material-ui/core": "^4.11.0",
+ "@backstage/core-components": "^0.2.0",
+ "@backstage/core-plugin-api": "^0.1.4",
+ "@backstage/plugin-catalog-react": "^0.4.0",
+ "@backstage/theme": "^0.2.9",
+ "@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.45",
"@material-ui/styles": "^4.10.0",
@@ -48,10 +48,10 @@
"react-use": "^17.2.4"
},
"devDependencies": {
- "@backstage/cli": "^0.7.5",
- "@backstage/core-app-api": "^0.1.5",
- "@backstage/dev-utils": "^0.2.3",
- "@backstage/test-utils": "^0.1.15",
+ "@backstage/cli": "^0.7.6",
+ "@backstage/core-app-api": "^0.1.6",
+ "@backstage/dev-utils": "^0.2.4",
+ "@backstage/test-utils": "^0.1.16",
"@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 083d5b5749..ae7696a301 100644
--- a/plugins/splunk-on-call/CHANGELOG.md
+++ b/plugins/splunk-on-call/CHANGELOG.md
@@ -1,5 +1,21 @@
# @backstage/plugin-splunk-on-call
+## 0.3.6
+
+### Patch Changes
+
+- 9d40fcb1e: - Bumping `material-ui/core` version to at least `4.12.2` as they made some breaking changes in later versions which broke `Pagination` of the `Table`.
+ - Switching out `material-table` to `@material-table/core` for support for the later versions of `material-ui/core`
+ - This causes a minor API change to `@backstage/core-components` as the interface for `Table` re-exports the `prop` from the underlying `Table` components.
+ - `onChangeRowsPerPage` has been renamed to `onRowsPerPageChange`
+ - `onChangePage` has been renamed to `onPageChange`
+ - Migration guide is here: https://material-table-core.com/docs/breaking-changes
+- Updated dependencies
+ - @backstage/core-components@0.2.0
+ - @backstage/plugin-catalog-react@0.4.0
+ - @backstage/core-plugin-api@0.1.4
+ - @backstage/theme@0.2.9
+
## 0.3.5
### Patch Changes
diff --git a/plugins/splunk-on-call/package.json b/plugins/splunk-on-call/package.json
index d779df3f97..93e05b532d 100644
--- a/plugins/splunk-on-call/package.json
+++ b/plugins/splunk-on-call/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-splunk-on-call",
- "version": "0.3.5",
+ "version": "0.3.6",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -31,11 +31,11 @@
},
"dependencies": {
"@backstage/catalog-model": "^0.9.0",
- "@backstage/core-components": "^0.1.6",
- "@backstage/core-plugin-api": "^0.1.3",
- "@backstage/plugin-catalog-react": "^0.3.0",
- "@backstage/theme": "^0.2.8",
- "@material-ui/core": "^4.11.0",
+ "@backstage/core-components": "^0.2.0",
+ "@backstage/core-plugin-api": "^0.1.4",
+ "@backstage/plugin-catalog-react": "^0.4.0",
+ "@backstage/theme": "^0.2.9",
+ "@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.45",
"classnames": "^2.2.6",
@@ -46,10 +46,10 @@
"react-use": "^17.2.4"
},
"devDependencies": {
- "@backstage/cli": "^0.7.5",
- "@backstage/core-app-api": "^0.1.5",
- "@backstage/dev-utils": "^0.2.3",
- "@backstage/test-utils": "^0.1.15",
+ "@backstage/cli": "^0.7.6",
+ "@backstage/core-app-api": "^0.1.6",
+ "@backstage/dev-utils": "^0.2.4",
+ "@backstage/test-utils": "^0.1.16",
"@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 20602282c6..120684eb53 100644
--- a/plugins/tech-radar/CHANGELOG.md
+++ b/plugins/tech-radar/CHANGELOG.md
@@ -1,5 +1,20 @@
# @backstage/plugin-tech-radar
+## 0.4.3
+
+### Patch Changes
+
+- 9d40fcb1e: - Bumping `material-ui/core` version to at least `4.12.2` as they made some breaking changes in later versions which broke `Pagination` of the `Table`.
+ - Switching out `material-table` to `@material-table/core` for support for the later versions of `material-ui/core`
+ - This causes a minor API change to `@backstage/core-components` as the interface for `Table` re-exports the `prop` from the underlying `Table` components.
+ - `onChangeRowsPerPage` has been renamed to `onRowsPerPageChange`
+ - `onChangePage` has been renamed to `onPageChange`
+ - Migration guide is here: https://material-table-core.com/docs/breaking-changes
+- Updated dependencies
+ - @backstage/core-components@0.2.0
+ - @backstage/core-plugin-api@0.1.4
+ - @backstage/theme@0.2.9
+
## 0.4.2
### Patch Changes
diff --git a/plugins/tech-radar/package.json b/plugins/tech-radar/package.json
index 305061087b..611c475e64 100644
--- a/plugins/tech-radar/package.json
+++ b/plugins/tech-radar/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-tech-radar",
- "version": "0.4.2",
+ "version": "0.4.3",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -30,10 +30,10 @@
"start": "backstage-cli plugin:serve"
},
"dependencies": {
- "@backstage/core-components": "^0.1.6",
- "@backstage/core-plugin-api": "^0.1.3",
- "@backstage/theme": "^0.2.8",
- "@material-ui/core": "^4.11.0",
+ "@backstage/core-components": "^0.2.0",
+ "@backstage/core-plugin-api": "^0.1.4",
+ "@backstage/theme": "^0.2.9",
+ "@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.45",
"color": "^3.1.2",
@@ -44,10 +44,10 @@
"react-use": "^17.2.4"
},
"devDependencies": {
- "@backstage/cli": "^0.7.5",
- "@backstage/core-app-api": "^0.1.5",
- "@backstage/dev-utils": "^0.2.3",
- "@backstage/test-utils": "^0.1.15",
+ "@backstage/cli": "^0.7.6",
+ "@backstage/core-app-api": "^0.1.6",
+ "@backstage/dev-utils": "^0.2.4",
+ "@backstage/test-utils": "^0.1.16",
"@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/CHANGELOG.md b/plugins/techdocs/CHANGELOG.md
index 89c0ee04fd..132526ce66 100644
--- a/plugins/techdocs/CHANGELOG.md
+++ b/plugins/techdocs/CHANGELOG.md
@@ -1,5 +1,24 @@
# @backstage/plugin-techdocs
+## 0.10.2
+
+### Patch Changes
+
+- 9d40fcb1e: - Bumping `material-ui/core` version to at least `4.12.2` as they made some breaking changes in later versions which broke `Pagination` of the `Table`.
+ - Switching out `material-table` to `@material-table/core` for support for the later versions of `material-ui/core`
+ - This causes a minor API change to `@backstage/core-components` as the interface for `Table` re-exports the `prop` from the underlying `Table` components.
+ - `onChangeRowsPerPage` has been renamed to `onRowsPerPageChange`
+ - `onChangePage` has been renamed to `onPageChange`
+ - Migration guide is here: https://material-table-core.com/docs/breaking-changes
+- 11c370af2: Optimize load times by only fetching entities with the `backstage.io/techdocs-ref` annotation
+- 2b1ac002d: TechDocs now uses a "safe by default" sanitization library, rather than relying on its own, hard-coded list of allowable tags and attributes.
+- Updated dependencies
+ - @backstage/core-components@0.2.0
+ - @backstage/plugin-catalog-react@0.4.0
+ - @backstage/core-plugin-api@0.1.4
+ - @backstage/integration-react@0.1.5
+ - @backstage/theme@0.2.9
+
## 0.10.1
### Patch Changes
diff --git a/plugins/techdocs/package.json b/plugins/techdocs/package.json
index 2621be9cee..be6cd4c344 100644
--- a/plugins/techdocs/package.json
+++ b/plugins/techdocs/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-techdocs",
- "version": "0.10.1",
+ "version": "0.10.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -33,14 +33,14 @@
"dependencies": {
"@backstage/catalog-model": "^0.9.0",
"@backstage/config": "^0.1.5",
- "@backstage/core-components": "^0.1.6",
- "@backstage/core-plugin-api": "^0.1.3",
+ "@backstage/core-components": "^0.2.0",
+ "@backstage/core-plugin-api": "^0.1.4",
"@backstage/errors": "^0.1.1",
"@backstage/integration": "^0.5.8",
- "@backstage/integration-react": "^0.1.4",
- "@backstage/plugin-catalog-react": "^0.3.1",
- "@backstage/theme": "^0.2.8",
- "@material-ui/core": "^4.11.0",
+ "@backstage/integration-react": "^0.1.5",
+ "@backstage/plugin-catalog-react": "^0.4.0",
+ "@backstage/theme": "^0.2.9",
+ "@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.45",
"@material-ui/styles": "^4.10.0",
@@ -55,10 +55,10 @@
"react-text-truncate": "^0.16.0"
},
"devDependencies": {
- "@backstage/cli": "^0.7.5",
- "@backstage/core-app-api": "^0.1.5",
- "@backstage/dev-utils": "^0.2.3",
- "@backstage/test-utils": "^0.1.15",
+ "@backstage/cli": "^0.7.6",
+ "@backstage/core-app-api": "^0.1.6",
+ "@backstage/dev-utils": "^0.2.4",
+ "@backstage/test-utils": "^0.1.16",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^11.2.5",
"@testing-library/react-hooks": "^3.4.2",
diff --git a/plugins/techdocs/src/home/components/TechDocsCustomHome.tsx b/plugins/techdocs/src/home/components/TechDocsCustomHome.tsx
index c5d05f1474..649d69ed8a 100644
--- a/plugins/techdocs/src/home/components/TechDocsCustomHome.tsx
+++ b/plugins/techdocs/src/home/components/TechDocsCustomHome.tsx
@@ -19,6 +19,7 @@ import { useAsync } from 'react-use';
import { makeStyles } from '@material-ui/core';
import { CSSProperties } from '@material-ui/styles';
import {
+ CATALOG_FILTER_EXISTS,
catalogApiRef,
CatalogApi,
isOwnerOf,
@@ -125,6 +126,9 @@ export const TechDocsCustomHome = ({
const { value: entities, loading, error } = useAsync(async () => {
const response = await catalogApi.getEntities({
+ filter: {
+ 'metadata.annotations.backstage.io/techdocs-ref': CATALOG_FILTER_EXISTS,
+ },
fields: [
'apiVersion',
'kind',
diff --git a/plugins/todo/CHANGELOG.md b/plugins/todo/CHANGELOG.md
index ef5ad352f4..3e2284fd57 100644
--- a/plugins/todo/CHANGELOG.md
+++ b/plugins/todo/CHANGELOG.md
@@ -1,5 +1,21 @@
# @backstage/plugin-todo
+## 0.1.6
+
+### Patch Changes
+
+- 9d40fcb1e: - Bumping `material-ui/core` version to at least `4.12.2` as they made some breaking changes in later versions which broke `Pagination` of the `Table`.
+ - Switching out `material-table` to `@material-table/core` for support for the later versions of `material-ui/core`
+ - This causes a minor API change to `@backstage/core-components` as the interface for `Table` re-exports the `prop` from the underlying `Table` components.
+ - `onChangeRowsPerPage` has been renamed to `onRowsPerPageChange`
+ - `onChangePage` has been renamed to `onPageChange`
+ - Migration guide is here: https://material-table-core.com/docs/breaking-changes
+- Updated dependencies
+ - @backstage/core-components@0.2.0
+ - @backstage/plugin-catalog-react@0.4.0
+ - @backstage/core-plugin-api@0.1.4
+ - @backstage/theme@0.2.9
+
## 0.1.5
### Patch Changes
diff --git a/plugins/todo/package.json b/plugins/todo/package.json
index ece2509882..90c61c1b6c 100644
--- a/plugins/todo/package.json
+++ b/plugins/todo/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-todo",
- "version": "0.1.5",
+ "version": "0.1.6",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -27,12 +27,12 @@
},
"dependencies": {
"@backstage/catalog-model": "^0.9.0",
- "@backstage/core-components": "^0.1.6",
- "@backstage/core-plugin-api": "^0.1.3",
+ "@backstage/core-components": "^0.2.0",
+ "@backstage/core-plugin-api": "^0.1.4",
"@backstage/errors": "^0.1.1",
- "@backstage/plugin-catalog-react": "^0.3.0",
- "@backstage/theme": "^0.2.8",
- "@material-ui/core": "^4.11.0",
+ "@backstage/plugin-catalog-react": "^0.4.0",
+ "@backstage/theme": "^0.2.9",
+ "@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.45",
"react": "^16.13.1",
@@ -40,10 +40,10 @@
"react-use": "^17.2.4"
},
"devDependencies": {
- "@backstage/cli": "^0.7.5",
- "@backstage/core-app-api": "^0.1.5",
- "@backstage/dev-utils": "^0.2.3",
- "@backstage/test-utils": "^0.1.15",
+ "@backstage/cli": "^0.7.6",
+ "@backstage/core-app-api": "^0.1.6",
+ "@backstage/dev-utils": "^0.2.4",
+ "@backstage/test-utils": "^0.1.16",
"@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 94324eed10..38ecbe227b 100644
--- a/plugins/user-settings/CHANGELOG.md
+++ b/plugins/user-settings/CHANGELOG.md
@@ -1,5 +1,20 @@
# @backstage/plugin-user-settings
+## 0.3.2
+
+### Patch Changes
+
+- 9d40fcb1e: - Bumping `material-ui/core` version to at least `4.12.2` as they made some breaking changes in later versions which broke `Pagination` of the `Table`.
+ - Switching out `material-table` to `@material-table/core` for support for the later versions of `material-ui/core`
+ - This causes a minor API change to `@backstage/core-components` as the interface for `Table` re-exports the `prop` from the underlying `Table` components.
+ - `onChangeRowsPerPage` has been renamed to `onRowsPerPageChange`
+ - `onChangePage` has been renamed to `onPageChange`
+ - Migration guide is here: https://material-table-core.com/docs/breaking-changes
+- Updated dependencies
+ - @backstage/core-components@0.2.0
+ - @backstage/core-plugin-api@0.1.4
+ - @backstage/theme@0.2.9
+
## 0.3.1
### Patch Changes
diff --git a/plugins/user-settings/package.json b/plugins/user-settings/package.json
index 7a450a188e..52a4698993 100644
--- a/plugins/user-settings/package.json
+++ b/plugins/user-settings/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-user-settings",
- "version": "0.3.1",
+ "version": "0.3.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -30,10 +30,10 @@
"clean": "backstage-cli clean"
},
"dependencies": {
- "@backstage/core-components": "^0.1.6",
- "@backstage/core-plugin-api": "^0.1.3",
- "@backstage/theme": "^0.2.8",
- "@material-ui/core": "^4.11.0",
+ "@backstage/core-components": "^0.2.0",
+ "@backstage/core-plugin-api": "^0.1.4",
+ "@backstage/theme": "^0.2.9",
+ "@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.45",
"react": "^16.13.1",
@@ -42,11 +42,11 @@
"react-use": "^17.2.4"
},
"devDependencies": {
- "@backstage/cli": "^0.7.5",
- "@backstage/core-app-api": "^0.1.5",
- "@backstage/core-plugin-api": "^0.1.3",
- "@backstage/dev-utils": "^0.2.3",
- "@backstage/test-utils": "^0.1.15",
+ "@backstage/cli": "^0.7.6",
+ "@backstage/core-app-api": "^0.1.6",
+ "@backstage/core-plugin-api": "^0.1.4",
+ "@backstage/dev-utils": "^0.2.4",
+ "@backstage/test-utils": "^0.1.16",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^11.2.5",
"@testing-library/user-event": "^13.1.8",
diff --git a/plugins/welcome/CHANGELOG.md b/plugins/welcome/CHANGELOG.md
index 25420009d9..600a5b1141 100644
--- a/plugins/welcome/CHANGELOG.md
+++ b/plugins/welcome/CHANGELOG.md
@@ -1,5 +1,20 @@
# @backstage/plugin-welcome
+## 0.3.1
+
+### Patch Changes
+
+- 9d40fcb1e: - Bumping `material-ui/core` version to at least `4.12.2` as they made some breaking changes in later versions which broke `Pagination` of the `Table`.
+ - Switching out `material-table` to `@material-table/core` for support for the later versions of `material-ui/core`
+ - This causes a minor API change to `@backstage/core-components` as the interface for `Table` re-exports the `prop` from the underlying `Table` components.
+ - `onChangeRowsPerPage` has been renamed to `onRowsPerPageChange`
+ - `onChangePage` has been renamed to `onPageChange`
+ - Migration guide is here: https://material-table-core.com/docs/breaking-changes
+- Updated dependencies
+ - @backstage/core-components@0.2.0
+ - @backstage/core-plugin-api@0.1.4
+ - @backstage/theme@0.2.9
+
## 0.3.0
### Minor Changes
diff --git a/plugins/welcome/package.json b/plugins/welcome/package.json
index 68cb992e40..40bd774459 100644
--- a/plugins/welcome/package.json
+++ b/plugins/welcome/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-welcome",
- "version": "0.3.0",
+ "version": "0.3.1",
"main": "src/index.ts",
"types": "src/index.ts",
"private": false,
@@ -30,10 +30,10 @@
"start": "backstage-cli plugin:serve"
},
"dependencies": {
- "@backstage/core-components": "^0.1.6",
- "@backstage/core-plugin-api": "^0.1.3",
- "@backstage/theme": "^0.2.8",
- "@material-ui/core": "^4.11.0",
+ "@backstage/core-components": "^0.2.0",
+ "@backstage/core-plugin-api": "^0.1.4",
+ "@backstage/theme": "^0.2.9",
+ "@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.45",
"react": "^16.13.1",
@@ -42,10 +42,10 @@
"react-use": "^17.2.4"
},
"devDependencies": {
- "@backstage/cli": "^0.7.5",
- "@backstage/core-app-api": "^0.1.5",
- "@backstage/dev-utils": "^0.2.3",
- "@backstage/test-utils": "^0.1.15",
+ "@backstage/cli": "^0.7.6",
+ "@backstage/core-app-api": "^0.1.6",
+ "@backstage/dev-utils": "^0.2.4",
+ "@backstage/test-utils": "^0.1.16",
"@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
new file mode 100644
index 0000000000..e3fc7ae3d1
--- /dev/null
+++ b/plugins/xcmetrics/CHANGELOG.md
@@ -0,0 +1,20 @@
+# @backstage/plugin-xcmetrics
+
+## 0.2.0
+
+### Minor Changes
+
+- 616e10e94: New data in form of trend lines, status timeline and other is added to the dashboard of XCMetrics to give a better understanding of how the build system is behaving.
+
+### Patch Changes
+
+- 9d40fcb1e: - Bumping `material-ui/core` version to at least `4.12.2` as they made some breaking changes in later versions which broke `Pagination` of the `Table`.
+ - Switching out `material-table` to `@material-table/core` for support for the later versions of `material-ui/core`
+ - This causes a minor API change to `@backstage/core-components` as the interface for `Table` re-exports the `prop` from the underlying `Table` components.
+ - `onChangeRowsPerPage` has been renamed to `onRowsPerPageChange`
+ - `onChangePage` has been renamed to `onPageChange`
+ - Migration guide is here: https://material-table-core.com/docs/breaking-changes
+- Updated dependencies
+ - @backstage/core-components@0.2.0
+ - @backstage/core-plugin-api@0.1.4
+ - @backstage/theme@0.2.9
diff --git a/plugins/xcmetrics/package.json b/plugins/xcmetrics/package.json
index b939c3e5bf..ed74b0dfa6 100644
--- a/plugins/xcmetrics/package.json
+++ b/plugins/xcmetrics/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-xcmetrics",
- "version": "0.1.1",
+ "version": "0.2.0",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -20,11 +20,11 @@
"clean": "backstage-cli clean"
},
"dependencies": {
- "@backstage/core-components": "^0.1.6",
- "@backstage/core-plugin-api": "^0.1.3",
+ "@backstage/core-components": "^0.2.0",
+ "@backstage/core-plugin-api": "^0.1.4",
"@backstage/errors": "^0.1.1",
- "@backstage/theme": "^0.2.8",
- "@material-ui/core": "^4.11.0",
+ "@backstage/theme": "^0.2.9",
+ "@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.45",
"luxon": "^1.27.0",
@@ -33,10 +33,10 @@
"react-use": "^17.2.4"
},
"devDependencies": {
- "@backstage/cli": "^0.7.5",
- "@backstage/core-app-api": "^0.1.5",
- "@backstage/dev-utils": "^0.2.3",
- "@backstage/test-utils": "^0.1.15",
+ "@backstage/cli": "^0.7.6",
+ "@backstage/core-app-api": "^0.1.6",
+ "@backstage/dev-utils": "^0.2.4",
+ "@backstage/test-utils": "^0.1.16",
"@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 c2bdb8af99..1be3dedc16 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1414,6 +1414,51 @@
react-use "^17.2.4"
zen-observable "^0.8.15"
+"@backstage/core-components@^0.1.3", "@backstage/core-components@^0.1.6":
+ version "0.1.6"
+ resolved "https://registry.npmjs.org/@backstage/core-components/-/core-components-0.1.6.tgz#a66d9af3be61e76ed60d1026dec376b2d97e0a8e"
+ integrity sha512-SdBORocyrMa38B2Y3F4Ju45UUm42hLSums+CV4LlHVHKuINGbZg7JZ/WI7tDGks27MXgtU7mLlMlV7tJMeJgKA==
+ dependencies:
+ "@backstage/config" "^0.1.5"
+ "@backstage/core-plugin-api" "^0.1.2"
+ "@backstage/errors" "^0.1.1"
+ "@backstage/theme" "^0.2.8"
+ "@material-ui/core" "^4.11.0"
+ "@material-ui/icons" "^4.9.1"
+ "@material-ui/lab" "4.0.0-alpha.45"
+ "@testing-library/react-hooks" "^3.4.2"
+ "@types/dagre" "^0.7.44"
+ "@types/prop-types" "^15.7.3"
+ "@types/react" "^16.9"
+ "@types/react-sparklines" "^1.7.0"
+ "@types/react-text-truncate" "^0.14.0"
+ classnames "^2.2.6"
+ clsx "^1.1.0"
+ d3-selection "^2.0.0"
+ d3-shape "^2.0.0"
+ d3-zoom "^2.0.0"
+ dagre "^0.8.5"
+ immer "^9.0.1"
+ lodash "^4.17.15"
+ material-table "^1.69.1"
+ pluralize "^8.0.0"
+ prop-types "^15.7.2"
+ qs "^6.9.4"
+ rc-progress "^3.0.0"
+ react "^16.12.0"
+ react-dom "^16.12.0"
+ react-helmet "6.1.0"
+ react-hook-form "^6.15.4"
+ react-markdown "^5.0.2"
+ react-router "6.0.0-beta.0"
+ react-router-dom "6.0.0-beta.0"
+ react-sparklines "^1.7.0"
+ react-syntax-highlighter "^15.4.3"
+ react-text-truncate "^0.16.0"
+ react-use "^17.2.4"
+ remark-gfm "^1.0.0"
+ zen-observable "^0.8.15"
+
"@backstage/core@*":
version "0.7.14"
resolved "https://registry.npmjs.org/@backstage/core/-/core-0.7.14.tgz#863844fe40bb6a29bcc2d297e42055633b0e886f"
@@ -1460,6 +1505,28 @@
remark-gfm "^1.0.0"
zen-observable "^0.8.15"
+"@backstage/plugin-catalog-react@^0.3.0":
+ version "0.3.1"
+ resolved "https://registry.npmjs.org/@backstage/plugin-catalog-react/-/plugin-catalog-react-0.3.1.tgz#d30a063a4ceb4d446310a687d19c987f55824fdb"
+ integrity sha512-vKNTW3K6cp/G6f/pjcUe8895s3Z13MnXX6aCkOBcxfLnTJ8eNAJj092rbpkCn33YlCARsHrXUqgVJSqB4AnwtA==
+ dependencies:
+ "@backstage/catalog-client" "^0.3.17"
+ "@backstage/catalog-model" "^0.9.0"
+ "@backstage/core-app-api" "^0.1.5"
+ "@backstage/core-components" "^0.1.6"
+ "@backstage/core-plugin-api" "^0.1.3"
+ "@backstage/integration" "^0.5.8"
+ "@material-ui/core" "^4.11.0"
+ "@material-ui/icons" "^4.9.1"
+ "@material-ui/lab" "4.0.0-alpha.45"
+ "@types/react" "^16.9"
+ lodash "^4.17.15"
+ qs "^6.9.4"
+ react "^16.13.1"
+ react-router "6.0.0-beta.0"
+ react-router-dom "6.0.0-beta.0"
+ react-use "^17.2.4"
+
"@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"
@@ -1730,7 +1797,7 @@
resolved "https://registry.npmjs.org/@date-io/core/-/core-2.10.11.tgz#b1a3d57730f3eaaab54d5658be4a71727297e357"
integrity sha512-keXQnwH0LM8wyvu+j5Z2KGK56D+eItjy7DnwuWl/oV+DM2UEYl0z5WhdPMpfswSyt/kjuPOzcVF/7u/skMLaoA==
-"@date-io/date-fns@^1.1.0":
+"@date-io/date-fns@^1.1.0", "@date-io/date-fns@^1.3.13":
version "1.3.13"
resolved "https://registry.npmjs.org/@date-io/date-fns/-/date-fns-1.3.13.tgz#7798844041640ab393f7e21a7769a65d672f4735"
integrity sha512-yXxGzcRUPcogiMj58wVgFjc9qUYrCnnU9eLcyNbsQCmae4jPuZCDoIBR21j8ZURsM7GRtU62VOw5yNd4dDHunA==
@@ -1926,10 +1993,10 @@
retry-request "^4.0.0"
teeny-request "^3.11.3"
-"@google-cloud/common@^3.6.0":
- version "3.6.0"
- resolved "https://registry.npmjs.org/@google-cloud/common/-/common-3.6.0.tgz#c2f6da5f79279a4a9ac7c71fc02d582beab98e8b"
- integrity sha512-aHIFTqJZmeTNO9md8XxV+ywuvXF3xBm5WNmgWeeCK+XN5X+kGW0WEX94wGwj+/MdOnrVf4dL2RvSIt9J5yJG6Q==
+"@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"
@@ -1938,7 +2005,7 @@
ent "^2.2.0"
extend "^3.0.2"
google-auth-library "^7.0.2"
- retry-request "^4.1.1"
+ retry-request "^4.2.2"
teeny-request "^7.0.0"
"@google-cloud/container@^2.2.0":
@@ -2014,11 +2081,11 @@
xdg-basedir "^3.0.0"
"@google-cloud/storage@^5.6.0", "@google-cloud/storage@^5.8.0":
- version "5.8.5"
- resolved "https://registry.npmjs.org/@google-cloud/storage/-/storage-5.8.5.tgz#2cf1e2e0ef8ca552abc4450301fef3fea4900ef6"
- integrity sha512-i0gB9CRwQeOBYP7xuvn14M40LhHCwMjceBjxE4CTvsqL519sVY5yVKxLiAedHWGwUZHJNRa7Q2CmNfkdRwVNPg==
+ 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.6.0"
+ "@google-cloud/common" "^3.7.0"
"@google-cloud/paginator" "^3.0.0"
"@google-cloud/promisify" "^2.0.0"
arrify "^2.0.0"
@@ -2027,8 +2094,7 @@
date-and-time "^1.0.0"
duplexify "^4.0.0"
extend "^3.0.2"
- gaxios "^4.0.0"
- gcs-resumable-upload "^3.1.4"
+ gcs-resumable-upload "^3.3.0"
get-stream "^6.0.0"
hash-stream-validation "^0.2.2"
mime "^2.2.0"
@@ -3445,14 +3511,31 @@
resolved "https://registry.npmjs.org/@material-icons/font/-/font-1.0.3.tgz#f722e5a69a03f20ef47d015cb69420bebeeaabe5"
integrity sha512-aIRd0Z9b/HJ/O24KOaP7dNsXypMnXhpWrpLVYvQB/JesVqXYSbioYND200sR+C14a0LSCp+qWnWCnSXmN1hWGw==
-"@material-ui/core@^4.11.0", "@material-ui/core@^4.11.3":
- version "4.11.4"
- resolved "https://registry.npmjs.org/@material-ui/core/-/core-4.11.4.tgz#4fb9fe5dec5dcf780b687e3a40cff78b2b9640a4"
- integrity sha512-oqb+lJ2Dl9HXI9orc6/aN8ZIAMkeThufA5iZELf2LQeBn2NtjVilF5D2w7e9RpntAzDb4jK5DsVhkfOvFY/8fg==
+"@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==
+ dependencies:
+ "@babel/runtime" "^7.12.5"
+ "@date-io/date-fns" "^1.3.13"
+ "@material-ui/pickers" "^3.2.10"
+ "@material-ui/styles" "^4.11.4"
+ classnames "^2.2.6"
+ date-fns "^2.16.1"
+ debounce "^1.2.0"
+ fast-deep-equal "^3.1.3"
+ prop-types "^15.7.2"
+ react-beautiful-dnd "^13.0.0"
+ react-double-scrollbar "0.0.15"
+
+"@material-ui/core@^4.11.0", "@material-ui/core@^4.11.3", "@material-ui/core@^4.12.2":
+ version "4.12.2"
+ resolved "https://registry.npmjs.org/@material-ui/core/-/core-4.12.2.tgz#59a8b19f16b8c218d912f37f5ae70473c3c82c73"
+ integrity sha512-Q1npB8V73IC+eV2X6as+g71MpEGQwqKHUI2iujY62npk35V8nMx/bUXAHjv5kKG1BZ8s8XUWoG6s/VkjYPjjQA==
dependencies:
"@babel/runtime" "^7.4.4"
"@material-ui/styles" "^4.11.4"
- "@material-ui/system" "^4.11.3"
+ "@material-ui/system" "^4.12.1"
"@material-ui/types" "5.1.0"
"@material-ui/utils" "^4.11.2"
"@types/react-transition-group" "^4.2.0"
@@ -3492,7 +3575,7 @@
prop-types "^15.7.2"
react-is "^16.8.0 || ^17.0.0"
-"@material-ui/pickers@^3.2.2", "@material-ui/pickers@^3.3.10":
+"@material-ui/pickers@^3.2.10", "@material-ui/pickers@^3.2.2", "@material-ui/pickers@^3.3.10":
version "3.3.10"
resolved "https://registry.npmjs.org/@material-ui/pickers/-/pickers-3.3.10.tgz#f1b0f963348cc191645ef0bdeff7a67c6aa25485"
integrity sha512-hS4pxwn1ZGXVkmgD4tpFpaumUaAg2ZzbTrxltfC5yPw4BJV+mGkfnQOB4VpWEYZw2jv65Z0wLwDE/piQiPPZ3w==
@@ -3526,10 +3609,10 @@
jss-plugin-vendor-prefixer "^10.5.1"
prop-types "^15.7.2"
-"@material-ui/system@^4.11.3":
- version "4.11.3"
- resolved "https://registry.npmjs.org/@material-ui/system/-/system-4.11.3.tgz#466bc14c9986798fd325665927c963eb47cc4143"
- integrity sha512-SY7otguNGol41Mu2Sg6KbBP1ZRFIbFLHGK81y4KYbsV2yIcaEPOmsCK6zwWlp+2yTV3J/VwT6oSBARtGIVdXPw==
+"@material-ui/system@^4.12.1":
+ version "4.12.1"
+ resolved "https://registry.npmjs.org/@material-ui/system/-/system-4.12.1.tgz#2dd96c243f8c0a331b2bb6d46efd7771a399707c"
+ integrity sha512-lUdzs4q9kEXZGhbN7BptyiS1rLNHe6kG9o8Y307HCvF4sQxbCgpL2qi+gUk+yI8a2DNk48gISEQxoxpgph0xIw==
dependencies:
"@babel/runtime" "^7.4.4"
"@material-ui/utils" "^4.11.2"
@@ -8066,13 +8149,6 @@ axe-core@^4.2.0:
resolved "https://registry.npmjs.org/axe-core/-/axe-core-4.3.1.tgz#0c6a076e4a1c3e0544ba6a9479158f9be7a7928e"
integrity sha512-3WVgVPs/7OnKU3s+lqMtkv3wQlg3WxK1YifmpJSDO0E1aPBrZWlrrTO6cxRqCXLuX2aYgCljqXIQd0VnRidV0g==
-axios@^0.20.0:
- version "0.20.0"
- resolved "https://registry.npmjs.org/axios/-/axios-0.20.0.tgz#057ba30f04884694993a8cd07fa394cff11c50bd"
- integrity sha512-ANA4rr2BDcmmAQLOKft2fufrtuvlqR+cXNNinUmvfeSNCOF98PZL+7M/v1zIdGo7OLjEA9J2gXJL+j4zGsl0bA==
- dependencies:
- follow-redirects "^1.10.0"
-
axios@^0.21.1:
version "0.21.1"
resolved "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz#22563481962f4d6bde9a76d516ef0e5d3c09b2b8"
@@ -9484,11 +9560,11 @@ cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3:
safe-buffer "^5.0.1"
circleci-api@^4.0.0:
- version "4.1.3"
- resolved "https://registry.npmjs.org/circleci-api/-/circleci-api-4.1.3.tgz#cafd80bc1905c6064724636741b4b5b231ed34d0"
- integrity sha512-Km6H8LB3nNbFUjErhI+sNQrcHcU7dCBnQEi4ckBtQMkCXh+2gDvaYchfkeuIaA1hkakQT5sLmdPbYzhKbvsOMg==
+ version "4.1.4"
+ resolved "https://registry.npmjs.org/circleci-api/-/circleci-api-4.1.4.tgz#6880a28eb021879d81789b50996640dc6373c5ad"
+ integrity sha512-49F0P2mhmfqYzJR/V4+oM+1SfI/VjKPcurvkzuuawNqgW5Eo00ZufgpHgdT+qRrvRymk6yt45bWOIP/f0FKhJA==
dependencies:
- axios "^0.20.0"
+ axios "^0.21.1"
cjs-module-lexer@^0.6.0:
version "0.6.0"
@@ -13593,10 +13669,10 @@ gcs-resumable-upload@^1.0.0:
pumpify "^1.5.1"
stream-events "^1.0.4"
-gcs-resumable-upload@^3.1.4:
- version "3.1.4"
- resolved "https://registry.npmjs.org/gcs-resumable-upload/-/gcs-resumable-upload-3.1.4.tgz#2e591889efb02247af26868de300b398346b17b5"
- integrity sha512-5dyDfHrrVcIskiw/cPssVD4HRiwoHjhk1Nd6h5W3pQ/qffDvhfy4oNCr1f3ZXFPwTnxkCbibsB+73oOM+NvmJQ==
+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"
@@ -22819,13 +22895,21 @@ ret@~0.1.10:
resolved "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==
-retry-request@^4.0.0, retry-request@^4.1.1:
+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==
+ dependencies:
+ debug "^4.1.1"
+ extend "^3.0.2"
+
retry@0.12.0, retry@^0.12.0:
version "0.12.0"
resolved "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b"
@@ -26549,15 +26633,15 @@ write-pkg@^4.0.0:
type-fest "^0.4.1"
write-json-file "^3.2.0"
-ws@7.4.5:
- version "7.4.5"
- resolved "https://registry.npmjs.org/ws/-/ws-7.4.5.tgz#a484dd851e9beb6fdb420027e3885e8ce48986c1"
- integrity sha512-xzyu3hFvomRfXKH8vOFMU3OguG6oOvhXMo3xsGy3xWExqaM2dxBbVxuD99O7m3ZUFMvvscsZDqxfgMaRr/Nr1g==
+ws@7.4.5, ws@^7.4.6:
+ version "7.5.3"
+ resolved "https://registry.npmjs.org/ws/-/ws-7.5.3.tgz#160835b63c7d97bfab418fc1b8a9fced2ac01a74"
+ integrity sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg==
ws@^5.2.0:
- version "5.2.2"
- resolved "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz#dffef14866b8e8dc9133582514d1befaf96e980f"
- integrity sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==
+ version "5.2.3"
+ resolved "https://registry.npmjs.org/ws/-/ws-5.2.3.tgz#05541053414921bc29c63bee14b8b0dd50b07b3d"
+ integrity sha512-jZArVERrMsKUatIdnLzqvcfydI85dvd/Fp1u/VOpfdDWQ4c9qWXe+VIeAbQ5FrDwciAkr+lzofXLz3Kuf26AOA==
dependencies:
async-limiter "~1.0.0"
@@ -26567,9 +26651,9 @@ ws@^5.2.0:
integrity sha512-6ezXvzOZupqKj4jUqbQ9tXuJNo+BR2gU8fFRk3XCP3e0G6WT414u5ELe6Y0vtp7kmSJ3F7YWObSNr1ESsgi4vw==
ws@^6.1.2, ws@^6.2.1:
- version "6.2.1"
- resolved "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb"
- integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==
+ version "6.2.2"
+ resolved "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz#dd5cdbd57a9979916097652d78f1cc5faea0c32e"
+ integrity sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==
dependencies:
async-limiter "~1.0.0"