diff --git a/.changeset/afraid-shirts-train.md b/.changeset/afraid-shirts-train.md
deleted file mode 100644
index bd83716dc4..0000000000
--- a/.changeset/afraid-shirts-train.md
+++ /dev/null
@@ -1,10 +0,0 @@
----
-'@backstage/plugin-tech-insights': patch
----
-
-Added the possibility to customize the check description in the scorecard component.
-
-- The `CheckResultRenderer` type now exposes an optional `description` method that allows to overwrite the description with a different string or a React component for a provided check result.
-
-Until now only the `BooleanCheck` element could be overridden, but from now on it's also possible to override the description for a check.
-As an example, the description could change depending on the check result. Refer to the [README](https://github.com/backstage/backstage/blob/master/plugins/tech-insights/README.md#adding-custom-rendering-components) file for more details
diff --git a/.changeset/angry-ducks-shake.md b/.changeset/angry-ducks-shake.md
deleted file mode 100644
index 58975123b4..0000000000
--- a/.changeset/angry-ducks-shake.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/backend-test-utils': patch
----
-
-Allow specifying custom Docker registry for database tests
diff --git a/.changeset/angry-jobs-ring.md b/.changeset/angry-jobs-ring.md
new file mode 100644
index 0000000000..a216af1683
--- /dev/null
+++ b/.changeset/angry-jobs-ring.md
@@ -0,0 +1,5 @@
+---
+'@backstage/catalog-client': patch
+---
+
+Updated API docs
diff --git a/.changeset/backend-like-a-tattoo.md b/.changeset/backend-like-a-tattoo.md
deleted file mode 100644
index 0d2edfa7a9..0000000000
--- a/.changeset/backend-like-a-tattoo.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/backend-test-utils': patch
----
-
-Added `POSTGRES_11` and `POSTGRES_12` as supported test database IDs.
diff --git a/.changeset/beige-kangaroos-suffer.md b/.changeset/beige-kangaroos-suffer.md
new file mode 100644
index 0000000000..249fb5a4b6
--- /dev/null
+++ b/.changeset/beige-kangaroos-suffer.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-kubernetes': patch
+---
+
+Fix cyclical dependency in built output
diff --git a/.changeset/beige-tigers-matter.md b/.changeset/beige-tigers-matter.md
deleted file mode 100644
index 248ce1fbf9..0000000000
--- a/.changeset/beige-tigers-matter.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/plugin-scaffolder': patch
----
-
-Fix case GitLab workspace is a nested subgroup
diff --git a/.changeset/beige-zebras-walk.md b/.changeset/beige-zebras-walk.md
new file mode 100644
index 0000000000..26ad52dc1d
--- /dev/null
+++ b/.changeset/beige-zebras-walk.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-user-settings': patch
+---
+
+Reflect the updated sign on status for a provider after signing out.
diff --git a/.changeset/big-days-press.md b/.changeset/big-days-press.md
deleted file mode 100644
index 7dec7d6288..0000000000
--- a/.changeset/big-days-press.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-'@backstage/plugin-scaffolder-backend': minor
----
-
-Expose both types of scaffolder permissions and rules through the metadata endpoint.
-
-The metadata endpoint now correctly exposes both types of scaffolder permissions and rules (for both the template and action resource types) through the metadata endpoint.
diff --git a/.changeset/blue-eyes-run.md b/.changeset/blue-eyes-run.md
deleted file mode 100644
index 1b96e01f1c..0000000000
--- a/.changeset/blue-eyes-run.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-'@backstage/plugin-devtools': minor
-'@backstage/plugin-devtools-backend': minor
-'@backstage/plugin-devtools-common': minor
----
-
-Introduced the DevTools plugin, checkout the plugin's [`README.md`](https://github.com/backstage/backstage/tree/master/plugins/devtools) for more details!
diff --git a/.changeset/breezy-kids-obey.md b/.changeset/breezy-kids-obey.md
new file mode 100644
index 0000000000..131a1ec1f3
--- /dev/null
+++ b/.changeset/breezy-kids-obey.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-catalog-import': patch
+---
+
+Added analytics event for import entity button
diff --git a/.changeset/brown-eyes-yell.md b/.changeset/brown-eyes-yell.md
deleted file mode 100644
index 5ed4140bba..0000000000
--- a/.changeset/brown-eyes-yell.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/plugin-github-pull-requests-board': patch
----
-
-The `EntityTeamPullRequestsContent` and `EntityTeamPullRequestsCard` support the ability to view the labels/tags added to each PR
diff --git a/.changeset/brown-keys-raise.md b/.changeset/brown-keys-raise.md
deleted file mode 100644
index 1d288d9f57..0000000000
--- a/.changeset/brown-keys-raise.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-'@backstage/plugin-kubernetes': patch
----
-
-The Kubernetes plugin now requests AKS access tokens from Azure when retrieving
-objects from clusters configured with `authProvider: aks` and sets `auth.aks` in
-its request bodies appropriately.
diff --git a/.changeset/brown-meals-trade.md b/.changeset/brown-meals-trade.md
deleted file mode 100644
index f6849fa19b..0000000000
--- a/.changeset/brown-meals-trade.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/repo-tools': minor
----
-
-**BREAKING**: The OpenAPI commands are now found within the `schema openapi` sub-command. For example `yarn backstage-repo-tools schema:openapi:verify` is now `yarn backstage-repo-tools schema openapi verify`.
diff --git a/.changeset/calm-buttons-type.md b/.changeset/calm-buttons-type.md
deleted file mode 100644
index 11b300a684..0000000000
--- a/.changeset/calm-buttons-type.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/plugin-scaffolder-backend': patch
----
-
-Bump minimum required version of `vm2` to be 3.9.18
diff --git a/.changeset/calm-snails-trade.md b/.changeset/calm-snails-trade.md
deleted file mode 100644
index 0738b5aa37..0000000000
--- a/.changeset/calm-snails-trade.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/plugin-bazaar': patch
----
-
-Fixed `validateDOMNesting` warnings
diff --git a/.changeset/calm-wolves-taste.md b/.changeset/calm-wolves-taste.md
deleted file mode 100644
index ec0a7fb4f0..0000000000
--- a/.changeset/calm-wolves-taste.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/plugin-search': patch
----
-
-Fixed 404 Error when fetching search results due to URL encoding changes
diff --git a/.changeset/chatty-ads-attack.md b/.changeset/chatty-ads-attack.md
new file mode 100644
index 0000000000..709db946dd
--- /dev/null
+++ b/.changeset/chatty-ads-attack.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-scaffolder-react': patch
+---
+
+fixed refresh problem when backstage backend disconnects without any feedback to user. Now we send a generic message and try to reconnect after 15 seconds
diff --git a/.changeset/chilled-goats-jump.md b/.changeset/chilled-goats-jump.md
deleted file mode 100644
index 3dd152712a..0000000000
--- a/.changeset/chilled-goats-jump.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/create-app': patch
----
-
-Correct command to create new plugins
diff --git a/.changeset/chilled-pants-wonder.md b/.changeset/chilled-pants-wonder.md
deleted file mode 100644
index 501ced7cba..0000000000
--- a/.changeset/chilled-pants-wonder.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/backend-openapi-utils': patch
----
-
-Use permalinks for links including a line number reference
diff --git a/.changeset/chilled-queens-wonder.md b/.changeset/chilled-queens-wonder.md
deleted file mode 100644
index a10212792d..0000000000
--- a/.changeset/chilled-queens-wonder.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/plugin-catalog-backend': patch
----
-
-Ensure that entity cache state is only written to the database when actually changed
diff --git a/.changeset/chilly-fireants-type.md b/.changeset/chilly-fireants-type.md
deleted file mode 100644
index 6bff750d57..0000000000
--- a/.changeset/chilly-fireants-type.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/backend-common': patch
----
-
-Remove the direct dependency on deprecated "request" library
diff --git a/.changeset/chilly-taxis-shop.md b/.changeset/chilly-taxis-shop.md
deleted file mode 100644
index 9e2e73a5e3..0000000000
--- a/.changeset/chilly-taxis-shop.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/plugin-home': patch
----
-
-Remove object-hash dependency
diff --git a/.changeset/clean-lobsters-brake.md b/.changeset/clean-lobsters-brake.md
deleted file mode 100644
index f6da6e986e..0000000000
--- a/.changeset/clean-lobsters-brake.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-'@backstage/plugin-kubernetes-backend': minor
----
-
-Allow fetching pod metrics limited by a `labelSelector`.
-
-This is used by the Kubernetes tab on a components' page and leads to much smaller responses being received from Kubernetes, especially with larger Kubernetes clusters.
diff --git a/.changeset/clean-months-bake.md b/.changeset/clean-months-bake.md
new file mode 100644
index 0000000000..5886dea66b
--- /dev/null
+++ b/.changeset/clean-months-bake.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-octopus-deploy': patch
+---
+
+Improved getting started documentation
diff --git a/.changeset/clever-coins-deny.md b/.changeset/clever-coins-deny.md
deleted file mode 100644
index 0c1e2ade26..0000000000
--- a/.changeset/clever-coins-deny.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/plugin-home': patch
----
-
-Use the semantic time tag for rendering world clocks on homepage headers.
diff --git a/.changeset/cold-drinks-exercise.md b/.changeset/cold-drinks-exercise.md
deleted file mode 100644
index e47e133929..0000000000
--- a/.changeset/cold-drinks-exercise.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/plugin-explore': patch
----
-
-Make sure that the first support button row does not break across lines
diff --git a/.changeset/cold-laws-turn.md b/.changeset/cold-laws-turn.md
deleted file mode 100644
index 6220f088db..0000000000
--- a/.changeset/cold-laws-turn.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/plugin-events-backend-module-aws-sqs': minor
----
-
-Allow endpoint configuration for sqs, enabling use of localstack for testing.
diff --git a/.changeset/cool-dingos-repair.md b/.changeset/cool-dingos-repair.md
deleted file mode 100644
index fe8377f5f1..0000000000
--- a/.changeset/cool-dingos-repair.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/theme': minor
----
-
-Updates light theme's primary foreground and `running` status indicator colours to meet WCAG. Previously #2E77D0 changed to #1F5493.
diff --git a/.changeset/create-app-1682437922.md b/.changeset/create-app-1682437922.md
deleted file mode 100644
index b50d431d4b..0000000000
--- a/.changeset/create-app-1682437922.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/create-app': patch
----
-
-Bumped create-app version.
diff --git a/.changeset/curly-rats-fold.md b/.changeset/curly-rats-fold.md
deleted file mode 100644
index c4cd8d514b..0000000000
--- a/.changeset/curly-rats-fold.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/plugin-catalog-backend': patch
----
-
-Internal refactoring for performance in the service handlers
diff --git a/.changeset/curvy-months-appear.md b/.changeset/curvy-months-appear.md
deleted file mode 100644
index 487e60c437..0000000000
--- a/.changeset/curvy-months-appear.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/plugin-techdocs': patch
----
-
-Re-add the possibility to have trailing slashes in Techdocs navigation.
diff --git a/.changeset/curvy-years-smoke.md b/.changeset/curvy-years-smoke.md
new file mode 100644
index 0000000000..056056fdff
--- /dev/null
+++ b/.changeset/curvy-years-smoke.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-scaffolder': patch
+---
+
+Forward `Authorization` header for `EventSource` when credentials are available.
diff --git a/.changeset/dry-boats-sniff.md b/.changeset/dry-boats-sniff.md
deleted file mode 100644
index 0c359b5536..0000000000
--- a/.changeset/dry-boats-sniff.md
+++ /dev/null
@@ -1,10 +0,0 @@
----
-'@backstage/app-defaults': patch
----
-
-Added a System Icon for resource entities.
-This can be obtained using:
-
-```ts
-useApp().getSystemIcon('kind:resource');
-```
diff --git a/.changeset/dull-wombats-stare.md b/.changeset/dull-wombats-stare.md
deleted file mode 100644
index 36ba412c02..0000000000
--- a/.changeset/dull-wombats-stare.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/backend-openapi-utils': patch
----
-
-Adjusted README accordingly after the generated output now has a `.generated.ts` extension
diff --git a/.changeset/eighty-olives-live.md b/.changeset/eighty-olives-live.md
deleted file mode 100644
index 16898701f4..0000000000
--- a/.changeset/eighty-olives-live.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/backend-common': patch
----
-
-Updated the `DatabaseManager` to include the plugin id in the Postgres application name of the database connections created for each plugin.
diff --git a/.changeset/eleven-taxis-notice.md b/.changeset/eleven-taxis-notice.md
deleted file mode 100644
index 88a25991fa..0000000000
--- a/.changeset/eleven-taxis-notice.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-'@backstage/plugin-scaffolder-backend-module-confluence-to-markdown': patch
-'@backstage/config-loader': patch
-'@backstage/plugin-auth-backend': patch
----
-
-Fixed the way that some request errors are thrown
diff --git a/.changeset/extragavent-fast-fly.md b/.changeset/extragavent-fast-fly.md
deleted file mode 100644
index 697b5163ec..0000000000
--- a/.changeset/extragavent-fast-fly.md
+++ /dev/null
@@ -1,10 +0,0 @@
----
-'@backstage/plugin-badges': patch
-'@backstage/plugin-badges-backend': minor
----
-
-Fixing badges-backend plugin to get a token from the TokenManager instead of parsing the request header. Hence, it's now possible to disable the authMiddleware for the badges-backend plugin to expose publicly the badges.
-
-Implementing an obfuscation feature to protect an open badges endpoint from being enumerated. The feature is disabled by default and the change is compatible with the previous version.
-
-**BREAKING**: `createRouter` now require that `tokenManager`, `logger`, and `identityApi`, are passed in as options.
diff --git a/.changeset/fair-suits-warn.md b/.changeset/fair-suits-warn.md
deleted file mode 100644
index 3edc2aa1ca..0000000000
--- a/.changeset/fair-suits-warn.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/plugin-tech-radar': patch
----
-
-Fix description links when clicking entry in radar.
diff --git a/.changeset/fast-wasps-peel.md b/.changeset/fast-wasps-peel.md
deleted file mode 100644
index 075336a506..0000000000
--- a/.changeset/fast-wasps-peel.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/cli': patch
----
-
-Enable strict config checking during `backstage-cli config:check` with the new `--strict` option which will surface schema errors.
diff --git a/.changeset/few-oranges-complain.md b/.changeset/few-oranges-complain.md
new file mode 100644
index 0000000000..70eb921a92
--- /dev/null
+++ b/.changeset/few-oranges-complain.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-scaffolder-backend': patch
+---
+
+Fix handling of `optional` property in `catalog:register` scaffolder action
diff --git a/.changeset/few-pugs-jam.md b/.changeset/few-pugs-jam.md
new file mode 100644
index 0000000000..83908a2cc1
--- /dev/null
+++ b/.changeset/few-pugs-jam.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-sonarqube-backend': patch
+---
+
+Provide full schema definition for sonarqube plugin, especially to protect api keys.
diff --git a/.changeset/fifty-grapes-explode.md b/.changeset/fifty-grapes-explode.md
deleted file mode 100644
index 999a105c4f..0000000000
--- a/.changeset/fifty-grapes-explode.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/plugin-catalog-backend': patch
----
-
-Fixed a bug in the `queryEntities` endpoint that was causing filtered entities to be included in cursor requests.
diff --git a/.changeset/fifty-laws-count.md b/.changeset/fifty-laws-count.md
deleted file mode 100644
index f20e41fc20..0000000000
--- a/.changeset/fifty-laws-count.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/plugin-kubernetes': patch
----
-
-Omit managed fields in the Kubernetes resource YAML display.
diff --git a/.changeset/five-lies-confess.md b/.changeset/five-lies-confess.md
deleted file mode 100644
index eefd2bd6fa..0000000000
--- a/.changeset/five-lies-confess.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/plugin-catalog-backend': patch
----
-
-Improve the query for orphan pruning
diff --git a/.changeset/five-tigers-whisper.md b/.changeset/five-tigers-whisper.md
deleted file mode 100644
index aa9758c3b5..0000000000
--- a/.changeset/five-tigers-whisper.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/plugin-stack-overflow': patch
----
-
-StackOverflowSearchResultListItem can now accept an empty result prop so that it can be rendered in the suggested SearchResultListItem pattern.
diff --git a/.changeset/fluffy-crabs-reply.md b/.changeset/fluffy-crabs-reply.md
deleted file mode 100644
index 0665dd864d..0000000000
--- a/.changeset/fluffy-crabs-reply.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/plugin-search-backend-module-elasticsearch': minor
----
-
-Upgrade to aws-sdk v3 and include OpenSearch Serverless support
diff --git a/.changeset/fluffy-mirrors-happen.md b/.changeset/fluffy-mirrors-happen.md
deleted file mode 100644
index 6dce398217..0000000000
--- a/.changeset/fluffy-mirrors-happen.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-'@backstage/plugin-kubernetes-backend': patch
----
-
-Kubernetes clusters now support `authProvider: aks`. When configured this way,
-the `retrieveObjectsByServiceId` action will use the `auth.aks` value in the
-request body as a bearer token to authenticate with Kubernetes.
diff --git a/.changeset/fresh-moons-unite.md b/.changeset/fresh-moons-unite.md
deleted file mode 100644
index 3d3af7e698..0000000000
--- a/.changeset/fresh-moons-unite.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/plugin-catalog-backend': patch
----
-
-Adjusted the OpenAPI schema file name according to the new structure
diff --git a/.changeset/friendly-frogs-drop.md b/.changeset/friendly-frogs-drop.md
deleted file mode 100644
index 682f1dbabb..0000000000
--- a/.changeset/friendly-frogs-drop.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/plugin-catalog-backend': patch
----
-
-Change orphan cleanup task to only log a message if it deleted entities.
diff --git a/.changeset/funny-cups-count.md b/.changeset/funny-cups-count.md
deleted file mode 100644
index 19dbc3b8bf..0000000000
--- a/.changeset/funny-cups-count.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/plugin-gcalendar': patch
----
-
-Pass user info email scope on auth refresh to resolve invalid credentials error
diff --git a/.changeset/funny-trains-sniff.md b/.changeset/funny-trains-sniff.md
deleted file mode 100644
index 91dbd28c28..0000000000
--- a/.changeset/funny-trains-sniff.md
+++ /dev/null
@@ -1,25 +0,0 @@
----
-'@backstage/plugin-catalog-react': minor
-'@backstage/plugin-catalog': minor
----
-
-Added an entity namespace filter and column on the default catalog page.
-
-If you have a custom version of the catalog page, you can add this filter in your CatalogPage code:
-
-```ts
-
-
-
-
-
- /* if you want namespace picker */
-
-
-
-
-
-
-```
-
-The namespace column can be added using `createNamespaceColumn();`. This is only needed if you customized the columns for CatalogTable.
diff --git a/.changeset/giant-students-lie.md b/.changeset/giant-students-lie.md
deleted file mode 100644
index fdcb406296..0000000000
--- a/.changeset/giant-students-lie.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/plugin-scaffolder-backend': minor
----
-
-Add ability to use `defaultNamespace` and `defaultKind` for scaffolder action `catalog:fetch`
diff --git a/.changeset/gold-vans-sin.md b/.changeset/gold-vans-sin.md
deleted file mode 100644
index d99cb9834d..0000000000
--- a/.changeset/gold-vans-sin.md
+++ /dev/null
@@ -1,10 +0,0 @@
----
-'@backstage/plugin-scaffolder-backend-module-gitlab': patch
----
-
-Fix input schema validation issue for gitlab actions:
-
-- gitlab:group:ensureExists
-- gitlab:projectAccessToken:create
-- gitlab:projectDeployToken:create
-- gitlab:projectVariable:create
diff --git a/.changeset/good-lions-approve.md b/.changeset/good-lions-approve.md
deleted file mode 100644
index f4065a6ab3..0000000000
--- a/.changeset/good-lions-approve.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/integration': patch
----
-
-Fixed a bug where the wrong credentials would be selected when using multiple GitHub app integrations.
diff --git a/.changeset/green-cheetahs-cover.md b/.changeset/green-cheetahs-cover.md
deleted file mode 100644
index 2633a5af01..0000000000
--- a/.changeset/green-cheetahs-cover.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/core-app-api': minor
----
-
-The analytics' `navigate` event will now include the route parameters as attributes of the navigate event
diff --git a/.changeset/healthy-ladybugs-chew.md b/.changeset/healthy-ladybugs-chew.md
deleted file mode 100644
index 83f53d5c2c..0000000000
--- a/.changeset/healthy-ladybugs-chew.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/repo-tools': minor
----
-
-Generated OpenAPI files now have a `.generated.ts` file name and a warning header at the top, to highlight that they should not be edited by hand.
diff --git a/.changeset/heavy-penguins-burn.md b/.changeset/heavy-penguins-burn.md
deleted file mode 100644
index b8c243a99b..0000000000
--- a/.changeset/heavy-penguins-burn.md
+++ /dev/null
@@ -1,6 +0,0 @@
----
-'@backstage/plugin-scaffolder-common': minor
-'@backstage/plugin-scaffolder-react': minor
----
-
-Add support for Markdown text blob outputs from templates
diff --git a/.changeset/honest-comics-ring.md b/.changeset/honest-comics-ring.md
deleted file mode 100644
index 38a962c5d3..0000000000
--- a/.changeset/honest-comics-ring.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/plugin-todo-backend': patch
----
-
-Added OpenAPI schema
diff --git a/.changeset/honest-turkeys-learn.md b/.changeset/honest-turkeys-learn.md
deleted file mode 100644
index e4e6aae5fc..0000000000
--- a/.changeset/honest-turkeys-learn.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/plugin-catalog-backend': patch
----
-
-Remove unnecessary join in the entity facets endpoint, exclude nulls
diff --git a/.changeset/hungry-countries-enjoy.md b/.changeset/hungry-countries-enjoy.md
deleted file mode 100644
index c14ec702b9..0000000000
--- a/.changeset/hungry-countries-enjoy.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/core-app-api': patch
----
-
-Fixed a bug in the Azure auth provider which prevented getting access tokens with multiple scopes for one resource
diff --git a/.changeset/hungry-foxes-divide.md b/.changeset/hungry-foxes-divide.md
deleted file mode 100644
index 589c899443..0000000000
--- a/.changeset/hungry-foxes-divide.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/plugin-catalog-graph': patch
----
-
-Expose all `EntityRelationsGraphProps` to Catalog Graph Page
diff --git a/.changeset/hungry-peas-sing.md b/.changeset/hungry-peas-sing.md
deleted file mode 100644
index 8c39d33ddd..0000000000
--- a/.changeset/hungry-peas-sing.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/plugin-catalog-backend-module-openapi': patch
----
-
-Fixed bug in `jsonSchemaRefPlaceholderResolver` where relative $ref files were resolved through file system instead of base URL of file
diff --git a/.changeset/itchy-impalas-fold.md b/.changeset/itchy-impalas-fold.md
deleted file mode 100644
index 31840124ad..0000000000
--- a/.changeset/itchy-impalas-fold.md
+++ /dev/null
@@ -1,9 +0,0 @@
----
-'@backstage/plugin-events-backend-module-aws-sqs': patch
-'@backstage/integration-aws-node': patch
-'@backstage/plugin-kubernetes-backend': patch
-'@backstage/backend-common': patch
-'@backstage/plugin-techdocs-node': patch
----
-
-Standardize `@aws-sdk` v3 versions
diff --git a/.changeset/khaki-brooms-kiss.md b/.changeset/khaki-brooms-kiss.md
deleted file mode 100644
index 76d4ff2cd2..0000000000
--- a/.changeset/khaki-brooms-kiss.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/plugin-explore': patch
----
-
-Display the title of the entity on the explore card if present, otherwise stick to the name
diff --git a/.changeset/khaki-radios-teach.md b/.changeset/khaki-radios-teach.md
new file mode 100644
index 0000000000..05ede0593c
--- /dev/null
+++ b/.changeset/khaki-radios-teach.md
@@ -0,0 +1,5 @@
+---
+'@backstage/config-loader': patch
+---
+
+Fix a bug where config items with `/` in the key were incorrectly handled.
diff --git a/.changeset/late-lizards-unite.md b/.changeset/late-lizards-unite.md
deleted file mode 100644
index bf0a03de12..0000000000
--- a/.changeset/late-lizards-unite.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/config-loader': patch
----
-
-Added a new `noUndeclaredProperties` option to `SchemaLoader` to support enforcing that there are no extra keys when verifying config.
diff --git a/.changeset/lazy-keys-work.md b/.changeset/lazy-keys-work.md
deleted file mode 100644
index 8a01662929..0000000000
--- a/.changeset/lazy-keys-work.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/plugin-circleci': patch
----
-
-Fixes row display for in progress jobs to not display trailing "took"
diff --git a/.changeset/light-cows-bow.md b/.changeset/light-cows-bow.md
new file mode 100644
index 0000000000..ba1b1c7631
--- /dev/null
+++ b/.changeset/light-cows-bow.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-scaffolder-backend': patch
+---
+
+Clearer error messages for action `publish:gitlab:merge-request`
diff --git a/.changeset/little-boats-think.md b/.changeset/little-boats-think.md
new file mode 100644
index 0000000000..d389bfbbb1
--- /dev/null
+++ b/.changeset/little-boats-think.md
@@ -0,0 +1,8 @@
+---
+'@backstage/plugin-catalog-react': minor
+---
+
+The `EntityOwnerPicker` component has undergone improvements to enhance its performance.
+
+The component now loads entities asynchronously, resulting in improved performance and responsiveness. Instead of loading all entities upfront, they are now loaded in batches as the user scrolls.
+The previous implementation inferred users and groups displayed by the `EntityOwnerPicker` component based on the entities available in the `EntityListContext`. The updated version no longer relies on the `EntityListContext` for inference, allowing for better decoupling and improved performance.
diff --git a/.changeset/long-lobsters-brake.md b/.changeset/long-lobsters-brake.md
new file mode 100644
index 0000000000..01ae3f4e93
--- /dev/null
+++ b/.changeset/long-lobsters-brake.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-jenkins-common': patch
+---
+
+Export list of permissions
diff --git a/.changeset/lovely-impalas-sell.md b/.changeset/lovely-impalas-sell.md
new file mode 100644
index 0000000000..80447c066f
--- /dev/null
+++ b/.changeset/lovely-impalas-sell.md
@@ -0,0 +1,16 @@
+---
+'@backstage/plugin-search-backend-module-explore': patch
+---
+
+Allows for an optional `tokenManager` to authenticate requests from the collator to the explore backend. For example:
+
+```diff
+ indexBuilder.addCollator({
+ schedule: every10MinutesSchedule,
+ factory: ToolDocumentCollatorFactory.fromConfig(env.config, {
+ discovery: env.discovery,
+ logger: env.logger,
+ + tokenManager: env.tokenManager,
+ }),
+ });
+```
diff --git a/.changeset/honest-countries-deny.md b/.changeset/lucky-keys-behave.md
similarity index 50%
rename from .changeset/honest-countries-deny.md
rename to .changeset/lucky-keys-behave.md
index 14c9094592..a223f83fa6 100644
--- a/.changeset/honest-countries-deny.md
+++ b/.changeset/lucky-keys-behave.md
@@ -2,4 +2,4 @@
'@backstage/plugin-jenkins-backend': patch
---
-Fix handling of slashes in branch names
+Expose permissions through the metadata endpoint.
diff --git a/.changeset/mighty-bears-glow.md b/.changeset/mighty-bears-glow.md
deleted file mode 100644
index e540cdd8ae..0000000000
--- a/.changeset/mighty-bears-glow.md
+++ /dev/null
@@ -1,10 +0,0 @@
----
-'@backstage/plugin-search-react': minor
-'@backstage/plugin-search': minor
----
-
-Add close button & improve search input.
-
-MUI's Paper wrapping the SearchBar in the SearchPage was removed, we recommend users update their apps accordingly.
-
-SearchBarBase's TextField's label support added & aria-label uses label string if present, tests relying on the default placeholder value should still work unless custom placeholder was given.
diff --git a/.changeset/mighty-cows-greet.md b/.changeset/mighty-cows-greet.md
deleted file mode 100644
index 2e871db0c6..0000000000
--- a/.changeset/mighty-cows-greet.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/plugin-analytics-module-ga4': minor
----
-
-Plugin provides Backstage Analytics API for Google Analytics 4. Once installed and configured, analytics events will be sent to GA4 as your users navigate and use your Backstage instance
diff --git a/.changeset/modern-pumpkins-join.md b/.changeset/modern-pumpkins-join.md
deleted file mode 100644
index dc0e4a6575..0000000000
--- a/.changeset/modern-pumpkins-join.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/backend-app-api': patch
----
-
-Switch `configServiceFactory` to use `ConfigSources` from `@backstage/config-loader` to load config.
diff --git a/.changeset/moody-lizards-beam.md b/.changeset/moody-lizards-beam.md
deleted file mode 100644
index 68fb9a9e40..0000000000
--- a/.changeset/moody-lizards-beam.md
+++ /dev/null
@@ -1,40 +0,0 @@
----
-'@backstage/config-loader': minor
----
-
-Introduced a new config source system to replace `loadConfig`. There is a new `ConfigSource` interface along with utilities provided by `ConfigSources`, as well as a number of built-in configuration source implementations. The new system is more flexible and makes it easier to create new and reusable sources of configuration, such as loading configuration from secret providers.
-
-The following is an example of how to load configuration using the default behavior:
-
-```ts
-const source = ConfigSources.default({
- argv: options?.argv,
- remote: options?.remote,
-});
-const config = await ConfigSources.toConfig(source);
-```
-
-The `ConfigSource` interface looks like this:
-
-```ts
-export interface ConfigSource {
- readConfigData(options?: ReadConfigDataOptions): AsyncConfigSourceIterator;
-}
-```
-
-It is best implemented using an async iterator:
-
-```ts
-class MyConfigSource implements ConfigSource {
- async *readConfigData() {
- yield {
- config: [
- {
- context: 'example',
- data: { backend: { baseUrl: 'http://localhost' } },
- },
- ],
- };
- }
-}
-```
diff --git a/.changeset/moody-shrimps-train.md b/.changeset/moody-shrimps-train.md
deleted file mode 100644
index 397500e2cb..0000000000
--- a/.changeset/moody-shrimps-train.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/plugin-scaffolder-backend-module-gitlab': minor
----
-
-Add a new scaffolder action for gitlab to ensure a group exists
diff --git a/.changeset/new-roses-fail.md b/.changeset/new-roses-fail.md
deleted file mode 100644
index 77495c5f54..0000000000
--- a/.changeset/new-roses-fail.md
+++ /dev/null
@@ -1,16 +0,0 @@
----
-'@backstage/plugin-org': patch
----
-
-Changed the MembersListCard component to allow displaying aggregated members when viewing a group. Now, a toggle switch can be displayed that lets you switch between showing direct members and aggregated members.
-
-To enable this new feature, set the showAggregateMembersToggle prop on EntityMembersListCard:
-
-```jsx
-// In packages/app/src/components/catalog/EntityPage.tsx
-const groupPage = (
- // ...
-
- // ...
-);
-```
diff --git a/.changeset/nice-ants-type.md b/.changeset/nice-ants-type.md
deleted file mode 100644
index 632d323213..0000000000
--- a/.changeset/nice-ants-type.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/plugin-catalog-backend-module-aws': minor
----
-
-**BREAKING**: AwsOrganizationCloudAccountProcessor.fromConfig now returns a promise instead of the instance directly.
diff --git a/.changeset/nine-planes-carry.md b/.changeset/nine-planes-carry.md
deleted file mode 100644
index 414cc25680..0000000000
--- a/.changeset/nine-planes-carry.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/plugin-azure-sites-backend': patch
----
-
-Updated URL to `/health` and corrected typos in the `README.md`
diff --git a/.changeset/nine-ties-smoke.md b/.changeset/nine-ties-smoke.md
deleted file mode 100644
index f7ae8016be..0000000000
--- a/.changeset/nine-ties-smoke.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/plugin-home': patch
----
-
-Bump to using the later v5 versions of `@rjsf/*`
diff --git a/.changeset/ninety-eggs-lie.md b/.changeset/ninety-eggs-lie.md
deleted file mode 100644
index 83b04b82af..0000000000
--- a/.changeset/ninety-eggs-lie.md
+++ /dev/null
@@ -1,6 +0,0 @@
----
-'@backstage/core-components': patch
-'@backstage/theme': patch
----
-
-Fix accessibility issue with Backstage Table's header style
diff --git a/.changeset/ninety-mugs-sin.md b/.changeset/ninety-mugs-sin.md
deleted file mode 100644
index 6b71a00667..0000000000
--- a/.changeset/ninety-mugs-sin.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/plugin-search-react': minor
----
-
- accepts InputProp property that can override keys from default
diff --git a/.changeset/olive-turkeys-switch.md b/.changeset/olive-turkeys-switch.md
deleted file mode 100644
index d208f3b197..0000000000
--- a/.changeset/olive-turkeys-switch.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/plugin-catalog-backend-module-github': patch
----
-
-Fixed bug in queryWithPaging that caused secondary rate limit errors in GitHub with organizations having more than 1000 repositories. This change makes one request per second to avoid concurrency issues.
diff --git a/.changeset/perfect-readers-attack.md b/.changeset/perfect-readers-attack.md
new file mode 100644
index 0000000000..93d205eb9c
--- /dev/null
+++ b/.changeset/perfect-readers-attack.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-scaffolder-backend-module-gitlab': patch
+---
+
+Tweak README
diff --git a/.changeset/polite-dingos-train.md b/.changeset/polite-dingos-train.md
deleted file mode 100644
index 49ac56a000..0000000000
--- a/.changeset/polite-dingos-train.md
+++ /dev/null
@@ -1,33 +0,0 @@
----
-'@backstage/plugin-kubernetes': minor
----
-
-Added Pod logs components for Kubernetes plugin
-
-**BREAKING**: `kubernetesProxyApi` for custom plugins built with components from the Kubernetes plugin apis, `kubernetesProxyApi` should be added to the plugin's API list.
-
-```
-...
-export const kubernetesPlugin = createPlugin({
- id: 'kubernetes',
- apis: [
-...
- createApiFactory({
- api: kubernetesProxyApiRef,
- deps: {
- kubernetesApi: kubernetesApiRef,
- },
- factory: ({ kubernetesApi }) =>
- new KubernetesProxyClient({
- kubernetesApi,
- }),
- }),
-```
-
-**BREAKING**: `KubernetesDrawer` is now called `KubernetesStructuredMetadataTableDrawer` so that we can do more than just show `StructuredMetadataTable`
-
-`import { KubernetesDrawer } from "@backstage/plugin-kubernetes"`
-
-should now be:
-
-`import { KubernetesStructuredMetadataTableDrawer } from "@backstage/plugin-kubernetes"`
diff --git a/.changeset/pre.json b/.changeset/pre.json
index bec2a1e2df..2856f9e0af 100644
--- a/.changeset/pre.json
+++ b/.changeset/pre.json
@@ -1,308 +1,230 @@
{
- "mode": "exit",
+ "mode": "pre",
"tag": "next",
"initialVersions": {
- "example-app": "0.2.82",
- "@backstage/app-defaults": "1.3.0",
- "example-backend": "0.2.82",
- "@backstage/backend-app-api": "0.4.2",
- "@backstage/backend-common": "0.18.4",
- "@backstage/backend-defaults": "0.1.9",
+ "example-app": "0.2.83",
+ "@backstage/app-defaults": "1.3.1",
+ "example-backend": "0.2.83",
+ "@backstage/backend-app-api": "0.4.3",
+ "@backstage/backend-common": "0.18.5",
+ "@backstage/backend-defaults": "0.1.10",
"@backstage/backend-dev-utils": "0.1.1",
- "example-backend-next": "0.0.10",
- "@backstage/backend-openapi-utils": "0.0.1",
- "@backstage/backend-plugin-api": "0.5.1",
- "@backstage/backend-tasks": "0.5.1",
- "@backstage/backend-test-utils": "0.1.36",
+ "example-backend-next": "0.0.11",
+ "@backstage/backend-openapi-utils": "0.0.2",
+ "@backstage/backend-plugin-api": "0.5.2",
+ "@backstage/backend-tasks": "0.5.2",
+ "@backstage/backend-test-utils": "0.1.37",
"@backstage/catalog-client": "1.4.1",
"@backstage/catalog-model": "1.3.0",
- "@backstage/cli": "0.22.6",
+ "@backstage/cli": "0.22.7",
"@backstage/cli-common": "0.1.12",
"@backstage/cli-node": "0.1.0",
"@backstage/codemods": "0.1.44",
"@backstage/config": "1.0.7",
- "@backstage/config-loader": "1.2.0",
- "@backstage/core-app-api": "1.7.0",
- "@backstage/core-components": "0.13.0",
+ "@backstage/config-loader": "1.3.0",
+ "@backstage/core-app-api": "1.8.0",
+ "@backstage/core-components": "0.13.1",
"@backstage/core-plugin-api": "1.5.1",
- "@backstage/create-app": "0.5.0",
- "@backstage/dev-utils": "1.0.14",
- "e2e-test": "0.2.2",
+ "@backstage/create-app": "0.5.1",
+ "@backstage/dev-utils": "1.0.15",
+ "e2e-test": "0.2.3",
"@backstage/errors": "1.1.5",
"@backstage/eslint-plugin": "0.1.3",
- "@backstage/integration": "1.4.4",
- "@backstage/integration-aws-node": "0.1.2",
- "@backstage/integration-react": "1.1.12",
+ "@backstage/integration": "1.4.5",
+ "@backstage/integration-aws-node": "0.1.3",
+ "@backstage/integration-react": "1.1.13",
"@backstage/release-manifests": "0.0.9",
- "@backstage/repo-tools": "0.2.0",
- "@techdocs/cli": "1.4.1",
- "techdocs-cli-embedded-app": "0.2.81",
- "@backstage/test-utils": "1.3.0",
- "@backstage/theme": "0.2.19",
+ "@backstage/repo-tools": "0.3.0",
+ "@techdocs/cli": "1.4.2",
+ "techdocs-cli-embedded-app": "0.2.82",
+ "@backstage/test-utils": "1.3.1",
+ "@backstage/theme": "0.3.0",
"@backstage/types": "1.0.2",
"@backstage/version-bridge": "1.0.4",
- "@backstage/plugin-adr": "0.5.0",
- "@backstage/plugin-adr-backend": "0.3.2",
- "@backstage/plugin-adr-common": "0.2.8",
- "@backstage/plugin-airbrake": "0.3.17",
- "@backstage/plugin-airbrake-backend": "0.2.17",
- "@backstage/plugin-allure": "0.1.33",
- "@backstage/plugin-analytics-module-ga": "0.1.28",
- "@backstage/plugin-apache-airflow": "0.2.10",
- "@backstage/plugin-api-docs": "0.9.2",
+ "@backstage/plugin-adr": "0.6.0",
+ "@backstage/plugin-adr-backend": "0.3.3",
+ "@backstage/plugin-adr-common": "0.2.9",
+ "@backstage/plugin-airbrake": "0.3.18",
+ "@backstage/plugin-airbrake-backend": "0.2.18",
+ "@backstage/plugin-allure": "0.1.34",
+ "@backstage/plugin-analytics-module-ga": "0.1.29",
+ "@backstage/plugin-analytics-module-ga4": "0.1.0",
+ "@backstage/plugin-apache-airflow": "0.2.11",
+ "@backstage/plugin-api-docs": "0.9.3",
"@backstage/plugin-api-docs-module-protoc-gen-doc": "0.1.2",
- "@backstage/plugin-apollo-explorer": "0.1.10",
- "@backstage/plugin-app-backend": "0.3.44",
- "@backstage/plugin-auth-backend": "0.18.2",
- "@backstage/plugin-auth-node": "0.2.13",
- "@backstage/plugin-azure-devops": "0.2.8",
- "@backstage/plugin-azure-devops-backend": "0.3.23",
+ "@backstage/plugin-apollo-explorer": "0.1.11",
+ "@backstage/plugin-app-backend": "0.3.45",
+ "@backstage/plugin-auth-backend": "0.18.3",
+ "@backstage/plugin-auth-node": "0.2.14",
+ "@backstage/plugin-azure-devops": "0.3.0",
+ "@backstage/plugin-azure-devops-backend": "0.3.24",
"@backstage/plugin-azure-devops-common": "0.3.0",
- "@backstage/plugin-azure-sites": "0.1.6",
- "@backstage/plugin-azure-sites-backend": "0.1.6",
+ "@backstage/plugin-azure-sites": "0.1.7",
+ "@backstage/plugin-azure-sites-backend": "0.1.7",
"@backstage/plugin-azure-sites-common": "0.1.0",
- "@backstage/plugin-badges": "0.2.41",
- "@backstage/plugin-badges-backend": "0.1.38",
- "@backstage/plugin-bazaar": "0.2.7",
- "@backstage/plugin-bazaar-backend": "0.2.7",
- "@backstage/plugin-bitbucket-cloud-common": "0.2.5",
- "@backstage/plugin-bitrise": "0.1.44",
- "@backstage/plugin-catalog": "1.10.0",
- "@backstage/plugin-catalog-backend": "1.9.0",
- "@backstage/plugin-catalog-backend-module-aws": "0.1.18",
- "@backstage/plugin-catalog-backend-module-azure": "0.1.15",
- "@backstage/plugin-catalog-backend-module-bitbucket": "0.2.11",
- "@backstage/plugin-catalog-backend-module-bitbucket-cloud": "0.1.11",
- "@backstage/plugin-catalog-backend-module-bitbucket-server": "0.1.9",
- "@backstage/plugin-catalog-backend-module-gerrit": "0.1.12",
- "@backstage/plugin-catalog-backend-module-github": "0.2.7",
- "@backstage/plugin-catalog-backend-module-gitlab": "0.2.0",
- "@backstage/plugin-catalog-backend-module-incremental-ingestion": "0.3.1",
- "@backstage/plugin-catalog-backend-module-ldap": "0.5.11",
- "@backstage/plugin-catalog-backend-module-msgraph": "0.5.3",
- "@backstage/plugin-catalog-backend-module-openapi": "0.1.10",
- "@backstage/plugin-catalog-backend-module-puppetdb": "0.1.1",
+ "@backstage/plugin-badges": "0.2.42",
+ "@backstage/plugin-badges-backend": "0.2.0",
+ "@backstage/plugin-bazaar": "0.2.8",
+ "@backstage/plugin-bazaar-backend": "0.2.8",
+ "@backstage/plugin-bitbucket-cloud-common": "0.2.6",
+ "@backstage/plugin-bitrise": "0.1.45",
+ "@backstage/plugin-catalog": "1.11.0",
+ "@backstage/plugin-catalog-backend": "1.9.1",
+ "@backstage/plugin-catalog-backend-module-aws": "0.2.0",
+ "@backstage/plugin-catalog-backend-module-azure": "0.1.16",
+ "@backstage/plugin-catalog-backend-module-bitbucket": "0.2.12",
+ "@backstage/plugin-catalog-backend-module-bitbucket-cloud": "0.1.12",
+ "@backstage/plugin-catalog-backend-module-bitbucket-server": "0.1.10",
+ "@backstage/plugin-catalog-backend-module-gerrit": "0.1.13",
+ "@backstage/plugin-catalog-backend-module-github": "0.3.0",
+ "@backstage/plugin-catalog-backend-module-gitlab": "0.2.1",
+ "@backstage/plugin-catalog-backend-module-incremental-ingestion": "0.3.2",
+ "@backstage/plugin-catalog-backend-module-ldap": "0.5.12",
+ "@backstage/plugin-catalog-backend-module-msgraph": "0.5.4",
+ "@backstage/plugin-catalog-backend-module-openapi": "0.1.11",
+ "@backstage/plugin-catalog-backend-module-puppetdb": "0.1.2",
"@backstage/plugin-catalog-common": "1.0.13",
- "@internal/plugin-catalog-customized": "0.0.9",
- "@backstage/plugin-catalog-graph": "0.2.29",
+ "@internal/plugin-catalog-customized": "0.0.10",
+ "@backstage/plugin-catalog-graph": "0.2.30",
"@backstage/plugin-catalog-graphql": "0.3.20",
- "@backstage/plugin-catalog-import": "0.9.7",
- "@backstage/plugin-catalog-node": "1.3.5",
- "@backstage/plugin-catalog-react": "1.5.0",
- "@backstage/plugin-cicd-statistics": "0.1.19",
- "@backstage/plugin-cicd-statistics-module-gitlab": "0.1.13",
- "@backstage/plugin-circleci": "0.3.17",
- "@backstage/plugin-cloudbuild": "0.3.17",
- "@backstage/plugin-code-climate": "0.1.17",
- "@backstage/plugin-code-coverage": "0.2.10",
- "@backstage/plugin-code-coverage-backend": "0.2.10",
- "@backstage/plugin-codescene": "0.1.12",
- "@backstage/plugin-config-schema": "0.1.40",
- "@backstage/plugin-cost-insights": "0.12.6",
+ "@backstage/plugin-catalog-import": "0.9.8",
+ "@backstage/plugin-catalog-node": "1.3.6",
+ "@backstage/plugin-catalog-react": "1.6.0",
+ "@backstage/plugin-cicd-statistics": "0.1.20",
+ "@backstage/plugin-cicd-statistics-module-gitlab": "0.1.14",
+ "@backstage/plugin-circleci": "0.3.18",
+ "@backstage/plugin-cloudbuild": "0.3.18",
+ "@backstage/plugin-code-climate": "0.1.18",
+ "@backstage/plugin-code-coverage": "0.2.11",
+ "@backstage/plugin-code-coverage-backend": "0.2.11",
+ "@backstage/plugin-codescene": "0.1.13",
+ "@backstage/plugin-config-schema": "0.1.41",
+ "@backstage/plugin-cost-insights": "0.12.7",
"@backstage/plugin-cost-insights-common": "0.1.1",
- "@backstage/plugin-dynatrace": "4.0.0",
- "@backstage/plugin-entity-feedback": "0.2.0",
- "@backstage/plugin-entity-feedback-backend": "0.1.2",
+ "@backstage/plugin-devtools": "0.1.0",
+ "@backstage/plugin-devtools-backend": "0.1.0",
+ "@backstage/plugin-devtools-common": "0.1.0",
+ "@backstage/plugin-dynatrace": "5.0.0",
+ "@backstage/plugin-entity-feedback": "0.2.1",
+ "@backstage/plugin-entity-feedback-backend": "0.1.3",
"@backstage/plugin-entity-feedback-common": "0.1.1",
- "@backstage/plugin-entity-validation": "0.1.2",
- "@backstage/plugin-events-backend": "0.2.5",
- "@backstage/plugin-events-backend-module-aws-sqs": "0.1.6",
- "@backstage/plugin-events-backend-module-azure": "0.1.6",
- "@backstage/plugin-events-backend-module-bitbucket-cloud": "0.1.6",
- "@backstage/plugin-events-backend-module-gerrit": "0.1.6",
- "@backstage/plugin-events-backend-module-github": "0.1.6",
- "@backstage/plugin-events-backend-module-gitlab": "0.1.6",
- "@backstage/plugin-events-backend-test-utils": "0.1.6",
- "@backstage/plugin-events-node": "0.2.5",
- "@internal/plugin-todo-list": "1.0.12",
- "@internal/plugin-todo-list-backend": "1.0.12",
+ "@backstage/plugin-entity-validation": "0.1.3",
+ "@backstage/plugin-events-backend": "0.2.6",
+ "@backstage/plugin-events-backend-module-aws-sqs": "0.2.0",
+ "@backstage/plugin-events-backend-module-azure": "0.1.7",
+ "@backstage/plugin-events-backend-module-bitbucket-cloud": "0.1.7",
+ "@backstage/plugin-events-backend-module-gerrit": "0.1.7",
+ "@backstage/plugin-events-backend-module-github": "0.1.7",
+ "@backstage/plugin-events-backend-module-gitlab": "0.1.7",
+ "@backstage/plugin-events-backend-test-utils": "0.1.7",
+ "@backstage/plugin-events-node": "0.2.6",
+ "@internal/plugin-todo-list": "1.0.13",
+ "@internal/plugin-todo-list-backend": "1.0.13",
"@internal/plugin-todo-list-common": "1.0.10",
- "@backstage/plugin-explore": "0.4.2",
- "@backstage/plugin-explore-backend": "0.0.6",
+ "@backstage/plugin-explore": "0.4.3",
+ "@backstage/plugin-explore-backend": "0.0.7",
"@backstage/plugin-explore-common": "0.0.1",
"@backstage/plugin-explore-react": "0.0.28",
- "@backstage/plugin-firehydrant": "0.2.1",
- "@backstage/plugin-fossa": "0.2.49",
- "@backstage/plugin-gcalendar": "0.3.13",
- "@backstage/plugin-gcp-projects": "0.3.36",
- "@backstage/plugin-git-release-manager": "0.3.30",
- "@backstage/plugin-github-actions": "0.5.17",
- "@backstage/plugin-github-deployments": "0.1.48",
- "@backstage/plugin-github-issues": "0.2.6",
- "@backstage/plugin-github-pull-requests-board": "0.1.11",
- "@backstage/plugin-gitops-profiles": "0.3.35",
- "@backstage/plugin-gocd": "0.1.23",
- "@backstage/plugin-graphiql": "0.2.49",
- "@backstage/plugin-graphql-backend": "0.1.34",
- "@backstage/plugin-graphql-voyager": "0.1.2",
- "@backstage/plugin-home": "0.5.0",
- "@backstage/plugin-ilert": "0.2.6",
- "@backstage/plugin-jenkins": "0.7.16",
- "@backstage/plugin-jenkins-backend": "0.1.34",
+ "@backstage/plugin-firehydrant": "0.2.2",
+ "@backstage/plugin-fossa": "0.2.50",
+ "@backstage/plugin-gcalendar": "0.3.14",
+ "@backstage/plugin-gcp-projects": "0.3.37",
+ "@backstage/plugin-git-release-manager": "0.3.31",
+ "@backstage/plugin-github-actions": "0.5.18",
+ "@backstage/plugin-github-deployments": "0.1.49",
+ "@backstage/plugin-github-issues": "0.2.7",
+ "@backstage/plugin-github-pull-requests-board": "0.1.12",
+ "@backstage/plugin-gitops-profiles": "0.3.36",
+ "@backstage/plugin-gocd": "0.1.24",
+ "@backstage/plugin-graphiql": "0.2.50",
+ "@backstage/plugin-graphql-backend": "0.1.35",
+ "@backstage/plugin-graphql-voyager": "0.1.3",
+ "@backstage/plugin-home": "0.5.2",
+ "@backstage/plugin-home-react": "0.0.0",
+ "@backstage/plugin-ilert": "0.2.7",
+ "@backstage/plugin-jenkins": "0.8.0",
+ "@backstage/plugin-jenkins-backend": "0.2.0",
"@backstage/plugin-jenkins-common": "0.1.15",
- "@backstage/plugin-kafka": "0.3.17",
- "@backstage/plugin-kafka-backend": "0.2.37",
- "@backstage/plugin-kubernetes": "0.8.0",
- "@backstage/plugin-kubernetes-backend": "0.10.0",
- "@backstage/plugin-kubernetes-common": "0.6.2",
- "@backstage/plugin-lighthouse": "0.4.2",
- "@backstage/plugin-lighthouse-backend": "0.2.0",
+ "@backstage/plugin-kafka": "0.3.18",
+ "@backstage/plugin-kafka-backend": "0.2.38",
+ "@backstage/plugin-kubernetes": "0.9.0",
+ "@backstage/plugin-kubernetes-backend": "0.11.0",
+ "@backstage/plugin-kubernetes-common": "0.6.3",
+ "@backstage/plugin-lighthouse": "0.4.3",
+ "@backstage/plugin-lighthouse-backend": "0.2.1",
"@backstage/plugin-lighthouse-common": "0.1.1",
- "@backstage/plugin-linguist": "0.1.2",
- "@backstage/plugin-linguist-backend": "0.2.1",
+ "@backstage/plugin-linguist": "0.1.3",
+ "@backstage/plugin-linguist-backend": "0.2.2",
"@backstage/plugin-linguist-common": "0.1.0",
- "@backstage/plugin-microsoft-calendar": "0.1.2",
- "@backstage/plugin-newrelic": "0.3.35",
- "@backstage/plugin-newrelic-dashboard": "0.2.10",
- "@backstage/plugin-octopus-deploy": "0.1.1",
- "@backstage/plugin-org": "0.6.7",
- "@backstage/plugin-org-react": "0.1.6",
- "@backstage/plugin-pagerduty": "0.5.10",
- "@backstage/plugin-periskop": "0.1.15",
- "@backstage/plugin-periskop-backend": "0.1.15",
- "@backstage/plugin-permission-backend": "0.5.19",
+ "@backstage/plugin-microsoft-calendar": "0.1.3",
+ "@backstage/plugin-newrelic": "0.3.36",
+ "@backstage/plugin-newrelic-dashboard": "0.2.11",
+ "@backstage/plugin-octopus-deploy": "0.2.0",
+ "@backstage/plugin-org": "0.6.8",
+ "@backstage/plugin-org-react": "0.1.7",
+ "@backstage/plugin-pagerduty": "0.5.11",
+ "@backstage/plugin-periskop": "0.1.16",
+ "@backstage/plugin-periskop-backend": "0.1.16",
+ "@backstage/plugin-permission-backend": "0.5.20",
"@backstage/plugin-permission-common": "0.7.5",
- "@backstage/plugin-permission-node": "0.7.7",
+ "@backstage/plugin-permission-node": "0.7.8",
"@backstage/plugin-permission-react": "0.4.12",
- "@backstage/plugin-playlist": "0.1.8",
- "@backstage/plugin-playlist-backend": "0.3.0",
+ "@backstage/plugin-playlist": "0.1.9",
+ "@backstage/plugin-playlist-backend": "0.3.1",
"@backstage/plugin-playlist-common": "0.1.6",
- "@backstage/plugin-proxy-backend": "0.2.38",
- "@backstage/plugin-puppetdb": "0.1.0",
- "@backstage/plugin-rollbar": "0.4.17",
- "@backstage/plugin-rollbar-backend": "0.1.41",
- "@backstage/plugin-scaffolder": "1.13.0",
- "@backstage/plugin-scaffolder-backend": "1.13.0",
- "@backstage/plugin-scaffolder-backend-module-confluence-to-markdown": "0.1.0",
- "@backstage/plugin-scaffolder-backend-module-cookiecutter": "0.2.19",
- "@backstage/plugin-scaffolder-backend-module-gitlab": "0.1.0",
- "@backstage/plugin-scaffolder-backend-module-rails": "0.4.12",
- "@backstage/plugin-scaffolder-backend-module-sentry": "0.1.4",
- "@backstage/plugin-scaffolder-backend-module-yeoman": "0.2.17",
- "@backstage/plugin-scaffolder-common": "1.2.7",
- "@backstage/plugin-scaffolder-node": "0.1.2",
- "@backstage/plugin-scaffolder-react": "1.3.0",
- "@backstage/plugin-search": "1.2.0",
- "@backstage/plugin-search-backend": "1.3.0",
- "@backstage/plugin-search-backend-module-catalog": "0.1.0",
- "@backstage/plugin-search-backend-module-elasticsearch": "1.2.0",
- "@backstage/plugin-search-backend-module-explore": "0.1.0",
- "@backstage/plugin-search-backend-module-pg": "0.5.5",
- "@backstage/plugin-search-backend-module-techdocs": "0.1.0",
- "@backstage/plugin-search-backend-node": "1.2.0",
+ "@backstage/plugin-proxy-backend": "0.2.39",
+ "@backstage/plugin-puppetdb": "0.1.1",
+ "@backstage/plugin-rollbar": "0.4.18",
+ "@backstage/plugin-rollbar-backend": "0.1.42",
+ "@backstage/plugin-scaffolder": "1.13.1",
+ "@backstage/plugin-scaffolder-backend": "1.14.0",
+ "@backstage/plugin-scaffolder-backend-module-confluence-to-markdown": "0.1.2",
+ "@backstage/plugin-scaffolder-backend-module-cookiecutter": "0.2.21",
+ "@backstage/plugin-scaffolder-backend-module-gitlab": "0.2.0",
+ "@backstage/plugin-scaffolder-backend-module-rails": "0.4.14",
+ "@backstage/plugin-scaffolder-backend-module-sentry": "0.1.5",
+ "@backstage/plugin-scaffolder-backend-module-yeoman": "0.2.18",
+ "@backstage/plugin-scaffolder-common": "1.3.0",
+ "@backstage/plugin-scaffolder-node": "0.1.3",
+ "@backstage/plugin-scaffolder-react": "1.4.0",
+ "@backstage/plugin-search": "1.3.0",
+ "@backstage/plugin-search-backend": "1.3.1",
+ "@backstage/plugin-search-backend-module-catalog": "0.1.1",
+ "@backstage/plugin-search-backend-module-elasticsearch": "1.3.0",
+ "@backstage/plugin-search-backend-module-explore": "0.1.1",
+ "@backstage/plugin-search-backend-module-pg": "0.5.6",
+ "@backstage/plugin-search-backend-module-techdocs": "0.1.1",
+ "@backstage/plugin-search-backend-node": "1.2.1",
"@backstage/plugin-search-common": "1.2.3",
- "@backstage/plugin-search-react": "1.5.2",
- "@backstage/plugin-sentry": "0.5.2",
- "@backstage/plugin-shortcuts": "0.3.9",
- "@backstage/plugin-sonarqube": "0.6.6",
- "@backstage/plugin-sonarqube-backend": "0.1.9",
+ "@backstage/plugin-search-react": "1.6.0",
+ "@backstage/plugin-sentry": "0.5.3",
+ "@backstage/plugin-shortcuts": "0.3.10",
+ "@backstage/plugin-sonarqube": "0.6.7",
+ "@backstage/plugin-sonarqube-backend": "0.1.10",
"@backstage/plugin-sonarqube-react": "0.1.5",
- "@backstage/plugin-splunk-on-call": "0.4.6",
- "@backstage/plugin-stack-overflow": "0.1.13",
- "@backstage/plugin-stack-overflow-backend": "0.2.0",
- "@backstage/plugin-stackstorm": "0.1.1",
- "@backstage/plugin-tech-insights": "0.3.9",
- "@backstage/plugin-tech-insights-backend": "0.5.10",
- "@backstage/plugin-tech-insights-backend-module-jsonfc": "0.1.28",
+ "@backstage/plugin-splunk-on-call": "0.4.7",
+ "@backstage/plugin-stack-overflow": "0.1.15",
+ "@backstage/plugin-stack-overflow-backend": "0.2.1",
+ "@backstage/plugin-stackstorm": "0.1.2",
+ "@backstage/plugin-tech-insights": "0.3.10",
+ "@backstage/plugin-tech-insights-backend": "0.5.11",
+ "@backstage/plugin-tech-insights-backend-module-jsonfc": "0.1.29",
"@backstage/plugin-tech-insights-common": "0.2.10",
- "@backstage/plugin-tech-insights-node": "0.4.2",
- "@backstage/plugin-tech-radar": "0.6.3",
- "@backstage/plugin-techdocs": "1.6.1",
- "@backstage/plugin-techdocs-addons-test-utils": "1.0.12",
- "@backstage/plugin-techdocs-backend": "1.6.1",
- "@backstage/plugin-techdocs-module-addons-contrib": "1.0.12",
- "@backstage/plugin-techdocs-node": "1.7.0",
- "@backstage/plugin-techdocs-react": "1.1.5",
- "@backstage/plugin-todo": "0.2.19",
- "@backstage/plugin-todo-backend": "0.1.41",
- "@backstage/plugin-user-settings": "0.7.2",
- "@backstage/plugin-user-settings-backend": "0.1.8",
- "@backstage/plugin-vault": "0.1.11",
- "@backstage/plugin-vault-backend": "0.3.0",
- "@backstage/plugin-xcmetrics": "0.2.37",
- "@backstage/plugin-analytics-module-ga4": "0.0.0",
- "@backstage/plugin-devtools": "0.0.0",
- "@backstage/plugin-devtools-backend": "0.0.0",
- "@backstage/plugin-devtools-common": "0.0.0"
+ "@backstage/plugin-tech-insights-node": "0.4.3",
+ "@backstage/plugin-tech-radar": "0.6.4",
+ "@backstage/plugin-techdocs": "1.6.2",
+ "@backstage/plugin-techdocs-addons-test-utils": "1.0.13",
+ "@backstage/plugin-techdocs-backend": "1.6.2",
+ "@backstage/plugin-techdocs-module-addons-contrib": "1.0.13",
+ "@backstage/plugin-techdocs-node": "1.7.1",
+ "@backstage/plugin-techdocs-react": "1.1.6",
+ "@backstage/plugin-todo": "0.2.20",
+ "@backstage/plugin-todo-backend": "0.1.42",
+ "@backstage/plugin-user-settings": "0.7.3",
+ "@backstage/plugin-user-settings-backend": "0.1.9",
+ "@backstage/plugin-vault": "0.1.12",
+ "@backstage/plugin-vault-backend": "0.3.1",
+ "@backstage/plugin-xcmetrics": "0.2.38"
},
- "changesets": [
- "afraid-shirts-train",
- "backend-like-a-tattoo",
- "beige-tigers-matter",
- "blue-eyes-run",
- "brown-eyes-yell",
- "brown-keys-raise",
- "calm-snails-trade",
- "calm-wolves-taste",
- "chilled-goats-jump",
- "chilled-pants-wonder",
- "chilled-queens-wonder",
- "chilly-fireants-type",
- "chilly-taxis-shop",
- "clean-lobsters-brake",
- "cold-drinks-exercise",
- "cold-laws-turn",
- "cool-dingos-repair",
- "create-app-1682437922",
- "curly-rats-fold",
- "curvy-months-appear",
- "dry-boats-sniff",
- "dull-wombats-stare",
- "eighty-olives-live",
- "extragavent-fast-fly",
- "fair-suits-warn",
- "fifty-grapes-explode",
- "fifty-laws-count",
- "five-tigers-whisper",
- "fluffy-crabs-reply",
- "fluffy-mirrors-happen",
- "fresh-moons-unite",
- "funny-trains-sniff",
- "good-lions-approve",
- "green-cheetahs-cover",
- "healthy-ladybugs-chew",
- "heavy-penguins-burn",
- "honest-countries-deny",
- "honest-turkeys-learn",
- "hungry-foxes-divide",
- "hungry-peas-sing",
- "khaki-brooms-kiss",
- "lazy-keys-work",
- "mighty-bears-glow",
- "mighty-cows-greet",
- "modern-pumpkins-join",
- "moody-lizards-beam",
- "moody-shrimps-train",
- "new-roses-fail",
- "nine-ties-smoke",
- "ninety-eggs-lie",
- "ninety-mugs-sin",
- "olive-turkeys-switch",
- "polite-dingos-train",
- "pretty-gifts-greet",
- "quick-flies-guess",
- "quiet-bikes-smash",
- "quiet-stingrays-fly",
- "rare-elephants-arrive",
- "red-cheetahs-invite",
- "rotten-chefs-jog",
- "serious-hornets-remember",
- "six-mails-shout",
- "slimy-turkeys-return",
- "soft-readers-exist",
- "stupid-seas-stare",
- "swift-fishes-run",
- "tame-games-rule",
- "thick-parents-pump",
- "thick-pugs-rush",
- "thin-ways-exist",
- "thirty-jobs-sort",
- "tough-moles-whisper",
- "twelve-zebras-repair",
- "two-gorillas-drop",
- "unlucky-deers-teach",
- "unlucky-plants-give",
- "warm-lamps-tease",
- "wet-dolphins-love"
- ]
+ "changesets": []
}
diff --git a/.changeset/pretty-gifts-greet.md b/.changeset/pretty-gifts-greet.md
deleted file mode 100644
index 965f714a61..0000000000
--- a/.changeset/pretty-gifts-greet.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/plugin-home': patch
----
-
-Add missing @rjsf/core dependency
diff --git a/.changeset/proud-chairs-sleep.md b/.changeset/proud-chairs-sleep.md
deleted file mode 100644
index 6df02d052d..0000000000
--- a/.changeset/proud-chairs-sleep.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/plugin-search-react': patch
----
-
-`SearchPagination` now automatically resets the page cursor when the page limit is changed
diff --git a/.changeset/quick-flies-guess.md b/.changeset/quick-flies-guess.md
deleted file mode 100644
index 73e5589b98..0000000000
--- a/.changeset/quick-flies-guess.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/core-app-api': patch
----
-
-Added `FrontendHostDiscovery` for config driven discovery implementation
diff --git a/.changeset/quiet-bikes-smash.md b/.changeset/quiet-bikes-smash.md
deleted file mode 100644
index ca751adaf7..0000000000
--- a/.changeset/quiet-bikes-smash.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/backend-openapi-utils': patch
----
-
-Corrected resolution of parameter nested schema to use central schemas.
diff --git a/.changeset/quiet-stingrays-fly.md b/.changeset/quiet-stingrays-fly.md
deleted file mode 100644
index 536ee18a6f..0000000000
--- a/.changeset/quiet-stingrays-fly.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/plugin-azure-devops': minor
----
-
-The getBuildRuns function now checks contains multiple comma-separated builds and splits them to send multiple requests for each and concatenates the results.
diff --git a/.changeset/rare-elephants-arrive.md b/.changeset/rare-elephants-arrive.md
deleted file mode 100644
index d27f763d1f..0000000000
--- a/.changeset/rare-elephants-arrive.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/plugin-catalog-backend-module-puppetdb': patch
----
-
-Fixes import paths and updates documentation
diff --git a/.changeset/real-baboons-vanish.md b/.changeset/real-baboons-vanish.md
deleted file mode 100644
index ca09cc9bf3..0000000000
--- a/.changeset/real-baboons-vanish.md
+++ /dev/null
@@ -1,8 +0,0 @@
----
-'@backstage/plugin-jenkins-backend': minor
-'@backstage/plugin-jenkins': minor
----
-
-Updated rebuild to use Jenkins API replay build, which works for Jenkins jobs that have required parameters. Jenkins SDK could not be used for this request because it does not have support for replay.
-
-Added link to view build in Jenkins CI/CD table action column.
diff --git a/.changeset/red-cheetahs-invite.md b/.changeset/red-cheetahs-invite.md
deleted file mode 100644
index ef1711c761..0000000000
--- a/.changeset/red-cheetahs-invite.md
+++ /dev/null
@@ -1,6 +0,0 @@
----
-'@backstage/plugin-octopus-deploy': minor
----
-
-Added support for Octopus Deploy spaces. The octopus.com/project-id annotation can now (optionally) be prefixed by a space identifier, for example. Spaces-1/Projects-102.
-Also note that some of this plugins exported API's have changed to accommodate this change, changing from separate arguments to a single object.
diff --git a/.changeset/red-parrots-attack.md b/.changeset/red-parrots-attack.md
deleted file mode 100644
index 1530c17c8b..0000000000
--- a/.changeset/red-parrots-attack.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/plugin-catalog-backend-module-gitlab': patch
----
-
-Fix a corner case where returned users are null for bots
diff --git a/.changeset/rotten-chefs-jog.md b/.changeset/rotten-chefs-jog.md
deleted file mode 100644
index 120520c087..0000000000
--- a/.changeset/rotten-chefs-jog.md
+++ /dev/null
@@ -1,10 +0,0 @@
----
-'@backstage/plugin-scaffolder-react': patch
-'@backstage/plugin-scaffolder': patch
----
-
-Improvements to the `scaffolder/next` buttons UX:
-
-- Added padding around the "Create" button in the `Stepper` component
-- Added a button bar that includes the "Cancel" and "Start Over" buttons to the `OngoingTask` component. The state of these buttons match their existing counter parts in the Context Menu
-- Added a "Show Button Bar"/"Hide Button Bar" item to the `ContextMenu` component
diff --git a/.changeset/selfish-mugs-study.md b/.changeset/selfish-mugs-study.md
new file mode 100644
index 0000000000..0a2152aecc
--- /dev/null
+++ b/.changeset/selfish-mugs-study.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-kubernetes': patch
+---
+
+Add errors to PodDrawer
diff --git a/.changeset/serious-hornets-remember.md b/.changeset/serious-hornets-remember.md
deleted file mode 100644
index 05221cd055..0000000000
--- a/.changeset/serious-hornets-remember.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/plugin-circleci': patch
----
-
-Hide empty time field data for queued builds which haven't started yet
diff --git a/.changeset/serious-phones-flash.md b/.changeset/serious-phones-flash.md
deleted file mode 100644
index 4a4afe5d4e..0000000000
--- a/.changeset/serious-phones-flash.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/plugin-techdocs-module-addons-contrib': patch
----
-
-Show cursor pointer when hovering on lightbox
diff --git a/.changeset/shaggy-gorillas-occur.md b/.changeset/shaggy-gorillas-occur.md
new file mode 100644
index 0000000000..ce7c2aba3b
--- /dev/null
+++ b/.changeset/shaggy-gorillas-occur.md
@@ -0,0 +1,16 @@
+---
+'@backstage/plugin-linguist-backend': minor
+---
+
+**BREAKING**: Removed public constructor from `LinguistBackendApi`. Removed export of `LinguistBackendDatabase` and `LinguistBackendStore`
+
+Several improvements to the Linguist backend have been made:
+
+- Added tests for the `LinguistBackendDatabase` and `LinguistBackendApi`
+- Added support for using SQLite as a database, helpful for local development
+- Removed the default from the `processes_date` column
+- Converted the `LinguistBackendApi` into an Interface
+- Added the `LinguistBackendClient` which implements the `LinguistBackendApi` Interface
+- Unprocessed entities will get processed before stale entities
+- Entities in the Linguist database but not in the Catalog anymore will be deleted
+- Improved the README's headings
diff --git a/.changeset/short-seahorses-kiss.md b/.changeset/short-seahorses-kiss.md
new file mode 100644
index 0000000000..0127e4c575
--- /dev/null
+++ b/.changeset/short-seahorses-kiss.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-techdocs': patch
+---
+
+Change deprecated local references to import from shared `plugin-techdocs-react` plugin
diff --git a/.changeset/shy-worms-enjoy.md b/.changeset/shy-worms-enjoy.md
deleted file mode 100644
index cbfb2b5f7b..0000000000
--- a/.changeset/shy-worms-enjoy.md
+++ /dev/null
@@ -1,6 +0,0 @@
----
-'@backstage/plugin-user-settings': patch
-'@backstage/plugin-auth-backend': patch
----
-
-Fix config schema definition.
diff --git a/.changeset/silver-cars-type.md b/.changeset/silver-cars-type.md
new file mode 100644
index 0000000000..0636eccd8f
--- /dev/null
+++ b/.changeset/silver-cars-type.md
@@ -0,0 +1,7 @@
+---
+'@backstage/plugin-github-actions': minor
+---
+
+Added support GitHub Enterprise hosted repositories.
+
+**BREAKING**: The `GithubActionsClient` is updated to take an `scmAuthApi` instead of the previous `githubAuthApi`. This does not require any code changes unless you construct your own `GithubActionsClient`
diff --git a/.changeset/six-mails-shout.md b/.changeset/six-mails-shout.md
deleted file mode 100644
index f803e0858e..0000000000
--- a/.changeset/six-mails-shout.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/plugin-shortcuts': patch
----
-
-Marked `LocalStoredShortcuts` as deprecated, replacing it with `DefaultShortcutsApi` whose naming more clearly suggests that the shortcuts aren't necessarily stored locally (it depends on the storage implementation).
diff --git a/.changeset/sixty-falcons-protect.md b/.changeset/sixty-falcons-protect.md
deleted file mode 100644
index 0bc77bfbd9..0000000000
--- a/.changeset/sixty-falcons-protect.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/plugin-badges-backend': patch
----
-
-Removed some unused dependencies
diff --git a/.changeset/slimy-turkeys-return.md b/.changeset/slimy-turkeys-return.md
deleted file mode 100644
index db10000509..0000000000
--- a/.changeset/slimy-turkeys-return.md
+++ /dev/null
@@ -1,22 +0,0 @@
----
-'@backstage/plugin-permission-node': patch
----
-
-`createPermissionIntegrationRouter` now accepts rules and permissions for multiple resource types. Example:
-
-```typescript
-createPermissionIntegrationRouter({
- resources: [
- {
- resourceType: 'resourceType-1',
- permissions: permissionsResourceType1,
- rules: rulesResourceType1,
- },
- {
- resourceType: 'resourceType-2',
- permissions: permissionsResourceType2,
- rules: rulesResourceType2,
- },
- ],
-});
-```
diff --git a/.changeset/soft-readers-exist.md b/.changeset/soft-readers-exist.md
deleted file mode 100644
index 8fce13caca..0000000000
--- a/.changeset/soft-readers-exist.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/backend-common': patch
----
-
-Added `HostDiscovery` to supersede deprecated `SingleHostDiscovery` (deprecated due to name)
diff --git a/.changeset/spicy-spies-warn.md b/.changeset/spicy-spies-warn.md
deleted file mode 100644
index 3ed26a2cc3..0000000000
--- a/.changeset/spicy-spies-warn.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-'@backstage/plugin-scaffolder-common': minor
----
-
-Expose scaffolder permissions in new sub-aggregations.
-
-In addition to exporting a list of all scaffolder permissions in `scaffolderPermissions`, scaffolder-common now exports `scaffolderTemplatePermissions` and `scaffolderActionPermissions`, which contain subsets of the scaffolder permissions separated by resource type.
diff --git a/.changeset/spotty-walls-serve.md b/.changeset/spotty-walls-serve.md
deleted file mode 100644
index 9b0da31a5f..0000000000
--- a/.changeset/spotty-walls-serve.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/plugin-kubernetes-backend': patch
----
-
-Fixed a bug in the Kubernetes proxy endpoint where requests to clusters configured with client-side auth providers would always fail with a 500 status.
diff --git a/.changeset/stupid-seas-stare.md b/.changeset/stupid-seas-stare.md
deleted file mode 100644
index f3d4f5e1f7..0000000000
--- a/.changeset/stupid-seas-stare.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/core-components': patch
----
-
-Fix accessibility issue on controlled select input on tab navigation + keyboard enter/space action.
diff --git a/.changeset/swift-fishes-run.md b/.changeset/swift-fishes-run.md
deleted file mode 100644
index ee3d1217ed..0000000000
--- a/.changeset/swift-fishes-run.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/plugin-scaffolder-backend': patch
----
-
-Bump minimum required version of `vm2` to be 3.9.17
diff --git a/.changeset/swift-students-type.md b/.changeset/swift-students-type.md
deleted file mode 100644
index 577fbeb8b6..0000000000
--- a/.changeset/swift-students-type.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/backend-openapi-utils': patch
----
-
-Updated README to reflect changes in `@backstage/repo-tools`.
diff --git a/.changeset/thick-parents-pump.md b/.changeset/thick-parents-pump.md
deleted file mode 100644
index ba65e10610..0000000000
--- a/.changeset/thick-parents-pump.md
+++ /dev/null
@@ -1,6 +0,0 @@
----
-'@backstage/plugin-scaffolder-backend': patch
-'@backstage/plugin-scaffolder-node': patch
----
-
-Update typing for `RouterOptions::actions` and `ScaffolderActionsExtensionPoint::addActions` to allow any kind of action being assigned to it.
diff --git a/.changeset/thick-pugs-rush.md b/.changeset/thick-pugs-rush.md
deleted file mode 100644
index 7f0171eb83..0000000000
--- a/.changeset/thick-pugs-rush.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/plugin-auth-backend': patch
----
-
-Added a persistent session store through the database
diff --git a/.changeset/thin-ways-exist.md b/.changeset/thin-ways-exist.md
deleted file mode 100644
index fd1ecb62a4..0000000000
--- a/.changeset/thin-ways-exist.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/plugin-search-react': patch
----
-
-Fix text-overflow UI issue for Lifecycle spans in SearchFilter checkbox labels.
diff --git a/.changeset/thirty-jobs-sort.md b/.changeset/thirty-jobs-sort.md
deleted file mode 100644
index 8a40302502..0000000000
--- a/.changeset/thirty-jobs-sort.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/plugin-kubernetes-common': patch
----
-
-AKS access tokens can now be sent over the wire to the Kubernetes backend.
diff --git a/.changeset/three-tools-pump.md b/.changeset/three-tools-pump.md
deleted file mode 100644
index ac9d3c9909..0000000000
--- a/.changeset/three-tools-pump.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/core-components': patch
----
-
-Fix accessibility issue with Edit Metadata Link on screen readers missing notice about opening in a new tab.
diff --git a/.changeset/tiny-crews-pull.md b/.changeset/tiny-crews-pull.md
deleted file mode 100644
index 8d499ac5e6..0000000000
--- a/.changeset/tiny-crews-pull.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/cli': patch
----
-
-Deprecated the use of React 16
diff --git a/.changeset/tough-moles-whisper.md b/.changeset/tough-moles-whisper.md
deleted file mode 100644
index 14dd76c116..0000000000
--- a/.changeset/tough-moles-whisper.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/plugin-tech-radar': patch
----
-
-Added the ability to display a timeline to each entry in the details box
diff --git a/.changeset/twelve-birds-boil.md b/.changeset/twelve-birds-boil.md
deleted file mode 100644
index 04317c26cd..0000000000
--- a/.changeset/twelve-birds-boil.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/plugin-adr': minor
----
-
-render SupportButton only if config is set
diff --git a/.changeset/twelve-zebras-repair.md b/.changeset/twelve-zebras-repair.md
deleted file mode 100644
index 8d74080c38..0000000000
--- a/.changeset/twelve-zebras-repair.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/plugin-search-backend': patch
----
-
-Added an OpenAPI 3.0 spec and enforced schema-first model on the router.
diff --git a/.changeset/two-gorillas-drop.md b/.changeset/two-gorillas-drop.md
deleted file mode 100644
index 72de66dbff..0000000000
--- a/.changeset/two-gorillas-drop.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/plugin-explore': patch
----
-
-Updated the example code in the "Customization" section of the README to make the imports match the components used.
diff --git a/.changeset/unlucky-deers-teach.md b/.changeset/unlucky-deers-teach.md
deleted file mode 100644
index b773e9090f..0000000000
--- a/.changeset/unlucky-deers-teach.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-'@backstage/plugin-catalog-backend-module-github': minor
----
-
-Implement events support for `GithubMultiOrgEntityProvider`
-
-**BREAKING:** Passing in a custom `teamTransformer` will now correctly completely override the default transformer behavior
diff --git a/.changeset/unlucky-plants-give.md b/.changeset/unlucky-plants-give.md
deleted file mode 100644
index 504b475727..0000000000
--- a/.changeset/unlucky-plants-give.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/core-components': patch
----
-
-Start capturing sidebar click events in analytics by default.
diff --git a/.changeset/violet-pots-push.md b/.changeset/violet-pots-push.md
new file mode 100644
index 0000000000..f0074ed82e
--- /dev/null
+++ b/.changeset/violet-pots-push.md
@@ -0,0 +1,7 @@
+---
+'@backstage/plugin-stack-overflow': patch
+'@backstage/plugin-home-react': minor
+'@backstage/plugin-home': patch
+---
+
+Extract new plugin-home-react package and deprecate createCardExtension in plugin-home
diff --git a/.changeset/warm-lamps-tease.md b/.changeset/warm-lamps-tease.md
deleted file mode 100644
index 954197dd13..0000000000
--- a/.changeset/warm-lamps-tease.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-'@backstage/plugin-kubernetes-backend': minor
----
-
-Update `aws-sdk` client from v2 to v3.
-
-**BREAKING**: The `AwsIamKubernetesAuthTranslator` class no longer exposes the following methods `awsGetCredentials`, `getBearerToken`, `getCredentials` and `validCredentials`. There is no replacement for these methods.
diff --git a/.changeset/weak-snails-spar.md b/.changeset/weak-snails-spar.md
new file mode 100644
index 0000000000..3cd930d5b0
--- /dev/null
+++ b/.changeset/weak-snails-spar.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-techdocs-addons-test-utils': patch
+---
+
+Avoiding re-running tests on cleanup.
diff --git a/.changeset/weak-snails-spark.md b/.changeset/weak-snails-spark.md
new file mode 100644
index 0000000000..c82626ea39
--- /dev/null
+++ b/.changeset/weak-snails-spark.md
@@ -0,0 +1,5 @@
+---
+'@backstage/test-utils': minor
+---
+
+Test App Wrapper is now using `UnifiedThemeProvider` for supporting MUI v5 next to MUI v4 in tests.
diff --git a/.changeset/weak-snails-sparkl.md b/.changeset/weak-snails-sparkl.md
new file mode 100644
index 0000000000..9bbc7d843b
--- /dev/null
+++ b/.changeset/weak-snails-sparkl.md
@@ -0,0 +1,17 @@
+---
+'@backstage/app-defaults': minor
+'@backstage/theme': minor
+---
+
+**MUI v5 Support:** Adding platform-wide support for MUI v5 allowing a transition phase for migrating central plugins & components over. We still support v4 instances & plugins by adding a
+
+To allow the future support of plugins & components using MUI v5 you want to upgrade your `AppTheme`'s to using the `UnifiedThemeProvider`
+
+```diff
+ Provider: ({ children }) => (
+-
+- {children}
+-
++
+ ),
+```
diff --git a/.changeset/weak-snails-sparkle.md b/.changeset/weak-snails-sparkle.md
new file mode 100644
index 0000000000..95a2255e56
--- /dev/null
+++ b/.changeset/weak-snails-sparkle.md
@@ -0,0 +1,5 @@
+---
+'@backstage/cli': patch
+---
+
+Enforcing MUI v5 specific linting to minimize bundle size.
diff --git a/.changeset/wet-dolphins-love.md b/.changeset/wet-dolphins-love.md
deleted file mode 100644
index 637d26ca70..0000000000
--- a/.changeset/wet-dolphins-love.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/plugin-catalog-backend-module-github': patch
----
-
-Updated the `team.edited` event emitted from `GithubOrgEntityProvider` to also include teams description.
diff --git a/.changeset/yellow-crews-float.md b/.changeset/yellow-crews-float.md
new file mode 100644
index 0000000000..ce3ce84ad7
--- /dev/null
+++ b/.changeset/yellow-crews-float.md
@@ -0,0 +1,11 @@
+---
+'@backstage/plugin-analytics-module-ga4': patch
+'@backstage/plugin-entity-validation': patch
+'@backstage/plugin-devtools-backend': patch
+'@backstage/plugin-linguist-backend': patch
+'@backstage/plugin-techdocs-react': patch
+'@backstage/plugin-dynatrace': patch
+'@backstage/plugin-pagerduty': patch
+---
+
+Update plugin installation docs to be more consistent across documentations
diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index 3880a0facd..7518fbab96 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -56,6 +56,7 @@ yarn.lock @backstage/maintainers @back
/plugins/gcalendar @backstage/maintainers @szubster @ptychu @kielosz @alexrybch
/plugins/git-release-manager @backstage/maintainers @erikengervall
/plugins/home @backstage/discoverability-maintainers
+/plugins/home-* @backstage/discoverability-maintainers
/plugins/ilert @backstage/maintainers @yacut
/plugins/jenkins @backstage/maintainers @timja
/plugins/jenkins-backend @backstage/maintainers @timja
diff --git a/.github/uffizzi/docker-compose.uffizzi.yml b/.github/uffizzi/docker-compose.uffizzi.yml
index 76a7b4eafc..f2e9bbeee6 100644
--- a/.github/uffizzi/docker-compose.uffizzi.yml
+++ b/.github/uffizzi/docker-compose.uffizzi.yml
@@ -14,6 +14,7 @@ services:
POSTGRES_PORT: 5432
POSTGRES_USER: postgres
POSTGRES_PASSWORD: kiTMoTsiEuyQ43GrL4Hv
+ REF_NAME: ${GITHUB_SHA}
NODE_ENV: production
deploy:
resources:
diff --git a/.github/uffizzi/uffizzi.production.app-config.yaml b/.github/uffizzi/uffizzi.production.app-config.yaml
index 30cffa11c9..3b24c20b3d 100644
--- a/.github/uffizzi/uffizzi.production.app-config.yaml
+++ b/.github/uffizzi/uffizzi.production.app-config.yaml
@@ -28,6 +28,7 @@ backend:
credentials: true
csp:
connect-src: ["'self'", 'http:', 'https:']
+ img-src: ["'self'", 'data:', 'https://cdnjs.cloudflare.com']
# Content-Security-Policy directives follow the Helmet format: https://helmetjs.github.io/#reference
# Default Helmet Content-Security-Policy values can be removed by setting the key to false
@@ -41,15 +42,18 @@ auth:
catalog:
locations:
- type: url
- target: https://github.com/backstage/backstage/blob/master/packages/catalog-model/examples/all.yaml
+ target: https://github.com/backstage/backstage/blob/${REF_NAME}/packages/catalog-model/examples/all.yaml
- type: url
- target: https://github.com/backstage/backstage/blob/master/packages/catalog-model/examples/acme-corp.yaml
+ target: https://github.com/backstage/backstage/blob/${REF_NAME}/plugins/techdocs-backend/examples/documented-component-uffizzi/catalog-info.yaml
+
+ - type: url
+ target: https://github.com/backstage/backstage/blob/${REF_NAME}/packages/catalog-model/examples/acme-corp.yaml
rules:
- allow: [User, Group]
- type: url
- target: https://github.com/backstage/backstage/blob/master/plugins/scaffolder-backend/sample-templates/all-templates.yaml
+ target: https://github.com/backstage/backstage/blob/${REF_NAME}/plugins/scaffolder-backend/sample-templates/all-templates.yaml
rules:
- allow: [Template]
@@ -124,7 +128,7 @@ proxy:
techdocs:
builder: 'local' # Alternatives - 'external'
generator:
- runIn: 'docker'
+ runIn: 'local'
# dockerImage: my-org/techdocs # use a custom docker image
# pullImage: true # or false to disable automatic pulling of image (e.g. if custom docker login is required)
publisher:
diff --git a/.github/vale/Vocab/Backstage/accept.txt b/.github/vale/Vocab/Backstage/accept.txt
index f1b9de492c..e9fc74b874 100644
--- a/.github/vale/Vocab/Backstage/accept.txt
+++ b/.github/vale/Vocab/Backstage/accept.txt
@@ -316,6 +316,7 @@ scaffolded
scaffolder
Scaffolder
scrollbar
+sdks
seb
semlas
semver
@@ -343,6 +344,8 @@ stdout
storable
stringified
stringify
+subcommand
+subcommands
subcomponent
subcomponents
subfolder
diff --git a/.github/workflows/uffizzi-build.yml b/.github/workflows/uffizzi-build.yml
index ee629bbafe..1b031f50ad 100644
--- a/.github/workflows/uffizzi-build.yml
+++ b/.github/workflows/uffizzi-build.yml
@@ -81,7 +81,7 @@ jobs:
BACKSTAGE_IMAGE=$(echo ${{ needs.build-backstage.outputs.tags }})
export BACKSTAGE_IMAGE
# Render simple template from environment variables.
- envsubst '$BACKSTAGE_IMAGE' < .github/uffizzi/docker-compose.uffizzi.yml > docker-compose.rendered.yml
+ envsubst '$BACKSTAGE_IMAGE $GITHUB_SHA' < .github/uffizzi/docker-compose.uffizzi.yml > docker-compose.rendered.yml
cat docker-compose.rendered.yml
- name: Upload Rendered Compose File as Artifact
uses: actions/upload-artifact@v3
diff --git a/.github/workflows/verify_e2e-kubernetes.yml b/.github/workflows/verify_e2e-kubernetes.yml
index 6c01999506..87056957f5 100644
--- a/.github/workflows/verify_e2e-kubernetes.yml
+++ b/.github/workflows/verify_e2e-kubernetes.yml
@@ -35,7 +35,7 @@ jobs:
cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }}
- name: bootstrap kind
- uses: helm/kind-action@v1.5.0
+ uses: helm/kind-action@v1.7.0
- name: kubernetes test
working-directory: packages/backend-common
diff --git a/.gitignore b/.gitignore
index f3c687d49c..c0bf195947 100644
--- a/.gitignore
+++ b/.gitignore
@@ -155,4 +155,8 @@ tsconfig.tmp.json
# Lighthouse CI Reports
**/.lighthouseci/*
-!**/.lighthouseci/scripts
\ No newline at end of file
+!**/.lighthouseci/scripts
+
+# VS Code backing up svg files
+*svg.bkp
+*svg.dtmp
\ No newline at end of file
diff --git a/ADOPTERS.md b/ADOPTERS.md
index 7db99119dc..98e156c9d4 100644
--- a/ADOPTERS.md
+++ b/ADOPTERS.md
@@ -14,7 +14,7 @@ _You can do this by using the [Adopter form](https://info.backstage.spotify.com/
| [American Airlines](https://www.aa.com) | [@paulpach](https://github.com/paulpach) | Central place for developers to develop and maintain applications |
| [Kiwi.com](https://kiwi.com) | [@aexvir](https://github.com/aexvir) | Replacing the frontend of [The Zoo](https://github.com/kiwicom/the-zoo), their service registry. |
| [Voi](https://www.voiscooters.com/) | [@K-Phoen](https://github.com/K-Phoen) | Developer portal, main gateway to our infrastructure, documentation and internal tooling. |
-| [Talkdesk](https://www.talkdesk.com) | [@jaime-talkdesk](https://github.com/jaime-talkdesk) | Initial work for Engineering Portal and Self Provisioning to R&D |
+| [Talkdesk](https://www.talkdesk.com) | [@atmcarmo](https://github.com/atmcarmo) | Engineering Portal with all of our apps and services, overview about our deployment regions and scaffolding new services. |
| [Wealthsimple](https://www.wealthsimple.com) | [@andrewthauer](https://github.com/andrewthauer) | Developer portal, service catalog, documentation and tooling |
| [Grab](https://www.grab.com) | [@althafh](https://github.com/althafh) | Initial work as a unified interface for all of Grab's internal tooling |
| [Telenor Sweden](https://www.telenor.se) | [@O5ten](https://github.com/O5ten) | Building a developer portal for scaffolding projects towards our unified build environment and microservice stacks |
@@ -247,3 +247,5 @@ _You can do this by using the [Adopter form](https://info.backstage.spotify.com/
| [Mercantil Andina](https://www.mercantilandina.com.ar/) | [Sebastian Paredero](https://www.linkedin.com/in/sebastian-paredero/), [Matias Javier Gomez](https://www.linkedin.com/in/matias-javier-gomez-140540a3/), [Gustavo Wilgenhoff](https://github.com/wilgustavo) | Developer portal: documentation, service templates, org structure, service catalog, plugins for integration with internal systems. |
| [Livelo](https://www.livelo.com.br) | [Felipe Nardon](https://www.linkedin.com/in/felipe-nardon-dos-santos/), [Yves Galvão](https://www.linkedin.com/in/yvesgalvao/), [Isaque Rocha](https://www.linkedin.com/in/isaque-rocha/) | Internal platform that aims to reduce the teams' cognitive load through self-service, abstracting processes that are now part of the teams' daily lives, enabling a centralized management of documentation, catalog, metrics and knowledge. |
| [Worten](https://www.worten.pt) | [@elisiariocouto](https://github.com/elisiariocouto) | We are proud to be an adopter of Backstage. Our goal is to make our Backstage installation the go-to location for every developer. To achieve this, we developed a custom plugin to populate Backstage's catalog with information from our internal deployment tool. As a result, we now have full visibility of all Worten systems, components, APIs, messaging topics, and documentation. We also migrated the internal deployment tool's Web UI to Backstage. Currently, we are working on Backstage's Software Templates feature. |
+| [Inventa](https://www.inventa.shop) | [João Munhoz](https://github.com/joaovitormunhoz), [Lucca Fonte](https://github.com/luccafonte) | We use Backstage at Inventa to share knowledge between squads, in the form of technical documentation, API contracts, and service status/ownership info, fomenting a self-service and scalable engineering culture. We also developed a plugin that allows us to have a centralized view of all the engineering tools we have for each environment, making it easy to access each one of our tools and increasing productivity. |
+| [PITS Global Data Recovery Services](https://www.pitsdatarecovery.net/) | [@pheianox](https://github.com/pheianox) | The internal developer portal seeks to combine infrastructure tooling, services, and developer documentation into a single, user-friendly interface. By streamlining these components, the portal enhances productivity and simplifies the development process for the internal team. |
diff --git a/contrib/docs/tutorials/authenticate-api-requests.md b/contrib/docs/tutorials/authenticate-api-requests.md
index 49b6ae0a4d..c14eaebb54 100644
--- a/contrib/docs/tutorials/authenticate-api-requests.md
+++ b/contrib/docs/tutorials/authenticate-api-requests.md
@@ -82,10 +82,20 @@ export const createAuthMiddleware = async (
};
```
+Install cookie-parser:
+
+```bash
+# From your Backstage root directory
+yarn add --cwd packages/backend cookie-parser
+```
+
+Update routes in `packages/backend/src/index.ts`:
+
```typescript
// packages/backend/src/index.ts from a create-app deployment
import { createAuthMiddleware } from './authMiddleware';
+import cookieParser from 'cookie-parser';
// ...
diff --git a/docs/assets/software-catalog/entity.drawio.svg b/docs/assets/software-catalog/entity.drawio.svg
new file mode 100644
index 0000000000..557d037ecd
--- /dev/null
+++ b/docs/assets/software-catalog/entity.drawio.svg
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/docs/features/software-catalog/creating-the-catalog-graph.md b/docs/features/software-catalog/creating-the-catalog-graph.md
new file mode 100644
index 0000000000..8b0f21a52c
--- /dev/null
+++ b/docs/features/software-catalog/creating-the-catalog-graph.md
@@ -0,0 +1,98 @@
+# Creating the Catalog Graph
+
+## Overview
+
+The Software Catalog in Backstage is intended to capture human mental models using entities and their relationships rather than an exhaustive inventory of all possible things. The focus is on attaching functionality and views centered around these entities. Determining the "edge" where the catalog ends and the external world begins is crucial to ensure that the catalog's scope is appropriate.
+The Backstage software catalog serves as a centralized hub for organizing and discovering software components and services. While it excels at providing a high-level overview of these concepts, it may not be the ideal solution for tracking dynamic relationships between components and services in real-time. You can achieve real time views by attaching appropriate tooling to the nodes in the graph through [annotations](https://backstage.io/docs/features/software-catalog/well-known-annotations) and developing custom front-end [plugins](http://localhost:3000/docs/plugins/) that display deployment information and other real-time data.
+It is worth noting that the Backstage Software Catalog should not be considered the ultimate source of truth, instead, it is advisable to use the Backstage Catalog as a caching mechanism that utilizes a REST API to convey information to the catalog UI and other Backstage plugins. Adopting a GitOps approach is recommended to modify YAML files in Backstage, treating YAML files in repositories as the primary source of truth and using Scaffolder to make changes via the UI and generate a pull request in the repository with the updated changes.
+
+### Descriptor Components used to build the Catalog Graph
+
+[**Entities:**](https://backstage.io/docs/features/software-catalog/system-model) An entity refers to a node in the graph that represents a distinct object, concept, or thing. Nodes are the fundamental building blocks of a graph database and are used to represent entities and their properties.
+
+
+
+[**Kinds:**](https://backstage.io/docs/features/software-catalog/descriptor-format#contents) These are broad categories used to group related entities. Kinds are used to provide a high-level categorization of entities, such as "service", "database", or "team". Kinds are often used to provide a way to filter entities in the catalog and to provide a high-level overview of the types of entities that are being managed.
+
+[**Relations:**](https://backstage.io/docs/features/software-catalog/descriptor-format#common-to-all-kinds-relations) These are links between different entities in the catalog. Relations express the relationships between different entities, such as dependencies or ownership. Adopters can use relations to help users navigate the catalog and understand the relationships between different entities.
+
+[**Spec:**](https://backstage.io/docs/features/software-catalog/descriptor-format#spec-varies) A specification or "spec" is a schema that outlines the data structure of an entity in the Backstage catalog. It defines the properties, relationships, data types, and constraints for an entity, ensuring consistency and accuracy of data while allowing for easy sharing and consumption of data across components and plugins. Specs are useful when creating or extending entities and can help make data more reusable and interoperable. The spec section is fully customizable, and users can create their own components and plugins to render the information.
+
+[**Types:**](https://backstage.io/docs/features/software-catalog/system-model#type) These are more specific categories used to classify entities within a given Kind. Types provide a more granular categorization of entities, such as "frontend-service" or "backend-service.". Types are often used to provide additional context and information about an entity and to help users understand the role and function of the entity within the broader system.
+
+[**Annotations:**](https://backstage.io/docs/features/software-catalog/well-known-annotations) These key-value pairs can be attached to an entity in the catalog. They are typically used to add additional information or metadata to an entity. Annotations are often used to provide information that is used by automated tools or scripts and to provide further context to humans working with the entity or refer plugins to the external world.
+
+## Use cases out of the box
+
+The catalog builds a graph using [descriptors](https://backstage.io/docs/features/software-catalog/descriptor-format) as nodes and [relations](https://backstage.io/docs/features/software-catalog/descriptor-format#common-to-all-kinds-relations) as edges. Out of the box you get the following use cases:
+
+- Ownership tracking
+- Inventory
+- Search
+- Lifecycle tracking
+- Tracking of real-time information sources
+- Dependency mapping
+- API exposure
+
+## Tracking Assets
+
+The recommended approach would be to represent information in catalog-info files, which the users themselves can manage. While automated classification based on repository contents can be helpful, it is recommended to use it only to generate the initial file and then allow humans to maintain it manually. The reason is that automation can sometimes fail, and it is essential to ensure the accuracy and reliability of this metadata. In short, humans should govern this piece of metadata to maintain its integrity.
+
+### Well-known trackable assets
+
+**Components**
+
+- Services
+- Websites
+- Libraries
+- Data Pipelines
+- Machine Learning Models
+- Third-party software components: It is recommended to have a separate repo for all 3d party catalog-info files.
+- Jira installation
+- Pagerduty
+
+**Resources**
+
+- Physical resources: This is probably more useful for longer-lived ones (For example servers).
+- Cloud Infrastructure services
+
+**Ownership - users - groups by**
+
+- Business units
+- Team
+- Product area
+
+**Naming strategies:**
+
+- Ldap: Internal ldap usernames as entity names. e.g., owner: user:myuser or user: my-team-name.
+
+**Ownership strategies:**
+
+**Ownership based on teams:** The concept of ownership in the system is team-centric; hence, the "owner" field must reference the LDAP name of a squad according to a prescribed set of regulations. While there may be instances where the ownership is attributed to an individual, such deviations might create challenges. In such cases, the user could receive a notification through the web interface, highlighting that this departure is an exception and needs rectification. To ensure adherence to this system, every entity in the model should have a designated owner, preferably a valid team within the LDAP hierarchy.
+
+**Ownership of features:** To track the ownership of specific features within your products and their interrelationships, two options are available: introducing a new component [type](https://backstage.io/docs/features/software-catalog/system-model/#type), such as "feature," or creating a new [Kind](https://backstage.io/docs/features/software-catalog/descriptor-format/#contents) altogether. Nonetheless, it is advisable to choose the former approach and introduce a new type, like "feature," is advisable as it is less complicated and poses a lower risk.
+
+**LDAP doesn’t reflect the organization structure:** If Workday or a similar system serves as the source of truth, and LDAP is utilized for user attributes, it is advisable to develop a layer on top of various systems to establish a unified API that the entire organization can query, rather than only Backstage.
+
+**APIs**
+
+- OpenApi
+- AsyncApi
+- graphQL
+- gRPC
+
+APIs Could list networked services or libraries and it’s particularly useful to identify APIs that form boundaries between systems. There are some considerations to keep in mind:
+
+**API versions:** Major API versions can be treated as distinct APIs, and it is possible to create separate entity instances for each (e.g., metadata.name: my-api-v1 and metadata.name: my-api-v2). However, this approach is not recommended for minor or patch-level variations
+
+**Detail:** It’s not recommended going too granular because the catalog in its current form won't perhaps be a great platform to express it.
+
+**Relationships between APIs:** The idea is that you have a service component that exposes an api and then, it's not the api that consumes the other api, it's the component that consumes the other api.
+
+**Backend for front end API (BFF):** The suggestion is to create separate components for the frontend and backend services, with the frontend component having a type of "website" and the backend component having a type of "service". This is because the BFF API is tailored for a specific UI and is not meant to be used by others, making it unnecessary to include in the catalog.
+
+**API registry:** The exploration of all APIs within an organization is a typical use case for an API registry.
+
+## Reference models
+
+**C4 model:** For inspiration, you could review the [C4 model](https://c4model.com/), which defines a pattern for visualizing software architecture.
diff --git a/docs/getting-started/configuration.md b/docs/getting-started/configuration.md
index 2196a1a36d..87995746d8 100644
--- a/docs/getting-started/configuration.md
+++ b/docs/getting-started/configuration.md
@@ -243,6 +243,8 @@ integrations:
token: ${GITHUB_TOKEN} # this will use the environment variable GITHUB_TOKEN
```
+> Note: If you've updated the configuration for your integration, it's likely that the backend will need a restart to apply these changes. To do this, stop the running instance in your terminal with `Control-C`, then start it again with `yarn dev`. Once the backend has restarted, retry the operation.
+
Some helpful links, for if you want to learn more about:
- [Other available integrations](../integrations/)
diff --git a/docs/integrations/github/discovery.md b/docs/integrations/github/discovery.md
index 7f6cc057cd..f01085dd86 100644
--- a/docs/integrations/github/discovery.md
+++ b/docs/integrations/github/discovery.md
@@ -263,8 +263,7 @@ package, plus `@backstage/integration` for the basic credentials management:
```bash
# From your Backstage root directory
-yarn add --cwd packages/backend @backstage/integration
-yarn add --cwd packages/backend @backstage/plugin-catalog-backend-module-github
+yarn add --cwd packages/backend @backstage/integration @backstage/plugin-catalog-backend-module-github
```
And then add the processors to your catalog builder:
diff --git a/docs/local-dev/cli-build-system.md b/docs/local-dev/cli-build-system.md
index a5df84f8dc..61e94e9ef4 100644
--- a/docs/local-dev/cli-build-system.md
+++ b/docs/local-dev/cli-build-system.md
@@ -165,16 +165,17 @@ module.exports = require('@backstage/cli/config/eslint-factory')(__dirname, {
The configuration factory also provides utilities for extending the configuration in ways that are otherwise very cumbersome to do with plain ESLint, particularly for rules like `no-restricted-syntax`. These are the extra keys that are available:
-| Key | Description |
-| ----------------------- | ------------------------------------------------------------------ |
-| `tsRules` | Additional rules to apply to TypeScript files |
-| `testRules` | Additional rules to apply to tests files |
-| `restrictedImports` | Additional paths to add to `no-restricted-imports` |
-| `restrictedSrcImports` | Additional paths to add to `no-restricted-imports` in src files |
-| `restrictedTestImports` | Additional paths to add to `no-restricted-imports` in test files |
-| `restrictedSyntax` | Additional patterns to add to `no-restricted-syntax` |
-| `restrictedSrcSyntax` | Additional patterns to add to `no-restricted-syntax` in src files |
-| `restrictedTestSyntax` | Additional patterns to add to `no-restricted-syntax` in test files |
+| Key | Description |
+| -------------------------- | ------------------------------------------------------------------ |
+| `tsRules` | Additional rules to apply to TypeScript files |
+| `testRules` | Additional rules to apply to tests files |
+| `restrictedImports` | Additional paths to add to `no-restricted-imports` |
+| `restrictedImportPatterns` | Additional patterns to add to `no-restricted-imports` |
+| `restrictedSrcImports` | Additional paths to add to `no-restricted-imports` in src files |
+| `restrictedTestImports` | Additional paths to add to `no-restricted-imports` in test files |
+| `restrictedSyntax` | Additional patterns to add to `no-restricted-syntax` |
+| `restrictedSrcSyntax` | Additional patterns to add to `no-restricted-syntax` in src files |
+| `restrictedTestSyntax` | Additional patterns to add to `no-restricted-syntax` in test files |
## Type Checking
diff --git a/docs/permissions/getting-started.md b/docs/permissions/getting-started.md
index 8cb6dd953e..01a268f7ef 100644
--- a/docs/permissions/getting-started.md
+++ b/docs/permissions/getting-started.md
@@ -48,7 +48,7 @@ The permissions framework uses a new `permission-backend` plugin to accept autho
```bash
# From your Backstage root directory
- $ yarn add --cwd packages/backend @backstage/plugin-permission-backend
+ yarn add --cwd packages/backend @backstage/plugin-permission-backend
```
2. Add the following to a new file, `packages/backend/src/plugins/permission.ts`. This adds the permission-backend router, and configures it with a policy which allows everything.
diff --git a/docs/permissions/plugin-authors/01-setup.md b/docs/permissions/plugin-authors/01-setup.md
index 6827096900..8134fc0c39 100644
--- a/docs/permissions/plugin-authors/01-setup.md
+++ b/docs/permissions/plugin-authors/01-setup.md
@@ -41,8 +41,8 @@ The source code is available here:
```sh
# From your Backstage root directory
- $ yarn add --cwd packages/backend @internal/plugin-todo-list-backend @internal/plugin-todo-list-common
- $ yarn add --cwd packages/app @internal/plugin-todo-list
+ yarn add --cwd packages/backend @internal/plugin-todo-list-backend @internal/plugin-todo-list-common
+ yarn add --cwd packages/app @internal/plugin-todo-list
```
3. Include the backend and frontend plugin in your application:
diff --git a/docs/releases/v1.13.0-changelog.md b/docs/releases/v1.13.0-changelog.md
index 823ff337bc..506800eb38 100644
--- a/docs/releases/v1.13.0-changelog.md
+++ b/docs/releases/v1.13.0-changelog.md
@@ -4,7 +4,7 @@
### Minor Changes
-- 7908d72e033: Introduce a new global config parameter, `auth.enableExperimentalRedirectFlow`. When enabled, auth will happen with an in-window redirect flow rather than through a popup window.
+- 7908d72e033: Introduce a new global config parameter, `enableExperimentalRedirectFlow`. When enabled, auth will happen with an in-window redirect flow rather than through a popup window.
### Patch Changes
@@ -61,7 +61,7 @@
### Minor Changes
-- 7908d72e033: Introduce a new global config parameter, `auth.enableExperimentalRedirectFlow`. When enabled, auth will happen with an in-window redirect flow rather than through a popup window.
+- 7908d72e033: Introduce a new global config parameter, `enableExperimentalRedirectFlow`. When enabled, auth will happen with an in-window redirect flow rather than through a popup window.
- c15e0cedbe1: The `AuthConnector` interface now supports specifying a set of scopes when
refreshing a session. The `DefaultAuthConnector` implementation passes the
`scope` query parameter to the auth-backend plugin appropriately. The
@@ -106,7 +106,7 @@
- 67140d9f96f: Upgrade `react-virtualized-auto-sizer´ to version `^1.0.11\`
- 6e0b71493df: Switched internal declaration of `DependencyGraphTypes` to use `namespace`.
- c8779cc1d09: Updated `LogLine` component, which is used by the `LogViewer`, to turn URLs into clickable links. This feature is on by default
-- 7908d72e033: Introduce a new global config parameter, `auth.enableExperimentalRedirectFlow`. When enabled, auth will happen with an in-window redirect flow rather than through a popup window.
+- 7908d72e033: Introduce a new global config parameter, `enableExperimentalRedirectFlow`. When enabled, auth will happen with an in-window redirect flow rather than through a popup window.
- 1e4f5e91b8e: Bump `zod` and `zod-to-json-schema` dependencies.
- 29ba8267d69: Updated dependency `@material-ui/lab` to `4.0.0-alpha.61`.
- 8e00acb28db: Small tweaks to remove warnings in the console during development (mainly focusing on techdocs)
@@ -170,7 +170,7 @@
### Minor Changes
-- 7908d72e033: Introduce a new global config parameter, `auth.enableExperimentalRedirectFlow`. When enabled, auth will happen with an in-window redirect flow rather than through a popup window.
+- 7908d72e033: Introduce a new global config parameter, `enableExperimentalRedirectFlow`. When enabled, auth will happen with an in-window redirect flow rather than through a popup window.
### Patch Changes
@@ -1245,7 +1245,7 @@
- d8f774c30df: Enforce the secret visibility of certificates and client secrets in the auth backend. Also, document all known options for each auth plugin.
-- 7908d72e033: Introduce a new global config parameter, `auth.enableExperimentalRedirectFlow`. When enabled, auth will happen with an in-window redirect flow rather than through a popup window.
+- 7908d72e033: Introduce a new global config parameter, `enableExperimentalRedirectFlow`. When enabled, auth will happen with an in-window redirect flow rather than through a popup window.
- 475abd1dc3f: The `microsoft` (i.e. Azure) auth provider now supports negotiating tokens for
Azure resources besides Microsoft Graph (e.g. AKS, Virtual Machines, Machine
diff --git a/docs/releases/v1.13.0-next.0-changelog.md b/docs/releases/v1.13.0-next.0-changelog.md
index 3075d80f61..7de0a370f9 100644
--- a/docs/releases/v1.13.0-next.0-changelog.md
+++ b/docs/releases/v1.13.0-next.0-changelog.md
@@ -4,7 +4,7 @@
### Minor Changes
-- 7908d72e033: Introduce a new global config parameter, `auth.enableExperimentalRedirectFlow`. When enabled, auth will happen with an in-window redirect flow rather than through a popup window.
+- 7908d72e033: Introduce a new global config parameter, `enableExperimentalRedirectFlow`. When enabled, auth will happen with an in-window redirect flow rather than through a popup window.
### Patch Changes
@@ -19,7 +19,7 @@
### Minor Changes
-- 7908d72e033: Introduce a new global config parameter, `auth.enableExperimentalRedirectFlow`. When enabled, auth will happen with an in-window redirect flow rather than through a popup window.
+- 7908d72e033: Introduce a new global config parameter, `enableExperimentalRedirectFlow`. When enabled, auth will happen with an in-window redirect flow rather than through a popup window.
### Patch Changes
@@ -33,7 +33,7 @@
### Minor Changes
-- 7908d72e033: Introduce a new global config parameter, `auth.enableExperimentalRedirectFlow`. When enabled, auth will happen with an in-window redirect flow rather than through a popup window.
+- 7908d72e033: Introduce a new global config parameter, `enableExperimentalRedirectFlow`. When enabled, auth will happen with an in-window redirect flow rather than through a popup window.
### Patch Changes
@@ -336,7 +336,7 @@
### Patch Changes
-- 7908d72e033: Introduce a new global config parameter, `auth.enableExperimentalRedirectFlow`. When enabled, auth will happen with an in-window redirect flow rather than through a popup window.
+- 7908d72e033: Introduce a new global config parameter, `enableExperimentalRedirectFlow`. When enabled, auth will happen with an in-window redirect flow rather than through a popup window.
- 8e00acb28db: Small tweaks to remove warnings in the console during development (mainly focusing on techdocs)
- 7245e744ab1: Fixed the font color on `BackstageHeaderLabel` to respect the active page theme.
- Updated dependencies
@@ -530,7 +530,7 @@
### Patch Changes
- d8f774c30df: Enforce the secret visibility of certificates and client secrets in the auth backend. Also, document all known options for each auth plugin.
-- 7908d72e033: Introduce a new global config parameter, `auth.enableExperimentalRedirectFlow`. When enabled, auth will happen with an in-window redirect flow rather than through a popup window.
+- 7908d72e033: Introduce a new global config parameter, `enableExperimentalRedirectFlow`. When enabled, auth will happen with an in-window redirect flow rather than through a popup window.
- Updated dependencies
- @backstage/backend-common@0.18.4-next.0
- @backstage/config@1.0.7
diff --git a/docs/releases/v1.13.0.md b/docs/releases/v1.13.0.md
index 99253ac3d2..c8803453d4 100644
--- a/docs/releases/v1.13.0.md
+++ b/docs/releases/v1.13.0.md
@@ -86,7 +86,7 @@ Contributed by [@sennyeya](https://github.com/sennyeya) in [#15667](https://gith
### Experimental inline auth flows
-There’s new support for running auth flows inline in the current page instead of in a separate popup window, enabled via the `auth.enableExperimentalRedirectFlow` app-config parameter. This will allow the use of some providers that do not support popup flows. It’s still an experimental feature, but do try it out if this applies to you!
+There’s new support for running auth flows inline in the current page instead of in a separate popup window, enabled via the `enableExperimentalRedirectFlow` app-config parameter. This will allow the use of some providers that do not support popup flows. It’s still an experimental feature, but do try it out if this applies to you!
Contributed by [@headphonejames](https://github.com/headphonejames) in [#15841](https://github.com/backstage/backstage/pull/15841)
diff --git a/docs/releases/v1.14.0-changelog.md b/docs/releases/v1.14.0-changelog.md
new file mode 100644
index 0000000000..eae0d82e71
--- /dev/null
+++ b/docs/releases/v1.14.0-changelog.md
@@ -0,0 +1,2795 @@
+# Release v1.14.0
+
+## @backstage/config-loader@1.3.0
+
+### Minor Changes
+
+- 201206132da: Introduced a new config source system to replace `loadConfig`. There is a new `ConfigSource` interface along with utilities provided by `ConfigSources`, as well as a number of built-in configuration source implementations. The new system is more flexible and makes it easier to create new and reusable sources of configuration, such as loading configuration from secret providers.
+
+ The following is an example of how to load configuration using the default behavior:
+
+ ```ts
+ const source = ConfigSources.default({
+ argv: options?.argv,
+ remote: options?.remote,
+ });
+ const config = await ConfigSources.toConfig(source);
+ ```
+
+ The `ConfigSource` interface looks like this:
+
+ ```ts
+ export interface ConfigSource {
+ readConfigData(options?: ReadConfigDataOptions): AsyncConfigSourceIterator;
+ }
+ ```
+
+ It is best implemented using an async iterator:
+
+ ```ts
+ class MyConfigSource implements ConfigSource {
+ async *readConfigData() {
+ yield {
+ config: [
+ {
+ context: 'example',
+ data: { backend: { baseUrl: 'http://localhost' } },
+ },
+ ],
+ };
+ }
+ }
+ ```
+
+### Patch Changes
+
+- 7c116bcac7f: Fixed the way that some request errors are thrown
+- 473db605a4f: Added a new `noUndeclaredProperties` option to `SchemaLoader` to support enforcing that there are no extra keys when verifying config.
+- Updated dependencies
+ - @backstage/cli-common@0.1.12
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+ - @backstage/types@1.0.2
+
+## @backstage/core-app-api@1.8.0
+
+### Minor Changes
+
+- c89437db899: The analytics' `navigate` event will now include the route parameters as attributes of the navigate event
+
+### Patch Changes
+
+- b645d70034a: Fixed a bug in the Azure auth provider which prevented getting access tokens with multiple scopes for one resource
+- 42d817e76ab: Added `FrontendHostDiscovery` for config driven discovery implementation
+- Updated dependencies
+ - @backstage/config@1.0.7
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/types@1.0.2
+ - @backstage/version-bridge@1.0.4
+
+## @backstage/repo-tools@0.3.0
+
+### Minor Changes
+
+- 799c33047ed: **BREAKING**: The OpenAPI commands are now found within the `schema openapi` sub-command. For example `yarn backstage-repo-tools schema:openapi:verify` is now `yarn backstage-repo-tools schema openapi verify`.
+- 27956d78671: Generated OpenAPI files now have a `.generated.ts` file name and a warning header at the top, to highlight that they should not be edited by hand.
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/cli-common@0.1.12
+ - @backstage/cli-node@0.1.0
+ - @backstage/errors@1.1.5
+
+## @backstage/theme@0.3.0
+
+### Minor Changes
+
+- 98c0c199b15: Updates light theme's primary foreground and `running` status indicator colours to meet WCAG. Previously #2E77D0 changed to #1F5493.
+
+### Patch Changes
+
+- 83b45f9df50: Fix accessibility issue with Backstage Table's header style
+
+## @backstage/plugin-adr@0.6.0
+
+### Minor Changes
+
+- b12cd5dc221: render SupportButton only if config is set
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/plugin-search-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/integration-react@1.1.13
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/plugin-adr-common@0.2.9
+ - @backstage/plugin-search-common@1.2.3
+
+## @backstage/plugin-analytics-module-ga4@0.1.0
+
+### Minor Changes
+
+- 22b46f7f562: Plugin provides Backstage Analytics API for Google Analytics 4. Once installed and configured, analytics events will be sent to GA4 as your users navigate and use your Backstage instance
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/core-components@0.13.1
+ - @backstage/config@1.0.7
+ - @backstage/core-plugin-api@1.5.1
+
+## @backstage/plugin-azure-devops@0.3.0
+
+### Minor Changes
+
+- 877df261085: The getBuildRuns function now checks contains multiple comma-separated builds and splits them to send multiple requests for each and concatenates the results.
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+ - @backstage/plugin-azure-devops-common@0.3.0
+
+## @backstage/plugin-badges-backend@0.2.0
+
+### Minor Changes
+
+- a0108c49774: Fixing badges-backend plugin to get a token from the TokenManager instead of parsing the request header. Hence, it's now possible to disable the authMiddleware for the badges-backend plugin to expose publicly the badges.
+
+ Implementing an obfuscation feature to protect an open badges endpoint from being enumerated. The feature is disabled by default and the change is compatible with the previous version.
+
+ **BREAKING**: `createRouter` now require that `tokenManager`, `logger`, and `identityApi`, are passed in as options.
+
+### Patch Changes
+
+- 0cd552c28d8: Removed some unused dependencies
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/plugin-auth-node@0.2.14
+ - @backstage/catalog-client@1.4.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+
+## @backstage/plugin-catalog@1.11.0
+
+### Minor Changes
+
+- 2258dcae970: Added an entity namespace filter and column on the default catalog page.
+
+ If you have a custom version of the catalog page, you can add this filter in your CatalogPage code:
+
+ ```ts
+
+
+
+
+
+ /* if you want namespace picker */
+
+
+
+
+
+
+ ```
+
+ The namespace column can be added using `createNamespaceColumn();`. This is only needed if you customized the columns for CatalogTable.
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/plugin-search-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/integration-react@1.1.13
+ - @backstage/catalog-client@1.4.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+ - @backstage/types@1.0.2
+ - @backstage/plugin-catalog-common@1.0.13
+ - @backstage/plugin-search-common@1.2.3
+
+## @backstage/plugin-catalog-backend-module-aws@0.2.0
+
+### Minor Changes
+
+- 1a3b5f1e390: **BREAKING**: AwsOrganizationCloudAccountProcessor.fromConfig now returns a promise instead of the instance directly.
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/integration@1.4.5
+ - @backstage/integration-aws-node@0.1.3
+ - @backstage/plugin-kubernetes-common@0.6.3
+ - @backstage/backend-tasks@0.5.2
+ - @backstage/plugin-catalog-node@1.3.6
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+ - @backstage/types@1.0.2
+ - @backstage/plugin-catalog-common@1.0.13
+
+## @backstage/plugin-catalog-backend-module-github@0.3.0
+
+### Minor Changes
+
+- 970678adbe2: Implement events support for `GithubMultiOrgEntityProvider`
+
+ **BREAKING:** Passing in a custom `teamTransformer` will now correctly completely override the default transformer behavior
+
+### Patch Changes
+
+- 78bb674a713: Fixed bug in queryWithPaging that caused secondary rate limit errors in GitHub with organizations having more than 1000 repositories. This change makes one request per second to avoid concurrency issues.
+- bd101cefd37: Updated the `team.edited` event emitted from `GithubOrgEntityProvider` to also include teams description.
+- Updated dependencies
+ - @backstage/plugin-catalog-backend@1.9.1
+ - @backstage/backend-common@0.18.5
+ - @backstage/integration@1.4.5
+ - @backstage/backend-tasks@0.5.2
+ - @backstage/plugin-catalog-node@1.3.6
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/catalog-client@1.4.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+ - @backstage/types@1.0.2
+ - @backstage/plugin-catalog-common@1.0.13
+ - @backstage/plugin-events-node@0.2.6
+
+## @backstage/plugin-catalog-react@1.6.0
+
+### Minor Changes
+
+- 2258dcae970: Added an entity namespace filter and column on the default catalog page.
+
+ If you have a custom version of the catalog page, you can add this filter in your CatalogPage code:
+
+ ```ts
+
+
+
+
+
+ /* if you want namespace picker */
+
+
+
+
+
+
+ ```
+
+ The namespace column can be added using `createNamespaceColumn();`. This is only needed if you customized the columns for CatalogTable.
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/integration@1.4.5
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-client@1.4.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+ - @backstage/types@1.0.2
+ - @backstage/version-bridge@1.0.4
+ - @backstage/plugin-catalog-common@1.0.13
+ - @backstage/plugin-permission-common@0.7.5
+ - @backstage/plugin-permission-react@0.4.12
+
+## @backstage/plugin-devtools@0.1.0
+
+### Minor Changes
+
+- 347aeca204c: Introduced the DevTools plugin, checkout the plugin's [`README.md`](https://github.com/backstage/backstage/tree/master/plugins/devtools) for more details!
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-devtools-common@0.1.0
+ - @backstage/theme@0.3.0
+ - @backstage/core-components@0.13.1
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+ - @backstage/types@1.0.2
+ - @backstage/plugin-permission-react@0.4.12
+
+## @backstage/plugin-devtools-backend@0.1.0
+
+### Minor Changes
+
+- 347aeca204c: Introduced the DevTools plugin, checkout the plugin's [`README.md`](https://github.com/backstage/backstage/tree/master/plugins/devtools) for more details!
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-devtools-common@0.1.0
+ - @backstage/backend-common@0.18.5
+ - @backstage/config-loader@1.3.0
+ - @backstage/plugin-permission-node@0.7.8
+ - @backstage/plugin-auth-node@0.2.14
+ - @backstage/cli-common@0.1.12
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+ - @backstage/types@1.0.2
+ - @backstage/plugin-permission-common@0.7.5
+
+## @backstage/plugin-devtools-common@0.1.0
+
+### Minor Changes
+
+- 347aeca204c: Introduced the DevTools plugin, checkout the plugin's [`README.md`](https://github.com/backstage/backstage/tree/master/plugins/devtools) for more details!
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/types@1.0.2
+ - @backstage/plugin-permission-common@0.7.5
+
+## @backstage/plugin-events-backend-module-aws-sqs@0.2.0
+
+### Minor Changes
+
+- 2c5661f3899: Allow endpoint configuration for sqs, enabling use of localstack for testing.
+
+### Patch Changes
+
+- 3659c71c5d9: Standardize `@aws-sdk` v3 versions
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/backend-tasks@0.5.2
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/config@1.0.7
+ - @backstage/types@1.0.2
+ - @backstage/plugin-events-node@0.2.6
+
+## @backstage/plugin-jenkins@0.8.0
+
+### Minor Changes
+
+- cf95c5137c9: Updated rebuild to use Jenkins API replay build, which works for Jenkins jobs that have required parameters. Jenkins SDK could not be used for this request because it does not have support for replay.
+
+ Added link to view build in Jenkins CI/CD table action column.
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+ - @backstage/plugin-jenkins-common@0.1.15
+
+## @backstage/plugin-jenkins-backend@0.2.0
+
+### Minor Changes
+
+- cf95c5137c9: Updated rebuild to use Jenkins API replay build, which works for Jenkins jobs that have required parameters. Jenkins SDK could not be used for this request because it does not have support for replay.
+
+ Added link to view build in Jenkins CI/CD table action column.
+
+### Patch Changes
+
+- 670a2dd6f4e: Fix handling of slashes in branch names
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/plugin-auth-node@0.2.14
+ - @backstage/catalog-client@1.4.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+ - @backstage/plugin-jenkins-common@0.1.15
+ - @backstage/plugin-permission-common@0.7.5
+
+## @backstage/plugin-kubernetes@0.9.0
+
+### Minor Changes
+
+- 280ec10c18e: Added Pod logs components for Kubernetes plugin
+
+ **BREAKING**: `kubernetesProxyApi` for custom plugins built with components from the Kubernetes plugin apis, `kubernetesProxyApi` should be added to the plugin's API list.
+
+ ...
+ export const kubernetesPlugin = createPlugin({
+ id: 'kubernetes',
+ apis: [
+ ...
+ createApiFactory({
+ api: kubernetesProxyApiRef,
+ deps: {
+ kubernetesApi: kubernetesApiRef,
+ },
+ factory: ({ kubernetesApi }) =>
+ new KubernetesProxyClient({
+ kubernetesApi,
+ }),
+ }),
+
+ **BREAKING**: `KubernetesDrawer` is now called `KubernetesStructuredMetadataTableDrawer` so that we can do more than just show `StructuredMetadataTable`
+
+ `import { KubernetesDrawer } from "@backstage/plugin-kubernetes"`
+
+ should now be:
+
+ `import { KubernetesStructuredMetadataTableDrawer } from "@backstage/plugin-kubernetes"`
+
+### Patch Changes
+
+- c7bad1005ba: The Kubernetes plugin now requests AKS access tokens from Azure when retrieving
+ objects from clusters configured with `authProvider: aks` and sets `auth.aks` in
+ its request bodies appropriately.
+- a160e02c3d7: Omit managed fields in the Kubernetes resource YAML display.
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/plugin-kubernetes-common@0.6.3
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+
+## @backstage/plugin-kubernetes-backend@0.11.0
+
+### Minor Changes
+
+- f4114f02d49: Allow fetching pod metrics limited by a `labelSelector`.
+
+ This is used by the Kubernetes tab on a components' page and leads to much smaller responses being received from Kubernetes, especially with larger Kubernetes clusters.
+
+- 890988341e9: Update `aws-sdk` client from v2 to v3.
+
+ **BREAKING**: The `AwsIamKubernetesAuthTranslator` class no longer exposes the following methods `awsGetCredentials`, `getBearerToken`, `getCredentials` and `validCredentials`. There is no replacement for these methods.
+
+### Patch Changes
+
+- 05f1d74539d: Kubernetes clusters now support `authProvider: aks`. When configured this way,
+ the `retrieveObjectsByServiceId` action will use the `auth.aks` value in the
+ request body as a bearer token to authenticate with Kubernetes.
+- 3659c71c5d9: Standardize `@aws-sdk` v3 versions
+- a341129b754: Fixed a bug in the Kubernetes proxy endpoint where requests to clusters configured with client-side auth providers would always fail with a 500 status.
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/integration-aws-node@0.1.3
+ - @backstage/plugin-permission-node@0.7.8
+ - @backstage/plugin-kubernetes-common@0.6.3
+ - @backstage/plugin-auth-node@0.2.14
+ - @backstage/plugin-catalog-node@1.3.6
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/catalog-client@1.4.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+ - @backstage/plugin-permission-common@0.7.5
+
+## @backstage/plugin-octopus-deploy@0.2.0
+
+### Minor Changes
+
+- 87211bc2873: Added support for Octopus Deploy spaces. The octopus.com/project-id annotation can now (optionally) be prefixed by a space identifier, for example. Spaces-1/Projects-102.
+ Also note that some of this plugins exported API's have changed to accommodate this change, changing from separate arguments to a single object.
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+
+## @backstage/plugin-scaffolder-backend@1.14.0
+
+### Minor Changes
+
+- 67115f532b8: Expose both types of scaffolder permissions and rules through the metadata endpoint.
+
+ The metadata endpoint now correctly exposes both types of scaffolder permissions and rules (for both the template and action resource types) through the metadata endpoint.
+
+- a73b3c0b097: Add ability to use `defaultNamespace` and `defaultKind` for scaffolder action `catalog:fetch`
+
+### Patch Changes
+
+- 1a48b84901c: Bump minimum required version of `vm2` to be 3.9.18
+- d20c87966a4: Bump minimum required version of `vm2` to be 3.9.17
+- 6d954de4b06: Update typing for `RouterOptions::actions` and `ScaffolderActionsExtensionPoint::addActions` to allow any kind of action being assigned to it.
+- Updated dependencies
+ - @backstage/plugin-catalog-backend@1.9.1
+ - @backstage/backend-common@0.18.5
+ - @backstage/integration@1.4.5
+ - @backstage/plugin-scaffolder-common@1.3.0
+ - @backstage/plugin-permission-node@0.7.8
+ - @backstage/plugin-scaffolder-node@0.1.3
+ - @backstage/backend-tasks@0.5.2
+ - @backstage/plugin-auth-node@0.2.14
+ - @backstage/plugin-catalog-node@1.3.6
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/catalog-client@1.4.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+ - @backstage/types@1.0.2
+ - @backstage/plugin-catalog-common@1.0.13
+ - @backstage/plugin-permission-common@0.7.5
+
+## @backstage/plugin-scaffolder-backend-module-gitlab@0.2.0
+
+### Minor Changes
+
+- 439e2986be1: Add a new scaffolder action for gitlab to ensure a group exists
+
+### Patch Changes
+
+- f1496d4ab6f: Fix input schema validation issue for gitlab actions:
+
+ - gitlab:group:ensureExists
+ - gitlab:projectAccessToken:create
+ - gitlab:projectDeployToken:create
+ - gitlab:projectVariable:create
+
+- Updated dependencies
+ - @backstage/integration@1.4.5
+ - @backstage/plugin-scaffolder-node@0.1.3
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+
+## @backstage/plugin-scaffolder-common@1.3.0
+
+### Minor Changes
+
+- 82e10a6939c: Add support for Markdown text blob outputs from templates
+- 67115f532b8: Expose scaffolder permissions in new sub-aggregations.
+
+ In addition to exporting a list of all scaffolder permissions in `scaffolderPermissions`, scaffolder-common now exports `scaffolderTemplatePermissions` and `scaffolderActionPermissions`, which contain subsets of the scaffolder permissions separated by resource type.
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/catalog-model@1.3.0
+ - @backstage/types@1.0.2
+ - @backstage/plugin-permission-common@0.7.5
+
+## @backstage/plugin-scaffolder-react@1.4.0
+
+### Minor Changes
+
+- 82e10a6939c: Add support for Markdown text blob outputs from templates
+
+### Patch Changes
+
+- ad1a1429de4: Improvements to the `scaffolder/next` buttons UX:
+
+ - Added padding around the "Create" button in the `Stepper` component
+ - Added a button bar that includes the "Cancel" and "Start Over" buttons to the `OngoingTask` component. The state of these buttons match their existing counter parts in the Context Menu
+ - Added a "Show Button Bar"/"Hide Button Bar" item to the `ContextMenu` component
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/plugin-scaffolder-common@1.3.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-client@1.4.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+ - @backstage/types@1.0.2
+ - @backstage/version-bridge@1.0.4
+
+## @backstage/plugin-search@1.3.0
+
+### Minor Changes
+
+- 750e45539ad: Add close button & improve search input.
+
+ MUI's Paper wrapping the SearchBar in the SearchPage was removed, we recommend users update their apps accordingly.
+
+ SearchBarBase's TextField's label support added & aria-label uses label string if present, tests relying on the default placeholder value should still work unless custom placeholder was given.
+
+### Patch Changes
+
+- 0e3d8d69318: Fixed 404 Error when fetching search results due to URL encoding changes
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/plugin-search-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+ - @backstage/types@1.0.2
+ - @backstage/version-bridge@1.0.4
+ - @backstage/plugin-search-common@1.2.3
+
+## @backstage/plugin-search-backend-module-elasticsearch@1.3.0
+
+### Minor Changes
+
+- 3d72bdb41c7: Upgrade to aws-sdk v3 and include OpenSearch Serverless support
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/integration-aws-node@0.1.3
+ - @backstage/plugin-search-backend-node@1.2.1
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/config@1.0.7
+ - @backstage/plugin-search-common@1.2.3
+
+## @backstage/plugin-search-react@1.6.0
+
+### Minor Changes
+
+- 750e45539ad: Add close button & improve search input.
+
+ MUI's Paper wrapping the SearchBar in the SearchPage was removed, we recommend users update their apps accordingly.
+
+ SearchBarBase's TextField's label support added & aria-label uses label string if present, tests relying on the default placeholder value should still work unless custom placeholder was given.
+
+- 1ce7f84b2e8: accepts InputProp property that can override keys from default
+
+### Patch Changes
+
+- f785f0804cd: `SearchPagination` now automatically resets the page cursor when the page limit is changed
+- adb31096bc2: Fix text-overflow UI issue for Lifecycle spans in SearchFilter checkbox labels.
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/core-components@0.13.1
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/types@1.0.2
+ - @backstage/version-bridge@1.0.4
+ - @backstage/plugin-search-common@1.2.3
+
+## @backstage/app-defaults@1.3.1
+
+### Patch Changes
+
+- 575d9178eff: Added a System Icon for resource entities.
+ This can be obtained using:
+
+ ```ts
+ useApp().getSystemIcon('kind:resource');
+ ```
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/core-app-api@1.8.0
+ - @backstage/core-components@0.13.1
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/plugin-permission-react@0.4.12
+
+## @backstage/backend-app-api@0.4.3
+
+### Patch Changes
+
+- cf13b482f9e: Switch `configServiceFactory` to use `ConfigSources` from `@backstage/config-loader` to load config.
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/config-loader@1.3.0
+ - @backstage/plugin-permission-node@0.7.8
+ - @backstage/backend-tasks@0.5.2
+ - @backstage/plugin-auth-node@0.2.14
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/cli-common@0.1.12
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+ - @backstage/types@1.0.2
+
+## @backstage/backend-common@0.18.5
+
+### Patch Changes
+
+- 0297f7a54af: Remove the direct dependency on deprecated "request" library
+- 284db225083: Updated the `DatabaseManager` to include the plugin id in the Postgres application name of the database connections created for each plugin.
+- 3659c71c5d9: Standardize `@aws-sdk` v3 versions
+- 42d817e76ab: Added `HostDiscovery` to supersede deprecated `SingleHostDiscovery` (deprecated due to name)
+- Updated dependencies
+ - @backstage/config-loader@1.3.0
+ - @backstage/integration@1.4.5
+ - @backstage/integration-aws-node@0.1.3
+ - @backstage/backend-app-api@0.4.3
+ - @backstage/backend-dev-utils@0.1.1
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/cli-common@0.1.12
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+ - @backstage/types@1.0.2
+
+## @backstage/backend-defaults@0.1.10
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/backend-app-api@0.4.3
+ - @backstage/backend-plugin-api@0.5.2
+
+## @backstage/backend-openapi-utils@0.0.2
+
+### Patch Changes
+
+- fe16bd39e83: Use permalinks for links including a line number reference
+- 27956d78671: Adjusted README accordingly after the generated output now has a `.generated.ts` extension
+- 021cfbb5152: Corrected resolution of parameter nested schema to use central schemas.
+- 799c33047ed: Updated README to reflect changes in `@backstage/repo-tools`.
+
+## @backstage/backend-plugin-api@0.5.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-tasks@0.5.2
+ - @backstage/plugin-auth-node@0.2.14
+ - @backstage/config@1.0.7
+ - @backstage/types@1.0.2
+ - @backstage/plugin-permission-common@0.7.5
+
+## @backstage/backend-tasks@0.5.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+ - @backstage/types@1.0.2
+
+## @backstage/backend-test-utils@0.1.37
+
+### Patch Changes
+
+- 63af7f6d53f: Allow specifying custom Docker registry for database tests
+- b1eb268bf9d: Added `POSTGRES_11` and `POSTGRES_12` as supported test database IDs.
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/backend-app-api@0.4.3
+ - @backstage/plugin-auth-node@0.2.14
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/config@1.0.7
+ - @backstage/types@1.0.2
+
+## @backstage/cli@0.22.7
+
+### Patch Changes
+
+- 473db605a4f: Enable strict config checking during `backstage-cli config:check` with the new `--strict` option which will surface schema errors.
+- d548886872d: Deprecated the use of React 16
+- Updated dependencies
+ - @backstage/config-loader@1.3.0
+ - @backstage/cli-common@0.1.12
+ - @backstage/cli-node@0.1.0
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+ - @backstage/eslint-plugin@0.1.3
+ - @backstage/release-manifests@0.0.9
+ - @backstage/types@1.0.2
+
+## @backstage/core-components@0.13.1
+
+### Patch Changes
+
+- 83b45f9df50: Fix accessibility issue with Backstage Table's header style
+- e97769f7c0b: Fix accessibility issue on controlled select input on tab navigation + keyboard enter/space action.
+- b1f13cb38aa: Fix accessibility issue with Edit Metadata Link on screen readers missing notice about opening in a new tab.
+- 26cff1a5dfb: Start capturing sidebar click events in analytics by default.
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/config@1.0.7
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+ - @backstage/version-bridge@1.0.4
+
+## @backstage/create-app@0.5.1
+
+### Patch Changes
+
+- 1d5e42655cd: Correct command to create new plugins
+- e04bb20bdc4: Bumped create-app version.
+- Updated dependencies
+ - @backstage/cli-common@0.1.12
+
+## @backstage/dev-utils@1.0.15
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/app-defaults@1.3.1
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-app-api@1.8.0
+ - @backstage/core-components@0.13.1
+ - @backstage/integration-react@1.1.13
+ - @backstage/test-utils@1.3.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+
+## @backstage/integration@1.4.5
+
+### Patch Changes
+
+- b026275bcc8: Fixed a bug where the wrong credentials would be selected when using multiple GitHub app integrations.
+- Updated dependencies
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+
+## @backstage/integration-aws-node@0.1.3
+
+### Patch Changes
+
+- 3659c71c5d9: Standardize `@aws-sdk` v3 versions
+- Updated dependencies
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+
+## @backstage/integration-react@1.1.13
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/integration@1.4.5
+ - @backstage/core-components@0.13.1
+ - @backstage/config@1.0.7
+ - @backstage/core-plugin-api@1.5.1
+
+## @techdocs/cli@1.4.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/plugin-techdocs-node@1.7.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/cli-common@0.1.12
+ - @backstage/config@1.0.7
+
+## @backstage/test-utils@1.3.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/core-app-api@1.8.0
+ - @backstage/config@1.0.7
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/types@1.0.2
+ - @backstage/plugin-permission-common@0.7.5
+ - @backstage/plugin-permission-react@0.4.12
+
+## @backstage/plugin-adr-backend@0.3.3
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/integration@1.4.5
+ - @backstage/catalog-client@1.4.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+ - @backstage/plugin-adr-common@0.2.9
+ - @backstage/plugin-search-common@1.2.3
+
+## @backstage/plugin-adr-common@0.2.9
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/integration@1.4.5
+ - @backstage/catalog-model@1.3.0
+ - @backstage/plugin-search-common@1.2.3
+
+## @backstage/plugin-airbrake@0.3.18
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/dev-utils@1.0.15
+ - @backstage/test-utils@1.3.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+
+## @backstage/plugin-airbrake-backend@0.2.18
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/config@1.0.7
+
+## @backstage/plugin-allure@0.1.34
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+
+## @backstage/plugin-analytics-module-ga@0.1.29
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/core-components@0.13.1
+ - @backstage/config@1.0.7
+ - @backstage/core-plugin-api@1.5.1
+
+## @backstage/plugin-apache-airflow@0.2.11
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.13.1
+ - @backstage/core-plugin-api@1.5.1
+
+## @backstage/plugin-api-docs@0.9.3
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/plugin-catalog@1.11.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+
+## @backstage/plugin-apollo-explorer@0.1.11
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/core-components@0.13.1
+ - @backstage/core-plugin-api@1.5.1
+
+## @backstage/plugin-app-backend@0.3.45
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/config-loader@1.3.0
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/config@1.0.7
+ - @backstage/types@1.0.2
+
+## @backstage/plugin-auth-backend@0.18.3
+
+### Patch Changes
+
+- 7c116bcac7f: Fixed the way that some request errors are thrown
+- 473db605a4f: Fix config schema definition.
+- 3ffcdac7d07: Added a persistent session store through the database
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/plugin-auth-node@0.2.14
+ - @backstage/catalog-client@1.4.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+ - @backstage/types@1.0.2
+
+## @backstage/plugin-auth-node@0.2.14
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+
+## @backstage/plugin-azure-devops-backend@0.3.24
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/config@1.0.7
+ - @backstage/plugin-azure-devops-common@0.3.0
+
+## @backstage/plugin-azure-sites@0.1.7
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/plugin-azure-sites-common@0.1.0
+
+## @backstage/plugin-azure-sites-backend@0.1.7
+
+### Patch Changes
+
+- d66d4f916aa: Updated URL to `/health` and corrected typos in the `README.md`
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/config@1.0.7
+ - @backstage/plugin-azure-sites-common@0.1.0
+
+## @backstage/plugin-badges@0.2.42
+
+### Patch Changes
+
+- a0108c49774: Fixing badges-backend plugin to get a token from the TokenManager instead of parsing the request header. Hence, it's now possible to disable the authMiddleware for the badges-backend plugin to expose publicly the badges.
+
+ Implementing an obfuscation feature to protect an open badges endpoint from being enumerated. The feature is disabled by default and the change is compatible with the previous version.
+
+ **BREAKING**: `createRouter` now require that `tokenManager`, `logger`, and `identityApi`, are passed in as options.
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+
+## @backstage/plugin-bazaar@0.2.8
+
+### Patch Changes
+
+- 900880ab7c3: Fixed `validateDOMNesting` warnings
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/cli@0.22.7
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/plugin-catalog@1.11.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-client@1.4.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+
+## @backstage/plugin-bazaar-backend@0.2.8
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/plugin-auth-node@0.2.14
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+
+## @backstage/plugin-bitbucket-cloud-common@0.2.6
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/integration@1.4.5
+
+## @backstage/plugin-bitrise@0.1.45
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+
+## @backstage/plugin-catalog-backend@1.9.1
+
+### Patch Changes
+
+- ce8d203235b: Ensure that entity cache state is only written to the database when actually changed
+- 485a6c5f7b5: Internal refactoring for performance in the service handlers
+- 3587a968dcd: Fixed a bug in the `queryEntities` endpoint that was causing filtered entities to be included in cursor requests.
+- ce335df9d1c: Improve the query for orphan pruning
+- 27956d78671: Adjusted the OpenAPI schema file name according to the new structure
+- 51064e6e5ee: Change orphan cleanup task to only log a message if it deleted entities.
+- 12a345317ab: Remove unnecessary join in the entity facets endpoint, exclude nulls
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/integration@1.4.5
+ - @backstage/plugin-scaffolder-common@1.3.0
+ - @backstage/plugin-permission-node@0.7.8
+ - @backstage/backend-tasks@0.5.2
+ - @backstage/plugin-catalog-node@1.3.6
+ - @backstage/plugin-search-backend-module-catalog@0.1.1
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/catalog-client@1.4.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+ - @backstage/types@1.0.2
+ - @backstage/plugin-catalog-common@1.0.13
+ - @backstage/plugin-permission-common@0.7.5
+ - @backstage/plugin-search-common@1.2.3
+
+## @backstage/plugin-catalog-backend-module-azure@0.1.16
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/integration@1.4.5
+ - @backstage/backend-tasks@0.5.2
+ - @backstage/plugin-catalog-node@1.3.6
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+ - @backstage/types@1.0.2
+ - @backstage/plugin-catalog-common@1.0.13
+
+## @backstage/plugin-catalog-backend-module-bitbucket@0.2.12
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/integration@1.4.5
+ - @backstage/plugin-catalog-node@1.3.6
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+ - @backstage/types@1.0.2
+ - @backstage/plugin-bitbucket-cloud-common@0.2.6
+
+## @backstage/plugin-catalog-backend-module-bitbucket-cloud@0.1.12
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/integration@1.4.5
+ - @backstage/backend-tasks@0.5.2
+ - @backstage/plugin-catalog-node@1.3.6
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/catalog-client@1.4.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/plugin-bitbucket-cloud-common@0.2.6
+ - @backstage/plugin-catalog-common@1.0.13
+ - @backstage/plugin-events-node@0.2.6
+
+## @backstage/plugin-catalog-backend-module-bitbucket-server@0.1.10
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/integration@1.4.5
+ - @backstage/backend-tasks@0.5.2
+ - @backstage/plugin-catalog-node@1.3.6
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+
+## @backstage/plugin-catalog-backend-module-gerrit@0.1.13
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/integration@1.4.5
+ - @backstage/backend-tasks@0.5.2
+ - @backstage/plugin-catalog-node@1.3.6
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+
+## @backstage/plugin-catalog-backend-module-gitlab@0.2.1
+
+### Patch Changes
+
+- b12c41fafc4: Fix a corner case where returned users are null for bots
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/integration@1.4.5
+ - @backstage/backend-tasks@0.5.2
+ - @backstage/plugin-catalog-node@1.3.6
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+ - @backstage/types@1.0.2
+
+## @backstage/plugin-catalog-backend-module-incremental-ingestion@0.3.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-backend@1.9.1
+ - @backstage/backend-common@0.18.5
+ - @backstage/backend-tasks@0.5.2
+ - @backstage/plugin-catalog-node@1.3.6
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+ - @backstage/plugin-events-node@0.2.6
+ - @backstage/plugin-permission-common@0.7.5
+
+## @backstage/plugin-catalog-backend-module-ldap@0.5.12
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-tasks@0.5.2
+ - @backstage/plugin-catalog-node@1.3.6
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+ - @backstage/types@1.0.2
+ - @backstage/plugin-catalog-common@1.0.13
+
+## @backstage/plugin-catalog-backend-module-msgraph@0.5.4
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/backend-tasks@0.5.2
+ - @backstage/plugin-catalog-node@1.3.6
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/plugin-catalog-common@1.0.13
+
+## @backstage/plugin-catalog-backend-module-openapi@0.1.11
+
+### Patch Changes
+
+- accaceadffa: Fixed bug in `jsonSchemaRefPlaceholderResolver` where relative $ref files were resolved through file system instead of base URL of file
+- Updated dependencies
+ - @backstage/plugin-catalog-backend@1.9.1
+ - @backstage/backend-common@0.18.5
+ - @backstage/integration@1.4.5
+ - @backstage/plugin-catalog-node@1.3.6
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/types@1.0.2
+ - @backstage/plugin-catalog-common@1.0.13
+
+## @backstage/plugin-catalog-backend-module-puppetdb@0.1.2
+
+### Patch Changes
+
+- 95b2168d71b: Fixes import paths and updates documentation
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/backend-tasks@0.5.2
+ - @backstage/plugin-catalog-node@1.3.6
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+ - @backstage/types@1.0.2
+
+## @backstage/plugin-catalog-graph@0.2.30
+
+### Patch Changes
+
+- d446f8fb0a8: Expose all `EntityRelationsGraphProps` to Catalog Graph Page
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-client@1.4.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+
+## @backstage/plugin-catalog-import@0.9.8
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/integration@1.4.5
+ - @backstage/core-components@0.13.1
+ - @backstage/integration-react@1.1.13
+ - @backstage/catalog-client@1.4.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+ - @backstage/plugin-catalog-common@1.0.13
+
+## @backstage/plugin-catalog-node@1.3.6
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/catalog-client@1.4.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/errors@1.1.5
+ - @backstage/types@1.0.2
+ - @backstage/plugin-catalog-common@1.0.13
+
+## @backstage/plugin-cicd-statistics@0.1.20
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+
+## @backstage/plugin-cicd-statistics-module-gitlab@0.1.14
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/plugin-cicd-statistics@0.1.20
+
+## @backstage/plugin-circleci@0.3.18
+
+### Patch Changes
+
+- 451b3cadb3d: Fixes row display for in progress jobs to not display trailing "took"
+- 1c4958d905f: Hide empty time field data for queued builds which haven't started yet
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+
+## @backstage/plugin-cloudbuild@0.3.18
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+
+## @backstage/plugin-code-climate@0.1.18
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+
+## @backstage/plugin-code-coverage@0.2.11
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+
+## @backstage/plugin-code-coverage-backend@0.2.11
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/integration@1.4.5
+ - @backstage/catalog-client@1.4.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+
+## @backstage/plugin-codescene@0.1.13
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/core-components@0.13.1
+ - @backstage/config@1.0.7
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+
+## @backstage/plugin-config-schema@0.1.41
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/core-components@0.13.1
+ - @backstage/config@1.0.7
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+ - @backstage/types@1.0.2
+
+## @backstage/plugin-cost-insights@0.12.7
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/plugin-cost-insights-common@0.1.1
+
+## @backstage/plugin-dynatrace@5.0.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+
+## @backstage/plugin-entity-feedback@0.2.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+ - @backstage/plugin-entity-feedback-common@0.1.1
+
+## @backstage/plugin-entity-feedback-backend@0.1.3
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/plugin-auth-node@0.2.14
+ - @backstage/catalog-client@1.4.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/plugin-entity-feedback-common@0.1.1
+
+## @backstage/plugin-entity-validation@0.1.3
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-client@1.4.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+ - @backstage/plugin-catalog-common@1.0.13
+
+## @backstage/plugin-events-backend@0.2.6
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/config@1.0.7
+ - @backstage/plugin-events-node@0.2.6
+
+## @backstage/plugin-events-backend-module-azure@0.1.7
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/plugin-events-node@0.2.6
+
+## @backstage/plugin-events-backend-module-bitbucket-cloud@0.1.7
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/plugin-events-node@0.2.6
+
+## @backstage/plugin-events-backend-module-gerrit@0.1.7
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/plugin-events-node@0.2.6
+
+## @backstage/plugin-events-backend-module-github@0.1.7
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/config@1.0.7
+ - @backstage/plugin-events-node@0.2.6
+
+## @backstage/plugin-events-backend-module-gitlab@0.1.7
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/config@1.0.7
+ - @backstage/plugin-events-node@0.2.6
+
+## @backstage/plugin-events-backend-test-utils@0.1.7
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-events-node@0.2.6
+
+## @backstage/plugin-events-node@0.2.6
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.5.2
+
+## @backstage/plugin-explore@0.4.3
+
+### Patch Changes
+
+- 1996920782b: Make sure that the first support button row does not break across lines
+- 4851581deb6: Display the title of the entity on the explore card if present, otherwise stick to the name
+- a6025e25d99: Updated the example code in the "Customization" section of the README to make the imports match the components used.
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/plugin-search-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+ - @backstage/plugin-explore-common@0.0.1
+ - @backstage/plugin-explore-react@0.0.28
+ - @backstage/plugin-search-common@1.2.3
+
+## @backstage/plugin-explore-backend@0.0.7
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/plugin-search-backend-module-explore@0.1.1
+ - @backstage/config@1.0.7
+ - @backstage/plugin-explore-common@0.0.1
+ - @backstage/plugin-search-common@1.2.3
+
+## @backstage/plugin-firehydrant@0.2.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+
+## @backstage/plugin-fossa@0.2.50
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+
+## @backstage/plugin-gcalendar@0.3.14
+
+### Patch Changes
+
+- f493ccb9589: Pass user info email scope on auth refresh to resolve invalid credentials error
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/core-components@0.13.1
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+
+## @backstage/plugin-gcp-projects@0.3.37
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/core-components@0.13.1
+ - @backstage/core-plugin-api@1.5.1
+
+## @backstage/plugin-git-release-manager@0.3.31
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/integration@1.4.5
+ - @backstage/core-components@0.13.1
+ - @backstage/core-plugin-api@1.5.1
+
+## @backstage/plugin-github-actions@0.5.18
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/integration@1.4.5
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+
+## @backstage/plugin-github-deployments@0.1.49
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/integration@1.4.5
+ - @backstage/core-components@0.13.1
+ - @backstage/integration-react@1.1.13
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+
+## @backstage/plugin-github-issues@0.2.7
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/integration@1.4.5
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+
+## @backstage/plugin-github-pull-requests-board@0.1.12
+
+### Patch Changes
+
+- cf125c36569: The `EntityTeamPullRequestsContent` and `EntityTeamPullRequestsCard` support the ability to view the labels/tags added to each PR
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/integration@1.4.5
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+
+## @backstage/plugin-gitops-profiles@0.3.36
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/core-components@0.13.1
+ - @backstage/config@1.0.7
+ - @backstage/core-plugin-api@1.5.1
+
+## @backstage/plugin-gocd@0.1.24
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+
+## @backstage/plugin-graphiql@0.2.50
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/core-components@0.13.1
+ - @backstage/core-plugin-api@1.5.1
+
+## @backstage/plugin-graphql-backend@0.1.35
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/config@1.0.7
+ - @backstage/plugin-catalog-graphql@0.3.20
+
+## @backstage/plugin-graphql-voyager@0.1.3
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/core-components@0.13.1
+ - @backstage/core-plugin-api@1.5.1
+
+## @backstage/plugin-home@0.5.2
+
+### Patch Changes
+
+- acca8966465: Remove object-hash dependency
+- 957cd9b8958: Use the semantic time tag for rendering world clocks on homepage headers.
+- 0e19e7b0f3a: Bump to using the later v5 versions of `@rjsf/*`
+- 5272cfabc3b: Add missing @rjsf/core dependency
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/core-plugin-api@1.5.1
+
+## @backstage/plugin-ilert@0.2.7
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+
+## @backstage/plugin-kafka@0.3.18
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/core-plugin-api@1.5.1
+
+## @backstage/plugin-kafka-backend@0.2.38
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+
+## @backstage/plugin-kubernetes-common@0.6.3
+
+### Patch Changes
+
+- 05f1d74539d: AKS access tokens can now be sent over the wire to the Kubernetes backend.
+- Updated dependencies
+ - @backstage/catalog-model@1.3.0
+ - @backstage/plugin-permission-common@0.7.5
+
+## @backstage/plugin-lighthouse@0.4.3
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/plugin-lighthouse-common@0.1.1
+
+## @backstage/plugin-lighthouse-backend@0.2.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/backend-tasks@0.5.2
+ - @backstage/catalog-client@1.4.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/types@1.0.2
+ - @backstage/plugin-lighthouse-common@0.1.1
+
+## @backstage/plugin-linguist@0.1.3
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+ - @backstage/plugin-linguist-common@0.1.0
+
+## @backstage/plugin-linguist-backend@0.2.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/backend-tasks@0.5.2
+ - @backstage/plugin-auth-node@0.2.14
+ - @backstage/catalog-client@1.4.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+ - @backstage/types@1.0.2
+ - @backstage/plugin-linguist-common@0.1.0
+
+## @backstage/plugin-microsoft-calendar@0.1.3
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/core-components@0.13.1
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+
+## @backstage/plugin-newrelic@0.3.36
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/core-components@0.13.1
+ - @backstage/core-plugin-api@1.5.1
+
+## @backstage/plugin-newrelic-dashboard@0.2.11
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+
+## @backstage/plugin-org@0.6.8
+
+### Patch Changes
+
+- 6e387c077a4: Changed the MembersListCard component to allow displaying aggregated members when viewing a group. Now, a toggle switch can be displayed that lets you switch between showing direct members and aggregated members.
+
+ To enable this new feature, set the showAggregateMembersToggle prop on EntityMembersListCard:
+
+ ```jsx
+ // In packages/app/src/components/catalog/EntityPage.tsx
+ const groupPage = (
+ // ...
+
+ // ...
+ );
+ ```
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+
+## @backstage/plugin-org-react@0.1.7
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-client@1.4.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+
+## @backstage/plugin-pagerduty@0.5.11
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+
+## @backstage/plugin-periskop@0.1.16
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+
+## @backstage/plugin-periskop-backend@0.1.16
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/config@1.0.7
+
+## @backstage/plugin-permission-backend@0.5.20
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/plugin-permission-node@0.7.8
+ - @backstage/plugin-auth-node@0.2.14
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+ - @backstage/plugin-permission-common@0.7.5
+
+## @backstage/plugin-permission-node@0.7.8
+
+### Patch Changes
+
+- a788e715cfc: `createPermissionIntegrationRouter` now accepts rules and permissions for multiple resource types. Example:
+
+ ```typescript
+ createPermissionIntegrationRouter({
+ resources: [
+ {
+ resourceType: 'resourceType-1',
+ permissions: permissionsResourceType1,
+ rules: rulesResourceType1,
+ },
+ {
+ resourceType: 'resourceType-2',
+ permissions: permissionsResourceType2,
+ rules: rulesResourceType2,
+ },
+ ],
+ });
+ ```
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/plugin-auth-node@0.2.14
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+ - @backstage/plugin-permission-common@0.7.5
+
+## @backstage/plugin-playlist@0.1.9
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/plugin-search-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+ - @backstage/plugin-catalog-common@1.0.13
+ - @backstage/plugin-permission-common@0.7.5
+ - @backstage/plugin-permission-react@0.4.12
+ - @backstage/plugin-playlist-common@0.1.6
+
+## @backstage/plugin-playlist-backend@0.3.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/plugin-permission-node@0.7.8
+ - @backstage/plugin-auth-node@0.2.14
+ - @backstage/catalog-client@1.4.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+ - @backstage/plugin-permission-common@0.7.5
+ - @backstage/plugin-playlist-common@0.1.6
+
+## @backstage/plugin-proxy-backend@0.2.39
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/config@1.0.7
+
+## @backstage/plugin-puppetdb@0.1.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+
+## @backstage/plugin-rollbar@0.4.18
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+
+## @backstage/plugin-rollbar-backend@0.1.42
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/config@1.0.7
+
+## @backstage/plugin-scaffolder@1.13.1
+
+### Patch Changes
+
+- d560d457c98: Fix case GitLab workspace is a nested subgroup
+
+- ad1a1429de4: Improvements to the `scaffolder/next` buttons UX:
+
+ - Added padding around the "Create" button in the `Stepper` component
+ - Added a button bar that includes the "Cancel" and "Start Over" buttons to the `OngoingTask` component. The state of these buttons match their existing counter parts in the Context Menu
+ - Added a "Show Button Bar"/"Hide Button Bar" item to the `ContextMenu` component
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/integration@1.4.5
+ - @backstage/plugin-scaffolder-common@1.3.0
+ - @backstage/plugin-scaffolder-react@1.4.0
+ - @backstage/core-components@0.13.1
+ - @backstage/integration-react@1.1.13
+ - @backstage/catalog-client@1.4.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+ - @backstage/types@1.0.2
+ - @backstage/plugin-catalog-common@1.0.13
+ - @backstage/plugin-permission-react@0.4.12
+
+## @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.1.2
+
+### Patch Changes
+
+- 7c116bcac7f: Fixed the way that some request errors are thrown
+- Updated dependencies
+ - @backstage/plugin-scaffolder-backend@1.14.0
+ - @backstage/backend-common@0.18.5
+ - @backstage/integration@1.4.5
+ - @backstage/plugin-scaffolder-node@0.1.3
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+ - @backstage/types@1.0.2
+
+## @backstage/plugin-scaffolder-backend-module-cookiecutter@0.2.21
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-scaffolder-backend@1.14.0
+ - @backstage/backend-common@0.18.5
+ - @backstage/integration@1.4.5
+ - @backstage/plugin-scaffolder-node@0.1.3
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+ - @backstage/types@1.0.2
+
+## @backstage/plugin-scaffolder-backend-module-rails@0.4.14
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-scaffolder-backend@1.14.0
+ - @backstage/backend-common@0.18.5
+ - @backstage/integration@1.4.5
+ - @backstage/plugin-scaffolder-node@0.1.3
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+ - @backstage/types@1.0.2
+
+## @backstage/plugin-scaffolder-backend-module-sentry@0.1.5
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-scaffolder-node@0.1.3
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+
+## @backstage/plugin-scaffolder-backend-module-yeoman@0.2.18
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-scaffolder-node@0.1.3
+ - @backstage/config@1.0.7
+ - @backstage/types@1.0.2
+
+## @backstage/plugin-scaffolder-node@0.1.3
+
+### Patch Changes
+
+- 6d954de4b06: Update typing for `RouterOptions::actions` and `ScaffolderActionsExtensionPoint::addActions` to allow any kind of action being assigned to it.
+- Updated dependencies
+ - @backstage/plugin-scaffolder-common@1.3.0
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/catalog-model@1.3.0
+ - @backstage/types@1.0.2
+
+## @backstage/plugin-search-backend@1.3.1
+
+### Patch Changes
+
+- 021cfbb5152: Added an OpenAPI 3.0 spec and enforced schema-first model on the router.
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/plugin-permission-node@0.7.8
+ - @backstage/plugin-auth-node@0.2.14
+ - @backstage/plugin-search-backend-node@1.2.1
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+ - @backstage/types@1.0.2
+ - @backstage/plugin-permission-common@0.7.5
+ - @backstage/plugin-search-common@1.2.3
+
+## @backstage/plugin-search-backend-module-catalog@0.1.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/backend-tasks@0.5.2
+ - @backstage/plugin-search-backend-node@1.2.1
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/catalog-client@1.4.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/plugin-catalog-common@1.0.13
+ - @backstage/plugin-permission-common@0.7.5
+ - @backstage/plugin-search-common@1.2.3
+
+## @backstage/plugin-search-backend-module-explore@0.1.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/backend-tasks@0.5.2
+ - @backstage/plugin-search-backend-node@1.2.1
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/config@1.0.7
+ - @backstage/plugin-explore-common@0.0.1
+ - @backstage/plugin-search-common@1.2.3
+
+## @backstage/plugin-search-backend-module-pg@0.5.6
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/plugin-search-backend-node@1.2.1
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/config@1.0.7
+ - @backstage/plugin-search-common@1.2.3
+
+## @backstage/plugin-search-backend-module-techdocs@0.1.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/plugin-techdocs-node@1.7.1
+ - @backstage/backend-tasks@0.5.2
+ - @backstage/plugin-search-backend-node@1.2.1
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/catalog-client@1.4.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/plugin-catalog-common@1.0.13
+ - @backstage/plugin-permission-common@0.7.5
+ - @backstage/plugin-search-common@1.2.3
+
+## @backstage/plugin-search-backend-node@1.2.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/backend-tasks@0.5.2
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+ - @backstage/plugin-permission-common@0.7.5
+ - @backstage/plugin-search-common@1.2.3
+
+## @backstage/plugin-sentry@0.5.3
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+
+## @backstage/plugin-shortcuts@0.3.10
+
+### Patch Changes
+
+- 8a7174e297c: Marked `LocalStoredShortcuts` as deprecated, replacing it with `DefaultShortcutsApi` whose naming more clearly suggests that the shortcuts aren't necessarily stored locally (it depends on the storage implementation).
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/core-components@0.13.1
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/types@1.0.2
+
+## @backstage/plugin-sonarqube@0.6.7
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/plugin-sonarqube-react@0.1.5
+
+## @backstage/plugin-sonarqube-backend@0.1.10
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+
+## @backstage/plugin-splunk-on-call@0.4.7
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+
+## @backstage/plugin-stack-overflow@0.1.15
+
+### Patch Changes
+
+- c1ff65f315a: StackOverflowSearchResultListItem can now accept an empty result prop so that it can be rendered in the suggested SearchResultListItem pattern.
+- Updated dependencies
+ - @backstage/plugin-home@0.5.2
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-search-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/config@1.0.7
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/plugin-search-common@1.2.3
+
+## @backstage/plugin-stack-overflow-backend@0.2.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/config@1.0.7
+ - @backstage/plugin-search-common@1.2.3
+
+## @backstage/plugin-stackstorm@0.1.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/core-components@0.13.1
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+
+## @backstage/plugin-tech-insights@0.3.10
+
+### Patch Changes
+
+- 22963209d23: Added the possibility to customize the check description in the scorecard component.
+
+ - The `CheckResultRenderer` type now exposes an optional `description` method that allows to overwrite the description with a different string or a React component for a provided check result.
+
+ Until now only the `BooleanCheck` element could be overridden, but from now on it's also possible to override the description for a check.
+ As an example, the description could change depending on the check result. Refer to the [README](https://github.com/backstage/backstage/blob/master/plugins/tech-insights/README.md#adding-custom-rendering-components) file for more details
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+ - @backstage/types@1.0.2
+ - @backstage/plugin-tech-insights-common@0.2.10
+
+## @backstage/plugin-tech-insights-backend@0.5.11
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/backend-tasks@0.5.2
+ - @backstage/plugin-tech-insights-node@0.4.3
+ - @backstage/catalog-client@1.4.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+ - @backstage/types@1.0.2
+ - @backstage/plugin-tech-insights-common@0.2.10
+
+## @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.29
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/plugin-tech-insights-node@0.4.3
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+ - @backstage/plugin-tech-insights-common@0.2.10
+
+## @backstage/plugin-tech-insights-node@0.4.3
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/backend-tasks@0.5.2
+ - @backstage/config@1.0.7
+ - @backstage/types@1.0.2
+ - @backstage/plugin-tech-insights-common@0.2.10
+
+## @backstage/plugin-tech-radar@0.6.4
+
+### Patch Changes
+
+- be4fa53fab8: Fix description links when clicking entry in radar.
+- Added the ability to display a timeline to each entry in the details box
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/core-components@0.13.1
+ - @backstage/core-plugin-api@1.5.1
+
+## @backstage/plugin-techdocs@1.6.2
+
+### Patch Changes
+
+- 863beb49498: Re-add the possibility to have trailing slashes in Techdocs navigation.
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/integration@1.4.5
+ - @backstage/plugin-search-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/integration-react@1.1.13
+ - @backstage/plugin-techdocs-react@1.1.6
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+ - @backstage/plugin-search-common@1.2.3
+
+## @backstage/plugin-techdocs-addons-test-utils@1.0.13
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-techdocs@1.6.2
+ - @backstage/plugin-catalog@1.11.0
+ - @backstage/core-app-api@1.8.0
+ - @backstage/plugin-search-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/integration-react@1.1.13
+ - @backstage/test-utils@1.3.1
+ - @backstage/plugin-techdocs-react@1.1.6
+ - @backstage/core-plugin-api@1.5.1
+
+## @backstage/plugin-techdocs-backend@1.6.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/integration@1.4.5
+ - @backstage/plugin-techdocs-node@1.7.1
+ - @backstage/plugin-search-backend-module-techdocs@0.1.1
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/catalog-client@1.4.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+ - @backstage/plugin-catalog-common@1.0.13
+ - @backstage/plugin-permission-common@0.7.5
+ - @backstage/plugin-search-common@1.2.3
+
+## @backstage/plugin-techdocs-module-addons-contrib@1.0.13
+
+### Patch Changes
+
+- 6afc7f052ca: Show cursor pointer when hovering on lightbox
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/integration@1.4.5
+ - @backstage/core-components@0.13.1
+ - @backstage/integration-react@1.1.13
+ - @backstage/plugin-techdocs-react@1.1.6
+ - @backstage/core-plugin-api@1.5.1
+
+## @backstage/plugin-techdocs-node@1.7.1
+
+### Patch Changes
+
+- 3659c71c5d9: Standardize `@aws-sdk` v3 versions
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/integration@1.4.5
+ - @backstage/integration-aws-node@0.1.3
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+ - @backstage/plugin-search-common@1.2.3
+
+## @backstage/plugin-techdocs-react@1.1.6
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/version-bridge@1.0.4
+
+## @backstage/plugin-todo@0.2.20
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+
+## @backstage/plugin-todo-backend@0.1.42
+
+### Patch Changes
+
+- 901f1ada325: Added OpenAPI schema
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/integration@1.4.5
+ - @backstage/plugin-catalog-node@1.3.6
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/catalog-client@1.4.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+
+## @backstage/plugin-user-settings@0.7.3
+
+### Patch Changes
+
+- 473db605a4f: Fix config schema definition.
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-app-api@1.8.0
+ - @backstage/core-components@0.13.1
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+ - @backstage/types@1.0.2
+
+## @backstage/plugin-user-settings-backend@0.1.9
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/plugin-auth-node@0.2.14
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/catalog-model@1.3.0
+ - @backstage/errors@1.1.5
+ - @backstage/types@1.0.2
+
+## @backstage/plugin-vault@0.1.12
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+
+## @backstage/plugin-vault-backend@0.3.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/backend-tasks@0.5.2
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+
+## @backstage/plugin-xcmetrics@0.2.38
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/core-components@0.13.1
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+
+## example-app@0.2.83
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-tech-insights@0.3.10
+ - @backstage/plugin-scaffolder@1.13.1
+ - @backstage/plugin-devtools@0.1.0
+ - @backstage/plugin-kubernetes@0.9.0
+ - @backstage/plugin-search@1.3.0
+ - @backstage/plugin-home@0.5.2
+ - @backstage/plugin-explore@0.4.3
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-techdocs@1.6.2
+ - @backstage/app-defaults@1.3.1
+ - @backstage/plugin-badges@0.2.42
+ - @backstage/plugin-tech-radar@0.6.4
+ - @backstage/cli@0.22.7
+ - @backstage/plugin-stack-overflow@0.1.15
+ - @backstage/plugin-gcalendar@0.3.14
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-app-api@1.8.0
+ - @backstage/plugin-scaffolder-react@1.4.0
+ - @backstage/plugin-catalog-graph@0.2.30
+ - @backstage/plugin-circleci@0.3.18
+ - @backstage/plugin-search-react@1.6.0
+ - @backstage/plugin-org@0.6.8
+ - @backstage/core-components@0.13.1
+ - @backstage/plugin-azure-devops@0.3.0
+ - @backstage/plugin-jenkins@0.8.0
+ - @backstage/plugin-octopus-deploy@0.2.0
+ - @backstage/plugin-techdocs-module-addons-contrib@1.0.13
+ - @backstage/plugin-user-settings@0.7.3
+ - @backstage/plugin-shortcuts@0.3.10
+ - @backstage/integration-react@1.1.13
+ - @backstage/plugin-airbrake@0.3.18
+ - @backstage/plugin-api-docs@0.9.3
+ - @backstage/plugin-azure-sites@0.1.7
+ - @backstage/plugin-cloudbuild@0.3.18
+ - @backstage/plugin-code-coverage@0.2.11
+ - @backstage/plugin-cost-insights@0.12.7
+ - @backstage/plugin-dynatrace@5.0.0
+ - @backstage/plugin-entity-feedback@0.2.1
+ - @backstage/plugin-gcp-projects@0.3.37
+ - @backstage/plugin-github-actions@0.5.18
+ - @backstage/plugin-gocd@0.1.24
+ - @backstage/plugin-graphiql@0.2.50
+ - @backstage/plugin-kafka@0.3.18
+ - @backstage/plugin-lighthouse@0.4.3
+ - @backstage/plugin-linguist@0.1.3
+ - @backstage/plugin-microsoft-calendar@0.1.3
+ - @backstage/plugin-newrelic@0.3.36
+ - @backstage/plugin-pagerduty@0.5.11
+ - @backstage/plugin-playlist@0.1.9
+ - @backstage/plugin-puppetdb@0.1.1
+ - @backstage/plugin-rollbar@0.4.18
+ - @backstage/plugin-sentry@0.5.3
+ - @backstage/plugin-stackstorm@0.1.2
+ - @backstage/plugin-techdocs-react@1.1.6
+ - @backstage/plugin-todo@0.2.20
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/plugin-apache-airflow@0.2.11
+ - @backstage/plugin-catalog-common@1.0.13
+ - @backstage/plugin-catalog-import@0.9.8
+ - @backstage/plugin-linguist-common@0.1.0
+ - @backstage/plugin-newrelic-dashboard@0.2.11
+ - @backstage/plugin-permission-react@0.4.12
+ - @backstage/plugin-search-common@1.2.3
+ - @internal/plugin-catalog-customized@0.0.10
+
+## example-backend@0.2.83
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-scaffolder-backend@1.14.0
+ - @backstage/plugin-devtools-backend@0.1.0
+ - @backstage/plugin-catalog-backend@1.9.1
+ - @backstage/backend-common@0.18.5
+ - @backstage/plugin-kubernetes-backend@0.11.0
+ - @backstage/plugin-auth-backend@0.18.3
+ - @backstage/plugin-badges-backend@0.2.0
+ - @backstage/plugin-search-backend-module-elasticsearch@1.3.0
+ - @backstage/integration@1.4.5
+ - @backstage/plugin-todo-backend@0.1.42
+ - @backstage/plugin-jenkins-backend@0.2.0
+ - @backstage/plugin-azure-sites-backend@0.1.7
+ - @backstage/plugin-permission-node@0.7.8
+ - @backstage/plugin-search-backend@1.3.1
+ - example-app@0.2.83
+ - @backstage/backend-tasks@0.5.2
+ - @backstage/plugin-app-backend@0.3.45
+ - @backstage/plugin-auth-node@0.2.14
+ - @backstage/plugin-catalog-node@1.3.6
+ - @backstage/plugin-entity-feedback-backend@0.1.3
+ - @backstage/plugin-events-backend@0.2.6
+ - @backstage/plugin-playlist-backend@0.3.1
+ - @backstage/plugin-rollbar-backend@0.1.42
+ - @backstage/plugin-search-backend-module-pg@0.5.6
+ - @backstage/plugin-tech-insights-backend@0.5.11
+ - @backstage/plugin-techdocs-backend@1.6.2
+ - @backstage/plugin-scaffolder-backend-module-rails@0.4.14
+ - @backstage/plugin-adr-backend@0.3.3
+ - @backstage/plugin-azure-devops-backend@0.3.24
+ - @backstage/plugin-code-coverage-backend@0.2.11
+ - @backstage/plugin-explore-backend@0.0.7
+ - @backstage/plugin-graphql-backend@0.1.35
+ - @backstage/plugin-kafka-backend@0.2.38
+ - @backstage/plugin-lighthouse-backend@0.2.1
+ - @backstage/plugin-linguist-backend@0.2.2
+ - @backstage/plugin-permission-backend@0.5.20
+ - @backstage/plugin-proxy-backend@0.2.39
+ - @backstage/plugin-search-backend-node@1.2.1
+ - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.29
+ - @backstage/plugin-tech-insights-node@0.4.3
+ - @backstage/catalog-client@1.4.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/plugin-events-node@0.2.6
+ - @backstage/plugin-permission-common@0.7.5
+ - @backstage/plugin-search-common@1.2.3
+
+## example-backend-next@0.0.11
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-scaffolder-backend@1.14.0
+ - @backstage/plugin-catalog-backend@1.9.1
+ - @backstage/plugin-kubernetes-backend@0.11.0
+ - @backstage/plugin-todo-backend@0.1.42
+ - @backstage/plugin-permission-node@0.7.8
+ - @backstage/plugin-search-backend@1.3.1
+ - @backstage/backend-defaults@0.1.10
+ - @backstage/plugin-app-backend@0.3.45
+ - @backstage/plugin-auth-node@0.2.14
+ - @backstage/plugin-search-backend-module-catalog@0.1.1
+ - @backstage/plugin-search-backend-module-explore@0.1.1
+ - @backstage/plugin-search-backend-module-techdocs@0.1.1
+ - @backstage/plugin-techdocs-backend@1.6.2
+ - @backstage/plugin-permission-backend@0.5.20
+ - @backstage/plugin-search-backend-node@1.2.1
+ - @backstage/plugin-permission-common@0.7.5
+
+## e2e-test@0.2.3
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/create-app@0.5.1
+ - @backstage/cli-common@0.1.12
+ - @backstage/errors@1.1.5
+
+## techdocs-cli-embedded-app@0.2.82
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-techdocs@1.6.2
+ - @backstage/app-defaults@1.3.1
+ - @backstage/cli@0.22.7
+ - @backstage/plugin-catalog@1.11.0
+ - @backstage/core-app-api@1.8.0
+ - @backstage/core-components@0.13.1
+ - @backstage/integration-react@1.1.13
+ - @backstage/test-utils@1.3.1
+ - @backstage/plugin-techdocs-react@1.1.6
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/core-plugin-api@1.5.1
+
+## @internal/plugin-catalog-customized@0.0.10
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/plugin-catalog@1.11.0
+
+## @internal/plugin-todo-list@1.0.13
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/core-components@0.13.1
+ - @backstage/core-plugin-api@1.5.1
+
+## @internal/plugin-todo-list-backend@1.0.13
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/plugin-auth-node@0.2.14
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
diff --git a/docs/releases/v1.14.0.md b/docs/releases/v1.14.0.md
new file mode 100644
index 0000000000..2c565e2519
--- /dev/null
+++ b/docs/releases/v1.14.0.md
@@ -0,0 +1,80 @@
+---
+id: v1.14.0
+title: v1.14.0
+description: Backstage Release v1.14.0
+---
+
+These are the release notes for the v1.14.0 release of [Backstage](https://backstage.io/).
+
+A huge thanks to the whole team of maintainers and contributors as well as the amazing Backstage Community for their hard work in getting this release developed and done.
+
+## Highlights
+
+This release has an important security fix, along with a lot of squashed bugs and exciting additions! Enjoy.
+
+### **BREAKING**: Tweaks to the OpenAPI tooling
+
+There’s been further work made on the OpenAPI tooling! One of the changes is that the commands for this feature are grouped under a `schema openapi` subcommand. This lets us structure things a bit better for the future. The generated file now also has a `.generated.ts` extension, to more easily be able to keep it apart in linting and similar.
+
+### **BREAKING**: Kubernetes plugin log viewer and tweaks
+
+There’s been some awesome additions made to the Kubernetes plugin, including the ability to show pod logs! To support this, some breaking changes were made in some of its interfaces. Check out [#17120](https://github.com/backstage/backstage/pull/17120) for some details of what changed.
+
+### **DEPRECATION**: React 16
+
+We are preparing for React 18, and as part of doing that, we are now officially deprecating support for React 16. Nothing will break for you just yet, but if you are still on React 16 your `backstage-cli` commands will start to show helpful warning messages guiding you to bump to version 17 when you can.
+
+See [#17752](https://github.com/backstage/backstage/pull/17752) for some details about this, and links to the relevant issues.
+
+### New plugin: DevTools
+
+This plugin is focused on integrators rather than end users. It allows you to see useful information about your Backstage installation, such as what operating system and NodeJS version it’s running on, what Backstage and individual package versions you have, and more! This may serve as a foundation for adding even more ops focused features in the future.
+
+Contributed by [@awanlin](https://github.com/awanlin) in [#17393](https://github.com/backstage/backstage/pull/17393)
+
+### Migration to AWS-SDK version 3
+
+There’s been work done under the hood to migrate AWS features over to using v3 of their client SDKs. While this should mostly go below the radar and ultimately work the same as it did before, do reach out to us if you encounter any problems that might be related to this migration.
+
+There’s actually a minor interface breakage as part of this, where `AwsIamKubernetesAuthTranslator` has some methods removed, but that’s one which may not have a lot of use outside of the package.
+
+Contributed by [@aochsner](https://github.com/aochsner), see PRs linked at the bottom of issue [#16470](https://github.com/backstage/backstage/issues/16470)
+
+### Persistent session store for the auth backend
+
+For auth providers that use session storage, those sessions are now persisted in the auth backend database, instead of in local memory. This should make session handling work better across scaled auth backend instances.
+
+### Markdown Output Support for Software Templates
+
+You can now output Markdown from the Software Template runs which can provide more data to the end user after a job has completed in the outputs section of `scaffolder/next`
+
+Contributed by [@voximity](https://github.com/voximity) in [#17641](https://github.com/backstage/backstage/pull/17641)
+
+### Refactored Configuration Loading
+
+The configuration loading system has been refactored to make it easier to extend the system with additional sources of configuration. See the [initial PR](https://github.com/backstage/backstage/pull/17209) and the [`@backstage/config-loader` changelog](https://github.com/backstage/backstage/blob/master/packages/config-loader/CHANGELOG.md#130) for more details.
+
+### Catalog database performance tweaks
+
+We found some hotspots in the catalog database operations, and streamlined them. Hopefully this should be noticeable in the form of slightly lower CPU and IOPS usage.
+
+## Security Fixes
+
+A [security flaw in the `vm2` package](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-32314) used by the Scaffolder plugin was patched by our automated security processes in [#17810](https://github.com/backstage/backstage/pull/17810). The fixed version of `vm2` was already covered by the required version range of the Scaffolder plugin, so adopters are able to address this vulnerability separately without upgrading Backstage itself, as part of their regular security processes.
+
+## Upgrade path
+
+We recommend that you keep your Backstage project up to date with this latest release. For more guidance on how to upgrade, check out the documentation for [keeping Backstage updated](https://backstage.io/docs/getting-started/keeping-backstage-updated).
+
+## Links and References
+
+Below you can find a list of links and references to help you learn about and start using this new release.
+
+- [Backstage official website](https://backstage.io/), [documentation](https://backstage.io/docs/), and [getting started guide](https://backstage.io/docs/getting-started/)
+- [GitHub repository](https://github.com/backstage/backstage)
+- Backstage's [versioning and support policy](https://backstage.io/docs/overview/versioning-policy)
+- [Community Discord](https://discord.gg/backstage-687207715902193673) for discussions and support
+- [Changelog](https://github.com/backstage/backstage/tree/master/docs/releases/v1.14.0-changelog.md)
+- Backstage [Demos](https://backstage.io/demos), [Blog](https://backstage.io/blog), [Roadmap](https://backstage.io/docs/overview/roadmap) and [Plugins](https://backstage.io/plugins)
+
+Sign up for our [newsletter](https://mailchi.mp/spotify/backstage-community) if you want to be informed about what is happening in the world of Backstage.
diff --git a/docs/tutorials/switching-sqlite-postgres.md b/docs/tutorials/switching-sqlite-postgres.md
index b87a77f4ed..87afabda60 100644
--- a/docs/tutorials/switching-sqlite-postgres.md
+++ b/docs/tutorials/switching-sqlite-postgres.md
@@ -37,7 +37,7 @@ backend:
connection: ':memory:'
# highlight-remove-end
# highlight-add-start
- # config options: https://node-postgres.com/api/client
+ # config options: https://node-postgres.com/apis/client
client: pg
connection:
host: ${POSTGRES_HOST}
@@ -72,7 +72,7 @@ backend:
connection: ':memory:'
# highlight-remove-end
# highlight-add-start
- # config options: https://node-postgres.com/api/client
+ # config options: https://node-postgres.com/apis/client
client: pg
connection:
host: ${POSTGRES_HOST}
diff --git a/microsite/data/plugins/3scale.yaml b/microsite/data/plugins/3scale.yaml
new file mode 100644
index 0000000000..c190ed7e9e
--- /dev/null
+++ b/microsite/data/plugins/3scale.yaml
@@ -0,0 +1,10 @@
+---
+title: APIs with 3scale
+author: Red Hat
+authorUrl: https://redhat.com
+category: Discovery
+description: Synchronize 3scale content into the Backstage catalog.
+documentation: https://janus-idp.io/plugins/3scale
+iconUrl: http://janus-idp.io/images/plugins/3scale.svg
+npmPackageName: '@janus-idp/backstage-plugin-3scale-backend'
+addedDate: '2023-05-15'
diff --git a/microsite/data/plugins/jfrog-artifactory.yaml b/microsite/data/plugins/jfrog-artifactory.yaml
new file mode 100644
index 0000000000..279cbc161e
--- /dev/null
+++ b/microsite/data/plugins/jfrog-artifactory.yaml
@@ -0,0 +1,10 @@
+---
+title: Container Image Registry for JFrog Artifactory
+author: Red Hat
+authorUrl: https://redhat.com
+category: Image
+description: View container image details from JFrog Artifactory in Backstage.
+documentation: https://janus-idp.io/plugins/jfrog-artifactory
+iconUrl: http://janus-idp.io/images/plugins/jfrog-artifactory.svg
+npmPackageName: '@janus-idp/backstage-plugin-jfrog-artifactory'
+addedDate: '2023-05-15'
diff --git a/microsite/data/plugins/keycloak.yaml b/microsite/data/plugins/keycloak.yaml
new file mode 100644
index 0000000000..882d43f515
--- /dev/null
+++ b/microsite/data/plugins/keycloak.yaml
@@ -0,0 +1,10 @@
+---
+title: Authentication and Authorization with Keycloak
+author: Red Hat
+authorUrl: https://redhat.com
+category: Authentication
+description: Load users and groups from Keycloak, enabling use of multiple authentication providers to be applied to Backstage entities.
+documentation: https://janus-idp.io/plugins/keycloak
+iconUrl: http://janus-idp.io/images/plugins/keycloak.svg
+npmPackageName: '@janus-idp/backstage-plugin-keycloak-backend'
+addedDate: '2023-05-15'
diff --git a/microsite/data/plugins/ocm.yaml b/microsite/data/plugins/ocm.yaml
new file mode 100644
index 0000000000..15c23a0fb7
--- /dev/null
+++ b/microsite/data/plugins/ocm.yaml
@@ -0,0 +1,10 @@
+---
+title: Multi Cluster View with OCM
+author: Red Hat
+authorUrl: https://redhat.com
+category: OCM
+description: View clusters from OCM's MultiClusterHub and MultiCluster Engine in Backstage.
+documentation: https://janus-idp.io/plugins/ocm
+iconUrl: http://janus-idp.io/images/plugins/ocm.svg
+npmPackageName: '@janus-idp/backstage-plugin-ocm'
+addedDate: '2023-05-15'
diff --git a/microsite/data/plugins/quay.yaml b/microsite/data/plugins/quay.yaml
new file mode 100644
index 0000000000..e4aeb1ec1a
--- /dev/null
+++ b/microsite/data/plugins/quay.yaml
@@ -0,0 +1,10 @@
+---
+title: Container Image Registry for Quay
+author: Red Hat
+authorUrl: https://redhat.com
+category: Image
+description: View container image details from Quay in Backstage.
+documentation: https://janus-idp.io/plugins/quay
+iconUrl: http://janus-idp.io/images/plugins/quay.svg
+npmPackageName: '@janus-idp/backstage-plugin-quay'
+addedDate: '2023-05-15'
diff --git a/microsite/data/plugins/tekton.yaml b/microsite/data/plugins/tekton.yaml
new file mode 100644
index 0000000000..b1ebfb1349
--- /dev/null
+++ b/microsite/data/plugins/tekton.yaml
@@ -0,0 +1,10 @@
+---
+title: Pipelines with Tekton
+author: Red Hat
+authorUrl: https://redhat.com
+category: CI
+description: Easily view Tekton PipelineRun status for your services in Backstage.
+documentation: https://janus-idp.io/plugins/tekton
+iconUrl: http://janus-idp.io/images/plugins/tekton.svg
+npmPackageName: '@janus-idp/backstage-plugin-tekton'
+addedDate: '2023-05-15'
diff --git a/microsite/data/plugins/topology.yaml b/microsite/data/plugins/topology.yaml
new file mode 100644
index 0000000000..2f26f7c755
--- /dev/null
+++ b/microsite/data/plugins/topology.yaml
@@ -0,0 +1,10 @@
+---
+title: Application Topology for Kubernetes
+author: Red Hat
+authorUrl: https://redhat.com
+category: Kubernetes
+description: Visualize the deployment status and related resources of your applications deployed on any Kubernetes cluster.
+documentation: https://janus-idp.io/plugins/topology
+iconUrl: http://janus-idp.io/images/plugins/topology.svg
+npmPackageName: '@janus-idp/backstage-plugin-topology'
+addedDate: '2023-05-15'
diff --git a/microsite/docusaurus.config.js b/microsite/docusaurus.config.js
index d0f6bb277f..9985796e3f 100644
--- a/microsite/docusaurus.config.js
+++ b/microsite/docusaurus.config.js
@@ -173,7 +173,7 @@ module.exports = {
position: 'left',
},
{
- to: 'docs/releases/v1.12.0',
+ to: 'docs/releases/v1.14.0',
label: 'Releases',
position: 'left',
},
diff --git a/microsite/package.json b/microsite/package.json
index 601a234688..98301ce2d0 100644
--- a/microsite/package.json
+++ b/microsite/package.json
@@ -17,7 +17,7 @@
"docusaurus": "docusaurus"
},
"devDependencies": {
- "@docusaurus/module-type-aliases": "0.0.0-5569",
+ "@docusaurus/module-type-aliases": "0.0.0-5580",
"@spotify/prettier-config": "^14.0.0",
"@tsconfig/docusaurus": "^1.0.6",
"@types/webpack-env": "^1.18.0",
@@ -28,9 +28,9 @@
},
"prettier": "@spotify/prettier-config",
"dependencies": {
- "@docusaurus/core": "0.0.0-5569",
- "@docusaurus/plugin-client-redirects": "0.0.0-5569",
- "@docusaurus/preset-classic": "0.0.0-5569",
+ "@docusaurus/core": "0.0.0-5580",
+ "@docusaurus/plugin-client-redirects": "0.0.0-5580",
+ "@docusaurus/preset-classic": "0.0.0-5580",
"@swc/core": "^1.3.46",
"clsx": "^1.1.1",
"docusaurus-plugin-sass": "^0.2.3",
diff --git a/microsite/sidebars.json b/microsite/sidebars.json
index 1515c483b9..972a67f424 100644
--- a/microsite/sidebars.json
+++ b/microsite/sidebars.json
@@ -1,6 +1,7 @@
{
"releases": {
"Release Notes": [
+ "releases/v1.14.0",
"releases/v1.13.0",
"releases/v1.12.0",
"releases/v1.11.0",
@@ -80,7 +81,8 @@
"features/software-catalog/extending-the-model",
"features/software-catalog/external-integrations",
"features/software-catalog/catalog-customization",
- "features/software-catalog/software-catalog-api"
+ "features/software-catalog/software-catalog-api",
+ "features/software-catalog/creating-the-catalog-graph"
]
},
{
diff --git a/microsite/src/components/pluginsFilter/pluginsFilter.tsx b/microsite/src/components/pluginsFilter/pluginsFilter.tsx
new file mode 100644
index 0000000000..4023415fa6
--- /dev/null
+++ b/microsite/src/components/pluginsFilter/pluginsFilter.tsx
@@ -0,0 +1,39 @@
+import { ChipCategory } from '@site/src/util/types';
+import React from 'react';
+
+type Props = {
+ categories: ChipCategory[];
+ handleChipClick: (name: string) => void;
+};
+
+const PluginsFilter = ({ categories, handleChipClick }: Props) => {
+ const alphaCategories = categories.sort((a, b) =>
+ a.name.localeCompare(b.name),
+ );
+ return (
+
+
+
+
+ );
+};
+
+export default PluginsFilter;
diff --git a/microsite/src/pages/plugins/index.tsx b/microsite/src/pages/plugins/index.tsx
index 280a165daa..b1c9601110 100644
--- a/microsite/src/pages/plugins/index.tsx
+++ b/microsite/src/pages/plugins/index.tsx
@@ -1,13 +1,13 @@
import Link from '@docusaurus/Link';
import Layout from '@theme/Layout';
import clsx from 'clsx';
-import React from 'react';
-
+import React, { useState } from 'react';
import { IPluginData, PluginCard } from './_pluginCard';
import pluginsStyles from './plugins.module.scss';
+import { ChipCategory } from '@site/src/util/types';
import { truncateDescription } from '@site/src/util/truncateDescription';
+import PluginsFilter from '@site/src/components/pluginsFilter/pluginsFilter';
-//#region Plugin data import
const pluginsContext = require.context(
'../../../data/plugins',
false,
@@ -29,50 +29,137 @@ const plugins = pluginsContext.keys().reduce(
plugins.corePlugins.sort((a, b) => a.order - b.order);
plugins.otherPlugins.sort((a, b) => a.order - b.order);
-//#endregion
-const Plugins = () => (
-
-
-
-
-
Plugin Marketplace
+const Plugins = () => {
+ const allCategoriesSet = new Set(
+ [...plugins.corePlugins, ...plugins.otherPlugins].map(
+ ({ category }) => category,
+ ),
+ );
+ const allCategoriesArray = Array.from(allCategoriesSet).map(category => ({
+ name: category,
+ isSelected: false,
+ }));
+ const [categories, setCategories] =
+ useState
(allCategoriesArray);
+ const [selectedCategories, setSelectedCategories] = useState([]);
+ const [showCoreFeatures, setShowCoreFeatures] = useState(true);
+ const [showOtherPlugins, setShowOtherPlugins] = useState(true);
-
- Open source plugins that you can add to your Backstage deployment.
- Learn how to build a plugin.
-
+ const handleChipClick = (categoryName: string) => {
+ const isSelected =
+ categories.find(category => category.name === categoryName)?.isSelected ||
+ false;
+
+ const newSelectedCategories = isSelected
+ ? selectedCategories.filter(c => c !== categoryName)
+ : [...selectedCategories, categoryName];
+
+ setSelectedCategories(newSelectedCategories);
+
+ const newCategories = categories.map(category => {
+ if (category.name === categoryName) {
+ return { ...category, isSelected: !isSelected };
+ }
+ return category;
+ });
+
+ setCategories(newCategories);
+
+ if (!newSelectedCategories.includes('Core Feature')) {
+ setShowCoreFeatures(false);
+ } else {
+ setShowCoreFeatures(true);
+ }
+
+ if (
+ newSelectedCategories.length === 1 &&
+ newSelectedCategories[0] === 'Core Feature'
+ ) {
+ setShowOtherPlugins(false);
+ } else {
+ setShowOtherPlugins(true);
+ }
+
+ if (newSelectedCategories.length === 0) {
+ setShowOtherPlugins(true);
+ setShowCoreFeatures(true);
+ }
+ };
+
+ return (
+
+
+
+
+
Plugin Marketplace
+
+
+ Open source plugins that you can add to your Backstage deployment.
+ Learn how to build a plugin.
+
+
+
+
+ Add to Marketplace
+
-
- Add to Marketplace
-
+
+
+
+ {showCoreFeatures && (
+
+
Core Features
+
+ {plugins.corePlugins
+ .filter(
+ pluginData =>
+ !selectedCategories.length ||
+ selectedCategories.includes(pluginData.category),
+ )
+ .map(pluginData => (
+
+ ))}
+
+
+ )}
+
+ {showOtherPlugins && (
+
+
All Plugins
+
+ {plugins.otherPlugins
+ .filter(
+ pluginData =>
+ !selectedCategories.length ||
+ selectedCategories.includes(pluginData.category),
+ )
+ .map(pluginData => (
+
+ ))}
+
+
+ )}
-
-
-
- Core Features
-
-
- {plugins.corePlugins.map(pluginData => (
-
- ))}
-
-
- All Plugins
-
-
- {plugins.otherPlugins.map(pluginData => (
-
- ))}
-
-
-
-);
+
+ );
+};
export default Plugins;
diff --git a/microsite/src/pages/plugins/plugins.module.scss b/microsite/src/pages/plugins/plugins.module.scss
index bb08c2fd33..d5ea5de6e7 100644
--- a/microsite/src/pages/plugins/plugins.module.scss
+++ b/microsite/src/pages/plugins/plugins.module.scss
@@ -28,10 +28,60 @@
:global(.pluginsContainer) {
gap: 1rem;
display: grid;
- grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
+ grid-template-columns: repeat(auto-fit, minmax(250px, 300px));
+ }
+
+ @media (max-width: 768px) {
+ :global(.pluginsContainer) {
+ grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
+ }
+ }
+
+ :global(.hidePluginsHeader) {
+ display: none;
}
:global(.fit-content) {
width: fit-content;
}
+
+ :global(.pluginsFilterBox) {
+ width: 100%;
+ margin-bottom: 1rem;
+ height: 1rem;
+ }
+
+ :global(.dropdown) {
+ float: right;
+ margin-bottom: 1rem;
+ }
+
+ :global(.button--info) {
+ background-color: transparent;
+ border-color: var(--ifm-color-primary);
+ color: var(--ifm-color-primary);
+ min-width: 250px;
+ }
+
+ :global(label.dropdown__item) {
+ display: flex;
+ align-items: center;
+ cursor: pointer;
+ margin-top: 5px;
+
+ &:hover {
+ background-color: var(--ifm-color-primary);
+ color: black;
+ }
+ }
+
+ :global(.dropdown__label) {
+ font-size: 15px;
+ cursor: pointer;
+ }
+
+ :global(.dropdown__checkbox) {
+ margin-right: 10px;
+ cursor: pointer;
+ }
}
diff --git a/microsite/src/util/types.ts b/microsite/src/util/types.ts
new file mode 100644
index 0000000000..fba7c0ba46
--- /dev/null
+++ b/microsite/src/util/types.ts
@@ -0,0 +1,4 @@
+export type ChipCategory = {
+ name: string;
+ isSelected: boolean;
+};
diff --git a/microsite/yarn.lock b/microsite/yarn.lock
index c16f65240e..7097fb337e 100644
--- a/microsite/yarn.lock
+++ b/microsite/yarn.lock
@@ -1620,9 +1620,9 @@ __metadata:
languageName: node
linkType: hard
-"@docusaurus/core@npm:0.0.0-5569":
- version: 0.0.0-5569
- resolution: "@docusaurus/core@npm:0.0.0-5569"
+"@docusaurus/core@npm:0.0.0-5580":
+ version: 0.0.0-5580
+ resolution: "@docusaurus/core@npm:0.0.0-5580"
dependencies:
"@babel/core": ^7.20.12
"@babel/generator": ^7.21.1
@@ -1634,13 +1634,13 @@ __metadata:
"@babel/runtime": ^7.21.0
"@babel/runtime-corejs3": ^7.21.0
"@babel/traverse": ^7.21.2
- "@docusaurus/cssnano-preset": 0.0.0-5569
- "@docusaurus/logger": 0.0.0-5569
- "@docusaurus/mdx-loader": 0.0.0-5569
+ "@docusaurus/cssnano-preset": 0.0.0-5580
+ "@docusaurus/logger": 0.0.0-5580
+ "@docusaurus/mdx-loader": 0.0.0-5580
"@docusaurus/react-loadable": 5.5.2
- "@docusaurus/utils": 0.0.0-5569
- "@docusaurus/utils-common": 0.0.0-5569
- "@docusaurus/utils-validation": 0.0.0-5569
+ "@docusaurus/utils": 0.0.0-5580
+ "@docusaurus/utils-common": 0.0.0-5580
+ "@docusaurus/utils-validation": 0.0.0-5580
"@slorber/static-site-generator-webpack-plugin": ^4.0.7
"@svgr/webpack": ^6.5.1
autoprefixer: ^10.4.13
@@ -1700,41 +1700,41 @@ __metadata:
react-dom: ^16.8.4 || ^17.0.0
bin:
docusaurus: bin/docusaurus.mjs
- checksum: 573746ba85750381b110a98cfb529d8c961523b735c1945016bf8f79ba2cde38d08ecda88dc1be4852d8c9a49121e23ec964b05354fd6f6d26e6f31e71f175c1
+ checksum: 1160559109aa834bcd3dc0210ca824ad6cbdea363951c5cba690c1882c78a7da6e1e52b8a5c35fef3bfc23f9f66e84880c354727b7987d371cac8ec6fb77d1bb
languageName: node
linkType: hard
-"@docusaurus/cssnano-preset@npm:0.0.0-5569":
- version: 0.0.0-5569
- resolution: "@docusaurus/cssnano-preset@npm:0.0.0-5569"
+"@docusaurus/cssnano-preset@npm:0.0.0-5580":
+ version: 0.0.0-5580
+ resolution: "@docusaurus/cssnano-preset@npm:0.0.0-5580"
dependencies:
cssnano-preset-advanced: ^5.3.10
postcss: ^8.4.21
postcss-sort-media-queries: ^4.3.0
tslib: ^2.5.0
- checksum: 11408a0f9eb1a4a83b2045a0172ef1fbf0523a99fa9d81a8efe9a3a968b449887616ad8d95b0abb55b2bf82a178193c20c0304942c4f2ba51b693b9209031204
+ checksum: 4a46af1e9327d6ebbed3f0f6e60cc1ca59d5c07d39be35c42c13b0a64795b0b1565585adfca063798be79100aca425ee0c12f28a816b56686fb97726bec00f40
languageName: node
linkType: hard
-"@docusaurus/logger@npm:0.0.0-5569":
- version: 0.0.0-5569
- resolution: "@docusaurus/logger@npm:0.0.0-5569"
+"@docusaurus/logger@npm:0.0.0-5580":
+ version: 0.0.0-5580
+ resolution: "@docusaurus/logger@npm:0.0.0-5580"
dependencies:
chalk: ^4.1.2
tslib: ^2.5.0
- checksum: 26be75d7180d9b9d525ce5014e1e24c69fd54d1707cabc5acc76b47e3282cfb185613fb4d27f32b5cced92fe80384c68e2d991cf4cabbecca331f570c3e10d9b
+ checksum: 5792b6672623b70d38871713c47ba88cc0df6c8d224c28ac58d0512b8bf1b672786cc2fa0b1a79cc045c473e1e14b5a9cce4b01e623dd252893294d6aff9d1c2
languageName: node
linkType: hard
-"@docusaurus/mdx-loader@npm:0.0.0-5569":
- version: 0.0.0-5569
- resolution: "@docusaurus/mdx-loader@npm:0.0.0-5569"
+"@docusaurus/mdx-loader@npm:0.0.0-5580":
+ version: 0.0.0-5580
+ resolution: "@docusaurus/mdx-loader@npm:0.0.0-5580"
dependencies:
"@babel/parser": ^7.21.2
"@babel/traverse": ^7.21.2
- "@docusaurus/logger": 0.0.0-5569
- "@docusaurus/utils": 0.0.0-5569
- "@docusaurus/utils-validation": 0.0.0-5569
+ "@docusaurus/logger": 0.0.0-5580
+ "@docusaurus/utils": 0.0.0-5580
+ "@docusaurus/utils-validation": 0.0.0-5580
"@mdx-js/mdx": ^2.1.5
escape-html: ^1.0.3
estree-util-value-to-estree: ^2.1.0
@@ -1744,6 +1744,7 @@ __metadata:
image-size: ^1.0.2
mdast-util-mdx: ^2.0.0
mdast-util-to-string: ^3.0.0
+ rehype-raw: ^6.1.1
remark-comment: ^1.0.0
remark-directive: ^2.0.1
remark-emoji: ^2.2.0
@@ -1757,16 +1758,16 @@ __metadata:
peerDependencies:
react: ^16.8.4 || ^17.0.0
react-dom: ^16.8.4 || ^17.0.0
- checksum: bcf3b58ea3840d648ddc81c090c9905d559f642d8dc495f3fa86b377ae0bdabb6e1486ae2b258efa459a8bcf1da729a4a3a0c144f0de5dc083155b6d5c83099c
+ checksum: b32812e0bca91a29761fda742a790f67077bb7e8860e20e83f009e297ca49017192fa14051ab82f1a3e66800de9e5a0b561b32ce2dffb4eecc0aee48116d3490
languageName: node
linkType: hard
-"@docusaurus/module-type-aliases@npm:0.0.0-5569":
- version: 0.0.0-5569
- resolution: "@docusaurus/module-type-aliases@npm:0.0.0-5569"
+"@docusaurus/module-type-aliases@npm:0.0.0-5580":
+ version: 0.0.0-5580
+ resolution: "@docusaurus/module-type-aliases@npm:0.0.0-5580"
dependencies:
"@docusaurus/react-loadable": 5.5.2
- "@docusaurus/types": 0.0.0-5569
+ "@docusaurus/types": 0.0.0-5580
"@types/history": ^4.7.11
"@types/react": "*"
"@types/react-router-config": "*"
@@ -1776,19 +1777,19 @@ __metadata:
peerDependencies:
react: "*"
react-dom: "*"
- checksum: 08168317c606e44f8ead775bfc23feaeb3a03178a19a07504130a32cbf189926c08ef40cdc4f00a6df0983383ca0145a42df9112451b15a19067d8b6b10d5f89
+ checksum: b5b3544f2f2d395c1d406a1b3f03f719aee3aa3fd7603c54af3b09c4fb8bb153cf2ee6697bc9cfc9fb2550a11a3e474a52c9f2c132924e2be60662ffc6379ace
languageName: node
linkType: hard
-"@docusaurus/plugin-client-redirects@npm:0.0.0-5569":
- version: 0.0.0-5569
- resolution: "@docusaurus/plugin-client-redirects@npm:0.0.0-5569"
+"@docusaurus/plugin-client-redirects@npm:0.0.0-5580":
+ version: 0.0.0-5580
+ resolution: "@docusaurus/plugin-client-redirects@npm:0.0.0-5580"
dependencies:
- "@docusaurus/core": 0.0.0-5569
- "@docusaurus/logger": 0.0.0-5569
- "@docusaurus/utils": 0.0.0-5569
- "@docusaurus/utils-common": 0.0.0-5569
- "@docusaurus/utils-validation": 0.0.0-5569
+ "@docusaurus/core": 0.0.0-5580
+ "@docusaurus/logger": 0.0.0-5580
+ "@docusaurus/utils": 0.0.0-5580
+ "@docusaurus/utils-common": 0.0.0-5580
+ "@docusaurus/utils-validation": 0.0.0-5580
eta: ^2.0.1
fs-extra: ^11.1.0
lodash: ^4.17.21
@@ -1796,21 +1797,21 @@ __metadata:
peerDependencies:
react: ^16.8.4 || ^17.0.0
react-dom: ^16.8.4 || ^17.0.0
- checksum: f082956089fc889ea67b89c5c19ad6cd0bc9bb35b663a701f05905786938b1302b8667c2b6d0354bcf9efd35496a5920e1871b488fbc6285d0e36cfe3187e84e
+ checksum: 7414d2026446862505d0c679ad3757107f28100ea76309d2a024ebe78865f2fcf3e3b85c3117361142e319362b5a5b22e6bce968763fdfd0741b6a60d2eb3f4b
languageName: node
linkType: hard
-"@docusaurus/plugin-content-blog@npm:0.0.0-5569":
- version: 0.0.0-5569
- resolution: "@docusaurus/plugin-content-blog@npm:0.0.0-5569"
+"@docusaurus/plugin-content-blog@npm:0.0.0-5580":
+ version: 0.0.0-5580
+ resolution: "@docusaurus/plugin-content-blog@npm:0.0.0-5580"
dependencies:
- "@docusaurus/core": 0.0.0-5569
- "@docusaurus/logger": 0.0.0-5569
- "@docusaurus/mdx-loader": 0.0.0-5569
- "@docusaurus/types": 0.0.0-5569
- "@docusaurus/utils": 0.0.0-5569
- "@docusaurus/utils-common": 0.0.0-5569
- "@docusaurus/utils-validation": 0.0.0-5569
+ "@docusaurus/core": 0.0.0-5580
+ "@docusaurus/logger": 0.0.0-5580
+ "@docusaurus/mdx-loader": 0.0.0-5580
+ "@docusaurus/types": 0.0.0-5580
+ "@docusaurus/utils": 0.0.0-5580
+ "@docusaurus/utils-common": 0.0.0-5580
+ "@docusaurus/utils-validation": 0.0.0-5580
cheerio: ^1.0.0-rc.12
feed: ^4.2.2
fs-extra: ^11.1.0
@@ -1823,21 +1824,21 @@ __metadata:
peerDependencies:
react: ^16.8.4 || ^17.0.0
react-dom: ^16.8.4 || ^17.0.0
- checksum: b9eef1200e1b9bf1cfa7c4d4cb62b7344306d3a096c0cbfc36afd4b973a940b1bf9d6dc62124a0028bbd466313c7ee219444ebe2856588748d2fc33d1f48ae80
+ checksum: 0c5d37fa84298ce12b2a0f5c1dea1ee7d72d4b28c545fd081f3c3e5f93f15a980d877dcf88718aa1f4b8a03abf3d0c8c0df10d0a2ef22aac7a8a96d2786f91c2
languageName: node
linkType: hard
-"@docusaurus/plugin-content-docs@npm:0.0.0-5569":
- version: 0.0.0-5569
- resolution: "@docusaurus/plugin-content-docs@npm:0.0.0-5569"
+"@docusaurus/plugin-content-docs@npm:0.0.0-5580":
+ version: 0.0.0-5580
+ resolution: "@docusaurus/plugin-content-docs@npm:0.0.0-5580"
dependencies:
- "@docusaurus/core": 0.0.0-5569
- "@docusaurus/logger": 0.0.0-5569
- "@docusaurus/mdx-loader": 0.0.0-5569
- "@docusaurus/module-type-aliases": 0.0.0-5569
- "@docusaurus/types": 0.0.0-5569
- "@docusaurus/utils": 0.0.0-5569
- "@docusaurus/utils-validation": 0.0.0-5569
+ "@docusaurus/core": 0.0.0-5580
+ "@docusaurus/logger": 0.0.0-5580
+ "@docusaurus/mdx-loader": 0.0.0-5580
+ "@docusaurus/module-type-aliases": 0.0.0-5580
+ "@docusaurus/types": 0.0.0-5580
+ "@docusaurus/utils": 0.0.0-5580
+ "@docusaurus/utils-validation": 0.0.0-5580
"@types/react-router-config": ^5.0.6
combine-promises: ^1.1.0
fs-extra: ^11.1.0
@@ -1850,133 +1851,133 @@ __metadata:
peerDependencies:
react: ^16.8.4 || ^17.0.0
react-dom: ^16.8.4 || ^17.0.0
- checksum: 544d51dbb6c9037916aa8e3ed493624029ffdac0d0da70cfdb74f1d431a8da071eeeb0d567be6f63d48f9922f1594f08f950478a4ea427fae8001ff0b4ac5d83
+ checksum: fa58801bf0cebf055ed11adbadc3f27f7ed0ddb95174ab60bab76a21f759dc7abdfdd15f32141f7e259090c456634ee2556ac9a7daaaf7f5f6e3666d9f247d00
languageName: node
linkType: hard
-"@docusaurus/plugin-content-pages@npm:0.0.0-5569":
- version: 0.0.0-5569
- resolution: "@docusaurus/plugin-content-pages@npm:0.0.0-5569"
+"@docusaurus/plugin-content-pages@npm:0.0.0-5580":
+ version: 0.0.0-5580
+ resolution: "@docusaurus/plugin-content-pages@npm:0.0.0-5580"
dependencies:
- "@docusaurus/core": 0.0.0-5569
- "@docusaurus/mdx-loader": 0.0.0-5569
- "@docusaurus/types": 0.0.0-5569
- "@docusaurus/utils": 0.0.0-5569
- "@docusaurus/utils-validation": 0.0.0-5569
+ "@docusaurus/core": 0.0.0-5580
+ "@docusaurus/mdx-loader": 0.0.0-5580
+ "@docusaurus/types": 0.0.0-5580
+ "@docusaurus/utils": 0.0.0-5580
+ "@docusaurus/utils-validation": 0.0.0-5580
fs-extra: ^11.1.0
tslib: ^2.5.0
webpack: ^5.76.0
peerDependencies:
react: ^16.8.4 || ^17.0.0
react-dom: ^16.8.4 || ^17.0.0
- checksum: 16fa680c069d57d9d299ef515487a773c5b89d605cfe5b843392a7bce5e59b539b1855d7e0f2e11878b3021038bff6468b5f4adb9af7dc06884d7207772c2f95
+ checksum: 42bf814d9bf5540b8b2f8045f1577c49d3fca4a85069865695ff5dd9fa3f935283f9d46f920c4dd0a28190cf3b342d432b0985636bae9f05280835f73aec8c87
languageName: node
linkType: hard
-"@docusaurus/plugin-debug@npm:0.0.0-5569":
- version: 0.0.0-5569
- resolution: "@docusaurus/plugin-debug@npm:0.0.0-5569"
+"@docusaurus/plugin-debug@npm:0.0.0-5580":
+ version: 0.0.0-5580
+ resolution: "@docusaurus/plugin-debug@npm:0.0.0-5580"
dependencies:
- "@docusaurus/core": 0.0.0-5569
- "@docusaurus/types": 0.0.0-5569
- "@docusaurus/utils": 0.0.0-5569
+ "@docusaurus/core": 0.0.0-5580
+ "@docusaurus/types": 0.0.0-5580
+ "@docusaurus/utils": 0.0.0-5580
fs-extra: ^11.1.0
react-json-view: ^1.21.3
tslib: ^2.5.0
peerDependencies:
react: ^16.8.4 || ^17.0.0
react-dom: ^16.8.4 || ^17.0.0
- checksum: 0e3b8f5a92bc2b2ab193d76be6174b521238da7b4627775a852a4b4ff8690af28ab4586adbb84fc03abc6da276efc7474eed9350577b457e532defeb638d3184
+ checksum: dc58659adab3c859daa2e0dfc0b5b588d490a4d2bb313dcfdc9e92d559d0c4145c686b001805ad44a1f2a0f55f87524637a34844a4438cfeec479a2c24ec1c4d
languageName: node
linkType: hard
-"@docusaurus/plugin-google-analytics@npm:0.0.0-5569":
- version: 0.0.0-5569
- resolution: "@docusaurus/plugin-google-analytics@npm:0.0.0-5569"
+"@docusaurus/plugin-google-analytics@npm:0.0.0-5580":
+ version: 0.0.0-5580
+ resolution: "@docusaurus/plugin-google-analytics@npm:0.0.0-5580"
dependencies:
- "@docusaurus/core": 0.0.0-5569
- "@docusaurus/types": 0.0.0-5569
- "@docusaurus/utils-validation": 0.0.0-5569
+ "@docusaurus/core": 0.0.0-5580
+ "@docusaurus/types": 0.0.0-5580
+ "@docusaurus/utils-validation": 0.0.0-5580
tslib: ^2.5.0
peerDependencies:
react: ^16.8.4 || ^17.0.0
react-dom: ^16.8.4 || ^17.0.0
- checksum: a3e55d3a616009db499ca61493f9cf308c8ae012ec1ff680bff20c3b0b486f8d5d9552fd5c3d7b198e6c72d8e13ace7808d978bd8d56496953d2fd51d5ce0c32
+ checksum: f66a737a2b8b08648f28a279784e527fff34e2dba6f3022ec83b01a7f1781bfa0f208fac1db1fc919c1a01d405755c0816304cf4912e7b434b3924d5a968e6b0
languageName: node
linkType: hard
-"@docusaurus/plugin-google-gtag@npm:0.0.0-5569":
- version: 0.0.0-5569
- resolution: "@docusaurus/plugin-google-gtag@npm:0.0.0-5569"
+"@docusaurus/plugin-google-gtag@npm:0.0.0-5580":
+ version: 0.0.0-5580
+ resolution: "@docusaurus/plugin-google-gtag@npm:0.0.0-5580"
dependencies:
- "@docusaurus/core": 0.0.0-5569
- "@docusaurus/types": 0.0.0-5569
- "@docusaurus/utils-validation": 0.0.0-5569
+ "@docusaurus/core": 0.0.0-5580
+ "@docusaurus/types": 0.0.0-5580
+ "@docusaurus/utils-validation": 0.0.0-5580
"@types/gtag.js": ^0.0.12
tslib: ^2.5.0
peerDependencies:
react: ^16.8.4 || ^17.0.0
react-dom: ^16.8.4 || ^17.0.0
- checksum: d0a7f58bea6d5bfd786120ab6c75ab10a4d67bae1d60aadedba649a516f2f9e49237a96a7764f964c79084ae500b9520761cbf6aab60bd5e43bb976f04dd3194
+ checksum: 6b05e7c2a8e4d757660acca1131a0e3abfd21c5544a31e93bd08ff9c75deb5f3b131ed0e47283bbc2f102e00947ab7a64ee4d5a53f300e98fc82ec13c4a6eda1
languageName: node
linkType: hard
-"@docusaurus/plugin-google-tag-manager@npm:0.0.0-5569":
- version: 0.0.0-5569
- resolution: "@docusaurus/plugin-google-tag-manager@npm:0.0.0-5569"
+"@docusaurus/plugin-google-tag-manager@npm:0.0.0-5580":
+ version: 0.0.0-5580
+ resolution: "@docusaurus/plugin-google-tag-manager@npm:0.0.0-5580"
dependencies:
- "@docusaurus/core": 0.0.0-5569
- "@docusaurus/types": 0.0.0-5569
- "@docusaurus/utils-validation": 0.0.0-5569
+ "@docusaurus/core": 0.0.0-5580
+ "@docusaurus/types": 0.0.0-5580
+ "@docusaurus/utils-validation": 0.0.0-5580
tslib: ^2.5.0
peerDependencies:
react: ^16.8.4 || ^17.0.0
react-dom: ^16.8.4 || ^17.0.0
- checksum: acafad7eea5ba06c62addcef4f3cfaa6c43193827ec4b6c2d39ed2799df5301defa8ac8c73d49e35c328bd118c78412745f088764d97eac00da090be8e7906e5
+ checksum: 8904b150b2faa05dc49fd957ca8c392605e53073d031dfedb098be2abae924c3faf4f5e26ecfea91fe452695699801de9882a85a4371a1a35ca05fd57de232ae
languageName: node
linkType: hard
-"@docusaurus/plugin-sitemap@npm:0.0.0-5569":
- version: 0.0.0-5569
- resolution: "@docusaurus/plugin-sitemap@npm:0.0.0-5569"
+"@docusaurus/plugin-sitemap@npm:0.0.0-5580":
+ version: 0.0.0-5580
+ resolution: "@docusaurus/plugin-sitemap@npm:0.0.0-5580"
dependencies:
- "@docusaurus/core": 0.0.0-5569
- "@docusaurus/logger": 0.0.0-5569
- "@docusaurus/types": 0.0.0-5569
- "@docusaurus/utils": 0.0.0-5569
- "@docusaurus/utils-common": 0.0.0-5569
- "@docusaurus/utils-validation": 0.0.0-5569
+ "@docusaurus/core": 0.0.0-5580
+ "@docusaurus/logger": 0.0.0-5580
+ "@docusaurus/types": 0.0.0-5580
+ "@docusaurus/utils": 0.0.0-5580
+ "@docusaurus/utils-common": 0.0.0-5580
+ "@docusaurus/utils-validation": 0.0.0-5580
fs-extra: ^11.1.0
sitemap: ^7.1.1
tslib: ^2.5.0
peerDependencies:
react: ^16.8.4 || ^17.0.0
react-dom: ^16.8.4 || ^17.0.0
- checksum: 53fd5944a1cfbbe252e3f4398acf8aea3605ca3c5fb9ec48700ce6c162744bae541ccecd1d71e884777dfc2e98c6fa9a01b0f98829e6018e59003c3d4f4a1612
+ checksum: 4243cf4ed649d8e9a29b122ce23f1a6194cc5d7fc244e33326320315d8ff2756b18b9d85a0f0d49df33b2e68224c1b747e87ad5fa9944e7572bc761f641c5b77
languageName: node
linkType: hard
-"@docusaurus/preset-classic@npm:0.0.0-5569":
- version: 0.0.0-5569
- resolution: "@docusaurus/preset-classic@npm:0.0.0-5569"
+"@docusaurus/preset-classic@npm:0.0.0-5580":
+ version: 0.0.0-5580
+ resolution: "@docusaurus/preset-classic@npm:0.0.0-5580"
dependencies:
- "@docusaurus/core": 0.0.0-5569
- "@docusaurus/plugin-content-blog": 0.0.0-5569
- "@docusaurus/plugin-content-docs": 0.0.0-5569
- "@docusaurus/plugin-content-pages": 0.0.0-5569
- "@docusaurus/plugin-debug": 0.0.0-5569
- "@docusaurus/plugin-google-analytics": 0.0.0-5569
- "@docusaurus/plugin-google-gtag": 0.0.0-5569
- "@docusaurus/plugin-google-tag-manager": 0.0.0-5569
- "@docusaurus/plugin-sitemap": 0.0.0-5569
- "@docusaurus/theme-classic": 0.0.0-5569
- "@docusaurus/theme-common": 0.0.0-5569
- "@docusaurus/theme-search-algolia": 0.0.0-5569
- "@docusaurus/types": 0.0.0-5569
+ "@docusaurus/core": 0.0.0-5580
+ "@docusaurus/plugin-content-blog": 0.0.0-5580
+ "@docusaurus/plugin-content-docs": 0.0.0-5580
+ "@docusaurus/plugin-content-pages": 0.0.0-5580
+ "@docusaurus/plugin-debug": 0.0.0-5580
+ "@docusaurus/plugin-google-analytics": 0.0.0-5580
+ "@docusaurus/plugin-google-gtag": 0.0.0-5580
+ "@docusaurus/plugin-google-tag-manager": 0.0.0-5580
+ "@docusaurus/plugin-sitemap": 0.0.0-5580
+ "@docusaurus/theme-classic": 0.0.0-5580
+ "@docusaurus/theme-common": 0.0.0-5580
+ "@docusaurus/theme-search-algolia": 0.0.0-5580
+ "@docusaurus/types": 0.0.0-5580
peerDependencies:
react: ^16.8.4 || ^17.0.0
react-dom: ^16.8.4 || ^17.0.0
- checksum: a20013db1bd1c77e6fc2b901326d62f3003b6f6e6191f26aae6968cc2402837c0e84cc54571849d2af811fdae74d9359c0e96775d61b9f3efbbe881898e7f9a3
+ checksum: 3aa48aea40e33c2c7adcad54918e117b1f1d917eba110889d85a273e82b4bbf0d73d9e5bb8c5aaadd846ec341981bbe701014cbd93ddf55c83245ce1bc4a56a6
languageName: node
linkType: hard
@@ -1992,22 +1993,22 @@ __metadata:
languageName: node
linkType: hard
-"@docusaurus/theme-classic@npm:0.0.0-5569":
- version: 0.0.0-5569
- resolution: "@docusaurus/theme-classic@npm:0.0.0-5569"
+"@docusaurus/theme-classic@npm:0.0.0-5580":
+ version: 0.0.0-5580
+ resolution: "@docusaurus/theme-classic@npm:0.0.0-5580"
dependencies:
- "@docusaurus/core": 0.0.0-5569
- "@docusaurus/mdx-loader": 0.0.0-5569
- "@docusaurus/module-type-aliases": 0.0.0-5569
- "@docusaurus/plugin-content-blog": 0.0.0-5569
- "@docusaurus/plugin-content-docs": 0.0.0-5569
- "@docusaurus/plugin-content-pages": 0.0.0-5569
- "@docusaurus/theme-common": 0.0.0-5569
- "@docusaurus/theme-translations": 0.0.0-5569
- "@docusaurus/types": 0.0.0-5569
- "@docusaurus/utils": 0.0.0-5569
- "@docusaurus/utils-common": 0.0.0-5569
- "@docusaurus/utils-validation": 0.0.0-5569
+ "@docusaurus/core": 0.0.0-5580
+ "@docusaurus/mdx-loader": 0.0.0-5580
+ "@docusaurus/module-type-aliases": 0.0.0-5580
+ "@docusaurus/plugin-content-blog": 0.0.0-5580
+ "@docusaurus/plugin-content-docs": 0.0.0-5580
+ "@docusaurus/plugin-content-pages": 0.0.0-5580
+ "@docusaurus/theme-common": 0.0.0-5580
+ "@docusaurus/theme-translations": 0.0.0-5580
+ "@docusaurus/types": 0.0.0-5580
+ "@docusaurus/utils": 0.0.0-5580
+ "@docusaurus/utils-common": 0.0.0-5580
+ "@docusaurus/utils-validation": 0.0.0-5580
"@mdx-js/react": ^2.1.5
clsx: ^1.2.1
copy-text-to-clipboard: ^3.0.1
@@ -2024,21 +2025,21 @@ __metadata:
peerDependencies:
react: ^16.8.4 || ^17.0.0
react-dom: ^16.8.4 || ^17.0.0
- checksum: ee25082a4abc0d812cc54ee1bea642766f903cfa47d28c6a6efbc53cdaacf67bee594a4745c7ae97fe3ba6ddb136de36dd0c8cda2c310c5b40c9023bee70fcbb
+ checksum: 6a8f99d5143017d4754601fbf6487b697dc77945f730763917578abe0a1ef694607f888d824146aef86fdc2a620f0ddbd4925a23dcfc15b57d8338c1de73d526
languageName: node
linkType: hard
-"@docusaurus/theme-common@npm:0.0.0-5569":
- version: 0.0.0-5569
- resolution: "@docusaurus/theme-common@npm:0.0.0-5569"
+"@docusaurus/theme-common@npm:0.0.0-5580":
+ version: 0.0.0-5580
+ resolution: "@docusaurus/theme-common@npm:0.0.0-5580"
dependencies:
- "@docusaurus/mdx-loader": 0.0.0-5569
- "@docusaurus/module-type-aliases": 0.0.0-5569
- "@docusaurus/plugin-content-blog": 0.0.0-5569
- "@docusaurus/plugin-content-docs": 0.0.0-5569
- "@docusaurus/plugin-content-pages": 0.0.0-5569
- "@docusaurus/utils": 0.0.0-5569
- "@docusaurus/utils-common": 0.0.0-5569
+ "@docusaurus/mdx-loader": 0.0.0-5580
+ "@docusaurus/module-type-aliases": 0.0.0-5580
+ "@docusaurus/plugin-content-blog": 0.0.0-5580
+ "@docusaurus/plugin-content-docs": 0.0.0-5580
+ "@docusaurus/plugin-content-pages": 0.0.0-5580
+ "@docusaurus/utils": 0.0.0-5580
+ "@docusaurus/utils-common": 0.0.0-5580
"@types/history": ^4.7.11
"@types/react": "*"
"@types/react-router-config": "*"
@@ -2051,22 +2052,22 @@ __metadata:
peerDependencies:
react: ^16.8.4 || ^17.0.0
react-dom: ^16.8.4 || ^17.0.0
- checksum: 26a2d7dd6fd8b97e67db3bc093fcb9ce6f14d561aeccf94c3334d18a9a2900483dcb0ec4bb28d31e910bea459f20e4445207d5156c9cc02bd72601eb0256e3cc
+ checksum: 99524cb36a520568f63140734daaea8d56b35c0c8de3c36cb0102a93a0714f31a68aa5302607b9113a68e1b9fb7d73fd53ac80aa82ce48bf6f2d9e304ce21da2
languageName: node
linkType: hard
-"@docusaurus/theme-search-algolia@npm:0.0.0-5569":
- version: 0.0.0-5569
- resolution: "@docusaurus/theme-search-algolia@npm:0.0.0-5569"
+"@docusaurus/theme-search-algolia@npm:0.0.0-5580":
+ version: 0.0.0-5580
+ resolution: "@docusaurus/theme-search-algolia@npm:0.0.0-5580"
dependencies:
"@docsearch/react": ^3.3.3
- "@docusaurus/core": 0.0.0-5569
- "@docusaurus/logger": 0.0.0-5569
- "@docusaurus/plugin-content-docs": 0.0.0-5569
- "@docusaurus/theme-common": 0.0.0-5569
- "@docusaurus/theme-translations": 0.0.0-5569
- "@docusaurus/utils": 0.0.0-5569
- "@docusaurus/utils-validation": 0.0.0-5569
+ "@docusaurus/core": 0.0.0-5580
+ "@docusaurus/logger": 0.0.0-5580
+ "@docusaurus/plugin-content-docs": 0.0.0-5580
+ "@docusaurus/theme-common": 0.0.0-5580
+ "@docusaurus/theme-translations": 0.0.0-5580
+ "@docusaurus/utils": 0.0.0-5580
+ "@docusaurus/utils-validation": 0.0.0-5580
algoliasearch: ^4.15.0
algoliasearch-helper: ^3.12.0
clsx: ^1.2.1
@@ -2078,23 +2079,23 @@ __metadata:
peerDependencies:
react: ^16.8.4 || ^17.0.0
react-dom: ^16.8.4 || ^17.0.0
- checksum: 16178b7b9278c91eaedbb1629192dc2255939de6f509b721305c4c1795283e0fd4f859b305ce051ec5efdbe71884ceede6239445916b60ebec1858e3b5161d8f
+ checksum: efc6054ad979b9fde43bec8befeb41c0f9ca609832b51e4da42fdcdfd7e4ee599fd3e6949c576d9ff348c0ffd044a4dbb07638a1990f57586f493ba394369c96
languageName: node
linkType: hard
-"@docusaurus/theme-translations@npm:0.0.0-5569":
- version: 0.0.0-5569
- resolution: "@docusaurus/theme-translations@npm:0.0.0-5569"
+"@docusaurus/theme-translations@npm:0.0.0-5580":
+ version: 0.0.0-5580
+ resolution: "@docusaurus/theme-translations@npm:0.0.0-5580"
dependencies:
fs-extra: ^11.1.0
tslib: ^2.5.0
- checksum: 695f94ddc66d54b649042f0fb0a88b692613d10898ee3306c6c9b52340373493ac9bcceec9263332454d7c9179339517e40b083e949510f9e48ec834bc61fbb3
+ checksum: 1555956d2a7cf3122ded374937559ab19e6a6620fd0910d6bdbf48be78a10e595cfd9a0b9157c129f36f0bfae4297f07991f071a394c87cb9d2facee04597dd2
languageName: node
linkType: hard
-"@docusaurus/types@npm:0.0.0-5569":
- version: 0.0.0-5569
- resolution: "@docusaurus/types@npm:0.0.0-5569"
+"@docusaurus/types@npm:0.0.0-5580":
+ version: 0.0.0-5580
+ resolution: "@docusaurus/types@npm:0.0.0-5580"
dependencies:
"@types/history": ^4.7.11
"@types/react": "*"
@@ -2107,13 +2108,13 @@ __metadata:
peerDependencies:
react: ^16.8.4 || ^17.0.0
react-dom: ^16.8.4 || ^17.0.0
- checksum: 956b7af3a75b3632d1ff330d018353b38b22b3f4af8b39f452fcde33d74c70312dadd3e3bb40e04ecbe02e2462a67bfcbd4ef631462a9c710616c83186930b69
+ checksum: 5df67f562c5d516eb020ecf63e6343e1d6d18e2716b1b530a24c5d63b48229623222861c1a69f0e4715c34a768f7c05599340f1af18ca1259709467fb1149af9
languageName: node
linkType: hard
-"@docusaurus/utils-common@npm:0.0.0-5569":
- version: 0.0.0-5569
- resolution: "@docusaurus/utils-common@npm:0.0.0-5569"
+"@docusaurus/utils-common@npm:0.0.0-5580":
+ version: 0.0.0-5580
+ resolution: "@docusaurus/utils-common@npm:0.0.0-5580"
dependencies:
tslib: ^2.5.0
peerDependencies:
@@ -2121,28 +2122,28 @@ __metadata:
peerDependenciesMeta:
"@docusaurus/types":
optional: true
- checksum: 7d98e31beea34be91de7fdc971033439e412f535617707c79c4d2c0653c769ff4ce7521bd87f038811ccbae3b1d5c0e5d26eab9935ee8bc3515b926cbe175365
+ checksum: 238b2f12607834164fa82f9a3154703b75609719888cf96f06c9f70c17ab76a46babcfd66dce4f2722ecaaf47742a40a606101f0578f2345845fa23b6f262b5d
languageName: node
linkType: hard
-"@docusaurus/utils-validation@npm:0.0.0-5569":
- version: 0.0.0-5569
- resolution: "@docusaurus/utils-validation@npm:0.0.0-5569"
+"@docusaurus/utils-validation@npm:0.0.0-5580":
+ version: 0.0.0-5580
+ resolution: "@docusaurus/utils-validation@npm:0.0.0-5580"
dependencies:
- "@docusaurus/logger": 0.0.0-5569
- "@docusaurus/utils": 0.0.0-5569
+ "@docusaurus/logger": 0.0.0-5580
+ "@docusaurus/utils": 0.0.0-5580
joi: ^17.8.3
js-yaml: ^4.1.0
tslib: ^2.5.0
- checksum: b16730923e0d6fa627ca3e3105c152e814d540badb93f0a2ae1194672a76f8269ed48ed5c8f3259c0e0b9dfc6dc939035e0ac2e675b283ac4d414c642a95c893
+ checksum: cf0602b2411738adc47f5596fd4a3076137aa754aca24a4630700dc6355fed07e9a66ec093e438fa1199d9076bebae036317d073a604e4f0666f8390ceb73b5d
languageName: node
linkType: hard
-"@docusaurus/utils@npm:0.0.0-5569":
- version: 0.0.0-5569
- resolution: "@docusaurus/utils@npm:0.0.0-5569"
+"@docusaurus/utils@npm:0.0.0-5580":
+ version: 0.0.0-5580
+ resolution: "@docusaurus/utils@npm:0.0.0-5580"
dependencies:
- "@docusaurus/logger": 0.0.0-5569
+ "@docusaurus/logger": 0.0.0-5580
"@svgr/webpack": ^6.5.1
escape-string-regexp: ^4.0.0
file-loader: ^6.2.0
@@ -2163,7 +2164,7 @@ __metadata:
peerDependenciesMeta:
"@docusaurus/types":
optional: true
- checksum: 33e044f9b5328cf9d1b17637fa41a6138c5e18b5f3d73389bbb9f71735a273a9e27660d9a9103766406549edfa0691e2524cc84e6ebc2b0d308991df3bee0dd9
+ checksum: c9b085d3724cba748b3db763f056742aace45cc58a636e23513ee6a7db781558377de5507b651b3566562fa71eebb42ac835034cdcbcc2c77edf9b4009c6a215
languageName: node
linkType: hard
@@ -2603,90 +2604,90 @@ __metadata:
languageName: node
linkType: hard
-"@swc/core-darwin-arm64@npm:1.3.51":
- version: 1.3.51
- resolution: "@swc/core-darwin-arm64@npm:1.3.51"
+"@swc/core-darwin-arm64@npm:1.3.59":
+ version: 1.3.59
+ resolution: "@swc/core-darwin-arm64@npm:1.3.59"
conditions: os=darwin & cpu=arm64
languageName: node
linkType: hard
-"@swc/core-darwin-x64@npm:1.3.51":
- version: 1.3.51
- resolution: "@swc/core-darwin-x64@npm:1.3.51"
+"@swc/core-darwin-x64@npm:1.3.59":
+ version: 1.3.59
+ resolution: "@swc/core-darwin-x64@npm:1.3.59"
conditions: os=darwin & cpu=x64
languageName: node
linkType: hard
-"@swc/core-linux-arm-gnueabihf@npm:1.3.51":
- version: 1.3.51
- resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.51"
+"@swc/core-linux-arm-gnueabihf@npm:1.3.59":
+ version: 1.3.59
+ resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.59"
conditions: os=linux & cpu=arm
languageName: node
linkType: hard
-"@swc/core-linux-arm64-gnu@npm:1.3.51":
- version: 1.3.51
- resolution: "@swc/core-linux-arm64-gnu@npm:1.3.51"
+"@swc/core-linux-arm64-gnu@npm:1.3.59":
+ version: 1.3.59
+ resolution: "@swc/core-linux-arm64-gnu@npm:1.3.59"
conditions: os=linux & cpu=arm64 & libc=glibc
languageName: node
linkType: hard
-"@swc/core-linux-arm64-musl@npm:1.3.51":
- version: 1.3.51
- resolution: "@swc/core-linux-arm64-musl@npm:1.3.51"
+"@swc/core-linux-arm64-musl@npm:1.3.59":
+ version: 1.3.59
+ resolution: "@swc/core-linux-arm64-musl@npm:1.3.59"
conditions: os=linux & cpu=arm64 & libc=musl
languageName: node
linkType: hard
-"@swc/core-linux-x64-gnu@npm:1.3.51":
- version: 1.3.51
- resolution: "@swc/core-linux-x64-gnu@npm:1.3.51"
+"@swc/core-linux-x64-gnu@npm:1.3.59":
+ version: 1.3.59
+ resolution: "@swc/core-linux-x64-gnu@npm:1.3.59"
conditions: os=linux & cpu=x64 & libc=glibc
languageName: node
linkType: hard
-"@swc/core-linux-x64-musl@npm:1.3.51":
- version: 1.3.51
- resolution: "@swc/core-linux-x64-musl@npm:1.3.51"
+"@swc/core-linux-x64-musl@npm:1.3.59":
+ version: 1.3.59
+ resolution: "@swc/core-linux-x64-musl@npm:1.3.59"
conditions: os=linux & cpu=x64 & libc=musl
languageName: node
linkType: hard
-"@swc/core-win32-arm64-msvc@npm:1.3.51":
- version: 1.3.51
- resolution: "@swc/core-win32-arm64-msvc@npm:1.3.51"
+"@swc/core-win32-arm64-msvc@npm:1.3.59":
+ version: 1.3.59
+ resolution: "@swc/core-win32-arm64-msvc@npm:1.3.59"
conditions: os=win32 & cpu=arm64
languageName: node
linkType: hard
-"@swc/core-win32-ia32-msvc@npm:1.3.51":
- version: 1.3.51
- resolution: "@swc/core-win32-ia32-msvc@npm:1.3.51"
+"@swc/core-win32-ia32-msvc@npm:1.3.59":
+ version: 1.3.59
+ resolution: "@swc/core-win32-ia32-msvc@npm:1.3.59"
conditions: os=win32 & cpu=ia32
languageName: node
linkType: hard
-"@swc/core-win32-x64-msvc@npm:1.3.51":
- version: 1.3.51
- resolution: "@swc/core-win32-x64-msvc@npm:1.3.51"
+"@swc/core-win32-x64-msvc@npm:1.3.59":
+ version: 1.3.59
+ resolution: "@swc/core-win32-x64-msvc@npm:1.3.59"
conditions: os=win32 & cpu=x64
languageName: node
linkType: hard
"@swc/core@npm:^1.3.46":
- version: 1.3.51
- resolution: "@swc/core@npm:1.3.51"
+ version: 1.3.59
+ resolution: "@swc/core@npm:1.3.59"
dependencies:
- "@swc/core-darwin-arm64": 1.3.51
- "@swc/core-darwin-x64": 1.3.51
- "@swc/core-linux-arm-gnueabihf": 1.3.51
- "@swc/core-linux-arm64-gnu": 1.3.51
- "@swc/core-linux-arm64-musl": 1.3.51
- "@swc/core-linux-x64-gnu": 1.3.51
- "@swc/core-linux-x64-musl": 1.3.51
- "@swc/core-win32-arm64-msvc": 1.3.51
- "@swc/core-win32-ia32-msvc": 1.3.51
- "@swc/core-win32-x64-msvc": 1.3.51
+ "@swc/core-darwin-arm64": 1.3.59
+ "@swc/core-darwin-x64": 1.3.59
+ "@swc/core-linux-arm-gnueabihf": 1.3.59
+ "@swc/core-linux-arm64-gnu": 1.3.59
+ "@swc/core-linux-arm64-musl": 1.3.59
+ "@swc/core-linux-x64-gnu": 1.3.59
+ "@swc/core-linux-x64-musl": 1.3.59
+ "@swc/core-win32-arm64-msvc": 1.3.59
+ "@swc/core-win32-ia32-msvc": 1.3.59
+ "@swc/core-win32-x64-msvc": 1.3.59
peerDependencies:
"@swc/helpers": ^0.5.0
dependenciesMeta:
@@ -2713,7 +2714,7 @@ __metadata:
peerDependenciesMeta:
"@swc/helpers":
optional: true
- checksum: f4e72d347b26353fbb48eae110a63c939922a38b20730ea010f5ae3dd15434f212dce582df05556ec35e677c089dfb6d00f5dd6fc655f8c9a7829458e4301469
+ checksum: 0283f39cf49cd12a6dc7062ef9ea4fa93e1a4f622ce46903a09605219f4f47ed5ad03925c6146d09ffe6ee02a89bb14e3c82eb86b4c60ecce4985ea6e078ffcf
languageName: node
linkType: hard
@@ -2991,6 +2992,13 @@ __metadata:
languageName: node
linkType: hard
+"@types/parse5@npm:^6.0.0":
+ version: 6.0.3
+ resolution: "@types/parse5@npm:6.0.3"
+ checksum: ddb59ee4144af5dfcc508a8dcf32f37879d11e12559561e65788756b95b33e6f03ea027d88e1f5408f9b7bfb656bf630ace31a2169edf44151daaf8dd58df1b7
+ languageName: node
+ linkType: hard
+
"@types/prop-types@npm:*":
version: 15.7.5
resolution: "@types/prop-types@npm:15.7.5"
@@ -3737,10 +3745,10 @@ __metadata:
version: 0.0.0-use.local
resolution: "backstage-microsite@workspace:."
dependencies:
- "@docusaurus/core": 0.0.0-5569
- "@docusaurus/module-type-aliases": 0.0.0-5569
- "@docusaurus/plugin-client-redirects": 0.0.0-5569
- "@docusaurus/preset-classic": 0.0.0-5569
+ "@docusaurus/core": 0.0.0-5580
+ "@docusaurus/module-type-aliases": 0.0.0-5580
+ "@docusaurus/plugin-client-redirects": 0.0.0-5580
+ "@docusaurus/preset-classic": 0.0.0-5580
"@spotify/prettier-config": ^14.0.0
"@swc/core": ^1.3.46
"@tsconfig/docusaurus": ^1.0.6
@@ -6132,6 +6140,21 @@ __metadata:
languageName: node
linkType: hard
+"hast-util-from-parse5@npm:^7.0.0":
+ version: 7.1.2
+ resolution: "hast-util-from-parse5@npm:7.1.2"
+ dependencies:
+ "@types/hast": ^2.0.0
+ "@types/unist": ^2.0.0
+ hastscript: ^7.0.0
+ property-information: ^6.0.0
+ vfile: ^5.0.0
+ vfile-location: ^4.0.0
+ web-namespaces: ^2.0.0
+ checksum: 7b4ed5b508b1352127c6719f7b0c0880190cf9859fe54ccaf7c9228ecf623d36cef3097910b3874d2fe1aac6bf4cf45d3cc2303daac3135a05e9ade6534ddddb
+ languageName: node
+ linkType: hard
+
"hast-util-parse-selector@npm:^3.0.0":
version: 3.1.1
resolution: "hast-util-parse-selector@npm:3.1.1"
@@ -6141,6 +6164,25 @@ __metadata:
languageName: node
linkType: hard
+"hast-util-raw@npm:^7.2.0":
+ version: 7.2.3
+ resolution: "hast-util-raw@npm:7.2.3"
+ dependencies:
+ "@types/hast": ^2.0.0
+ "@types/parse5": ^6.0.0
+ hast-util-from-parse5: ^7.0.0
+ hast-util-to-parse5: ^7.0.0
+ html-void-elements: ^2.0.0
+ parse5: ^6.0.0
+ unist-util-position: ^4.0.0
+ unist-util-visit: ^4.0.0
+ vfile: ^5.0.0
+ web-namespaces: ^2.0.0
+ zwitch: ^2.0.0
+ checksum: 21857eea3ffb8fd92d2d9be7793b56d0b2c40db03c4cfa14828855ae41d7c584917aa83efb7157220b2e41e25e95f81f24679ac342c35145e5f1c1d39015f81f
+ languageName: node
+ linkType: hard
+
"hast-util-to-estree@npm:^2.0.0":
version: 2.3.2
resolution: "hast-util-to-estree@npm:2.3.2"
@@ -6164,6 +6206,20 @@ __metadata:
languageName: node
linkType: hard
+"hast-util-to-parse5@npm:^7.0.0":
+ version: 7.1.0
+ resolution: "hast-util-to-parse5@npm:7.1.0"
+ dependencies:
+ "@types/hast": ^2.0.0
+ comma-separated-tokens: ^2.0.0
+ property-information: ^6.0.0
+ space-separated-tokens: ^2.0.0
+ web-namespaces: ^2.0.0
+ zwitch: ^2.0.0
+ checksum: 3a7f2175a3db599bbae7e49ba73d3e5e688e5efca7590ff50130ba108ad649f728402815d47db49146f6b94c14c934bf119915da9f6964e38802c122bcc8af6b
+ languageName: node
+ linkType: hard
+
"hast-util-whitespace@npm:^2.0.0":
version: 2.0.1
resolution: "hast-util-whitespace@npm:2.0.1"
@@ -6171,7 +6227,7 @@ __metadata:
languageName: node
linkType: hard
-"hastscript@npm:^7.1.0":
+"hastscript@npm:^7.0.0, hastscript@npm:^7.1.0":
version: 7.2.0
resolution: "hastscript@npm:7.2.0"
dependencies:
@@ -6276,6 +6332,13 @@ __metadata:
languageName: node
linkType: hard
+"html-void-elements@npm:^2.0.0":
+ version: 2.0.1
+ resolution: "html-void-elements@npm:2.0.1"
+ checksum: 06d41f13b9d5d6e0f39861c4bec9a9196fa4906d56cd5cf6cf54ad2e52a85bf960cca2bf9600026bde16c8331db171bedba5e5a35e2e43630c8f1d497b2fb658
+ languageName: node
+ linkType: hard
+
"html-webpack-plugin@npm:^5.5.0":
version: 5.5.0
resolution: "html-webpack-plugin@npm:5.5.0"
@@ -8735,6 +8798,13 @@ __metadata:
languageName: node
linkType: hard
+"parse5@npm:^6.0.0":
+ version: 6.0.1
+ resolution: "parse5@npm:6.0.1"
+ checksum: 7d569a176c5460897f7c8f3377eff640d54132b9be51ae8a8fa4979af940830b2b0c296ce75e5bd8f4041520aadde13170dbdec44889975f906098ea0002f4bd
+ languageName: node
+ linkType: hard
+
"parse5@npm:^7.0.0":
version: 7.1.2
resolution: "parse5@npm:7.1.2"
@@ -9901,6 +9971,17 @@ __metadata:
languageName: node
linkType: hard
+"rehype-raw@npm:^6.1.1":
+ version: 6.1.1
+ resolution: "rehype-raw@npm:6.1.1"
+ dependencies:
+ "@types/hast": ^2.0.0
+ hast-util-raw: ^7.2.0
+ unified: ^10.0.0
+ checksum: a1f9d309e609f49fb1f1e06e722705f4dd2e569653a89f756eaccb33b612cf1bb511216a81d10a619d11d047afc161e4b3cb99b957df05a8ba8fdbd5843f949a
+ languageName: node
+ linkType: hard
+
"relateurl@npm:^0.2.7":
version: 0.2.7
resolution: "relateurl@npm:0.2.7"
@@ -11526,6 +11607,13 @@ __metadata:
languageName: node
linkType: hard
+"web-namespaces@npm:^2.0.0":
+ version: 2.0.1
+ resolution: "web-namespaces@npm:2.0.1"
+ checksum: b6d9f02f1a43d0ef0848a812d89c83801d5bbad57d8bb61f02eb6d7eb794c3736f6cc2e1191664bb26136594c8218ac609f4069722c6f56d9fc2d808fa9271c6
+ languageName: node
+ linkType: hard
+
"webidl-conversions@npm:^3.0.0":
version: 3.0.1
resolution: "webidl-conversions@npm:3.0.1"
diff --git a/package.json b/package.json
index 7e77896821..3a7e05d65a 100644
--- a/package.json
+++ b/package.json
@@ -47,7 +47,7 @@
"@types/react": "^17",
"@types/react-dom": "^17"
},
- "version": "1.14.0-next.2",
+ "version": "1.14.0",
"dependencies": {
"@backstage/errors": "workspace:^",
"@manypkg/get-packages": "^1.1.3"
diff --git a/packages/app-defaults/CHANGELOG.md b/packages/app-defaults/CHANGELOG.md
index a4ab5e013c..7cb6737b73 100644
--- a/packages/app-defaults/CHANGELOG.md
+++ b/packages/app-defaults/CHANGELOG.md
@@ -1,5 +1,23 @@
# @backstage/app-defaults
+## 1.3.1
+
+### Patch Changes
+
+- 575d9178eff: Added a System Icon for resource entities.
+ This can be obtained using:
+
+ ```ts
+ useApp().getSystemIcon('kind:resource');
+ ```
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/core-app-api@1.8.0
+ - @backstage/core-components@0.13.1
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/plugin-permission-react@0.4.12
+
## 1.3.1-next.2
### Patch Changes
diff --git a/packages/app-defaults/package.json b/packages/app-defaults/package.json
index f1c806ebe2..90f50d0eff 100644
--- a/packages/app-defaults/package.json
+++ b/packages/app-defaults/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/app-defaults",
"description": "Provides the default wiring of a Backstage App",
- "version": "1.3.1-next.2",
+ "version": "1.3.1",
"publishConfig": {
"access": "public",
"main": "dist/index.esm.js",
diff --git a/packages/app-defaults/src/defaults/themes.tsx b/packages/app-defaults/src/defaults/themes.tsx
index 397c160168..10368bd3bc 100644
--- a/packages/app-defaults/src/defaults/themes.tsx
+++ b/packages/app-defaults/src/defaults/themes.tsx
@@ -15,11 +15,12 @@
*/
import React from 'react';
-import { darkTheme, lightTheme } from '@backstage/theme';
+import {
+ UnifiedThemeProvider,
+ themes as builtinThemes,
+} from '@backstage/theme';
import DarkIcon from '@material-ui/icons/Brightness2';
import LightIcon from '@material-ui/icons/WbSunny';
-import { ThemeProvider } from '@material-ui/core/styles';
-import CssBaseline from '@material-ui/core/CssBaseline';
import { AppTheme } from '@backstage/core-plugin-api';
export const themes: AppTheme[] = [
@@ -29,9 +30,7 @@ export const themes: AppTheme[] = [
variant: 'light',
icon:
,
Provider: ({ children }) => (
-
- {children}
-
+
),
},
{
@@ -40,9 +39,7 @@ export const themes: AppTheme[] = [
variant: 'dark',
icon:
,
Provider: ({ children }) => (
-
- {children}
-
+
),
},
];
diff --git a/packages/app/CHANGELOG.md b/packages/app/CHANGELOG.md
index 84f7ab32a1..5fdee05829 100644
--- a/packages/app/CHANGELOG.md
+++ b/packages/app/CHANGELOG.md
@@ -1,5 +1,77 @@
# example-app
+## 0.2.83
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-tech-insights@0.3.10
+ - @backstage/plugin-scaffolder@1.13.1
+ - @backstage/plugin-devtools@0.1.0
+ - @backstage/plugin-kubernetes@0.9.0
+ - @backstage/plugin-search@1.3.0
+ - @backstage/plugin-home@0.5.2
+ - @backstage/plugin-explore@0.4.3
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-techdocs@1.6.2
+ - @backstage/app-defaults@1.3.1
+ - @backstage/plugin-badges@0.2.42
+ - @backstage/plugin-tech-radar@0.6.4
+ - @backstage/cli@0.22.7
+ - @backstage/plugin-stack-overflow@0.1.15
+ - @backstage/plugin-gcalendar@0.3.14
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-app-api@1.8.0
+ - @backstage/plugin-scaffolder-react@1.4.0
+ - @backstage/plugin-catalog-graph@0.2.30
+ - @backstage/plugin-circleci@0.3.18
+ - @backstage/plugin-search-react@1.6.0
+ - @backstage/plugin-org@0.6.8
+ - @backstage/core-components@0.13.1
+ - @backstage/plugin-azure-devops@0.3.0
+ - @backstage/plugin-jenkins@0.8.0
+ - @backstage/plugin-octopus-deploy@0.2.0
+ - @backstage/plugin-techdocs-module-addons-contrib@1.0.13
+ - @backstage/plugin-user-settings@0.7.3
+ - @backstage/plugin-shortcuts@0.3.10
+ - @backstage/integration-react@1.1.13
+ - @backstage/plugin-airbrake@0.3.18
+ - @backstage/plugin-api-docs@0.9.3
+ - @backstage/plugin-azure-sites@0.1.7
+ - @backstage/plugin-cloudbuild@0.3.18
+ - @backstage/plugin-code-coverage@0.2.11
+ - @backstage/plugin-cost-insights@0.12.7
+ - @backstage/plugin-dynatrace@5.0.0
+ - @backstage/plugin-entity-feedback@0.2.1
+ - @backstage/plugin-gcp-projects@0.3.37
+ - @backstage/plugin-github-actions@0.5.18
+ - @backstage/plugin-gocd@0.1.24
+ - @backstage/plugin-graphiql@0.2.50
+ - @backstage/plugin-kafka@0.3.18
+ - @backstage/plugin-lighthouse@0.4.3
+ - @backstage/plugin-linguist@0.1.3
+ - @backstage/plugin-microsoft-calendar@0.1.3
+ - @backstage/plugin-newrelic@0.3.36
+ - @backstage/plugin-pagerduty@0.5.11
+ - @backstage/plugin-playlist@0.1.9
+ - @backstage/plugin-puppetdb@0.1.1
+ - @backstage/plugin-rollbar@0.4.18
+ - @backstage/plugin-sentry@0.5.3
+ - @backstage/plugin-stackstorm@0.1.2
+ - @backstage/plugin-techdocs-react@1.1.6
+ - @backstage/plugin-todo@0.2.20
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/plugin-apache-airflow@0.2.11
+ - @backstage/plugin-catalog-common@1.0.13
+ - @backstage/plugin-catalog-import@0.9.8
+ - @backstage/plugin-linguist-common@0.1.0
+ - @backstage/plugin-newrelic-dashboard@0.2.11
+ - @backstage/plugin-permission-react@0.4.12
+ - @backstage/plugin-search-common@1.2.3
+ - @internal/plugin-catalog-customized@0.0.10
+
## 0.2.83-next.2
### Patch Changes
diff --git a/packages/app/package.json b/packages/app/package.json
index 56ae2e9c9e..c2330244d0 100644
--- a/packages/app/package.json
+++ b/packages/app/package.json
@@ -1,6 +1,6 @@
{
"name": "example-app",
- "version": "0.2.83-next.2",
+ "version": "0.2.83",
"private": true,
"backstage": {
"role": "frontend"
diff --git a/packages/backend-app-api/CHANGELOG.md b/packages/backend-app-api/CHANGELOG.md
index 00e7582ad3..dcb0e722c0 100644
--- a/packages/backend-app-api/CHANGELOG.md
+++ b/packages/backend-app-api/CHANGELOG.md
@@ -1,5 +1,22 @@
# @backstage/backend-app-api
+## 0.4.3
+
+### Patch Changes
+
+- cf13b482f9e: Switch `configServiceFactory` to use `ConfigSources` from `@backstage/config-loader` to load config.
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/config-loader@1.3.0
+ - @backstage/plugin-permission-node@0.7.8
+ - @backstage/backend-tasks@0.5.2
+ - @backstage/plugin-auth-node@0.2.14
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/cli-common@0.1.12
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+ - @backstage/types@1.0.2
+
## 0.4.3-next.1
### Patch Changes
diff --git a/packages/backend-app-api/package.json b/packages/backend-app-api/package.json
index a21484ff2e..dc5b38daae 100644
--- a/packages/backend-app-api/package.json
+++ b/packages/backend-app-api/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/backend-app-api",
"description": "Core API used by Backstage backend apps",
- "version": "0.4.3-next.1",
+ "version": "0.4.3",
"main": "src/index.ts",
"types": "src/index.ts",
"publishConfig": {
diff --git a/packages/backend-common/CHANGELOG.md b/packages/backend-common/CHANGELOG.md
index fc6d99cf93..cdf7f6259d 100644
--- a/packages/backend-common/CHANGELOG.md
+++ b/packages/backend-common/CHANGELOG.md
@@ -1,5 +1,25 @@
# @backstage/backend-common
+## 0.18.5
+
+### Patch Changes
+
+- 0297f7a54af: Remove the direct dependency on deprecated "request" library
+- 284db225083: Updated the `DatabaseManager` to include the plugin id in the Postgres application name of the database connections created for each plugin.
+- 3659c71c5d9: Standardize `@aws-sdk` v3 versions
+- 42d817e76ab: Added `HostDiscovery` to supersede deprecated `SingleHostDiscovery` (deprecated due to name)
+- Updated dependencies
+ - @backstage/config-loader@1.3.0
+ - @backstage/integration@1.4.5
+ - @backstage/integration-aws-node@0.1.3
+ - @backstage/backend-app-api@0.4.3
+ - @backstage/backend-dev-utils@0.1.1
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/cli-common@0.1.12
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+ - @backstage/types@1.0.2
+
## 0.18.5-next.1
### Patch Changes
diff --git a/packages/backend-common/package.json b/packages/backend-common/package.json
index f8175bac29..914400368a 100644
--- a/packages/backend-common/package.json
+++ b/packages/backend-common/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/backend-common",
"description": "Common functionality library for Backstage backends",
- "version": "0.18.5-next.1",
+ "version": "0.18.5",
"main": "src/index.ts",
"types": "src/index.ts",
"publishConfig": {
diff --git a/packages/backend-defaults/CHANGELOG.md b/packages/backend-defaults/CHANGELOG.md
index 52043b4ecf..49d5a8bf1f 100644
--- a/packages/backend-defaults/CHANGELOG.md
+++ b/packages/backend-defaults/CHANGELOG.md
@@ -1,5 +1,14 @@
# @backstage/backend-defaults
+## 0.1.10
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/backend-app-api@0.4.3
+ - @backstage/backend-plugin-api@0.5.2
+
## 0.1.10-next.1
### Patch Changes
diff --git a/packages/backend-defaults/package.json b/packages/backend-defaults/package.json
index d99e462efa..09b5b82dfc 100644
--- a/packages/backend-defaults/package.json
+++ b/packages/backend-defaults/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/backend-defaults",
"description": "Backend defaults used by Backstage backend apps",
- "version": "0.1.10-next.1",
+ "version": "0.1.10",
"main": "src/index.ts",
"types": "src/index.ts",
"publishConfig": {
diff --git a/packages/backend-next/CHANGELOG.md b/packages/backend-next/CHANGELOG.md
index e01a00f8d2..8253a108b9 100644
--- a/packages/backend-next/CHANGELOG.md
+++ b/packages/backend-next/CHANGELOG.md
@@ -1,5 +1,27 @@
# example-backend-next
+## 0.0.11
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-scaffolder-backend@1.14.0
+ - @backstage/plugin-catalog-backend@1.9.1
+ - @backstage/plugin-kubernetes-backend@0.11.0
+ - @backstage/plugin-todo-backend@0.1.42
+ - @backstage/plugin-permission-node@0.7.8
+ - @backstage/plugin-search-backend@1.3.1
+ - @backstage/backend-defaults@0.1.10
+ - @backstage/plugin-app-backend@0.3.45
+ - @backstage/plugin-auth-node@0.2.14
+ - @backstage/plugin-search-backend-module-catalog@0.1.1
+ - @backstage/plugin-search-backend-module-explore@0.1.1
+ - @backstage/plugin-search-backend-module-techdocs@0.1.1
+ - @backstage/plugin-techdocs-backend@1.6.2
+ - @backstage/plugin-permission-backend@0.5.20
+ - @backstage/plugin-search-backend-node@1.2.1
+ - @backstage/plugin-permission-common@0.7.5
+
## 0.0.11-next.2
### Patch Changes
diff --git a/packages/backend-next/package.json b/packages/backend-next/package.json
index f69435a838..a50df741ec 100644
--- a/packages/backend-next/package.json
+++ b/packages/backend-next/package.json
@@ -1,6 +1,6 @@
{
"name": "example-backend-next",
- "version": "0.0.11-next.2",
+ "version": "0.0.11",
"main": "dist/index.cjs.js",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/packages/backend-openapi-utils/CHANGELOG.md b/packages/backend-openapi-utils/CHANGELOG.md
index 2d3d5f021d..0255bbbf73 100644
--- a/packages/backend-openapi-utils/CHANGELOG.md
+++ b/packages/backend-openapi-utils/CHANGELOG.md
@@ -1,5 +1,14 @@
# @backstage/backend-openapi-utils
+## 0.0.2
+
+### Patch Changes
+
+- fe16bd39e83: Use permalinks for links including a line number reference
+- 27956d78671: Adjusted README accordingly after the generated output now has a `.generated.ts` extension
+- 021cfbb5152: Corrected resolution of parameter nested schema to use central schemas.
+- 799c33047ed: Updated README to reflect changes in `@backstage/repo-tools`.
+
## 0.0.2-next.1
### Patch Changes
diff --git a/packages/backend-openapi-utils/package.json b/packages/backend-openapi-utils/package.json
index b3926de712..89a4621a49 100644
--- a/packages/backend-openapi-utils/package.json
+++ b/packages/backend-openapi-utils/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/backend-openapi-utils",
"description": "OpenAPI typescript support.",
- "version": "0.0.2-next.1",
+ "version": "0.0.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/packages/backend-plugin-api/CHANGELOG.md b/packages/backend-plugin-api/CHANGELOG.md
index 9a28b1dd3a..cf22e7a9c3 100644
--- a/packages/backend-plugin-api/CHANGELOG.md
+++ b/packages/backend-plugin-api/CHANGELOG.md
@@ -1,5 +1,16 @@
# @backstage/backend-plugin-api
+## 0.5.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-tasks@0.5.2
+ - @backstage/plugin-auth-node@0.2.14
+ - @backstage/config@1.0.7
+ - @backstage/types@1.0.2
+ - @backstage/plugin-permission-common@0.7.5
+
## 0.5.2-next.1
### Patch Changes
diff --git a/packages/backend-plugin-api/package.json b/packages/backend-plugin-api/package.json
index 58e103e647..d4c2bef5a2 100644
--- a/packages/backend-plugin-api/package.json
+++ b/packages/backend-plugin-api/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/backend-plugin-api",
"description": "Core API used by Backstage backend plugins",
- "version": "0.5.2-next.1",
+ "version": "0.5.2",
"main": "src/index.ts",
"types": "src/index.ts",
"publishConfig": {
diff --git a/packages/backend-tasks/CHANGELOG.md b/packages/backend-tasks/CHANGELOG.md
index 1ef0203eb1..c7927d1e66 100644
--- a/packages/backend-tasks/CHANGELOG.md
+++ b/packages/backend-tasks/CHANGELOG.md
@@ -1,5 +1,15 @@
# @backstage/backend-tasks
+## 0.5.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+ - @backstage/types@1.0.2
+
## 0.5.2-next.1
### Patch Changes
diff --git a/packages/backend-tasks/package.json b/packages/backend-tasks/package.json
index b0f5c3afb3..6a87b91202 100644
--- a/packages/backend-tasks/package.json
+++ b/packages/backend-tasks/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/backend-tasks",
"description": "Common distributed task management library for Backstage backends",
- "version": "0.5.2-next.1",
+ "version": "0.5.2",
"main": "src/index.ts",
"types": "src/index.ts",
"publishConfig": {
diff --git a/packages/backend-test-utils/CHANGELOG.md b/packages/backend-test-utils/CHANGELOG.md
index 3ce5006003..7a2ea9c2e6 100644
--- a/packages/backend-test-utils/CHANGELOG.md
+++ b/packages/backend-test-utils/CHANGELOG.md
@@ -1,5 +1,19 @@
# @backstage/backend-test-utils
+## 0.1.37
+
+### Patch Changes
+
+- 63af7f6d53f: Allow specifying custom Docker registry for database tests
+- b1eb268bf9d: Added `POSTGRES_11` and `POSTGRES_12` as supported test database IDs.
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/backend-app-api@0.4.3
+ - @backstage/plugin-auth-node@0.2.14
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/config@1.0.7
+ - @backstage/types@1.0.2
+
## 0.1.37-next.1
### Patch Changes
diff --git a/packages/backend-test-utils/package.json b/packages/backend-test-utils/package.json
index b23d3b411e..5351ade035 100644
--- a/packages/backend-test-utils/package.json
+++ b/packages/backend-test-utils/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/backend-test-utils",
"description": "Test helpers library for Backstage backends",
- "version": "0.1.37-next.1",
+ "version": "0.1.37",
"main": "src/index.ts",
"types": "src/index.ts",
"publishConfig": {
diff --git a/packages/backend/CHANGELOG.md b/packages/backend/CHANGELOG.md
index 7a4031b654..c775d70b2f 100644
--- a/packages/backend/CHANGELOG.md
+++ b/packages/backend/CHANGELOG.md
@@ -1,5 +1,57 @@
# example-backend
+## 0.2.83
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-scaffolder-backend@1.14.0
+ - @backstage/plugin-devtools-backend@0.1.0
+ - @backstage/plugin-catalog-backend@1.9.1
+ - @backstage/backend-common@0.18.5
+ - @backstage/plugin-kubernetes-backend@0.11.0
+ - @backstage/plugin-auth-backend@0.18.3
+ - @backstage/plugin-badges-backend@0.2.0
+ - @backstage/plugin-search-backend-module-elasticsearch@1.3.0
+ - @backstage/integration@1.4.5
+ - @backstage/plugin-todo-backend@0.1.42
+ - @backstage/plugin-jenkins-backend@0.2.0
+ - @backstage/plugin-azure-sites-backend@0.1.7
+ - @backstage/plugin-permission-node@0.7.8
+ - @backstage/plugin-search-backend@1.3.1
+ - example-app@0.2.83
+ - @backstage/backend-tasks@0.5.2
+ - @backstage/plugin-app-backend@0.3.45
+ - @backstage/plugin-auth-node@0.2.14
+ - @backstage/plugin-catalog-node@1.3.6
+ - @backstage/plugin-entity-feedback-backend@0.1.3
+ - @backstage/plugin-events-backend@0.2.6
+ - @backstage/plugin-playlist-backend@0.3.1
+ - @backstage/plugin-rollbar-backend@0.1.42
+ - @backstage/plugin-search-backend-module-pg@0.5.6
+ - @backstage/plugin-tech-insights-backend@0.5.11
+ - @backstage/plugin-techdocs-backend@1.6.2
+ - @backstage/plugin-scaffolder-backend-module-rails@0.4.14
+ - @backstage/plugin-adr-backend@0.3.3
+ - @backstage/plugin-azure-devops-backend@0.3.24
+ - @backstage/plugin-code-coverage-backend@0.2.11
+ - @backstage/plugin-explore-backend@0.0.7
+ - @backstage/plugin-graphql-backend@0.1.35
+ - @backstage/plugin-kafka-backend@0.2.38
+ - @backstage/plugin-lighthouse-backend@0.2.1
+ - @backstage/plugin-linguist-backend@0.2.2
+ - @backstage/plugin-permission-backend@0.5.20
+ - @backstage/plugin-proxy-backend@0.2.39
+ - @backstage/plugin-search-backend-node@1.2.1
+ - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.29
+ - @backstage/plugin-tech-insights-node@0.4.3
+ - @backstage/catalog-client@1.4.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/plugin-events-node@0.2.6
+ - @backstage/plugin-permission-common@0.7.5
+ - @backstage/plugin-search-common@1.2.3
+
## 0.2.83-next.2
### Patch Changes
diff --git a/packages/backend/Dockerfile b/packages/backend/Dockerfile
index eca6ce82c2..da25f9736c 100644
--- a/packages/backend/Dockerfile
+++ b/packages/backend/Dockerfile
@@ -13,11 +13,14 @@ FROM node:16-bullseye-slim
# Install sqlite3 dependencies. You can skip this if you don't use sqlite3 in the image,
# in which case you should also move better-sqlite3 to "devDependencies" in package.json.
+# Additionally, we install dependencies for `techdocs.generator.runIn: local`.
+# https://backstage.io/docs/features/techdocs/getting-started#disabling-docker-in-docker-situation-optional
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
--mount=type=cache,target=/var/lib/apt,sharing=locked \
apt-get update && \
- apt-get install -y --no-install-recommends libsqlite3-dev python3 build-essential && \
- yarn config set python /usr/bin/python3
+ apt-get install -y --no-install-recommends libsqlite3-dev python3 python3-pip build-essential && \
+ yarn config set python /usr/bin/python3 && \
+ pip3 install mkdocs-techdocs-core==1.1.7
# From here on we use the least-privileged `node` user to run the backend.
WORKDIR /app
diff --git a/packages/backend/package.json b/packages/backend/package.json
index b5a82fd611..7d6c1011e4 100644
--- a/packages/backend/package.json
+++ b/packages/backend/package.json
@@ -1,6 +1,6 @@
{
"name": "example-backend",
- "version": "0.2.83-next.2",
+ "version": "0.2.83",
"main": "dist/index.cjs.js",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/packages/catalog-client/src/types/api.ts b/packages/catalog-client/src/types/api.ts
index ee6579efca..5285bda2f7 100644
--- a/packages/catalog-client/src/types/api.ts
+++ b/packages/catalog-client/src/types/api.ts
@@ -353,6 +353,10 @@ export type Location = {
export type AddLocationRequest = {
type?: string;
target: string;
+ /**
+ * If set to true, the location will not be added, but the response will
+ * contain the entities that match the given location.
+ */
dryRun?: boolean;
};
@@ -363,8 +367,13 @@ export type AddLocationRequest = {
*/
export type AddLocationResponse = {
location: Location;
+ /**
+ * The entities matching this location. Will only be filled in dryRun mode
+ */
entities: Entity[];
- // Only set in dryRun mode.
+ /**
+ * True, if the location exists. Will only be filled in dryRun mode
+ */
exists?: boolean;
};
diff --git a/packages/cli/CHANGELOG.md b/packages/cli/CHANGELOG.md
index a8c7207650..b91dad32b7 100644
--- a/packages/cli/CHANGELOG.md
+++ b/packages/cli/CHANGELOG.md
@@ -1,5 +1,21 @@
# @backstage/cli
+## 0.22.7
+
+### Patch Changes
+
+- 473db605a4f: Enable strict config checking during `backstage-cli config:check` with the new `--strict` option which will surface schema errors.
+- d548886872d: Deprecated the use of React 16
+- Updated dependencies
+ - @backstage/config-loader@1.3.0
+ - @backstage/cli-common@0.1.12
+ - @backstage/cli-node@0.1.0
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+ - @backstage/eslint-plugin@0.1.3
+ - @backstage/release-manifests@0.0.9
+ - @backstage/types@1.0.2
+
## 0.22.7-next.0
### Patch Changes
diff --git a/packages/cli/config/eslint-factory.js b/packages/cli/config/eslint-factory.js
index dde853fdff..36b51324fc 100644
--- a/packages/cli/config/eslint-factory.js
+++ b/packages/cli/config/eslint-factory.js
@@ -24,6 +24,7 @@ const { join: joinPath } = require('path');
* - `tsRules`: Additional ESLint rules to apply to TypeScript
* - `testRules`: Additional ESLint rules to apply to tests
* - `restrictedImports`: Additional paths to add to no-restricted-imports
+ * - `restrictedImportsPattern`: Additional patterns to add to no-restricted-imports
* - `restrictedSrcImports`: Additional paths to add to no-restricted-imports in src files
* - `restrictedTestImports`: Additional paths to add to no-restricted-imports in test files
* - `restrictedSyntax`: Additional patterns to add to no-restricted-syntax
@@ -44,6 +45,7 @@ function createConfig(dir, extraConfig = {}) {
testRules,
restrictedImports,
+ restrictedImportPatterns,
restrictedSrcImports,
restrictedTestImports,
restrictedSyntax,
@@ -114,6 +116,7 @@ function createConfig(dir, extraConfig = {}) {
'*.test*',
'**/__testUtils__/**',
'**/__mocks__/**',
+ ...(restrictedImportPatterns ?? []),
],
},
],
@@ -208,9 +211,19 @@ function createConfigForRole(dir, role, extraConfig = {}) {
name: '@material-ui/icons/', // because this is possible too ._.
message: "Please import '@material-ui/icons/
' instead.",
},
+ {
+ // https://mui.com/material-ui/guides/minimizing-bundle-size/
+ name: '@mui/material',
+ message: "Please import '@mui/material/...' instead.",
+ },
...require('module').builtinModules,
...(extraConfig.restrictedImports ?? []),
],
+ // https://mui.com/material-ui/guides/minimizing-bundle-size/
+ restrictedImportPatterns: [
+ '@mui/*/*/*',
+ ...(extraConfig.restrictedImportPatterns ?? []),
+ ],
tsRules: {
'react/prop-types': 0,
...extraConfig.tsRules,
diff --git a/packages/cli/package.json b/packages/cli/package.json
index 9de7b3dbb2..28c5ce7030 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.22.7-next.0",
+ "version": "0.22.7",
"publishConfig": {
"access": "public"
},
diff --git a/packages/config-loader/CHANGELOG.md b/packages/config-loader/CHANGELOG.md
index 9b2d34f957..05e4398bc8 100644
--- a/packages/config-loader/CHANGELOG.md
+++ b/packages/config-loader/CHANGELOG.md
@@ -1,5 +1,56 @@
# @backstage/config-loader
+## 1.3.0
+
+### Minor Changes
+
+- 201206132da: Introduced a new config source system to replace `loadConfig`. There is a new `ConfigSource` interface along with utilities provided by `ConfigSources`, as well as a number of built-in configuration source implementations. The new system is more flexible and makes it easier to create new and reusable sources of configuration, such as loading configuration from secret providers.
+
+ The following is an example of how to load configuration using the default behavior:
+
+ ```ts
+ const source = ConfigSources.default({
+ argv: options?.argv,
+ remote: options?.remote,
+ });
+ const config = await ConfigSources.toConfig(source);
+ ```
+
+ The `ConfigSource` interface looks like this:
+
+ ```ts
+ export interface ConfigSource {
+ readConfigData(options?: ReadConfigDataOptions): AsyncConfigSourceIterator;
+ }
+ ```
+
+ It is best implemented using an async iterator:
+
+ ```ts
+ class MyConfigSource implements ConfigSource {
+ async *readConfigData() {
+ yield {
+ config: [
+ {
+ context: 'example',
+ data: { backend: { baseUrl: 'http://localhost' } },
+ },
+ ],
+ };
+ }
+ }
+ ```
+
+### Patch Changes
+
+- 7c116bcac7f: Fixed the way that some request errors are thrown
+- 473db605a4f: Added a new `noUndeclaredProperties` option to `SchemaLoader` to support enforcing that there are no extra keys when verifying config.
+- Updated dependencies
+ - @backstage/cli-common@0.1.12
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+ - @backstage/types@1.0.2
+
## 1.3.0-next.0
### Minor Changes
diff --git a/packages/config-loader/package.json b/packages/config-loader/package.json
index 0aa071c206..d453b40201 100644
--- a/packages/config-loader/package.json
+++ b/packages/config-loader/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/config-loader",
"description": "Config loading functionality used by Backstage backend, and CLI",
- "version": "1.3.0-next.0",
+ "version": "1.3.0",
"publishConfig": {
"access": "public",
"main": "dist/index.cjs.js",
diff --git a/packages/config-loader/src/schema/compile.test.ts b/packages/config-loader/src/schema/compile.test.ts
index c2541751e7..df81923684 100644
--- a/packages/config-loader/src/schema/compile.test.ts
+++ b/packages/config-loader/src/schema/compile.test.ts
@@ -170,4 +170,64 @@ describe('compileConfigSchemas', () => {
visibilityBySchemaPath: new Map(),
});
});
+
+ it('should handle slashes correctly', () => {
+ const validate = compileConfigSchemas([
+ {
+ path: 'a1',
+ value: {
+ type: 'object',
+ properties: {
+ '/circleci/api': {
+ type: 'object',
+ properties: {
+ target: {
+ type: 'string',
+ },
+ headers: {
+ type: 'object',
+ properties: {
+ 'Circle-Token': {
+ type: 'string',
+ visibility: 'secret',
+ },
+ },
+ },
+ },
+ },
+ '/gocd': { type: 'string', visibility: 'backend' },
+ },
+ },
+ },
+ ]);
+ expect(
+ validate([
+ {
+ data: {
+ '/circleci/api': {
+ target: 'test',
+ headers: {
+ 'Circle-Token': 'my-token',
+ },
+ },
+ '/gocd': 'test',
+ },
+ context: 'test',
+ },
+ ]),
+ ).toEqual({
+ visibilityByDataPath: new Map(
+ Object.entries({
+ '//circleci/api/headers/Circle-Token': 'secret',
+ }),
+ ),
+ visibilityBySchemaPath: new Map(
+ Object.entries({
+ '/properties//circleci/api/properties/headers/properties/Circle-Token':
+ 'secret',
+ }),
+ ),
+ deprecationByDataPath: new Map(),
+ });
+ });
});
diff --git a/packages/config-loader/src/schema/compile.ts b/packages/config-loader/src/schema/compile.ts
index f9e1a3bf76..63a8e4b8a6 100644
--- a/packages/config-loader/src/schema/compile.ts
+++ b/packages/config-loader/src/schema/compile.ts
@@ -26,6 +26,7 @@ import {
ConfigVisibility,
} from './types';
import { SchemaObject } from 'json-schema-traverse';
+import { normalizeAjvPath } from './utils';
/**
* This takes a collection of Backstage configuration schemas from various
@@ -66,10 +67,7 @@ export function compileConfigSchemas(
return false;
}
if (visibility && visibility !== 'backend') {
- const normalizedPath = context.instancePath.replace(
- /\['?(.*?)'?\]/g,
- (_, segment) => `/${segment}`,
- );
+ const normalizedPath = normalizeAjvPath(context.instancePath);
visibilityByDataPath.set(normalizedPath, visibility);
}
return true;
@@ -85,10 +83,7 @@ export function compileConfigSchemas(
if (context?.instancePath === undefined) {
return false;
}
- const normalizedPath = context.instancePath.replace(
- /\['?(.*?)'?\]/g,
- (_, segment) => `/${segment}`,
- );
+ const normalizedPath = normalizeAjvPath(context.instancePath);
// create mapping of deprecation description and data path of property
deprecationByDataPath.set(normalizedPath, deprecationDescription);
return true;
@@ -123,7 +118,7 @@ export function compileConfigSchemas(
const visibilityBySchemaPath = new Map();
traverse(merged, (schema, path) => {
if (schema.visibility && schema.visibility !== 'backend') {
- visibilityBySchemaPath.set(path, schema.visibility);
+ visibilityBySchemaPath.set(normalizeAjvPath(path), schema.visibility);
}
});
diff --git a/packages/config-loader/src/schema/filtering.ts b/packages/config-loader/src/schema/filtering.ts
index e9a0327e06..1c2d0c122a 100644
--- a/packages/config-loader/src/schema/filtering.ts
+++ b/packages/config-loader/src/schema/filtering.ts
@@ -21,6 +21,7 @@ import {
TransformFunc,
ValidationError,
} from './types';
+import { normalizeAjvPath } from './utils';
/**
* This filters data by visibility by discovering the visibility of each
@@ -163,7 +164,10 @@ export function filterErrorsByVisibility(
// We don't use this method for all the errors as the data path is more robust
// and doesn't require us to properly trim the schema path.
if (error.keyword === 'required') {
- const trimmedPath = error.schemaPath.slice(1, -'/required'.length);
+ const trimmedPath = normalizeAjvPath(error.schemaPath).slice(
+ 1,
+ -'/required'.length,
+ );
const fullPath = `${trimmedPath}/properties/${error.params.missingProperty}`;
if (
visibleSchemaPaths.some(visiblePath => visiblePath.startsWith(fullPath))
@@ -173,7 +177,8 @@ export function filterErrorsByVisibility(
}
const vis =
- visibilityByDataPath.get(error.instancePath) ?? DEFAULT_CONFIG_VISIBILITY;
+ visibilityByDataPath.get(normalizeAjvPath(error.instancePath)) ??
+ DEFAULT_CONFIG_VISIBILITY;
return vis && includeVisibilities.includes(vis);
});
}
diff --git a/packages/config-loader/src/schema/load.ts b/packages/config-loader/src/schema/load.ts
index 1a96305ae0..8ef971184f 100644
--- a/packages/config-loader/src/schema/load.ts
+++ b/packages/config-loader/src/schema/load.ts
@@ -25,6 +25,7 @@ import {
ConfigSchemaPackageEntry,
CONFIG_VISIBILITIES,
} from './types';
+import { normalizeAjvPath } from './utils';
/**
* Options that control the loading of configuration schema files in the backend.
@@ -49,7 +50,9 @@ function errorsToError(errors: ValidationError[]): Error {
const paramStr = Object.entries(params)
.map(([name, value]) => `${name}=${value}`)
.join(' ');
- return `Config ${message || ''} { ${paramStr} } at ${instancePath}`;
+ return `Config ${message || ''} { ${paramStr} } at ${normalizeAjvPath(
+ instancePath,
+ )}`;
});
const error = new Error(`Config validation failed, ${messages.join('; ')}`);
(error as any).messages = messages;
diff --git a/plugins/linguist-backend/src/api/LinguistBackendApi.test.ts b/packages/config-loader/src/schema/utils.ts
similarity index 55%
rename from plugins/linguist-backend/src/api/LinguistBackendApi.test.ts
rename to packages/config-loader/src/schema/utils.ts
index 741d52e734..25525a8c50 100644
--- a/plugins/linguist-backend/src/api/LinguistBackendApi.test.ts
+++ b/packages/config-loader/src/schema/utils.ts
@@ -13,16 +13,17 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-import { kindOrDefault } from './LinguistBackendApi';
-describe('kindOrDefault', () => {
- it('should return default kind when undefined', () => {
- expect(kindOrDefault()).toEqual(['API', 'Component', 'Template']);
- });
- it('should return the default kind when empty', () => {
- expect(kindOrDefault([])).toEqual(['API', 'Component', 'Template']);
- });
- it('should return provided kind when not empty', () => {
- expect(kindOrDefault(['API'])).toEqual(['API']);
- });
-});
+/**
+ * AJV does some encoding to schema and instance paths. Revert those encodings to
+ * easier to read and parse values.
+ * See https://github.com/ajv-validator/ajv/blob/master/lib/compile/util.ts#L69.
+ *
+ * @param path Path from AJV.
+ * @returns Updated path with correct characters.
+ */
+export function normalizeAjvPath(path: string) {
+ return path
+ .replace(/~1/g, '/')
+ .replace(/\['?(.*?)'?\]/g, (_, segment) => `/${segment}`);
+}
diff --git a/packages/config-loader/src/sources/FileConfigSource.test.ts b/packages/config-loader/src/sources/FileConfigSource.test.ts
index c6980006c0..61cdeed272 100644
--- a/packages/config-loader/src/sources/FileConfigSource.test.ts
+++ b/packages/config-loader/src/sources/FileConfigSource.test.ts
@@ -66,7 +66,7 @@ describe('FileConfigSource', () => {
setTimeout(() => {
tmp.write('a.yaml', 'a: 2');
- }, 10);
+ }, 100);
await expect(readN(source, 2)).resolves.toEqual([
[{ data: { a: 1 }, context: 'a.yaml', path: tmp.resolve('a.yaml') }],
@@ -132,7 +132,7 @@ describe('FileConfigSource', () => {
setTimeout(() => {
tmp.write('x.yaml', '${MY_OTHER_VALUE}');
- }, 10);
+ }, 100);
await expect(readN(source, 2)).resolves.toEqual([
[{ data: { a: '6' }, context: 'a.yaml', path: tmp.resolve('a.yaml') }],
@@ -152,7 +152,7 @@ describe('FileConfigSource', () => {
setTimeout(() => {
tmp.write('x.txt', '9');
- }, 10);
+ }, 100);
await expect(readN(source, 2)).resolves.toEqual([
[{ data: { a: '8' }, context: 'a.yaml', path: tmp.resolve('a.yaml') }],
diff --git a/packages/core-app-api/CHANGELOG.md b/packages/core-app-api/CHANGELOG.md
index f4179e6fb6..f6df0da032 100644
--- a/packages/core-app-api/CHANGELOG.md
+++ b/packages/core-app-api/CHANGELOG.md
@@ -1,5 +1,21 @@
# @backstage/core-app-api
+## 1.8.0
+
+### Minor Changes
+
+- c89437db899: The analytics' `navigate` event will now include the route parameters as attributes of the navigate event
+
+### Patch Changes
+
+- b645d70034a: Fixed a bug in the Azure auth provider which prevented getting access tokens with multiple scopes for one resource
+- 42d817e76ab: Added `FrontendHostDiscovery` for config driven discovery implementation
+- Updated dependencies
+ - @backstage/config@1.0.7
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/types@1.0.2
+ - @backstage/version-bridge@1.0.4
+
## 1.8.0-next.1
### Minor Changes
diff --git a/packages/core-app-api/config.d.ts b/packages/core-app-api/config.d.ts
index 2de1d96114..e8cc879c90 100644
--- a/packages/core-app-api/config.d.ts
+++ b/packages/core-app-api/config.d.ts
@@ -117,8 +117,8 @@ export interface Config {
};
/**
- $ Enable redirect authentication flow type, instead of a popup for authentication
- * default value: 'false'
+ * Enable redirect authentication flow type, instead of a popup for authentication.
+ * @defaultValue false
* @visibility frontend
*/
enableExperimentalRedirectFlow?: boolean;
diff --git a/packages/core-app-api/package.json b/packages/core-app-api/package.json
index 5d99754068..4416fa99e1 100644
--- a/packages/core-app-api/package.json
+++ b/packages/core-app-api/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/core-app-api",
"description": "Core app API used by Backstage apps",
- "version": "1.8.0-next.1",
+ "version": "1.8.0",
"publishConfig": {
"access": "public",
"main": "dist/index.esm.js",
diff --git a/packages/core-app-api/src/app/types.ts b/packages/core-app-api/src/app/types.ts
index 3d9005b0c0..c34407ca3a 100644
--- a/packages/core-app-api/src/app/types.ts
+++ b/packages/core-app-api/src/app/types.ts
@@ -236,21 +236,13 @@ export type AppOptions = {
* title: 'Light Theme',
* variant: 'light',
* icon: ,
- * Provider: ({ children }) => (
- *
- * {children}
- *
- * ),
+ * Provider: ({ children }) => ,
* }, {
* id: 'dark',
* title: 'Dark Theme',
* variant: 'dark',
* icon: ,
- * Provider: ({ children }) => (
- *
- * {children}
- *
- * ),
+ * Provider: ({ children }) => ,
* }]
* ```
*/
diff --git a/packages/core-components/CHANGELOG.md b/packages/core-components/CHANGELOG.md
index 90f4e174b0..8ace83e62b 100644
--- a/packages/core-components/CHANGELOG.md
+++ b/packages/core-components/CHANGELOG.md
@@ -1,5 +1,20 @@
# @backstage/core-components
+## 0.13.1
+
+### Patch Changes
+
+- 83b45f9df50: Fix accessibility issue with Backstage Table's header style
+- e97769f7c0b: Fix accessibility issue on controlled select input on tab navigation + keyboard enter/space action.
+- b1f13cb38aa: Fix accessibility issue with Edit Metadata Link on screen readers missing notice about opening in a new tab.
+- 26cff1a5dfb: Start capturing sidebar click events in analytics by default.
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/config@1.0.7
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+ - @backstage/version-bridge@1.0.4
+
## 0.13.1-next.1
### Patch Changes
diff --git a/packages/core-components/package.json b/packages/core-components/package.json
index ec46c4c6e3..872808622f 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.13.1-next.1",
+ "version": "0.13.1",
"publishConfig": {
"access": "public",
"main": "dist/index.esm.js",
diff --git a/packages/core-components/src/components/OAuthRequestDialog/OAuthRequestDialog.tsx b/packages/core-components/src/components/OAuthRequestDialog/OAuthRequestDialog.tsx
index 0159d8f503..8fdace3766 100644
--- a/packages/core-components/src/components/OAuthRequestDialog/OAuthRequestDialog.tsx
+++ b/packages/core-components/src/components/OAuthRequestDialog/OAuthRequestDialog.tsx
@@ -89,7 +89,11 @@ export function OAuthRequestDialog(_props: {}) {
classes={{ root: classes.title }}
id="oauth-req-dialog-title"
>
-
+
Login Required
{authRedirect ? (
diff --git a/packages/create-app/CHANGELOG.md b/packages/create-app/CHANGELOG.md
index 16d93b1867..c1b613ed28 100644
--- a/packages/create-app/CHANGELOG.md
+++ b/packages/create-app/CHANGELOG.md
@@ -1,5 +1,14 @@
# @backstage/create-app
+## 0.5.1
+
+### Patch Changes
+
+- 1d5e42655cd: Correct command to create new plugins
+- e04bb20bdc4: Bumped create-app version.
+- Updated dependencies
+ - @backstage/cli-common@0.1.12
+
## 0.5.1-next.2
### Patch Changes
diff --git a/packages/create-app/package.json b/packages/create-app/package.json
index 841c1b401d..ff9fdd6623 100644
--- a/packages/create-app/package.json
+++ b/packages/create-app/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/create-app",
"description": "A CLI that helps you create your own Backstage app",
- "version": "0.5.1-next.2",
+ "version": "0.5.1",
"publishConfig": {
"access": "public"
},
diff --git a/packages/dev-utils/CHANGELOG.md b/packages/dev-utils/CHANGELOG.md
index 77e5241e7e..6e88b8d085 100644
--- a/packages/dev-utils/CHANGELOG.md
+++ b/packages/dev-utils/CHANGELOG.md
@@ -1,5 +1,20 @@
# @backstage/dev-utils
+## 1.0.15
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/app-defaults@1.3.1
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-app-api@1.8.0
+ - @backstage/core-components@0.13.1
+ - @backstage/integration-react@1.1.13
+ - @backstage/test-utils@1.3.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+
## 1.0.15-next.2
### Patch Changes
diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json
index c14732070f..3ca693d906 100644
--- a/packages/dev-utils/package.json
+++ b/packages/dev-utils/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/dev-utils",
"description": "Utilities for developing Backstage plugins.",
- "version": "1.0.15-next.2",
+ "version": "1.0.15",
"publishConfig": {
"access": "public",
"main": "dist/index.esm.js",
diff --git a/packages/e2e-test/CHANGELOG.md b/packages/e2e-test/CHANGELOG.md
index eaec405ec9..7186431398 100644
--- a/packages/e2e-test/CHANGELOG.md
+++ b/packages/e2e-test/CHANGELOG.md
@@ -1,5 +1,14 @@
# e2e-test
+## 0.2.3
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/create-app@0.5.1
+ - @backstage/cli-common@0.1.12
+ - @backstage/errors@1.1.5
+
## 0.2.3-next.2
### Patch Changes
diff --git a/packages/e2e-test/package.json b/packages/e2e-test/package.json
index 60877e8d66..011a9e876d 100644
--- a/packages/e2e-test/package.json
+++ b/packages/e2e-test/package.json
@@ -1,7 +1,7 @@
{
"name": "e2e-test",
"description": "E2E test for verifying Backstage packages",
- "version": "0.2.3-next.2",
+ "version": "0.2.3",
"private": true,
"backstage": {
"role": "cli"
diff --git a/packages/integration-aws-node/CHANGELOG.md b/packages/integration-aws-node/CHANGELOG.md
index 40192bdfaf..181b08c4ee 100644
--- a/packages/integration-aws-node/CHANGELOG.md
+++ b/packages/integration-aws-node/CHANGELOG.md
@@ -1,5 +1,14 @@
# @backstage/integration-aws-node
+## 0.1.3
+
+### Patch Changes
+
+- 3659c71c5d9: Standardize `@aws-sdk` v3 versions
+- Updated dependencies
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+
## 0.1.2
### Patch Changes
diff --git a/packages/integration-aws-node/package.json b/packages/integration-aws-node/package.json
index 30a95b549e..8eec21a143 100644
--- a/packages/integration-aws-node/package.json
+++ b/packages/integration-aws-node/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/integration-aws-node",
"description": "Helpers for fetching AWS account credentials",
- "version": "0.1.2",
+ "version": "0.1.3",
"main": "src/index.ts",
"types": "src/index.ts",
"publishConfig": {
diff --git a/packages/integration-react/CHANGELOG.md b/packages/integration-react/CHANGELOG.md
index f9c035b7a6..b1bfe3e73f 100644
--- a/packages/integration-react/CHANGELOG.md
+++ b/packages/integration-react/CHANGELOG.md
@@ -1,5 +1,16 @@
# @backstage/integration-react
+## 1.1.13
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/integration@1.4.5
+ - @backstage/core-components@0.13.1
+ - @backstage/config@1.0.7
+ - @backstage/core-plugin-api@1.5.1
+
## 1.1.13-next.2
### Patch Changes
diff --git a/packages/integration-react/package.json b/packages/integration-react/package.json
index 3124557ebc..929faae601 100644
--- a/packages/integration-react/package.json
+++ b/packages/integration-react/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/integration-react",
"description": "Frontend package for managing integrations towards external systems",
- "version": "1.1.13-next.2",
+ "version": "1.1.13",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/packages/integration/CHANGELOG.md b/packages/integration/CHANGELOG.md
index 92eff86bb5..7dcef4fbc9 100644
--- a/packages/integration/CHANGELOG.md
+++ b/packages/integration/CHANGELOG.md
@@ -1,5 +1,14 @@
# @backstage/integration
+## 1.4.5
+
+### Patch Changes
+
+- b026275bcc8: Fixed a bug where the wrong credentials would be selected when using multiple GitHub app integrations.
+- Updated dependencies
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+
## 1.4.5-next.0
### Patch Changes
diff --git a/packages/integration/package.json b/packages/integration/package.json
index fbe8ac1fc3..14b64b3089 100644
--- a/packages/integration/package.json
+++ b/packages/integration/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/integration",
"description": "Helpers for managing integrations towards external systems",
- "version": "1.4.5-next.0",
+ "version": "1.4.5",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/packages/repo-tools/CHANGELOG.md b/packages/repo-tools/CHANGELOG.md
index e31c05532c..7f1ece48d4 100644
--- a/packages/repo-tools/CHANGELOG.md
+++ b/packages/repo-tools/CHANGELOG.md
@@ -1,5 +1,19 @@
# @backstage/repo-tools
+## 0.3.0
+
+### Minor Changes
+
+- 799c33047ed: **BREAKING**: The OpenAPI commands are now found within the `schema openapi` sub-command. For example `yarn backstage-repo-tools schema:openapi:verify` is now `yarn backstage-repo-tools schema openapi verify`.
+- 27956d78671: Generated OpenAPI files now have a `.generated.ts` file name and a warning header at the top, to highlight that they should not be edited by hand.
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/cli-common@0.1.12
+ - @backstage/cli-node@0.1.0
+ - @backstage/errors@1.1.5
+
## 0.3.0-next.0
### Minor Changes
diff --git a/packages/repo-tools/package.json b/packages/repo-tools/package.json
index 74c39fc9a8..85f683a999 100644
--- a/packages/repo-tools/package.json
+++ b/packages/repo-tools/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/repo-tools",
"description": "CLI for Backstage repo tooling ",
- "version": "0.3.0-next.0",
+ "version": "0.3.0",
"publishConfig": {
"access": "public"
},
diff --git a/packages/techdocs-cli-embedded-app/CHANGELOG.md b/packages/techdocs-cli-embedded-app/CHANGELOG.md
index 3e7e890e7c..6886f89c11 100644
--- a/packages/techdocs-cli-embedded-app/CHANGELOG.md
+++ b/packages/techdocs-cli-embedded-app/CHANGELOG.md
@@ -1,5 +1,24 @@
# techdocs-cli-embedded-app
+## 0.2.82
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-techdocs@1.6.2
+ - @backstage/app-defaults@1.3.1
+ - @backstage/cli@0.22.7
+ - @backstage/plugin-catalog@1.11.0
+ - @backstage/core-app-api@1.8.0
+ - @backstage/core-components@0.13.1
+ - @backstage/integration-react@1.1.13
+ - @backstage/test-utils@1.3.1
+ - @backstage/plugin-techdocs-react@1.1.6
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/core-plugin-api@1.5.1
+
## 0.2.82-next.2
### Patch Changes
diff --git a/packages/techdocs-cli-embedded-app/package.json b/packages/techdocs-cli-embedded-app/package.json
index a645d2dac1..fb3715325b 100644
--- a/packages/techdocs-cli-embedded-app/package.json
+++ b/packages/techdocs-cli-embedded-app/package.json
@@ -1,6 +1,6 @@
{
"name": "techdocs-cli-embedded-app",
- "version": "0.2.82-next.2",
+ "version": "0.2.82",
"private": true,
"backstage": {
"role": "frontend"
diff --git a/packages/techdocs-cli/CHANGELOG.md b/packages/techdocs-cli/CHANGELOG.md
index 35f3b4bc28..ce88475c7f 100644
--- a/packages/techdocs-cli/CHANGELOG.md
+++ b/packages/techdocs-cli/CHANGELOG.md
@@ -1,5 +1,16 @@
# @techdocs/cli
+## 1.4.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/plugin-techdocs-node@1.7.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/cli-common@0.1.12
+ - @backstage/config@1.0.7
+
## 1.4.2-next.1
### Patch Changes
diff --git a/packages/techdocs-cli/package.json b/packages/techdocs-cli/package.json
index 8b533b4453..e61401e8ce 100644
--- a/packages/techdocs-cli/package.json
+++ b/packages/techdocs-cli/package.json
@@ -1,7 +1,7 @@
{
"name": "@techdocs/cli",
"description": "Utility CLI for managing TechDocs sites in Backstage.",
- "version": "1.4.2-next.1",
+ "version": "1.4.2",
"publishConfig": {
"access": "public"
},
diff --git a/packages/test-utils/CHANGELOG.md b/packages/test-utils/CHANGELOG.md
index 6804a09762..4bebf94052 100644
--- a/packages/test-utils/CHANGELOG.md
+++ b/packages/test-utils/CHANGELOG.md
@@ -1,5 +1,18 @@
# @backstage/test-utils
+## 1.3.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/core-app-api@1.8.0
+ - @backstage/config@1.0.7
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/types@1.0.2
+ - @backstage/plugin-permission-common@0.7.5
+ - @backstage/plugin-permission-react@0.4.12
+
## 1.3.1-next.2
### Patch Changes
diff --git a/packages/test-utils/package.json b/packages/test-utils/package.json
index fa2557c4de..3024b25c05 100644
--- a/packages/test-utils/package.json
+++ b/packages/test-utils/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/test-utils",
"description": "Utilities to test Backstage plugins and apps.",
- "version": "1.3.1-next.2",
+ "version": "1.3.1",
"publishConfig": {
"access": "public"
},
diff --git a/packages/test-utils/src/testUtils/appWrappers.tsx b/packages/test-utils/src/testUtils/appWrappers.tsx
index 8b644ad2d1..6545cc312a 100644
--- a/packages/test-utils/src/testUtils/appWrappers.tsx
+++ b/packages/test-utils/src/testUtils/appWrappers.tsx
@@ -17,9 +17,7 @@
import React, { ComponentType, ReactNode, ReactElement } from 'react';
import { MemoryRouter } from 'react-router-dom';
import { Route } from 'react-router-dom';
-import { lightTheme } from '@backstage/theme';
-import { ThemeProvider } from '@material-ui/core/styles';
-import { CssBaseline } from '@material-ui/core';
+import { UnifiedThemeProvider, themes } from '@backstage/theme';
import MockIcon from '@material-ui/icons/AcUnit';
import { createSpecializedApp } from '@backstage/core-app-api';
import {
@@ -142,9 +140,9 @@ export function createTestAppWrapper(
title: 'Test App Theme',
variant: 'light',
Provider: ({ children }) => (
-
- {children}
-
+
+ {children}
+
),
},
],
diff --git a/packages/theme/CHANGELOG.md b/packages/theme/CHANGELOG.md
index 1e676394b5..0f8b4819b7 100644
--- a/packages/theme/CHANGELOG.md
+++ b/packages/theme/CHANGELOG.md
@@ -1,5 +1,15 @@
# @backstage/theme
+## 0.3.0
+
+### Minor Changes
+
+- 98c0c199b15: Updates light theme's primary foreground and `running` status indicator colours to meet WCAG. Previously #2E77D0 changed to #1F5493.
+
+### Patch Changes
+
+- 83b45f9df50: Fix accessibility issue with Backstage Table's header style
+
## 0.3.0-next.0
### Minor Changes
diff --git a/packages/theme/api-report.md b/packages/theme/api-report.md
index 863ab81b68..fe05ca6b4e 100644
--- a/packages/theme/api-report.md
+++ b/packages/theme/api-report.md
@@ -3,13 +3,19 @@
> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
```ts
+import type { ComponentsProps } from '@material-ui/core/styles/props';
import { Overrides } from '@material-ui/core/styles/overrides';
-import { Palette } from '@material-ui/core/styles/createPalette';
-import { PaletteOptions } from '@material-ui/core/styles/createPalette';
-import { Theme } from '@material-ui/core';
-import { ThemeOptions } from '@material-ui/core';
+import type { Palette } from '@material-ui/core/styles/createPalette';
+import type { PaletteOptions } from '@material-ui/core/styles/createPalette';
+import { PaletteOptions as PaletteOptions_2 } from '@mui/material/styles';
+import { ReactNode } from 'react';
+import { Theme } from '@mui/material/styles';
+import { Theme as Theme_2 } from '@material-ui/core';
+import { ThemeOptions } from '@mui/material/styles';
+import { ThemeOptions as ThemeOptions_2 } from '@material-ui/core/styles';
+import type { ThemeOptions as ThemeOptions_3 } from '@material-ui/core';
-// @public
+// @public @deprecated
export type BackstagePalette = Palette & BackstagePaletteAdditions;
// @public
@@ -75,12 +81,12 @@ export type BackstagePaletteAdditions = {
};
};
-// @public
+// @public @deprecated
export type BackstagePaletteOptions = PaletteOptions &
BackstagePaletteAdditions;
-// @public
-export interface BackstageTheme extends Theme {
+// @public @deprecated
+export interface BackstageTheme extends Theme_2 {
// (undocumented)
getPageTheme: (selector: PageThemeSelector) => PageTheme;
// (undocumented)
@@ -90,7 +96,13 @@ export interface BackstageTheme extends Theme {
}
// @public
-export interface BackstageThemeOptions extends ThemeOptions {
+export type BackstageThemeAdditions = {
+ page: PageTheme;
+ getPageTheme: (selector: PageThemeSelector) => PageTheme;
+};
+
+// @public @deprecated
+export interface BackstageThemeOptions extends ThemeOptions_3 {
// (undocumented)
getPageTheme: (selector: PageThemeSelector) => PageTheme;
// (undocumented)
@@ -99,22 +111,86 @@ export interface BackstageThemeOptions extends ThemeOptions {
palette: BackstagePaletteOptions;
}
+// @public
+export interface BaseThemeOptionsInput {
+ // (undocumented)
+ defaultPageTheme?: string;
+ // (undocumented)
+ fontFamily?: string;
+ // (undocumented)
+ htmlFontSize?: number;
+ // (undocumented)
+ pageTheme?: Record;
+ // (undocumented)
+ palette: PaletteOptions;
+}
+
// @public
export const colorVariants: Record;
// @public
-export function createTheme(options: SimpleThemeOptions): BackstageTheme;
+export function createBaseThemeOptions(
+ options: BaseThemeOptionsInput,
+): {
+ palette: PaletteOptions;
+ typography: {
+ htmlFontSize: number;
+ fontFamily: string;
+ h1: {
+ fontSize: number;
+ fontWeight: number;
+ marginBottom: number;
+ };
+ h2: {
+ fontSize: number;
+ fontWeight: number;
+ marginBottom: number;
+ };
+ h3: {
+ fontSize: number;
+ fontWeight: number;
+ marginBottom: number;
+ };
+ h4: {
+ fontWeight: number;
+ fontSize: number;
+ marginBottom: number;
+ };
+ h5: {
+ fontWeight: number;
+ fontSize: number;
+ marginBottom: number;
+ };
+ h6: {
+ fontWeight: number;
+ fontSize: number;
+ marginBottom: number;
+ };
+ };
+ page: PageTheme;
+ getPageTheme: ({ themeId }: PageThemeSelector) => PageTheme;
+};
+
+// @public @deprecated
+export function createTheme(options: SimpleThemeOptions): Theme_2;
+
+// @public @deprecated
+export function createThemeOptions(options: SimpleThemeOptions): ThemeOptions_3;
+
+// @public @deprecated
+export function createThemeOverrides(theme: Theme_2): Overrides;
// @public
-export function createThemeOptions(
- options: SimpleThemeOptions,
-): BackstageThemeOptions;
+export function createUnifiedTheme(options: UnifiedThemeOptions): UnifiedTheme;
// @public
-export function createThemeOverrides(theme: BackstageTheme): Overrides;
+export function createUnifiedThemeFromV4(options: ThemeOptions_2): UnifiedTheme;
+
+// @public @deprecated
+export const darkTheme: Theme_2;
// @public
-export const darkTheme: BackstageTheme;
+export const defaultComponentThemes: ThemeOptions['components'];
// @public
export function genPageTheme(props: {
@@ -125,8 +201,8 @@ export function genPageTheme(props: {
};
}): PageTheme;
-// @public
-export const lightTheme: BackstageTheme;
+// @public @deprecated
+export const lightTheme: Theme_2;
// @public
export type PageTheme = {
@@ -145,14 +221,214 @@ export type PageThemeSelector = {
};
// @public
-export const shapes: Record;
+export const palettes: {
+ light: {
+ type: 'light';
+ mode: 'light';
+ background: {
+ default: string;
+ paper: string;
+ };
+ status: {
+ ok: string;
+ warning: string;
+ error: string;
+ running: string;
+ pending: string;
+ aborted: string;
+ };
+ bursts: {
+ fontColor: string;
+ slackChannelText: string;
+ backgroundColor: {
+ default: string;
+ };
+ gradient: {
+ linear: string;
+ };
+ };
+ primary: {
+ main: string;
+ };
+ banner: {
+ info: string;
+ error: string;
+ text: string;
+ link: string;
+ closeButtonColor: string;
+ warning: string;
+ };
+ border: string;
+ textContrast: string;
+ textVerySubtle: string;
+ textSubtle: string;
+ highlight: string;
+ errorBackground: string;
+ warningBackground: string;
+ infoBackground: string;
+ errorText: string;
+ infoText: string;
+ warningText: string;
+ linkHover: string;
+ link: string;
+ gold: string;
+ navigation: {
+ background: string;
+ indicator: string;
+ color: string;
+ selectedColor: string;
+ navItem: {
+ hoverBackground: string;
+ };
+ submenu: {
+ background: string;
+ };
+ };
+ pinSidebarButton: {
+ icon: string;
+ background: string;
+ };
+ tabbar: {
+ indicator: string;
+ };
+ };
+ dark: {
+ type: 'dark';
+ mode: 'dark';
+ background: {
+ default: string;
+ paper: string;
+ };
+ status: {
+ ok: string;
+ warning: string;
+ error: string;
+ running: string;
+ pending: string;
+ aborted: string;
+ };
+ bursts: {
+ fontColor: string;
+ slackChannelText: string;
+ backgroundColor: {
+ default: string;
+ };
+ gradient: {
+ linear: string;
+ };
+ };
+ primary: {
+ main: string;
+ dark: string;
+ };
+ secondary: {
+ main: string;
+ };
+ banner: {
+ info: string;
+ error: string;
+ text: string;
+ link: string;
+ closeButtonColor: string;
+ warning: string;
+ };
+ border: string;
+ textContrast: string;
+ textVerySubtle: string;
+ textSubtle: string;
+ highlight: string;
+ errorBackground: string;
+ warningBackground: string;
+ infoBackground: string;
+ errorText: string;
+ infoText: string;
+ warningText: string;
+ linkHover: string;
+ link: string;
+ gold: string;
+ navigation: {
+ background: string;
+ indicator: string;
+ color: string;
+ selectedColor: string;
+ navItem: {
+ hoverBackground: string;
+ };
+ submenu: {
+ background: string;
+ };
+ };
+ pinSidebarButton: {
+ icon: string;
+ background: string;
+ };
+ tabbar: {
+ indicator: string;
+ };
+ };
+};
// @public
+export const shapes: Record;
+
+// @public @deprecated
export type SimpleThemeOptions = {
- palette: BackstagePaletteOptions;
- defaultPageTheme: string;
+ palette: PaletteOptions;
+ defaultPageTheme?: string;
pageTheme?: Record;
fontFamily?: string;
htmlFontSize?: number;
};
+
+// @public
+export const themes: {
+ light: UnifiedTheme;
+ dark: UnifiedTheme;
+};
+
+// @public
+export function transformV5ComponentThemesToV4(
+ theme: Theme,
+ components?: ThemeOptions['components'],
+): {
+ overrides: Overrides;
+ props: ComponentsProps;
+};
+
+// @public
+export interface UnifiedTheme {
+ // (undocumented)
+ getTheme(version: string): unknown | undefined;
+}
+
+// @public
+export interface UnifiedThemeOptions {
+ // (undocumented)
+ components?: ThemeOptions['components'];
+ // (undocumented)
+ defaultPageTheme?: string;
+ // (undocumented)
+ fontFamily?: string;
+ // (undocumented)
+ htmlFontSize?: number;
+ // (undocumented)
+ pageTheme?: Record;
+ // (undocumented)
+ palette: PaletteOptions & PaletteOptions_2;
+}
+
+// @public
+export function UnifiedThemeProvider(
+ props: UnifiedThemeProviderProps,
+): JSX.Element;
+
+// @public
+export interface UnifiedThemeProviderProps {
+ // (undocumented)
+ children: ReactNode;
+ // (undocumented)
+ noCssBaseline?: boolean;
+ // (undocumented)
+ theme: UnifiedTheme;
+}
```
diff --git a/packages/theme/package.json b/packages/theme/package.json
index f0e26f5739..52def665d6 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.3.0-next.0",
+ "version": "0.3.0",
"publishConfig": {
"access": "public",
"main": "dist/index.esm.js",
@@ -32,9 +32,13 @@
"test": "backstage-cli package test"
},
"dependencies": {
- "@material-ui/core": "^4.12.2"
+ "@emotion/react": "^11.10.5",
+ "@emotion/styled": "^11.10.5",
+ "@mui/material": "^5.12.2"
},
"peerDependencies": {
+ "@material-ui/core": "^4.12.2",
+ "@types/react": "^16.13.1 || ^17.0.0",
"react": "^16.13.1 || ^17.0.0",
"react-dom": "^16.13.1 || ^17.0.0"
},
diff --git a/packages/theme/src/base/createBaseThemeOptions.ts b/packages/theme/src/base/createBaseThemeOptions.ts
new file mode 100644
index 0000000000..e54e920deb
--- /dev/null
+++ b/packages/theme/src/base/createBaseThemeOptions.ts
@@ -0,0 +1,98 @@
+/*
+ * Copyright 2022 The Backstage Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import { PageTheme, PageThemeSelector } from './types';
+import { pageTheme as defaultPageThemes } from './pageTheme';
+
+const DEFAULT_HTML_FONT_SIZE = 16;
+const DEFAULT_FONT_FAMILY =
+ '"Helvetica Neue", Helvetica, Roboto, Arial, sans-serif';
+const DEFAULT_PAGE_THEME = 'home';
+
+/**
+ * Options for {@link createBaseThemeOptions}.
+ *
+ * @public
+ */
+export interface BaseThemeOptionsInput {
+ palette: PaletteOptions;
+ defaultPageTheme?: string;
+ pageTheme?: Record;
+ fontFamily?: string;
+ htmlFontSize?: number;
+}
+
+/**
+ * A helper for creating theme options.
+ *
+ * @public
+ */
+export function createBaseThemeOptions(
+ options: BaseThemeOptionsInput,
+) {
+ const {
+ palette,
+ htmlFontSize = DEFAULT_HTML_FONT_SIZE,
+ fontFamily = DEFAULT_FONT_FAMILY,
+ defaultPageTheme = DEFAULT_PAGE_THEME,
+ pageTheme = defaultPageThemes,
+ } = options;
+
+ if (!pageTheme[defaultPageTheme]) {
+ throw new Error(`${defaultPageTheme} is not defined in pageTheme.`);
+ }
+
+ return {
+ palette,
+ typography: {
+ htmlFontSize,
+ fontFamily,
+ h1: {
+ fontSize: 54,
+ fontWeight: 700,
+ marginBottom: 10,
+ },
+ h2: {
+ fontSize: 40,
+ fontWeight: 700,
+ marginBottom: 8,
+ },
+ h3: {
+ fontSize: 32,
+ fontWeight: 700,
+ marginBottom: 6,
+ },
+ h4: {
+ fontWeight: 700,
+ fontSize: 28,
+ marginBottom: 6,
+ },
+ h5: {
+ fontWeight: 700,
+ fontSize: 24,
+ marginBottom: 4,
+ },
+ h6: {
+ fontWeight: 700,
+ fontSize: 20,
+ marginBottom: 2,
+ },
+ },
+ page: pageTheme[defaultPageTheme],
+ getPageTheme: ({ themeId }: PageThemeSelector) =>
+ pageTheme[themeId] ?? pageTheme[defaultPageTheme],
+ };
+}
diff --git a/packages/theme/src/base/index.ts b/packages/theme/src/base/index.ts
new file mode 100644
index 0000000000..4bb80aa42b
--- /dev/null
+++ b/packages/theme/src/base/index.ts
@@ -0,0 +1,26 @@
+/*
+ * Copyright 2022 The Backstage Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+export { createBaseThemeOptions } from './createBaseThemeOptions';
+export type { BaseThemeOptionsInput } from './createBaseThemeOptions';
+export { colorVariants, genPageTheme, pageTheme, shapes } from './pageTheme';
+export { palettes } from './palettes';
+export type {
+ BackstageThemeAdditions,
+ BackstagePaletteAdditions,
+ PageTheme,
+ PageThemeSelector,
+} from './types';
diff --git a/packages/theme/src/pageTheme.ts b/packages/theme/src/base/pageTheme.ts
similarity index 99%
rename from packages/theme/src/pageTheme.ts
rename to packages/theme/src/base/pageTheme.ts
index dd36d7641b..12a73b6089 100644
--- a/packages/theme/src/pageTheme.ts
+++ b/packages/theme/src/base/pageTheme.ts
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
import { PageTheme } from './types';
/**
diff --git a/packages/theme/src/themes.ts b/packages/theme/src/base/palettes.ts
similarity index 87%
rename from packages/theme/src/themes.ts
rename to packages/theme/src/base/palettes.ts
index 23438a1c14..5e70afd7b8 100644
--- a/packages/theme/src/themes.ts
+++ b/packages/theme/src/base/palettes.ts
@@ -14,20 +14,18 @@
* limitations under the License.
*/
-import { createTheme } from './baseTheme';
-import { pageTheme } from './pageTheme';
-import { yellow } from '@material-ui/core/colors';
-
/**
- * The default Backstage light theme.
+ * Built-in Backstage color palettes.
*
* @public
*/
-export const lightTheme = createTheme({
- palette: {
- type: 'light',
+export const palettes = {
+ light: {
+ type: 'light' as const,
+ mode: 'light' as const,
background: {
default: '#F8F8F8',
+ paper: '#FFFFFF',
},
status: {
ok: '#1DB954',
@@ -71,7 +69,7 @@ export const lightTheme = createTheme({
warningText: '#000000',
linkHover: '#2196F3',
link: '#0A6EBE',
- gold: yellow.A700,
+ gold: '#FFD600',
navigation: {
background: '#171717',
indicator: '#9BF0E1',
@@ -92,20 +90,12 @@ export const lightTheme = createTheme({
indicator: '#9BF0E1',
},
},
- defaultPageTheme: 'home',
- pageTheme,
-});
-
-/**
- * The default Backstage dark theme.
- *
- * @public
- */
-export const darkTheme = createTheme({
- palette: {
- type: 'dark',
+ dark: {
+ type: 'dark' as const,
+ mode: 'dark' as const,
background: {
default: '#333333',
+ paper: '#424242',
},
status: {
ok: '#71CF88',
@@ -153,7 +143,7 @@ export const darkTheme = createTheme({
warningText: '#000000',
linkHover: '#82BAFD',
link: '#9CC9FF',
- gold: yellow.A700,
+ gold: '#FFD600',
navigation: {
background: '#424242',
indicator: '#9BF0E1',
@@ -174,6 +164,4 @@ export const darkTheme = createTheme({
indicator: '#9BF0E1',
},
},
- defaultPageTheme: 'home',
- pageTheme,
-});
+};
diff --git a/packages/theme/src/types.ts b/packages/theme/src/base/types.ts
similarity index 63%
rename from packages/theme/src/types.ts
rename to packages/theme/src/base/types.ts
index 0295e491f1..8f71ce4292 100644
--- a/packages/theme/src/types.ts
+++ b/packages/theme/src/base/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 The Backstage Authors
+ * Copyright 2022 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -14,12 +14,6 @@
* limitations under the License.
*/
-import { Theme, ThemeOptions } from '@material-ui/core';
-import {
- PaletteOptions,
- Palette,
-} from '@material-ui/core/styles/createPalette';
-
/**
* Backstage specific additions to the material-ui palette.
*
@@ -90,21 +84,6 @@ export type BackstagePaletteAdditions = {
};
};
-/**
- * The full Backstage palette.
- *
- * @public
- */
-export type BackstagePalette = Palette & BackstagePaletteAdditions;
-
-/**
- * The full Backstage palette options.
- *
- * @public
- */
-export type BackstagePaletteOptions = PaletteOptions &
- BackstagePaletteAdditions;
-
/**
* Selector for what page theme to use.
*
@@ -114,48 +93,6 @@ export type PageThemeSelector = {
themeId: string;
};
-/**
- * A Backstage theme.
- *
- * @public
- */
-export interface BackstageTheme extends Theme {
- palette: BackstagePalette;
- page: PageTheme;
- getPageTheme: (selector: PageThemeSelector) => PageTheme;
-}
-
-/**
- * Backstage theme options.
- *
- * @public
- * @remarks
- *
- * This is essentially a partial theme definition made by the user, that then
- * gets merged together with defaults and other values to form the final
- * {@link BackstageTheme}.
- *
- */
-export interface BackstageThemeOptions extends ThemeOptions {
- palette: BackstagePaletteOptions;
- page: PageTheme;
- getPageTheme: (selector: PageThemeSelector) => PageTheme;
-}
-
-/**
- * A simpler configuration for creating a new theme that just tweaks some parts
- * of the backstage one.
- *
- * @public
- */
-export type SimpleThemeOptions = {
- palette: BackstagePaletteOptions;
- defaultPageTheme: string;
- pageTheme?: Record;
- fontFamily?: string;
- htmlFontSize?: number;
-};
-
/**
* The theme definitions for a given layout page.
*
@@ -167,3 +104,13 @@ export type PageTheme = {
backgroundImage: string;
fontColor: string;
};
+
+/**
+ * Backstage specific additions to the material-ui theme.
+ *
+ * @public
+ */
+export type BackstageThemeAdditions = {
+ page: PageTheme;
+ getPageTheme: (selector: PageThemeSelector) => PageTheme;
+};
diff --git a/packages/theme/src/index.ts b/packages/theme/src/index.ts
index 41f827bf43..b0e3590273 100644
--- a/packages/theme/src/index.ts
+++ b/packages/theme/src/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 The Backstage Authors
+ * Copyright 2022 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -20,7 +20,7 @@
* @packageDocumentation
*/
-export * from './themes';
-export * from './baseTheme';
-export * from './types';
-export * from './pageTheme';
+export * from './unified';
+export * from './base';
+export * from './v4';
+export * from './v5';
diff --git a/packages/theme/src/unified/MuiClassNameSetup.ts b/packages/theme/src/unified/MuiClassNameSetup.ts
new file mode 100644
index 0000000000..42b948af32
--- /dev/null
+++ b/packages/theme/src/unified/MuiClassNameSetup.ts
@@ -0,0 +1,24 @@
+/*
+ * Copyright 2022 The Backstage Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import { unstable_ClassNameGenerator as ClassNameGenerator } from '@mui/material/className';
+
+/**
+ * This API is introduced in @mui/material (v5.0.5) as a replacement of deprecated createGenerateClassName & only affects v5 MUI components from `@mui/*`
+ */
+ClassNameGenerator.configure(componentName => {
+ return `v5-${componentName}`;
+});
diff --git a/packages/theme/src/unified/UnifiedTheme.tsx b/packages/theme/src/unified/UnifiedTheme.tsx
new file mode 100644
index 0000000000..0c5f80357a
--- /dev/null
+++ b/packages/theme/src/unified/UnifiedTheme.tsx
@@ -0,0 +1,101 @@
+/*
+ * Copyright 2022 The Backstage Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import {
+ Theme as Mui4Theme,
+ ThemeOptions as ThemeOptionsV4,
+ createTheme,
+} from '@material-ui/core/styles';
+import type { PaletteOptions as PaletteOptionsV4 } from '@material-ui/core/styles/createPalette';
+import { PaletteOptions as PaletteOptionsV5 } from '@mui/material/styles';
+import {
+ adaptV4Theme,
+ Theme as Mui5Theme,
+ createTheme as createV5Theme,
+ ThemeOptions as ThemeOptionsV5,
+} from '@mui/material/styles';
+import { transformV5ComponentThemesToV4 } from './overrides';
+import { PageTheme } from '../base/types';
+import { defaultComponentThemes } from '../v5';
+import { createBaseThemeOptions } from '../base/createBaseThemeOptions';
+import { UnifiedTheme } from './types';
+
+export class UnifiedThemeHolder implements UnifiedTheme {
+ #themes = new Map();
+
+ constructor(v4?: Mui4Theme, v5?: Mui5Theme) {
+ this.#themes = new Map();
+ if (v4) {
+ this.#themes.set('v4', v4);
+ }
+ if (v5) {
+ this.#themes.set('v5', v5);
+ }
+ }
+
+ getTheme(version: string): unknown | undefined {
+ return this.#themes.get(version);
+ }
+}
+
+/**
+ * Options for creating a new {@link UnifiedTheme}.
+ *
+ * @public
+ */
+export interface UnifiedThemeOptions {
+ palette: PaletteOptionsV4 & PaletteOptionsV5;
+ defaultPageTheme?: string;
+ pageTheme?: Record;
+ fontFamily?: string;
+ htmlFontSize?: number;
+ components?: ThemeOptionsV5['components'];
+}
+
+/**
+ * Creates a new {@link UnifiedTheme} using the provided options.
+ *
+ * @public
+ */
+export function createUnifiedTheme(options: UnifiedThemeOptions): UnifiedTheme {
+ const themeOptions = createBaseThemeOptions(options);
+ const components = { ...defaultComponentThemes, ...options.components };
+ const v5Theme = createV5Theme({ ...themeOptions, components });
+
+ // TODO: Not super relevant in the beginning
+ /* const mui4Styles = maybeLoadMui4Styles();
+ if (!mui4Styles) {
+ return new UnifiedThemeHolder(undefined, v5Theme);
+ } */
+
+ const v4Overrides = transformV5ComponentThemesToV4(v5Theme, components);
+ const v4Theme = { ...createTheme(themeOptions), ...v4Overrides };
+ return new UnifiedThemeHolder(v4Theme, v5Theme);
+}
+
+/**
+ * Creates a new {@link UnifiedTheme} using MUI v4 theme options.
+ * Note that this uses `adaptV4Theme` from MUI v5, which is deprecated.
+ *
+ * @public
+ */
+export function createUnifiedThemeFromV4(
+ options: ThemeOptionsV4,
+): UnifiedTheme {
+ const v5Theme = adaptV4Theme(options as any);
+ const v4Theme = createTheme(options);
+ return new UnifiedThemeHolder(v4Theme, v5Theme);
+}
diff --git a/packages/theme/src/unified/UnifiedThemeProvider.tsx b/packages/theme/src/unified/UnifiedThemeProvider.tsx
new file mode 100644
index 0000000000..c7054e0e55
--- /dev/null
+++ b/packages/theme/src/unified/UnifiedThemeProvider.tsx
@@ -0,0 +1,76 @@
+/*
+ * Copyright 2022 The Backstage Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import React, { ReactNode } from 'react';
+import './MuiClassNameSetup';
+import { ThemeProvider } from '@material-ui/core/styles';
+import {
+ StyledEngineProvider,
+ ThemeProvider as Mui5Provider,
+} from '@mui/material/styles';
+import CSSBaseline from '@mui/material/CssBaseline';
+import { UnifiedTheme } from './types';
+
+/**
+ * Props for {@link UnifiedThemeProvider}.
+ *
+ * @public
+ */
+export interface UnifiedThemeProviderProps {
+ children: ReactNode;
+ theme: UnifiedTheme;
+ noCssBaseline?: boolean;
+}
+
+/**
+ * Provides themes for all MUI versions supported by the provided unified theme.
+ *
+ * @public
+ */
+export function UnifiedThemeProvider(
+ props: UnifiedThemeProviderProps,
+): JSX.Element {
+ const { children, theme, noCssBaseline = false } = props;
+
+ const v4Theme = theme.getTheme('v4');
+ const v5Theme = theme.getTheme('v5');
+
+ let cssBaseline: JSX.Element | undefined = undefined;
+ if (!noCssBaseline) {
+ cssBaseline = ;
+ }
+
+ let result = (
+ <>
+ {cssBaseline}
+ {children}
+ >
+ );
+
+ if (v4Theme) {
+ result = {result};
+ }
+
+ if (v5Theme) {
+ result = (
+
+ {result}
+
+ );
+ }
+
+ return result;
+}
diff --git a/packages/theme/src/unified/index.ts b/packages/theme/src/unified/index.ts
new file mode 100644
index 0000000000..f5c805d3ed
--- /dev/null
+++ b/packages/theme/src/unified/index.ts
@@ -0,0 +1,23 @@
+/*
+ * Copyright 2022 The Backstage Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+export { transformV5ComponentThemesToV4 } from './overrides';
+export { createUnifiedTheme, createUnifiedThemeFromV4 } from './UnifiedTheme';
+export type { UnifiedThemeOptions } from './UnifiedTheme';
+export { themes } from './themes';
+export { UnifiedThemeProvider } from './UnifiedThemeProvider';
+export type { UnifiedThemeProviderProps } from './UnifiedThemeProvider';
+export type { UnifiedTheme } from './types';
diff --git a/packages/theme/src/unified/overrides.test.ts b/packages/theme/src/unified/overrides.test.ts
new file mode 100644
index 0000000000..e84cedade6
--- /dev/null
+++ b/packages/theme/src/unified/overrides.test.ts
@@ -0,0 +1,165 @@
+/*
+ * Copyright 2022 The Backstage Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import { Theme } from '@mui/material/styles';
+import { transformV5ComponentThemesToV4 } from './overrides';
+
+describe('transformV5ComponentThemesToV4', () => {
+ const mockTheme = {
+ palette: {
+ primary: {
+ main: 'red',
+ },
+ },
+ } as unknown as Theme;
+ it('transforms empty component themes', () => {
+ expect(transformV5ComponentThemesToV4(mockTheme)).toEqual({
+ overrides: {},
+ props: {},
+ });
+ expect(transformV5ComponentThemesToV4(mockTheme, {})).toEqual({
+ overrides: {},
+ props: {},
+ });
+ expect(
+ transformV5ComponentThemesToV4(mockTheme, {
+ MuiButton: {
+ styleOverrides: undefined,
+ defaultProps: undefined,
+ },
+ }),
+ ).toEqual({ overrides: {}, props: {} });
+ expect(
+ transformV5ComponentThemesToV4(mockTheme, {
+ MuiButton: {
+ styleOverrides: {},
+ defaultProps: {},
+ },
+ }),
+ ).toEqual({ overrides: { MuiButton: {} }, props: { MuiButton: {} } });
+ });
+
+ it('transforms component themes', () => {
+ expect(
+ transformV5ComponentThemesToV4(mockTheme, {
+ MuiButton: {
+ styleOverrides: {
+ root: {
+ color: 'green',
+ },
+ },
+ defaultProps: {
+ disableRipple: true,
+ },
+ },
+ }),
+ ).toEqual({
+ overrides: {
+ MuiButton: {
+ root: {
+ color: 'green',
+ },
+ },
+ },
+ props: {
+ MuiButton: {
+ disableRipple: true,
+ },
+ },
+ });
+ expect(
+ transformV5ComponentThemesToV4(mockTheme, {
+ MuiButton: {
+ styleOverrides: {
+ root: ({ theme }) => ({
+ color: theme.palette.primary.main,
+ }),
+ },
+ },
+ }),
+ ).toEqual({
+ overrides: {
+ MuiButton: {
+ root: {
+ color: 'red',
+ },
+ },
+ },
+ props: {},
+ });
+ });
+
+ it('transforms CSSBaseline theme', () => {
+ expect(
+ transformV5ComponentThemesToV4(mockTheme, {
+ MuiCssBaseline: {
+ styleOverrides: theme => ({
+ html: {
+ color: theme.palette.primary.main,
+ },
+ }),
+ defaultProps: {
+ enableColorScheme: true,
+ },
+ },
+ }),
+ ).toEqual({
+ overrides: {
+ MuiCssBaseline: {
+ '@global': {
+ html: {
+ color: 'red',
+ },
+ },
+ },
+ },
+ props: {
+ MuiCssBaseline: {
+ enableColorScheme: true,
+ },
+ },
+ });
+ });
+
+ it('transform state styles', () => {
+ expect(
+ transformV5ComponentThemesToV4(mockTheme, {
+ MuiButton: {
+ styleOverrides: {
+ root: {
+ color: 'green',
+ '&.Mui-disabled': {
+ color: 'red',
+ },
+ },
+ },
+ },
+ }),
+ ).toEqual({
+ overrides: {
+ MuiButton: {
+ root: {
+ color: 'green',
+ },
+ disabled: {
+ color: 'red',
+ },
+ },
+ },
+ props: {},
+ });
+ });
+});
diff --git a/packages/theme/src/unified/overrides.ts b/packages/theme/src/unified/overrides.ts
new file mode 100644
index 0000000000..7417fccedc
--- /dev/null
+++ b/packages/theme/src/unified/overrides.ts
@@ -0,0 +1,142 @@
+/*
+ * Copyright 2022 The Backstage Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import type { Overrides } from '@material-ui/core/styles/overrides';
+import type { ComponentsProps } from '@material-ui/core/styles/props';
+import { ComponentsOverrides, Theme, ThemeOptions } from '@mui/material/styles';
+import { CSSProperties } from 'react';
+
+type V5Override = ComponentsOverrides[Exclude<
+ keyof ComponentsOverrides,
+ 'MuiCssBaseline'
+>];
+type V4Override = Overrides[keyof Overrides];
+type StaticStyleRules = Record<
+ string,
+ CSSProperties | Record
+>;
+
+// Converts callback-based overrides to static styles, e.g.
+// { root: theme => ({ color: theme.color }) } -> { root: { color: 'red' } }
+function adaptV5CssBaselineOverride(
+ theme: Theme,
+ overrides: ComponentsOverrides['MuiCssBaseline'],
+): StaticStyleRules | undefined {
+ if (!overrides || typeof overrides === 'string') {
+ return undefined;
+ }
+
+ const styles = typeof overrides === 'function' ? overrides(theme) : overrides;
+ if (styles) {
+ return { '@global': styles } as StaticStyleRules;
+ }
+
+ return undefined;
+}
+
+// Converts callback-based overrides to static styles, e.g.
+// { root: theme => ({ color: theme.color }) } -> { root: { color: 'red' } }
+function adaptV5Override(
+ theme: Theme,
+ overrides: V5Override,
+): StaticStyleRules | undefined {
+ if (!overrides || typeof overrides === 'string') {
+ return undefined;
+ }
+ if (typeof overrides === 'object') {
+ return Object.fromEntries(
+ Object.entries(overrides).map(([className, style]) => {
+ if (typeof style === 'function') {
+ return [className, style({ theme })];
+ }
+ return [className, style];
+ }),
+ );
+ }
+ return overrides as StaticStyleRules;
+}
+
+const stateStyleKeyPattern = /^&.Mui-([\w-]+)$/;
+
+// Move state style overrides to the top level, e.g.
+// { root: { '&.Mui-active': { color: 'red' } } } -> { active: { color: 'red' } }
+function extractV5StateOverrides(
+ overrides: StaticStyleRules | undefined,
+): StaticStyleRules | undefined {
+ let output = overrides;
+ if (!overrides || typeof overrides !== 'object') {
+ return output;
+ }
+ for (const className of Object.keys(overrides)) {
+ const styles = overrides[className];
+ if (!styles || typeof styles !== 'object') {
+ continue;
+ }
+ for (const _styleKey of Object.keys(styles)) {
+ const styleKey = _styleKey as keyof typeof styles;
+ const match = styleKey.match(stateStyleKeyPattern);
+ if (match) {
+ const [, state] = match;
+ const { [styleKey]: stateStyles, ...restStyles } = styles;
+ if (stateStyles) {
+ output = {
+ ...output,
+ [className]: restStyles,
+ [state]: stateStyles,
+ };
+ }
+ }
+ }
+ }
+ return output;
+}
+
+/**
+ * Transform MUI v5 component themes into a v4 theme props and overrides.
+ *
+ * @public
+ */
+export function transformV5ComponentThemesToV4(
+ theme: Theme,
+ components: ThemeOptions['components'] = {},
+): { overrides: Overrides; props: ComponentsProps } {
+ const overrides: Record = {};
+ const props: Record = {};
+
+ for (const name of Object.keys(components)) {
+ const component = components[name as keyof typeof components];
+ if (!component) {
+ continue;
+ }
+ if ('styleOverrides' in component) {
+ if (name === 'MuiCssBaseline') {
+ overrides[name] = adaptV5CssBaselineOverride(
+ theme,
+ component.styleOverrides as ComponentsOverrides['MuiCssBaseline'],
+ );
+ } else {
+ overrides[name] = extractV5StateOverrides(
+ adaptV5Override(theme, component.styleOverrides as V5Override),
+ );
+ }
+ }
+ if ('defaultProps' in component) {
+ props[name] = component.defaultProps;
+ }
+ }
+
+ return { overrides, props };
+}
diff --git a/packages/theme/src/unified/themes.ts b/packages/theme/src/unified/themes.ts
new file mode 100644
index 0000000000..24e1b1026b
--- /dev/null
+++ b/packages/theme/src/unified/themes.ts
@@ -0,0 +1,28 @@
+/*
+ * Copyright 2022 The Backstage Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import { palettes } from '../base';
+import { createUnifiedTheme } from './UnifiedTheme';
+
+/**
+ * Built-in Backstage MUI themes.
+ *
+ * @public
+ */
+export const themes = {
+ light: createUnifiedTheme({ palette: palettes.light }),
+ dark: createUnifiedTheme({ palette: palettes.dark }),
+};
diff --git a/packages/theme/src/unified/types.ts b/packages/theme/src/unified/types.ts
new file mode 100644
index 0000000000..f090a99b83
--- /dev/null
+++ b/packages/theme/src/unified/types.ts
@@ -0,0 +1,26 @@
+/*
+ * Copyright 2022 The Backstage Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * A container of one theme for multiple different MUI versions.
+ *
+ * Currently known keys are 'v4' and 'v5'.
+ *
+ * @public
+ */
+export interface UnifiedTheme {
+ getTheme(version: string): unknown | undefined;
+}
diff --git a/packages/theme/src/v4/baseTheme.ts b/packages/theme/src/v4/baseTheme.ts
new file mode 100644
index 0000000000..8143183ec0
--- /dev/null
+++ b/packages/theme/src/v4/baseTheme.ts
@@ -0,0 +1,76 @@
+/*
+ * 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 { Theme as Mui5Theme } from '@mui/material/styles';
+import { createTheme as createMuiTheme } from '@material-ui/core/styles';
+import type {
+ GridProps,
+ SwitchProps,
+ Theme,
+ ThemeOptions,
+} from '@material-ui/core';
+import { Overrides } from '@material-ui/core/styles/overrides';
+import { SimpleThemeOptions } from './types';
+import { createBaseThemeOptions } from '../base';
+import { defaultComponentThemes } from '../v5';
+import { transformV5ComponentThemesToV4 } from '../unified/overrides';
+
+/**
+ * An old helper for creating MUI v4 theme options.
+ *
+ * @public
+ * @deprecated Use {@link createBaseThemeOptions} instead.
+ */
+export function createThemeOptions(options: SimpleThemeOptions): ThemeOptions {
+ return {
+ props: {
+ MuiGrid: defaultComponentThemes?.MuiGrid
+ ?.defaultProps as Partial,
+ MuiSwitch: defaultComponentThemes?.MuiSwitch
+ ?.defaultProps as Partial,
+ },
+ ...createBaseThemeOptions(options),
+ };
+}
+
+/**
+ * * An old helper for creating MUI v4 theme overrides.
+ *
+ * @public
+ * @deprecated Use {@link defaultComponentThemes} with {@link transformV5ComponentThemesToV4} instead.
+ */
+export function createThemeOverrides(theme: Theme): Overrides {
+ return transformV5ComponentThemesToV4(
+ // Safe but we have to make sure we don't use mui5 specific stuff in the default component themes
+ theme as unknown as Mui5Theme,
+ defaultComponentThemes,
+ ).overrides;
+}
+
+/**
+ * The old method to create a Backstage MUI v4 theme using a palette.
+ * The theme is created with the common Backstage options and component styles.
+ *
+ * @public
+ * @deprecated Use {@link createUnifiedTheme} instead.
+ */
+export function createTheme(options: SimpleThemeOptions): Theme {
+ const themeOptions = createThemeOptions(options);
+ const baseTheme = createMuiTheme(themeOptions);
+ const overrides = createThemeOverrides(baseTheme);
+ const theme = { ...baseTheme, overrides };
+ return theme;
+}
diff --git a/packages/theme/src/v4/index.ts b/packages/theme/src/v4/index.ts
new file mode 100644
index 0000000000..fad349b849
--- /dev/null
+++ b/packages/theme/src/v4/index.ts
@@ -0,0 +1,29 @@
+/*
+ * Copyright 2020 The Backstage Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+export { darkTheme, lightTheme } from './themes';
+export {
+ createTheme,
+ createThemeOptions,
+ createThemeOverrides,
+} from './baseTheme';
+export type {
+ BackstagePalette,
+ BackstagePaletteOptions,
+ BackstageTheme,
+ BackstageThemeOptions,
+ SimpleThemeOptions,
+} from './types';
diff --git a/packages/theme/src/v4/themes.ts b/packages/theme/src/v4/themes.ts
new file mode 100644
index 0000000000..488ee58831
--- /dev/null
+++ b/packages/theme/src/v4/themes.ts
@@ -0,0 +1,38 @@
+/*
+ * Copyright 2020 The Backstage Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import { createTheme } from './baseTheme';
+import { palettes } from '../base';
+
+/**
+ * The old MUI v4 Backstage light theme.
+ *
+ * @public
+ * @deprecated Use {@link themes.light} instead.
+ */
+export const lightTheme = createTheme({
+ palette: palettes.light,
+});
+
+/**
+ * The old MUI v4 Backstage dark theme.
+ *
+ * @public
+ * @deprecated Use {@link themes.dark} instead.
+ */
+export const darkTheme = createTheme({
+ palette: palettes.dark,
+});
diff --git a/packages/theme/src/v4/types.ts b/packages/theme/src/v4/types.ts
new file mode 100644
index 0000000000..8bca5b8c3b
--- /dev/null
+++ b/packages/theme/src/v4/types.ts
@@ -0,0 +1,104 @@
+/*
+ * 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 type {
+ Theme as MuiTheme,
+ ThemeOptions as MuiThemeOptions,
+} from '@material-ui/core';
+import type {
+ PaletteOptions as MuiPaletteOptions,
+ Palette as MuiPalette,
+} from '@material-ui/core/styles/createPalette';
+import {
+ BackstagePaletteAdditions,
+ BackstageThemeAdditions,
+ PageTheme,
+ PageThemeSelector,
+} from '../base/types';
+
+/**
+ * The full Backstage palette.
+ *
+ * @public
+ * @deprecated This type is deprecated, the MUI Palette type is now always extended instead.
+ */
+export type BackstagePalette = MuiPalette & BackstagePaletteAdditions;
+
+/**
+ * The full Backstage palette options.
+ *
+ * @public
+ * @deprecated This type is deprecated, the MUI PaletteOptions type is now always extended instead.
+ */
+export type BackstagePaletteOptions = MuiPaletteOptions &
+ BackstagePaletteAdditions;
+
+/**
+ * Backstage theme options.
+ *
+ * @public
+ * @deprecated This type is deprecated, the MUI ThemeOptions type is now always extended instead.
+ * @remarks
+ *
+ * This is essentially a partial theme definition made by the user, that then
+ * gets merged together with defaults and other values to form the final
+ * {@link BackstageTheme}.
+ *
+ */
+export interface BackstageThemeOptions extends MuiThemeOptions {
+ palette: BackstagePaletteOptions;
+ page: PageTheme;
+ getPageTheme: (selector: PageThemeSelector) => PageTheme;
+}
+
+/**
+ * A Backstage theme.
+ *
+ * @public
+ * @deprecated This type is deprecated, the MUI Theme type is now always extended instead.
+ */
+export interface BackstageTheme extends MuiTheme {
+ palette: BackstagePalette;
+ page: PageTheme;
+ getPageTheme: (selector: PageThemeSelector) => PageTheme;
+}
+
+/**
+ * A simpler configuration for creating a new theme that just tweaks some parts
+ * of the backstage one.
+ *
+ * @public
+ * @deprecated Use {@link BaseThemeOptionsInput} instead.
+ */
+export type SimpleThemeOptions = {
+ palette: MuiPaletteOptions;
+ defaultPageTheme?: string;
+ pageTheme?: Record;
+ fontFamily?: string;
+ htmlFontSize?: number;
+};
+
+declare module '@material-ui/core/styles/createPalette' {
+ interface Palette extends BackstagePaletteAdditions {}
+
+ interface PaletteOptions extends BackstagePaletteAdditions {}
+}
+
+declare module '@material-ui/core/styles/createTheme' {
+ interface Theme extends BackstageThemeAdditions {}
+
+ interface ThemeOptions extends BackstageThemeAdditions {}
+}
diff --git a/packages/theme/src/baseTheme.ts b/packages/theme/src/v5/defaultComponentThemes.ts
similarity index 50%
rename from packages/theme/src/baseTheme.ts
rename to packages/theme/src/v5/defaultComponentThemes.ts
index c0a9022bd0..14656b007d 100644
--- a/packages/theme/src/baseTheme.ts
+++ b/packages/theme/src/v5/defaultComponentThemes.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 The Backstage Authors
+ * Copyright 2022 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -14,121 +14,51 @@
* limitations under the License.
*/
-import { createTheme as createMuiTheme } from '@material-ui/core/styles';
-import { darken, lighten } from '@material-ui/core/styles/colorManipulator';
-import { Overrides } from '@material-ui/core/styles/overrides';
-import {
- BackstageTheme,
- BackstageThemeOptions,
- SimpleThemeOptions,
-} from './types';
-import { pageTheme as defaultPageThemes } from './pageTheme';
-
-const DEFAULT_HTML_FONT_SIZE = 16;
-const DEFAULT_FONT_FAMILY =
- '"Helvetica Neue", Helvetica, Roboto, Arial, sans-serif';
-
-/**
- * A helper for creating theme options.
- *
- * @public
- */
-export function createThemeOptions(
- options: SimpleThemeOptions,
-): BackstageThemeOptions {
- const {
- palette,
- htmlFontSize = DEFAULT_HTML_FONT_SIZE,
- fontFamily = DEFAULT_FONT_FAMILY,
- defaultPageTheme,
- pageTheme = defaultPageThemes,
- } = options;
-
- if (!pageTheme[defaultPageTheme]) {
- throw new Error(`${defaultPageTheme} is not defined in pageTheme.`);
- }
-
- return {
- palette,
- props: {
- MuiGrid: {
- spacing: 2,
- },
- MuiSwitch: {
- color: 'primary',
- },
- },
- typography: {
- htmlFontSize,
- fontFamily,
- h6: {
- fontWeight: 700,
- fontSize: 20,
- marginBottom: 2,
- },
- h5: {
- fontWeight: 700,
- fontSize: 24,
- marginBottom: 4,
- },
- h4: {
- fontWeight: 700,
- fontSize: 28,
- marginBottom: 6,
- },
- h3: {
- fontSize: 32,
- fontWeight: 700,
- marginBottom: 6,
- },
- h2: {
- fontSize: 40,
- fontWeight: 700,
- marginBottom: 8,
- },
- h1: {
- fontSize: 54,
- fontWeight: 700,
- marginBottom: 10,
- },
- },
- page: pageTheme[defaultPageTheme],
- getPageTheme: ({ themeId }) =>
- pageTheme[themeId] ?? pageTheme[defaultPageTheme],
- };
-}
+import { darken, lighten, ThemeOptions } from '@mui/material/styles';
/**
* A helper for creating theme overrides.
*
* @public
*/
-export function createThemeOverrides(theme: BackstageTheme): Overrides {
- return {
- MuiCssBaseline: {
- '@global': {
- html: {
- height: '100%',
- fontFamily: theme.typography.fontFamily,
- },
- body: {
- height: '100%',
- fontFamily: theme.typography.fontFamily,
- 'overscroll-behavior-y': 'none',
- },
- a: {
- color: 'inherit',
- textDecoration: 'none',
- },
+export const defaultComponentThemes: ThemeOptions['components'] = {
+ MuiCssBaseline: {
+ styleOverrides: theme => ({
+ html: {
+ height: '100%',
+ fontFamily: theme.typography.fontFamily,
},
+ body: {
+ height: '100%',
+ fontFamily: theme.typography.fontFamily,
+ overscrollBehaviorY: 'none',
+ fontSize: '0.875rem',
+ lineHeight: 1.43,
+ },
+ a: {
+ color: 'inherit',
+ textDecoration: 'none',
+ },
+ }),
+ },
+ MuiGrid: {
+ defaultProps: {
+ spacing: 2,
},
- MuiTableRow: {
+ },
+ MuiSwitch: {
+ defaultProps: {
+ color: 'primary',
+ },
+ },
+ MuiTableRow: {
+ styleOverrides: {
// Alternating row backgrounds
- root: {
+ root: ({ theme }) => ({
'&:nth-of-type(odd)': {
backgroundColor: theme.palette.background.default,
},
- },
+ }),
// Use pointer for hoverable rows
hover: {
'&:hover': {
@@ -136,15 +66,17 @@ export function createThemeOverrides(theme: BackstageTheme): Overrides {
},
},
// Alternating head backgrounds
- head: {
+ head: ({ theme }) => ({
'&:nth-of-type(odd)': {
backgroundColor: theme.palette.background.paper,
},
- },
+ }),
},
- // Tables are more dense than default mui tables
- MuiTableCell: {
- root: {
+ },
+ // Tables are more dense than default mui tables
+ MuiTableCell: {
+ styleOverrides: {
+ root: ({ theme }) => ({
wordBreak: 'break-word',
overflow: 'hidden',
verticalAlign: 'middle',
@@ -152,26 +84,31 @@ export function createThemeOverrides(theme: BackstageTheme): Overrides {
margin: 0,
padding: theme.spacing(3, 2, 3, 2.5),
borderBottom: 0,
- },
- sizeSmall: {
+ }),
+ sizeSmall: ({ theme }) => ({
padding: theme.spacing(1.5, 2, 1.5, 2.5),
- },
- head: {
+ }),
+ head: ({ theme }) => ({
wordBreak: 'break-word',
overflow: 'hidden',
+ color: theme.palette.textSubtle,
fontWeight: 'normal',
lineHeight: '1',
- },
+ }),
},
- MuiTabs: {
+ },
+ MuiTabs: {
+ styleOverrides: {
// Tabs are smaller than default mui tab rows
root: {
minHeight: 24,
},
},
- MuiTab: {
+ },
+ MuiTab: {
+ styleOverrides: {
// Tabs are smaller and have a hover background
- root: {
+ root: ({ theme }) => ({
color: theme.palette.link,
minHeight: 24,
textTransform: 'initial',
@@ -185,25 +122,33 @@ export function createThemeOverrides(theme: BackstageTheme): Overrides {
fontSize: theme.typography.pxToRem(14),
fontWeight: 500,
},
- },
- textColorPrimary: {
+ }),
+ textColorPrimary: ({ theme }) => ({
color: theme.palette.link,
- },
+ }),
},
- MuiTableSortLabel: {
+ },
+ MuiTableSortLabel: {
+ styleOverrides: {
// No color change on hover, just rely on the arrow showing up instead.
root: {
color: 'inherit',
'&:hover': {
color: 'inherit',
},
- },
- // Bold font for highlighting selected column
- active: {
- fontWeight: 'bold',
+ '&:focus': {
+ color: 'inherit',
+ },
+ // Bold font for highlighting selected column
+ '&.Mui-active': {
+ fontWeight: 'bold',
+ color: 'inherit',
+ },
},
},
- MuiListItemText: {
+ },
+ MuiListItemText: {
+ styleOverrides: {
dense: {
// Default dense list items to adding ellipsis for really long str...
whiteSpace: 'nowrap',
@@ -211,44 +156,50 @@ export function createThemeOverrides(theme: BackstageTheme): Overrides {
textOverflow: 'ellipsis',
},
},
- MuiButton: {
+ },
+ MuiButton: {
+ styleOverrides: {
text: {
// Text buttons have less padding by default, but we want to keep the original padding
padding: undefined,
},
},
- MuiChip: {
- root: {
+ },
+ MuiChip: {
+ styleOverrides: {
+ root: ({ theme }) => ({
backgroundColor: '#D9D9D9',
// By default there's no margin, but it's usually wanted, so we add some trailing margin
marginRight: theme.spacing(1),
marginBottom: theme.spacing(1),
color: theme.palette.grey[900],
- },
- outlined: {
+ }),
+ outlined: ({ theme }) => ({
color: theme.palette.text.primary,
- },
- label: {
- lineHeight: `${theme.spacing(2.5)}px`,
+ }),
+ label: ({ theme }) => ({
+ lineHeight: theme.spacing(2.5),
fontWeight: theme.typography.fontWeightMedium,
- fontSize: `${theme.spacing(1.75)}px`,
- },
- labelSmall: {
- fontSize: `${theme.spacing(1.5)}px`,
- },
- deleteIcon: {
+ fontSize: theme.spacing(1.75),
+ }),
+ labelSmall: ({ theme }) => ({
+ fontSize: theme.spacing(1.5),
+ }),
+ deleteIcon: ({ theme }) => ({
color: theme.palette.grey[500],
- width: `${theme.spacing(3)}px`,
- height: `${theme.spacing(3)}px`,
- margin: `0 ${theme.spacing(0.75)}px 0 -${theme.spacing(0.75)}px`,
- },
- deleteIconSmall: {
- width: `${theme.spacing(2)}px`,
- height: `${theme.spacing(2)}px`,
- margin: `0 ${theme.spacing(0.5)}px 0 -${theme.spacing(0.5)}px`,
- },
+ width: theme.spacing(3),
+ height: theme.spacing(3),
+ margin: `0 ${theme.spacing(0.75)} 0 -${theme.spacing(0.75)}`,
+ }),
+ deleteIconSmall: ({ theme }) => ({
+ width: theme.spacing(2),
+ height: theme.spacing(2),
+ margin: `0 ${theme.spacing(0.5)} 0 -${theme.spacing(0.5)}`,
+ }),
},
- MuiCard: {
+ },
+ MuiCard: {
+ styleOverrides: {
root: {
// When cards have a forced size, such as when they are arranged in a
// CSS grid, the content needs to flex such that the actions (buttons
@@ -258,13 +209,17 @@ export function createThemeOverrides(theme: BackstageTheme): Overrides {
flexDirection: 'column',
},
},
- MuiCardHeader: {
+ },
+ MuiCardHeader: {
+ styleOverrides: {
root: {
// Reduce padding between header and content
paddingBottom: 0,
},
},
- MuiCardContent: {
+ },
+ MuiCardContent: {
+ styleOverrides: {
root: {
// When cards have a forced size, such as when they are arranged in a
// CSS grid, the content needs to flex such that the actions (buttons
@@ -276,25 +231,13 @@ export function createThemeOverrides(theme: BackstageTheme): Overrides {
},
},
},
- MuiCardActions: {
+ },
+ MuiCardActions: {
+ styleOverrides: {
root: {
// We default to putting the card actions at the end
justifyContent: 'flex-end',
},
},
- };
-}
-
-/**
- * Creates a Backstage MUI theme using a palette. The theme is created with the
- * common Backstage options and component styles.
- *
- * @public
- */
-export function createTheme(options: SimpleThemeOptions): BackstageTheme {
- const themeOptions = createThemeOptions(options);
- const baseTheme = createMuiTheme(themeOptions) as BackstageTheme;
- const overrides = createThemeOverrides(baseTheme);
- const theme = { ...baseTheme, overrides };
- return theme;
-}
+ },
+};
diff --git a/packages/theme/src/v5/index.ts b/packages/theme/src/v5/index.ts
new file mode 100644
index 0000000000..eee5d852b1
--- /dev/null
+++ b/packages/theme/src/v5/index.ts
@@ -0,0 +1,18 @@
+/*
+ * Copyright 2022 The Backstage Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+export * from './types';
+export { defaultComponentThemes } from './defaultComponentThemes';
diff --git a/packages/theme/src/v5/types.ts b/packages/theme/src/v5/types.ts
new file mode 100644
index 0000000000..31fe72b5b9
--- /dev/null
+++ b/packages/theme/src/v5/types.ts
@@ -0,0 +1,37 @@
+/*
+ * Copyright 2022 The Backstage Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import { Theme } from '@mui/material/styles';
+import {
+ BackstagePaletteAdditions,
+ BackstageThemeAdditions,
+} from '../base/types';
+
+declare module '@mui/material/styles' {
+ interface Palette extends BackstagePaletteAdditions {}
+
+ interface PaletteOptions extends BackstagePaletteAdditions {}
+}
+
+declare module '@mui/material/styles' {
+ interface Theme extends BackstageThemeAdditions {}
+
+ interface ThemeOptions extends BackstageThemeAdditions {}
+}
+
+declare module '@mui/private-theming/defaultTheme' {
+ interface DefaultTheme extends Theme {}
+}
diff --git a/plugins/adr-backend/CHANGELOG.md b/plugins/adr-backend/CHANGELOG.md
index 39e8bf7e4c..dd7823c048 100644
--- a/plugins/adr-backend/CHANGELOG.md
+++ b/plugins/adr-backend/CHANGELOG.md
@@ -1,5 +1,19 @@
# @backstage/plugin-adr-backend
+## 0.3.3
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/integration@1.4.5
+ - @backstage/catalog-client@1.4.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+ - @backstage/plugin-adr-common@0.2.9
+ - @backstage/plugin-search-common@1.2.3
+
## 0.3.3-next.1
### Patch Changes
diff --git a/plugins/adr-backend/package.json b/plugins/adr-backend/package.json
index a1f6a859a0..a926239ba7 100644
--- a/plugins/adr-backend/package.json
+++ b/plugins/adr-backend/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-adr-backend",
- "version": "0.3.3-next.1",
+ "version": "0.3.3",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/adr-common/CHANGELOG.md b/plugins/adr-common/CHANGELOG.md
index c3b8806c80..9fddae2588 100644
--- a/plugins/adr-common/CHANGELOG.md
+++ b/plugins/adr-common/CHANGELOG.md
@@ -1,5 +1,14 @@
# @backstage/plugin-adr-common
+## 0.2.9
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/integration@1.4.5
+ - @backstage/catalog-model@1.3.0
+ - @backstage/plugin-search-common@1.2.3
+
## 0.2.9-next.0
### Patch Changes
diff --git a/plugins/adr-common/package.json b/plugins/adr-common/package.json
index 0fdf94003a..adbb6bea58 100644
--- a/plugins/adr-common/package.json
+++ b/plugins/adr-common/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-adr-common",
"description": "Common functionalities for the adr plugin",
- "version": "0.2.9-next.0",
+ "version": "0.2.9",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/adr/CHANGELOG.md b/plugins/adr/CHANGELOG.md
index ce583e56d2..b96e66e9d3 100644
--- a/plugins/adr/CHANGELOG.md
+++ b/plugins/adr/CHANGELOG.md
@@ -1,5 +1,24 @@
# @backstage/plugin-adr
+## 0.6.0
+
+### Minor Changes
+
+- b12cd5dc221: render SupportButton only if config is set
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/plugin-search-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/integration-react@1.1.13
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/plugin-adr-common@0.2.9
+ - @backstage/plugin-search-common@1.2.3
+
## 0.5.1-next.2
### Patch Changes
diff --git a/plugins/adr/package.json b/plugins/adr/package.json
index 707f0396cf..cac6b89fcc 100644
--- a/plugins/adr/package.json
+++ b/plugins/adr/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-adr",
- "version": "0.5.1-next.2",
+ "version": "0.6.0",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/airbrake-backend/CHANGELOG.md b/plugins/airbrake-backend/CHANGELOG.md
index 8407f5822e..15c10734de 100644
--- a/plugins/airbrake-backend/CHANGELOG.md
+++ b/plugins/airbrake-backend/CHANGELOG.md
@@ -1,5 +1,13 @@
# @backstage/plugin-airbrake-backend
+## 0.2.18
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/config@1.0.7
+
## 0.2.18-next.1
### Patch Changes
diff --git a/plugins/airbrake-backend/package.json b/plugins/airbrake-backend/package.json
index c57ffa8be9..eaec28f797 100644
--- a/plugins/airbrake-backend/package.json
+++ b/plugins/airbrake-backend/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-airbrake-backend",
- "version": "0.2.18-next.1",
+ "version": "0.2.18",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/airbrake/CHANGELOG.md b/plugins/airbrake/CHANGELOG.md
index 15472a973a..854e9be255 100644
--- a/plugins/airbrake/CHANGELOG.md
+++ b/plugins/airbrake/CHANGELOG.md
@@ -1,5 +1,18 @@
# @backstage/plugin-airbrake
+## 0.3.18
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/dev-utils@1.0.15
+ - @backstage/test-utils@1.3.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+
## 0.3.18-next.2
### Patch Changes
diff --git a/plugins/airbrake/package.json b/plugins/airbrake/package.json
index 3934c29680..6933bad355 100644
--- a/plugins/airbrake/package.json
+++ b/plugins/airbrake/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-airbrake",
- "version": "0.3.18-next.2",
+ "version": "0.3.18",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/allure/CHANGELOG.md b/plugins/allure/CHANGELOG.md
index e656638fd6..e89f981487 100644
--- a/plugins/allure/CHANGELOG.md
+++ b/plugins/allure/CHANGELOG.md
@@ -1,5 +1,16 @@
# @backstage/plugin-allure
+## 0.1.34
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+
## 0.1.34-next.2
### Patch Changes
diff --git a/plugins/allure/package.json b/plugins/allure/package.json
index d8fb27f36c..e2f6c7241a 100644
--- a/plugins/allure/package.json
+++ b/plugins/allure/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-allure",
"description": "A Backstage plugin that integrates with Allure",
- "version": "0.1.34-next.2",
+ "version": "0.1.34",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/analytics-module-ga/CHANGELOG.md b/plugins/analytics-module-ga/CHANGELOG.md
index ec3122845a..fc0a434a5e 100644
--- a/plugins/analytics-module-ga/CHANGELOG.md
+++ b/plugins/analytics-module-ga/CHANGELOG.md
@@ -1,5 +1,15 @@
# @backstage/plugin-analytics-module-ga
+## 0.1.29
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/core-components@0.13.1
+ - @backstage/config@1.0.7
+ - @backstage/core-plugin-api@1.5.1
+
## 0.1.29-next.1
### Patch Changes
diff --git a/plugins/analytics-module-ga/package.json b/plugins/analytics-module-ga/package.json
index 2b2542ec2d..8062c304fa 100644
--- a/plugins/analytics-module-ga/package.json
+++ b/plugins/analytics-module-ga/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-analytics-module-ga",
- "version": "0.1.29-next.1",
+ "version": "0.1.29",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/analytics-module-ga4/CHANGELOG.md b/plugins/analytics-module-ga4/CHANGELOG.md
index 15e67dd797..c69204bcc0 100644
--- a/plugins/analytics-module-ga4/CHANGELOG.md
+++ b/plugins/analytics-module-ga4/CHANGELOG.md
@@ -1,5 +1,19 @@
# @backstage/plugin-analytics-module-ga4
+## 0.1.0
+
+### Minor Changes
+
+- 22b46f7f562: Plugin provides Backstage Analytics API for Google Analytics 4. Once installed and configured, analytics events will be sent to GA4 as your users navigate and use your Backstage instance
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/core-components@0.13.1
+ - @backstage/config@1.0.7
+ - @backstage/core-plugin-api@1.5.1
+
## 0.1.0-next.2
### Patch Changes
diff --git a/plugins/analytics-module-ga4/README.md b/plugins/analytics-module-ga4/README.md
index d060c9d9b1..97bb751ca8 100644
--- a/plugins/analytics-module-ga4/README.md
+++ b/plugins/analytics-module-ga4/README.md
@@ -9,7 +9,12 @@ This plugin contains no other functionality.
## Installation
1. Install the plugin package in your Backstage app:
- `cd packages/app && yarn add @backstage/plugin-analytics-module-ga4`
+
+```sh
+# From your Backstage root directory
+yarn add --cwd packages/app @backstage/plugin-analytics-module-ga4
+```
+
2. Wire up the API implementation to your App:
```tsx
diff --git a/plugins/analytics-module-ga4/package.json b/plugins/analytics-module-ga4/package.json
index eee914df92..dba9d0c8f4 100644
--- a/plugins/analytics-module-ga4/package.json
+++ b/plugins/analytics-module-ga4/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-analytics-module-ga4",
- "version": "0.1.0-next.2",
+ "version": "0.1.0",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/apache-airflow/CHANGELOG.md b/plugins/apache-airflow/CHANGELOG.md
index 612a2a3e1d..f9f6958a87 100644
--- a/plugins/apache-airflow/CHANGELOG.md
+++ b/plugins/apache-airflow/CHANGELOG.md
@@ -1,5 +1,13 @@
# @backstage/plugin-apache-airflow
+## 0.2.11
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.13.1
+ - @backstage/core-plugin-api@1.5.1
+
## 0.2.11-next.1
### Patch Changes
diff --git a/plugins/apache-airflow/package.json b/plugins/apache-airflow/package.json
index cf7cf9553c..4ad427a972 100644
--- a/plugins/apache-airflow/package.json
+++ b/plugins/apache-airflow/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-apache-airflow",
- "version": "0.2.11-next.1",
+ "version": "0.2.11",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/api-docs/CHANGELOG.md b/plugins/api-docs/CHANGELOG.md
index f370ab46ee..2455e7809c 100644
--- a/plugins/api-docs/CHANGELOG.md
+++ b/plugins/api-docs/CHANGELOG.md
@@ -1,5 +1,17 @@
# @backstage/plugin-api-docs
+## 0.9.3
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/plugin-catalog@1.11.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+
## 0.9.3-next.2
### Patch Changes
diff --git a/plugins/api-docs/package.json b/plugins/api-docs/package.json
index e31e2ec48e..651a606d9c 100644
--- a/plugins/api-docs/package.json
+++ b/plugins/api-docs/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-api-docs",
"description": "A Backstage plugin that helps represent API entities in the frontend",
- "version": "0.9.3-next.2",
+ "version": "0.9.3",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/apollo-explorer/CHANGELOG.md b/plugins/apollo-explorer/CHANGELOG.md
index 38d322a270..9efa02cea9 100644
--- a/plugins/apollo-explorer/CHANGELOG.md
+++ b/plugins/apollo-explorer/CHANGELOG.md
@@ -1,5 +1,14 @@
# @backstage/plugin-apollo-explorer
+## 0.1.11
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/core-components@0.13.1
+ - @backstage/core-plugin-api@1.5.1
+
## 0.1.11-next.1
### Patch Changes
diff --git a/plugins/apollo-explorer/package.json b/plugins/apollo-explorer/package.json
index 5117fa632c..b28293777d 100644
--- a/plugins/apollo-explorer/package.json
+++ b/plugins/apollo-explorer/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-apollo-explorer",
- "version": "0.1.11-next.1",
+ "version": "0.1.11",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/app-backend/CHANGELOG.md b/plugins/app-backend/CHANGELOG.md
index 1e98f25c64..d89ba0a4ec 100644
--- a/plugins/app-backend/CHANGELOG.md
+++ b/plugins/app-backend/CHANGELOG.md
@@ -1,5 +1,16 @@
# @backstage/plugin-app-backend
+## 0.3.45
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/config-loader@1.3.0
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/config@1.0.7
+ - @backstage/types@1.0.2
+
## 0.3.45-next.1
### Patch Changes
diff --git a/plugins/app-backend/package.json b/plugins/app-backend/package.json
index 85602a06e4..9a471f0021 100644
--- a/plugins/app-backend/package.json
+++ b/plugins/app-backend/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-app-backend",
"description": "A Backstage backend plugin that serves the Backstage frontend app",
- "version": "0.3.45-next.1",
+ "version": "0.3.45",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/auth-backend/CHANGELOG.md b/plugins/auth-backend/CHANGELOG.md
index 406298f6d2..551872232d 100644
--- a/plugins/auth-backend/CHANGELOG.md
+++ b/plugins/auth-backend/CHANGELOG.md
@@ -1,5 +1,21 @@
# @backstage/plugin-auth-backend
+## 0.18.3
+
+### Patch Changes
+
+- 7c116bcac7f: Fixed the way that some request errors are thrown
+- 473db605a4f: Fix config schema definition.
+- 3ffcdac7d07: Added a persistent session store through the database
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/plugin-auth-node@0.2.14
+ - @backstage/catalog-client@1.4.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+ - @backstage/types@1.0.2
+
## 0.18.3-next.2
### Patch Changes
diff --git a/plugins/auth-backend/package.json b/plugins/auth-backend/package.json
index fbaf3c5423..fb53d9b17f 100644
--- a/plugins/auth-backend/package.json
+++ b/plugins/auth-backend/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-auth-backend",
"description": "A Backstage backend plugin that handles authentication",
- "version": "0.18.3-next.2",
+ "version": "0.18.3",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/auth-node/CHANGELOG.md b/plugins/auth-node/CHANGELOG.md
index 7cb9f4cc64..e299198f8f 100644
--- a/plugins/auth-node/CHANGELOG.md
+++ b/plugins/auth-node/CHANGELOG.md
@@ -1,5 +1,14 @@
# @backstage/plugin-auth-node
+## 0.2.14
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+
## 0.2.14-next.1
### Patch Changes
diff --git a/plugins/auth-node/package.json b/plugins/auth-node/package.json
index 1d8e71a4c0..25bcda593a 100644
--- a/plugins/auth-node/package.json
+++ b/plugins/auth-node/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-auth-node",
- "version": "0.2.14-next.1",
+ "version": "0.2.14",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/azure-devops-backend/CHANGELOG.md b/plugins/azure-devops-backend/CHANGELOG.md
index 3dd206ae66..232347e752 100644
--- a/plugins/azure-devops-backend/CHANGELOG.md
+++ b/plugins/azure-devops-backend/CHANGELOG.md
@@ -1,5 +1,14 @@
# @backstage/plugin-azure-devops-backend
+## 0.3.24
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/config@1.0.7
+ - @backstage/plugin-azure-devops-common@0.3.0
+
## 0.3.24-next.1
### Patch Changes
diff --git a/plugins/azure-devops-backend/package.json b/plugins/azure-devops-backend/package.json
index f28bfa5cb4..2a0f3b76a5 100644
--- a/plugins/azure-devops-backend/package.json
+++ b/plugins/azure-devops-backend/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-azure-devops-backend",
- "version": "0.3.24-next.1",
+ "version": "0.3.24",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/azure-devops/CHANGELOG.md b/plugins/azure-devops/CHANGELOG.md
index 608f88437c..20bbec23b4 100644
--- a/plugins/azure-devops/CHANGELOG.md
+++ b/plugins/azure-devops/CHANGELOG.md
@@ -1,5 +1,22 @@
# @backstage/plugin-azure-devops
+## 0.3.0
+
+### Minor Changes
+
+- 877df261085: The getBuildRuns function now checks contains multiple comma-separated builds and splits them to send multiple requests for each and concatenates the results.
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+ - @backstage/plugin-azure-devops-common@0.3.0
+
## 0.3.0-next.2
### Minor Changes
diff --git a/plugins/azure-devops/package.json b/plugins/azure-devops/package.json
index 8b3f4a8496..99122b62db 100644
--- a/plugins/azure-devops/package.json
+++ b/plugins/azure-devops/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-azure-devops",
- "version": "0.3.0-next.2",
+ "version": "0.3.0",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/azure-sites-backend/CHANGELOG.md b/plugins/azure-sites-backend/CHANGELOG.md
index 9c25a70214..d8b123dec1 100644
--- a/plugins/azure-sites-backend/CHANGELOG.md
+++ b/plugins/azure-sites-backend/CHANGELOG.md
@@ -1,5 +1,15 @@
# @backstage/plugin-azure-sites-backend
+## 0.1.7
+
+### Patch Changes
+
+- d66d4f916aa: Updated URL to `/health` and corrected typos in the `README.md`
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/config@1.0.7
+ - @backstage/plugin-azure-sites-common@0.1.0
+
## 0.1.7-next.1
### Patch Changes
diff --git a/plugins/azure-sites-backend/package.json b/plugins/azure-sites-backend/package.json
index a58459d2aa..61c23a4b0f 100644
--- a/plugins/azure-sites-backend/package.json
+++ b/plugins/azure-sites-backend/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-azure-sites-backend",
- "version": "0.1.7-next.1",
+ "version": "0.1.7",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/azure-sites/CHANGELOG.md b/plugins/azure-sites/CHANGELOG.md
index 20703e33a5..bc7184c9ca 100644
--- a/plugins/azure-sites/CHANGELOG.md
+++ b/plugins/azure-sites/CHANGELOG.md
@@ -1,5 +1,17 @@
# @backstage/plugin-azure-sites
+## 0.1.7
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/plugin-azure-sites-common@0.1.0
+
## 0.1.7-next.2
### Patch Changes
diff --git a/plugins/azure-sites/package.json b/plugins/azure-sites/package.json
index c3335d6129..44775bcab4 100644
--- a/plugins/azure-sites/package.json
+++ b/plugins/azure-sites/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-azure-sites",
- "version": "0.1.7-next.2",
+ "version": "0.1.7",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/badges-backend/CHANGELOG.md b/plugins/badges-backend/CHANGELOG.md
index c543efb0a6..e15a74e3de 100644
--- a/plugins/badges-backend/CHANGELOG.md
+++ b/plugins/badges-backend/CHANGELOG.md
@@ -1,5 +1,26 @@
# @backstage/plugin-badges-backend
+## 0.2.0
+
+### Minor Changes
+
+- a0108c49774: Fixing badges-backend plugin to get a token from the TokenManager instead of parsing the request header. Hence, it's now possible to disable the authMiddleware for the badges-backend plugin to expose publicly the badges.
+
+ Implementing an obfuscation feature to protect an open badges endpoint from being enumerated. The feature is disabled by default and the change is compatible with the previous version.
+
+ **BREAKING**: `createRouter` now require that `tokenManager`, `logger`, and `identityApi`, are passed in as options.
+
+### Patch Changes
+
+- 0cd552c28d8: Removed some unused dependencies
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/plugin-auth-node@0.2.14
+ - @backstage/catalog-client@1.4.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+
## 0.2.0-next.2
### Minor Changes
diff --git a/plugins/badges-backend/package.json b/plugins/badges-backend/package.json
index 84b4d324d7..f2db6ef5c5 100644
--- a/plugins/badges-backend/package.json
+++ b/plugins/badges-backend/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-badges-backend",
"description": "A Backstage backend plugin that generates README badges for your entities",
- "version": "0.2.0-next.2",
+ "version": "0.2.0",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/badges/CHANGELOG.md b/plugins/badges/CHANGELOG.md
index a05ef8405d..1ec81cb321 100644
--- a/plugins/badges/CHANGELOG.md
+++ b/plugins/badges/CHANGELOG.md
@@ -1,5 +1,23 @@
# @backstage/plugin-badges
+## 0.2.42
+
+### Patch Changes
+
+- a0108c49774: Fixing badges-backend plugin to get a token from the TokenManager instead of parsing the request header. Hence, it's now possible to disable the authMiddleware for the badges-backend plugin to expose publicly the badges.
+
+ Implementing an obfuscation feature to protect an open badges endpoint from being enumerated. The feature is disabled by default and the change is compatible with the previous version.
+
+ **BREAKING**: `createRouter` now require that `tokenManager`, `logger`, and `identityApi`, are passed in as options.
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+
## 0.2.42-next.2
### Patch Changes
diff --git a/plugins/badges/package.json b/plugins/badges/package.json
index be2f7adc79..fcfb55c386 100644
--- a/plugins/badges/package.json
+++ b/plugins/badges/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-badges",
"description": "A Backstage plugin that generates README badges for your entities",
- "version": "0.2.42-next.2",
+ "version": "0.2.42",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/bazaar-backend/CHANGELOG.md b/plugins/bazaar-backend/CHANGELOG.md
index 11d820a334..da83be709c 100644
--- a/plugins/bazaar-backend/CHANGELOG.md
+++ b/plugins/bazaar-backend/CHANGELOG.md
@@ -1,5 +1,16 @@
# @backstage/plugin-bazaar-backend
+## 0.2.8
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/plugin-auth-node@0.2.14
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+
## 0.2.8-next.1
### Patch Changes
diff --git a/plugins/bazaar-backend/package.json b/plugins/bazaar-backend/package.json
index 60e549655e..9dd25233c6 100644
--- a/plugins/bazaar-backend/package.json
+++ b/plugins/bazaar-backend/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-bazaar-backend",
- "version": "0.2.8-next.1",
+ "version": "0.2.8",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/bazaar/CHANGELOG.md b/plugins/bazaar/CHANGELOG.md
index 8f7de5e0f2..4b1a86deb9 100644
--- a/plugins/bazaar/CHANGELOG.md
+++ b/plugins/bazaar/CHANGELOG.md
@@ -1,5 +1,21 @@
# @backstage/plugin-bazaar
+## 0.2.8
+
+### Patch Changes
+
+- 900880ab7c3: Fixed `validateDOMNesting` warnings
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/cli@0.22.7
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/plugin-catalog@1.11.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-client@1.4.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+
## 0.2.8-next.2
### Patch Changes
diff --git a/plugins/bazaar/package.json b/plugins/bazaar/package.json
index 5e8bb28df6..d8d334b426 100644
--- a/plugins/bazaar/package.json
+++ b/plugins/bazaar/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-bazaar",
- "version": "0.2.8-next.2",
+ "version": "0.2.8",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/bitbucket-cloud-common/CHANGELOG.md b/plugins/bitbucket-cloud-common/CHANGELOG.md
index c3c31ed392..04b2cc787b 100644
--- a/plugins/bitbucket-cloud-common/CHANGELOG.md
+++ b/plugins/bitbucket-cloud-common/CHANGELOG.md
@@ -1,5 +1,12 @@
# @backstage/plugin-bitbucket-cloud-common
+## 0.2.6
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/integration@1.4.5
+
## 0.2.6-next.0
### Patch Changes
diff --git a/plugins/bitbucket-cloud-common/package.json b/plugins/bitbucket-cloud-common/package.json
index 7bf2c5791e..a63b9588fb 100644
--- a/plugins/bitbucket-cloud-common/package.json
+++ b/plugins/bitbucket-cloud-common/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-bitbucket-cloud-common",
"description": "Common functionalities for bitbucket-cloud plugins",
- "version": "0.2.6-next.0",
+ "version": "0.2.6",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/bitrise/CHANGELOG.md b/plugins/bitrise/CHANGELOG.md
index 2fba6da9b3..069fc0ca6e 100644
--- a/plugins/bitrise/CHANGELOG.md
+++ b/plugins/bitrise/CHANGELOG.md
@@ -1,5 +1,16 @@
# @backstage/plugin-bitrise
+## 0.1.45
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+
## 0.1.45-next.2
### Patch Changes
diff --git a/plugins/bitrise/package.json b/plugins/bitrise/package.json
index 1c1c3523ea..fe62603226 100644
--- a/plugins/bitrise/package.json
+++ b/plugins/bitrise/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-bitrise",
"description": "A Backstage plugin that integrates towards Bitrise",
- "version": "0.1.45-next.2",
+ "version": "0.1.45",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/catalog-backend-module-aws/CHANGELOG.md b/plugins/catalog-backend-module-aws/CHANGELOG.md
index 886703f0c8..029ab14592 100644
--- a/plugins/catalog-backend-module-aws/CHANGELOG.md
+++ b/plugins/catalog-backend-module-aws/CHANGELOG.md
@@ -1,5 +1,27 @@
# @backstage/plugin-catalog-backend-module-aws
+## 0.2.0
+
+### Minor Changes
+
+- 1a3b5f1e390: **BREAKING**: AwsOrganizationCloudAccountProcessor.fromConfig now returns a promise instead of the instance directly.
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/integration@1.4.5
+ - @backstage/integration-aws-node@0.1.3
+ - @backstage/plugin-kubernetes-common@0.6.3
+ - @backstage/backend-tasks@0.5.2
+ - @backstage/plugin-catalog-node@1.3.6
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+ - @backstage/types@1.0.2
+ - @backstage/plugin-catalog-common@1.0.13
+
## 0.1.19-next.2
### Patch Changes
diff --git a/plugins/catalog-backend-module-aws/package.json b/plugins/catalog-backend-module-aws/package.json
index 50d7349cef..a5e0aad55b 100644
--- a/plugins/catalog-backend-module-aws/package.json
+++ b/plugins/catalog-backend-module-aws/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-catalog-backend-module-aws",
"description": "A Backstage catalog backend module that helps integrate towards AWS",
- "version": "0.1.19-next.2",
+ "version": "0.2.0",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/catalog-backend-module-azure/CHANGELOG.md b/plugins/catalog-backend-module-azure/CHANGELOG.md
index e8458d82e7..21b95b5861 100644
--- a/plugins/catalog-backend-module-azure/CHANGELOG.md
+++ b/plugins/catalog-backend-module-azure/CHANGELOG.md
@@ -1,5 +1,21 @@
# @backstage/plugin-catalog-backend-module-azure
+## 0.1.16
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/integration@1.4.5
+ - @backstage/backend-tasks@0.5.2
+ - @backstage/plugin-catalog-node@1.3.6
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+ - @backstage/types@1.0.2
+ - @backstage/plugin-catalog-common@1.0.13
+
## 0.1.16-next.1
### Patch Changes
diff --git a/plugins/catalog-backend-module-azure/package.json b/plugins/catalog-backend-module-azure/package.json
index 2e2ff96e7e..e9d6803571 100644
--- a/plugins/catalog-backend-module-azure/package.json
+++ b/plugins/catalog-backend-module-azure/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-catalog-backend-module-azure",
"description": "A Backstage catalog backend module that helps integrate towards Azure",
- "version": "0.1.16-next.1",
+ "version": "0.1.16",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/catalog-backend-module-bitbucket-cloud/CHANGELOG.md b/plugins/catalog-backend-module-bitbucket-cloud/CHANGELOG.md
index af6e6c3a7f..94c83e6b2e 100644
--- a/plugins/catalog-backend-module-bitbucket-cloud/CHANGELOG.md
+++ b/plugins/catalog-backend-module-bitbucket-cloud/CHANGELOG.md
@@ -1,5 +1,22 @@
# @backstage/plugin-catalog-backend-module-bitbucket-cloud
+## 0.1.12
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/integration@1.4.5
+ - @backstage/backend-tasks@0.5.2
+ - @backstage/plugin-catalog-node@1.3.6
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/catalog-client@1.4.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/plugin-bitbucket-cloud-common@0.2.6
+ - @backstage/plugin-catalog-common@1.0.13
+ - @backstage/plugin-events-node@0.2.6
+
## 0.1.12-next.1
### Patch Changes
diff --git a/plugins/catalog-backend-module-bitbucket-cloud/package.json b/plugins/catalog-backend-module-bitbucket-cloud/package.json
index 77df5b12b4..00e4269342 100644
--- a/plugins/catalog-backend-module-bitbucket-cloud/package.json
+++ b/plugins/catalog-backend-module-bitbucket-cloud/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-catalog-backend-module-bitbucket-cloud",
"description": "A Backstage catalog backend module that helps integrate towards Bitbucket Cloud",
- "version": "0.1.12-next.1",
+ "version": "0.1.12",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/catalog-backend-module-bitbucket-server/CHANGELOG.md b/plugins/catalog-backend-module-bitbucket-server/CHANGELOG.md
index 3c9e51b08e..ae894c2e12 100644
--- a/plugins/catalog-backend-module-bitbucket-server/CHANGELOG.md
+++ b/plugins/catalog-backend-module-bitbucket-server/CHANGELOG.md
@@ -1,5 +1,19 @@
# @backstage/plugin-catalog-backend-module-bitbucket-server
+## 0.1.10
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/integration@1.4.5
+ - @backstage/backend-tasks@0.5.2
+ - @backstage/plugin-catalog-node@1.3.6
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+
## 0.1.10-next.1
### Patch Changes
diff --git a/plugins/catalog-backend-module-bitbucket-server/package.json b/plugins/catalog-backend-module-bitbucket-server/package.json
index 68960fbf81..3dc8aca390 100644
--- a/plugins/catalog-backend-module-bitbucket-server/package.json
+++ b/plugins/catalog-backend-module-bitbucket-server/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-catalog-backend-module-bitbucket-server",
- "version": "0.1.10-next.1",
+ "version": "0.1.10",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/catalog-backend-module-bitbucket/CHANGELOG.md b/plugins/catalog-backend-module-bitbucket/CHANGELOG.md
index 0193d551a5..b7a9f2d0a2 100644
--- a/plugins/catalog-backend-module-bitbucket/CHANGELOG.md
+++ b/plugins/catalog-backend-module-bitbucket/CHANGELOG.md
@@ -1,5 +1,19 @@
# @backstage/plugin-catalog-backend-module-bitbucket
+## 0.2.12
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/integration@1.4.5
+ - @backstage/plugin-catalog-node@1.3.6
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+ - @backstage/types@1.0.2
+ - @backstage/plugin-bitbucket-cloud-common@0.2.6
+
## 0.2.12-next.1
### Patch Changes
diff --git a/plugins/catalog-backend-module-bitbucket/package.json b/plugins/catalog-backend-module-bitbucket/package.json
index 64269a9102..1dbbb4bb45 100644
--- a/plugins/catalog-backend-module-bitbucket/package.json
+++ b/plugins/catalog-backend-module-bitbucket/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-catalog-backend-module-bitbucket",
"description": "A Backstage catalog backend module that helps integrate towards Bitbucket",
- "version": "0.2.12-next.1",
+ "version": "0.2.12",
"deprecated": true,
"main": "src/index.ts",
"types": "src/index.ts",
diff --git a/plugins/catalog-backend-module-gerrit/CHANGELOG.md b/plugins/catalog-backend-module-gerrit/CHANGELOG.md
index ea3d4af960..8f94db98f3 100644
--- a/plugins/catalog-backend-module-gerrit/CHANGELOG.md
+++ b/plugins/catalog-backend-module-gerrit/CHANGELOG.md
@@ -1,5 +1,19 @@
# @backstage/plugin-catalog-backend-module-gerrit
+## 0.1.13
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/integration@1.4.5
+ - @backstage/backend-tasks@0.5.2
+ - @backstage/plugin-catalog-node@1.3.6
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+
## 0.1.13-next.1
### Patch Changes
diff --git a/plugins/catalog-backend-module-gerrit/package.json b/plugins/catalog-backend-module-gerrit/package.json
index 22bc3a95e5..a69aac5034 100644
--- a/plugins/catalog-backend-module-gerrit/package.json
+++ b/plugins/catalog-backend-module-gerrit/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-catalog-backend-module-gerrit",
- "version": "0.1.13-next.1",
+ "version": "0.1.13",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/catalog-backend-module-github/CHANGELOG.md b/plugins/catalog-backend-module-github/CHANGELOG.md
index 9e3b24071f..427b48e7bb 100644
--- a/plugins/catalog-backend-module-github/CHANGELOG.md
+++ b/plugins/catalog-backend-module-github/CHANGELOG.md
@@ -1,5 +1,32 @@
# @backstage/plugin-catalog-backend-module-github
+## 0.3.0
+
+### Minor Changes
+
+- 970678adbe2: Implement events support for `GithubMultiOrgEntityProvider`
+
+ **BREAKING:** Passing in a custom `teamTransformer` will now correctly completely override the default transformer behavior
+
+### Patch Changes
+
+- 78bb674a713: Fixed bug in queryWithPaging that caused secondary rate limit errors in GitHub with organizations having more than 1000 repositories. This change makes one request per second to avoid concurrency issues.
+- bd101cefd37: Updated the `team.edited` event emitted from `GithubOrgEntityProvider` to also include teams description.
+- Updated dependencies
+ - @backstage/plugin-catalog-backend@1.9.1
+ - @backstage/backend-common@0.18.5
+ - @backstage/integration@1.4.5
+ - @backstage/backend-tasks@0.5.2
+ - @backstage/plugin-catalog-node@1.3.6
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/catalog-client@1.4.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+ - @backstage/types@1.0.2
+ - @backstage/plugin-catalog-common@1.0.13
+ - @backstage/plugin-events-node@0.2.6
+
## 0.3.0-next.2
### Minor Changes
diff --git a/plugins/catalog-backend-module-github/package.json b/plugins/catalog-backend-module-github/package.json
index 1f79fea531..029acdf0e0 100644
--- a/plugins/catalog-backend-module-github/package.json
+++ b/plugins/catalog-backend-module-github/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-catalog-backend-module-github",
"description": "A Backstage catalog backend module that helps integrate towards GitHub",
- "version": "0.3.0-next.2",
+ "version": "0.3.0",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/catalog-backend-module-gitlab/CHANGELOG.md b/plugins/catalog-backend-module-gitlab/CHANGELOG.md
index 9882178a2b..a8c58d386a 100644
--- a/plugins/catalog-backend-module-gitlab/CHANGELOG.md
+++ b/plugins/catalog-backend-module-gitlab/CHANGELOG.md
@@ -1,5 +1,21 @@
# @backstage/plugin-catalog-backend-module-gitlab
+## 0.2.1
+
+### Patch Changes
+
+- b12c41fafc4: Fix a corner case where returned users are null for bots
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/integration@1.4.5
+ - @backstage/backend-tasks@0.5.2
+ - @backstage/plugin-catalog-node@1.3.6
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+ - @backstage/types@1.0.2
+
## 0.2.1-next.1
### Patch Changes
diff --git a/plugins/catalog-backend-module-gitlab/package.json b/plugins/catalog-backend-module-gitlab/package.json
index 22237862aa..223d578da1 100644
--- a/plugins/catalog-backend-module-gitlab/package.json
+++ b/plugins/catalog-backend-module-gitlab/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-catalog-backend-module-gitlab",
"description": "A Backstage catalog backend module that helps integrate towards GitLab",
- "version": "0.2.1-next.1",
+ "version": "0.2.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/catalog-backend-module-incremental-ingestion/CHANGELOG.md b/plugins/catalog-backend-module-incremental-ingestion/CHANGELOG.md
index 8c7b041d06..fdf0de5b0b 100644
--- a/plugins/catalog-backend-module-incremental-ingestion/CHANGELOG.md
+++ b/plugins/catalog-backend-module-incremental-ingestion/CHANGELOG.md
@@ -1,5 +1,21 @@
# @backstage/plugin-catalog-backend-module-incremental-ingestion
+## 0.3.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-backend@1.9.1
+ - @backstage/backend-common@0.18.5
+ - @backstage/backend-tasks@0.5.2
+ - @backstage/plugin-catalog-node@1.3.6
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+ - @backstage/plugin-events-node@0.2.6
+ - @backstage/plugin-permission-common@0.7.5
+
## 0.3.2-next.2
### Patch Changes
diff --git a/plugins/catalog-backend-module-incremental-ingestion/package.json b/plugins/catalog-backend-module-incremental-ingestion/package.json
index 69bc2dfbd6..b37f2bfb6c 100644
--- a/plugins/catalog-backend-module-incremental-ingestion/package.json
+++ b/plugins/catalog-backend-module-incremental-ingestion/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-catalog-backend-module-incremental-ingestion",
"description": "An entity provider for streaming large asset sources into the catalog",
- "version": "0.3.2-next.2",
+ "version": "0.3.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/catalog-backend-module-ldap/CHANGELOG.md b/plugins/catalog-backend-module-ldap/CHANGELOG.md
index 104e3f1c0f..052f1cc473 100644
--- a/plugins/catalog-backend-module-ldap/CHANGELOG.md
+++ b/plugins/catalog-backend-module-ldap/CHANGELOG.md
@@ -1,5 +1,18 @@
# @backstage/plugin-catalog-backend-module-ldap
+## 0.5.12
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-tasks@0.5.2
+ - @backstage/plugin-catalog-node@1.3.6
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+ - @backstage/types@1.0.2
+ - @backstage/plugin-catalog-common@1.0.13
+
## 0.5.12-next.1
### Patch Changes
diff --git a/plugins/catalog-backend-module-ldap/package.json b/plugins/catalog-backend-module-ldap/package.json
index 120131d95a..6943df23fe 100644
--- a/plugins/catalog-backend-module-ldap/package.json
+++ b/plugins/catalog-backend-module-ldap/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-catalog-backend-module-ldap",
"description": "A Backstage catalog backend module that helps integrate towards LDAP",
- "version": "0.5.12-next.1",
+ "version": "0.5.12",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/catalog-backend-module-msgraph/CHANGELOG.md b/plugins/catalog-backend-module-msgraph/CHANGELOG.md
index c0c0888f38..f45e0c3440 100644
--- a/plugins/catalog-backend-module-msgraph/CHANGELOG.md
+++ b/plugins/catalog-backend-module-msgraph/CHANGELOG.md
@@ -1,5 +1,18 @@
# @backstage/plugin-catalog-backend-module-msgraph
+## 0.5.4
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/backend-tasks@0.5.2
+ - @backstage/plugin-catalog-node@1.3.6
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/plugin-catalog-common@1.0.13
+
## 0.5.4-next.1
### Patch Changes
diff --git a/plugins/catalog-backend-module-msgraph/package.json b/plugins/catalog-backend-module-msgraph/package.json
index 026386457a..ae836681b4 100644
--- a/plugins/catalog-backend-module-msgraph/package.json
+++ b/plugins/catalog-backend-module-msgraph/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-catalog-backend-module-msgraph",
"description": "A Backstage catalog backend module that helps integrate towards Microsoft Graph",
- "version": "0.5.4-next.1",
+ "version": "0.5.4",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/catalog-backend-module-openapi/CHANGELOG.md b/plugins/catalog-backend-module-openapi/CHANGELOG.md
index 345032bda7..0598ea46ef 100644
--- a/plugins/catalog-backend-module-openapi/CHANGELOG.md
+++ b/plugins/catalog-backend-module-openapi/CHANGELOG.md
@@ -1,5 +1,20 @@
# @backstage/plugin-catalog-backend-module-openapi
+## 0.1.11
+
+### Patch Changes
+
+- accaceadffa: Fixed bug in `jsonSchemaRefPlaceholderResolver` where relative $ref files were resolved through file system instead of base URL of file
+- Updated dependencies
+ - @backstage/plugin-catalog-backend@1.9.1
+ - @backstage/backend-common@0.18.5
+ - @backstage/integration@1.4.5
+ - @backstage/plugin-catalog-node@1.3.6
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/types@1.0.2
+ - @backstage/plugin-catalog-common@1.0.13
+
## 0.1.11-next.2
### Patch Changes
diff --git a/plugins/catalog-backend-module-openapi/package.json b/plugins/catalog-backend-module-openapi/package.json
index c9960d15f1..980a8920cd 100644
--- a/plugins/catalog-backend-module-openapi/package.json
+++ b/plugins/catalog-backend-module-openapi/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-catalog-backend-module-openapi",
"description": "A Backstage catalog backend module that helps with OpenAPI specifications",
- "version": "0.1.11-next.2",
+ "version": "0.1.11",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/catalog-backend-module-puppetdb/CHANGELOG.md b/plugins/catalog-backend-module-puppetdb/CHANGELOG.md
index b5f13f39cd..e8750bc1c4 100644
--- a/plugins/catalog-backend-module-puppetdb/CHANGELOG.md
+++ b/plugins/catalog-backend-module-puppetdb/CHANGELOG.md
@@ -1,5 +1,20 @@
# @backstage/plugin-catalog-backend-module-puppetdb
+## 0.1.2
+
+### Patch Changes
+
+- 95b2168d71b: Fixes import paths and updates documentation
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/backend-tasks@0.5.2
+ - @backstage/plugin-catalog-node@1.3.6
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+ - @backstage/types@1.0.2
+
## 0.1.2-next.2
### Patch Changes
diff --git a/plugins/catalog-backend-module-puppetdb/package.json b/plugins/catalog-backend-module-puppetdb/package.json
index 3d1734657b..e703c81beb 100644
--- a/plugins/catalog-backend-module-puppetdb/package.json
+++ b/plugins/catalog-backend-module-puppetdb/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-catalog-backend-module-puppetdb",
"description": "A Backstage catalog backend module that helps integrate towards PuppetDB",
- "version": "0.1.2-next.2",
+ "version": "0.1.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -65,7 +65,7 @@
"@backstage/backend-test-utils": "workspace:^",
"@backstage/cli": "workspace:^",
"@types/lodash": "^4.14.151",
- "msw": "^0.49.0"
+ "msw": "^1.0.0"
},
"files": [
"dist",
diff --git a/plugins/catalog-backend/CHANGELOG.md b/plugins/catalog-backend/CHANGELOG.md
index 78021149ff..e8c18be461 100644
--- a/plugins/catalog-backend/CHANGELOG.md
+++ b/plugins/catalog-backend/CHANGELOG.md
@@ -1,5 +1,34 @@
# @backstage/plugin-catalog-backend
+## 1.9.1
+
+### Patch Changes
+
+- ce8d203235b: Ensure that entity cache state is only written to the database when actually changed
+- 485a6c5f7b5: Internal refactoring for performance in the service handlers
+- 3587a968dcd: Fixed a bug in the `queryEntities` endpoint that was causing filtered entities to be included in cursor requests.
+- ce335df9d1c: Improve the query for orphan pruning
+- 27956d78671: Adjusted the OpenAPI schema file name according to the new structure
+- 51064e6e5ee: Change orphan cleanup task to only log a message if it deleted entities.
+- 12a345317ab: Remove unnecessary join in the entity facets endpoint, exclude nulls
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/integration@1.4.5
+ - @backstage/plugin-scaffolder-common@1.3.0
+ - @backstage/plugin-permission-node@0.7.8
+ - @backstage/backend-tasks@0.5.2
+ - @backstage/plugin-catalog-node@1.3.6
+ - @backstage/plugin-search-backend-module-catalog@0.1.1
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/catalog-client@1.4.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+ - @backstage/types@1.0.2
+ - @backstage/plugin-catalog-common@1.0.13
+ - @backstage/plugin-permission-common@0.7.5
+ - @backstage/plugin-search-common@1.2.3
+
## 1.9.1-next.2
### Patch Changes
diff --git a/plugins/catalog-backend/package.json b/plugins/catalog-backend/package.json
index 13f358f1ff..1a2ca55253 100644
--- a/plugins/catalog-backend/package.json
+++ b/plugins/catalog-backend/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-catalog-backend",
"description": "The Backstage backend plugin that provides the Backstage catalog",
- "version": "1.9.1-next.2",
+ "version": "1.9.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/catalog-customized/CHANGELOG.md b/plugins/catalog-customized/CHANGELOG.md
index 0f8d9dccb1..00d769e71e 100644
--- a/plugins/catalog-customized/CHANGELOG.md
+++ b/plugins/catalog-customized/CHANGELOG.md
@@ -1,5 +1,13 @@
# @internal/plugin-catalog-customized
+## 0.0.10
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/plugin-catalog@1.11.0
+
## 0.0.10-next.2
### Patch Changes
diff --git a/plugins/catalog-customized/package.json b/plugins/catalog-customized/package.json
index f7a6b0b80f..12f9bc584f 100644
--- a/plugins/catalog-customized/package.json
+++ b/plugins/catalog-customized/package.json
@@ -1,7 +1,7 @@
{
"name": "@internal/plugin-catalog-customized",
"description": "The internal Backstage Customizable plugin for browsing the Backstage catalog",
- "version": "0.0.10-next.2",
+ "version": "0.0.10",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/catalog-graph/CHANGELOG.md b/plugins/catalog-graph/CHANGELOG.md
index 00c907899a..277f0a70cf 100644
--- a/plugins/catalog-graph/CHANGELOG.md
+++ b/plugins/catalog-graph/CHANGELOG.md
@@ -1,5 +1,18 @@
# @backstage/plugin-catalog-graph
+## 0.2.30
+
+### Patch Changes
+
+- d446f8fb0a8: Expose all `EntityRelationsGraphProps` to Catalog Graph Page
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-client@1.4.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+
## 0.2.30-next.2
### Patch Changes
diff --git a/plugins/catalog-graph/package.json b/plugins/catalog-graph/package.json
index bd9508783d..fd4d3d0114 100644
--- a/plugins/catalog-graph/package.json
+++ b/plugins/catalog-graph/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-catalog-graph",
- "version": "0.2.30-next.2",
+ "version": "0.2.30",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/catalog-graph/src/components/EntityRelationsGraph/EntityKindIcon.test.tsx b/plugins/catalog-graph/src/components/EntityRelationsGraph/EntityKindIcon.test.tsx
index 6592c6195e..cc47c8850b 100644
--- a/plugins/catalog-graph/src/components/EntityRelationsGraph/EntityKindIcon.test.tsx
+++ b/plugins/catalog-graph/src/components/EntityRelationsGraph/EntityKindIcon.test.tsx
@@ -24,7 +24,7 @@ describe('', () => {
,
);
- expect(baseElement.querySelector('.MuiSvgIcon-root')).toBeInTheDocument();
+ expect(baseElement.querySelector('svg')).toBeInTheDocument();
});
it('renders without exploding for unknown kind', async () => {
@@ -32,6 +32,6 @@ describe('', () => {
,
);
- expect(baseElement.querySelector('.MuiSvgIcon-root')).toBeInTheDocument();
+ expect(baseElement.querySelector('svg')).toBeInTheDocument();
});
});
diff --git a/plugins/catalog-import/CHANGELOG.md b/plugins/catalog-import/CHANGELOG.md
index 38ae6fbed8..50dee98951 100644
--- a/plugins/catalog-import/CHANGELOG.md
+++ b/plugins/catalog-import/CHANGELOG.md
@@ -1,5 +1,21 @@
# @backstage/plugin-catalog-import
+## 0.9.8
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/integration@1.4.5
+ - @backstage/core-components@0.13.1
+ - @backstage/integration-react@1.1.13
+ - @backstage/catalog-client@1.4.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+ - @backstage/plugin-catalog-common@1.0.13
+
## 0.9.8-next.2
### Patch Changes
diff --git a/plugins/catalog-import/package.json b/plugins/catalog-import/package.json
index 5fb8bb1b5b..a6cad7a986 100644
--- a/plugins/catalog-import/package.json
+++ b/plugins/catalog-import/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-catalog-import",
"description": "A Backstage plugin the helps you import entities into your catalog",
- "version": "0.9.8-next.2",
+ "version": "0.9.8",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/catalog-import/src/components/StepReviewLocation/StepReviewLocation.tsx b/plugins/catalog-import/src/components/StepReviewLocation/StepReviewLocation.tsx
index 7943b6e3b8..74ebd973d0 100644
--- a/plugins/catalog-import/src/components/StepReviewLocation/StepReviewLocation.tsx
+++ b/plugins/catalog-import/src/components/StepReviewLocation/StepReviewLocation.tsx
@@ -22,7 +22,7 @@ import { BackButton, NextButton } from '../Buttons';
import { EntityListComponent } from '../EntityListComponent';
import { PrepareResult, ReviewResult } from '../useImportState';
-import { configApiRef, useApi } from '@backstage/core-plugin-api';
+import { configApiRef, useAnalytics, useApi } from '@backstage/core-plugin-api';
import { Link } from '@backstage/core-components';
import { stringifyEntityRef } from '@backstage/catalog-model';
import { assertError } from '@backstage/errors';
@@ -40,6 +40,7 @@ export const StepReviewLocation = ({
}: Props) => {
const catalogApi = useApi(catalogApiRef);
const configApi = useApi(configApiRef);
+ const analytics = useAnalytics();
const appTitle = configApi.getOptional('app.title') || 'Backstage';
@@ -52,6 +53,7 @@ export const StepReviewLocation = ({
: false;
const handleClick = useCallback(async () => {
setSubmitted(true);
+ analytics.captureEvent('click', 'import entity');
try {
let refreshed = new Array<{ target: string }>();
if (prepareResult.type === 'locations') {
@@ -108,7 +110,7 @@ export const StepReviewLocation = ({
setSubmitted(false);
}
}
- }, [prepareResult, onReview, catalogApi]);
+ }, [prepareResult, onReview, catalogApi, analytics]);
return (
<>
diff --git a/plugins/catalog-node/CHANGELOG.md b/plugins/catalog-node/CHANGELOG.md
index a1ca2c37c6..5ed8a9aba1 100644
--- a/plugins/catalog-node/CHANGELOG.md
+++ b/plugins/catalog-node/CHANGELOG.md
@@ -1,5 +1,17 @@
# @backstage/plugin-catalog-node
+## 1.3.6
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/catalog-client@1.4.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/errors@1.1.5
+ - @backstage/types@1.0.2
+ - @backstage/plugin-catalog-common@1.0.13
+
## 1.3.6-next.1
### Patch Changes
diff --git a/plugins/catalog-node/package.json b/plugins/catalog-node/package.json
index 95136c2da1..7adf03eed2 100644
--- a/plugins/catalog-node/package.json
+++ b/plugins/catalog-node/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-catalog-node",
"description": "The plugin-catalog-node module for @backstage/plugin-catalog-backend",
- "version": "1.3.6-next.1",
+ "version": "1.3.6",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/catalog-react/CHANGELOG.md b/plugins/catalog-react/CHANGELOG.md
index 79ade18d8f..7d96283320 100644
--- a/plugins/catalog-react/CHANGELOG.md
+++ b/plugins/catalog-react/CHANGELOG.md
@@ -1,5 +1,46 @@
# @backstage/plugin-catalog-react
+## 1.6.0
+
+### Minor Changes
+
+- 2258dcae970: Added an entity namespace filter and column on the default catalog page.
+
+ If you have a custom version of the catalog page, you can add this filter in your CatalogPage code:
+
+ ```ts
+
+
+
+
+
+ /* if you want namespace picker */
+
+
+
+
+
+
+ ```
+
+ The namespace column can be added using `createNamespaceColumn();`. This is only needed if you customized the columns for CatalogTable.
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/integration@1.4.5
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-client@1.4.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+ - @backstage/types@1.0.2
+ - @backstage/version-bridge@1.0.4
+ - @backstage/plugin-catalog-common@1.0.13
+ - @backstage/plugin-permission-common@0.7.5
+ - @backstage/plugin-permission-react@0.4.12
+
## 1.6.0-next.2
### Patch Changes
diff --git a/plugins/catalog-react/package.json b/plugins/catalog-react/package.json
index d5808553cb..2628d2dee9 100644
--- a/plugins/catalog-react/package.json
+++ b/plugins/catalog-react/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-catalog-react",
"description": "A frontend library that helps other Backstage plugins interact with the catalog",
- "version": "1.6.0-next.2",
+ "version": "1.6.0",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -60,6 +60,7 @@
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.61",
+ "@react-hookz/web": "^23.0.0",
"@types/react": "^16.13.1 || ^17.0.0",
"classnames": "^2.2.6",
"jwt-decode": "^3.1.0",
diff --git a/plugins/catalog-react/src/components/EntityOwnerPicker/EntityOwnerPicker.test.tsx b/plugins/catalog-react/src/components/EntityOwnerPicker/EntityOwnerPicker.test.tsx
index e4dc322c7c..e5497d022a 100644
--- a/plugins/catalog-react/src/components/EntityOwnerPicker/EntityOwnerPicker.test.tsx
+++ b/plugins/catalog-react/src/components/EntityOwnerPicker/EntityOwnerPicker.test.tsx
@@ -14,8 +14,8 @@
* limitations under the License.
*/
-import { Entity, stringifyEntityRef } from '@backstage/catalog-model';
-import { fireEvent, screen } from '@testing-library/react';
+import { Entity } from '@backstage/catalog-model';
+import { fireEvent, screen, waitFor } from '@testing-library/react';
import React from 'react';
import { MockEntityListContextProvider } from '../../testUtils/providers';
import { EntityOwnerFilter } from '../../filters';
@@ -28,8 +28,9 @@ import {
} from '@backstage/test-utils';
import { catalogApiRef, CatalogApi } from '../..';
import { errorApiRef } from '@backstage/core-plugin-api';
+import { QueryEntitiesCursorRequest } from '@backstage/catalog-client';
-const ownerEntities: Entity[] = [
+const ownerEntitiesBatch1: Entity[] = [
{
apiVersion: '1',
kind: 'Group',
@@ -68,64 +69,56 @@ const ownerEntities: Entity[] = [
},
];
-const sampleEntities: Entity[] = [
+const ownerEntitiesBatch2: Entity[] = [
{
apiVersion: '1',
- kind: 'Component',
+ kind: 'Group',
metadata: {
- name: 'component-1',
+ name: 'some-owner-batch-2',
},
- relations: [
- {
- type: 'ownedBy',
- targetRef: 'group:default/some-owner',
- },
- {
- type: 'ownedBy',
- targetRef: 'group:default/some-owner-2',
- },
- ],
},
{
apiVersion: '1',
- kind: 'Component',
+ kind: 'Group',
metadata: {
- name: 'component-2',
+ name: 'some-owner-2-batch-2',
},
- relations: [
- {
- type: 'ownedBy',
- targetRef: 'group:default/another-owner',
+ spec: {
+ profile: {
+ displayName: 'Some Owner Batch 2',
},
- {
- type: 'ownedBy',
- targetRef: 'group:test-namespace/another-owner-2',
- },
- ],
+ },
},
{
apiVersion: '1',
- kind: 'Component',
+ kind: 'Group',
metadata: {
- name: 'component-3',
+ name: 'another-owner-batch-2',
+ title: 'Another Owner Batch 2',
+ },
+ },
+ {
+ apiVersion: '1',
+ kind: 'Group',
+ metadata: {
+ namespace: 'test-namespace',
+ name: 'another-owner-2-batch-2',
+ title: 'Another Owner in Another Namespace Batch 2',
},
- relations: [
- {
- type: 'ownedBy',
- targetRef: 'group:default/some-owner',
- },
- ],
},
];
-const getEntitiesByRefs = jest.fn(async ({ entityRefs }) => ({
- items: entityRefs.map((e: string) =>
- ownerEntities.find(f => stringifyEntityRef(f) === e),
- ),
-}));
+const mockedQueryEntities: jest.MockedFn =
+ jest.fn();
+
+const mockedGetEntitiesByRef: jest.MockedFn =
+ jest.fn();
+
const mockCatalogApi: Partial = {
- getEntitiesByRefs,
+ queryEntities: mockedQueryEntities,
+ getEntitiesByRefs: mockedGetEntitiesByRef,
};
+
const mockErrorApi = new MockErrorApi();
describe('', () => {
@@ -134,12 +127,33 @@ describe('', () => {
[errorApiRef, mockErrorApi],
);
- it('renders all owners', async () => {
+ beforeEach(() => {
+ jest.resetAllMocks();
+
+ mockedQueryEntities.mockImplementation(async request => {
+ const totalItems =
+ ownerEntitiesBatch1.length + ownerEntitiesBatch2.length;
+ if ((request as QueryEntitiesCursorRequest).cursor) {
+ return {
+ items: ownerEntitiesBatch2,
+ pageInfo: {},
+ totalItems,
+ };
+ }
+ return {
+ items: ownerEntitiesBatch1,
+ pageInfo: {
+ nextCursor: 'nextCursor',
+ },
+ totalItems,
+ };
+ });
+ });
+
+ it('renders all users and groups', async () => {
await renderWithEffects(
-
+
,
@@ -147,36 +161,37 @@ describe('', () => {
expect(screen.getByText('Owner')).toBeInTheDocument();
fireEvent.click(screen.getByTestId('owner-picker-expand'));
+
+ await waitFor(() =>
+ expect(screen.getByText('Another Owner')).toBeInTheDocument(),
+ );
+
[
- 'Another Owner',
'some-owner',
'Some Owner 2',
'Another Owner in Another Namespace',
].forEach(owner => {
expect(screen.getByText(owner)).toBeInTheDocument();
});
- });
- it('renders unique owners in alphabetical order', async () => {
- await renderWithEffects(
-
-
-
-
- ,
+ expect(mockedQueryEntities).toHaveBeenCalledTimes(1);
+ expect(mockedGetEntitiesByRef).not.toHaveBeenCalled();
+
+ fireEvent.scroll(screen.getByTestId('owner-picker-listbox'));
+
+ await waitFor(() =>
+ expect(screen.getByText('some-owner-batch-2')).toBeInTheDocument(),
);
- expect(screen.getByText('Owner')).toBeInTheDocument();
- fireEvent.click(screen.getByTestId('owner-picker-expand'));
+ [
+ 'some-owner-batch-2',
+ 'Some Owner Batch 2',
+ 'Another Owner in Another Namespace Batch 2',
+ ].forEach(owner => {
+ expect(screen.getByText(owner)).toBeInTheDocument();
+ });
- expect(screen.getAllByRole('option').map(o => o.textContent)).toEqual([
- 'Another Owner',
- 'Another Owner in Another Namespace',
- 'some-owner',
- 'Some Owner 2',
- ]);
+ expect(mockedQueryEntities).toHaveBeenCalledTimes(2);
});
it('respects the query parameter filter value', async () => {
@@ -186,8 +201,6 @@ describe('', () => {
', () => {
,
);
+ expect(mockedGetEntitiesByRef).toHaveBeenCalledWith({
+ entityRefs: ['another-owner'],
+ });
expect(updateFilters).toHaveBeenLastCalledWith({
owners: new EntityOwnerFilter(['group:default/another-owner']),
});
});
+ it('should display the selected owners as humanized entities', async () => {
+ const updateFilters = jest.fn();
+ const queryParameters = { owners: ['another-owner'] };
+
+ mockedGetEntitiesByRef.mockResolvedValue({
+ items: [
+ {
+ metadata: {
+ name: 'another-owner',
+ title: 'Beautiful display name',
+ namespace: 'default',
+ },
+ apiVersion: '1',
+ kind: 'group',
+ },
+ ],
+ });
+ await renderWithEffects(
+
+
+
+
+ ,
+ );
+
+ await waitFor(() =>
+ expect(
+ screen.getByRole('button', {
+ name: 'Beautiful display name',
+ }),
+ ).toBeInTheDocument(),
+ );
+
+ expect(mockedGetEntitiesByRef).toHaveBeenCalledWith({
+ entityRefs: ['another-owner'],
+ });
+
+ fireEvent.click(screen.getByTestId('owner-picker-expand'));
+ await waitFor(() => screen.getByText('Some Owner 2'));
+ fireEvent.click(screen.getByText('Some Owner 2'));
+
+ expect(mockedGetEntitiesByRef).toHaveBeenCalledTimes(1);
+
+ await waitFor(() =>
+ expect(
+ screen.getByRole('button', {
+ name: 'Some Owner 2',
+ }),
+ ).toBeInTheDocument(),
+ );
+ });
+
it('adds owners to filters', async () => {
const updateFilters = jest.fn();
await renderWithEffects(
@@ -217,11 +288,14 @@ describe('', () => {
,
);
+ expect(mockedGetEntitiesByRef).not.toHaveBeenCalled();
expect(updateFilters).toHaveBeenLastCalledWith({
owners: undefined,
});
fireEvent.click(screen.getByTestId('owner-picker-expand'));
+ await waitFor(() => screen.getByText('some-owner'));
+
fireEvent.click(screen.getByText('some-owner'));
expect(updateFilters).toHaveBeenLastCalledWith({
owners: new EntityOwnerFilter(['group:default/some-owner']),
@@ -234,8 +308,6 @@ describe('', () => {
', () => {
,
);
+ expect(mockedGetEntitiesByRef).toHaveBeenCalledWith({
+ entityRefs: ['group:default/some-owner'],
+ });
expect(updateFilters).toHaveBeenLastCalledWith({
owners: new EntityOwnerFilter(['group:default/some-owner']),
});
fireEvent.click(screen.getByTestId('owner-picker-expand'));
- expect(screen.getByLabelText('some-owner')).toBeChecked();
+ await waitFor(() =>
+ expect(screen.getByLabelText('some-owner')).toBeChecked(),
+ );
fireEvent.click(screen.getByLabelText('some-owner'));
expect(updateFilters).toHaveBeenLastCalledWith({
@@ -265,13 +342,15 @@ describe('', () => {
value={{
updateFilters,
queryParameters: { owners: ['team-a'] },
- backendEntities: sampleEntities,
}}
>
,
);
+ expect(mockedGetEntitiesByRef).toHaveBeenCalledWith({
+ entityRefs: ['team-a'],
+ });
expect(updateFilters).toHaveBeenLastCalledWith({
owners: new EntityOwnerFilter(['group:default/team-a']),
});
@@ -281,7 +360,6 @@ describe('', () => {
value={{
updateFilters,
queryParameters: { owners: ['team-b'] },
- backendEntities: sampleEntities,
}}
>
@@ -292,23 +370,4 @@ describe('', () => {
owners: new EntityOwnerFilter(['group:default/team-b']),
});
});
- it('removes owners from filters if there are none available', async () => {
- const updateFilters = jest.fn();
- await renderWithEffects(
-
-
-
-
- ,
- );
- expect(updateFilters).toHaveBeenLastCalledWith({
- owners: undefined,
- });
- });
});
diff --git a/plugins/catalog-react/src/components/EntityOwnerPicker/EntityOwnerPicker.tsx b/plugins/catalog-react/src/components/EntityOwnerPicker/EntityOwnerPicker.tsx
index 8c4f2bfea0..8b223c50b1 100644
--- a/plugins/catalog-react/src/components/EntityOwnerPicker/EntityOwnerPicker.tsx
+++ b/plugins/catalog-react/src/components/EntityOwnerPicker/EntityOwnerPicker.tsx
@@ -14,32 +14,30 @@
* limitations under the License.
*/
-import {
- Entity,
- parseEntityRef,
- RELATION_OWNED_BY,
- stringifyEntityRef,
-} from '@backstage/catalog-model';
+import { Entity, stringifyEntityRef } from '@backstage/catalog-model';
import {
Box,
Checkbox,
FormControlLabel,
- makeStyles,
TextField,
Typography,
+ makeStyles,
} from '@material-ui/core';
import CheckBoxIcon from '@material-ui/icons/CheckBox';
import CheckBoxOutlineBlankIcon from '@material-ui/icons/CheckBoxOutlineBlank';
import ExpandMoreIcon from '@material-ui/icons/ExpandMore';
import { Autocomplete } from '@material-ui/lab';
-import React, { useEffect, useMemo, useState } from 'react';
+import React, { useEffect, useMemo, useRef, useState } from 'react';
import { useEntityList } from '../../hooks/useEntityListProvider';
import { EntityOwnerFilter } from '../../filters';
-import { getEntityRelations } from '../../utils';
-import useAsync from 'react-use/lib/useAsync';
-import { errorApiRef, useApi } from '@backstage/core-plugin-api';
+import { useApi } from '@backstage/core-plugin-api';
import { catalogApiRef } from '../../api';
-import { humanizeEntity, humanizeEntityRef } from '../EntityRefLink/humanize';
+import useAsync from 'react-use/lib/useAsync';
+import useAsyncFn from 'react-use/lib/useAsyncFn';
+import { useDebouncedEffect } from '@react-hookz/web';
+import PersonIcon from '@material-ui/icons/Person';
+import GroupIcon from '@material-ui/icons/Group';
+import { humanizeEntity } from '../EntityRefLink/humanize';
/** @public */
export type CatalogReactEntityOwnerPickerClassKey = 'input';
@@ -61,12 +59,51 @@ export const EntityOwnerPicker = () => {
const classes = useStyles();
const {
updateFilters,
- backendEntities,
filters,
queryParameters: { owners: ownersParameter },
} = useEntityList();
+
const catalogApi = useApi(catalogApiRef);
- const errorApi = useApi(errorApiRef);
+ const [text, setText] = useState('');
+
+ const [{ value, loading }, handleFetch] = useAsyncFn(
+ async (request: { text: string } | { cursor: string; prev: Entity[] }) => {
+ const initialRequest = request as { text: string };
+ const cursorRequest = request as { cursor: string; prev: Entity[] };
+ const limit = 20;
+
+ if (cursorRequest.cursor) {
+ const response = await catalogApi.queryEntities({
+ cursor: cursorRequest.cursor,
+ limit,
+ });
+ return {
+ ...response,
+ items: [...cursorRequest.prev, ...response.items],
+ };
+ }
+
+ return catalogApi.queryEntities({
+ fullTextFilter: {
+ term: initialRequest.text || '',
+ fields: [
+ 'metadata.name',
+ 'kind',
+ 'spec.profile.displayname',
+ 'metadata.title',
+ ],
+ },
+ filter: { kind: ['User', 'Group'] },
+ orderFields: [{ field: 'metadata.name', order: 'asc' }],
+ limit,
+ });
+ },
+ [text],
+ );
+
+ useDebouncedEffect(() => handleFetch({ text }), [text], 250);
+
+ const availableOwners = value?.items || [];
const queryParamOwners = useMemo(
() => [ownersParameter].flat().filter(Boolean) as string[],
@@ -74,71 +111,10 @@ export const EntityOwnerPicker = () => {
);
const [selectedOwners, setSelectedOwners] = useState(
- queryParamOwners.length
- ? new EntityOwnerFilter(queryParamOwners).values
- : filters.owners?.values ?? [],
+ queryParamOwners.length ? queryParamOwners : filters.owners?.values ?? [],
);
- const {
- loading,
- error,
- value: ownerEntities,
- } = useAsync(async () => {
- const ownerEntityRefs = [
- ...new Set(
- backendEntities
- .flatMap((e: Entity) =>
- getEntityRelations(e, RELATION_OWNED_BY).map(o =>
- stringifyEntityRef(o),
- ),
- )
- .filter(Boolean) as string[],
- ),
- ];
- const { items: ownerEntitiesOrNull } = await catalogApi.getEntitiesByRefs({
- entityRefs: ownerEntityRefs,
- fields: [
- 'kind',
- 'metadata.name',
- 'metadata.title',
- 'metadata.namespace',
- 'spec.profile.displayName',
- ],
- });
- const owners = ownerEntitiesOrNull.map((entity, index) => {
- if (entity) {
- return {
- label: humanizeEntity(entity, { defaultKind: 'Group' }),
- entityRef: stringifyEntityRef(entity),
- };
- }
- return {
- label: humanizeEntityRef(parseEntityRef(ownerEntityRefs[index]), {
- defaultKind: 'group',
- }),
- entityRef: ownerEntityRefs[index],
- };
- });
-
- return owners.sort((a, b) =>
- a.label.localeCompare(b.label, 'en-US', {
- ignorePunctuation: true,
- caseFirst: 'upper',
- }),
- );
- }, [backendEntities]);
-
- useEffect(() => {
- if (error) {
- errorApi.post(
- {
- ...error,
- message: `EntityOwnerPicker failed to initialize: ${error.message}`,
- },
- {},
- );
- }
- }, [error, errorApi]);
+ const { getEntity, setEntity } = useSelectedOwners(selectedOwners);
// Set selected owners on query parameter updates; this happens at initial page load and from
// external updates to the page location.
@@ -150,17 +126,20 @@ export const EntityOwnerPicker = () => {
}, [queryParamOwners]);
useEffect(() => {
- if (!loading && ownerEntities) {
- updateFilters({
- owners:
- selectedOwners.length && ownerEntities.length
- ? new EntityOwnerFilter(selectedOwners)
- : undefined,
- });
- }
- }, [selectedOwners, updateFilters, ownerEntities, loading]);
+ updateFilters({
+ owners: selectedOwners.length
+ ? new EntityOwnerFilter(selectedOwners)
+ : undefined,
+ });
+ }, [selectedOwners, updateFilters]);
- if (!loading && !ownerEntities?.length) return null;
+ if (
+ ['user', 'group'].includes(
+ filters.kind?.value.toLocaleLowerCase('en-US') || '',
+ )
+ ) {
+ return null;
+ }
return (
@@ -170,40 +149,130 @@ export const EntityOwnerPicker = () => {
multiple
disableCloseOnSelect
loading={loading}
- options={ownerEntities || []}
- value={
- ownerEntities?.filter(e =>
- selectedOwners.some((f: string) => f === e.entityRef),
- ) ?? []
- }
- onChange={(_: object, value: { entityRef: string }[]) =>
- setSelectedOwners(value.map(e => e.entityRef))
- }
- getOptionLabel={option => option.label}
- renderOption={(option, { selected }) => (
-
- }
- onClick={event => event.preventDefault()}
- label={option.label}
- />
- )}
+ options={availableOwners}
+ value={selectedOwners as unknown as Entity[]}
+ getOptionSelected={(o, v) => {
+ if (typeof v === 'string') {
+ return stringifyEntityRef(o) === v;
+ }
+ return o === v;
+ }}
+ getOptionLabel={o => {
+ const entity = typeof o === 'string' ? getEntity(o) || o : o;
+
+ return typeof entity === 'string'
+ ? entity
+ : humanizeEntity(entity, entity.metadata.name);
+ }}
+ onChange={(_: object, owners) => {
+ setText('');
+ setSelectedOwners(
+ owners.map(e => {
+ const entityRef =
+ typeof e === 'string' ? e : stringifyEntityRef(e);
+
+ if (typeof e !== 'string') {
+ setEntity(e);
+ }
+
+ return entityRef;
+ }),
+ );
+ }}
+ filterOptions={x => x}
+ renderOption={(entity, { selected }) => {
+ const isGroup = entity.kind === 'Group';
+
+ return (
+
+ }
+ onClick={event => event.preventDefault()}
+ label={
+
+ {isGroup ? (
+
+ ) : (
+
+ )}
+
+ {humanizeEntity(entity, entity.metadata.name)}
+
+ }
+ />
+ );
+ }}
size="small"
popupIcon={}
renderInput={params => (
{
+ setText(e.currentTarget.value);
+ }}
variant="outlined"
/>
)}
+ ListboxProps={{
+ onScroll: (e: React.MouseEvent) => {
+ const element = e.currentTarget;
+ const hasReachedEnd =
+ Math.abs(
+ element.scrollHeight -
+ element.clientHeight -
+ element.scrollTop,
+ ) < 1;
+
+ if (hasReachedEnd && value?.pageInfo.nextCursor) {
+ handleFetch({
+ cursor: value.pageInfo.nextCursor,
+ prev: value.items,
+ });
+ }
+ },
+ 'data-testid': 'owner-picker-listbox',
+ }}
/>
);
};
+
+/**
+ * Hook used for storing the full entity of the specified owners
+ * in order to display users and group using the information contained on each entity.
+ * When a component is rendered for the first time, it loads the content of the entities
+ * specified by `initialSelectedOwnersRefs` and export the `getEntity` and `setEntity`
+ * utilities, used to retrieve and modify the owners.
+ */
+function useSelectedOwners(initialSelectedOwnersRefs: string[]) {
+ const allEntities = useRef>({});
+ const catalogApi = useApi(catalogApiRef);
+
+ useAsync(async () => {
+ if (initialSelectedOwnersRefs.length === 0) {
+ return;
+ }
+ const initialSelectedEntities = await catalogApi.getEntitiesByRefs({
+ entityRefs: initialSelectedOwnersRefs,
+ });
+ initialSelectedEntities.items.forEach(e => {
+ if (e) {
+ allEntities.current[stringifyEntityRef(e)] = e;
+ }
+ });
+ }, []);
+
+ return {
+ getEntity: (entityRef: string) => allEntities.current[entityRef],
+ setEntity: (entity: Entity) => {
+ allEntities.current[stringifyEntityRef(entity)] = entity;
+ },
+ };
+}
diff --git a/plugins/catalog-react/src/components/EntityProcessingStatusPicker/EntityProcessingStatusPicker.test.tsx b/plugins/catalog-react/src/components/EntityProcessingStatusPicker/EntityProcessingStatusPicker.test.tsx
index 00d36e5e13..3321db6d96 100644
--- a/plugins/catalog-react/src/components/EntityProcessingStatusPicker/EntityProcessingStatusPicker.test.tsx
+++ b/plugins/catalog-react/src/components/EntityProcessingStatusPicker/EntityProcessingStatusPicker.test.tsx
@@ -14,48 +14,16 @@
* limitations under the License.
*/
-import { Entity } from '@backstage/catalog-model';
import { fireEvent, render, screen } from '@testing-library/react';
import React from 'react';
import { EntityErrorFilter, EntityOrphanFilter } from '../../filters';
import { MockEntityListContextProvider } from '../../testUtils/providers';
import { EntityProcessingStatusPicker } from './EntityProcessingStatusPicker';
-const orphanAnnotation: Record = {};
-orphanAnnotation['backstage.io/orphan'] = 'true';
-
-const sampleEntities: Entity[] = [
- {
- apiVersion: '1',
- kind: 'Component',
- metadata: {
- name: 'valid-component',
- },
- },
- {
- apiVersion: '1',
- kind: 'Component',
- metadata: {
- name: 'orphan-component',
- annotations: orphanAnnotation,
- },
- },
- {
- apiVersion: '1',
- kind: 'Component',
- metadata: {
- name: 'error-component',
- tags: ['Invalid Tag'],
- },
- },
-];
-
describe('', () => {
it('renders all processing status options', () => {
render(
-
+
,
);
@@ -71,8 +39,6 @@ describe('', () => {
render(
@@ -92,8 +58,6 @@ describe('', () => {
render(
@@ -113,8 +77,6 @@ describe('', () => {
render(
@@ -134,8 +96,6 @@ describe('', () => {
render(
diff --git a/plugins/catalog-react/src/components/EntityRefLink/humanize.test.ts b/plugins/catalog-react/src/components/EntityRefLink/humanize.test.ts
index e7d1649a29..1182a7778d 100644
--- a/plugins/catalog-react/src/components/EntityRefLink/humanize.test.ts
+++ b/plugins/catalog-react/src/components/EntityRefLink/humanize.test.ts
@@ -215,9 +215,12 @@ describe('humanizeEntityRef', () => {
describe('humanizeEntity', () => {
it('gives a readable name when one is provided at metadata.title', () => {
expect(
- humanizeEntity({
- metadata: { name: 'my-entity', title: 'My Title' },
- } as Entity),
+ humanizeEntity(
+ {
+ metadata: { name: 'my-entity', title: 'My Title' },
+ } as Entity,
+ 'default',
+ ),
).toBe('My Title');
});
@@ -257,13 +260,16 @@ describe('humanizeEntity', () => {
])(
'gives a readable name for kind %s when one is provided at spec.profile.displayName',
(_, entity: Entity, expected) => {
- expect(humanizeEntity(entity)).toBe(expected);
+ expect(humanizeEntity(entity, 'default')).toBe(expected);
},
);
it('should pass through to humanizeEntityRef when nothing matches', () => {
expect(
- humanizeEntity({ kind: 'Group', metadata: { name: 'test' } } as Entity),
- ).toBe('group:test');
+ humanizeEntity(
+ { kind: 'Group', metadata: { name: 'test' } } as Entity,
+ 'default',
+ ),
+ ).toBe('default');
});
});
diff --git a/plugins/catalog-react/src/components/EntityRefLink/humanize.ts b/plugins/catalog-react/src/components/EntityRefLink/humanize.ts
index 7f1501280a..478f0dce9d 100644
--- a/plugins/catalog-react/src/components/EntityRefLink/humanize.ts
+++ b/plugins/catalog-react/src/components/EntityRefLink/humanize.ts
@@ -25,7 +25,8 @@ import get from 'lodash/get';
* @param defaultNamespace - if set to false then namespace is never omitted,
* if set to string which matches namespace of entity then omitted
*
- * @public */
+ * @public
+ **/
export function humanizeEntityRef(
entityRef: Entity | CompoundEntityRef,
opts?: {
@@ -73,27 +74,19 @@ export function humanizeEntityRef(
* If an entity is either User or Group, this will be its `spec.profile.displayName`.
* Otherwise, this is `metadata.title`.
*
- * If neither of those are found or populated, fallback to `humanizeEntityRef`.
+ * If neither of those are found or populated, fallback to `defaultName`.
*
* @param entity - Entity to convert.
- * @param opts - If entity readable name is not available, opts will be used to specify humanizeEntityRef options.
- * @returns Readable name, defaults to unique identifier.
+ * @param defaultName - If entity readable name is not available, `defaultName` will be returned.
+ * @returns Readable name, defaults to `defaultName`.
*
- * @public
*/
-export function humanizeEntity(
- entity: Entity,
- opts?: {
- defaultKind?: string;
- defaultNamespace?: string | false;
- },
-) {
+export function humanizeEntity(entity: Entity, defaultName: string) {
for (const path of ['spec.profile.displayName', 'metadata.title']) {
const value = get(entity, path);
if (value && typeof value === 'string') {
return value;
}
}
-
- return humanizeEntityRef(entity, opts);
+ return defaultName;
}
diff --git a/plugins/catalog/CHANGELOG.md b/plugins/catalog/CHANGELOG.md
index 8300e81422..41fdf9aad7 100644
--- a/plugins/catalog/CHANGELOG.md
+++ b/plugins/catalog/CHANGELOG.md
@@ -1,5 +1,46 @@
# @backstage/plugin-catalog
+## 1.11.0
+
+### Minor Changes
+
+- 2258dcae970: Added an entity namespace filter and column on the default catalog page.
+
+ If you have a custom version of the catalog page, you can add this filter in your CatalogPage code:
+
+ ```ts
+
+
+
+
+
+ /* if you want namespace picker */
+
+
+
+
+
+
+ ```
+
+ The namespace column can be added using `createNamespaceColumn();`. This is only needed if you customized the columns for CatalogTable.
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/plugin-search-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/integration-react@1.1.13
+ - @backstage/catalog-client@1.4.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+ - @backstage/types@1.0.2
+ - @backstage/plugin-catalog-common@1.0.13
+ - @backstage/plugin-search-common@1.2.3
+
## 1.11.0-next.2
### Patch Changes
diff --git a/plugins/catalog/package.json b/plugins/catalog/package.json
index 2a0cfb4625..21983f762e 100644
--- a/plugins/catalog/package.json
+++ b/plugins/catalog/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-catalog",
"description": "The Backstage plugin for browsing the Backstage catalog",
- "version": "1.11.0-next.2",
+ "version": "1.11.0",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/cicd-statistics-module-gitlab/CHANGELOG.md b/plugins/cicd-statistics-module-gitlab/CHANGELOG.md
index 93b77f90f8..fed7193859 100644
--- a/plugins/cicd-statistics-module-gitlab/CHANGELOG.md
+++ b/plugins/cicd-statistics-module-gitlab/CHANGELOG.md
@@ -1,5 +1,14 @@
# @backstage/plugin-cicd-statistics-module-gitlab
+## 0.1.14
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/plugin-cicd-statistics@0.1.20
+
## 0.1.14-next.2
### Patch Changes
diff --git a/plugins/cicd-statistics-module-gitlab/package.json b/plugins/cicd-statistics-module-gitlab/package.json
index 37bf35a907..ac719e1c1b 100644
--- a/plugins/cicd-statistics-module-gitlab/package.json
+++ b/plugins/cicd-statistics-module-gitlab/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-cicd-statistics-module-gitlab",
"description": "CI/CD Statistics plugin module; Gitlab CICD",
- "version": "0.1.14-next.2",
+ "version": "0.1.14",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/cicd-statistics/CHANGELOG.md b/plugins/cicd-statistics/CHANGELOG.md
index a321674f8d..b1b539c55e 100644
--- a/plugins/cicd-statistics/CHANGELOG.md
+++ b/plugins/cicd-statistics/CHANGELOG.md
@@ -1,5 +1,14 @@
# @backstage/plugin-cicd-statistics
+## 0.1.20
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+
## 0.1.20-next.2
### Patch Changes
diff --git a/plugins/cicd-statistics/package.json b/plugins/cicd-statistics/package.json
index dce541c0b8..1eaebdf236 100644
--- a/plugins/cicd-statistics/package.json
+++ b/plugins/cicd-statistics/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-cicd-statistics",
"description": "A frontend plugin visualizing CI/CD pipeline statistics (build time)",
- "version": "0.1.20-next.2",
+ "version": "0.1.20",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/circleci/CHANGELOG.md b/plugins/circleci/CHANGELOG.md
index afa6a83d48..b2947ce517 100644
--- a/plugins/circleci/CHANGELOG.md
+++ b/plugins/circleci/CHANGELOG.md
@@ -1,5 +1,18 @@
# @backstage/plugin-circleci
+## 0.3.18
+
+### Patch Changes
+
+- 451b3cadb3d: Fixes row display for in progress jobs to not display trailing "took"
+- 1c4958d905f: Hide empty time field data for queued builds which haven't started yet
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+
## 0.3.18-next.2
### Patch Changes
diff --git a/plugins/circleci/package.json b/plugins/circleci/package.json
index 4108700972..87620319b2 100644
--- a/plugins/circleci/package.json
+++ b/plugins/circleci/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-circleci",
"description": "A Backstage plugin that integrates towards Circle CI",
- "version": "0.3.18-next.2",
+ "version": "0.3.18",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/cloudbuild/CHANGELOG.md b/plugins/cloudbuild/CHANGELOG.md
index 048c6b73ca..3eb8b09596 100644
--- a/plugins/cloudbuild/CHANGELOG.md
+++ b/plugins/cloudbuild/CHANGELOG.md
@@ -1,5 +1,16 @@
# @backstage/plugin-cloudbuild
+## 0.3.18
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+
## 0.3.18-next.2
### Patch Changes
diff --git a/plugins/cloudbuild/package.json b/plugins/cloudbuild/package.json
index ef57f77fde..231e6c319c 100644
--- a/plugins/cloudbuild/package.json
+++ b/plugins/cloudbuild/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-cloudbuild",
"description": "A Backstage plugin that integrates towards Google Cloud Build",
- "version": "0.3.18-next.2",
+ "version": "0.3.18",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/code-climate/CHANGELOG.md b/plugins/code-climate/CHANGELOG.md
index c31c3ca3f3..1b732c2154 100644
--- a/plugins/code-climate/CHANGELOG.md
+++ b/plugins/code-climate/CHANGELOG.md
@@ -1,5 +1,16 @@
# @backstage/plugin-code-climate
+## 0.1.18
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+
## 0.1.18-next.2
### Patch Changes
diff --git a/plugins/code-climate/package.json b/plugins/code-climate/package.json
index f650739510..b2da33c3f6 100644
--- a/plugins/code-climate/package.json
+++ b/plugins/code-climate/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-code-climate",
- "version": "0.1.18-next.2",
+ "version": "0.1.18",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/code-coverage-backend/CHANGELOG.md b/plugins/code-coverage-backend/CHANGELOG.md
index a63405bd75..10acc2a11a 100644
--- a/plugins/code-coverage-backend/CHANGELOG.md
+++ b/plugins/code-coverage-backend/CHANGELOG.md
@@ -1,5 +1,17 @@
# @backstage/plugin-code-coverage-backend
+## 0.2.11
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/integration@1.4.5
+ - @backstage/catalog-client@1.4.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+
## 0.2.11-next.1
### Patch Changes
diff --git a/plugins/code-coverage-backend/package.json b/plugins/code-coverage-backend/package.json
index 549e0a1b2c..4444287b23 100644
--- a/plugins/code-coverage-backend/package.json
+++ b/plugins/code-coverage-backend/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-code-coverage-backend",
"description": "A Backstage backend plugin that helps you keep track of your code coverage",
- "version": "0.2.11-next.1",
+ "version": "0.2.11",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/code-coverage/CHANGELOG.md b/plugins/code-coverage/CHANGELOG.md
index e1ac2d6b77..b514b137a1 100644
--- a/plugins/code-coverage/CHANGELOG.md
+++ b/plugins/code-coverage/CHANGELOG.md
@@ -1,5 +1,18 @@
# @backstage/plugin-code-coverage
+## 0.2.11
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+
## 0.2.11-next.2
### Patch Changes
diff --git a/plugins/code-coverage/package.json b/plugins/code-coverage/package.json
index 7e40175240..bb6fb411d5 100644
--- a/plugins/code-coverage/package.json
+++ b/plugins/code-coverage/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-code-coverage",
"description": "A Backstage plugin that helps you keep track of your code coverage",
- "version": "0.2.11-next.2",
+ "version": "0.2.11",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/codescene/CHANGELOG.md b/plugins/codescene/CHANGELOG.md
index 4483bc8351..242d8f6a4a 100644
--- a/plugins/codescene/CHANGELOG.md
+++ b/plugins/codescene/CHANGELOG.md
@@ -1,5 +1,16 @@
# @backstage/plugin-codescene
+## 0.1.13
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/core-components@0.13.1
+ - @backstage/config@1.0.7
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+
## 0.1.13-next.1
### Patch Changes
diff --git a/plugins/codescene/package.json b/plugins/codescene/package.json
index 05f2d8cde1..13d5662812 100644
--- a/plugins/codescene/package.json
+++ b/plugins/codescene/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-codescene",
- "version": "0.1.13-next.1",
+ "version": "0.1.13",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/config-schema/CHANGELOG.md b/plugins/config-schema/CHANGELOG.md
index 71c47d650c..059a476aed 100644
--- a/plugins/config-schema/CHANGELOG.md
+++ b/plugins/config-schema/CHANGELOG.md
@@ -1,5 +1,17 @@
# @backstage/plugin-config-schema
+## 0.1.41
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/core-components@0.13.1
+ - @backstage/config@1.0.7
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+ - @backstage/types@1.0.2
+
## 0.1.41-next.1
### Patch Changes
diff --git a/plugins/config-schema/package.json b/plugins/config-schema/package.json
index bf8bfc2d9d..3f1488178e 100644
--- a/plugins/config-schema/package.json
+++ b/plugins/config-schema/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-config-schema",
"description": "A Backstage plugin that lets you browse the configuration schema of your app",
- "version": "0.1.41-next.1",
+ "version": "0.1.41",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/cost-insights/CHANGELOG.md b/plugins/cost-insights/CHANGELOG.md
index b9a289e963..63ac24c646 100644
--- a/plugins/cost-insights/CHANGELOG.md
+++ b/plugins/cost-insights/CHANGELOG.md
@@ -1,5 +1,18 @@
# @backstage/plugin-cost-insights
+## 0.12.7
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/plugin-cost-insights-common@0.1.1
+
## 0.12.7-next.2
### Patch Changes
diff --git a/plugins/cost-insights/package.json b/plugins/cost-insights/package.json
index 62295bf737..8607bff31e 100644
--- a/plugins/cost-insights/package.json
+++ b/plugins/cost-insights/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-cost-insights",
"description": "A Backstage plugin that helps you keep track of your cloud spend",
- "version": "0.12.7-next.2",
+ "version": "0.12.7",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/devtools-backend/CHANGELOG.md b/plugins/devtools-backend/CHANGELOG.md
index 6fefbd1524..45f9f7174d 100644
--- a/plugins/devtools-backend/CHANGELOG.md
+++ b/plugins/devtools-backend/CHANGELOG.md
@@ -1,5 +1,25 @@
# @backstage/plugin-devtools-backend
+## 0.1.0
+
+### Minor Changes
+
+- 347aeca204c: Introduced the DevTools plugin, checkout the plugin's [`README.md`](https://github.com/backstage/backstage/tree/master/plugins/devtools) for more details!
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-devtools-common@0.1.0
+ - @backstage/backend-common@0.18.5
+ - @backstage/config-loader@1.3.0
+ - @backstage/plugin-permission-node@0.7.8
+ - @backstage/plugin-auth-node@0.2.14
+ - @backstage/cli-common@0.1.12
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+ - @backstage/types@1.0.2
+ - @backstage/plugin-permission-common@0.7.5
+
## 0.1.0-next.0
### Minor Changes
diff --git a/plugins/devtools-backend/README.md b/plugins/devtools-backend/README.md
index e505a04963..7304ce33d7 100644
--- a/plugins/devtools-backend/README.md
+++ b/plugins/devtools-backend/README.md
@@ -10,8 +10,7 @@ Here's how to get the DevTools Backend up and running:
```sh
# From the Backstage root directory
- cd packages/backend
- yarn add @backstage/plugin-devtools-backend
+ yarn add --cwd packages/backend @backstage/plugin-devtools-backend
```
2. Then we will create a new file named `packages/backend/src/plugins/devtools.ts`, and add the
diff --git a/plugins/devtools-backend/package.json b/plugins/devtools-backend/package.json
index 7235f1293a..286e45d9ee 100644
--- a/plugins/devtools-backend/package.json
+++ b/plugins/devtools-backend/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-devtools-backend",
- "version": "0.1.0-next.0",
+ "version": "0.1.0",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -52,7 +52,7 @@
"@types/ping": "^0.4.1",
"@types/supertest": "^2.0.8",
"@types/yarnpkg__lockfile": "^1.1.4",
- "msw": "^0.47.0",
+ "msw": "^1.0.0",
"supertest": "^6.2.4"
},
"files": [
diff --git a/plugins/devtools-common/CHANGELOG.md b/plugins/devtools-common/CHANGELOG.md
index 79c40a24c1..6a566d0a67 100644
--- a/plugins/devtools-common/CHANGELOG.md
+++ b/plugins/devtools-common/CHANGELOG.md
@@ -1,5 +1,17 @@
# @backstage/plugin-devtools-common
+## 0.1.0
+
+### Minor Changes
+
+- 347aeca204c: Introduced the DevTools plugin, checkout the plugin's [`README.md`](https://github.com/backstage/backstage/tree/master/plugins/devtools) for more details!
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/types@1.0.2
+ - @backstage/plugin-permission-common@0.7.5
+
## 0.1.0-next.0
### Minor Changes
diff --git a/plugins/devtools-common/package.json b/plugins/devtools-common/package.json
index ba48da49ad..0e114e39b9 100644
--- a/plugins/devtools-common/package.json
+++ b/plugins/devtools-common/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-devtools-common",
"description": "Common functionalities for the devtools plugin",
- "version": "0.1.0-next.0",
+ "version": "0.1.0",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/devtools/CHANGELOG.md b/plugins/devtools/CHANGELOG.md
index 0fe41704c6..2e0e2a2de0 100644
--- a/plugins/devtools/CHANGELOG.md
+++ b/plugins/devtools/CHANGELOG.md
@@ -1,5 +1,22 @@
# @backstage/plugin-devtools
+## 0.1.0
+
+### Minor Changes
+
+- 347aeca204c: Introduced the DevTools plugin, checkout the plugin's [`README.md`](https://github.com/backstage/backstage/tree/master/plugins/devtools) for more details!
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-devtools-common@0.1.0
+ - @backstage/theme@0.3.0
+ - @backstage/core-components@0.13.1
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+ - @backstage/types@1.0.2
+ - @backstage/plugin-permission-react@0.4.12
+
## 0.1.0-next.0
### Minor Changes
diff --git a/plugins/devtools/package.json b/plugins/devtools/package.json
index 5997f79845..a06bf780f9 100644
--- a/plugins/devtools/package.json
+++ b/plugins/devtools/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-devtools",
- "version": "0.1.0-next.0",
+ "version": "0.1.0",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -56,7 +56,7 @@
"@testing-library/user-event": "^14.0.0",
"@types/node": "*",
"cross-fetch": "^3.1.5",
- "msw": "^0.47.0"
+ "msw": "^1.0.0"
},
"files": [
"dist"
diff --git a/plugins/dynatrace/CHANGELOG.md b/plugins/dynatrace/CHANGELOG.md
index bfb0eac993..fe0d954772 100644
--- a/plugins/dynatrace/CHANGELOG.md
+++ b/plugins/dynatrace/CHANGELOG.md
@@ -1,5 +1,16 @@
# @backstage/plugin-dynatrace
+## 5.0.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+
## 5.0.0-next.2
### Patch Changes
diff --git a/plugins/dynatrace/README.md b/plugins/dynatrace/README.md
index b07fe985fe..3d14be9145 100644
--- a/plugins/dynatrace/README.md
+++ b/plugins/dynatrace/README.md
@@ -26,6 +26,7 @@ The Dynatrace plugin will require the following information, to be used in the c
1. Install the plugin on your frontend:
```
+# From your Backstage root directory
yarn add --cwd packages/app @backstage/plugin-dynatrace
```
diff --git a/plugins/dynatrace/package.json b/plugins/dynatrace/package.json
index ab241ec0ad..1546562169 100644
--- a/plugins/dynatrace/package.json
+++ b/plugins/dynatrace/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-dynatrace",
- "version": "5.0.0-next.2",
+ "version": "5.0.0",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/entity-feedback-backend/CHANGELOG.md b/plugins/entity-feedback-backend/CHANGELOG.md
index 2ee2ffb799..82fd67a96c 100644
--- a/plugins/entity-feedback-backend/CHANGELOG.md
+++ b/plugins/entity-feedback-backend/CHANGELOG.md
@@ -1,5 +1,17 @@
# @backstage/plugin-entity-feedback-backend
+## 0.1.3
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/plugin-auth-node@0.2.14
+ - @backstage/catalog-client@1.4.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/plugin-entity-feedback-common@0.1.1
+
## 0.1.3-next.1
### Patch Changes
diff --git a/plugins/entity-feedback-backend/package.json b/plugins/entity-feedback-backend/package.json
index bfda97de8f..ec5a379830 100644
--- a/plugins/entity-feedback-backend/package.json
+++ b/plugins/entity-feedback-backend/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-entity-feedback-backend",
- "version": "0.1.3-next.1",
+ "version": "0.1.3",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/entity-feedback/CHANGELOG.md b/plugins/entity-feedback/CHANGELOG.md
index d32012518e..312f6c1fd4 100644
--- a/plugins/entity-feedback/CHANGELOG.md
+++ b/plugins/entity-feedback/CHANGELOG.md
@@ -1,5 +1,18 @@
# @backstage/plugin-entity-feedback
+## 0.2.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+ - @backstage/plugin-entity-feedback-common@0.1.1
+
## 0.2.1-next.2
### Patch Changes
diff --git a/plugins/entity-feedback/package.json b/plugins/entity-feedback/package.json
index 0b90caea9d..90a9f6e4ab 100644
--- a/plugins/entity-feedback/package.json
+++ b/plugins/entity-feedback/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-entity-feedback",
- "version": "0.2.1-next.2",
+ "version": "0.2.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/entity-validation/CHANGELOG.md b/plugins/entity-validation/CHANGELOG.md
index 6d423d04bf..648e6fc107 100644
--- a/plugins/entity-validation/CHANGELOG.md
+++ b/plugins/entity-validation/CHANGELOG.md
@@ -1,5 +1,19 @@
# @backstage/plugin-entity-validation
+## 0.1.3
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-client@1.4.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+ - @backstage/plugin-catalog-common@1.0.13
+
## 0.1.3-next.2
### Patch Changes
diff --git a/plugins/entity-validation/README.md b/plugins/entity-validation/README.md
index 1f864d0857..7816262836 100644
--- a/plugins/entity-validation/README.md
+++ b/plugins/entity-validation/README.md
@@ -9,6 +9,7 @@ This plugin creates a new page in Backstage where the user can validate the enti
First of all, install the package in the `app` package by running the following command:
```bash
+# From your Backstage root directory
yarn add --cwd packages/app @backstage/plugin-entity-validation
```
diff --git a/plugins/entity-validation/package.json b/plugins/entity-validation/package.json
index 950687a884..0d375ccca9 100644
--- a/plugins/entity-validation/package.json
+++ b/plugins/entity-validation/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-entity-validation",
- "version": "0.1.3-next.2",
+ "version": "0.1.3",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/events-backend-module-aws-sqs/CHANGELOG.md b/plugins/events-backend-module-aws-sqs/CHANGELOG.md
index 241463ac5c..4b55725420 100644
--- a/plugins/events-backend-module-aws-sqs/CHANGELOG.md
+++ b/plugins/events-backend-module-aws-sqs/CHANGELOG.md
@@ -1,5 +1,22 @@
# @backstage/plugin-events-backend-module-aws-sqs
+## 0.2.0
+
+### Minor Changes
+
+- 2c5661f3899: Allow endpoint configuration for sqs, enabling use of localstack for testing.
+
+### Patch Changes
+
+- 3659c71c5d9: Standardize `@aws-sdk` v3 versions
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/backend-tasks@0.5.2
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/config@1.0.7
+ - @backstage/types@1.0.2
+ - @backstage/plugin-events-node@0.2.6
+
## 0.2.0-next.2
### Minor Changes
diff --git a/plugins/events-backend-module-aws-sqs/package.json b/plugins/events-backend-module-aws-sqs/package.json
index f9b3fd071b..e89ea4413b 100644
--- a/plugins/events-backend-module-aws-sqs/package.json
+++ b/plugins/events-backend-module-aws-sqs/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-events-backend-module-aws-sqs",
- "version": "0.2.0-next.2",
+ "version": "0.2.0",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/events-backend-module-azure/CHANGELOG.md b/plugins/events-backend-module-azure/CHANGELOG.md
index b89363b7c3..0e096953a4 100644
--- a/plugins/events-backend-module-azure/CHANGELOG.md
+++ b/plugins/events-backend-module-azure/CHANGELOG.md
@@ -1,5 +1,13 @@
# @backstage/plugin-events-backend-module-azure
+## 0.1.7
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/plugin-events-node@0.2.6
+
## 0.1.7-next.1
### Patch Changes
diff --git a/plugins/events-backend-module-azure/package.json b/plugins/events-backend-module-azure/package.json
index 3667e73ebd..099da38f40 100644
--- a/plugins/events-backend-module-azure/package.json
+++ b/plugins/events-backend-module-azure/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-events-backend-module-azure",
- "version": "0.1.7-next.1",
+ "version": "0.1.7",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/events-backend-module-bitbucket-cloud/CHANGELOG.md b/plugins/events-backend-module-bitbucket-cloud/CHANGELOG.md
index ea70f7686e..dc861fc027 100644
--- a/plugins/events-backend-module-bitbucket-cloud/CHANGELOG.md
+++ b/plugins/events-backend-module-bitbucket-cloud/CHANGELOG.md
@@ -1,5 +1,13 @@
# @backstage/plugin-events-backend-module-bitbucket-cloud
+## 0.1.7
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/plugin-events-node@0.2.6
+
## 0.1.7-next.1
### Patch Changes
diff --git a/plugins/events-backend-module-bitbucket-cloud/package.json b/plugins/events-backend-module-bitbucket-cloud/package.json
index ea04a4faaa..b30f50265b 100644
--- a/plugins/events-backend-module-bitbucket-cloud/package.json
+++ b/plugins/events-backend-module-bitbucket-cloud/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-events-backend-module-bitbucket-cloud",
- "version": "0.1.7-next.1",
+ "version": "0.1.7",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/events-backend-module-gerrit/CHANGELOG.md b/plugins/events-backend-module-gerrit/CHANGELOG.md
index 411d9ffff8..e0e19a0899 100644
--- a/plugins/events-backend-module-gerrit/CHANGELOG.md
+++ b/plugins/events-backend-module-gerrit/CHANGELOG.md
@@ -1,5 +1,13 @@
# @backstage/plugin-events-backend-module-gerrit
+## 0.1.7
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/plugin-events-node@0.2.6
+
## 0.1.7-next.1
### Patch Changes
diff --git a/plugins/events-backend-module-gerrit/package.json b/plugins/events-backend-module-gerrit/package.json
index 64fe31d31f..e18616d98d 100644
--- a/plugins/events-backend-module-gerrit/package.json
+++ b/plugins/events-backend-module-gerrit/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-events-backend-module-gerrit",
- "version": "0.1.7-next.1",
+ "version": "0.1.7",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/events-backend-module-github/CHANGELOG.md b/plugins/events-backend-module-github/CHANGELOG.md
index 0e2b2ae8de..7f88bb5d13 100644
--- a/plugins/events-backend-module-github/CHANGELOG.md
+++ b/plugins/events-backend-module-github/CHANGELOG.md
@@ -1,5 +1,14 @@
# @backstage/plugin-events-backend-module-github
+## 0.1.7
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/config@1.0.7
+ - @backstage/plugin-events-node@0.2.6
+
## 0.1.7-next.1
### Patch Changes
diff --git a/plugins/events-backend-module-github/package.json b/plugins/events-backend-module-github/package.json
index 74b74469ca..0117792b8d 100644
--- a/plugins/events-backend-module-github/package.json
+++ b/plugins/events-backend-module-github/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-events-backend-module-github",
- "version": "0.1.7-next.1",
+ "version": "0.1.7",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/events-backend-module-gitlab/CHANGELOG.md b/plugins/events-backend-module-gitlab/CHANGELOG.md
index d8d48674c8..f6827b90f4 100644
--- a/plugins/events-backend-module-gitlab/CHANGELOG.md
+++ b/plugins/events-backend-module-gitlab/CHANGELOG.md
@@ -1,5 +1,14 @@
# @backstage/plugin-events-backend-module-gitlab
+## 0.1.7
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/config@1.0.7
+ - @backstage/plugin-events-node@0.2.6
+
## 0.1.7-next.1
### Patch Changes
diff --git a/plugins/events-backend-module-gitlab/package.json b/plugins/events-backend-module-gitlab/package.json
index 07102c0b6f..fc33203460 100644
--- a/plugins/events-backend-module-gitlab/package.json
+++ b/plugins/events-backend-module-gitlab/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-events-backend-module-gitlab",
- "version": "0.1.7-next.1",
+ "version": "0.1.7",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/events-backend-test-utils/CHANGELOG.md b/plugins/events-backend-test-utils/CHANGELOG.md
index 3d665a44ce..14d73356e0 100644
--- a/plugins/events-backend-test-utils/CHANGELOG.md
+++ b/plugins/events-backend-test-utils/CHANGELOG.md
@@ -1,5 +1,12 @@
# @backstage/plugin-events-backend-test-utils
+## 0.1.7
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-events-node@0.2.6
+
## 0.1.7-next.1
### Patch Changes
diff --git a/plugins/events-backend-test-utils/package.json b/plugins/events-backend-test-utils/package.json
index 3d46ea9210..d3340d5baf 100644
--- a/plugins/events-backend-test-utils/package.json
+++ b/plugins/events-backend-test-utils/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-events-backend-test-utils",
"description": "The plugin-events-backend-test-utils for @backstage/plugin-events-node",
- "version": "0.1.7-next.1",
+ "version": "0.1.7",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/events-backend/CHANGELOG.md b/plugins/events-backend/CHANGELOG.md
index 929a003cf9..25b0561c74 100644
--- a/plugins/events-backend/CHANGELOG.md
+++ b/plugins/events-backend/CHANGELOG.md
@@ -1,5 +1,15 @@
# @backstage/plugin-events-backend
+## 0.2.6
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/config@1.0.7
+ - @backstage/plugin-events-node@0.2.6
+
## 0.2.6-next.1
### Patch Changes
diff --git a/plugins/events-backend/package.json b/plugins/events-backend/package.json
index fdaee7d4a8..8d75caf02b 100644
--- a/plugins/events-backend/package.json
+++ b/plugins/events-backend/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-events-backend",
- "version": "0.2.6-next.1",
+ "version": "0.2.6",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/events-node/CHANGELOG.md b/plugins/events-node/CHANGELOG.md
index c44e1e3999..a8ff8ed2e5 100644
--- a/plugins/events-node/CHANGELOG.md
+++ b/plugins/events-node/CHANGELOG.md
@@ -1,5 +1,12 @@
# @backstage/plugin-events-node
+## 0.2.6
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.5.2
+
## 0.2.6-next.1
### Patch Changes
diff --git a/plugins/events-node/package.json b/plugins/events-node/package.json
index 7a368206bf..497d668cde 100644
--- a/plugins/events-node/package.json
+++ b/plugins/events-node/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-events-node",
"description": "The plugin-events-node module for @backstage/plugin-events-backend",
- "version": "0.2.6-next.1",
+ "version": "0.2.6",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/example-todo-list-backend/CHANGELOG.md b/plugins/example-todo-list-backend/CHANGELOG.md
index 3fb578f05a..b71a26219e 100644
--- a/plugins/example-todo-list-backend/CHANGELOG.md
+++ b/plugins/example-todo-list-backend/CHANGELOG.md
@@ -1,5 +1,16 @@
# @internal/plugin-todo-list-backend
+## 1.0.13
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/plugin-auth-node@0.2.14
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+
## 1.0.13-next.1
### Patch Changes
diff --git a/plugins/example-todo-list-backend/package.json b/plugins/example-todo-list-backend/package.json
index 0b635586b7..bec7f06a4c 100644
--- a/plugins/example-todo-list-backend/package.json
+++ b/plugins/example-todo-list-backend/package.json
@@ -1,6 +1,6 @@
{
"name": "@internal/plugin-todo-list-backend",
- "version": "1.0.13-next.1",
+ "version": "1.0.13",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/example-todo-list/CHANGELOG.md b/plugins/example-todo-list/CHANGELOG.md
index c12164fa62..fad5737566 100644
--- a/plugins/example-todo-list/CHANGELOG.md
+++ b/plugins/example-todo-list/CHANGELOG.md
@@ -1,5 +1,14 @@
# @internal/plugin-todo-list
+## 1.0.13
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/core-components@0.13.1
+ - @backstage/core-plugin-api@1.5.1
+
## 1.0.13-next.1
### Patch Changes
diff --git a/plugins/example-todo-list/package.json b/plugins/example-todo-list/package.json
index 4ee26dea2c..5dff8b4a15 100644
--- a/plugins/example-todo-list/package.json
+++ b/plugins/example-todo-list/package.json
@@ -1,6 +1,6 @@
{
"name": "@internal/plugin-todo-list",
- "version": "1.0.13-next.1",
+ "version": "1.0.13",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/explore-backend/CHANGELOG.md b/plugins/explore-backend/CHANGELOG.md
index d178b091b1..a1763f7a0c 100644
--- a/plugins/explore-backend/CHANGELOG.md
+++ b/plugins/explore-backend/CHANGELOG.md
@@ -1,5 +1,16 @@
# @backstage/plugin-explore-backend
+## 0.0.7
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/plugin-search-backend-module-explore@0.1.1
+ - @backstage/config@1.0.7
+ - @backstage/plugin-explore-common@0.0.1
+ - @backstage/plugin-search-common@1.2.3
+
## 0.0.7-next.1
### Patch Changes
diff --git a/plugins/explore-backend/package.json b/plugins/explore-backend/package.json
index 7b21e885c1..538468a118 100644
--- a/plugins/explore-backend/package.json
+++ b/plugins/explore-backend/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-explore-backend",
- "version": "0.0.7-next.1",
+ "version": "0.0.7",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/explore/CHANGELOG.md b/plugins/explore/CHANGELOG.md
index 36d04b4231..fbfe54f16b 100644
--- a/plugins/explore/CHANGELOG.md
+++ b/plugins/explore/CHANGELOG.md
@@ -1,5 +1,24 @@
# @backstage/plugin-explore
+## 0.4.3
+
+### Patch Changes
+
+- 1996920782b: Make sure that the first support button row does not break across lines
+- 4851581deb6: Display the title of the entity on the explore card if present, otherwise stick to the name
+- a6025e25d99: Updated the example code in the "Customization" section of the README to make the imports match the components used.
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/plugin-search-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+ - @backstage/plugin-explore-common@0.0.1
+ - @backstage/plugin-explore-react@0.0.28
+ - @backstage/plugin-search-common@1.2.3
+
## 0.4.3-next.2
### Patch Changes
diff --git a/plugins/explore/package.json b/plugins/explore/package.json
index 21c8fcc58b..b0c5bf3fd9 100644
--- a/plugins/explore/package.json
+++ b/plugins/explore/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-explore",
"description": "A Backstage plugin for building an exploration page of your software ecosystem",
- "version": "0.4.3-next.2",
+ "version": "0.4.3",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/firehydrant/CHANGELOG.md b/plugins/firehydrant/CHANGELOG.md
index 9822bb684e..4353f8e6ba 100644
--- a/plugins/firehydrant/CHANGELOG.md
+++ b/plugins/firehydrant/CHANGELOG.md
@@ -1,5 +1,16 @@
# @backstage/plugin-firehydrant
+## 0.2.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+
## 0.2.2-next.2
### Patch Changes
diff --git a/plugins/firehydrant/package.json b/plugins/firehydrant/package.json
index 260b3ad47f..f2eda9092c 100644
--- a/plugins/firehydrant/package.json
+++ b/plugins/firehydrant/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-firehydrant",
"description": "A Backstage plugin that integrates towards FireHydrant",
- "version": "0.2.2-next.2",
+ "version": "0.2.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/fossa/CHANGELOG.md b/plugins/fossa/CHANGELOG.md
index ea411c0558..2ca2c69658 100644
--- a/plugins/fossa/CHANGELOG.md
+++ b/plugins/fossa/CHANGELOG.md
@@ -1,5 +1,17 @@
# @backstage/plugin-fossa
+## 0.2.50
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+
## 0.2.50-next.2
### Patch Changes
diff --git a/plugins/fossa/package.json b/plugins/fossa/package.json
index a1b9e48f3b..caaa497130 100644
--- a/plugins/fossa/package.json
+++ b/plugins/fossa/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-fossa",
"description": "A Backstage plugin that integrates towards FOSSA",
- "version": "0.2.50-next.2",
+ "version": "0.2.50",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/gcalendar/CHANGELOG.md b/plugins/gcalendar/CHANGELOG.md
index b211ebd95a..cb1f1e451b 100644
--- a/plugins/gcalendar/CHANGELOG.md
+++ b/plugins/gcalendar/CHANGELOG.md
@@ -1,5 +1,16 @@
# @backstage/plugin-gcalendar
+## 0.3.14
+
+### Patch Changes
+
+- f493ccb9589: Pass user info email scope on auth refresh to resolve invalid credentials error
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/core-components@0.13.1
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+
## 0.3.14-next.1
### Patch Changes
diff --git a/plugins/gcalendar/package.json b/plugins/gcalendar/package.json
index 10375e2e3f..eb19dd4e6f 100644
--- a/plugins/gcalendar/package.json
+++ b/plugins/gcalendar/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-gcalendar",
- "version": "0.3.14-next.1",
+ "version": "0.3.14",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/gcp-projects/CHANGELOG.md b/plugins/gcp-projects/CHANGELOG.md
index 8254e86dbc..54265c8c59 100644
--- a/plugins/gcp-projects/CHANGELOG.md
+++ b/plugins/gcp-projects/CHANGELOG.md
@@ -1,5 +1,14 @@
# @backstage/plugin-gcp-projects
+## 0.3.37
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/core-components@0.13.1
+ - @backstage/core-plugin-api@1.5.1
+
## 0.3.37-next.1
### Patch Changes
diff --git a/plugins/gcp-projects/package.json b/plugins/gcp-projects/package.json
index 9857a6ccf1..6d320cad6d 100644
--- a/plugins/gcp-projects/package.json
+++ b/plugins/gcp-projects/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-gcp-projects",
"description": "A Backstage plugin that helps you manage projects in GCP",
- "version": "0.3.37-next.1",
+ "version": "0.3.37",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/git-release-manager/CHANGELOG.md b/plugins/git-release-manager/CHANGELOG.md
index 7899cff4fe..80f09319d0 100644
--- a/plugins/git-release-manager/CHANGELOG.md
+++ b/plugins/git-release-manager/CHANGELOG.md
@@ -1,5 +1,15 @@
# @backstage/plugin-git-release-manager
+## 0.3.31
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/integration@1.4.5
+ - @backstage/core-components@0.13.1
+ - @backstage/core-plugin-api@1.5.1
+
## 0.3.31-next.2
### Patch Changes
diff --git a/plugins/git-release-manager/package.json b/plugins/git-release-manager/package.json
index a73c35aead..76d18dc224 100644
--- a/plugins/git-release-manager/package.json
+++ b/plugins/git-release-manager/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-git-release-manager",
"description": "A Backstage plugin that helps you manage releases in git",
- "version": "0.3.31-next.2",
+ "version": "0.3.31",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/github-actions/CHANGELOG.md b/plugins/github-actions/CHANGELOG.md
index 8b64c47ac8..199051dd04 100644
--- a/plugins/github-actions/CHANGELOG.md
+++ b/plugins/github-actions/CHANGELOG.md
@@ -1,5 +1,17 @@
# @backstage/plugin-github-actions
+## 0.5.18
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/integration@1.4.5
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+
## 0.5.18-next.2
### Patch Changes
diff --git a/plugins/github-actions/README.md b/plugins/github-actions/README.md
index cb6867193c..b94862db2b 100644
--- a/plugins/github-actions/README.md
+++ b/plugins/github-actions/README.md
@@ -64,6 +64,22 @@ const serviceEntityPage = (
3. Run the app with `yarn start` and the backend with `yarn start-backend`.
Then navigate to `/github-actions/` under any entity.
+### Self-hosted / Enterprise GitHub
+
+The plugin will try to use `backstage.io/source-location` or `backstage.io/managed-by-location`
+annotations to figure out the location of the source code.
+
+1. Add the `host` and `apiBaseUrl` to your `app-config.yaml`
+
+```yaml
+# app-config.yaml
+
+integrations:
+ github:
+ - host: 'your-github-host.com'
+ apiBaseUrl: 'https://api.your-github-host.com'
+```
+
## Features
- List workflow runs for a project
diff --git a/plugins/github-actions/api-report.md b/plugins/github-actions/api-report.md
index b1628996e0..0c9d06d90e 100644
--- a/plugins/github-actions/api-report.md
+++ b/plugins/github-actions/api-report.md
@@ -10,9 +10,9 @@ import { BackstagePlugin } from '@backstage/core-plugin-api';
import { ConfigApi } from '@backstage/core-plugin-api';
import { Entity } from '@backstage/catalog-model';
import { InfoCardVariants } from '@backstage/core-components';
-import { OAuthApi } from '@backstage/core-plugin-api';
import { RestEndpointMethodTypes } from '@octokit/rest';
import { RouteRef } from '@backstage/core-plugin-api';
+import { ScmAuthApi } from '@backstage/integration-react';
// @public (undocumented)
export enum BuildStatus {
@@ -111,7 +111,7 @@ export const githubActionsApiRef: ApiRef;
// @public
export class GithubActionsClient implements GithubActionsApi {
- constructor(options: { configApi: ConfigApi; githubAuthApi: OAuthApi });
+ constructor(options: { configApi: ConfigApi; scmAuthApi: ScmAuthApi });
// (undocumented)
downloadJobLogsForWorkflowRun(options: {
hostname?: string;
diff --git a/plugins/github-actions/dev/index.tsx b/plugins/github-actions/dev/index.tsx
index 93e6ee4f74..153478ddbc 100644
--- a/plugins/github-actions/dev/index.tsx
+++ b/plugins/github-actions/dev/index.tsx
@@ -33,6 +33,8 @@ const mockEntity: Entity = {
description: 'backstage.io',
annotations: {
'github.com/project-slug': 'backstage/backstage',
+ 'backstage.io/source-location':
+ 'url:https://ghes.acme.co/backstage/backstage/tree/master/',
},
},
spec: {
diff --git a/plugins/github-actions/package.json b/plugins/github-actions/package.json
index a2c25741be..81e62ce161 100644
--- a/plugins/github-actions/package.json
+++ b/plugins/github-actions/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-github-actions",
"description": "A Backstage plugin that integrates towards GitHub Actions",
- "version": "0.5.18-next.2",
+ "version": "0.5.18",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -38,12 +38,14 @@
"@backstage/core-components": "workspace:^",
"@backstage/core-plugin-api": "workspace:^",
"@backstage/integration": "workspace:^",
+ "@backstage/integration-react": "workspace:^",
"@backstage/plugin-catalog-react": "workspace:^",
"@backstage/theme": "workspace:^",
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.61",
"@octokit/rest": "^19.0.3",
+ "git-url-parse": "^13.0.0",
"luxon": "^3.0.0",
"react-use": "^17.2.4"
},
diff --git a/plugins/github-actions/src/api/GithubActionsClient.ts b/plugins/github-actions/src/api/GithubActionsClient.ts
index 724081320f..e427c343e2 100644
--- a/plugins/github-actions/src/api/GithubActionsClient.ts
+++ b/plugins/github-actions/src/api/GithubActionsClient.ts
@@ -15,9 +15,10 @@
*/
import { readGithubIntegrationConfigs } from '@backstage/integration';
+import { ScmAuthApi } from '@backstage/integration-react';
import { GithubActionsApi } from './GithubActionsApi';
import { Octokit, RestEndpointMethodTypes } from '@octokit/rest';
-import { ConfigApi, OAuthApi } from '@backstage/core-plugin-api';
+import { ConfigApi } from '@backstage/core-plugin-api';
/**
* A client for fetching information about GitHub actions.
@@ -26,22 +27,26 @@ import { ConfigApi, OAuthApi } from '@backstage/core-plugin-api';
*/
export class GithubActionsClient implements GithubActionsApi {
private readonly configApi: ConfigApi;
- private readonly githubAuthApi: OAuthApi;
+ private readonly scmAuthApi: ScmAuthApi;
- constructor(options: { configApi: ConfigApi; githubAuthApi: OAuthApi }) {
+ constructor(options: { configApi: ConfigApi; scmAuthApi: ScmAuthApi }) {
this.configApi = options.configApi;
- this.githubAuthApi = options.githubAuthApi;
+ this.scmAuthApi = options.scmAuthApi;
}
- private async getOctokit(hostname?: string): Promise {
- // TODO: Get access token for the specified hostname
- const token = await this.githubAuthApi.getAccessToken(['repo']);
+ private async getOctokit(hostname: string = 'github.com'): Promise {
+ const { token } = await this.scmAuthApi.getCredentials({
+ url: `https://${hostname}/`,
+ additionalScope: {
+ customScopes: {
+ github: ['repo'],
+ },
+ },
+ });
const configs = readGithubIntegrationConfigs(
this.configApi.getOptionalConfigArray('integrations.github') ?? [],
);
- const githubIntegrationConfig = configs.find(
- v => v.host === hostname ?? 'github.com',
- );
+ const githubIntegrationConfig = configs.find(v => v.host === hostname);
const baseUrl = githubIntegrationConfig?.apiBaseUrl;
return new Octokit({ auth: token, baseUrl });
}
diff --git a/plugins/github-actions/src/components/Cards/Cards.tsx b/plugins/github-actions/src/components/Cards/Cards.tsx
index e23f7f7d59..205288cba7 100644
--- a/plugins/github-actions/src/components/Cards/Cards.tsx
+++ b/plugins/github-actions/src/components/Cards/Cards.tsx
@@ -14,7 +14,6 @@
* limitations under the License.
*/
-import { readGithubIntegrationConfigs } from '@backstage/integration';
import { useEntity } from '@backstage/plugin-catalog-react';
import {
LinearProgress,
@@ -28,13 +27,14 @@ import { GITHUB_ACTIONS_ANNOTATION } from '../getProjectNameFromEntity';
import { useWorkflowRuns, WorkflowRun } from '../useWorkflowRuns';
import { WorkflowRunsTable } from '../WorkflowRunsTable';
import { WorkflowRunStatus } from '../WorkflowRunStatus';
-import { configApiRef, errorApiRef, useApi } from '@backstage/core-plugin-api';
+import { errorApiRef, useApi } from '@backstage/core-plugin-api';
import {
InfoCard,
InfoCardVariants,
Link,
StructuredMetadataTable,
} from '@backstage/core-components';
+import { getHostnameFromEntity } from '../getHostnameFromEntity';
const useStyles = makeStyles({
externalLinkIcon: {
@@ -85,12 +85,8 @@ export const LatestWorkflowRunCard = (props: {
}) => {
const { branch = 'master', variant } = props;
const { entity } = useEntity();
- const config = useApi(configApiRef);
const errorApi = useApi(errorApiRef);
- // TODO: Get github hostname from metadata annotation
- const hostname = readGithubIntegrationConfigs(
- config.getOptionalConfigArray('integrations.github') ?? [],
- )[0].host;
+ const hostname = getHostnameFromEntity(entity);
const [owner, repo] = (
entity?.metadata.annotations?.[GITHUB_ACTIONS_ANNOTATION] ?? '/'
).split('/');
diff --git a/plugins/github-actions/src/components/Cards/RecentWorkflowRunsCard.test.tsx b/plugins/github-actions/src/components/Cards/RecentWorkflowRunsCard.test.tsx
index f55cad8424..dcafc3b6f2 100644
--- a/plugins/github-actions/src/components/Cards/RecentWorkflowRunsCard.test.tsx
+++ b/plugins/github-actions/src/components/Cards/RecentWorkflowRunsCard.test.tsx
@@ -48,6 +48,8 @@ describe('', () => {
name: 'software',
annotations: {
'github.com/project-slug': 'theorg/the-service',
+ 'backstage.io/source-location':
+ 'url:https://ghes.acme.co/theorg/the-service/tree/main/',
},
},
spec: {
@@ -119,10 +121,14 @@ describe('', () => {
);
});
- it('uses the github repo and owner from the entity annotation', async () => {
+ it('uses the github hostname, repo and owner from the entity annotations', async () => {
renderSubject();
expect(useWorkflowRuns).toHaveBeenCalledWith(
- expect.objectContaining({ owner: 'theorg', repo: 'the-service' }),
+ expect.objectContaining({
+ hostname: 'ghes.acme.co',
+ owner: 'theorg',
+ repo: 'the-service',
+ }),
);
});
diff --git a/plugins/github-actions/src/components/Cards/RecentWorkflowRunsCard.tsx b/plugins/github-actions/src/components/Cards/RecentWorkflowRunsCard.tsx
index 59d64af9c9..d48e4a6604 100644
--- a/plugins/github-actions/src/components/Cards/RecentWorkflowRunsCard.tsx
+++ b/plugins/github-actions/src/components/Cards/RecentWorkflowRunsCard.tsx
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-import { readGithubIntegrationConfigs } from '@backstage/integration';
import { useEntity } from '@backstage/plugin-catalog-react';
import React, { useEffect } from 'react';
import { Link as RouterLink } from 'react-router-dom';
@@ -22,12 +21,7 @@ import { useWorkflowRuns, WorkflowRun } from '../useWorkflowRuns';
import { WorkflowRunStatus } from '../WorkflowRunStatus';
import { Typography } from '@material-ui/core';
-import {
- configApiRef,
- errorApiRef,
- useApi,
- useRouteRef,
-} from '@backstage/core-plugin-api';
+import { errorApiRef, useApi, useRouteRef } from '@backstage/core-plugin-api';
import {
ErrorPanel,
InfoCard,
@@ -36,6 +30,7 @@ import {
Table,
} from '@backstage/core-components';
import { buildRouteRef } from '../../routes';
+import { getHostnameFromEntity } from '../getHostnameFromEntity';
const firstLine = (message: string): string => message.split('\n')[0];
@@ -49,13 +44,9 @@ export const RecentWorkflowRunsCard = (props: {
const { branch, dense = false, limit = 5, variant } = props;
const { entity } = useEntity();
- const config = useApi(configApiRef);
const errorApi = useApi(errorApiRef);
- // TODO: Get github hostname from metadata annotation
- const hostname = readGithubIntegrationConfigs(
- config.getOptionalConfigArray('integrations.github') ?? [],
- )[0].host;
+ const hostname = getHostnameFromEntity(entity);
const [owner, repo] = (
entity?.metadata.annotations?.[GITHUB_ACTIONS_ANNOTATION] ?? '/'
diff --git a/plugins/github-actions/src/components/WorkflowRunDetails/WorkflowRunDetails.tsx b/plugins/github-actions/src/components/WorkflowRunDetails/WorkflowRunDetails.tsx
index a2c87772d5..76ce8451e2 100644
--- a/plugins/github-actions/src/components/WorkflowRunDetails/WorkflowRunDetails.tsx
+++ b/plugins/github-actions/src/components/WorkflowRunDetails/WorkflowRunDetails.tsx
@@ -15,7 +15,6 @@
*/
import { Entity } from '@backstage/catalog-model';
-import { readGithubIntegrationConfigs } from '@backstage/integration';
import {
Accordion,
AccordionDetails,
@@ -44,8 +43,8 @@ import { WorkflowRunStatus } from '../WorkflowRunStatus';
import { useWorkflowRunJobs } from './useWorkflowRunJobs';
import { useWorkflowRunsDetails } from './useWorkflowRunsDetails';
import { WorkflowRunLogs } from '../WorkflowRunLogs';
-import { configApiRef, useApi } from '@backstage/core-plugin-api';
import { Breadcrumbs, Link } from '@backstage/core-components';
+import { getHostnameFromEntity } from '../getHostnameFromEntity';
const useStyles = makeStyles(theme => ({
root: {
@@ -163,13 +162,9 @@ const JobsList = ({ jobs, entity }: { jobs?: Jobs; entity: Entity }) => {
};
export const WorkflowRunDetails = ({ entity }: { entity: Entity }) => {
- const config = useApi(configApiRef);
const projectName = getProjectNameFromEntity(entity);
- // TODO: Get github hostname from metadata annotation
- const hostname = readGithubIntegrationConfigs(
- config.getOptionalConfigArray('integrations.github') ?? [],
- )[0].host;
+ const hostname = getHostnameFromEntity(entity);
const [owner, repo] = (projectName && projectName.split('/')) || [];
const details = useWorkflowRunsDetails({ hostname, owner, repo });
const jobs = useWorkflowRunJobs({ hostname, owner, repo });
diff --git a/plugins/github-actions/src/components/WorkflowRunLogs/WorkflowRunLogs.tsx b/plugins/github-actions/src/components/WorkflowRunLogs/WorkflowRunLogs.tsx
index 2c9d41398a..2bf8d3356b 100644
--- a/plugins/github-actions/src/components/WorkflowRunLogs/WorkflowRunLogs.tsx
+++ b/plugins/github-actions/src/components/WorkflowRunLogs/WorkflowRunLogs.tsx
@@ -16,8 +16,6 @@
import { Entity } from '@backstage/catalog-model';
import { LogViewer } from '@backstage/core-components';
-import { configApiRef, useApi } from '@backstage/core-plugin-api';
-import { readGithubIntegrationConfigs } from '@backstage/integration';
import {
Accordion,
AccordionSummary,
@@ -35,6 +33,7 @@ import ExpandMoreIcon from '@material-ui/icons/ExpandMore';
import React from 'react';
import { getProjectNameFromEntity } from '../getProjectNameFromEntity';
import { useDownloadWorkflowRunLogs } from './useDownloadWorkflowRunLogs';
+import { getHostnameFromEntity } from '../getHostnameFromEntity';
const useStyles = makeStyles(theme => ({
button: {
@@ -75,14 +74,10 @@ export const WorkflowRunLogs = ({
runId: number;
inProgress: boolean;
}) => {
- const config = useApi(configApiRef);
const classes = useStyles();
const projectName = getProjectNameFromEntity(entity);
- // TODO: Get github hostname from metadata annotation
- const hostname = readGithubIntegrationConfigs(
- config.getOptionalConfigArray('integrations.github') ?? [],
- )[0].host;
+ const hostname = getHostnameFromEntity(entity);
const [owner, repo] = (projectName && projectName.split('/')) || [];
const jobLogs = useDownloadWorkflowRunLogs({
hostname,
diff --git a/plugins/github-actions/src/components/WorkflowRunsTable/WorkflowRunsTable.tsx b/plugins/github-actions/src/components/WorkflowRunsTable/WorkflowRunsTable.tsx
index f05a41e71b..8471a5d7d6 100644
--- a/plugins/github-actions/src/components/WorkflowRunsTable/WorkflowRunsTable.tsx
+++ b/plugins/github-actions/src/components/WorkflowRunsTable/WorkflowRunsTable.tsx
@@ -30,7 +30,6 @@ import SyncIcon from '@material-ui/icons/Sync';
import { buildRouteRef } from '../../routes';
import { getProjectNameFromEntity } from '../getProjectNameFromEntity';
import { Entity } from '@backstage/catalog-model';
-import { readGithubIntegrationConfigs } from '@backstage/integration';
import {
EmptyState,
@@ -38,7 +37,8 @@ import {
TableColumn,
Link,
} from '@backstage/core-components';
-import { configApiRef, useApi, useRouteRef } from '@backstage/core-plugin-api';
+import { useRouteRef } from '@backstage/core-plugin-api';
+import { getHostnameFromEntity } from '../getHostnameFromEntity';
const generatedColumns: TableColumn[] = [
{
@@ -164,12 +164,8 @@ export const WorkflowRunsTable = ({
entity: Entity;
branch?: string;
}) => {
- const config = useApi(configApiRef);
const projectName = getProjectNameFromEntity(entity);
- // TODO: Get github hostname from metadata annotation
- const hostname = readGithubIntegrationConfigs(
- config.getOptionalConfigArray('integrations.github') ?? [],
- )[0].host;
+ const hostname = getHostnameFromEntity(entity);
const [owner, repo] = (projectName ?? '/').split('/');
const [{ runs, ...tableProps }, { retry, setPage, setPageSize }] =
useWorkflowRuns({
diff --git a/plugins/github-actions/src/components/getHostnameFromEntity.ts b/plugins/github-actions/src/components/getHostnameFromEntity.ts
new file mode 100644
index 0000000000..836fd22860
--- /dev/null
+++ b/plugins/github-actions/src/components/getHostnameFromEntity.ts
@@ -0,0 +1,32 @@
+/*
+ * 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 {
+ ANNOTATION_LOCATION,
+ ANNOTATION_SOURCE_LOCATION,
+ Entity,
+} from '@backstage/catalog-model';
+import gitUrlParse from 'git-url-parse';
+
+export const getHostnameFromEntity = (entity: Entity) => {
+ const location =
+ entity?.metadata.annotations?.[ANNOTATION_SOURCE_LOCATION] ??
+ entity?.metadata.annotations?.[ANNOTATION_LOCATION];
+
+ return location?.startsWith('url:')
+ ? gitUrlParse(location.slice(4)).resource
+ : undefined;
+};
diff --git a/plugins/github-actions/src/plugin.ts b/plugins/github-actions/src/plugin.ts
index 26cf246fb9..906ab7c91c 100644
--- a/plugins/github-actions/src/plugin.ts
+++ b/plugins/github-actions/src/plugin.ts
@@ -20,10 +20,10 @@ import {
configApiRef,
createPlugin,
createApiFactory,
- githubAuthApiRef,
createRoutableExtension,
createComponentExtension,
} from '@backstage/core-plugin-api';
+import { scmAuthApiRef } from '@backstage/integration-react';
/** @public */
export const githubActionsPlugin = createPlugin({
@@ -31,9 +31,9 @@ export const githubActionsPlugin = createPlugin({
apis: [
createApiFactory({
api: githubActionsApiRef,
- deps: { configApi: configApiRef, githubAuthApi: githubAuthApiRef },
- factory: ({ configApi, githubAuthApi }) =>
- new GithubActionsClient({ configApi, githubAuthApi }),
+ deps: { configApi: configApiRef, scmAuthApi: scmAuthApiRef },
+ factory: ({ configApi, scmAuthApi }) =>
+ new GithubActionsClient({ configApi, scmAuthApi }),
}),
],
routes: {
diff --git a/plugins/github-deployments/CHANGELOG.md b/plugins/github-deployments/CHANGELOG.md
index ba1d67aece..0a699bdc57 100644
--- a/plugins/github-deployments/CHANGELOG.md
+++ b/plugins/github-deployments/CHANGELOG.md
@@ -1,5 +1,19 @@
# @backstage/plugin-github-deployments
+## 0.1.49
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/integration@1.4.5
+ - @backstage/core-components@0.13.1
+ - @backstage/integration-react@1.1.13
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+
## 0.1.49-next.2
### Patch Changes
diff --git a/plugins/github-deployments/package.json b/plugins/github-deployments/package.json
index c9df936591..08c7e1aa9d 100644
--- a/plugins/github-deployments/package.json
+++ b/plugins/github-deployments/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-github-deployments",
"description": "A Backstage plugin that integrates towards GitHub Deployments",
- "version": "0.1.49-next.2",
+ "version": "0.1.49",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/github-issues/CHANGELOG.md b/plugins/github-issues/CHANGELOG.md
index ee2e47570d..6f83ae81cf 100644
--- a/plugins/github-issues/CHANGELOG.md
+++ b/plugins/github-issues/CHANGELOG.md
@@ -1,5 +1,18 @@
# @backstage/plugin-github-issues
+## 0.2.7
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/integration@1.4.5
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+
## 0.2.7-next.2
### Patch Changes
diff --git a/plugins/github-issues/package.json b/plugins/github-issues/package.json
index 8a12aeb2de..c6685eff13 100644
--- a/plugins/github-issues/package.json
+++ b/plugins/github-issues/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-github-issues",
- "version": "0.2.7-next.2",
+ "version": "0.2.7",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/github-pull-requests-board/CHANGELOG.md b/plugins/github-pull-requests-board/CHANGELOG.md
index 53bcb9b570..704dc495c1 100644
--- a/plugins/github-pull-requests-board/CHANGELOG.md
+++ b/plugins/github-pull-requests-board/CHANGELOG.md
@@ -1,5 +1,18 @@
# @backstage/plugin-github-pull-requests-board
+## 0.1.12
+
+### Patch Changes
+
+- cf125c36569: The `EntityTeamPullRequestsContent` and `EntityTeamPullRequestsCard` support the ability to view the labels/tags added to each PR
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/integration@1.4.5
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+
## 0.1.12-next.2
### Patch Changes
diff --git a/plugins/github-pull-requests-board/package.json b/plugins/github-pull-requests-board/package.json
index 824d265abe..da3c929b43 100644
--- a/plugins/github-pull-requests-board/package.json
+++ b/plugins/github-pull-requests-board/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-github-pull-requests-board",
"description": "A Backstage plugin that allows you to see all open Pull Requests for all the repositories owned by your team",
- "version": "0.1.12-next.2",
+ "version": "0.1.12",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/gitops-profiles/CHANGELOG.md b/plugins/gitops-profiles/CHANGELOG.md
index c5eba8def3..4aed3f9ab3 100644
--- a/plugins/gitops-profiles/CHANGELOG.md
+++ b/plugins/gitops-profiles/CHANGELOG.md
@@ -1,5 +1,15 @@
# @backstage/plugin-gitops-profiles
+## 0.3.36
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/core-components@0.13.1
+ - @backstage/config@1.0.7
+ - @backstage/core-plugin-api@1.5.1
+
## 0.3.36-next.1
### Patch Changes
diff --git a/plugins/gitops-profiles/package.json b/plugins/gitops-profiles/package.json
index e721682976..e374b49335 100644
--- a/plugins/gitops-profiles/package.json
+++ b/plugins/gitops-profiles/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-gitops-profiles",
"description": "A Backstage plugin that helps you manage GitOps profiles",
- "version": "0.3.36-next.1",
+ "version": "0.3.36",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/gocd/CHANGELOG.md b/plugins/gocd/CHANGELOG.md
index 9eb9964c96..0014eebd8c 100644
--- a/plugins/gocd/CHANGELOG.md
+++ b/plugins/gocd/CHANGELOG.md
@@ -1,5 +1,17 @@
# @backstage/plugin-gocd
+## 0.1.24
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+
## 0.1.24-next.2
### Patch Changes
diff --git a/plugins/gocd/package.json b/plugins/gocd/package.json
index c8fca38e23..11ee841aa2 100644
--- a/plugins/gocd/package.json
+++ b/plugins/gocd/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-gocd",
"description": "A Backstage plugin that integrates towards GoCD",
- "version": "0.1.24-next.2",
+ "version": "0.1.24",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/graphiql/CHANGELOG.md b/plugins/graphiql/CHANGELOG.md
index 3d49c1b29f..5f395bda29 100644
--- a/plugins/graphiql/CHANGELOG.md
+++ b/plugins/graphiql/CHANGELOG.md
@@ -1,5 +1,14 @@
# @backstage/plugin-graphiql
+## 0.2.50
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/core-components@0.13.1
+ - @backstage/core-plugin-api@1.5.1
+
## 0.2.50-next.1
### Patch Changes
diff --git a/plugins/graphiql/package.json b/plugins/graphiql/package.json
index 219551e6e7..d5dae8c2ec 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.50-next.1",
+ "version": "0.2.50",
"publishConfig": {
"access": "public",
"main": "dist/index.esm.js",
diff --git a/plugins/graphql-backend/CHANGELOG.md b/plugins/graphql-backend/CHANGELOG.md
index 898e185d5d..14f2b75eac 100644
--- a/plugins/graphql-backend/CHANGELOG.md
+++ b/plugins/graphql-backend/CHANGELOG.md
@@ -1,5 +1,14 @@
# @backstage/plugin-graphql-backend
+## 0.1.35
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/config@1.0.7
+ - @backstage/plugin-catalog-graphql@0.3.20
+
## 0.1.35-next.1
### Patch Changes
diff --git a/plugins/graphql-backend/package.json b/plugins/graphql-backend/package.json
index 388b587040..cc8c3e3059 100644
--- a/plugins/graphql-backend/package.json
+++ b/plugins/graphql-backend/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-graphql-backend",
"description": "An experimental Backstage backend plugin for GraphQL",
- "version": "0.1.35-next.1",
+ "version": "0.1.35",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/graphql-voyager/CHANGELOG.md b/plugins/graphql-voyager/CHANGELOG.md
index c47af7b006..394b99f5c7 100644
--- a/plugins/graphql-voyager/CHANGELOG.md
+++ b/plugins/graphql-voyager/CHANGELOG.md
@@ -1,5 +1,14 @@
# @backstage/plugin-graphql-voyager
+## 0.1.3
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/core-components@0.13.1
+ - @backstage/core-plugin-api@1.5.1
+
## 0.1.3-next.1
### Patch Changes
diff --git a/plugins/graphql-voyager/package.json b/plugins/graphql-voyager/package.json
index c459e4fbf8..683b664b33 100644
--- a/plugins/graphql-voyager/package.json
+++ b/plugins/graphql-voyager/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-graphql-voyager",
"description": "Backstage plugin for GraphQL Voyager",
- "version": "0.1.3-next.1",
+ "version": "0.1.3",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/home-react/.eslintrc.js b/plugins/home-react/.eslintrc.js
new file mode 100644
index 0000000000..e2a53a6ad2
--- /dev/null
+++ b/plugins/home-react/.eslintrc.js
@@ -0,0 +1 @@
+module.exports = require('@backstage/cli/config/eslint-factory')(__dirname);
diff --git a/plugins/home-react/README.md b/plugins/home-react/README.md
new file mode 100644
index 0000000000..c10ad8d323
--- /dev/null
+++ b/plugins/home-react/README.md
@@ -0,0 +1,3 @@
+# Home React
+
+A new Library that contains React Components for [home plugin](/plugins/home/README.md) depend on.
diff --git a/plugins/home-react/api-report.md b/plugins/home-react/api-report.md
new file mode 100644
index 0000000000..42e8fd0b0f
--- /dev/null
+++ b/plugins/home-react/api-report.md
@@ -0,0 +1,76 @@
+## API Report File for "@backstage/plugin-home-react"
+
+> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
+
+```ts
+///
+
+import { Extension } from '@backstage/core-plugin-api';
+import { RJSFSchema } from '@rjsf/utils';
+
+// @public (undocumented)
+export type CardConfig = {
+ layout?: CardLayout;
+ settings?: CardSettings;
+};
+
+// @public (undocumented)
+export type CardExtensionProps = ComponentRenderer & {
+ title?: string;
+} & T;
+
+// @public (undocumented)
+export type CardLayout = {
+ width?: {
+ minColumns?: number;
+ maxColumns?: number;
+ defaultColumns?: number;
+ };
+ height?: {
+ minRows?: number;
+ maxRows?: number;
+ defaultRows?: number;
+ };
+};
+
+// @public (undocumented)
+export type CardSettings = {
+ schema?: RJSFSchema;
+};
+
+// @public (undocumented)
+export type ComponentParts = {
+ Content: (props?: any) => JSX.Element;
+ Actions?: () => JSX.Element;
+ Settings?: () => JSX.Element;
+ ContextProvider?: (props: any) => JSX.Element;
+};
+
+// @public (undocumented)
+export type ComponentRenderer = {
+ Renderer?: (props: RendererProps) => JSX.Element;
+};
+
+// @public
+export function createCardExtension(options: {
+ title: string;
+ components: () => Promise;
+ name?: string;
+ description?: string;
+ layout?: CardLayout;
+ settings?: CardSettings;
+}): Extension<(props: CardExtensionProps) => JSX.Element>;
+
+// @public (undocumented)
+export type RendererProps = {
+ title: string;
+} & ComponentParts;
+
+// @public (undocumented)
+export const SettingsModal: (props: {
+ open: boolean;
+ close: Function;
+ componentName: string;
+ children: JSX.Element;
+}) => JSX.Element;
+```
diff --git a/plugins/home-react/package.json b/plugins/home-react/package.json
new file mode 100644
index 0000000000..a001db5b53
--- /dev/null
+++ b/plugins/home-react/package.json
@@ -0,0 +1,65 @@
+{
+ "name": "@backstage/plugin-home-react",
+ "description": "A Backstage plugin that contains react components helps you build a home page",
+ "version": "0.0.0",
+ "main": "src/index.ts",
+ "types": "src/index.ts",
+ "license": "Apache-2.0",
+ "publishConfig": {
+ "access": "public",
+ "main": "dist/index.esm.js",
+ "types": "dist/index.d.ts"
+ },
+ "backstage": {
+ "role": "web-library"
+ },
+ "homepage": "https://github.com/backstage/backstage/tree/master/plugins/home-react#readme",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/home-react"
+ },
+ "keywords": [
+ "backstage",
+ "homepage"
+ ],
+ "scripts": {
+ "build": "backstage-cli package build",
+ "start": "backstage-cli package start",
+ "lint": "backstage-cli package lint",
+ "test": "backstage-cli package test",
+ "prepack": "backstage-cli package prepack",
+ "postpack": "backstage-cli package postpack",
+ "clean": "backstage-cli package clean"
+ },
+ "dependencies": {
+ "@backstage/core-components": "workspace:^",
+ "@backstage/core-plugin-api": "workspace:^",
+ "@material-ui/core": "^4.12.2",
+ "@material-ui/icons": "^4.9.1",
+ "@rjsf/utils": "5.6.0"
+ },
+ "peerDependencies": {
+ "react": "^16.13.1 || ^17.0.0",
+ "react-dom": "^16.13.1 || ^17.0.0",
+ "react-router-dom": "6.0.0-beta.0 || ^6.3.0"
+ },
+ "devDependencies": {
+ "@backstage/cli": "workspace:^",
+ "@backstage/core-app-api": "workspace:^",
+ "@backstage/dev-utils": "workspace:^",
+ "@backstage/test-utils": "workspace:^",
+ "@testing-library/dom": "^8.0.0",
+ "@testing-library/jest-dom": "^5.10.1",
+ "@testing-library/react": "^12.1.3",
+ "@testing-library/user-event": "^14.0.0",
+ "@types/node": "^16.11.26",
+ "@types/react": "^16.13.1 || ^17.0.0",
+ "@types/react-grid-layout": "^1.3.2",
+ "cross-fetch": "^3.1.5",
+ "msw": "^1.0.0"
+ },
+ "files": [
+ "dist"
+ ]
+}
diff --git a/plugins/home/src/components/SettingsModal.tsx b/plugins/home-react/src/components/SettingsModal.tsx
similarity index 100%
rename from plugins/home/src/components/SettingsModal.tsx
rename to plugins/home-react/src/components/SettingsModal.tsx
diff --git a/plugins/home-react/src/components/index.ts b/plugins/home-react/src/components/index.ts
new file mode 100644
index 0000000000..dce6968b36
--- /dev/null
+++ b/plugins/home-react/src/components/index.ts
@@ -0,0 +1,17 @@
+/*
+ * Copyright 2020 The Backstage Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+export { SettingsModal } from './SettingsModal';
diff --git a/plugins/home/src/extensions.tsx b/plugins/home-react/src/extensions.tsx
similarity index 100%
rename from plugins/home/src/extensions.tsx
rename to plugins/home-react/src/extensions.tsx
diff --git a/plugins/home-react/src/index.ts b/plugins/home-react/src/index.ts
new file mode 100644
index 0000000000..1f02ded1c6
--- /dev/null
+++ b/plugins/home-react/src/index.ts
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+
+/**
+ * A Backstage plugin that helps you build a home page
+ *
+ * @packageDocumentation
+ */
+export * from './components';
+export { createCardExtension } from './extensions';
+export type {
+ CardExtensionProps,
+ ComponentParts,
+ ComponentRenderer,
+ RendererProps,
+ CardLayout,
+ CardSettings,
+ CardConfig,
+} from './extensions';
diff --git a/plugins/home/CHANGELOG.md b/plugins/home/CHANGELOG.md
index 3996c77103..b626f5c5e6 100644
--- a/plugins/home/CHANGELOG.md
+++ b/plugins/home/CHANGELOG.md
@@ -1,5 +1,21 @@
# @backstage/plugin-home
+## 0.5.2
+
+### Patch Changes
+
+- acca8966465: Remove object-hash dependency
+- 957cd9b8958: Use the semantic time tag for rendering world clocks on homepage headers.
+- 0e19e7b0f3a: Bump to using the later v5 versions of `@rjsf/*`
+- 5272cfabc3b: Add missing @rjsf/core dependency
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/core-plugin-api@1.5.1
+
## 0.5.2-next.2
### Patch Changes
diff --git a/plugins/home/README.md b/plugins/home/README.md
index 7da0034662..20b91289b1 100644
--- a/plugins/home/README.md
+++ b/plugins/home/README.md
@@ -51,6 +51,8 @@ The Home Page can be composed with regular React components, so there's no magic
Finally, the `createCardExtension` also accepts a generic, such that Component Developers can indicate to App Integrators what custom props their component will accept, such as the example below where the default category of the random jokes can be set.
```tsx
+import { createCardExtension } from '@backstage/plugin-home-react';
+
export const RandomJokeHomePageComponent = homePlugin.provide(
createCardExtension<{ defaultCategory?: 'programming' | 'any' }>({
title: 'Random Joke',
@@ -121,6 +123,8 @@ want to add additional configuration like component size or settings, you can de
property:
```tsx
+import { createCardExtension } from '@backstage/plugin-home-react';
+
export const RandomJokeHomePageComponent = homePlugin.provide(
createCardExtension<{ defaultCategory?: 'any' | 'programming' }>({
name: 'HomePageRandomJoke',
@@ -178,6 +182,8 @@ properties. The `settings.schema` object should follow
must be `object`.
```tsx
+import { createCardExtension } from '@backstage/plugin-home-react';
+
export const HomePageRandomJoke = homePlugin.provide(
createCardExtension<{ defaultCategory?: 'any' | 'programming' }>({
name: 'HomePageRandomJoke',
diff --git a/plugins/home/api-report.md b/plugins/home/api-report.md
index 43fdbf403c..56b1f54331 100644
--- a/plugins/home/api-report.md
+++ b/plugins/home/api-report.md
@@ -6,36 +6,30 @@
///
import { BackstagePlugin } from '@backstage/core-plugin-api';
-import { Extension } from '@backstage/core-plugin-api';
+import { CardConfig as CardConfig_2 } from '@backstage/plugin-home-react';
+import { CardExtensionProps as CardExtensionProps_2 } from '@backstage/plugin-home-react';
+import { CardLayout as CardLayout_2 } from '@backstage/plugin-home-react';
+import { CardSettings as CardSettings_2 } from '@backstage/plugin-home-react';
+import { ComponentParts as ComponentParts_2 } from '@backstage/plugin-home-react';
+import { ComponentRenderer as ComponentRenderer_2 } from '@backstage/plugin-home-react';
+import { createCardExtension as createCardExtension_2 } from '@backstage/plugin-home-react';
import { default as React_2 } from 'react';
import { ReactElement } from 'react';
import { ReactNode } from 'react';
-import { RJSFSchema } from '@rjsf/utils';
+import { RendererProps as RendererProps_2 } from '@backstage/plugin-home-react';
import { RouteRef } from '@backstage/core-plugin-api';
-// @public (undocumented)
-export type CardExtensionProps = ComponentRenderer & {
- title?: string;
-} & T;
+// @public @deprecated (undocumented)
+export type CardConfig = CardConfig_2;
-// @public (undocumented)
-export type CardLayout = {
- width?: {
- minColumns?: number;
- maxColumns?: number;
- defaultColumns?: number;
- };
- height?: {
- minRows?: number;
- maxRows?: number;
- defaultRows?: number;
- };
-};
+// @public @deprecated (undocumented)
+export type CardExtensionProps = CardExtensionProps_2;
-// @public (undocumented)
-export type CardSettings = {
- schema?: RJSFSchema;
-};
+// @public @deprecated (undocumented)
+export type CardLayout = CardLayout_2;
+
+// @public @deprecated (undocumented)
+export type CardSettings = CardSettings_2;
// @public (undocumented)
export type ClockConfig = {
@@ -53,18 +47,11 @@ export const ComponentAccordion: (props: {
ContextProvider?: ((props: any) => JSX.Element) | undefined;
}) => JSX.Element;
-// @public (undocumented)
-export type ComponentParts = {
- Content: (props?: any) => JSX.Element;
- Actions?: () => JSX.Element;
- Settings?: () => JSX.Element;
- ContextProvider?: (props: any) => JSX.Element;
-};
+// @public @deprecated (undocumented)
+export type ComponentParts = ComponentParts_2;
-// @public (undocumented)
-export type ComponentRenderer = {
- Renderer?: (props: RendererProps) => JSX.Element;
-};
+// @public @deprecated (undocumented)
+export type ComponentRenderer = ComponentRenderer_2;
// @public (undocumented)
export const ComponentTab: (props: {
@@ -82,15 +69,8 @@ export const ComponentTabs: (props: {
}[];
}) => JSX.Element;
-// @public
-export function createCardExtension(options: {
- title: string;
- components: () => Promise;
- name?: string;
- description?: string;
- layout?: CardLayout;
- settings?: CardSettings;
-}): Extension<(props: CardExtensionProps) => JSX.Element>;
+// @public @deprecated (undocumented)
+export const createCardExtension: typeof createCardExtension_2;
// @public
export const CustomHomepageGrid: (
@@ -124,19 +104,19 @@ export const HomepageCompositionRoot: (props: {
// @public (undocumented)
export const HomePageRandomJoke: (
- props: CardExtensionProps<{
+ props: CardExtensionProps_2<{
defaultCategory?: 'any' | 'programming' | undefined;
}>,
) => JSX.Element;
// @public
export const HomePageStarredEntities: (
- props: CardExtensionProps,
+ props: CardExtensionProps_2,
) => JSX.Element;
// @public
export const HomePageToolkit: (
- props: CardExtensionProps,
+ props: CardExtensionProps_2,
) => JSX.Element;
// @public (undocumented)
@@ -157,12 +137,10 @@ export type LayoutConfiguration = {
height: number;
};
-// @public (undocumented)
-export type RendererProps = {
- title: string;
-} & ComponentParts;
+// @public @deprecated (undocumented)
+export type RendererProps = RendererProps_2;
-// @public (undocumented)
+// @public @deprecated (undocumented)
export const SettingsModal: (props: {
open: boolean;
close: Function;
diff --git a/plugins/home/package.json b/plugins/home/package.json
index 12e55d80cd..c0b2b005df 100644
--- a/plugins/home/package.json
+++ b/plugins/home/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-home",
"description": "A Backstage plugin that helps you build a home page",
- "version": "0.5.2-next.2",
+ "version": "0.5.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -38,6 +38,7 @@
"@backstage/core-components": "workspace:^",
"@backstage/core-plugin-api": "workspace:^",
"@backstage/plugin-catalog-react": "workspace:^",
+ "@backstage/plugin-home-react": "workspace:^",
"@backstage/theme": "workspace:^",
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
diff --git a/plugins/home/src/componentRenderers/ComponentAccordion.tsx b/plugins/home/src/componentRenderers/ComponentAccordion.tsx
index 8b9795c9c3..77e7561e55 100644
--- a/plugins/home/src/componentRenderers/ComponentAccordion.tsx
+++ b/plugins/home/src/componentRenderers/ComponentAccordion.tsx
@@ -15,6 +15,7 @@
*/
import React from 'react';
+import { SettingsModal } from '@backstage/plugin-home-react';
import {
Accordion,
AccordionDetails,
@@ -27,8 +28,6 @@ import { makeStyles } from '@material-ui/core/styles';
import ExpandMoreIcon from '@material-ui/icons/ExpandMore';
import SettingsIcon from '@material-ui/icons/Settings';
-import { SettingsModal } from '../components';
-
const useStyles = makeStyles((theme: Theme) => ({
settingsIconButton: {
padding: theme.spacing(0, 1, 0, 0),
diff --git a/plugins/home/src/components/CustomHomepage/CustomHomepageGrid.tsx b/plugins/home/src/components/CustomHomepage/CustomHomepageGrid.tsx
index 6af9044cbd..ae8e0dd9bb 100644
--- a/plugins/home/src/components/CustomHomepage/CustomHomepageGrid.tsx
+++ b/plugins/home/src/components/CustomHomepage/CustomHomepageGrid.tsx
@@ -42,7 +42,7 @@ import {
LayoutConfigurationSchema,
WidgetSchema,
} from './types';
-import { CardConfig } from '../../extensions';
+import { CardConfig } from '@backstage/plugin-home-react';
// eslint-disable-next-line new-cap
const ResponsiveGrid = WidthProvider(Responsive);
diff --git a/plugins/home/src/components/index.ts b/plugins/home/src/components/index.ts
index e06013d3fa..e528e0795d 100644
--- a/plugins/home/src/components/index.ts
+++ b/plugins/home/src/components/index.ts
@@ -15,5 +15,4 @@
*/
export { HomepageCompositionRoot } from './HomepageCompositionRoot';
-export { SettingsModal } from './SettingsModal';
export * from './CustomHomepage';
diff --git a/plugins/home/src/deprecated.ts b/plugins/home/src/deprecated.ts
new file mode 100644
index 0000000000..f116d2c9f9
--- /dev/null
+++ b/plugins/home/src/deprecated.ts
@@ -0,0 +1,81 @@
+/*
+ * Copyright 2022 The Backstage Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import {
+ createCardExtension as homeReactCreateCardExtension,
+ CardConfig as homeReactCardConfig,
+ CardExtensionProps as homeReactCardExtensionProps,
+ CardLayout as homeReactCardLayout,
+ CardSettings as homeReactCardSettings,
+ ComponentParts as homeReactComponentParts,
+ ComponentRenderer as homeReactComponentRenderer,
+ RendererProps as homeReactRendererProps,
+ SettingsModal as homeReactSettingsModal,
+} from '@backstage/plugin-home-react';
+
+/**
+ * @public
+ * @deprecated Import from `@backstage/plugin-home-react` instead
+ */
+export const createCardExtension = homeReactCreateCardExtension;
+
+/**
+ * @public
+ * @deprecated Import from `@backstage/plugin-home-react` instead
+ */
+export type CardExtensionProps = homeReactCardExtensionProps;
+
+/**
+ * @public
+ * @deprecated Import from `@backstage/plugin-home-react` instead
+ */
+export type CardLayout = homeReactCardLayout;
+
+/**
+ * @public
+ * @deprecated Import from `@backstage/plugin-home-react` instead
+ */
+export type CardSettings = homeReactCardSettings;
+
+/**
+ * @public
+ * @deprecated Import from `@backstage/plugin-home-react` instead
+ */
+export type CardConfig = homeReactCardConfig;
+
+/**
+ * @public
+ * @deprecated Import from `@backstage/plugin-home-react` instead
+ */
+export type ComponentParts = homeReactComponentParts;
+
+/**
+ * @public
+ * @deprecated Import from `@backstage/plugin-home-react` instead
+ */
+export type ComponentRenderer = homeReactComponentRenderer;
+
+/**
+ * @public
+ * @deprecated Import from `@backstage/plugin-home-react` instead
+ */
+export type RendererProps = homeReactRendererProps;
+
+/**
+ * @public
+ * @deprecated Import from `@backstage/plugin-home-react` instead
+ */
+export const SettingsModal = homeReactSettingsModal;
diff --git a/plugins/home/src/index.ts b/plugins/home/src/index.ts
index daa781f02c..63407c8531 100644
--- a/plugins/home/src/index.ts
+++ b/plugins/home/src/index.ts
@@ -36,12 +36,4 @@ export {
export * from './components';
export * from './assets';
export * from './homePageComponents';
-export { createCardExtension } from './extensions';
-export type {
- CardExtensionProps,
- ComponentParts,
- ComponentRenderer,
- RendererProps,
- CardLayout,
- CardSettings,
-} from './extensions';
+export * from './deprecated';
diff --git a/plugins/home/src/plugin.ts b/plugins/home/src/plugin.ts
index 339e6dba2b..74a1c11390 100644
--- a/plugins/home/src/plugin.ts
+++ b/plugins/home/src/plugin.ts
@@ -19,7 +19,7 @@ import {
createPlugin,
createRoutableExtension,
} from '@backstage/core-plugin-api';
-import { createCardExtension } from './extensions';
+import { createCardExtension } from '@backstage/plugin-home-react';
import { ToolkitContentProps } from './homePageComponents';
import { rootRouteRef } from './routes';
diff --git a/plugins/ilert/CHANGELOG.md b/plugins/ilert/CHANGELOG.md
index a1fb6e375d..0b1c5b5696 100644
--- a/plugins/ilert/CHANGELOG.md
+++ b/plugins/ilert/CHANGELOG.md
@@ -1,5 +1,17 @@
# @backstage/plugin-ilert
+## 0.2.7
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+
## 0.2.7-next.2
### Patch Changes
diff --git a/plugins/ilert/package.json b/plugins/ilert/package.json
index 0e08159481..396d5f6860 100644
--- a/plugins/ilert/package.json
+++ b/plugins/ilert/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-ilert",
"description": "A Backstage plugin that integrates towards iLert",
- "version": "0.2.7-next.2",
+ "version": "0.2.7",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/jenkins-backend/CHANGELOG.md b/plugins/jenkins-backend/CHANGELOG.md
index 8e4463f46b..6bb9cba867 100644
--- a/plugins/jenkins-backend/CHANGELOG.md
+++ b/plugins/jenkins-backend/CHANGELOG.md
@@ -1,5 +1,26 @@
# @backstage/plugin-jenkins-backend
+## 0.2.0
+
+### Minor Changes
+
+- cf95c5137c9: Updated rebuild to use Jenkins API replay build, which works for Jenkins jobs that have required parameters. Jenkins SDK could not be used for this request because it does not have support for replay.
+
+ Added link to view build in Jenkins CI/CD table action column.
+
+### Patch Changes
+
+- 670a2dd6f4e: Fix handling of slashes in branch names
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/plugin-auth-node@0.2.14
+ - @backstage/catalog-client@1.4.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+ - @backstage/plugin-jenkins-common@0.1.15
+ - @backstage/plugin-permission-common@0.7.5
+
## 0.1.35-next.1
### Patch Changes
diff --git a/plugins/jenkins-backend/package.json b/plugins/jenkins-backend/package.json
index 07624593c3..e9630bfb45 100644
--- a/plugins/jenkins-backend/package.json
+++ b/plugins/jenkins-backend/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-jenkins-backend",
"description": "A Backstage backend plugin that integrates towards Jenkins",
- "version": "0.1.35-next.1",
+ "version": "0.2.0",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -32,6 +32,7 @@
"@backstage/plugin-auth-node": "workspace:^",
"@backstage/plugin-jenkins-common": "workspace:^",
"@backstage/plugin-permission-common": "workspace:^",
+ "@backstage/plugin-permission-node": "workspace:^",
"@types/express": "^4.17.6",
"express": "^4.17.1",
"express-promise-router": "^4.1.0",
diff --git a/plugins/jenkins-backend/src/service/router.ts b/plugins/jenkins-backend/src/service/router.ts
index 484bfa273f..eea067fab6 100644
--- a/plugins/jenkins-backend/src/service/router.ts
+++ b/plugins/jenkins-backend/src/service/router.ts
@@ -28,6 +28,8 @@ import {
import { getBearerTokenFromAuthorizationHeader } from '@backstage/plugin-auth-node';
import { stringifyEntityRef } from '@backstage/catalog-model';
import { stringifyError } from '@backstage/errors';
+import { createPermissionIntegrationRouter } from '@backstage/plugin-permission-node';
+import { jenkinsPermissions } from '@backstage/plugin-jenkins-common';
/** @public */
export interface RouterOptions {
@@ -58,6 +60,11 @@ export async function createRouter(
const router = Router();
router.use(express.json());
+ router.use(
+ createPermissionIntegrationRouter({
+ permissions: jenkinsPermissions,
+ }),
+ );
router.get(
'/v1/entity/:namespace/:kind/:name/projects',
diff --git a/plugins/jenkins-common/api-report.md b/plugins/jenkins-common/api-report.md
index 771161e1cb..4db5a6c938 100644
--- a/plugins/jenkins-common/api-report.md
+++ b/plugins/jenkins-common/api-report.md
@@ -8,5 +8,8 @@ import { ResourcePermission } from '@backstage/plugin-permission-common';
// @public
export const jenkinsExecutePermission: ResourcePermission<'catalog-entity'>;
+// @public
+export const jenkinsPermissions: ResourcePermission<'catalog-entity'>[];
+
// (No @packageDocumentation comment for this package)
```
diff --git a/plugins/jenkins-common/src/permissions.ts b/plugins/jenkins-common/src/permissions.ts
index 311bf993cc..aba79b8493 100644
--- a/plugins/jenkins-common/src/permissions.ts
+++ b/plugins/jenkins-common/src/permissions.ts
@@ -28,3 +28,10 @@ export const jenkinsExecutePermission = createPermission({
},
resourceType: RESOURCE_TYPE_CATALOG_ENTITY,
});
+
+/**
+ * List of all Jenkins permissions
+ *
+ * @public
+ */
+export const jenkinsPermissions = [jenkinsExecutePermission];
diff --git a/plugins/jenkins/CHANGELOG.md b/plugins/jenkins/CHANGELOG.md
index 9d617e1d39..1b289faef2 100644
--- a/plugins/jenkins/CHANGELOG.md
+++ b/plugins/jenkins/CHANGELOG.md
@@ -1,5 +1,24 @@
# @backstage/plugin-jenkins
+## 0.8.0
+
+### Minor Changes
+
+- cf95c5137c9: Updated rebuild to use Jenkins API replay build, which works for Jenkins jobs that have required parameters. Jenkins SDK could not be used for this request because it does not have support for replay.
+
+ Added link to view build in Jenkins CI/CD table action column.
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+ - @backstage/plugin-jenkins-common@0.1.15
+
## 0.7.17-next.2
### Patch Changes
diff --git a/plugins/jenkins/package.json b/plugins/jenkins/package.json
index 6d8d50d26b..1f980215c2 100644
--- a/plugins/jenkins/package.json
+++ b/plugins/jenkins/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-jenkins",
"description": "A Backstage plugin that integrates towards Jenkins",
- "version": "0.7.17-next.2",
+ "version": "0.8.0",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/kafka-backend/CHANGELOG.md b/plugins/kafka-backend/CHANGELOG.md
index 2b788a1bea..3620351d77 100644
--- a/plugins/kafka-backend/CHANGELOG.md
+++ b/plugins/kafka-backend/CHANGELOG.md
@@ -1,5 +1,16 @@
# @backstage/plugin-kafka-backend
+## 0.2.38
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+
## 0.2.38-next.1
### Patch Changes
diff --git a/plugins/kafka-backend/package.json b/plugins/kafka-backend/package.json
index 7eb51bfe72..584dcfe8a2 100644
--- a/plugins/kafka-backend/package.json
+++ b/plugins/kafka-backend/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-kafka-backend",
"description": "A Backstage backend plugin that integrates towards Kafka",
- "version": "0.2.38-next.1",
+ "version": "0.2.38",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/kafka/CHANGELOG.md b/plugins/kafka/CHANGELOG.md
index 56e8a42053..fd41b779a6 100644
--- a/plugins/kafka/CHANGELOG.md
+++ b/plugins/kafka/CHANGELOG.md
@@ -1,5 +1,17 @@
# @backstage/plugin-kafka
+## 0.3.18
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/core-plugin-api@1.5.1
+
## 0.3.18-next.2
### Patch Changes
diff --git a/plugins/kafka/package.json b/plugins/kafka/package.json
index 4459b75b18..0baee01c27 100644
--- a/plugins/kafka/package.json
+++ b/plugins/kafka/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-kafka",
"description": "A Backstage plugin that integrates towards Kafka",
- "version": "0.3.18-next.2",
+ "version": "0.3.18",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/kubernetes-backend/CHANGELOG.md b/plugins/kubernetes-backend/CHANGELOG.md
index d7ac1585f8..3ede951ab9 100644
--- a/plugins/kubernetes-backend/CHANGELOG.md
+++ b/plugins/kubernetes-backend/CHANGELOG.md
@@ -1,5 +1,38 @@
# @backstage/plugin-kubernetes-backend
+## 0.11.0
+
+### Minor Changes
+
+- f4114f02d49: Allow fetching pod metrics limited by a `labelSelector`.
+
+ This is used by the Kubernetes tab on a components' page and leads to much smaller responses being received from Kubernetes, especially with larger Kubernetes clusters.
+
+- 890988341e9: Update `aws-sdk` client from v2 to v3.
+
+ **BREAKING**: The `AwsIamKubernetesAuthTranslator` class no longer exposes the following methods `awsGetCredentials`, `getBearerToken`, `getCredentials` and `validCredentials`. There is no replacement for these methods.
+
+### Patch Changes
+
+- 05f1d74539d: Kubernetes clusters now support `authProvider: aks`. When configured this way,
+ the `retrieveObjectsByServiceId` action will use the `auth.aks` value in the
+ request body as a bearer token to authenticate with Kubernetes.
+- 3659c71c5d9: Standardize `@aws-sdk` v3 versions
+- a341129b754: Fixed a bug in the Kubernetes proxy endpoint where requests to clusters configured with client-side auth providers would always fail with a 500 status.
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/integration-aws-node@0.1.3
+ - @backstage/plugin-permission-node@0.7.8
+ - @backstage/plugin-kubernetes-common@0.6.3
+ - @backstage/plugin-auth-node@0.2.14
+ - @backstage/plugin-catalog-node@1.3.6
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/catalog-client@1.4.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+ - @backstage/plugin-permission-common@0.7.5
+
## 0.11.0-next.2
### Patch Changes
diff --git a/plugins/kubernetes-backend/package.json b/plugins/kubernetes-backend/package.json
index a45141b47d..7369e54041 100644
--- a/plugins/kubernetes-backend/package.json
+++ b/plugins/kubernetes-backend/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-kubernetes-backend",
"description": "A Backstage backend plugin that integrates towards Kubernetes",
- "version": "0.11.0-next.2",
+ "version": "0.11.0",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/kubernetes-common/CHANGELOG.md b/plugins/kubernetes-common/CHANGELOG.md
index 9c8849c668..dd96cecbcf 100644
--- a/plugins/kubernetes-common/CHANGELOG.md
+++ b/plugins/kubernetes-common/CHANGELOG.md
@@ -1,5 +1,14 @@
# @backstage/plugin-kubernetes-common
+## 0.6.3
+
+### Patch Changes
+
+- 05f1d74539d: AKS access tokens can now be sent over the wire to the Kubernetes backend.
+- Updated dependencies
+ - @backstage/catalog-model@1.3.0
+ - @backstage/plugin-permission-common@0.7.5
+
## 0.6.3-next.0
### Patch Changes
diff --git a/plugins/kubernetes-common/package.json b/plugins/kubernetes-common/package.json
index 80911bac00..b3dff229d4 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.6.3-next.0",
+ "version": "0.6.3",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/kubernetes/CHANGELOG.md b/plugins/kubernetes/CHANGELOG.md
index 0842800552..0f324ef8f0 100644
--- a/plugins/kubernetes/CHANGELOG.md
+++ b/plugins/kubernetes/CHANGELOG.md
@@ -1,5 +1,55 @@
# @backstage/plugin-kubernetes
+## 0.9.0
+
+### Minor Changes
+
+- 280ec10c18e: Added Pod logs components for Kubernetes plugin
+
+ **BREAKING**: `kubernetesProxyApi` for custom plugins built with components from the Kubernetes plugin apis, `kubernetesProxyApi` should be added to the plugin's API list.
+
+ ```
+ ...
+ export const kubernetesPlugin = createPlugin({
+ id: 'kubernetes',
+ apis: [
+ ...
+ createApiFactory({
+ api: kubernetesProxyApiRef,
+ deps: {
+ kubernetesApi: kubernetesApiRef,
+ },
+ factory: ({ kubernetesApi }) =>
+ new KubernetesProxyClient({
+ kubernetesApi,
+ }),
+ }),
+ ```
+
+ **BREAKING**: `KubernetesDrawer` is now called `KubernetesStructuredMetadataTableDrawer` so that we can do more than just show `StructuredMetadataTable`
+
+ `import { KubernetesDrawer } from "@backstage/plugin-kubernetes"`
+
+ should now be:
+
+ `import { KubernetesStructuredMetadataTableDrawer } from "@backstage/plugin-kubernetes"`
+
+### Patch Changes
+
+- c7bad1005ba: The Kubernetes plugin now requests AKS access tokens from Azure when retrieving
+ objects from clusters configured with `authProvider: aks` and sets `auth.aks` in
+ its request bodies appropriately.
+- a160e02c3d7: Omit managed fields in the Kubernetes resource YAML display.
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/plugin-kubernetes-common@0.6.3
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+
## 0.9.0-next.2
### Patch Changes
diff --git a/plugins/kubernetes/api-report.md b/plugins/kubernetes/api-report.md
index 5529b7910f..823b9c89a2 100644
--- a/plugins/kubernetes/api-report.md
+++ b/plugins/kubernetes/api-report.md
@@ -22,6 +22,7 @@ import { OAuthApi } from '@backstage/core-plugin-api';
import { ObjectsByEntityResponse } from '@backstage/plugin-kubernetes-common';
import { OpenIdConnectApi } from '@backstage/core-plugin-api';
import { Pod } from 'kubernetes-models/v1';
+import { Pod as Pod_2 } from 'kubernetes-models/v1/Pod';
import { default as React_2 } from 'react';
import { RouteRef } from '@backstage/core-plugin-api';
import { V1ConfigMap } from '@kubernetes/client-node';
diff --git a/plugins/kubernetes/package.json b/plugins/kubernetes/package.json
index a581c1a82b..d0d32814a1 100644
--- a/plugins/kubernetes/package.json
+++ b/plugins/kubernetes/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-kubernetes",
"description": "A Backstage plugin that integrates towards Kubernetes",
- "version": "0.9.0-next.2",
+ "version": "0.9.0",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -42,6 +42,7 @@
"@backstage/plugin-kubernetes-common": "workspace:^",
"@backstage/theme": "workspace:^",
"@kubernetes-models/apimachinery": "^1.1.0",
+ "@kubernetes-models/base": "^4.0.1",
"@kubernetes/client-node": "0.18.1",
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
diff --git a/plugins/kubernetes/src/components/KubernetesContent.tsx b/plugins/kubernetes/src/components/KubernetesContent.tsx
index 63aa52f1ba..a465422095 100644
--- a/plugins/kubernetes/src/components/KubernetesContent.tsx
+++ b/plugins/kubernetes/src/components/KubernetesContent.tsx
@@ -24,6 +24,7 @@ import { Cluster } from './Cluster';
import EmptyStateImage from '../assets/emptystate.svg';
import { useKubernetesObjects } from '../hooks';
import { Content, Page, Progress } from '@backstage/core-components';
+import { DetectedErrorsContext } from '../hooks/useMatchingErrors';
type KubernetesContentProps = {
entity: Entity;
@@ -49,88 +50,92 @@ export const KubernetesContent = ({
: new Map();
return (
-
-
- {kubernetesObjects === undefined && error === undefined && }
+
+
+
+ {kubernetesObjects === undefined && error === undefined && (
+
+ )}
- {/* errors retrieved from the kubernetes clusters */}
- {clustersWithErrors.length > 0 && (
-
-
-
+ {/* errors retrieved from the kubernetes clusters */}
+ {clustersWithErrors.length > 0 && (
+
+
+
+
-
- )}
+ )}
- {/* other errors */}
- {error !== undefined && (
-
-
-
+ {/* other errors */}
+ {error !== undefined && (
+
+
+
+
-
- )}
+ )}
- {kubernetesObjects && (
-
-
-
-
-
- Your Clusters
-
-
- {kubernetesObjects?.items.length <= 0 && (
-
-
-
- No resources on any known clusters for{' '}
- {entity.metadata.name}
-
-
-
-
-
-
- )}
- {kubernetesObjects?.items.length > 0 &&
- kubernetesObjects?.items.map((item, i) => {
- const podsWithErrors = new Set(
- detectedErrors
- .get(item.cluster.name)
- ?.filter(de => de.sourceRef.kind === 'Pod')
- .map(de => de.sourceRef.name),
- );
-
- return (
-
-
+
+
+
+
+ Your Clusters
+
+
+ {kubernetesObjects?.items.length <= 0 && (
+
+
+
+ No resources on any known clusters for{' '}
+ {entity.metadata.name}
+
+
+
+
- );
- })}
+
+ )}
+ {kubernetesObjects?.items.length > 0 &&
+ kubernetesObjects?.items.map((item, i) => {
+ const podsWithErrors = new Set(
+ detectedErrors
+ .get(item.cluster.name)
+ ?.filter(de => de.sourceRef.kind === 'Pod')
+ .map(de => de.sourceRef.name),
+ );
+
+ return (
+
+
+
+ );
+ })}
+
-
- )}
-
-
+ )}
+
+
+
);
};
diff --git a/plugins/kubernetes/src/components/Pods/ErrorList/ErrorList.test.tsx b/plugins/kubernetes/src/components/Pods/ErrorList/ErrorList.test.tsx
new file mode 100644
index 0000000000..f28580b509
--- /dev/null
+++ b/plugins/kubernetes/src/components/Pods/ErrorList/ErrorList.test.tsx
@@ -0,0 +1,66 @@
+/*
+ * Copyright 2023 The Backstage Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import React from 'react';
+
+import { render } from '@testing-library/react';
+
+import { ErrorList } from './ErrorList';
+import { Pod } from 'kubernetes-models/v1/Pod';
+
+describe('ErrorList', () => {
+ it('error highlight should render', () => {
+ const { getByText } = render(
+ ,
+ );
+ expect(getByText('some-pod')).toBeInTheDocument();
+ expect(getByText('some error message')).toBeInTheDocument();
+ });
+});
diff --git a/plugins/kubernetes/src/components/Pods/ErrorList/ErrorList.tsx b/plugins/kubernetes/src/components/Pods/ErrorList/ErrorList.tsx
new file mode 100644
index 0000000000..b7b3418889
--- /dev/null
+++ b/plugins/kubernetes/src/components/Pods/ErrorList/ErrorList.tsx
@@ -0,0 +1,74 @@
+/*
+ * Copyright 2023 The Backstage Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import React from 'react';
+
+import {
+ List,
+ ListItem,
+ ListItemText,
+ Divider,
+ createStyles,
+ makeStyles,
+ Theme,
+ Paper,
+} from '@material-ui/core';
+import { PodAndErrors } from '../types';
+
+const useStyles = makeStyles((_theme: Theme) =>
+ createStyles({
+ root: {
+ overflow: 'auto',
+ },
+ list: {
+ width: '100%',
+ },
+ }),
+);
+
+interface ErrorListProps {
+ podAndErrors: PodAndErrors[];
+}
+
+export const ErrorList = ({ podAndErrors }: ErrorListProps) => {
+ const classes = useStyles();
+ return (
+
+
+ {podAndErrors
+ .filter(pae => pae.errors.length > 0)
+ .flatMap(onlyPodWithErrors => {
+ return onlyPodWithErrors.errors.map((error, i) => {
+ return (
+
+ {i > 0 && }
+
+
+
+
+ );
+ });
+ })}
+
+
+ );
+};
diff --git a/plugins/kubernetes/src/components/Pods/ErrorList/index.ts b/plugins/kubernetes/src/components/Pods/ErrorList/index.ts
new file mode 100644
index 0000000000..f40c0583c9
--- /dev/null
+++ b/plugins/kubernetes/src/components/Pods/ErrorList/index.ts
@@ -0,0 +1,16 @@
+/*
+ * Copyright 2023 The Backstage Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+export * from './ErrorList';
diff --git a/plugins/kubernetes/src/components/Pods/PodDrawer/PodDrawer.test.tsx b/plugins/kubernetes/src/components/Pods/PodDrawer/PodDrawer.test.tsx
index fa4f9f7168..64fd38c8d7 100644
--- a/plugins/kubernetes/src/components/Pods/PodDrawer/PodDrawer.test.tsx
+++ b/plugins/kubernetes/src/components/Pods/PodDrawer/PodDrawer.test.tsx
@@ -33,7 +33,7 @@ describe('PodDrawer', () => {
clusterName: 'some-cluster-1',
pod: {
metadata: {
- name: 'ok-pod',
+ name: 'some-pod',
},
spec: {
containers: [
@@ -51,17 +51,40 @@ describe('PodDrawer', () => {
],
},
},
- errors: [],
+ errors: [
+ {
+ type: 'some-error',
+ severity: 10,
+ message: 'some error message',
+ occuranceCount: 1,
+ sourceRef: {
+ name: 'some-pod',
+ namespace: 'some-namespace',
+ kind: 'Pod',
+ apiGroup: 'v1',
+ },
+ proposedFix: [
+ {
+ type: 'logs',
+ container: 'some-container',
+ errorType: 'some error type',
+ rootCauseExplanation: 'some root cause',
+ possibleFixes: ['fix1', 'fix2'],
+ },
+ ],
+ },
+ ],
},
} as any)}
/>,
),
);
- expect(getAllByText('ok-pod')).toHaveLength(2);
+ expect(getAllByText('some-pod')).toHaveLength(3);
expect(getByText('Pod (127.0.0.1)')).toBeInTheDocument();
expect(getByText('YAML')).toBeInTheDocument();
expect(getByText('Containers')).toBeInTheDocument();
expect(getByText('some-container')).toBeInTheDocument();
+ expect(getByText('some error message')).toBeInTheDocument();
});
});
diff --git a/plugins/kubernetes/src/components/Pods/PodDrawer/PodDrawer.tsx b/plugins/kubernetes/src/components/Pods/PodDrawer/PodDrawer.tsx
index a78f08683c..5e49410dd4 100644
--- a/plugins/kubernetes/src/components/Pods/PodDrawer/PodDrawer.tsx
+++ b/plugins/kubernetes/src/components/Pods/PodDrawer/PodDrawer.tsx
@@ -32,6 +32,7 @@ import { ContainerCard } from './ContainerCard';
import { PodAndErrors } from '../types';
import { KubernetesDrawer } from '../../KubernetesDrawer';
import { PendingPodContent } from './PendingPodContent';
+import { ErrorList } from '../ErrorList';
const useDrawerContentStyles = makeStyles((_theme: Theme) =>
createStyles({
@@ -116,6 +117,16 @@ export const PodDrawer = ({ podAndErrors, open }: PodDrawerProps) => {
)}
+ {podAndErrors.errors.length > 0 && (
+
+ Errors:
+
+ )}
+ {podAndErrors.errors.length > 0 && (
+
+
+
+ )}
)}
diff --git a/plugins/kubernetes/src/components/Pods/PodLogs/usePodLogs.ts b/plugins/kubernetes/src/components/Pods/PodLogs/usePodLogs.ts
index 9f3af5cb3b..446969f509 100644
--- a/plugins/kubernetes/src/components/Pods/PodLogs/usePodLogs.ts
+++ b/plugins/kubernetes/src/components/Pods/PodLogs/usePodLogs.ts
@@ -13,11 +13,11 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-import { kubernetesProxyApiRef } from '@backstage/plugin-kubernetes';
import useAsync from 'react-use/lib/useAsync';
import { ContainerScope } from './types';
import { useApi } from '@backstage/core-plugin-api';
+import { kubernetesProxyApiRef } from '../../../api';
interface PodLogsOptions {
podScope: ContainerScope;
diff --git a/plugins/kubernetes/src/components/Pods/PodsTable.tsx b/plugins/kubernetes/src/components/Pods/PodsTable.tsx
index 4b7b4b93ed..620e91ce72 100644
--- a/plugins/kubernetes/src/components/Pods/PodsTable.tsx
+++ b/plugins/kubernetes/src/components/Pods/PodsTable.tsx
@@ -15,7 +15,6 @@
*/
import React, { useContext } from 'react';
-import { V1Pod } from '@kubernetes/client-node';
import { PodDrawer } from './PodDrawer';
import {
containersReady,
@@ -27,18 +26,21 @@ import {
import { Table, TableColumn } from '@backstage/core-components';
import { PodNamesWithMetricsContext } from '../../hooks/PodNamesWithMetrics';
import { ClusterContext } from '../../hooks/Cluster';
+import { useMatchingErrors } from '../../hooks/useMatchingErrors';
+import { Pod } from 'kubernetes-models/v1/Pod';
+import { V1Pod } from '@kubernetes/client-node';
export const READY_COLUMNS: PodColumns = 'READY';
export const RESOURCE_COLUMNS: PodColumns = 'RESOURCE';
export type PodColumns = 'READY' | 'RESOURCE';
type PodsTablesProps = {
- pods: V1Pod[];
+ pods: Pod | V1Pod[];
extraColumns?: PodColumns[];
children?: React.ReactNode;
};
-const READY: TableColumn
[] = [
+const READY: TableColumn[] = [
{
title: 'containers ready',
align: 'center',
@@ -54,26 +56,37 @@ const READY: TableColumn[] = [
},
];
+const PodDrawerTrigger = ({ pod }: { pod: Pod }) => {
+ const cluster = useContext(ClusterContext);
+ const errors = useMatchingErrors({
+ kind: 'Pod',
+ apiVersion: 'v1',
+ metadata: pod.metadata,
+ });
+ return (
+
+ );
+};
+
export const PodsTable = ({ pods, extraColumns = [] }: PodsTablesProps) => {
const podNamesWithMetrics = useContext(PodNamesWithMetricsContext);
- const cluster = useContext(ClusterContext);
- const defaultColumns: TableColumn[] = [
+ const defaultColumns: TableColumn[] = [
{
title: 'name',
highlight: true,
- render: (pod: V1Pod) => (
-
- ),
+ render: (pod: Pod) => {
+ return ;
+ },
},
{
title: 'phase',
- render: (pod: V1Pod) => pod.status?.phase ?? 'unknown',
+ render: (pod: Pod) => pod.status?.phase ?? 'unknown',
width: 'auto',
},
{
@@ -81,16 +94,16 @@ export const PodsTable = ({ pods, extraColumns = [] }: PodsTablesProps) => {
render: containerStatuses,
},
];
- const columns: TableColumn[] = [...defaultColumns];
+ const columns: TableColumn[] = [...defaultColumns];
if (extraColumns.includes(READY_COLUMNS)) {
columns.push(...READY);
}
if (extraColumns.includes(RESOURCE_COLUMNS)) {
- const resourceColumns: TableColumn[] = [
+ const resourceColumns: TableColumn[] = [
{
title: 'CPU usage %',
- render: (pod: V1Pod) => {
+ render: (pod: Pod) => {
const metrics = podNamesWithMetrics.get(pod.metadata?.name ?? '');
if (!metrics) {
@@ -103,7 +116,7 @@ export const PodsTable = ({ pods, extraColumns = [] }: PodsTablesProps) => {
},
{
title: 'Memory usage %',
- render: (pod: V1Pod) => {
+ render: (pod: Pod) => {
const metrics = podNamesWithMetrics.get(pod.metadata?.name ?? '');
if (!metrics) {
@@ -123,13 +136,11 @@ export const PodsTable = ({ pods, extraColumns = [] }: PodsTablesProps) => {
width: '100%',
};
- const usePods = pods.map(p => ({ ...p, id: p.metadata?.uid }));
-
return (
diff --git a/plugins/kubernetes/src/components/Pods/types.ts b/plugins/kubernetes/src/components/Pods/types.ts
index 195f0b9135..ac707c2a57 100644
--- a/plugins/kubernetes/src/components/Pods/types.ts
+++ b/plugins/kubernetes/src/components/Pods/types.ts
@@ -14,9 +14,10 @@
* limitations under the License.
*/
import { Pod } from 'kubernetes-models/v1';
+import { DetectedError } from '../../error-detection';
export interface PodAndErrors {
clusterName: string;
pod: Pod;
- errors: any[];
+ errors: DetectedError[];
}
diff --git a/plugins/kubernetes/src/hooks/useMatchingErrors.test.tsx b/plugins/kubernetes/src/hooks/useMatchingErrors.test.tsx
new file mode 100644
index 0000000000..b5fe588e86
--- /dev/null
+++ b/plugins/kubernetes/src/hooks/useMatchingErrors.test.tsx
@@ -0,0 +1,85 @@
+/*
+ * Copyright 2023 The Backstage Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import React from 'react';
+import { renderHook } from '@testing-library/react-hooks';
+import { DetectedErrorsContext, useMatchingErrors } from './useMatchingErrors';
+import { DetectedError } from '../error-detection';
+import { ResourceRef } from '../error-detection/types';
+
+const genericErrorWithRef = (resourceRef: ResourceRef): DetectedError => {
+ return {
+ type: 'some-error',
+ severity: 10,
+ message: 'some error message',
+ occuranceCount: 1,
+ sourceRef: resourceRef,
+ proposedFix: [
+ {
+ type: 'logs',
+ container: 'some-container',
+ errorType: 'some error type',
+ rootCauseExplanation: 'some root cause',
+ possibleFixes: ['fix1', 'fix2'],
+ },
+ ],
+ };
+};
+
+describe('useMatchingErrors', () => {
+ it('should filter non-matching resources', () => {
+ const wrapper = ({ children }: { children: React.ReactNode }) => (
+
+ {children}
+
+ );
+
+ const { result } = renderHook(
+ () =>
+ useMatchingErrors({
+ metadata: {
+ name: 'some-name',
+ namespace: 'some-namespace',
+ },
+ kind: 'some-kind',
+ apiVersion: 'some-apiGroup',
+ }),
+ { wrapper },
+ );
+ expect(result.current).toStrictEqual([
+ genericErrorWithRef({
+ name: 'some-name',
+ namespace: 'some-namespace',
+ kind: 'some-kind',
+ apiGroup: 'some-apiGroup',
+ }),
+ ]);
+ });
+});
diff --git a/plugins/kubernetes/src/hooks/useMatchingErrors.ts b/plugins/kubernetes/src/hooks/useMatchingErrors.ts
new file mode 100644
index 0000000000..623a32bdf8
--- /dev/null
+++ b/plugins/kubernetes/src/hooks/useMatchingErrors.ts
@@ -0,0 +1,46 @@
+/*
+ * Copyright 2023 The Backstage Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import React, { useContext } from 'react';
+import { DetectedError, ResourceRef } from '../error-detection/types';
+import { TypeMeta } from '@kubernetes-models/base';
+import { IIoK8sApimachineryPkgApisMetaV1ObjectMeta as V1ObjectMeta } from '@kubernetes-models/apimachinery/apis/meta/v1/ObjectMeta';
+
+export const DetectedErrorsContext = React.createContext([]);
+
+type Matcher = {
+ metadata?: V1ObjectMeta;
+} & TypeMeta;
+
+export const useMatchingErrors = (matcher: Matcher): DetectedError[] => {
+ const targetRef: ResourceRef = {
+ name: matcher.metadata?.name ?? '',
+ namespace: matcher.metadata?.namespace ?? '',
+ kind: matcher.kind,
+ apiGroup: matcher.apiVersion,
+ };
+
+ const errors = useContext(DetectedErrorsContext);
+
+ return errors.filter(e => {
+ const r = e.sourceRef;
+ return (
+ targetRef.apiGroup === r.apiGroup &&
+ targetRef.kind === r.kind &&
+ targetRef.name === r.name &&
+ targetRef.namespace === r.namespace
+ );
+ });
+};
diff --git a/plugins/kubernetes/src/utils/pod.tsx b/plugins/kubernetes/src/utils/pod.tsx
index 2f657e7658..ce556fbc8d 100644
--- a/plugins/kubernetes/src/utils/pod.tsx
+++ b/plugins/kubernetes/src/utils/pod.tsx
@@ -28,6 +28,7 @@ import {
SubvalueCell,
} from '@backstage/core-components';
import { ClientPodStatus } from '@backstage/plugin-kubernetes-common';
+import { Pod } from 'kubernetes-models/v1/Pod';
export const imageChips = (pod: V1Pod): ReactNode => {
const containerStatuses = pod.status?.containerStatuses ?? [];
@@ -38,19 +39,19 @@ export const imageChips = (pod: V1Pod): ReactNode => {
return {images}
;
};
-export const containersReady = (pod: V1Pod): string => {
+export const containersReady = (pod: Pod): string => {
const containerStatuses = pod.status?.containerStatuses ?? [];
const containersReadyItem = containerStatuses.filter(cs => cs.ready).length;
return `${containersReadyItem}/${containerStatuses.length}`;
};
-export const totalRestarts = (pod: V1Pod): number => {
+export const totalRestarts = (pod: Pod): number => {
const containerStatuses = pod.status?.containerStatuses ?? [];
return containerStatuses?.reduce((a, b) => a + b.restartCount, 0);
};
-export const containerStatuses = (pod: V1Pod): ReactNode => {
+export const containerStatuses = (pod: Pod): ReactNode => {
const containerStatusesItem = pod.status?.containerStatuses ?? [];
const errors = containerStatusesItem.reduce((accum, next) => {
if (next.state === undefined) {
diff --git a/plugins/lighthouse-backend/CHANGELOG.md b/plugins/lighthouse-backend/CHANGELOG.md
index 81da2807af..5b0d9d8ecc 100644
--- a/plugins/lighthouse-backend/CHANGELOG.md
+++ b/plugins/lighthouse-backend/CHANGELOG.md
@@ -1,5 +1,18 @@
# @backstage/plugin-lighthouse-backend
+## 0.2.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/backend-tasks@0.5.2
+ - @backstage/catalog-client@1.4.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/types@1.0.2
+ - @backstage/plugin-lighthouse-common@0.1.1
+
## 0.2.1-next.1
### Patch Changes
diff --git a/plugins/lighthouse-backend/package.json b/plugins/lighthouse-backend/package.json
index 351ee3fb7e..eb48a5673d 100644
--- a/plugins/lighthouse-backend/package.json
+++ b/plugins/lighthouse-backend/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-lighthouse-backend",
"description": "Backend functionalities for lighthouse",
- "version": "0.2.1-next.1",
+ "version": "0.2.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/lighthouse/CHANGELOG.md b/plugins/lighthouse/CHANGELOG.md
index a90222b49a..b8d70898fd 100644
--- a/plugins/lighthouse/CHANGELOG.md
+++ b/plugins/lighthouse/CHANGELOG.md
@@ -1,5 +1,18 @@
# @backstage/plugin-lighthouse
+## 0.4.3
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/plugin-lighthouse-common@0.1.1
+
## 0.4.3-next.2
### Patch Changes
diff --git a/plugins/lighthouse/package.json b/plugins/lighthouse/package.json
index 7e66e6fdc6..377614ca97 100644
--- a/plugins/lighthouse/package.json
+++ b/plugins/lighthouse/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-lighthouse",
"description": "A Backstage plugin that integrates towards Lighthouse",
- "version": "0.4.3-next.2",
+ "version": "0.4.3",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/linguist-backend/CHANGELOG.md b/plugins/linguist-backend/CHANGELOG.md
index 5096043450..a0ab8c5990 100644
--- a/plugins/linguist-backend/CHANGELOG.md
+++ b/plugins/linguist-backend/CHANGELOG.md
@@ -1,5 +1,20 @@
# @backstage/plugin-linguist-backend
+## 0.2.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/backend-tasks@0.5.2
+ - @backstage/plugin-auth-node@0.2.14
+ - @backstage/catalog-client@1.4.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+ - @backstage/types@1.0.2
+ - @backstage/plugin-linguist-common@0.1.0
+
## 0.2.2-next.1
### Patch Changes
diff --git a/plugins/linguist-backend/README.md b/plugins/linguist-backend/README.md
index 46c067fb5a..6cfd3800b6 100644
--- a/plugins/linguist-backend/README.md
+++ b/plugins/linguist-backend/README.md
@@ -14,8 +14,7 @@ Here's how to get the backend up and running:
```sh
# From the Backstage root directory
- cd packages/backend
- yarn add @backstage/plugin-linguist-backend
+ yarn add --cwd packages/backend @backstage/plugin-linguist-backend
```
2. Then we will create a new file named `packages/backend/src/plugins/linguist.ts`, and add the
@@ -57,7 +56,11 @@ Here's how to get the backend up and running:
4. Now run `yarn start-backend` from the repo root
5. Finally open `http://localhost:7007/api/linguist/health` in a browser and it should return `{"status":"ok"}`
-## Batch Size
+## Plugin Option
+
+The Linguist backend has various plugin options that you can provide to the `createRouter` function in your `packages/backend/src/plugins/linguist.ts` file that will allow you to configure various aspects of how it works. The following sections go into the details of these options
+
+### Batch Size
The Linguist backend is setup to process entities by acting as a queue where it will pull down all the applicable entities from the Catalog and add them to it's database (saving just the `entityRef`). Then it will grab the `n` oldest entities that have not been processed to determine their languages and process them. To control the batch size simply provide that to the `createRouter` function in your `packages/backend/src/plugins/linguist.ts` like this:
@@ -67,7 +70,7 @@ return createRouter({ schedule: schedule, batchSize: 40 }, { ...env });
**Note:** The default batch size is 20
-## Kind
+### Kind
The default setup only processes entities of kind `['API', 'Component', 'Template']`. To control the `kind` that are processed provide that to the `createRouter` function in your `packages/backend/src/plugins/linguist.ts` like this:
@@ -75,7 +78,7 @@ The default setup only processes entities of kind `['API', 'Component', 'Templat
return createRouter({ schedule: schedule, kind: ['Component'] }, { ...env });
```
-## Refresh
+### Refresh
The default setup will only generate the language breakdown for entities with the linguist annotation that have not been generated yet. If you want this process to also refresh the data you can do so by adding the `age` (as a `HumanDuration`) in your `packages/backend/src/plugins/linguist.ts` when you call `createRouter`:
@@ -85,7 +88,7 @@ return createRouter({ schedule: schedule, age: { days: 30 } }, { ...env });
With the `age` setup like this if the language breakdown is older than 15 days it will get regenerated. It's recommended that if you choose to use this configuration to set it to a large value - 30, 90, or 180 - as this data generally does not change drastically.
-## Linguist JS options
+### Linguist JS options
The default setup will use the default [linguist-js](https://www.npmjs.com/package/linguist-js) options, a full list of the available options can be found [here](https://www.npmjs.com/package/linguist-js#API).
@@ -96,7 +99,7 @@ return createRouter(
);
```
-## Use Source Location
+### Use Source Location
You may wish to use the `backstage.io/source-location` annotation over using the `backstage.io/linguist` as you may not be able to quickly add that annotation to your Entities. To do this you'll just need to set the `useSourceLocation` boolean to `true` in your `packages/backend/src/plugins/linguist.ts` when you call `createRouter`:
diff --git a/plugins/linguist-backend/api-report.md b/plugins/linguist-backend/api-report.md
index a47f123ac4..294d569ff7 100644
--- a/plugins/linguist-backend/api-report.md
+++ b/plugins/linguist-backend/api-report.md
@@ -3,16 +3,13 @@
> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
```ts
-import { EntityResults } from '@backstage/plugin-linguist-common';
import express from 'express';
import { HumanDuration } from '@backstage/types';
-import { Knex } from 'knex';
import { Languages } from '@backstage/plugin-linguist-common';
import { Logger } from 'winston';
import { PluginDatabaseManager } from '@backstage/backend-common';
import { PluginEndpointDiscovery } from '@backstage/backend-common';
import { PluginTaskScheduler } from '@backstage/backend-tasks';
-import { ProcessedEntity } from '@backstage/plugin-linguist-common';
import { TaskScheduleDefinition } from '@backstage/backend-tasks';
import { TokenManager } from '@backstage/backend-common';
import { UrlReader } from '@backstage/backend-common';
@@ -24,56 +21,13 @@ export function createRouter(
): Promise;
// @public (undocumented)
-export class LinguistBackendApi {
- constructor(
- logger: Logger,
- store: LinguistBackendStore,
- urlReader: UrlReader,
- discovery: PluginEndpointDiscovery,
- tokenManager: TokenManager,
- age?: HumanDuration,
- batchSize?: number,
- useSourceLocation?: boolean,
- kind?: string[],
- linguistJsOptions?: Record,
- );
+export interface LinguistBackendApi {
// (undocumented)
getEntityLanguages(entityRef: string): Promise;
// (undocumented)
processEntities(): Promise;
}
-// @public (undocumented)
-export class LinguistBackendDatabase implements LinguistBackendStore {
- constructor(db: Knex);
- // (undocumented)
- static create(knex: Knex): Promise;
- // (undocumented)
- getEntityResults(entityRef: string): Promise;
- // (undocumented)
- getProcessedEntities(): Promise;
- // (undocumented)
- getUnprocessedEntities(): Promise;
- // (undocumented)
- insertEntityResults(entityLanguages: EntityResults): Promise;
- // (undocumented)
- insertNewEntity(entityRef: string): Promise;
-}
-
-// @public (undocumented)
-export interface LinguistBackendStore {
- // (undocumented)
- getEntityResults(entityRef: string): Promise;
- // (undocumented)
- getProcessedEntities(): Promise;
- // (undocumented)
- getUnprocessedEntities(): Promise;
- // (undocumented)
- insertEntityResults(entityLanguages: EntityResults): Promise;
- // (undocumented)
- insertNewEntity(entityRef: string): Promise;
-}
-
// @public (undocumented)
export interface PluginOptions {
// (undocumented)
diff --git a/plugins/linguist-backend/migrations/20230216_remove_processed_date_default.js b/plugins/linguist-backend/migrations/20230216_remove_processed_date_default.js
new file mode 100644
index 0000000000..5aaf02216e
--- /dev/null
+++ b/plugins/linguist-backend/migrations/20230216_remove_processed_date_default.js
@@ -0,0 +1,39 @@
+/*
+ * Copyright 2023 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.
+ */
+
+/**
+ * @param {import('knex').Knex} knex
+ */
+exports.up = async function up(knex) {
+ // Sqlite does not support this raw SQL
+ if (!knex.client.config.client.includes('sqlite3')) {
+ await knex.raw(
+ 'ALTER TABLE entity_result ALTER COLUMN processed_date DROP DEFAULT;',
+ );
+ }
+};
+
+/**
+ * @param {import('knex').Knex} knex
+ */
+exports.down = async function down(knex) {
+ // Sqlite does not support this raw SQL
+ if (!knex.client.config.client.includes('sqlite3')) {
+ await knex.raw(
+ 'ALTER TABLE entity_result ALTER COLUMN processed_date SET DEFAULT now();',
+ );
+ }
+};
diff --git a/plugins/linguist-backend/package.json b/plugins/linguist-backend/package.json
index f3feacb740..7b32126f1e 100644
--- a/plugins/linguist-backend/package.json
+++ b/plugins/linguist-backend/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-linguist-backend",
- "version": "0.2.2-next.1",
+ "version": "0.2.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -44,6 +44,7 @@
"yn": "^4.0.0"
},
"devDependencies": {
+ "@backstage/backend-test-utils": "workspace:^",
"@backstage/cli": "workspace:^",
"@types/supertest": "^2.0.8",
"msw": "^1.0.0",
diff --git a/plugins/linguist-backend/src/api/LinguistBackendClient.test.ts b/plugins/linguist-backend/src/api/LinguistBackendClient.test.ts
new file mode 100644
index 0000000000..1b0a4f4673
--- /dev/null
+++ b/plugins/linguist-backend/src/api/LinguistBackendClient.test.ts
@@ -0,0 +1,416 @@
+/*
+ * Copyright 2023 The Backstage Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import {
+ getVoidLogger,
+ ReadTreeResponse,
+ ServerTokenManager,
+ UrlReader,
+} from '@backstage/backend-common';
+import { CatalogApi, GetEntitiesResponse } from '@backstage/catalog-client';
+import { Results } from 'linguist-js/dist/types';
+import { DateTime } from 'luxon';
+import { LinguistBackendStore } from '../db';
+import { kindOrDefault, LinguistBackendClient } from './LinguistBackendClient';
+import fs from 'fs-extra';
+import { LINGUIST_ANNOTATION } from '@backstage/plugin-linguist-common';
+
+const linguistResultMock = Promise.resolve({
+ files: {
+ count: 4,
+ bytes: 6010,
+ results: {
+ '/src/index.ts': 'TypeScript',
+ '/src/cli.js': 'JavaScript',
+ '/readme.md': 'Markdown',
+ '/no-lang': null,
+ },
+ },
+ languages: {
+ count: 3,
+ bytes: 6000,
+ results: {
+ JavaScript: { type: 'programming', bytes: 1000, color: '#f1e05a' },
+ TypeScript: { type: 'programming', bytes: 2000, color: '#2b7489' },
+ Markdown: { type: 'prose', bytes: 3000, color: '#083fa1' },
+ },
+ },
+ unknown: {
+ count: 1,
+ bytes: 10,
+ filenames: {
+ 'no-lang': 10,
+ },
+ extensions: {},
+ },
+} as Results);
+
+describe('kindOrDefault', () => {
+ it('should return default kind when undefined', () => {
+ expect(kindOrDefault()).toEqual(['API', 'Component', 'Template']);
+ });
+ it('should return the default kind when empty', () => {
+ expect(kindOrDefault([])).toEqual(['API', 'Component', 'Template']);
+ });
+ it('should return provided kind when not empty', () => {
+ expect(kindOrDefault(['API'])).toEqual(['API']);
+ });
+});
+
+describe('Linguist backend API', () => {
+ const logger = getVoidLogger();
+
+ const store: jest.Mocked = {
+ insertEntityResults: jest.fn(),
+ insertNewEntity: jest.fn(),
+ getEntityResults: jest.fn(),
+ getProcessedEntities: jest.fn(),
+ getUnprocessedEntities: jest.fn(),
+ getAllEntities: jest.fn(),
+ deleteEntity: jest.fn(),
+ };
+
+ const urlReader: jest.Mocked = {
+ readTree: jest.fn(),
+ search: jest.fn(),
+ readUrl: jest.fn(),
+ };
+
+ const catalogApi: jest.Mocked = {
+ getEntities: jest.fn(),
+ getEntityByRef: jest.fn(),
+ } as any;
+
+ const tokenManager = ServerTokenManager.noop();
+
+ const api = new LinguistBackendClient(
+ logger,
+ store,
+ urlReader,
+ tokenManager,
+ catalogApi,
+ );
+
+ beforeEach(() => {
+ jest.resetAllMocks();
+ });
+
+ it('should get languages for an entity', async () => {
+ store.getEntityResults.mockResolvedValue({
+ languageCount: 1,
+ totalBytes: 2205,
+ processedDate: '2023-02-15T20:10:21.378Z',
+ breakdown: [
+ {
+ name: 'YAML',
+ percentage: 100,
+ bytes: 2205,
+ type: 'data',
+ color: '#cb171e',
+ },
+ ],
+ });
+
+ const entityRef = 'template:default/create-react-app-template';
+ const languages = await api.getEntityLanguages(entityRef);
+ expect(languages).toEqual({
+ languageCount: 1,
+ totalBytes: 2205,
+ processedDate: '2023-02-15T20:10:21.378Z',
+ breakdown: [
+ {
+ name: 'YAML',
+ percentage: 100,
+ bytes: 2205,
+ type: 'data',
+ color: '#cb171e',
+ },
+ ],
+ });
+ });
+
+ it('should insert new entities', async () => {
+ const testEntityListResponse: GetEntitiesResponse = {
+ items: [
+ {
+ apiVersion: 'backstage.io/v1beta1',
+ metadata: {
+ name: 'service-one',
+ },
+ kind: 'Component',
+ },
+ {
+ apiVersion: 'backstage.io/v1beta1',
+ metadata: {
+ name: 'service-two',
+ },
+ kind: 'Component',
+ },
+ {
+ apiVersion: 'backstage.io/v1beta1',
+ metadata: {
+ name: 'service-three',
+ },
+ kind: 'Component',
+ },
+ ],
+ };
+ catalogApi.getEntities.mockResolvedValue(testEntityListResponse);
+
+ await api.addNewEntities();
+ expect(store.insertNewEntity).toHaveBeenCalledTimes(3);
+ });
+
+ it('should delete entities not in Catalog', async () => {
+ store.getAllEntities.mockResolvedValue([
+ 'component:default/service-one',
+ 'component:default/stale-service-two',
+ ]);
+
+ catalogApi.getEntityByRef.mockResolvedValueOnce({
+ apiVersion: 'backstage.io/v1beta1',
+ metadata: {
+ name: 'service-one',
+ },
+ kind: 'Component',
+ });
+
+ await api.cleanEntities();
+ expect(store.deleteEntity).toHaveBeenCalledTimes(1);
+ });
+
+ it('should get default entity overview', async () => {
+ store.getProcessedEntities.mockResolvedValue([
+ {
+ entityRef: 'component:default/service-one',
+ processedDate: DateTime.now().toJSDate(),
+ },
+ {
+ entityRef: 'component:default/stale-service-two',
+ processedDate: DateTime.now().minus({ days: 45 }).toJSDate(),
+ },
+ ]);
+
+ store.getUnprocessedEntities.mockResolvedValue([
+ 'component:default/service-three',
+ 'component:default/service-four',
+ 'component:default/service-five',
+ ]);
+
+ const overview = await api.getEntitiesOverview();
+ expect(overview.entityCount).toEqual(5);
+ expect(overview.processedCount).toEqual(2);
+ expect(overview.staleCount).toEqual(0);
+ expect(overview.pendingCount).toEqual(3);
+ expect(overview.filteredEntities).toEqual([
+ 'component:default/service-three',
+ 'component:default/service-four',
+ 'component:default/service-five',
+ ]);
+ });
+
+ it('should get entity overview with stale items', async () => {
+ const apiWithAge = new LinguistBackendClient(
+ logger,
+ store,
+ urlReader,
+ tokenManager,
+ catalogApi,
+ { days: 5 },
+ );
+ store.getProcessedEntities.mockResolvedValue([
+ {
+ entityRef: 'component:default/service-one',
+ processedDate: DateTime.now().toJSDate(),
+ },
+ {
+ entityRef: 'component:default/stale-service-two',
+ processedDate: DateTime.now().minus({ days: 45 }).toJSDate(),
+ },
+ ]);
+
+ store.getUnprocessedEntities.mockResolvedValue([
+ 'component:default/service-three',
+ 'component:default/service-four',
+ 'component:default/service-five',
+ ]);
+
+ const overview = await apiWithAge.getEntitiesOverview();
+ expect(overview.entityCount).toEqual(5);
+ expect(overview.processedCount).toEqual(2);
+ expect(overview.staleCount).toEqual(1);
+ expect(overview.pendingCount).toEqual(4);
+ expect(overview.filteredEntities).toEqual([
+ 'component:default/service-three',
+ 'component:default/service-four',
+ 'component:default/service-five',
+ 'component:default/stale-service-two',
+ ]);
+ });
+
+ it('should generate and save languages for an entity', async () => {
+ const spy = jest
+ .spyOn(api, 'getLinguistResults')
+ .mockImplementation(() => linguistResultMock);
+
+ urlReader.readTree.mockResolvedValueOnce({
+ files: async () => [
+ {
+ content: async () => Buffer.from('-- XXX: code-data', 'utf8'),
+ path: 'my-file.js',
+ },
+ ],
+ dir: async () => '/temp/my-code',
+ } as ReadTreeResponse);
+
+ const fsSpy = jest.spyOn(fs, 'remove');
+
+ await api.generateEntityLanguages(
+ 'component:default/fake-service',
+ 'https://some.fake/service/',
+ );
+ expect(api.getLinguistResults).toHaveBeenCalled();
+ expect(store.insertEntityResults).toHaveBeenCalled();
+ expect(fs.remove).toHaveBeenCalled();
+ spy.mockClear();
+ fsSpy.mockClear();
+ });
+
+ it('should generate languages for entities using default', async () => {
+ store.getProcessedEntities.mockResolvedValue([
+ {
+ entityRef: 'component:default/service-one',
+ processedDate: DateTime.now().toJSDate(),
+ },
+ {
+ entityRef: 'component:default/stale-service-two',
+ processedDate: DateTime.now().minus({ days: 45 }).toJSDate(),
+ },
+ ]);
+
+ store.getUnprocessedEntities.mockResolvedValue([
+ 'component:default/service-three',
+ 'component:default/service-four',
+ 'component:default/service-five',
+ ]);
+
+ const entity = {
+ apiVersion: 'backstage.io/v1beta1',
+ metadata: {
+ name: 'service-one',
+ annotations: {
+ [LINGUIST_ANNOTATION]: 'https://some.fake/service/',
+ },
+ },
+ kind: 'Component',
+ };
+
+ catalogApi.getEntityByRef.mockResolvedValue(entity);
+
+ const resultsSpy = jest
+ .spyOn(api, 'getLinguistResults')
+ .mockImplementation(() => linguistResultMock);
+
+ urlReader.readTree.mockResolvedValue({
+ files: async () => [
+ {
+ content: async () => Buffer.from('-- XXX: code-data', 'utf8'),
+ path: 'my-file.js',
+ },
+ ],
+ dir: async () => '/temp/my-code',
+ } as ReadTreeResponse);
+
+ const fsSpy = jest.spyOn(fs, 'remove');
+
+ const generateEntityLanguages = jest.spyOn(api, 'generateEntityLanguages');
+ await api.generateEntitiesLanguages();
+ expect(generateEntityLanguages).toHaveBeenCalledTimes(3);
+
+ generateEntityLanguages.mockClear();
+ resultsSpy.mockClear();
+ fsSpy.mockClear();
+ });
+
+ it('should generate languages for entities using defined batch size', async () => {
+ const apiWithBatchSize = new LinguistBackendClient(
+ logger,
+ store,
+ urlReader,
+ tokenManager,
+ catalogApi,
+ undefined,
+ 2,
+ );
+
+ store.getProcessedEntities.mockResolvedValue([
+ {
+ entityRef: 'component:default/service-one',
+ processedDate: DateTime.now().toJSDate(),
+ },
+ {
+ entityRef: 'component:default/stale-service-two',
+ processedDate: DateTime.now().minus({ days: 45 }).toJSDate(),
+ },
+ ]);
+
+ store.getUnprocessedEntities.mockResolvedValue([
+ 'component:default/service-three',
+ 'component:default/service-four',
+ 'component:default/service-five',
+ ]);
+
+ const entity = {
+ apiVersion: 'backstage.io/v1beta1',
+ metadata: {
+ name: 'service-one',
+ annotations: {
+ [LINGUIST_ANNOTATION]: 'https://some.fake/service/',
+ },
+ },
+ kind: 'Component',
+ };
+
+ catalogApi.getEntityByRef.mockResolvedValue(entity);
+
+ const resultsSpy = jest
+ .spyOn(apiWithBatchSize, 'getLinguistResults')
+ .mockImplementation(() => linguistResultMock);
+
+ urlReader.readTree.mockResolvedValue({
+ files: async () => [
+ {
+ content: async () => Buffer.from('-- XXX: code-data', 'utf8'),
+ path: 'my-file.js',
+ },
+ ],
+ dir: async () => '/temp/my-code',
+ } as ReadTreeResponse);
+
+ const fsSpy = jest.spyOn(fs, 'remove');
+
+ const generateEntityLanguages = jest.spyOn(
+ apiWithBatchSize,
+ 'generateEntityLanguages',
+ );
+ await apiWithBatchSize.generateEntitiesLanguages();
+ expect(generateEntityLanguages).toHaveBeenCalledTimes(2);
+
+ generateEntityLanguages.mockClear();
+ resultsSpy.mockClear();
+ fsSpy.mockClear();
+ });
+});
diff --git a/plugins/linguist-backend/src/api/LinguistBackendApi.ts b/plugins/linguist-backend/src/api/LinguistBackendClient.ts
similarity index 76%
rename from plugins/linguist-backend/src/api/LinguistBackendApi.ts
rename to plugins/linguist-backend/src/api/LinguistBackendClient.ts
index df7e30a7b0..5a84201bcb 100644
--- a/plugins/linguist-backend/src/api/LinguistBackendApi.ts
+++ b/plugins/linguist-backend/src/api/LinguistBackendClient.ts
@@ -22,14 +22,10 @@ import {
} from '@backstage/plugin-linguist-common';
import {
CATALOG_FILTER_EXISTS,
- CatalogClient,
GetEntitiesRequest,
+ CatalogApi,
} from '@backstage/catalog-client';
-import {
- PluginEndpointDiscovery,
- TokenManager,
- UrlReader,
-} from '@backstage/backend-common';
+import { TokenManager, UrlReader } from '@backstage/backend-common';
import { DateTime } from 'luxon';
import { LINGUIST_ANNOTATION } from '@backstage/plugin-linguist-common';
@@ -43,16 +39,22 @@ import {
} from '@backstage/catalog-model';
import { assertError } from '@backstage/errors';
import { HumanDuration } from '@backstage/types';
+import { Results } from 'linguist-js/dist/types';
/** @public */
-export class LinguistBackendApi {
+export interface LinguistBackendApi {
+ getEntityLanguages(entityRef: string): Promise;
+ processEntities(): Promise;
+}
+
+/** @public */
+export class LinguistBackendClient implements LinguistBackendApi {
private readonly logger: Logger;
private readonly store: LinguistBackendStore;
private readonly urlReader: UrlReader;
- private readonly discovery: PluginEndpointDiscovery;
private readonly tokenManager: TokenManager;
- private readonly catalogClient: CatalogClient;
+ private readonly catalogApi: CatalogApi;
private readonly age?: HumanDuration;
private readonly batchSize?: number;
private readonly useSourceLocation?: boolean;
@@ -62,8 +64,8 @@ export class LinguistBackendApi {
logger: Logger,
store: LinguistBackendStore,
urlReader: UrlReader,
- discovery: PluginEndpointDiscovery,
tokenManager: TokenManager,
+ catalogApi: CatalogApi,
age?: HumanDuration,
batchSize?: number,
useSourceLocation?: boolean,
@@ -73,9 +75,8 @@ export class LinguistBackendApi {
this.logger = logger;
this.store = store;
this.urlReader = urlReader;
- this.discovery = discovery;
this.tokenManager = tokenManager;
- this.catalogClient = new CatalogClient({ discoveryApi: this.discovery });
+ this.catalogApi = catalogApi;
this.batchSize = batchSize;
this.age = age;
this.useSourceLocation = useSourceLocation;
@@ -83,23 +84,25 @@ export class LinguistBackendApi {
this.linguistJsOptions = linguistJsOptions;
}
- public async getEntityLanguages(entityRef: string): Promise {
+ async getEntityLanguages(entityRef: string): Promise {
this.logger?.debug(`Getting languages for entity "${entityRef}"`);
return this.store.getEntityResults(entityRef);
}
- public async processEntities() {
+ async processEntities(): Promise {
this.logger?.info('Updating list of entities');
-
await this.addNewEntities();
- this.logger?.info('Processing applicable entities through Linguist');
+ this.logger?.info('Cleaning list of entities');
+ await this.cleanEntities();
+ this.logger?.info('Processing applicable entities through Linguist');
await this.generateEntitiesLanguages();
}
- private async addNewEntities() {
+ /** @internal */
+ async addNewEntities(): Promise {
const annotationKey = this.useSourceLocation
? ANNOTATION_SOURCE_LOCATION
: LINGUIST_ANNOTATION;
@@ -112,7 +115,7 @@ export class LinguistBackendApi {
};
const { token } = await this.tokenManager.getToken();
- const response = await this.catalogClient.getEntities(request, { token });
+ const response = await this.catalogApi.getEntities(request, { token });
const entities = response.items;
entities.forEach(entity => {
@@ -121,7 +124,25 @@ export class LinguistBackendApi {
});
}
- private async generateEntitiesLanguages() {
+ /** @internal */
+ async cleanEntities(): Promise {
+ this.logger?.info('Cleaning entities in Linguist queue');
+ const allEntities = await this.store.getAllEntities();
+
+ for (const entityRef of allEntities) {
+ const result = await this.catalogApi.getEntityByRef(entityRef);
+
+ if (!result) {
+ this.logger?.info(
+ `Entity ${entityRef} was not found in the Catalog, it will be deleted`,
+ );
+ await this.store.deleteEntity(entityRef);
+ }
+ }
+ }
+
+ /** @internal */
+ async generateEntitiesLanguages(): Promise {
const entitiesOverview = await this.getEntitiesOverview();
this.logger?.info(
`Entities overview: Entity: ${entitiesOverview.entityCount}, Processed: ${entitiesOverview.processedCount}, Pending: ${entitiesOverview.pendingCount}, Stale ${entitiesOverview.staleCount}`,
@@ -131,9 +152,10 @@ export class LinguistBackendApi {
0,
this.batchSize ?? 20,
);
- entities.forEach(async entityRef => {
+
+ for (const entityRef of entities) {
const { token } = await this.tokenManager.getToken();
- const entity = await this.catalogClient.getEntityByRef(entityRef, {
+ const entity = await this.catalogApi.getEntityByRef(entityRef, {
token,
});
const annotationKey = this.useSourceLocation
@@ -153,10 +175,11 @@ export class LinguistBackendApi {
`Unable to process "${entityRef}" using "${url}", message: ${error.message}, stack: ${error.stack}`,
);
}
- });
+ }
}
- private async getEntitiesOverview(): Promise {
+ /** @internal */
+ async getEntitiesOverview(): Promise {
this.logger?.debug('Getting pending entities');
const processedEntities = await this.store.getProcessedEntities();
@@ -169,10 +192,10 @@ export class LinguistBackendApi {
.map(pe => pe.entityRef);
const unprocessedEntities = await this.store.getUnprocessedEntities();
- const filteredEntities = staleEntities.concat(unprocessedEntities);
+ const filteredEntities = unprocessedEntities.concat(staleEntities);
const entitiesOverview: EntitiesOverview = {
- entityCount: unprocessedEntities.length,
+ entityCount: unprocessedEntities.length + processedEntities.length,
processedCount: processedEntities.length,
staleCount: staleEntities.length,
pendingCount: filteredEntities.length,
@@ -182,7 +205,8 @@ export class LinguistBackendApi {
return entitiesOverview;
}
- private async generateEntityLanguages(
+ /** @internal */
+ async generateEntityLanguages(
entityRef: string,
url: string,
): Promise {
@@ -193,7 +217,7 @@ export class LinguistBackendApi {
const readTreeResponse = await this.urlReader.readTree(url);
const dir = await readTreeResponse.dir();
- const results = await linguist(dir, this.linguistJsOptions);
+ const results = await this.getLinguistResults(dir);
try {
const totalBytes = results.languages.bytes;
@@ -233,9 +257,15 @@ export class LinguistBackendApi {
await fs.remove(dir);
}
}
+
+ /** @internal */
+ async getLinguistResults(dir: string): Promise {
+ const results = await linguist(dir, this.linguistJsOptions);
+ return results;
+ }
}
-export function kindOrDefault(kind?: string[]) {
+export function kindOrDefault(kind?: string[]): string[] {
if (!kind || kind.length === 0) {
return ['API', 'Component', 'Template'];
}
diff --git a/plugins/linguist-backend/src/api/index.ts b/plugins/linguist-backend/src/api/index.ts
index a88fa051d4..b3f73587e7 100644
--- a/plugins/linguist-backend/src/api/index.ts
+++ b/plugins/linguist-backend/src/api/index.ts
@@ -14,4 +14,4 @@
* limitations under the License.
*/
-export { LinguistBackendApi } from './LinguistBackendApi';
+export type { LinguistBackendApi } from './LinguistBackendClient';
diff --git a/plugins/linguist-backend/src/db/LinguistBackendDatabase.test.ts b/plugins/linguist-backend/src/db/LinguistBackendDatabase.test.ts
new file mode 100644
index 0000000000..5998ddfc1e
--- /dev/null
+++ b/plugins/linguist-backend/src/db/LinguistBackendDatabase.test.ts
@@ -0,0 +1,200 @@
+/*
+ * 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 { Knex as KnexType, Knex } from 'knex';
+import { TestDatabases } from '@backstage/backend-test-utils';
+import {
+ LinguistBackendDatabase,
+ LinguistBackendStore,
+} from './LinguistBackendDatabase';
+import { Languages, ProcessedEntity } from '@backstage/plugin-linguist-common';
+
+function createDatabaseManager(
+ client: KnexType,
+ skipMigrations: boolean = false,
+) {
+ return {
+ getClient: async () => client,
+ migrations: {
+ skip: skipMigrations,
+ },
+ };
+}
+
+const rawDbEntityResultRows = [
+ {
+ id: '14b32439-848a-49b2-92a4-98753f932606',
+ entity_ref: 'template:default/create-react-app-template',
+ languages: undefined,
+ processed_date: undefined,
+ },
+ {
+ id: '8c85d3ec-ccea-4b29-9de9-ccdd7e5ba452',
+ entity_ref: 'template:default/docs-template',
+ languages: undefined,
+ processed_date: undefined,
+ },
+ {
+ id: 'b922c87b-37bc-4505-b4af-70a1438decda',
+ entity_ref: 'template:default/pull-request',
+ languages:
+ '{"languageCount":1,"totalBytes":2205,"processedDate":"2023-02-15T20:10:21.378Z","breakdown":[{"name":"YAML","percentage":100,"bytes":2205,"type":"data","color":"#cb171e"}]}',
+ processed_date: new Date('2023-02-15 20:10:21.378Z'),
+ },
+ {
+ id: 'bd555e6d-a3d0-4b48-a930-194db8f80db7',
+ entity_ref: 'template:default/react-ssr-template',
+ languages:
+ '{"languageCount":8,"totalBytes":8988,"processedDate":"2023-02-15T20:10:21.388Z","breakdown":[{"name":"INI","percentage":2.26,"bytes":203,"type":"data","color":"#d1dbe0"},{"name":"JavaScript","percentage":5.94,"bytes":534,"type":"programming","color":"#f1e05a"},{"name":"YAML","percentage":31.09,"bytes":2794,"type":"data","color":"#cb171e"},{"name":"Markdown","percentage":11.79,"bytes":1060,"type":"prose","color":"#083fa1"},{"name":"JSON","percentage":21.09,"bytes":1896,"type":"data","color":"#292929"},{"name":"CSS","percentage":0,"bytes":0,"type":"markup","color":"#563d7c"},{"name":"TSX","percentage":26.01,"bytes":2338,"type":"programming","color":"#3178c6"},{"name":"TypeScript","percentage":1.81,"bytes":163,"type":"programming","color":"#3178c6"}]}',
+ processed_date: new Date('2023-02-15 20:10:21.388Z'),
+ },
+ {
+ id: '4145c0cf-44e9-4e95-9d57-781af4685b28',
+ entity_ref: 'template:default/springboot-template',
+ languages:
+ '{"languageCount":9,"totalBytes":80986,"processedDate":"2023-02-15T20:10:21.419Z","breakdown":[{"name":"Shell","percentage":0.16,"bytes":130,"type":"programming","color":"#89e051"},{"name":"INI","percentage":0.35,"bytes":286,"type":"data","color":"#d1dbe0"},{"name":"Dockerfile","percentage":0.3,"bytes":246,"type":"programming","color":"#384d54"},{"name":"YAML","percentage":3.92,"bytes":3171,"type":"data","color":"#cb171e"},{"name":"Markdown","percentage":1.31,"bytes":1059,"type":"prose","color":"#083fa1"},{"name":"XML","percentage":10.48,"bytes":8491,"type":"data","color":"#0060ac"},{"name":"Java","percentage":1.8,"bytes":1455,"type":"programming","color":"#b07219"},{"name":"Text","percentage":81.22,"bytes":65780,"type":"prose"},{"name":"Protocol Buffer","percentage":0.45,"bytes":368,"type":"data"}]}',
+ processed_date: new Date('2023-02-15 20:10:21.419Z'),
+ },
+];
+
+describe('Linguist database', () => {
+ const databases = TestDatabases.create();
+ let store: LinguistBackendStore;
+ let testDbClient: Knex;
+ beforeAll(async () => {
+ testDbClient = await databases.init('SQLITE_3');
+ const database = createDatabaseManager(testDbClient);
+
+ store = await LinguistBackendDatabase.create(await database.getClient());
+ });
+ beforeEach(async () => {
+ await testDbClient.batchInsert('entity_result', rawDbEntityResultRows);
+ });
+ afterEach(async () => {
+ await testDbClient('entity_result').delete();
+ });
+
+ it('should be able to return entity results', async () => {
+ const validLanguagesResult: Languages = {
+ languageCount: 1,
+ totalBytes: 2205,
+ processedDate: '2023-02-15T20:10:21.378Z',
+ breakdown: [
+ {
+ name: 'YAML',
+ percentage: 100,
+ bytes: 2205,
+ type: 'data',
+ color: '#cb171e',
+ },
+ ],
+ };
+
+ const entityResult = await store.getEntityResults(
+ 'template:default/pull-request',
+ );
+ expect(entityResult).toMatchObject(validLanguagesResult);
+ });
+
+ it('should return empty entity results when not found', async () => {
+ const validEmptyLanguagesResult: Languages = {
+ languageCount: 0,
+ totalBytes: 0,
+ processedDate: 'undefined',
+ breakdown: [],
+ };
+
+ const entityResult = await store.getEntityResults(
+ 'template:default/create-react-app-template',
+ );
+ expect(entityResult).toMatchObject(validEmptyLanguagesResult);
+ });
+
+ it('should be able to return unprocessed entities', async () => {
+ const validUnprocessedEntities: string[] = [
+ 'template:default/create-react-app-template',
+ 'template:default/docs-template',
+ ];
+
+ const unprocessedEntities = await store.getUnprocessedEntities();
+
+ expect(unprocessedEntities).toMatchObject(validUnprocessedEntities);
+ });
+
+ it('should return string[] when there is no unprocessed entities', async () => {
+ await testDbClient('entity_result').delete();
+ const unprocessedEntities = await store.getUnprocessedEntities();
+
+ expect(unprocessedEntities).toMatchObject([]);
+ });
+
+ it('should be able to return processed entities', async () => {
+ const validProcessedEntities: ProcessedEntity[] = [
+ {
+ entityRef: 'template:default/pull-request',
+ processedDate: new Date('2023-02-15 20:10:21.378Z'),
+ },
+ {
+ entityRef: 'template:default/react-ssr-template',
+ processedDate: new Date('2023-02-15 20:10:21.388Z'),
+ },
+ {
+ entityRef: 'template:default/springboot-template',
+ processedDate: new Date('2023-02-15 20:10:21.419Z'),
+ },
+ ];
+
+ const processedEntities = await store.getProcessedEntities();
+
+ expect(processedEntities).toMatchObject(validProcessedEntities);
+ });
+
+ it('should return string[] when there is no processed entities', async () => {
+ await testDbClient('entity_result').delete();
+ const unprocessedEntities = await store.getProcessedEntities();
+
+ expect(unprocessedEntities).toMatchObject([]);
+ });
+
+ it('should insert new entities and ignore duplicates', async () => {
+ const before = testDbClient.from('entity_result').count();
+
+ await store.insertNewEntity('component:/default/new-entity-one');
+ await store.insertNewEntity('component:/default/new-entity-two');
+ await store.insertNewEntity('template:default/pull-request');
+
+ const after = testDbClient.from('entity_result').count();
+
+ expect(before).toEqual(after);
+ });
+
+ it('should get all entities', async () => {
+ const allEntities = await store.getAllEntities();
+
+ expect(allEntities.length).toEqual(5);
+ });
+
+ it('should delete entity by its entityRef', async () => {
+ const before = await testDbClient.from('entity_result').count();
+
+ await store.deleteEntity('template:default/create-react-app-template');
+
+ const after = await testDbClient.from('entity_result').count();
+
+ expect(before).toEqual([{ 'count(*)': 5 }]);
+ expect(after).toEqual([{ 'count(*)': 4 }]);
+ });
+});
diff --git a/plugins/linguist-backend/src/db/LinguistBackendDatabase.ts b/plugins/linguist-backend/src/db/LinguistBackendDatabase.ts
index cf93374800..5a59d18e90 100644
--- a/plugins/linguist-backend/src/db/LinguistBackendDatabase.ts
+++ b/plugins/linguist-backend/src/db/LinguistBackendDatabase.ts
@@ -26,8 +26,8 @@ import {
export type RawDbEntityResultRow = {
id: string;
entity_ref: string;
- languages: string;
- processed_date: Date;
+ languages?: string;
+ processed_date?: Date;
};
/** @public */
@@ -35,8 +35,10 @@ export interface LinguistBackendStore {
insertEntityResults(entityLanguages: EntityResults): Promise;
insertNewEntity(entityRef: string): Promise;
getEntityResults(entityRef: string): Promise;
- getProcessedEntities(): Promise;
- getUnprocessedEntities(): Promise;
+ getProcessedEntities(): Promise;
+ getUnprocessedEntities(): Promise;
+ getAllEntities(): Promise;
+ deleteEntity(entityRef: string): Promise;
}
const migrationsDir = resolvePackagePath(
@@ -91,7 +93,7 @@ export class LinguistBackendDatabase implements LinguistBackendStore {
.where({ entity_ref: entityRef })
.first();
- if (!entityResults) {
+ if (!entityResults || !entityResults.languages) {
const emptyResults: Languages = {
languageCount: 0,
totalBytes: 0,
@@ -108,7 +110,7 @@ export class LinguistBackendDatabase implements LinguistBackendStore {
}
}
- async getProcessedEntities(): Promise {
+ async getProcessedEntities(): Promise {
const rawEntities = await this.db('entity_result')
.whereNotNull('processed_date')
.whereNotNull('languages');
@@ -118,9 +120,20 @@ export class LinguistBackendDatabase implements LinguistBackendStore {
}
const processedEntities = rawEntities.map(rawEntity => {
+ // Note: processed_date should never be null, this is handled by the DB query above
+ let processedDate = new Date();
+ if (rawEntity.processed_date) {
+ // SQLite will return a Timestamp whereas Postgres will return a proper Date
+ // This tests to see if we are getting a timestamp and convert if needed
+ processedDate = new Date(+rawEntity.processed_date.toString());
+ if (isNaN(+rawEntity.processed_date.toString())) {
+ processedDate = rawEntity.processed_date;
+ }
+ }
+
const processEntity = {
entityRef: rawEntity.entity_ref,
- processedDate: rawEntity.processed_date,
+ processedDate,
};
return processEntity;
@@ -129,8 +142,11 @@ export class LinguistBackendDatabase implements LinguistBackendStore {
return processedEntities;
}
- async getUnprocessedEntities(): Promise {
+ async getUnprocessedEntities(): Promise {
const rawEntities = await this.db('entity_result')
+ // TODO(ahhhndre) processed_date should always be null as well but it had a default to the current date
+ // once the default has been removed and released, we can then come back an enable this check
+ // .whereNull('processed_date')
.whereNull('languages')
.orderBy('created_at', 'asc');
@@ -144,4 +160,24 @@ export class LinguistBackendDatabase implements LinguistBackendStore {
return unprocessedEntities;
}
+
+ async getAllEntities(): Promise {
+ const rawEntities = await this.db('entity_result');
+
+ if (!rawEntities) {
+ return [];
+ }
+
+ const allEntities = rawEntities.map(rawEntity => {
+ return rawEntity.entity_ref;
+ });
+
+ return allEntities;
+ }
+
+ async deleteEntity(entityRef: string): Promise {
+ await this.db('entity_result')
+ .where('entity_ref', entityRef)
+ .delete();
+ }
}
diff --git a/plugins/linguist-backend/src/index.ts b/plugins/linguist-backend/src/index.ts
index da1e0ffb00..37ecf2d47f 100644
--- a/plugins/linguist-backend/src/index.ts
+++ b/plugins/linguist-backend/src/index.ts
@@ -15,6 +15,4 @@
*/
export * from './service/router';
-export { LinguistBackendApi } from './api';
-export { LinguistBackendDatabase } from './db';
-export type { LinguistBackendStore } from './db';
+export type { LinguistBackendApi } from './api';
diff --git a/plugins/linguist-backend/src/service/router.test.ts b/plugins/linguist-backend/src/service/router.test.ts
index b8bde9d35d..7ab8f1c238 100644
--- a/plugins/linguist-backend/src/service/router.test.ts
+++ b/plugins/linguist-backend/src/service/router.test.ts
@@ -73,7 +73,7 @@ describe('createRouter', () => {
const router = await createRouter(
{ schedule: schedule, age: { days: 30 }, useSourceLocation: false },
{
- linguistBackendApi,
+ linguistBackendApi: linguistBackendApi,
discovery: testDiscovery,
database: createDatabase(),
reader: mockUrlReader,
diff --git a/plugins/linguist-backend/src/service/router.ts b/plugins/linguist-backend/src/service/router.ts
index 8d52a2e01d..9e45438ec8 100644
--- a/plugins/linguist-backend/src/service/router.ts
+++ b/plugins/linguist-backend/src/service/router.ts
@@ -31,6 +31,8 @@ import {
TaskScheduleDefinition,
} from '@backstage/backend-tasks';
import { HumanDuration } from '@backstage/types';
+import { CatalogClient } from '@backstage/catalog-client';
+import { LinguistBackendClient } from '../api/LinguistBackendClient';
/** @public */
export interface PluginOptions {
@@ -74,14 +76,16 @@ export async function createRouter(
await database.getClient(),
);
- const linguistBackendApi =
+ const catalogClient = new CatalogClient({ discoveryApi: discovery });
+
+ const linguistBackendClient =
routerOptions.linguistBackendApi ||
- new LinguistBackendApi(
+ new LinguistBackendClient(
logger,
linguistBackendStore,
reader,
- discovery,
tokenManager,
+ catalogClient,
age,
batchSize,
useSourceLocation,
@@ -100,7 +104,7 @@ export async function createRouter(
initialDelay: schedule.initialDelay,
scope: schedule.scope,
fn: async () => {
- await linguistBackendApi.processEntities();
+ await linguistBackendClient.processEntities();
},
});
}
@@ -122,7 +126,7 @@ export async function createRouter(
throw new Error('No entityRef was provided');
}
- const entityLanguages = await linguistBackendApi.getEntityLanguages(
+ const entityLanguages = await linguistBackendClient.getEntityLanguages(
entityRef as string,
);
res.status(200).json(entityLanguages);
diff --git a/plugins/linguist/CHANGELOG.md b/plugins/linguist/CHANGELOG.md
index 5c12d0df14..0d927fed5b 100644
--- a/plugins/linguist/CHANGELOG.md
+++ b/plugins/linguist/CHANGELOG.md
@@ -1,5 +1,18 @@
# @backstage/plugin-linguist
+## 0.1.3
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+ - @backstage/plugin-linguist-common@0.1.0
+
## 0.1.3-next.2
### Patch Changes
diff --git a/plugins/linguist/package.json b/plugins/linguist/package.json
index 885462b0e0..89faf81fd0 100644
--- a/plugins/linguist/package.json
+++ b/plugins/linguist/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-linguist",
- "version": "0.1.3-next.2",
+ "version": "0.1.3",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/microsoft-calendar/CHANGELOG.md b/plugins/microsoft-calendar/CHANGELOG.md
index 98e2cbf1c1..a9bc798414 100644
--- a/plugins/microsoft-calendar/CHANGELOG.md
+++ b/plugins/microsoft-calendar/CHANGELOG.md
@@ -1,5 +1,15 @@
# @backstage/plugin-microsoft-calendar
+## 0.1.3
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/core-components@0.13.1
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+
## 0.1.3-next.1
### Patch Changes
diff --git a/plugins/microsoft-calendar/package.json b/plugins/microsoft-calendar/package.json
index ca444bf7df..070404422f 100644
--- a/plugins/microsoft-calendar/package.json
+++ b/plugins/microsoft-calendar/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-microsoft-calendar",
- "version": "0.1.3-next.1",
+ "version": "0.1.3",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/newrelic-dashboard/CHANGELOG.md b/plugins/newrelic-dashboard/CHANGELOG.md
index 1bbac565ca..ad52878764 100644
--- a/plugins/newrelic-dashboard/CHANGELOG.md
+++ b/plugins/newrelic-dashboard/CHANGELOG.md
@@ -1,5 +1,16 @@
# @backstage/plugin-newrelic-dashboard
+## 0.2.11
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+
## 0.2.11-next.2
### Patch Changes
diff --git a/plugins/newrelic-dashboard/package.json b/plugins/newrelic-dashboard/package.json
index 696762913b..cebda38964 100644
--- a/plugins/newrelic-dashboard/package.json
+++ b/plugins/newrelic-dashboard/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-newrelic-dashboard",
- "version": "0.2.11-next.2",
+ "version": "0.2.11",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/newrelic/CHANGELOG.md b/plugins/newrelic/CHANGELOG.md
index 88daca0ff0..c03b0ad933 100644
--- a/plugins/newrelic/CHANGELOG.md
+++ b/plugins/newrelic/CHANGELOG.md
@@ -1,5 +1,14 @@
# @backstage/plugin-newrelic
+## 0.3.36
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/core-components@0.13.1
+ - @backstage/core-plugin-api@1.5.1
+
## 0.3.36-next.1
### Patch Changes
diff --git a/plugins/newrelic/package.json b/plugins/newrelic/package.json
index 628280099c..c8de615d73 100644
--- a/plugins/newrelic/package.json
+++ b/plugins/newrelic/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-newrelic",
"description": "A Backstage plugin that integrates towards New Relic",
- "version": "0.3.36-next.1",
+ "version": "0.3.36",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/octopus-deploy/CHANGELOG.md b/plugins/octopus-deploy/CHANGELOG.md
index 228c8b5a18..66465dc514 100644
--- a/plugins/octopus-deploy/CHANGELOG.md
+++ b/plugins/octopus-deploy/CHANGELOG.md
@@ -1,5 +1,21 @@
# @backstage/plugin-octopus-deploy
+## 0.2.0
+
+### Minor Changes
+
+- 87211bc2873: Added support for Octopus Deploy spaces. The octopus.com/project-id annotation can now (optionally) be prefixed by a space identifier, for example. Spaces-1/Projects-102.
+ Also note that some of this plugins exported API's have changed to accommodate this change, changing from separate arguments to a single object.
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+
## 0.2.0-next.2
### Patch Changes
diff --git a/plugins/octopus-deploy/README.md b/plugins/octopus-deploy/README.md
index 6039856998..e80bbf0fcd 100644
--- a/plugins/octopus-deploy/README.md
+++ b/plugins/octopus-deploy/README.md
@@ -18,7 +18,7 @@ To use it, you will need to generate an [API Key](https://octopus.com/docs/octop
// app-config.yaml
proxy:
'/octopus-deploy':
- target: ''
+ target: 'https:///api'
headers:
X-Octopus-ApiKey: ${OCTOPUS_API_KEY}
```
diff --git a/plugins/octopus-deploy/package.json b/plugins/octopus-deploy/package.json
index 2140f130e5..6597f4f69c 100644
--- a/plugins/octopus-deploy/package.json
+++ b/plugins/octopus-deploy/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-octopus-deploy",
- "version": "0.2.0-next.2",
+ "version": "0.2.0",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/org-react/CHANGELOG.md b/plugins/org-react/CHANGELOG.md
index d7a5b72817..a418acb8e5 100644
--- a/plugins/org-react/CHANGELOG.md
+++ b/plugins/org-react/CHANGELOG.md
@@ -1,5 +1,17 @@
# @backstage/plugin-org-react
+## 0.1.7
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-client@1.4.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+
## 0.1.7-next.2
### Patch Changes
diff --git a/plugins/org-react/package.json b/plugins/org-react/package.json
index 5c33388f69..bd7d59ba6b 100644
--- a/plugins/org-react/package.json
+++ b/plugins/org-react/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-org-react",
- "version": "0.1.7-next.2",
+ "version": "0.1.7",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/org/CHANGELOG.md b/plugins/org/CHANGELOG.md
index f729d46e19..60bec7da2f 100644
--- a/plugins/org/CHANGELOG.md
+++ b/plugins/org/CHANGELOG.md
@@ -1,5 +1,29 @@
# @backstage/plugin-org
+## 0.6.8
+
+### Patch Changes
+
+- 6e387c077a4: Changed the MembersListCard component to allow displaying aggregated members when viewing a group. Now, a toggle switch can be displayed that lets you switch between showing direct members and aggregated members.
+
+ To enable this new feature, set the showAggregateMembersToggle prop on EntityMembersListCard:
+
+ ```jsx
+ // In packages/app/src/components/catalog/EntityPage.tsx
+ const groupPage = (
+ // ...
+
+ // ...
+ );
+ ```
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+
## 0.6.8-next.2
### Patch Changes
diff --git a/plugins/org/package.json b/plugins/org/package.json
index 6755d8fd64..cdbf8cd153 100644
--- a/plugins/org/package.json
+++ b/plugins/org/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-org",
"description": "A Backstage plugin that helps you create entity pages for your organization",
- "version": "0.6.8-next.2",
+ "version": "0.6.8",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/pagerduty/CHANGELOG.md b/plugins/pagerduty/CHANGELOG.md
index 36f1e4a7ca..671772c119 100644
--- a/plugins/pagerduty/CHANGELOG.md
+++ b/plugins/pagerduty/CHANGELOG.md
@@ -1,5 +1,17 @@
# @backstage/plugin-pagerduty
+## 0.5.11
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+
## 0.5.11-next.2
### Patch Changes
diff --git a/plugins/pagerduty/README.md b/plugins/pagerduty/README.md
index ac3ba529dd..2affe1c423 100644
--- a/plugins/pagerduty/README.md
+++ b/plugins/pagerduty/README.md
@@ -42,7 +42,7 @@ The file paths mentioned in the following steps are relative to your app's root
First, install the PagerDuty plugin via a CLI:
```bash
-# From your Backstage app root directory
+# From your Backstage root directory
yarn add --cwd packages/app @backstage/plugin-pagerduty
```
diff --git a/plugins/pagerduty/package.json b/plugins/pagerduty/package.json
index 89bc2367da..b635ade95e 100644
--- a/plugins/pagerduty/package.json
+++ b/plugins/pagerduty/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-pagerduty",
"description": "A Backstage plugin that integrates towards PagerDuty",
- "version": "0.5.11-next.2",
+ "version": "0.5.11",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/periskop-backend/CHANGELOG.md b/plugins/periskop-backend/CHANGELOG.md
index fde89edbe9..fc478922db 100644
--- a/plugins/periskop-backend/CHANGELOG.md
+++ b/plugins/periskop-backend/CHANGELOG.md
@@ -1,5 +1,14 @@
# @backstage/plugin-periskop-backend
+## 0.1.16
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/config@1.0.7
+
## 0.1.16-next.1
### Patch Changes
diff --git a/plugins/periskop-backend/package.json b/plugins/periskop-backend/package.json
index b453b2bc59..520c4c03ca 100644
--- a/plugins/periskop-backend/package.json
+++ b/plugins/periskop-backend/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-periskop-backend",
- "version": "0.1.16-next.1",
+ "version": "0.1.16",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/periskop/CHANGELOG.md b/plugins/periskop/CHANGELOG.md
index 79f636a76a..65e6b2640d 100644
--- a/plugins/periskop/CHANGELOG.md
+++ b/plugins/periskop/CHANGELOG.md
@@ -1,5 +1,17 @@
# @backstage/plugin-periskop
+## 0.1.16
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+
## 0.1.16-next.2
### Patch Changes
diff --git a/plugins/periskop/package.json b/plugins/periskop/package.json
index 5b277bbcce..b3f97452b6 100644
--- a/plugins/periskop/package.json
+++ b/plugins/periskop/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-periskop",
- "version": "0.1.16-next.2",
+ "version": "0.1.16",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/permission-backend/CHANGELOG.md b/plugins/permission-backend/CHANGELOG.md
index 02bb528853..a5a5325d16 100644
--- a/plugins/permission-backend/CHANGELOG.md
+++ b/plugins/permission-backend/CHANGELOG.md
@@ -1,5 +1,18 @@
# @backstage/plugin-permission-backend
+## 0.5.20
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/plugin-permission-node@0.7.8
+ - @backstage/plugin-auth-node@0.2.14
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+ - @backstage/plugin-permission-common@0.7.5
+
## 0.5.20-next.1
### Patch Changes
diff --git a/plugins/permission-backend/package.json b/plugins/permission-backend/package.json
index 0156c96626..e1fa9785c1 100644
--- a/plugins/permission-backend/package.json
+++ b/plugins/permission-backend/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-permission-backend",
- "version": "0.5.20-next.1",
+ "version": "0.5.20",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/permission-node/CHANGELOG.md b/plugins/permission-node/CHANGELOG.md
index b2014e3e62..eb964866ce 100644
--- a/plugins/permission-node/CHANGELOG.md
+++ b/plugins/permission-node/CHANGELOG.md
@@ -1,5 +1,36 @@
# @backstage/plugin-permission-node
+## 0.7.8
+
+### Patch Changes
+
+- a788e715cfc: `createPermissionIntegrationRouter` now accepts rules and permissions for multiple resource types. Example:
+
+ ```typescript
+ createPermissionIntegrationRouter({
+ resources: [
+ {
+ resourceType: 'resourceType-1',
+ permissions: permissionsResourceType1,
+ rules: rulesResourceType1,
+ },
+ {
+ resourceType: 'resourceType-2',
+ permissions: permissionsResourceType2,
+ rules: rulesResourceType2,
+ },
+ ],
+ });
+ ```
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/plugin-auth-node@0.2.14
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+ - @backstage/plugin-permission-common@0.7.5
+
## 0.7.8-next.1
### Patch Changes
diff --git a/plugins/permission-node/package.json b/plugins/permission-node/package.json
index a0187f4576..6a955ef29f 100644
--- a/plugins/permission-node/package.json
+++ b/plugins/permission-node/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-permission-node",
"description": "Common permission and authorization utilities for backend plugins",
- "version": "0.7.8-next.1",
+ "version": "0.7.8",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/playlist-backend/CHANGELOG.md b/plugins/playlist-backend/CHANGELOG.md
index 2bf296d6b4..31f1177294 100644
--- a/plugins/playlist-backend/CHANGELOG.md
+++ b/plugins/playlist-backend/CHANGELOG.md
@@ -1,5 +1,20 @@
# @backstage/plugin-playlist-backend
+## 0.3.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/plugin-permission-node@0.7.8
+ - @backstage/plugin-auth-node@0.2.14
+ - @backstage/catalog-client@1.4.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+ - @backstage/plugin-permission-common@0.7.5
+ - @backstage/plugin-playlist-common@0.1.6
+
## 0.3.1-next.1
### Patch Changes
diff --git a/plugins/playlist-backend/package.json b/plugins/playlist-backend/package.json
index c0ac336383..0d909104b9 100644
--- a/plugins/playlist-backend/package.json
+++ b/plugins/playlist-backend/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-playlist-backend",
- "version": "0.3.1-next.1",
+ "version": "0.3.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/playlist/CHANGELOG.md b/plugins/playlist/CHANGELOG.md
index 30f6ef919d..2ecdf65cb7 100644
--- a/plugins/playlist/CHANGELOG.md
+++ b/plugins/playlist/CHANGELOG.md
@@ -1,5 +1,22 @@
# @backstage/plugin-playlist
+## 0.1.9
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/plugin-search-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+ - @backstage/plugin-catalog-common@1.0.13
+ - @backstage/plugin-permission-common@0.7.5
+ - @backstage/plugin-permission-react@0.4.12
+ - @backstage/plugin-playlist-common@0.1.6
+
## 0.1.9-next.2
### Patch Changes
diff --git a/plugins/playlist/package.json b/plugins/playlist/package.json
index d30f4851d7..5cd050940d 100644
--- a/plugins/playlist/package.json
+++ b/plugins/playlist/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-playlist",
- "version": "0.1.9-next.2",
+ "version": "0.1.9",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/proxy-backend/CHANGELOG.md b/plugins/proxy-backend/CHANGELOG.md
index e18a0f5a7f..6bd1c9004c 100644
--- a/plugins/proxy-backend/CHANGELOG.md
+++ b/plugins/proxy-backend/CHANGELOG.md
@@ -1,5 +1,14 @@
# @backstage/plugin-proxy-backend
+## 0.2.39
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/config@1.0.7
+
## 0.2.39-next.1
### Patch Changes
diff --git a/plugins/proxy-backend/package.json b/plugins/proxy-backend/package.json
index f16c87f3d7..2f44342962 100644
--- a/plugins/proxy-backend/package.json
+++ b/plugins/proxy-backend/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-proxy-backend",
"description": "A Backstage backend plugin that helps you set up proxy endpoints in the backend",
- "version": "0.2.39-next.1",
+ "version": "0.2.39",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/puppetdb/CHANGELOG.md b/plugins/puppetdb/CHANGELOG.md
index 8581c7650b..272f07dc01 100644
--- a/plugins/puppetdb/CHANGELOG.md
+++ b/plugins/puppetdb/CHANGELOG.md
@@ -1,5 +1,17 @@
# @backstage/plugin-puppetdb
+## 0.1.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+
## 0.1.1-next.2
### Patch Changes
diff --git a/plugins/puppetdb/package.json b/plugins/puppetdb/package.json
index 9782269666..b04b3a7b1c 100644
--- a/plugins/puppetdb/package.json
+++ b/plugins/puppetdb/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-puppetdb",
"description": "Backstage plugin to visualize resource information and Puppet facts from PuppetDB.",
- "version": "0.1.1-next.2",
+ "version": "0.1.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/rollbar-backend/CHANGELOG.md b/plugins/rollbar-backend/CHANGELOG.md
index 337ba58f5f..1c1d8faffa 100644
--- a/plugins/rollbar-backend/CHANGELOG.md
+++ b/plugins/rollbar-backend/CHANGELOG.md
@@ -1,5 +1,13 @@
# @backstage/plugin-rollbar-backend
+## 0.1.42
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/config@1.0.7
+
## 0.1.42-next.1
### Patch Changes
diff --git a/plugins/rollbar-backend/package.json b/plugins/rollbar-backend/package.json
index 170f06dcb0..8c5a2bd669 100644
--- a/plugins/rollbar-backend/package.json
+++ b/plugins/rollbar-backend/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-rollbar-backend",
"description": "A Backstage backend plugin that integrates towards Rollbar",
- "version": "0.1.42-next.1",
+ "version": "0.1.42",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/rollbar/CHANGELOG.md b/plugins/rollbar/CHANGELOG.md
index d4d34fec32..ebe6cd0a7e 100644
--- a/plugins/rollbar/CHANGELOG.md
+++ b/plugins/rollbar/CHANGELOG.md
@@ -1,5 +1,16 @@
# @backstage/plugin-rollbar
+## 0.4.18
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+
## 0.4.18-next.2
### Patch Changes
diff --git a/plugins/rollbar/package.json b/plugins/rollbar/package.json
index cd3c302b03..ee46f656fd 100644
--- a/plugins/rollbar/package.json
+++ b/plugins/rollbar/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-rollbar",
"description": "A Backstage plugin that integrates towards Rollbar",
- "version": "0.4.18-next.2",
+ "version": "0.4.18",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/scaffolder-backend-module-confluence-to-markdown/CHANGELOG.md b/plugins/scaffolder-backend-module-confluence-to-markdown/CHANGELOG.md
index 5ef00b8f91..3add549e58 100644
--- a/plugins/scaffolder-backend-module-confluence-to-markdown/CHANGELOG.md
+++ b/plugins/scaffolder-backend-module-confluence-to-markdown/CHANGELOG.md
@@ -1,5 +1,19 @@
# @backstage/plugin-scaffolder-backend-module-confluence-to-markdown
+## 0.1.2
+
+### Patch Changes
+
+- 7c116bcac7f: Fixed the way that some request errors are thrown
+- Updated dependencies
+ - @backstage/plugin-scaffolder-backend@1.14.0
+ - @backstage/backend-common@0.18.5
+ - @backstage/integration@1.4.5
+ - @backstage/plugin-scaffolder-node@0.1.3
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+ - @backstage/types@1.0.2
+
## 0.1.2-next.2
### Patch Changes
diff --git a/plugins/scaffolder-backend-module-confluence-to-markdown/package.json b/plugins/scaffolder-backend-module-confluence-to-markdown/package.json
index 57602c2d27..40fc82ecea 100644
--- a/plugins/scaffolder-backend-module-confluence-to-markdown/package.json
+++ b/plugins/scaffolder-backend-module-confluence-to-markdown/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-scaffolder-backend-module-confluence-to-markdown",
"description": "The confluence-to-markdown module for @backstage/plugin-scaffolder-backend",
- "version": "0.1.2-next.2",
+ "version": "0.1.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/scaffolder-backend-module-cookiecutter/CHANGELOG.md b/plugins/scaffolder-backend-module-cookiecutter/CHANGELOG.md
index 1c1d336fd1..1ea629a2fb 100644
--- a/plugins/scaffolder-backend-module-cookiecutter/CHANGELOG.md
+++ b/plugins/scaffolder-backend-module-cookiecutter/CHANGELOG.md
@@ -1,5 +1,18 @@
# @backstage/plugin-scaffolder-backend-module-cookiecutter
+## 0.2.21
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-scaffolder-backend@1.14.0
+ - @backstage/backend-common@0.18.5
+ - @backstage/integration@1.4.5
+ - @backstage/plugin-scaffolder-node@0.1.3
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+ - @backstage/types@1.0.2
+
## 0.2.21-next.2
### Patch Changes
diff --git a/plugins/scaffolder-backend-module-cookiecutter/package.json b/plugins/scaffolder-backend-module-cookiecutter/package.json
index d8649918c0..89b2997ea3 100644
--- a/plugins/scaffolder-backend-module-cookiecutter/package.json
+++ b/plugins/scaffolder-backend-module-cookiecutter/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-scaffolder-backend-module-cookiecutter",
"description": "A module for the scaffolder backend that lets you template projects using cookiecutter",
- "version": "0.2.21-next.2",
+ "version": "0.2.21",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/scaffolder-backend-module-gitlab/CHANGELOG.md b/plugins/scaffolder-backend-module-gitlab/CHANGELOG.md
index 72999216df..f040e0670e 100644
--- a/plugins/scaffolder-backend-module-gitlab/CHANGELOG.md
+++ b/plugins/scaffolder-backend-module-gitlab/CHANGELOG.md
@@ -1,5 +1,26 @@
# @backstage/plugin-scaffolder-backend-module-gitlab
+## 0.2.0
+
+### Minor Changes
+
+- 439e2986be1: Add a new scaffolder action for gitlab to ensure a group exists
+
+### Patch Changes
+
+- f1496d4ab6f: Fix input schema validation issue for gitlab actions:
+
+ - gitlab:group:ensureExists
+ - gitlab:projectAccessToken:create
+ - gitlab:projectDeployToken:create
+ - gitlab:projectVariable:create
+
+- Updated dependencies
+ - @backstage/integration@1.4.5
+ - @backstage/plugin-scaffolder-node@0.1.3
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+
## 0.2.0-next.2
### Minor Changes
diff --git a/plugins/scaffolder-backend-module-gitlab/README.md b/plugins/scaffolder-backend-module-gitlab/README.md
index d071ca0cf6..340b57bbf8 100644
--- a/plugins/scaffolder-backend-module-gitlab/README.md
+++ b/plugins/scaffolder-backend-module-gitlab/README.md
@@ -20,9 +20,10 @@ Configure the action:
// packages/backend/src/plugins/scaffolder.ts
import {
- createGitlabProjectAccessTokenAction,
createGitlabProjectAccessTokenAction,
createGitlabProjectDeployTokenAction,
+ createGitlabProjectVariableAction,
+ createGitlabGroupEnsureExistsAction,
} from '@backstage/plugin-scaffolder-backend-module-gitlab';
// Create BuiltIn Actions
@@ -36,18 +37,10 @@ const builtInActions = createBuiltinActions({
// Add Gitlab Actions
const actions = [
...builtInActions,
- createGitlabProjectAccessTokenAction({
- integrations: integrations,
- }),
- createGitlabProjectAccessTokenAction({
- integrations: integrations,
- }),
- createGitlabProjectDeployTokenAction({
- integrations: integrations,
- }),
- createGitlabGroupEnsureExistsAction({
- integrations: integrations,
- }),
+ createGitlabProjectAccessTokenAction({ integrations: integrations }),
+ createGitlabProjectDeployTokenAction({ integrations: integrations }),
+ createGitlabProjectVariableAction({ integrations: integrations }),
+ createGitlabGroupEnsureExistsAction({ integrations: integrations }),
];
// Create Scaffolder Router
diff --git a/plugins/scaffolder-backend-module-gitlab/package.json b/plugins/scaffolder-backend-module-gitlab/package.json
index 9c36616eb8..07cc725570 100644
--- a/plugins/scaffolder-backend-module-gitlab/package.json
+++ b/plugins/scaffolder-backend-module-gitlab/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-scaffolder-backend-module-gitlab",
- "version": "0.2.0-next.2",
+ "version": "0.2.0",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/scaffolder-backend-module-rails/CHANGELOG.md b/plugins/scaffolder-backend-module-rails/CHANGELOG.md
index bd263d65a7..0350dfbf5c 100644
--- a/plugins/scaffolder-backend-module-rails/CHANGELOG.md
+++ b/plugins/scaffolder-backend-module-rails/CHANGELOG.md
@@ -1,5 +1,18 @@
# @backstage/plugin-scaffolder-backend-module-rails
+## 0.4.14
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-scaffolder-backend@1.14.0
+ - @backstage/backend-common@0.18.5
+ - @backstage/integration@1.4.5
+ - @backstage/plugin-scaffolder-node@0.1.3
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+ - @backstage/types@1.0.2
+
## 0.4.14-next.2
### Patch Changes
diff --git a/plugins/scaffolder-backend-module-rails/package.json b/plugins/scaffolder-backend-module-rails/package.json
index e45fc153ae..226e4ab3cb 100644
--- a/plugins/scaffolder-backend-module-rails/package.json
+++ b/plugins/scaffolder-backend-module-rails/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-scaffolder-backend-module-rails",
"description": "A module for the scaffolder backend that lets you template projects using Rails",
- "version": "0.4.14-next.2",
+ "version": "0.4.14",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/scaffolder-backend-module-sentry/CHANGELOG.md b/plugins/scaffolder-backend-module-sentry/CHANGELOG.md
index 4206d39413..f3cf978ea6 100644
--- a/plugins/scaffolder-backend-module-sentry/CHANGELOG.md
+++ b/plugins/scaffolder-backend-module-sentry/CHANGELOG.md
@@ -1,5 +1,14 @@
# @backstage/plugin-scaffolder-backend-module-sentry
+## 0.1.5
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-scaffolder-node@0.1.3
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+
## 0.1.5-next.2
### Patch Changes
diff --git a/plugins/scaffolder-backend-module-sentry/package.json b/plugins/scaffolder-backend-module-sentry/package.json
index d66fea6d60..2a1bf2f61f 100644
--- a/plugins/scaffolder-backend-module-sentry/package.json
+++ b/plugins/scaffolder-backend-module-sentry/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-scaffolder-backend-module-sentry",
- "version": "0.1.5-next.2",
+ "version": "0.1.5",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/scaffolder-backend-module-yeoman/CHANGELOG.md b/plugins/scaffolder-backend-module-yeoman/CHANGELOG.md
index 232510d721..7509ba3d76 100644
--- a/plugins/scaffolder-backend-module-yeoman/CHANGELOG.md
+++ b/plugins/scaffolder-backend-module-yeoman/CHANGELOG.md
@@ -1,5 +1,14 @@
# @backstage/plugin-scaffolder-backend-module-yeoman
+## 0.2.18
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-scaffolder-node@0.1.3
+ - @backstage/config@1.0.7
+ - @backstage/types@1.0.2
+
## 0.2.18-next.2
### Patch Changes
diff --git a/plugins/scaffolder-backend-module-yeoman/package.json b/plugins/scaffolder-backend-module-yeoman/package.json
index 952a220c5a..67f6caff59 100644
--- a/plugins/scaffolder-backend-module-yeoman/package.json
+++ b/plugins/scaffolder-backend-module-yeoman/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-scaffolder-backend-module-yeoman",
- "version": "0.2.18-next.2",
+ "version": "0.2.18",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/scaffolder-backend/CHANGELOG.md b/plugins/scaffolder-backend/CHANGELOG.md
index 221362e637..d4aa251b34 100644
--- a/plugins/scaffolder-backend/CHANGELOG.md
+++ b/plugins/scaffolder-backend/CHANGELOG.md
@@ -1,5 +1,39 @@
# @backstage/plugin-scaffolder-backend
+## 1.14.0
+
+### Minor Changes
+
+- 67115f532b8: Expose both types of scaffolder permissions and rules through the metadata endpoint.
+
+ The metadata endpoint now correctly exposes both types of scaffolder permissions and rules (for both the template and action resource types) through the metadata endpoint.
+
+- a73b3c0b097: Add ability to use `defaultNamespace` and `defaultKind` for scaffolder action `catalog:fetch`
+
+### Patch Changes
+
+- 1a48b84901c: Bump minimum required version of `vm2` to be 3.9.18
+- d20c87966a4: Bump minimum required version of `vm2` to be 3.9.17
+- 6d954de4b06: Update typing for `RouterOptions::actions` and `ScaffolderActionsExtensionPoint::addActions` to allow any kind of action being assigned to it.
+- Updated dependencies
+ - @backstage/plugin-catalog-backend@1.9.1
+ - @backstage/backend-common@0.18.5
+ - @backstage/integration@1.4.5
+ - @backstage/plugin-scaffolder-common@1.3.0
+ - @backstage/plugin-permission-node@0.7.8
+ - @backstage/plugin-scaffolder-node@0.1.3
+ - @backstage/backend-tasks@0.5.2
+ - @backstage/plugin-auth-node@0.2.14
+ - @backstage/plugin-catalog-node@1.3.6
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/catalog-client@1.4.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+ - @backstage/types@1.0.2
+ - @backstage/plugin-catalog-common@1.0.13
+ - @backstage/plugin-permission-common@0.7.5
+
## 1.13.2-next.2
### Patch Changes
diff --git a/plugins/scaffolder-backend/package.json b/plugins/scaffolder-backend/package.json
index 3d1794410d..aeb7861f4b 100644
--- a/plugins/scaffolder-backend/package.json
+++ b/plugins/scaffolder-backend/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-scaffolder-backend",
"description": "The Backstage backend plugin that helps you create new things",
- "version": "1.13.2-next.2",
+ "version": "1.14.0",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/catalog/register.test.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/catalog/register.test.ts
index c718f3906e..bae9f04575 100644
--- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/catalog/register.test.ts
+++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/catalog/register.test.ts
@@ -265,9 +265,7 @@ describe('catalog:register', () => {
it('should ignore failures when dry running the location in the catalog if `optional` is set', async () => {
addLocation
- .mockResolvedValueOnce({
- entities: [],
- })
+ .mockRejectedValueOnce(new Error('Not found'))
.mockRejectedValueOnce(new Error('Not found'));
await action.handler({
...mockContext,
@@ -300,4 +298,54 @@ describe('catalog:register', () => {
'http://foo/var',
);
});
+
+ it('should fetch entities when adding location in the catalog fails and `optional` is set', async () => {
+ addLocation
+ .mockRejectedValueOnce(new Error('Already registered'))
+ .mockResolvedValueOnce({
+ entities: [
+ {
+ metadata: {
+ namespace: 'default',
+ name: 'test',
+ },
+ kind: 'Component',
+ } as Entity,
+ ],
+ });
+ await action.handler({
+ ...mockContext,
+ input: {
+ catalogInfoUrl: 'http://foo/var',
+ optional: true,
+ },
+ });
+
+ expect(addLocation).toHaveBeenNthCalledWith(
+ 1,
+ {
+ type: 'url',
+ target: 'http://foo/var',
+ },
+ {},
+ );
+ expect(addLocation).toHaveBeenNthCalledWith(
+ 2,
+ {
+ dryRun: true,
+ type: 'url',
+ target: 'http://foo/var',
+ },
+ {},
+ );
+
+ expect(mockContext.output).toHaveBeenCalledWith(
+ 'catalogInfoUrl',
+ 'http://foo/var',
+ );
+ expect(mockContext.output).toHaveBeenCalledWith(
+ 'entityRef',
+ 'component:default/test',
+ );
+ });
});
diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/catalog/register.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/catalog/register.ts
index e866eb12ba..3e35e16508 100644
--- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/catalog/register.ts
+++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/catalog/register.ts
@@ -17,7 +17,7 @@
import { InputError } from '@backstage/errors';
import { ScmIntegrations } from '@backstage/integration';
import { CatalogApi } from '@backstage/catalog-client';
-import { stringifyEntityRef } from '@backstage/catalog-model';
+import { stringifyEntityRef, Entity } from '@backstage/catalog-model';
import { createTemplateAction } from '@backstage/plugin-scaffolder-node';
import yaml from 'yaml';
@@ -144,17 +144,26 @@ export function createCatalogRegisterAction(options: {
ctx.logger.info(`Registering ${catalogInfoUrl} in the catalog`);
- await catalogClient.addLocation(
- {
- type: 'url',
- target: catalogInfoUrl,
- },
- ctx.secrets?.backstageToken
- ? { token: ctx.secrets.backstageToken }
- : {},
- );
+ try {
+ // 1st try to register the location, this will throw an error if the location already exists (see catch)
+ await catalogClient.addLocation(
+ {
+ type: 'url',
+ target: catalogInfoUrl,
+ },
+ ctx.secrets?.backstageToken
+ ? { token: ctx.secrets.backstageToken }
+ : {},
+ );
+ } catch (e) {
+ if (!input.optional) {
+ // if optional is false or unset, it is not allowed to register the same location twice, we rethrow the error
+ throw e;
+ }
+ }
try {
+ // 2nd retry the registration as a dry run, this will not throw an error if the location already exists
const result = await catalogClient.addLocation(
{
dryRun: true,
@@ -166,18 +175,18 @@ export function createCatalogRegisterAction(options: {
: {},
);
- if (result.entities.length > 0) {
+ if (result.entities.length) {
const { entities } = result;
- let entity: any;
+ let entity: Entity | undefined;
// prioritise 'Component' type as it is the most central kind of entity
entity = entities.find(
- (e: any) =>
+ e =>
!e.metadata.name.startsWith('generated-') &&
e.kind === 'Component',
);
if (!entity) {
entity = entities.find(
- (e: any) => !e.metadata.name.startsWith('generated-'),
+ e => !e.metadata.name.startsWith('generated-'),
);
}
if (!entity) {
diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gitlabMergeRequest.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gitlabMergeRequest.ts
index 06e056cda3..84a17024d1 100644
--- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gitlabMergeRequest.ts
+++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gitlabMergeRequest.ts
@@ -218,14 +218,16 @@ export const createPublishGitlabMergeRequestAction = (options: {
try {
await api.Branches.create(repoID, branchName, String(defaultBranch));
} catch (e) {
- throw new InputError(`The branch creation failed ${e}`);
+ throw new InputError(
+ `The branch creation failed. Please check that your repo does not already contain a branch named '${branchName}'. ${e}`,
+ );
}
try {
await api.Commits.create(repoID, branchName, ctx.input.title, actions);
} catch (e) {
throw new InputError(
- `Committing the changes to ${branchName} failed ${e}`,
+ `Committing the changes to ${branchName} failed. Please check that none of the files created by the template already exists. ${e}`,
);
}
diff --git a/plugins/scaffolder-common/CHANGELOG.md b/plugins/scaffolder-common/CHANGELOG.md
index b09bf55eb3..b5bcabb64f 100644
--- a/plugins/scaffolder-common/CHANGELOG.md
+++ b/plugins/scaffolder-common/CHANGELOG.md
@@ -1,5 +1,21 @@
# @backstage/plugin-scaffolder-common
+## 1.3.0
+
+### Minor Changes
+
+- 82e10a6939c: Add support for Markdown text blob outputs from templates
+- 67115f532b8: Expose scaffolder permissions in new sub-aggregations.
+
+ In addition to exporting a list of all scaffolder permissions in `scaffolderPermissions`, scaffolder-common now exports `scaffolderTemplatePermissions` and `scaffolderActionPermissions`, which contain subsets of the scaffolder permissions separated by resource type.
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/catalog-model@1.3.0
+ - @backstage/types@1.0.2
+ - @backstage/plugin-permission-common@0.7.5
+
## 1.3.0-next.0
### Minor Changes
diff --git a/plugins/scaffolder-common/package.json b/plugins/scaffolder-common/package.json
index c12f16dbad..45b4986155 100644
--- a/plugins/scaffolder-common/package.json
+++ b/plugins/scaffolder-common/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-scaffolder-common",
"description": "Common functionalities for the scaffolder, to be shared between scaffolder and scaffolder-backend plugin",
- "version": "1.3.0-next.0",
+ "version": "1.3.0",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/scaffolder-node/CHANGELOG.md b/plugins/scaffolder-node/CHANGELOG.md
index 5936463ac8..7c4f4316ec 100644
--- a/plugins/scaffolder-node/CHANGELOG.md
+++ b/plugins/scaffolder-node/CHANGELOG.md
@@ -1,5 +1,16 @@
# @backstage/plugin-scaffolder-node
+## 0.1.3
+
+### Patch Changes
+
+- 6d954de4b06: Update typing for `RouterOptions::actions` and `ScaffolderActionsExtensionPoint::addActions` to allow any kind of action being assigned to it.
+- Updated dependencies
+ - @backstage/plugin-scaffolder-common@1.3.0
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/catalog-model@1.3.0
+ - @backstage/types@1.0.2
+
## 0.1.3-next.2
### Patch Changes
diff --git a/plugins/scaffolder-node/package.json b/plugins/scaffolder-node/package.json
index d00dd15226..4eda195f91 100644
--- a/plugins/scaffolder-node/package.json
+++ b/plugins/scaffolder-node/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-scaffolder-node",
"description": "The plugin-scaffolder-node module for @backstage/plugin-scaffolder-backend",
- "version": "0.1.3-next.2",
+ "version": "0.1.3",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/scaffolder-react/CHANGELOG.md b/plugins/scaffolder-react/CHANGELOG.md
index 8d93049843..59434d30cf 100644
--- a/plugins/scaffolder-react/CHANGELOG.md
+++ b/plugins/scaffolder-react/CHANGELOG.md
@@ -1,5 +1,31 @@
# @backstage/plugin-scaffolder-react
+## 1.4.0
+
+### Minor Changes
+
+- 82e10a6939c: Add support for Markdown text blob outputs from templates
+
+### Patch Changes
+
+- ad1a1429de4: Improvements to the `scaffolder/next` buttons UX:
+
+ - Added padding around the "Create" button in the `Stepper` component
+ - Added a button bar that includes the "Cancel" and "Start Over" buttons to the `OngoingTask` component. The state of these buttons match their existing counter parts in the Context Menu
+ - Added a "Show Button Bar"/"Hide Button Bar" item to the `ContextMenu` component
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/plugin-scaffolder-common@1.3.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-client@1.4.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+ - @backstage/types@1.0.2
+ - @backstage/version-bridge@1.0.4
+
## 1.4.0-next.2
### Minor Changes
diff --git a/plugins/scaffolder-react/package.json b/plugins/scaffolder-react/package.json
index c455eeebf6..5e5732fb04 100644
--- a/plugins/scaffolder-react/package.json
+++ b/plugins/scaffolder-react/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-scaffolder-react",
"description": "A frontend library that helps other Backstage plugins interact with the Scaffolder",
- "version": "1.4.0-next.2",
+ "version": "1.4.0",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/scaffolder-react/src/hooks/useEventStream.ts b/plugins/scaffolder-react/src/hooks/useEventStream.ts
index ec49911471..ad802dba99 100644
--- a/plugins/scaffolder-react/src/hooks/useEventStream.ts
+++ b/plugins/scaffolder-react/src/hooks/useEventStream.ts
@@ -169,67 +169,85 @@ export const useTaskEventStream = (taskId: string): TaskStream => {
let didCancel = false;
let subscription: Subscription | undefined;
let logPusher: NodeJS.Timeout | undefined;
-
- scaffolderApi.getTask(taskId).then(
- task => {
- if (didCancel) {
- return;
- }
- dispatch({ type: 'INIT', data: task });
-
- // TODO(blam): Use a normal fetch to fetch the current log for the event stream
- // and use that for an INIT_EVENTs dispatch event, and then
- // use the last event ID to subscribe using after option to
- // stream logs. Without this, if you have a lot of logs, it can look like the
- // task is being rebuilt on load as it progresses through the steps at a slower
- // rate whilst it builds the status from the event logs
- const observable = scaffolderApi.streamLogs({ taskId });
-
- const collectedLogEvents = new Array();
-
- function emitLogs() {
- if (collectedLogEvents.length) {
- const logs = collectedLogEvents.splice(
- 0,
- collectedLogEvents.length,
- );
- dispatch({ type: 'LOGS', data: logs });
+ let retryCount = 1;
+ const startStreamLogProcess = () =>
+ scaffolderApi.getTask(taskId).then(
+ task => {
+ if (didCancel) {
+ return;
}
- }
+ dispatch({ type: 'INIT', data: task });
- logPusher = setInterval(emitLogs, 500);
+ // TODO(blam): Use a normal fetch to fetch the current log for the event stream
+ // and use that for an INIT_EVENTs dispatch event, and then
+ // use the last event ID to subscribe using after option to
+ // stream logs. Without this, if you have a lot of logs, it can look like the
+ // task is being rebuilt on load as it progresses through the steps at a slower
+ // rate whilst it builds the status from the event logs
+ const observable = scaffolderApi.streamLogs({ taskId });
- subscription = observable.subscribe({
- next: event => {
- switch (event.type) {
- case 'log':
- return collectedLogEvents.push(event);
- case 'cancelled':
- dispatch({ type: 'CANCELLED' });
- return undefined;
- case 'completion':
- emitLogs();
- dispatch({ type: 'COMPLETED', data: event });
- return undefined;
- default:
- throw new Error(
- `Unhandled event type ${event.type} in observer`,
- );
+ const collectedLogEvents = new Array();
+
+ function emitLogs() {
+ if (collectedLogEvents.length) {
+ const logs = collectedLogEvents.splice(
+ 0,
+ collectedLogEvents.length,
+ );
+ dispatch({ type: 'LOGS', data: logs });
}
- },
- error: error => {
- emitLogs();
- dispatch({ type: 'ERROR', data: error });
- },
- });
- },
- error => {
- if (!didCancel) {
- dispatch({ type: 'ERROR', data: error });
- }
- },
- );
+ }
+ logPusher = setInterval(emitLogs, 500);
+
+ subscription = observable.subscribe({
+ next: event => {
+ switch (event.type) {
+ case 'log':
+ return collectedLogEvents.push(event);
+ case 'cancelled':
+ dispatch({ type: 'CANCELLED' });
+ return undefined;
+ case 'completion':
+ emitLogs();
+ dispatch({ type: 'COMPLETED', data: event });
+ return undefined;
+ default:
+ throw new Error(
+ `Unhandled event type ${event.type} in observer`,
+ );
+ }
+ },
+ error: error => {
+ emitLogs();
+ // in some cases the error is a refused connection from backend
+ // this can happen from internet issues or proxy problems
+ // so we try to reconnect again after some time
+ // just to restart the fetch process
+ // details here https://github.com/backstage/backstage/issues/15002
+
+ if (!error.message) {
+ error.message = `We cannot connect at the moment, trying again in some seconds... Retrying (${retryCount}/3 retries)`;
+ }
+
+ if (retryCount <= 3) {
+ setTimeout(() => {
+ retryCount += 1;
+ startStreamLogProcess();
+ }, 15000);
+ }
+
+ dispatch({ type: 'ERROR', data: error });
+ },
+ });
+ },
+ error => {
+ if (!didCancel) {
+ dispatch({ type: 'ERROR', data: error });
+ }
+ },
+ );
+ startStreamLogProcess();
return () => {
didCancel = true;
if (subscription) {
diff --git a/plugins/scaffolder/CHANGELOG.md b/plugins/scaffolder/CHANGELOG.md
index 577517a127..9658bfc48f 100644
--- a/plugins/scaffolder/CHANGELOG.md
+++ b/plugins/scaffolder/CHANGELOG.md
@@ -1,5 +1,33 @@
# @backstage/plugin-scaffolder
+## 1.13.1
+
+### Patch Changes
+
+- d560d457c98: Fix case GitLab workspace is a nested subgroup
+- ad1a1429de4: Improvements to the `scaffolder/next` buttons UX:
+
+ - Added padding around the "Create" button in the `Stepper` component
+ - Added a button bar that includes the "Cancel" and "Start Over" buttons to the `OngoingTask` component. The state of these buttons match their existing counter parts in the Context Menu
+ - Added a "Show Button Bar"/"Hide Button Bar" item to the `ContextMenu` component
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/integration@1.4.5
+ - @backstage/plugin-scaffolder-common@1.3.0
+ - @backstage/plugin-scaffolder-react@1.4.0
+ - @backstage/core-components@0.13.1
+ - @backstage/integration-react@1.1.13
+ - @backstage/catalog-client@1.4.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+ - @backstage/types@1.0.2
+ - @backstage/plugin-catalog-common@1.0.13
+ - @backstage/plugin-permission-react@0.4.12
+
## 1.13.1-next.2
### Patch Changes
diff --git a/plugins/scaffolder/package.json b/plugins/scaffolder/package.json
index 4b5e34e5de..ce2032a1cc 100644
--- a/plugins/scaffolder/package.json
+++ b/plugins/scaffolder/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-scaffolder",
"description": "The Backstage plugin that helps you create new things",
- "version": "1.13.1-next.2",
+ "version": "1.13.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -74,6 +74,7 @@
"@types/react": "^16.13.1 || ^17.0.0",
"@uiw/react-codemirror": "^4.9.3",
"classnames": "^2.2.6",
+ "event-source-polyfill": "^1.0.31",
"git-url-parse": "^13.0.0",
"humanize-duration": "^3.25.1",
"immer": "^9.0.1",
@@ -108,7 +109,6 @@
"@types/json-schema": "^7.0.9",
"@types/node": "^16.11.26",
"cross-fetch": "^3.1.5",
- "event-source-polyfill": "1.0.25",
"msw": "^1.0.0"
},
"files": [
diff --git a/plugins/scaffolder/src/api.test.ts b/plugins/scaffolder/src/api.test.ts
index e21bda8fd7..b9b1881066 100644
--- a/plugins/scaffolder/src/api.test.ts
+++ b/plugins/scaffolder/src/api.test.ts
@@ -20,11 +20,14 @@ import { MockFetchApi, setupRequestMockHandlers } from '@backstage/test-utils';
import { rest } from 'msw';
import { setupServer } from 'msw/node';
import { ScaffolderClient } from './api';
+import { EventSourcePolyfill } from 'event-source-polyfill';
-const MockedEventSource = global.EventSource as jest.MockedClass<
- typeof EventSource
+const MockedEventSource = EventSourcePolyfill as jest.MockedClass<
+ typeof EventSourcePolyfill
>;
+jest.mock('event-source-polyfill');
+
const server = setupServer();
describe('api', () => {
@@ -102,6 +105,9 @@ describe('api', () => {
},
);
+ const token = 'fake-token';
+ identityApi.getCredentials.mockResolvedValue({ token: token });
+
const next = jest.fn();
await new Promise(complete => {
@@ -112,7 +118,10 @@ describe('api', () => {
expect(MockedEventSource).toHaveBeenCalledWith(
'http://backstage/api/v2/tasks/a-random-task-id/eventstream',
- { withCredentials: true },
+ {
+ withCredentials: true,
+ headers: { Authorization: `Bearer ${token}` },
+ },
);
expect(MockedEventSource.prototype.close).toHaveBeenCalled();
diff --git a/plugins/scaffolder/src/api.ts b/plugins/scaffolder/src/api.ts
index 7a3f6c14bb..c67a5c944e 100644
--- a/plugins/scaffolder/src/api.ts
+++ b/plugins/scaffolder/src/api.ts
@@ -41,6 +41,7 @@ import {
} from '@backstage/plugin-scaffolder-react';
import queryString from 'qs';
+import { EventSourcePolyfill } from 'event-source-polyfill';
/**
* An API to interact with the scaffolder backend.
@@ -224,8 +225,11 @@ export class ScaffolderClient implements ScaffolderApi {
params.set('after', String(Number(after)));
}
- this.discoveryApi.getBaseUrl('scaffolder').then(
- baseUrl => {
+ Promise.all([
+ this.discoveryApi.getBaseUrl('scaffolder'),
+ this.identityApi?.getCredentials(),
+ ]).then(
+ ([baseUrl, credentials]) => {
const url = `${baseUrl}/v2/tasks/${encodeURIComponent(
taskId,
)}/eventstream`;
@@ -240,7 +244,12 @@ export class ScaffolderClient implements ScaffolderApi {
}
};
- const eventSource = new EventSource(url, { withCredentials: true });
+ const eventSource = new EventSourcePolyfill(url, {
+ withCredentials: true,
+ headers: credentials?.token
+ ? { Authorization: `Bearer ${credentials.token}` }
+ : {},
+ });
eventSource.addEventListener('log', processEvent);
eventSource.addEventListener('cancelled', processEvent);
eventSource.addEventListener('completion', (event: any) => {
diff --git a/plugins/search-backend-module-catalog/CHANGELOG.md b/plugins/search-backend-module-catalog/CHANGELOG.md
index bf64047538..f8c7e04d44 100644
--- a/plugins/search-backend-module-catalog/CHANGELOG.md
+++ b/plugins/search-backend-module-catalog/CHANGELOG.md
@@ -1,5 +1,21 @@
# @backstage/plugin-search-backend-module-catalog
+## 0.1.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/backend-tasks@0.5.2
+ - @backstage/plugin-search-backend-node@1.2.1
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/catalog-client@1.4.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/plugin-catalog-common@1.0.13
+ - @backstage/plugin-permission-common@0.7.5
+ - @backstage/plugin-search-common@1.2.3
+
## 0.1.1-next.1
### Patch Changes
diff --git a/plugins/search-backend-module-catalog/package.json b/plugins/search-backend-module-catalog/package.json
index 15421990e2..8e0e30d711 100644
--- a/plugins/search-backend-module-catalog/package.json
+++ b/plugins/search-backend-module-catalog/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-search-backend-module-catalog",
"description": "A module for the search backend that exports catalog modules",
- "version": "0.1.1-next.1",
+ "version": "0.1.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/search-backend-module-elasticsearch/CHANGELOG.md b/plugins/search-backend-module-elasticsearch/CHANGELOG.md
index a74c8e5c0d..e699ee60c7 100644
--- a/plugins/search-backend-module-elasticsearch/CHANGELOG.md
+++ b/plugins/search-backend-module-elasticsearch/CHANGELOG.md
@@ -1,5 +1,21 @@
# @backstage/plugin-search-backend-module-elasticsearch
+## 1.3.0
+
+### Minor Changes
+
+- 3d72bdb41c7: Upgrade to aws-sdk v3 and include OpenSearch Serverless support
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/integration-aws-node@0.1.3
+ - @backstage/plugin-search-backend-node@1.2.1
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/config@1.0.7
+ - @backstage/plugin-search-common@1.2.3
+
## 1.3.0-next.2
### Minor Changes
diff --git a/plugins/search-backend-module-elasticsearch/package.json b/plugins/search-backend-module-elasticsearch/package.json
index 20f12c3592..e8d999e840 100644
--- a/plugins/search-backend-module-elasticsearch/package.json
+++ b/plugins/search-backend-module-elasticsearch/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-search-backend-module-elasticsearch",
"description": "A module for the search backend that implements search using ElasticSearch",
- "version": "1.3.0-next.2",
+ "version": "1.3.0",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/search-backend-module-explore/CHANGELOG.md b/plugins/search-backend-module-explore/CHANGELOG.md
index df693832db..529cdcc99e 100644
--- a/plugins/search-backend-module-explore/CHANGELOG.md
+++ b/plugins/search-backend-module-explore/CHANGELOG.md
@@ -1,5 +1,18 @@
# @backstage/plugin-search-backend-module-explore
+## 0.1.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/backend-tasks@0.5.2
+ - @backstage/plugin-search-backend-node@1.2.1
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/config@1.0.7
+ - @backstage/plugin-explore-common@0.0.1
+ - @backstage/plugin-search-common@1.2.3
+
## 0.1.1-next.1
### Patch Changes
diff --git a/plugins/search-backend-module-explore/README.md b/plugins/search-backend-module-explore/README.md
index a87f2d78f9..e775cf42b6 100644
--- a/plugins/search-backend-module-explore/README.md
+++ b/plugins/search-backend-module-explore/README.md
@@ -39,3 +39,18 @@ backend.add(searchPlugin());
backend.add(searchModuleExploreCollator({ schedule }));
backend.start();
```
+
+### Using Auth Middleware
+
+If your Backstage instance uses service-to-service authentication you can pass an optional `tokenManager` to the collator factory. This will ensure that the collator makes authenticated requests to the explore backend.
+
+```tsx
+indexBuilder.addCollator({
+ schedule: every10MinutesSchedule,
+ factory: ToolDocumentCollatorFactory.fromConfig(env.config, {
+ discovery: env.discovery,
+ logger: env.logger,
+ tokenManager: env.tokenManager,
+ }),
+});
+```
diff --git a/plugins/search-backend-module-explore/api-report.md b/plugins/search-backend-module-explore/api-report.md
index 80e8c0c06b..50cda184a9 100644
--- a/plugins/search-backend-module-explore/api-report.md
+++ b/plugins/search-backend-module-explore/api-report.md
@@ -12,6 +12,7 @@ import { IndexableDocument } from '@backstage/plugin-search-common';
import { Logger } from 'winston';
import { PluginEndpointDiscovery } from '@backstage/backend-common';
import { Readable } from 'stream';
+import { TokenManager } from '@backstage/backend-common';
// @public
export interface ToolDocument extends IndexableDocument, ExploreTool {}
@@ -35,5 +36,6 @@ export class ToolDocumentCollatorFactory implements DocumentCollatorFactory {
export type ToolDocumentCollatorFactoryOptions = {
discovery: PluginEndpointDiscovery;
logger: Logger;
+ tokenManager?: TokenManager;
};
```
diff --git a/plugins/search-backend-module-explore/package.json b/plugins/search-backend-module-explore/package.json
index 00f63ef41e..6a6f92a9cc 100644
--- a/plugins/search-backend-module-explore/package.json
+++ b/plugins/search-backend-module-explore/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-search-backend-module-explore",
"description": "A module for the search backend that exports explore modules",
- "version": "0.1.1-next.1",
+ "version": "0.1.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/search-backend-module-explore/src/collators/ToolDocumentCollatorFactory.ts b/plugins/search-backend-module-explore/src/collators/ToolDocumentCollatorFactory.ts
index dd9872acec..bf6f07839b 100644
--- a/plugins/search-backend-module-explore/src/collators/ToolDocumentCollatorFactory.ts
+++ b/plugins/search-backend-module-explore/src/collators/ToolDocumentCollatorFactory.ts
@@ -14,7 +14,10 @@
* limitations under the License.
*/
-import { PluginEndpointDiscovery } from '@backstage/backend-common';
+import {
+ PluginEndpointDiscovery,
+ TokenManager,
+} from '@backstage/backend-common';
import { Config } from '@backstage/config';
import { ExploreTool } from '@backstage/plugin-explore-common';
import {
@@ -40,6 +43,7 @@ export interface ToolDocument extends IndexableDocument, ExploreTool {}
export type ToolDocumentCollatorFactoryOptions = {
discovery: PluginEndpointDiscovery;
logger: Logger;
+ tokenManager?: TokenManager;
};
/**
@@ -52,10 +56,12 @@ export class ToolDocumentCollatorFactory implements DocumentCollatorFactory {
private readonly discovery: PluginEndpointDiscovery;
private readonly logger: Logger;
+ private readonly tokenManager?: TokenManager;
private constructor(options: ToolDocumentCollatorFactoryOptions) {
this.discovery = options.discovery;
this.logger = options.logger;
+ this.tokenManager = options.tokenManager;
}
static fromConfig(
@@ -87,7 +93,17 @@ export class ToolDocumentCollatorFactory implements DocumentCollatorFactory {
private async fetchTools() {
const baseUrl = await this.discovery.getBaseUrl('explore');
- const response = await fetch(`${baseUrl}/tools`);
+
+ let headers = {};
+
+ if (this.tokenManager) {
+ const { token } = await this.tokenManager.getToken();
+ headers = {
+ Authorization: `Bearer ${token}`,
+ };
+ }
+
+ const response = await fetch(`${baseUrl}/tools`, headers);
if (!response.ok) {
throw new Error(
diff --git a/plugins/search-backend-module-pg/CHANGELOG.md b/plugins/search-backend-module-pg/CHANGELOG.md
index 9b9ddfa0ff..98354dd3ea 100644
--- a/plugins/search-backend-module-pg/CHANGELOG.md
+++ b/plugins/search-backend-module-pg/CHANGELOG.md
@@ -1,5 +1,16 @@
# @backstage/plugin-search-backend-module-pg
+## 0.5.6
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/plugin-search-backend-node@1.2.1
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/config@1.0.7
+ - @backstage/plugin-search-common@1.2.3
+
## 0.5.6-next.1
### Patch Changes
diff --git a/plugins/search-backend-module-pg/package.json b/plugins/search-backend-module-pg/package.json
index 5d63d913e0..e623ba034d 100644
--- a/plugins/search-backend-module-pg/package.json
+++ b/plugins/search-backend-module-pg/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-search-backend-module-pg",
"description": "A module for the search backend that implements search using PostgreSQL",
- "version": "0.5.6-next.1",
+ "version": "0.5.6",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/search-backend-module-techdocs/CHANGELOG.md b/plugins/search-backend-module-techdocs/CHANGELOG.md
index 83eed95d8e..fe6fc1420d 100644
--- a/plugins/search-backend-module-techdocs/CHANGELOG.md
+++ b/plugins/search-backend-module-techdocs/CHANGELOG.md
@@ -1,5 +1,22 @@
# @backstage/plugin-search-backend-module-techdocs
+## 0.1.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/plugin-techdocs-node@1.7.1
+ - @backstage/backend-tasks@0.5.2
+ - @backstage/plugin-search-backend-node@1.2.1
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/catalog-client@1.4.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/plugin-catalog-common@1.0.13
+ - @backstage/plugin-permission-common@0.7.5
+ - @backstage/plugin-search-common@1.2.3
+
## 0.1.1-next.1
### Patch Changes
diff --git a/plugins/search-backend-module-techdocs/package.json b/plugins/search-backend-module-techdocs/package.json
index f7d7151aeb..b45a7a3b66 100644
--- a/plugins/search-backend-module-techdocs/package.json
+++ b/plugins/search-backend-module-techdocs/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-search-backend-module-techdocs",
"description": "A module for the search backend that exports techdocs modules",
- "version": "0.1.1-next.1",
+ "version": "0.1.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/search-backend-node/CHANGELOG.md b/plugins/search-backend-node/CHANGELOG.md
index 00a828f132..7aca52d696 100644
--- a/plugins/search-backend-node/CHANGELOG.md
+++ b/plugins/search-backend-node/CHANGELOG.md
@@ -1,5 +1,18 @@
# @backstage/plugin-search-backend-node
+## 1.2.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/backend-tasks@0.5.2
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+ - @backstage/plugin-permission-common@0.7.5
+ - @backstage/plugin-search-common@1.2.3
+
## 1.2.1-next.1
### Patch Changes
diff --git a/plugins/search-backend-node/package.json b/plugins/search-backend-node/package.json
index 9d7b0b0210..21a38cf3b5 100644
--- a/plugins/search-backend-node/package.json
+++ b/plugins/search-backend-node/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-search-backend-node",
"description": "A library for Backstage backend plugins that want to interact with the search backend plugin",
- "version": "1.2.1-next.1",
+ "version": "1.2.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/search-backend/CHANGELOG.md b/plugins/search-backend/CHANGELOG.md
index fbc53b4f2d..5bbc969216 100644
--- a/plugins/search-backend/CHANGELOG.md
+++ b/plugins/search-backend/CHANGELOG.md
@@ -1,5 +1,22 @@
# @backstage/plugin-search-backend
+## 1.3.1
+
+### Patch Changes
+
+- 021cfbb5152: Added an OpenAPI 3.0 spec and enforced schema-first model on the router.
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/plugin-permission-node@0.7.8
+ - @backstage/plugin-auth-node@0.2.14
+ - @backstage/plugin-search-backend-node@1.2.1
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+ - @backstage/types@1.0.2
+ - @backstage/plugin-permission-common@0.7.5
+ - @backstage/plugin-search-common@1.2.3
+
## 1.3.1-next.2
### Patch Changes
diff --git a/plugins/search-backend/package.json b/plugins/search-backend/package.json
index 53059b2355..c7658ab754 100644
--- a/plugins/search-backend/package.json
+++ b/plugins/search-backend/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-search-backend",
"description": "The Backstage backend plugin that provides your backstage app with search",
- "version": "1.3.1-next.2",
+ "version": "1.3.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/search-react/CHANGELOG.md b/plugins/search-react/CHANGELOG.md
index 411953c6f9..6527d67bb9 100644
--- a/plugins/search-react/CHANGELOG.md
+++ b/plugins/search-react/CHANGELOG.md
@@ -1,5 +1,29 @@
# @backstage/plugin-search-react
+## 1.6.0
+
+### Minor Changes
+
+- 750e45539ad: Add close button & improve search input.
+
+ MUI's Paper wrapping the SearchBar in the SearchPage was removed, we recommend users update their apps accordingly.
+
+ SearchBarBase's TextField's label support added & aria-label uses label string if present, tests relying on the default placeholder value should still work unless custom placeholder was given.
+
+- 1ce7f84b2e8: accepts InputProp property that can override keys from default
+
+### Patch Changes
+
+- f785f0804cd: `SearchPagination` now automatically resets the page cursor when the page limit is changed
+- adb31096bc2: Fix text-overflow UI issue for Lifecycle spans in SearchFilter checkbox labels.
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/core-components@0.13.1
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/types@1.0.2
+ - @backstage/version-bridge@1.0.4
+ - @backstage/plugin-search-common@1.2.3
+
## 1.6.0-next.2
### Minor Changes
diff --git a/plugins/search-react/package.json b/plugins/search-react/package.json
index e424788e31..6a5b326f34 100644
--- a/plugins/search-react/package.json
+++ b/plugins/search-react/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-search-react",
- "version": "1.6.0-next.2",
+ "version": "1.6.0",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/search/CHANGELOG.md b/plugins/search/CHANGELOG.md
index f3c93f5142..2427adb905 100644
--- a/plugins/search/CHANGELOG.md
+++ b/plugins/search/CHANGELOG.md
@@ -1,5 +1,31 @@
# @backstage/plugin-search
+## 1.3.0
+
+### Minor Changes
+
+- 750e45539ad: Add close button & improve search input.
+
+ MUI's Paper wrapping the SearchBar in the SearchPage was removed, we recommend users update their apps accordingly.
+
+ SearchBarBase's TextField's label support added & aria-label uses label string if present, tests relying on the default placeholder value should still work unless custom placeholder was given.
+
+### Patch Changes
+
+- 0e3d8d69318: Fixed 404 Error when fetching search results due to URL encoding changes
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/plugin-search-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+ - @backstage/types@1.0.2
+ - @backstage/version-bridge@1.0.4
+ - @backstage/plugin-search-common@1.2.3
+
## 1.3.0-next.2
### Patch Changes
diff --git a/plugins/search/package.json b/plugins/search/package.json
index c4f7f680b6..f95a25ee40 100644
--- a/plugins/search/package.json
+++ b/plugins/search/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-search",
"description": "The Backstage plugin that provides your backstage app with search",
- "version": "1.3.0-next.2",
+ "version": "1.3.0",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/sentry/CHANGELOG.md b/plugins/sentry/CHANGELOG.md
index be844d6c4f..cd25c33475 100644
--- a/plugins/sentry/CHANGELOG.md
+++ b/plugins/sentry/CHANGELOG.md
@@ -1,5 +1,16 @@
# @backstage/plugin-sentry
+## 0.5.3
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+
## 0.5.3-next.2
### Patch Changes
diff --git a/plugins/sentry/package.json b/plugins/sentry/package.json
index 70177fc4d7..454b1b0259 100644
--- a/plugins/sentry/package.json
+++ b/plugins/sentry/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-sentry",
"description": "A Backstage plugin that integrates towards Sentry",
- "version": "0.5.3-next.2",
+ "version": "0.5.3",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/shortcuts/CHANGELOG.md b/plugins/shortcuts/CHANGELOG.md
index fab37db64c..d151c6cdb4 100644
--- a/plugins/shortcuts/CHANGELOG.md
+++ b/plugins/shortcuts/CHANGELOG.md
@@ -1,5 +1,16 @@
# @backstage/plugin-shortcuts
+## 0.3.10
+
+### Patch Changes
+
+- 8a7174e297c: Marked `LocalStoredShortcuts` as deprecated, replacing it with `DefaultShortcutsApi` whose naming more clearly suggests that the shortcuts aren't necessarily stored locally (it depends on the storage implementation).
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/core-components@0.13.1
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/types@1.0.2
+
## 0.3.10-next.2
### Patch Changes
diff --git a/plugins/shortcuts/package.json b/plugins/shortcuts/package.json
index 511247369f..21dd39256d 100644
--- a/plugins/shortcuts/package.json
+++ b/plugins/shortcuts/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-shortcuts",
"description": "A Backstage plugin that provides a shortcuts feature to the sidebar",
- "version": "0.3.10-next.2",
+ "version": "0.3.10",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/sonarqube-backend/CHANGELOG.md b/plugins/sonarqube-backend/CHANGELOG.md
index cf90264ece..ab84aef856 100644
--- a/plugins/sonarqube-backend/CHANGELOG.md
+++ b/plugins/sonarqube-backend/CHANGELOG.md
@@ -1,5 +1,14 @@
# @backstage/plugin-sonarqube-backend
+## 0.1.10
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+
## 0.1.10-next.1
### Patch Changes
diff --git a/plugins/sonarqube-backend/config.d.ts b/plugins/sonarqube-backend/config.d.ts
new file mode 100644
index 0000000000..9e612b6984
--- /dev/null
+++ b/plugins/sonarqube-backend/config.d.ts
@@ -0,0 +1,56 @@
+/*
+ * Copyright 2020 The Backstage Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+export interface Config {
+ /** Optional configurations for the SonarQube plugin */
+ sonarQube?: {
+ /**
+ * The base url of the sonarqube installation. Defaults to https://sonarcloud.io.
+ * @visibility frontend
+ */
+ baseUrl: string;
+
+ /**
+ * The api key to access the sonarqube instance under baseUrl.
+ * @visibility secret
+ */
+ apiKey: string;
+
+ /**
+ * The optional sonarqube instances.
+ * @visibility frontend
+ */
+ instances?: Array<{
+ /**
+ * The name of the sonarqube instance.
+ * @visibility frontend
+ */
+ name: string;
+
+ /**
+ * The base url of the sonarqube instance.
+ * @visibility frontend
+ */
+ baseUrl: string;
+
+ /**
+ * The api key to access the sonarqube instance.
+ * @visibility secret
+ */
+ apiKey: string;
+ }>;
+ };
+}
diff --git a/plugins/sonarqube-backend/package.json b/plugins/sonarqube-backend/package.json
index 9b452471de..5db81a09fd 100644
--- a/plugins/sonarqube-backend/package.json
+++ b/plugins/sonarqube-backend/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-sonarqube-backend",
- "version": "0.1.10-next.1",
+ "version": "0.1.10",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -40,6 +40,8 @@
"supertest": "^6.2.4"
},
"files": [
- "dist"
- ]
+ "dist",
+ "config.d.ts"
+ ],
+ "configSchema": "config.d.ts"
}
diff --git a/plugins/sonarqube/CHANGELOG.md b/plugins/sonarqube/CHANGELOG.md
index 1e186aa844..d9624d2449 100644
--- a/plugins/sonarqube/CHANGELOG.md
+++ b/plugins/sonarqube/CHANGELOG.md
@@ -1,5 +1,17 @@
# @backstage/plugin-sonarqube
+## 0.6.7
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/plugin-sonarqube-react@0.1.5
+
## 0.6.7-next.2
### Patch Changes
diff --git a/plugins/sonarqube/package.json b/plugins/sonarqube/package.json
index fcf247969b..1fbe857d9d 100644
--- a/plugins/sonarqube/package.json
+++ b/plugins/sonarqube/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-sonarqube",
"description": "",
- "version": "0.6.7-next.2",
+ "version": "0.6.7",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/splunk-on-call/CHANGELOG.md b/plugins/splunk-on-call/CHANGELOG.md
index 4f1741cefe..9685a0c003 100644
--- a/plugins/splunk-on-call/CHANGELOG.md
+++ b/plugins/splunk-on-call/CHANGELOG.md
@@ -1,5 +1,16 @@
# @backstage/plugin-splunk-on-call
+## 0.4.7
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+
## 0.4.7-next.2
### Patch Changes
diff --git a/plugins/splunk-on-call/package.json b/plugins/splunk-on-call/package.json
index 95293d447d..4d0a79927b 100644
--- a/plugins/splunk-on-call/package.json
+++ b/plugins/splunk-on-call/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-splunk-on-call",
"description": "A Backstage plugin that integrates towards Splunk On-Call",
- "version": "0.4.7-next.2",
+ "version": "0.4.7",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/stack-overflow-backend/CHANGELOG.md b/plugins/stack-overflow-backend/CHANGELOG.md
index 03006fd490..a82a7abb05 100644
--- a/plugins/stack-overflow-backend/CHANGELOG.md
+++ b/plugins/stack-overflow-backend/CHANGELOG.md
@@ -1,5 +1,14 @@
# @backstage/plugin-stack-overflow-backend
+## 0.2.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/config@1.0.7
+ - @backstage/plugin-search-common@1.2.3
+
## 0.2.1-next.1
### Patch Changes
diff --git a/plugins/stack-overflow-backend/package.json b/plugins/stack-overflow-backend/package.json
index fd08b70f52..29285a5972 100644
--- a/plugins/stack-overflow-backend/package.json
+++ b/plugins/stack-overflow-backend/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-stack-overflow-backend",
- "version": "0.2.1-next.1",
+ "version": "0.2.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/stack-overflow/CHANGELOG.md b/plugins/stack-overflow/CHANGELOG.md
index dad8fb3385..d0a05501a9 100644
--- a/plugins/stack-overflow/CHANGELOG.md
+++ b/plugins/stack-overflow/CHANGELOG.md
@@ -1,5 +1,19 @@
# @backstage/plugin-stack-overflow
+## 0.1.15
+
+### Patch Changes
+
+- c1ff65f315a: StackOverflowSearchResultListItem can now accept an empty result prop so that it can be rendered in the suggested SearchResultListItem pattern.
+- Updated dependencies
+ - @backstage/plugin-home@0.5.2
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-search-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/config@1.0.7
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/plugin-search-common@1.2.3
+
## 0.1.15-next.2
### Patch Changes
diff --git a/plugins/stack-overflow/api-report.md b/plugins/stack-overflow/api-report.md
index b006f263ed..3e27318acb 100644
--- a/plugins/stack-overflow/api-report.md
+++ b/plugins/stack-overflow/api-report.md
@@ -7,7 +7,7 @@
import { ApiRef } from '@backstage/core-plugin-api';
import { BackstagePlugin } from '@backstage/core-plugin-api';
-import { CardExtensionProps } from '@backstage/plugin-home';
+import { CardExtensionProps } from '@backstage/plugin-home-react';
import { default as React_2 } from 'react';
import { ResultHighlight } from '@backstage/plugin-search-common';
import { SearchResultListItemExtensionProps } from '@backstage/plugin-search-react';
diff --git a/plugins/stack-overflow/package.json b/plugins/stack-overflow/package.json
index 2f966224d2..e550e15762 100644
--- a/plugins/stack-overflow/package.json
+++ b/plugins/stack-overflow/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-stack-overflow",
- "version": "0.1.15-next.2",
+ "version": "0.1.15",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -25,7 +25,7 @@
"@backstage/config": "workspace:^",
"@backstage/core-components": "workspace:^",
"@backstage/core-plugin-api": "workspace:^",
- "@backstage/plugin-home": "workspace:^",
+ "@backstage/plugin-home-react": "workspace:^",
"@backstage/plugin-search-common": "workspace:^",
"@backstage/plugin-search-react": "workspace:^",
"@backstage/theme": "workspace:^",
diff --git a/plugins/stack-overflow/src/plugin.ts b/plugins/stack-overflow/src/plugin.ts
index 5be4c89cbe..017900bc02 100644
--- a/plugins/stack-overflow/src/plugin.ts
+++ b/plugins/stack-overflow/src/plugin.ts
@@ -20,7 +20,7 @@ import {
createApiFactory,
configApiRef,
} from '@backstage/core-plugin-api';
-import { createCardExtension } from '@backstage/plugin-home';
+import { createCardExtension } from '@backstage/plugin-home-react';
import { StackOverflowQuestionsContentProps } from './types';
import { stackOverflowApiRef, StackOverflowClient } from './api';
import { SearchResultListItemExtensionProps } from '@backstage/plugin-search-react';
diff --git a/plugins/stackstorm/CHANGELOG.md b/plugins/stackstorm/CHANGELOG.md
index 3763d9d295..c75324e862 100644
--- a/plugins/stackstorm/CHANGELOG.md
+++ b/plugins/stackstorm/CHANGELOG.md
@@ -1,5 +1,15 @@
# @backstage/plugin-stackstorm
+## 0.1.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/core-components@0.13.1
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+
## 0.1.2-next.1
### Patch Changes
diff --git a/plugins/stackstorm/package.json b/plugins/stackstorm/package.json
index 8787199746..f1ba49ca0b 100644
--- a/plugins/stackstorm/package.json
+++ b/plugins/stackstorm/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-stackstorm",
"description": "A Backstage plugin that integrates towards StackStorm",
- "version": "0.1.2-next.1",
+ "version": "0.1.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/tech-insights-backend-module-jsonfc/CHANGELOG.md b/plugins/tech-insights-backend-module-jsonfc/CHANGELOG.md
index 864c0cb830..fd3e6023f8 100644
--- a/plugins/tech-insights-backend-module-jsonfc/CHANGELOG.md
+++ b/plugins/tech-insights-backend-module-jsonfc/CHANGELOG.md
@@ -1,5 +1,16 @@
# @backstage/plugin-tech-insights-backend-module-jsonfc
+## 0.1.29
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/plugin-tech-insights-node@0.4.3
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+ - @backstage/plugin-tech-insights-common@0.2.10
+
## 0.1.29-next.1
### Patch Changes
diff --git a/plugins/tech-insights-backend-module-jsonfc/package.json b/plugins/tech-insights-backend-module-jsonfc/package.json
index 489f36e2f8..46ae292ff5 100644
--- a/plugins/tech-insights-backend-module-jsonfc/package.json
+++ b/plugins/tech-insights-backend-module-jsonfc/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-tech-insights-backend-module-jsonfc",
- "version": "0.1.29-next.1",
+ "version": "0.1.29",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/tech-insights-backend/CHANGELOG.md b/plugins/tech-insights-backend/CHANGELOG.md
index 1c3b902c3f..faaa4b1960 100644
--- a/plugins/tech-insights-backend/CHANGELOG.md
+++ b/plugins/tech-insights-backend/CHANGELOG.md
@@ -1,5 +1,20 @@
# @backstage/plugin-tech-insights-backend
+## 0.5.11
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/backend-tasks@0.5.2
+ - @backstage/plugin-tech-insights-node@0.4.3
+ - @backstage/catalog-client@1.4.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+ - @backstage/types@1.0.2
+ - @backstage/plugin-tech-insights-common@0.2.10
+
## 0.5.11-next.1
### Patch Changes
diff --git a/plugins/tech-insights-backend/package.json b/plugins/tech-insights-backend/package.json
index 09bb9c8d6f..2525d1e914 100644
--- a/plugins/tech-insights-backend/package.json
+++ b/plugins/tech-insights-backend/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-tech-insights-backend",
- "version": "0.5.11-next.1",
+ "version": "0.5.11",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/tech-insights-node/CHANGELOG.md b/plugins/tech-insights-node/CHANGELOG.md
index e5eec67a40..ee4a160a76 100644
--- a/plugins/tech-insights-node/CHANGELOG.md
+++ b/plugins/tech-insights-node/CHANGELOG.md
@@ -1,5 +1,16 @@
# @backstage/plugin-tech-insights-node
+## 0.4.3
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/backend-tasks@0.5.2
+ - @backstage/config@1.0.7
+ - @backstage/types@1.0.2
+ - @backstage/plugin-tech-insights-common@0.2.10
+
## 0.4.3-next.1
### Patch Changes
diff --git a/plugins/tech-insights-node/package.json b/plugins/tech-insights-node/package.json
index bc5c0816f7..b97076a11e 100644
--- a/plugins/tech-insights-node/package.json
+++ b/plugins/tech-insights-node/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-tech-insights-node",
- "version": "0.4.3-next.1",
+ "version": "0.4.3",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/tech-insights/CHANGELOG.md b/plugins/tech-insights/CHANGELOG.md
index 23fb28deea..4f36cfba16 100644
--- a/plugins/tech-insights/CHANGELOG.md
+++ b/plugins/tech-insights/CHANGELOG.md
@@ -1,5 +1,26 @@
# @backstage/plugin-tech-insights
+## 0.3.10
+
+### Patch Changes
+
+- 22963209d23: Added the possibility to customize the check description in the scorecard component.
+
+ - The `CheckResultRenderer` type now exposes an optional `description` method that allows to overwrite the description with a different string or a React component for a provided check result.
+
+ Until now only the `BooleanCheck` element could be overridden, but from now on it's also possible to override the description for a check.
+ As an example, the description could change depending on the check result. Refer to the [README](https://github.com/backstage/backstage/blob/master/plugins/tech-insights/README.md#adding-custom-rendering-components) file for more details
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+ - @backstage/types@1.0.2
+ - @backstage/plugin-tech-insights-common@0.2.10
+
## 0.3.10-next.2
### Patch Changes
diff --git a/plugins/tech-insights/package.json b/plugins/tech-insights/package.json
index 4e2604a33a..a6facfff46 100644
--- a/plugins/tech-insights/package.json
+++ b/plugins/tech-insights/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-tech-insights",
- "version": "0.3.10-next.2",
+ "version": "0.3.10",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/tech-radar/CHANGELOG.md b/plugins/tech-radar/CHANGELOG.md
index c6d0bd29cd..8250d4bfe8 100644
--- a/plugins/tech-radar/CHANGELOG.md
+++ b/plugins/tech-radar/CHANGELOG.md
@@ -1,5 +1,16 @@
# @backstage/plugin-tech-radar
+## 0.6.4
+
+### Patch Changes
+
+- be4fa53fab8: Fix description links when clicking entry in radar.
+- Added the ability to display a timeline to each entry in the details box
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/core-components@0.13.1
+ - @backstage/core-plugin-api@1.5.1
+
## 0.6.4-next.2
### Patch Changes
diff --git a/plugins/tech-radar/package.json b/plugins/tech-radar/package.json
index a5f6456850..7fb7520e25 100644
--- a/plugins/tech-radar/package.json
+++ b/plugins/tech-radar/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-tech-radar",
"description": "A Backstage plugin that lets you display a Tech Radar for your organization",
- "version": "0.6.4-next.2",
+ "version": "0.6.4",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/techdocs-addons-test-utils/CHANGELOG.md b/plugins/techdocs-addons-test-utils/CHANGELOG.md
index 051190ab61..ede86cb6bb 100644
--- a/plugins/techdocs-addons-test-utils/CHANGELOG.md
+++ b/plugins/techdocs-addons-test-utils/CHANGELOG.md
@@ -1,5 +1,21 @@
# @backstage/plugin-techdocs-addons-test-utils
+## 1.0.13
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-techdocs@1.6.2
+ - @backstage/plugin-catalog@1.11.0
+ - @backstage/core-app-api@1.8.0
+ - @backstage/plugin-search-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/integration-react@1.1.13
+ - @backstage/test-utils@1.3.1
+ - @backstage/plugin-techdocs-react@1.1.6
+ - @backstage/core-plugin-api@1.5.1
+
## 1.0.13-next.2
### Patch Changes
diff --git a/plugins/techdocs-addons-test-utils/package.json b/plugins/techdocs-addons-test-utils/package.json
index 7de356960f..2e31a0d6bd 100644
--- a/plugins/techdocs-addons-test-utils/package.json
+++ b/plugins/techdocs-addons-test-utils/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-techdocs-addons-test-utils",
- "version": "1.0.13-next.2",
+ "version": "1.0.13",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/techdocs-addons-test-utils/src/test-utils.tsx b/plugins/techdocs-addons-test-utils/src/test-utils.tsx
index e60a96402c..1a921437b1 100644
--- a/plugins/techdocs-addons-test-utils/src/test-utils.tsx
+++ b/plugins/techdocs-addons-test-utils/src/test-utils.tsx
@@ -278,7 +278,7 @@ export class TechDocsAddonTester {
render(this.build());
});
- const shadowHost = screen.getByTestId('techdocs-native-shadowroot');
+ const shadowHost = await screen.findByTestId('techdocs-native-shadowroot');
return {
...screen,
diff --git a/plugins/techdocs-backend/CHANGELOG.md b/plugins/techdocs-backend/CHANGELOG.md
index 8df2623fa0..309a3d3ea6 100644
--- a/plugins/techdocs-backend/CHANGELOG.md
+++ b/plugins/techdocs-backend/CHANGELOG.md
@@ -1,5 +1,23 @@
# @backstage/plugin-techdocs-backend
+## 1.6.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/integration@1.4.5
+ - @backstage/plugin-techdocs-node@1.7.1
+ - @backstage/plugin-search-backend-module-techdocs@0.1.1
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/catalog-client@1.4.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+ - @backstage/plugin-catalog-common@1.0.13
+ - @backstage/plugin-permission-common@0.7.5
+ - @backstage/plugin-search-common@1.2.3
+
## 1.6.2-next.1
### Patch Changes
diff --git a/plugins/techdocs-backend/examples/documented-component-uffizzi/catalog-info.yaml b/plugins/techdocs-backend/examples/documented-component-uffizzi/catalog-info.yaml
new file mode 100644
index 0000000000..a4d46593d3
--- /dev/null
+++ b/plugins/techdocs-backend/examples/documented-component-uffizzi/catalog-info.yaml
@@ -0,0 +1,12 @@
+apiVersion: backstage.io/v1alpha1
+kind: Component
+metadata:
+ name: documented-component-uffizzi
+ title: Documented Component (Uffizzi)
+ description: A Service with TechDocs documentation. Excl. PlantUML extension.
+ annotations:
+ backstage.io/techdocs-ref: dir:.
+spec:
+ type: service
+ lifecycle: experimental
+ owner: user:guest
diff --git a/plugins/techdocs-backend/examples/documented-component-uffizzi/docs/code/code-sample.md b/plugins/techdocs-backend/examples/documented-component-uffizzi/docs/code/code-sample.md
new file mode 100644
index 0000000000..f41ab1d506
--- /dev/null
+++ b/plugins/techdocs-backend/examples/documented-component-uffizzi/docs/code/code-sample.md
@@ -0,0 +1,31 @@
+# Sample Code
+
+This page provides some sample code which may be used in your example component.
+
+This code uses TypeScript, and the Markdown code fence to wrap the code.
+
+```typescript
+const serviceEntityPage = (
+
+
+
+
+
+
+
+
+
+
+
+
+);
+```
+
+Here is an example of Python code:
+
+```python
+def getUsersInGroup(targetGroup, secure=False):
+
+ if __debug__:
+ print('targetGroup=[' + targetGroup + ']')
+```
diff --git a/plugins/techdocs-backend/examples/documented-component-uffizzi/docs/extensions.md b/plugins/techdocs-backend/examples/documented-component-uffizzi/docs/extensions.md
new file mode 100644
index 0000000000..2b101efdef
--- /dev/null
+++ b/plugins/techdocs-backend/examples/documented-component-uffizzi/docs/extensions.md
@@ -0,0 +1,99 @@
+# Plugins & Extensions
+
+Just by including the TechDocs Core Plugin to your MkDocs site included with Backstage,
+you gain the immediate use of a variety of popular plugins and extensions to MkDocs.
+
+For more information and full details of the available features, see the
+[`mkdocs-techdocs-core` repository](https://github.com/backstage/mkdocs-techdocs-core#mkdocs-plugins-and-extensions).
+
+This page provides a demonstration of some of the available features.
+
+## Admonitions
+
+Admonitions are call outs that help catch a users attention.
+
+To define an admonition simply put the following Markdown into your content:
+
+```
+!!! warn
+ Defining admonitions can be addicting.
+```
+
+And they end up looking like this:
+
+
+!!! warn
+ Defining admonitions can be addicting.
+
+
+!!! note
+ You can learn a lot about TechDocs by just visiting the Backstage web site at
+ https://backstage.io/docs.
+
+
+!!! info
+ TechDocs is the core feature that supports documentation as code in Backstage.
+
+
+!!! tip
+ Don't forget to spell check your documentation.
+
+## Pymdownx Extensions
+
+Pymdownx (Python Markdown extensions) are a variety of smaller additions.
+
+### Details
+
+
+??? note "What is the answer to life, the universe, and everything? (click me for the answer)"
+ The answer is 42.
+
+
+??? note "What is 4 plus 4?"
+ The answer is 8.
+
+
+???+ note "How do I get support?"
+ You can get support by opening an issue in this repository. This detail is open by default
+ so it's more easily visible without requiring the user to click to open it.
+
+### Task Lists
+
+Automatic rendering of Markdown task lists.
+
+- [x] Phase 1
+- [x] Phase 2
+- [ ] Phase 3
+
+### Emojis
+
+Very nice job on documentation! :thumbsup:
+
+I've read a lot of documentation, but I love :heart: this document.
+
+Weather: :sunny: :umbrella: :cloud: :snowflake:
+
+Animals: :tiger: :horse: :turtle: :wolf: :frog:
+
+### Attributes
+
+[A Download Link](./images/backstage-logo-cncf.svg){: download }
+
+{: style="width: 100px" }
+
+### MDX truly sane lists
+
+- `attributes`
+
+- `customer`
+ - `first_name`
+ - `test`
+ - `family_name`
+ - `email`
+- `person`
+ - `first_name`
+ - `family_name`
+ - `birth_date`
+- `subscription_id`
+
+- `request`
diff --git a/plugins/techdocs-backend/examples/documented-component-uffizzi/docs/images/backstage-logo-cncf.svg b/plugins/techdocs-backend/examples/documented-component-uffizzi/docs/images/backstage-logo-cncf.svg
new file mode 100644
index 0000000000..b5ff591d1b
--- /dev/null
+++ b/plugins/techdocs-backend/examples/documented-component-uffizzi/docs/images/backstage-logo-cncf.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/plugins/techdocs-backend/examples/documented-component-uffizzi/docs/index.md b/plugins/techdocs-backend/examples/documented-component-uffizzi/docs/index.md
new file mode 100644
index 0000000000..6295a69406
--- /dev/null
+++ b/plugins/techdocs-backend/examples/documented-component-uffizzi/docs/index.md
@@ -0,0 +1,55 @@
+# Welcome!
+
+This is a basic example of documentation. It is intended as a showcase of some of the
+features that TechDocs provides out of the box.
+
+You can see also:
+
+- [A sub page](sub-page.md)
+- [Inline code examples](code/code-sample.md)
+- [Plugin & Extension examples](extensions.md) - Diagrams, emojis, visual formatting.
+
+## Basic Markdown
+
+Headings:
+
+# h1
+
+## h2
+
+### h3
+
+#### h4
+
+##### h5
+
+###### h6
+
+Here is a bulleted list:
+
+- Item one
+- Item two
+- Item Three
+
+Check out the [Markdown Guide](https://www.markdownguide.org/) to learn more about how to
+simply create documentation.
+
+You can also learn more about how to configure and setup this documentation in Backstage,
+[read up on the TechDocs Overview](https://backstage.io/docs/features/techdocs/).
+
+## Image Example
+
+This documentation is powered by Backstage's TechDocs feature:
+
+
+
+## Table Example
+
+While this documentation isn't comprehensive, in the future it should cover the following
+topics outlined in this example table:
+
+| Topic | Description |
+| ------- | ------------------------------------------------------------ |
+| Topic 1 | An introductory topic to help you learn about the component. |
+| Topic 2 | A more detailed topic that explains more information. |
+| Topic 3 | A final topic that provides conclusions and lessons learned. |
diff --git a/plugins/techdocs-backend/examples/documented-component-uffizzi/docs/sub-page.md b/plugins/techdocs-backend/examples/documented-component-uffizzi/docs/sub-page.md
new file mode 100644
index 0000000000..987f5e8a95
--- /dev/null
+++ b/plugins/techdocs-backend/examples/documented-component-uffizzi/docs/sub-page.md
@@ -0,0 +1,12 @@
+# Another page in our documentation
+
+This sub-page can be used to elaborate on a specific part of the component.
+
+## Details
+
+It is linked off the main page, and due to its inclusion in the `mkdocs.yml` file,
+becomes part of the auto-generated site navigation.
+
+## MkDocs
+
+Visit https://www.mkdocs.org for more information about the MkDocs tool.
diff --git a/plugins/techdocs-backend/examples/documented-component-uffizzi/mkdocs.yml b/plugins/techdocs-backend/examples/documented-component-uffizzi/mkdocs.yml
new file mode 100644
index 0000000000..1a159a4d12
--- /dev/null
+++ b/plugins/techdocs-backend/examples/documented-component-uffizzi/mkdocs.yml
@@ -0,0 +1,12 @@
+site_name: 'Example Documentation'
+repo_url: https://github.com/backstage/backstage
+edit_uri: edit/master/plugins/techdocs-backend/examples/documented-component/docs
+
+nav:
+ - Home: index.md
+ - Subpage: sub-page.md
+ - 'Code Sample': code/code-sample.md
+ - Extensions: extensions.md
+
+plugins:
+ - techdocs-core
diff --git a/plugins/techdocs-backend/package.json b/plugins/techdocs-backend/package.json
index b90c299621..999bc7f93b 100644
--- a/plugins/techdocs-backend/package.json
+++ b/plugins/techdocs-backend/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-techdocs-backend",
"description": "The Backstage backend plugin that renders technical documentation for your components",
- "version": "1.6.2-next.1",
+ "version": "1.6.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/techdocs-module-addons-contrib/CHANGELOG.md b/plugins/techdocs-module-addons-contrib/CHANGELOG.md
index b267a89b8b..01765d39de 100644
--- a/plugins/techdocs-module-addons-contrib/CHANGELOG.md
+++ b/plugins/techdocs-module-addons-contrib/CHANGELOG.md
@@ -1,5 +1,18 @@
# @backstage/plugin-techdocs-module-addons-contrib
+## 1.0.13
+
+### Patch Changes
+
+- 6afc7f052ca: Show cursor pointer when hovering on lightbox
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/integration@1.4.5
+ - @backstage/core-components@0.13.1
+ - @backstage/integration-react@1.1.13
+ - @backstage/plugin-techdocs-react@1.1.6
+ - @backstage/core-plugin-api@1.5.1
+
## 1.0.13-next.2
### Patch Changes
diff --git a/plugins/techdocs-module-addons-contrib/package.json b/plugins/techdocs-module-addons-contrib/package.json
index 527e5487dc..7ef4a1f2c1 100644
--- a/plugins/techdocs-module-addons-contrib/package.json
+++ b/plugins/techdocs-module-addons-contrib/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-techdocs-module-addons-contrib",
"description": "Plugin module for contributed TechDocs Addons",
- "version": "1.0.13-next.2",
+ "version": "1.0.13",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/techdocs-node/CHANGELOG.md b/plugins/techdocs-node/CHANGELOG.md
index e3715430c9..7737a13a13 100644
--- a/plugins/techdocs-node/CHANGELOG.md
+++ b/plugins/techdocs-node/CHANGELOG.md
@@ -1,5 +1,19 @@
# @backstage/plugin-techdocs-node
+## 1.7.1
+
+### Patch Changes
+
+- 3659c71c5d9: Standardize `@aws-sdk` v3 versions
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/integration@1.4.5
+ - @backstage/integration-aws-node@0.1.3
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+ - @backstage/plugin-search-common@1.2.3
+
## 1.7.1-next.1
### Patch Changes
diff --git a/plugins/techdocs-node/package.json b/plugins/techdocs-node/package.json
index dde49d6b2c..d3ec2232cd 100644
--- a/plugins/techdocs-node/package.json
+++ b/plugins/techdocs-node/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-techdocs-node",
"description": "Common node.js functionalities for TechDocs, to be shared between techdocs-backend plugin and techdocs-cli",
- "version": "1.7.1-next.1",
+ "version": "1.7.1",
"main": "src/index.ts",
"types": "src/index.ts",
"publishConfig": {
diff --git a/plugins/techdocs-react/CHANGELOG.md b/plugins/techdocs-react/CHANGELOG.md
index 5247e6906f..9176553916 100644
--- a/plugins/techdocs-react/CHANGELOG.md
+++ b/plugins/techdocs-react/CHANGELOG.md
@@ -1,5 +1,16 @@
# @backstage/plugin-techdocs-react
+## 1.1.6
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/version-bridge@1.0.4
+
## 1.1.6-next.1
### Patch Changes
diff --git a/plugins/techdocs-react/README.md b/plugins/techdocs-react/README.md
index 548ba8be5a..53e9fc6a3a 100644
--- a/plugins/techdocs-react/README.md
+++ b/plugins/techdocs-react/README.md
@@ -5,5 +5,6 @@ This package provides frontend utilities for TechDocs and Addons.
## Installation
```sh
+# From your Backstage root directory
yarn add --cwd packages/app @backstage/plugin-techdocs-react
```
diff --git a/plugins/techdocs-react/package.json b/plugins/techdocs-react/package.json
index 8a8c2c5cbc..ee523969c1 100644
--- a/plugins/techdocs-react/package.json
+++ b/plugins/techdocs-react/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-techdocs-react",
"description": "Shared frontend utilities for TechDocs and Addons",
- "version": "1.1.6-next.1",
+ "version": "1.1.6",
"publishConfig": {
"access": "public",
"main": "dist/index.esm.js",
diff --git a/plugins/techdocs/CHANGELOG.md b/plugins/techdocs/CHANGELOG.md
index f076a23b0b..5d21c2a5fe 100644
--- a/plugins/techdocs/CHANGELOG.md
+++ b/plugins/techdocs/CHANGELOG.md
@@ -1,5 +1,24 @@
# @backstage/plugin-techdocs
+## 1.6.2
+
+### Patch Changes
+
+- 863beb49498: Re-add the possibility to have trailing slashes in Techdocs navigation.
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/integration@1.4.5
+ - @backstage/plugin-search-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/integration-react@1.1.13
+ - @backstage/plugin-techdocs-react@1.1.6
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+ - @backstage/plugin-search-common@1.2.3
+
## 1.6.2-next.2
### Patch Changes
diff --git a/plugins/techdocs/api-report.md b/plugins/techdocs/api-report.md
index 6e14c52939..27af44bb13 100644
--- a/plugins/techdocs/api-report.md
+++ b/plugins/techdocs/api-report.md
@@ -20,11 +20,14 @@ import { ReactNode } from 'react';
import { ResultHighlight } from '@backstage/plugin-search-common';
import { RouteRef } from '@backstage/core-plugin-api';
import { SearchResultListItemExtensionProps } from '@backstage/plugin-search-react';
+import { SyncResult as SyncResult_2 } from '@backstage/plugin-techdocs-react';
import { TableColumn } from '@backstage/core-components';
import { TableOptions } from '@backstage/core-components';
import { TableProps } from '@backstage/core-components';
+import { TechDocsApi as TechDocsApi_2 } from '@backstage/plugin-techdocs-react';
import { TechDocsEntityMetadata as TechDocsEntityMetadata_2 } from '@backstage/plugin-techdocs-react';
import { TechDocsMetadata as TechDocsMetadata_2 } from '@backstage/plugin-techdocs-react';
+import { TechDocsStorageApi as TechDocsStorageApi_2 } from '@backstage/plugin-techdocs-react';
import { ToolbarProps } from '@material-ui/core';
import { UserListFilterKind } from '@backstage/plugin-catalog-react';
@@ -237,7 +240,7 @@ export interface TechDocsApi {
export const techdocsApiRef: ApiRef;
// @public
-export class TechDocsClient implements TechDocsApi {
+export class TechDocsClient implements TechDocsApi_2 {
constructor(options: {
configApi: Config;
discoveryApi: DiscoveryApi;
@@ -442,7 +445,7 @@ export interface TechDocsStorageApi {
export const techdocsStorageApiRef: ApiRef;
// @public
-export class TechDocsStorageClient implements TechDocsStorageApi {
+export class TechDocsStorageClient implements TechDocsStorageApi_2 {
constructor(options: {
configApi: Config;
discoveryApi: DiscoveryApi;
@@ -471,6 +474,6 @@ export class TechDocsStorageClient implements TechDocsStorageApi {
syncEntityDocs(
entityId: CompoundEntityRef,
logHandler?: (line: string) => void,
- ): Promise;
+ ): Promise;
}
```
diff --git a/plugins/techdocs/package.json b/plugins/techdocs/package.json
index 1004055c45..cf6315286b 100644
--- a/plugins/techdocs/package.json
+++ b/plugins/techdocs/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-techdocs",
"description": "The Backstage plugin that renders technical documentation for your components",
- "version": "1.6.2-next.2",
+ "version": "1.6.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/techdocs/src/client.ts b/plugins/techdocs/src/client.ts
index 499a56580c..8680e14468 100644
--- a/plugins/techdocs/src/client.ts
+++ b/plugins/techdocs/src/client.ts
@@ -23,11 +23,13 @@ import {
} from '@backstage/core-plugin-api';
import { NotFoundError, ResponseError } from '@backstage/errors';
import {
+ SyncResult,
+ TechDocsApi,
TechDocsEntityMetadata,
TechDocsMetadata,
+ TechDocsStorageApi,
} from '@backstage/plugin-techdocs-react';
import { EventSourcePolyfill } from 'event-source-polyfill';
-import { SyncResult, TechDocsApi, TechDocsStorageApi } from './api';
/**
* API to talk to `techdocs-backend`.
@@ -189,7 +191,7 @@ export class TechDocsStorageClient implements TechDocsStorageApi {
* @param entityId - Object containing entity data like name, namespace, etc.
* @param logHandler - Callback to receive log messages from the build process
* @returns Whether documents are currently synchronized to newest version
- * @throws Throws error on error from sync endpoint in Techdocs Backend
+ * @throws Throws error on error from sync endpoint in TechDocs Backend
*/
async syncEntityDocs(
entityId: CompoundEntityRef,
diff --git a/plugins/techdocs/src/home/components/TechDocsPageWrapper.tsx b/plugins/techdocs/src/home/components/TechDocsPageWrapper.tsx
index 52511bda19..a6192c13ee 100644
--- a/plugins/techdocs/src/home/components/TechDocsPageWrapper.tsx
+++ b/plugins/techdocs/src/home/components/TechDocsPageWrapper.tsx
@@ -29,7 +29,7 @@ export type TechDocsPageWrapperProps = {
};
/**
- * Component wrapping a techdocs page with Page and Header components
+ * Component wrapping a TechDocs page with Page and Header components
*
* @public
*/
diff --git a/plugins/techdocs/src/reader/README.md b/plugins/techdocs/src/reader/README.md
index fe1d1ff488..58697298c6 100644
--- a/plugins/techdocs/src/reader/README.md
+++ b/plugins/techdocs/src/reader/README.md
@@ -2,7 +2,7 @@
The TechDocs reader is a component that fetches a remote page, runs transformers on it and renders it into a shadow dom.
-Currently there's no easy way to customize which transformers to run or add new ones. If that is needed you would have to fork the techdocs plugin and make your changes in that fork.
+Currently there's no easy way to customize which transformers to run or add new ones. If that is needed you would have to fork the TechDocs plugin and make your changes in that fork.
Transformers are functions that optionally takes in parameters from the Reader.tsx component and returns a function which gets passed the DOM of the fetched page. A very simple transformer can look like this.
diff --git a/plugins/todo-backend/CHANGELOG.md b/plugins/todo-backend/CHANGELOG.md
index 84d8807698..17a2eb8cf8 100644
--- a/plugins/todo-backend/CHANGELOG.md
+++ b/plugins/todo-backend/CHANGELOG.md
@@ -1,5 +1,20 @@
# @backstage/plugin-todo-backend
+## 0.1.42
+
+### Patch Changes
+
+- 901f1ada325: Added OpenAPI schema
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/integration@1.4.5
+ - @backstage/plugin-catalog-node@1.3.6
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/catalog-client@1.4.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+
## 0.1.42-next.1
### Patch Changes
diff --git a/plugins/todo-backend/package.json b/plugins/todo-backend/package.json
index 9385ec0ee6..84da46ced1 100644
--- a/plugins/todo-backend/package.json
+++ b/plugins/todo-backend/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-todo-backend",
"description": "A Backstage backend plugin that lets you browse TODO comments in your source code",
- "version": "0.1.42-next.1",
+ "version": "0.1.42",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/todo/CHANGELOG.md b/plugins/todo/CHANGELOG.md
index 0a0a205d06..960f71c444 100644
--- a/plugins/todo/CHANGELOG.md
+++ b/plugins/todo/CHANGELOG.md
@@ -1,5 +1,17 @@
# @backstage/plugin-todo
+## 0.2.20
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+
## 0.2.20-next.2
### Patch Changes
diff --git a/plugins/todo/package.json b/plugins/todo/package.json
index 3dd5822154..f388d19885 100644
--- a/plugins/todo/package.json
+++ b/plugins/todo/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-todo",
"description": "A Backstage plugin that lets you browse TODO comments in your source code",
- "version": "0.2.20-next.2",
+ "version": "0.2.20",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/user-settings-backend/CHANGELOG.md b/plugins/user-settings-backend/CHANGELOG.md
index 4420e63f8e..bf3b2630e0 100644
--- a/plugins/user-settings-backend/CHANGELOG.md
+++ b/plugins/user-settings-backend/CHANGELOG.md
@@ -1,5 +1,17 @@
# @backstage/plugin-user-settings-backend
+## 0.1.9
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/plugin-auth-node@0.2.14
+ - @backstage/backend-plugin-api@0.5.2
+ - @backstage/catalog-model@1.3.0
+ - @backstage/errors@1.1.5
+ - @backstage/types@1.0.2
+
## 0.1.9-next.1
### Patch Changes
diff --git a/plugins/user-settings-backend/package.json b/plugins/user-settings-backend/package.json
index 6fdeee038d..25cc5ee812 100644
--- a/plugins/user-settings-backend/package.json
+++ b/plugins/user-settings-backend/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-user-settings-backend",
"description": "The Backstage backend plugin to manage user settings",
- "version": "0.1.9-next.1",
+ "version": "0.1.9",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/user-settings/CHANGELOG.md b/plugins/user-settings/CHANGELOG.md
index 5fd080fe60..7240ceccd9 100644
--- a/plugins/user-settings/CHANGELOG.md
+++ b/plugins/user-settings/CHANGELOG.md
@@ -1,5 +1,19 @@
# @backstage/plugin-user-settings
+## 0.7.3
+
+### Patch Changes
+
+- 473db605a4f: Fix config schema definition.
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-app-api@1.8.0
+ - @backstage/core-components@0.13.1
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+ - @backstage/types@1.0.2
+
## 0.7.3-next.2
### Patch Changes
diff --git a/plugins/user-settings/package.json b/plugins/user-settings/package.json
index 98d688bcda..55672e358a 100644
--- a/plugins/user-settings/package.json
+++ b/plugins/user-settings/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-user-settings",
"description": "A Backstage plugin that provides a settings page",
- "version": "0.7.3-next.2",
+ "version": "0.7.3",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/user-settings/src/components/AuthProviders/ProviderSettingsItem.tsx b/plugins/user-settings/src/components/AuthProviders/ProviderSettingsItem.tsx
index 852af7e78b..e3fb597a15 100644
--- a/plugins/user-settings/src/components/AuthProviders/ProviderSettingsItem.tsx
+++ b/plugins/user-settings/src/components/AuthProviders/ProviderSettingsItem.tsx
@@ -37,6 +37,8 @@ import {
} from '@backstage/core-plugin-api';
import { ProviderSettingsAvatar } from './ProviderSettingsAvatar';
+const emptyProfile: ProfileInfo = {};
+
/** @public */
export const ProviderSettingsItem = (props: {
title: string;
@@ -49,8 +51,7 @@ export const ProviderSettingsItem = (props: {
const api = useApi(apiRef);
const errorApi = useApi(errorApiRef);
const [signedIn, setSignedIn] = useState(false);
- const emptyProfile: ProfileInfo = {};
- const [profile, setProfile] = useState(emptyProfile);
+ const [profile, setProfile] = useState(emptyProfile);
useEffect(() => {
let didCancel = false;
@@ -58,6 +59,10 @@ export const ProviderSettingsItem = (props: {
const subscription = api
.sessionState$()
.subscribe((sessionState: SessionState) => {
+ if (sessionState !== SessionState.SignedIn) {
+ setProfile(emptyProfile);
+ setSignedIn(false);
+ }
if (!didCancel) {
api
.getProfile({ optional: true })
diff --git a/plugins/vault-backend/CHANGELOG.md b/plugins/vault-backend/CHANGELOG.md
index 33fcd6017c..ceaa496252 100644
--- a/plugins/vault-backend/CHANGELOG.md
+++ b/plugins/vault-backend/CHANGELOG.md
@@ -1,5 +1,15 @@
# @backstage/plugin-vault-backend
+## 0.3.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.5
+ - @backstage/backend-tasks@0.5.2
+ - @backstage/config@1.0.7
+ - @backstage/errors@1.1.5
+
## 0.3.1-next.1
### Patch Changes
diff --git a/plugins/vault-backend/package.json b/plugins/vault-backend/package.json
index 0f4467ca80..26e30c91ad 100644
--- a/plugins/vault-backend/package.json
+++ b/plugins/vault-backend/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-vault-backend",
"description": "A Backstage backend plugin that integrates towards Vault",
- "version": "0.3.1-next.1",
+ "version": "0.3.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/vault/CHANGELOG.md b/plugins/vault/CHANGELOG.md
index e5b521cdf9..7c2f0f0adf 100644
--- a/plugins/vault/CHANGELOG.md
+++ b/plugins/vault/CHANGELOG.md
@@ -1,5 +1,17 @@
# @backstage/plugin-vault
+## 0.1.12
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/plugin-catalog-react@1.6.0
+ - @backstage/core-components@0.13.1
+ - @backstage/catalog-model@1.3.0
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+
## 0.1.12-next.2
### Patch Changes
diff --git a/plugins/vault/package.json b/plugins/vault/package.json
index 813217876c..0cc1df1d6b 100644
--- a/plugins/vault/package.json
+++ b/plugins/vault/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-vault",
"description": "A Backstage plugin that integrates towards Vault",
- "version": "0.1.12-next.2",
+ "version": "0.1.12",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/xcmetrics/CHANGELOG.md b/plugins/xcmetrics/CHANGELOG.md
index fbd75b686f..641a0697e0 100644
--- a/plugins/xcmetrics/CHANGELOG.md
+++ b/plugins/xcmetrics/CHANGELOG.md
@@ -1,5 +1,15 @@
# @backstage/plugin-xcmetrics
+## 0.2.38
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/theme@0.3.0
+ - @backstage/core-components@0.13.1
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/errors@1.1.5
+
## 0.2.38-next.1
### Patch Changes
diff --git a/plugins/xcmetrics/package.json b/plugins/xcmetrics/package.json
index 54dea03612..5f21dd0951 100644
--- a/plugins/xcmetrics/package.json
+++ b/plugins/xcmetrics/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-xcmetrics",
"description": "A Backstage plugin that shows XCode build metrics for your components",
- "version": "0.2.38-next.1",
+ "version": "0.2.38",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/storybook/yarn.lock b/storybook/yarn.lock
index a4d5837ba5..8be840ef57 100644
--- a/storybook/yarn.lock
+++ b/storybook/yarn.lock
@@ -2943,90 +2943,90 @@ __metadata:
languageName: node
linkType: hard
-"@swc/core-darwin-arm64@npm:1.3.51":
- version: 1.3.51
- resolution: "@swc/core-darwin-arm64@npm:1.3.51"
+"@swc/core-darwin-arm64@npm:1.3.59":
+ version: 1.3.59
+ resolution: "@swc/core-darwin-arm64@npm:1.3.59"
conditions: os=darwin & cpu=arm64
languageName: node
linkType: hard
-"@swc/core-darwin-x64@npm:1.3.51":
- version: 1.3.51
- resolution: "@swc/core-darwin-x64@npm:1.3.51"
+"@swc/core-darwin-x64@npm:1.3.59":
+ version: 1.3.59
+ resolution: "@swc/core-darwin-x64@npm:1.3.59"
conditions: os=darwin & cpu=x64
languageName: node
linkType: hard
-"@swc/core-linux-arm-gnueabihf@npm:1.3.51":
- version: 1.3.51
- resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.51"
+"@swc/core-linux-arm-gnueabihf@npm:1.3.59":
+ version: 1.3.59
+ resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.59"
conditions: os=linux & cpu=arm
languageName: node
linkType: hard
-"@swc/core-linux-arm64-gnu@npm:1.3.51":
- version: 1.3.51
- resolution: "@swc/core-linux-arm64-gnu@npm:1.3.51"
+"@swc/core-linux-arm64-gnu@npm:1.3.59":
+ version: 1.3.59
+ resolution: "@swc/core-linux-arm64-gnu@npm:1.3.59"
conditions: os=linux & cpu=arm64 & libc=glibc
languageName: node
linkType: hard
-"@swc/core-linux-arm64-musl@npm:1.3.51":
- version: 1.3.51
- resolution: "@swc/core-linux-arm64-musl@npm:1.3.51"
+"@swc/core-linux-arm64-musl@npm:1.3.59":
+ version: 1.3.59
+ resolution: "@swc/core-linux-arm64-musl@npm:1.3.59"
conditions: os=linux & cpu=arm64 & libc=musl
languageName: node
linkType: hard
-"@swc/core-linux-x64-gnu@npm:1.3.51":
- version: 1.3.51
- resolution: "@swc/core-linux-x64-gnu@npm:1.3.51"
+"@swc/core-linux-x64-gnu@npm:1.3.59":
+ version: 1.3.59
+ resolution: "@swc/core-linux-x64-gnu@npm:1.3.59"
conditions: os=linux & cpu=x64 & libc=glibc
languageName: node
linkType: hard
-"@swc/core-linux-x64-musl@npm:1.3.51":
- version: 1.3.51
- resolution: "@swc/core-linux-x64-musl@npm:1.3.51"
+"@swc/core-linux-x64-musl@npm:1.3.59":
+ version: 1.3.59
+ resolution: "@swc/core-linux-x64-musl@npm:1.3.59"
conditions: os=linux & cpu=x64 & libc=musl
languageName: node
linkType: hard
-"@swc/core-win32-arm64-msvc@npm:1.3.51":
- version: 1.3.51
- resolution: "@swc/core-win32-arm64-msvc@npm:1.3.51"
+"@swc/core-win32-arm64-msvc@npm:1.3.59":
+ version: 1.3.59
+ resolution: "@swc/core-win32-arm64-msvc@npm:1.3.59"
conditions: os=win32 & cpu=arm64
languageName: node
linkType: hard
-"@swc/core-win32-ia32-msvc@npm:1.3.51":
- version: 1.3.51
- resolution: "@swc/core-win32-ia32-msvc@npm:1.3.51"
+"@swc/core-win32-ia32-msvc@npm:1.3.59":
+ version: 1.3.59
+ resolution: "@swc/core-win32-ia32-msvc@npm:1.3.59"
conditions: os=win32 & cpu=ia32
languageName: node
linkType: hard
-"@swc/core-win32-x64-msvc@npm:1.3.51":
- version: 1.3.51
- resolution: "@swc/core-win32-x64-msvc@npm:1.3.51"
+"@swc/core-win32-x64-msvc@npm:1.3.59":
+ version: 1.3.59
+ resolution: "@swc/core-win32-x64-msvc@npm:1.3.59"
conditions: os=win32 & cpu=x64
languageName: node
linkType: hard
"@swc/core@npm:^1.3.46":
- version: 1.3.51
- resolution: "@swc/core@npm:1.3.51"
+ version: 1.3.59
+ resolution: "@swc/core@npm:1.3.59"
dependencies:
- "@swc/core-darwin-arm64": 1.3.51
- "@swc/core-darwin-x64": 1.3.51
- "@swc/core-linux-arm-gnueabihf": 1.3.51
- "@swc/core-linux-arm64-gnu": 1.3.51
- "@swc/core-linux-arm64-musl": 1.3.51
- "@swc/core-linux-x64-gnu": 1.3.51
- "@swc/core-linux-x64-musl": 1.3.51
- "@swc/core-win32-arm64-msvc": 1.3.51
- "@swc/core-win32-ia32-msvc": 1.3.51
- "@swc/core-win32-x64-msvc": 1.3.51
+ "@swc/core-darwin-arm64": 1.3.59
+ "@swc/core-darwin-x64": 1.3.59
+ "@swc/core-linux-arm-gnueabihf": 1.3.59
+ "@swc/core-linux-arm64-gnu": 1.3.59
+ "@swc/core-linux-arm64-musl": 1.3.59
+ "@swc/core-linux-x64-gnu": 1.3.59
+ "@swc/core-linux-x64-musl": 1.3.59
+ "@swc/core-win32-arm64-msvc": 1.3.59
+ "@swc/core-win32-ia32-msvc": 1.3.59
+ "@swc/core-win32-x64-msvc": 1.3.59
peerDependencies:
"@swc/helpers": ^0.5.0
dependenciesMeta:
@@ -3053,7 +3053,7 @@ __metadata:
peerDependenciesMeta:
"@swc/helpers":
optional: true
- checksum: f4e72d347b26353fbb48eae110a63c939922a38b20730ea010f5ae3dd15434f212dce582df05556ec35e677c089dfb6d00f5dd6fc655f8c9a7829458e4301469
+ checksum: 0283f39cf49cd12a6dc7062ef9ea4fa93e1a4f622ce46903a09605219f4f47ed5ad03925c6146d09ffe6ee02a89bb14e3c82eb86b4c60ecce4985ea6e078ffcf
languageName: node
linkType: hard
diff --git a/yarn.lock b/yarn.lock
index 82626c846e..2e6f814cf5 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2248,7 +2248,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/helper-module-imports@npm:^7.0.0, @babel/helper-module-imports@npm:^7.12.13, @babel/helper-module-imports@npm:^7.16.0, @babel/helper-module-imports@npm:^7.18.6":
+"@babel/helper-module-imports@npm:^7.0.0, @babel/helper-module-imports@npm:^7.12.13, @babel/helper-module-imports@npm:^7.16.0, @babel/helper-module-imports@npm:^7.16.7, @babel/helper-module-imports@npm:^7.18.6":
version: 7.18.6
resolution: "@babel/helper-module-imports@npm:7.18.6"
dependencies:
@@ -2730,7 +2730,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-syntax-jsx@npm:^7.0.0, @babel/plugin-syntax-jsx@npm:^7.18.6, @babel/plugin-syntax-jsx@npm:^7.7.2":
+"@babel/plugin-syntax-jsx@npm:^7.0.0, @babel/plugin-syntax-jsx@npm:^7.17.12, @babel/plugin-syntax-jsx@npm:^7.18.6, @babel/plugin-syntax-jsx@npm:^7.7.2":
version: 7.18.6
resolution: "@babel/plugin-syntax-jsx@npm:7.18.6"
dependencies:
@@ -3472,7 +3472,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.1.2, @babel/runtime@npm:^7.10.1, @babel/runtime@npm:^7.12.1, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.14.6, @babel/runtime@npm:^7.15.4, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.18.6, @babel/runtime@npm:^7.2.0, @babel/runtime@npm:^7.20.1, @babel/runtime@npm:^7.20.13, @babel/runtime@npm:^7.20.7, @babel/runtime@npm:^7.3.1, @babel/runtime@npm:^7.4.4, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.6.0, @babel/runtime@npm:^7.7.6, @babel/runtime@npm:^7.8.3, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.8.7, @babel/runtime@npm:^7.9.2":
+"@babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.1.2, @babel/runtime@npm:^7.10.1, @babel/runtime@npm:^7.12.1, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.14.6, @babel/runtime@npm:^7.15.4, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.18.6, @babel/runtime@npm:^7.2.0, @babel/runtime@npm:^7.20.1, @babel/runtime@npm:^7.20.13, @babel/runtime@npm:^7.20.7, @babel/runtime@npm:^7.21.0, @babel/runtime@npm:^7.3.1, @babel/runtime@npm:^7.4.4, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.6.0, @babel/runtime@npm:^7.7.6, @babel/runtime@npm:^7.8.3, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.8.7, @babel/runtime@npm:^7.9.2":
version: 7.21.0
resolution: "@babel/runtime@npm:7.21.0"
dependencies:
@@ -3787,7 +3787,7 @@ __metadata:
languageName: unknown
linkType: soft
-"@backstage/catalog-client@^1.4.1, @backstage/catalog-client@workspace:^, @backstage/catalog-client@workspace:packages/catalog-client":
+"@backstage/catalog-client@workspace:^, @backstage/catalog-client@workspace:packages/catalog-client":
version: 0.0.0-use.local
resolution: "@backstage/catalog-client@workspace:packages/catalog-client"
dependencies:
@@ -4088,110 +4088,7 @@ __metadata:
languageName: unknown
linkType: soft
-"@backstage/core-components@npm:^0.12.3":
- version: 0.12.5
- resolution: "@backstage/core-components@npm:0.12.5"
- dependencies:
- "@backstage/config": ^1.0.7
- "@backstage/core-plugin-api": ^1.5.0
- "@backstage/errors": ^1.1.5
- "@backstage/theme": ^0.2.18
- "@backstage/version-bridge": ^1.0.3
- "@material-table/core": ^3.1.0
- "@material-ui/core": ^4.12.2
- "@material-ui/icons": ^4.9.1
- "@material-ui/lab": 4.0.0-alpha.57
- "@react-hookz/web": ^20.0.0
- "@types/react-sparklines": ^1.7.0
- "@types/react-text-truncate": ^0.14.0
- ansi-regex: ^6.0.1
- classnames: ^2.2.6
- d3-selection: ^3.0.0
- d3-shape: ^3.0.0
- d3-zoom: ^3.0.0
- dagre: ^0.8.5
- history: ^5.0.0
- immer: ^9.0.1
- lodash: ^4.17.21
- pluralize: ^8.0.0
- prop-types: ^15.7.2
- qs: ^6.9.4
- rc-progress: 3.4.1
- react-helmet: 6.1.0
- react-hook-form: ^7.12.2
- react-markdown: ^8.0.0
- react-sparklines: ^1.7.0
- react-syntax-highlighter: ^15.4.5
- react-text-truncate: ^0.19.0
- react-use: ^17.3.2
- react-virtualized-auto-sizer: ^1.0.6
- react-window: ^1.8.6
- remark-gfm: ^3.0.1
- zen-observable: ^0.10.0
- zod: ~3.18.0
- peerDependencies:
- "@types/react": ^16.13.1 || ^17.0.0
- react: ^16.13.1 || ^17.0.0
- react-dom: ^16.13.1 || ^17.0.0
- react-router-dom: 6.0.0-beta.0 || ^6.3.0
- checksum: 8308c1b90247911f6cf22963b530cef169287f508ff29d159d0c83758134dd43bd5acd2113350690a46a02246bc05dca975bcc38325000aefb1c93c80e2f19c7
- languageName: node
- linkType: hard
-
-"@backstage/core-components@npm:^0.13.0":
- version: 0.13.0
- resolution: "@backstage/core-components@npm:0.13.0"
- dependencies:
- "@backstage/config": ^1.0.7
- "@backstage/core-plugin-api": ^1.5.1
- "@backstage/errors": ^1.1.5
- "@backstage/theme": ^0.2.19
- "@backstage/version-bridge": ^1.0.4
- "@date-io/core": ^1.3.13
- "@material-table/core": ^3.1.0
- "@material-ui/core": ^4.12.2
- "@material-ui/icons": ^4.9.1
- "@material-ui/lab": 4.0.0-alpha.61
- "@react-hookz/web": ^20.0.0
- "@types/react": ^16.13.1 || ^17.0.0
- "@types/react-sparklines": ^1.7.0
- "@types/react-text-truncate": ^0.14.0
- ansi-regex: ^6.0.1
- classnames: ^2.2.6
- d3-selection: ^3.0.0
- d3-shape: ^3.0.0
- d3-zoom: ^3.0.0
- dagre: ^0.8.5
- history: ^5.0.0
- immer: ^9.0.1
- linkify-react: 4.1.1
- linkifyjs: 4.1.1
- lodash: ^4.17.21
- pluralize: ^8.0.0
- prop-types: ^15.7.2
- qs: ^6.9.4
- rc-progress: 3.4.1
- react-helmet: 6.1.0
- react-hook-form: ^7.12.2
- react-markdown: ^8.0.0
- react-sparklines: ^1.7.0
- react-syntax-highlighter: ^15.4.5
- react-text-truncate: ^0.19.0
- react-use: ^17.3.2
- react-virtualized-auto-sizer: ^1.0.11
- react-window: ^1.8.6
- remark-gfm: ^3.0.1
- zen-observable: ^0.10.0
- zod: ^3.21.4
- peerDependencies:
- react: ^16.13.1 || ^17.0.0
- react-dom: ^16.13.1 || ^17.0.0
- react-router-dom: 6.0.0-beta.0 || ^6.3.0
- checksum: 49c5301ff45c6f7516e78e80f46b25d2efb8d9ba510c7718f94c25b1f7d9b2869840db7ec896fbf9d083ceca8fa8cddf718a78eeb074993e95d474195f4bc9cd
- languageName: node
- linkType: hard
-
-"@backstage/core-components@workspace:^, @backstage/core-components@workspace:packages/core-components":
+"@backstage/core-components@^0.13.0, @backstage/core-components@workspace:^, @backstage/core-components@workspace:packages/core-components":
version: 0.0.0-use.local
resolution: "@backstage/core-components@workspace:packages/core-components"
dependencies:
@@ -4266,6 +4163,56 @@ __metadata:
languageName: unknown
linkType: soft
+"@backstage/core-components@npm:^0.12.3":
+ version: 0.12.5
+ resolution: "@backstage/core-components@npm:0.12.5"
+ dependencies:
+ "@backstage/config": ^1.0.7
+ "@backstage/core-plugin-api": ^1.5.0
+ "@backstage/errors": ^1.1.5
+ "@backstage/theme": ^0.2.18
+ "@backstage/version-bridge": ^1.0.3
+ "@material-table/core": ^3.1.0
+ "@material-ui/core": ^4.12.2
+ "@material-ui/icons": ^4.9.1
+ "@material-ui/lab": 4.0.0-alpha.57
+ "@react-hookz/web": ^20.0.0
+ "@types/react-sparklines": ^1.7.0
+ "@types/react-text-truncate": ^0.14.0
+ ansi-regex: ^6.0.1
+ classnames: ^2.2.6
+ d3-selection: ^3.0.0
+ d3-shape: ^3.0.0
+ d3-zoom: ^3.0.0
+ dagre: ^0.8.5
+ history: ^5.0.0
+ immer: ^9.0.1
+ lodash: ^4.17.21
+ pluralize: ^8.0.0
+ prop-types: ^15.7.2
+ qs: ^6.9.4
+ rc-progress: 3.4.1
+ react-helmet: 6.1.0
+ react-hook-form: ^7.12.2
+ react-markdown: ^8.0.0
+ react-sparklines: ^1.7.0
+ react-syntax-highlighter: ^15.4.5
+ react-text-truncate: ^0.19.0
+ react-use: ^17.3.2
+ react-virtualized-auto-sizer: ^1.0.6
+ react-window: ^1.8.6
+ remark-gfm: ^3.0.1
+ zen-observable: ^0.10.0
+ zod: ~3.18.0
+ peerDependencies:
+ "@types/react": ^16.13.1 || ^17.0.0
+ react: ^16.13.1 || ^17.0.0
+ react-dom: ^16.13.1 || ^17.0.0
+ react-router-dom: 6.0.0-beta.0 || ^6.3.0
+ checksum: 8308c1b90247911f6cf22963b530cef169287f508ff29d159d0c83758134dd43bd5acd2113350690a46a02246bc05dca975bcc38325000aefb1c93c80e2f19c7
+ languageName: node
+ linkType: hard
+
"@backstage/core-plugin-api@^1.3.0, @backstage/core-plugin-api@^1.5.0, @backstage/core-plugin-api@^1.5.1, @backstage/core-plugin-api@workspace:^, @backstage/core-plugin-api@workspace:packages/core-plugin-api":
version: 0.0.0-use.local
resolution: "@backstage/core-plugin-api@workspace:packages/core-plugin-api"
@@ -4395,28 +4342,7 @@ __metadata:
languageName: unknown
linkType: soft
-"@backstage/integration-react@npm:^1.1.12":
- version: 1.1.12
- resolution: "@backstage/integration-react@npm:1.1.12"
- dependencies:
- "@backstage/config": ^1.0.7
- "@backstage/core-components": ^0.13.0
- "@backstage/core-plugin-api": ^1.5.1
- "@backstage/integration": ^1.4.4
- "@backstage/theme": ^0.2.19
- "@material-ui/core": ^4.12.2
- "@material-ui/icons": ^4.9.1
- "@material-ui/lab": 4.0.0-alpha.61
- react-use: ^17.2.4
- peerDependencies:
- react: ^16.13.1 || ^17.0.0
- react-dom: ^16.13.1 || ^17.0.0
- react-router-dom: 6.0.0-beta.0 || ^6.3.0
- checksum: c7ae5754f074f3cee020a5dfca50deecaccd0f5a8510a1446bb1070d7b9b6e32a82564cff77b98ef63b19fde5a29aceaf4b8e8662dd1a3ed00c408c8ae06dc65
- languageName: node
- linkType: hard
-
-"@backstage/integration-react@workspace:^, @backstage/integration-react@workspace:packages/integration-react":
+"@backstage/integration-react@^1.1.12, @backstage/integration-react@workspace:^, @backstage/integration-react@workspace:packages/integration-react":
version: 0.0.0-use.local
resolution: "@backstage/integration-react@workspace:packages/integration-react"
dependencies:
@@ -4447,22 +4373,6 @@ __metadata:
languageName: unknown
linkType: soft
-"@backstage/integration@npm:^1.4.4":
- version: 1.4.4
- resolution: "@backstage/integration@npm:1.4.4"
- dependencies:
- "@backstage/config": ^1.0.7
- "@backstage/errors": ^1.1.5
- "@octokit/auth-app": ^4.0.0
- "@octokit/rest": ^19.0.3
- cross-fetch: ^3.1.5
- git-url-parse: ^13.0.0
- lodash: ^4.17.21
- luxon: ^3.0.0
- checksum: 715310efe55b3c2fb93f5197bc1422917822a15a7550aae9d84b257bb0a6cff2bfab9a44296a977a56651499fbecd0ef31f954f92a62cc94bfbc7319d9a48c04
- languageName: node
- linkType: hard
-
"@backstage/integration@workspace:^, @backstage/integration@workspace:packages/integration":
version: 0.0.0-use.local
resolution: "@backstage/integration@workspace:packages/integration"
@@ -5561,7 +5471,7 @@ __metadata:
"@types/lodash": ^4.14.151
lodash: ^4.17.21
luxon: ^3.0.0
- msw: ^0.49.0
+ msw: ^1.0.0
node-fetch: ^2.6.7
uuid: ^8.0.0
winston: ^3.2.1
@@ -5626,7 +5536,7 @@ __metadata:
languageName: unknown
linkType: soft
-"@backstage/plugin-catalog-common@^1.0.10, @backstage/plugin-catalog-common@^1.0.13, @backstage/plugin-catalog-common@workspace:^, @backstage/plugin-catalog-common@workspace:plugins/catalog-common":
+"@backstage/plugin-catalog-common@^1.0.10, @backstage/plugin-catalog-common@workspace:^, @backstage/plugin-catalog-common@workspace:plugins/catalog-common":
version: 0.0.0-use.local
resolution: "@backstage/plugin-catalog-common@workspace:plugins/catalog-common"
dependencies:
@@ -5764,43 +5674,7 @@ __metadata:
languageName: unknown
linkType: soft
-"@backstage/plugin-catalog-react@npm:^1.2.4, @backstage/plugin-catalog-react@npm:^1.5.0":
- version: 1.5.0
- resolution: "@backstage/plugin-catalog-react@npm:1.5.0"
- dependencies:
- "@backstage/catalog-client": ^1.4.1
- "@backstage/catalog-model": ^1.3.0
- "@backstage/core-components": ^0.13.0
- "@backstage/core-plugin-api": ^1.5.1
- "@backstage/errors": ^1.1.5
- "@backstage/integration": ^1.4.4
- "@backstage/plugin-catalog-common": ^1.0.13
- "@backstage/plugin-permission-common": ^0.7.5
- "@backstage/plugin-permission-react": ^0.4.12
- "@backstage/theme": ^0.2.19
- "@backstage/types": ^1.0.2
- "@backstage/version-bridge": ^1.0.4
- "@material-ui/core": ^4.12.2
- "@material-ui/icons": ^4.9.1
- "@material-ui/lab": 4.0.0-alpha.61
- "@types/react": ^16.13.1 || ^17.0.0
- classnames: ^2.2.6
- jwt-decode: ^3.1.0
- lodash: ^4.17.21
- material-ui-popup-state: ^1.9.3
- qs: ^6.9.4
- react-use: ^17.2.4
- yaml: ^2.0.0
- zen-observable: ^0.10.0
- peerDependencies:
- react: ^16.13.1 || ^17.0.0
- react-dom: ^16.13.1 || ^17.0.0
- react-router-dom: 6.0.0-beta.0 || ^6.3.0
- checksum: 0ffa1a9ecf142df389e2ecdbda1fae1718d4b65782654d99cd1de562520aae6ecc4677c15aff50a10fee9d9e89a35d2978e53da8f5f7129deef02c7044eb6e46
- languageName: node
- linkType: hard
-
-"@backstage/plugin-catalog-react@workspace:^, @backstage/plugin-catalog-react@workspace:plugins/catalog-react":
+"@backstage/plugin-catalog-react@^1.2.4, @backstage/plugin-catalog-react@^1.5.0, @backstage/plugin-catalog-react@workspace:^, @backstage/plugin-catalog-react@workspace:plugins/catalog-react":
version: 0.0.0-use.local
resolution: "@backstage/plugin-catalog-react@workspace:plugins/catalog-react"
dependencies:
@@ -5823,6 +5697,7 @@ __metadata:
"@material-ui/core": ^4.12.2
"@material-ui/icons": ^4.9.1
"@material-ui/lab": 4.0.0-alpha.61
+ "@react-hookz/web": ^23.0.0
"@testing-library/dom": ^8.0.0
"@testing-library/jest-dom": ^5.10.1
"@testing-library/react": ^12.1.3
@@ -6264,7 +6139,7 @@ __metadata:
express-promise-router: ^4.1.0
fs-extra: ^10.0.0
lodash: ^4.17.21
- msw: ^0.47.0
+ msw: ^1.0.0
node-fetch: ^2.6.7
ping: ^0.4.1
semver: ^7.3.2
@@ -6307,7 +6182,7 @@ __metadata:
"@testing-library/user-event": ^14.0.0
"@types/node": "*"
cross-fetch: ^3.1.5
- msw: ^0.47.0
+ msw: ^1.0.0
react-json-view: ^1.21.3
react-use: ^17.2.4
peerDependencies:
@@ -6871,6 +6746,7 @@ __metadata:
"@backstage/core-plugin-api": "workspace:^"
"@backstage/dev-utils": "workspace:^"
"@backstage/integration": "workspace:^"
+ "@backstage/integration-react": "workspace:^"
"@backstage/plugin-catalog-react": "workspace:^"
"@backstage/test-utils": "workspace:^"
"@backstage/theme": "workspace:^"
@@ -6885,6 +6761,7 @@ __metadata:
"@types/node": ^16.11.26
"@types/react": ^16.13.1 || ^17.0.0
cross-fetch: ^3.1.5
+ git-url-parse: ^13.0.0
luxon: ^3.0.0
msw: ^1.0.0
react-use: ^17.2.4
@@ -7162,39 +7039,36 @@ __metadata:
languageName: unknown
linkType: soft
-"@backstage/plugin-home@npm:^0.5.1":
- version: 0.5.1
- resolution: "@backstage/plugin-home@npm:0.5.1"
+"@backstage/plugin-home-react@workspace:^, @backstage/plugin-home-react@workspace:plugins/home-react":
+ version: 0.0.0-use.local
+ resolution: "@backstage/plugin-home-react@workspace:plugins/home-react"
dependencies:
- "@backstage/catalog-model": ^1.3.0
- "@backstage/config": ^1.0.7
- "@backstage/core-components": ^0.13.0
- "@backstage/core-plugin-api": ^1.5.1
- "@backstage/plugin-catalog-react": ^1.5.0
- "@backstage/theme": ^0.2.19
+ "@backstage/cli": "workspace:^"
+ "@backstage/core-app-api": "workspace:^"
+ "@backstage/core-components": "workspace:^"
+ "@backstage/core-plugin-api": "workspace:^"
+ "@backstage/dev-utils": "workspace:^"
+ "@backstage/test-utils": "workspace:^"
"@material-ui/core": ^4.12.2
"@material-ui/icons": ^4.9.1
- "@material-ui/lab": 4.0.0-alpha.61
- "@rjsf/core-v5": "npm:@rjsf/core@5.6.0"
- "@rjsf/material-ui": 5.6.0
"@rjsf/utils": 5.6.0
- "@rjsf/validator-ajv8": 5.6.0
+ "@testing-library/dom": ^8.0.0
+ "@testing-library/jest-dom": ^5.10.1
+ "@testing-library/react": ^12.1.3
+ "@testing-library/user-event": ^14.0.0
+ "@types/node": ^16.11.26
"@types/react": ^16.13.1 || ^17.0.0
- lodash: ^4.17.21
- object-hash: ^3.0.0
- react-grid-layout: ^1.3.4
- react-resizable: ^3.0.4
- react-use: ^17.2.4
- zod: ~3.21.4
+ "@types/react-grid-layout": ^1.3.2
+ cross-fetch: ^3.1.5
+ msw: ^1.0.0
peerDependencies:
react: ^16.13.1 || ^17.0.0
react-dom: ^16.13.1 || ^17.0.0
react-router-dom: 6.0.0-beta.0 || ^6.3.0
- checksum: 0470e0d4848818c59fdf5c3765b769c22bf2b47e26b0ed0c80398baac6a8e1ac703e94152dc20498bfda790aec18a2af65605fcd8c6eb2e7ba7b85eb6ce80b69
- languageName: node
- linkType: hard
+ languageName: unknown
+ linkType: soft
-"@backstage/plugin-home@workspace:^, @backstage/plugin-home@workspace:plugins/home":
+"@backstage/plugin-home@^0.5.1, @backstage/plugin-home@workspace:^, @backstage/plugin-home@workspace:plugins/home":
version: 0.0.0-use.local
resolution: "@backstage/plugin-home@workspace:plugins/home"
dependencies:
@@ -7206,6 +7080,7 @@ __metadata:
"@backstage/core-plugin-api": "workspace:^"
"@backstage/dev-utils": "workspace:^"
"@backstage/plugin-catalog-react": "workspace:^"
+ "@backstage/plugin-home-react": "workspace:^"
"@backstage/test-utils": "workspace:^"
"@backstage/theme": "workspace:^"
"@material-ui/core": ^4.12.2
@@ -7287,6 +7162,7 @@ __metadata:
"@backstage/plugin-auth-node": "workspace:^"
"@backstage/plugin-jenkins-common": "workspace:^"
"@backstage/plugin-permission-common": "workspace:^"
+ "@backstage/plugin-permission-node": "workspace:^"
"@types/express": ^4.17.6
"@types/jenkins": ^0.23.1
"@types/supertest": ^2.0.8
@@ -7482,6 +7358,7 @@ __metadata:
"@backstage/test-utils": "workspace:^"
"@backstage/theme": "workspace:^"
"@kubernetes-models/apimachinery": ^1.1.0
+ "@kubernetes-models/base": ^4.0.1
"@kubernetes/client-node": 0.18.1
"@material-ui/core": ^4.12.2
"@material-ui/icons": ^4.9.1
@@ -7574,6 +7451,7 @@ __metadata:
dependencies:
"@backstage/backend-common": "workspace:^"
"@backstage/backend-tasks": "workspace:^"
+ "@backstage/backend-test-utils": "workspace:^"
"@backstage/catalog-client": "workspace:^"
"@backstage/catalog-model": "workspace:^"
"@backstage/cli": "workspace:^"
@@ -7957,7 +7835,7 @@ __metadata:
languageName: unknown
linkType: soft
-"@backstage/plugin-permission-common@^0.7.5, @backstage/plugin-permission-common@workspace:^, @backstage/plugin-permission-common@workspace:plugins/permission-common":
+"@backstage/plugin-permission-common@workspace:^, @backstage/plugin-permission-common@workspace:plugins/permission-common":
version: 0.0.0-use.local
resolution: "@backstage/plugin-permission-common@workspace:plugins/permission-common"
dependencies:
@@ -7995,7 +7873,7 @@ __metadata:
languageName: unknown
linkType: soft
-"@backstage/plugin-permission-react@^0.4.12, @backstage/plugin-permission-react@workspace:^, @backstage/plugin-permission-react@workspace:plugins/permission-react":
+"@backstage/plugin-permission-react@workspace:^, @backstage/plugin-permission-react@workspace:plugins/permission-react":
version: 0.0.0-use.local
resolution: "@backstage/plugin-permission-react@workspace:plugins/permission-react"
dependencies:
@@ -8534,7 +8412,7 @@ __metadata:
"@uiw/react-codemirror": ^4.9.3
classnames: ^2.2.6
cross-fetch: ^3.1.5
- event-source-polyfill: 1.0.25
+ event-source-polyfill: ^1.0.31
git-url-parse: ^13.0.0
humanize-duration: ^3.25.1
immer: ^9.0.1
@@ -9001,7 +8879,7 @@ __metadata:
"@backstage/core-components": "workspace:^"
"@backstage/core-plugin-api": "workspace:^"
"@backstage/dev-utils": "workspace:^"
- "@backstage/plugin-home": "workspace:^"
+ "@backstage/plugin-home-react": "workspace:^"
"@backstage/plugin-search-common": "workspace:^"
"@backstage/plugin-search-react": "workspace:^"
"@backstage/test-utils": "workspace:^"
@@ -9749,9 +9627,13 @@ __metadata:
resolution: "@backstage/theme@workspace:packages/theme"
dependencies:
"@backstage/cli": "workspace:^"
- "@material-ui/core": ^4.12.2
+ "@emotion/react": ^11.10.5
+ "@emotion/styled": ^11.10.5
+ "@mui/material": ^5.12.2
"@types/react": ^16.13.1 || ^17.0.0
peerDependencies:
+ "@material-ui/core": ^4.12.2
+ "@types/react": ^16.13.1 || ^17.0.0
react: ^16.13.1 || ^17.0.0
react-dom: ^16.13.1 || ^17.0.0
languageName: unknown
@@ -9768,7 +9650,7 @@ __metadata:
languageName: unknown
linkType: soft
-"@backstage/version-bridge@^1.0.3, @backstage/version-bridge@^1.0.4, @backstage/version-bridge@workspace:^, @backstage/version-bridge@workspace:packages/version-bridge":
+"@backstage/version-bridge@^1.0.3, @backstage/version-bridge@workspace:^, @backstage/version-bridge@workspace:packages/version-bridge":
version: 0.0.0-use.local
resolution: "@backstage/version-bridge@workspace:packages/version-bridge"
dependencies:
@@ -10279,6 +10161,41 @@ __metadata:
languageName: node
linkType: hard
+"@emotion/babel-plugin@npm:^11.10.5":
+ version: 11.10.5
+ resolution: "@emotion/babel-plugin@npm:11.10.5"
+ dependencies:
+ "@babel/helper-module-imports": ^7.16.7
+ "@babel/plugin-syntax-jsx": ^7.17.12
+ "@babel/runtime": ^7.18.3
+ "@emotion/hash": ^0.9.0
+ "@emotion/memoize": ^0.8.0
+ "@emotion/serialize": ^1.1.1
+ babel-plugin-macros: ^3.1.0
+ convert-source-map: ^1.5.0
+ escape-string-regexp: ^4.0.0
+ find-root: ^1.1.0
+ source-map: ^0.5.7
+ stylis: 4.1.3
+ peerDependencies:
+ "@babel/core": ^7.0.0
+ checksum: e3353499c76c4422d6e900c0dfab73607056d9da86161a3f27c3459c193c4908050c5d252c68fcde231e13f02a9d8e0dc07d260317ae0e5206841e331cc4caae
+ languageName: node
+ linkType: hard
+
+"@emotion/cache@npm:^11.10.5, @emotion/cache@npm:^11.10.7":
+ version: 11.10.7
+ resolution: "@emotion/cache@npm:11.10.7"
+ dependencies:
+ "@emotion/memoize": ^0.8.0
+ "@emotion/sheet": ^1.2.1
+ "@emotion/utils": ^1.2.0
+ "@emotion/weak-memoize": ^0.3.0
+ stylis: 4.1.3
+ checksum: 6b1efed2dffc93dac419409d91f6d57a200d858ec5ffa4b7c30080fdbd93db431ff86bb779c5b8830b8373f3c5dd754d9beb386604ed2667c7d55608ff653dfc
+ languageName: node
+ linkType: hard
+
"@emotion/hash@npm:^0.8.0":
version: 0.8.0
resolution: "@emotion/hash@npm:0.8.0"
@@ -10286,19 +10203,93 @@ __metadata:
languageName: node
linkType: hard
-"@emotion/is-prop-valid@npm:^1.1.0":
- version: 1.1.2
- resolution: "@emotion/is-prop-valid@npm:1.1.2"
- dependencies:
- "@emotion/memoize": ^0.7.4
- checksum: 58b1f2d429a589f8f5bc2c33a8732cbb7bbcb17131a103511ef9a94ac754d7eeb53d627f947da480cd977f9d419fd92e244991680292f3287204159652745707
+"@emotion/hash@npm:^0.9.0":
+ version: 0.9.0
+ resolution: "@emotion/hash@npm:0.9.0"
+ checksum: b63428f7c8186607acdca5d003700cecf0ded519d0b5c5cc3b3154eafcad6ff433f8361bd2bac8882715b557e6f06945694aeb6ba8b25c6095d7a88570e2e0bb
languageName: node
linkType: hard
-"@emotion/memoize@npm:^0.7.4":
- version: 0.7.5
- resolution: "@emotion/memoize@npm:0.7.5"
- checksum: 83da8d4a7649a92c72f960817692bc6be13cc13e107b9f7e878d63766525ed4402881bfeb3cda61145c050281e7e260f114a0a2870515527346f2ef896b915b3
+"@emotion/is-prop-valid@npm:^1.1.0, @emotion/is-prop-valid@npm:^1.2.0":
+ version: 1.2.0
+ resolution: "@emotion/is-prop-valid@npm:1.2.0"
+ dependencies:
+ "@emotion/memoize": ^0.8.0
+ checksum: cc7a19850a4c5b24f1514665289442c8c641709e6f7711067ad550e05df331da0692a16148e85eda6f47e31b3261b64d74c5e25194d053223be16231f969d633
+ languageName: node
+ linkType: hard
+
+"@emotion/memoize@npm:^0.8.0":
+ version: 0.8.0
+ resolution: "@emotion/memoize@npm:0.8.0"
+ checksum: c87bb110b829edd8e1c13b90a6bc37cebc39af29c7599a1e66a48e06f9bec43e8e53495ba86278cc52e7589549492c8dfdc81d19f4fdec0cee6ba13d2ad2c928
+ languageName: node
+ linkType: hard
+
+"@emotion/react@npm:^11.10.5":
+ version: 11.10.5
+ resolution: "@emotion/react@npm:11.10.5"
+ dependencies:
+ "@babel/runtime": ^7.18.3
+ "@emotion/babel-plugin": ^11.10.5
+ "@emotion/cache": ^11.10.5
+ "@emotion/serialize": ^1.1.1
+ "@emotion/use-insertion-effect-with-fallbacks": ^1.0.0
+ "@emotion/utils": ^1.2.0
+ "@emotion/weak-memoize": ^0.3.0
+ hoist-non-react-statics: ^3.3.1
+ peerDependencies:
+ "@babel/core": ^7.0.0
+ react: ">=16.8.0"
+ peerDependenciesMeta:
+ "@babel/core":
+ optional: true
+ "@types/react":
+ optional: true
+ checksum: 32b67b28e9b6d6c53b970072680697f04c2521441050bdeb19a1a7f0164af549b4dad39ff375eda1b6a3cf1cc86ba2c6fa55460ec040e6ebbca3e9ec58353cf7
+ languageName: node
+ linkType: hard
+
+"@emotion/serialize@npm:^1.1.1":
+ version: 1.1.1
+ resolution: "@emotion/serialize@npm:1.1.1"
+ dependencies:
+ "@emotion/hash": ^0.9.0
+ "@emotion/memoize": ^0.8.0
+ "@emotion/unitless": ^0.8.0
+ "@emotion/utils": ^1.2.0
+ csstype: ^3.0.2
+ checksum: 24cfd5b16e6f2335c032ca33804a876e0442aaf8f9c94d269d23735ebd194fb1ed142542dd92191a3e6ef8bad5bd560dfc5aaf363a1b70954726dbd4dd93085c
+ languageName: node
+ linkType: hard
+
+"@emotion/sheet@npm:^1.2.1":
+ version: 1.2.1
+ resolution: "@emotion/sheet@npm:1.2.1"
+ checksum: ce78763588ea522438156344d9f592203e2da582d8d67b32e1b0b98eaba26994c6c270f8c7ad46442fc9c0a9f048685d819cd73ca87e544520fd06f0e24a1562
+ languageName: node
+ linkType: hard
+
+"@emotion/styled@npm:^11.10.5":
+ version: 11.10.5
+ resolution: "@emotion/styled@npm:11.10.5"
+ dependencies:
+ "@babel/runtime": ^7.18.3
+ "@emotion/babel-plugin": ^11.10.5
+ "@emotion/is-prop-valid": ^1.2.0
+ "@emotion/serialize": ^1.1.1
+ "@emotion/use-insertion-effect-with-fallbacks": ^1.0.0
+ "@emotion/utils": ^1.2.0
+ peerDependencies:
+ "@babel/core": ^7.0.0
+ "@emotion/react": ^11.0.0-rc.0
+ react: ">=16.8.0"
+ peerDependenciesMeta:
+ "@babel/core":
+ optional: true
+ "@types/react":
+ optional: true
+ checksum: 1cec5f6aeb227a7255141031e8594f38ad83902413472aae0a46c27e5f9769c01e23c1ad39adee408d8a2168a697464314d1a0c4f50b31a5d25ea506b2d7bbc8
languageName: node
linkType: hard
@@ -10316,6 +10307,36 @@ __metadata:
languageName: node
linkType: hard
+"@emotion/unitless@npm:^0.8.0":
+ version: 0.8.0
+ resolution: "@emotion/unitless@npm:0.8.0"
+ checksum: 176141117ed23c0eb6e53a054a69c63e17ae532ec4210907a20b2208f91771821835f1c63dd2ec63e30e22fcc984026d7f933773ee6526dd038e0850919fae7a
+ languageName: node
+ linkType: hard
+
+"@emotion/use-insertion-effect-with-fallbacks@npm:^1.0.0":
+ version: 1.0.0
+ resolution: "@emotion/use-insertion-effect-with-fallbacks@npm:1.0.0"
+ peerDependencies:
+ react: ">=16.8.0"
+ checksum: 4f06a3b48258c832aa8022a262572061a31ff078d377e9164cccc99951309d70f4466e774fe704461b2f8715007a82ed625a54a5c7a127c89017d3ce3187d4f1
+ languageName: node
+ linkType: hard
+
+"@emotion/utils@npm:^1.2.0":
+ version: 1.2.0
+ resolution: "@emotion/utils@npm:1.2.0"
+ checksum: 55457a49ddd4db6a014ea0454dc09eaa23eedfb837095c8ff90470cb26a303f7ceb5fcc1e2190ef64683e64cfd33d3ba3ca3109cd87d12bc9e379e4195c9a4dd
+ languageName: node
+ linkType: hard
+
+"@emotion/weak-memoize@npm:^0.3.0":
+ version: 0.3.0
+ resolution: "@emotion/weak-memoize@npm:0.3.0"
+ checksum: f43ef4c8b7de70d9fa5eb3105921724651e4188e895beb71f0c5919dc899a7b8743e1fdd99d38b9092dd5722c7be2312ebb47fbdad0c4e38bea58f6df5885cc0
+ languageName: node
+ linkType: hard
+
"@esbuild-kit/cjs-loader@npm:^2.4.1":
version: 2.4.2
resolution: "@esbuild-kit/cjs-loader@npm:2.4.2"
@@ -10676,27 +10697,27 @@ __metadata:
languageName: node
linkType: hard
-"@eslint/eslintrc@npm:^2.0.2":
- version: 2.0.2
- resolution: "@eslint/eslintrc@npm:2.0.2"
+"@eslint/eslintrc@npm:^2.0.3":
+ version: 2.0.3
+ resolution: "@eslint/eslintrc@npm:2.0.3"
dependencies:
ajv: ^6.12.4
debug: ^4.3.2
- espree: ^9.5.1
+ espree: ^9.5.2
globals: ^13.19.0
ignore: ^5.2.0
import-fresh: ^3.2.1
js-yaml: ^4.1.0
minimatch: ^3.1.2
strip-json-comments: ^3.1.1
- checksum: cfcf5e12c7b2c4476482e7f12434e76eae16fcd163ee627309adb10b761e5caa4a4e52ed7be464423320ff3d11eca5b50de5bf8be3e25834222470835dd5c801
+ checksum: ddc51f25f8524d8231db9c9bf03177e503d941a332e8d5ce3b10b09241be4d5584a378a529a27a527586bfbccf3031ae539eb891352033c340b012b4d0c81d92
languageName: node
linkType: hard
-"@eslint/js@npm:8.38.0":
- version: 8.38.0
- resolution: "@eslint/js@npm:8.38.0"
- checksum: 1f28987aa8c9cd93e23384e16c7220863b39b5dc4b66e46d7cdbccce868040f455a98d24cd8b567a884f26545a0555b761f7328d4a00c051e7ef689cbea5fce1
+"@eslint/js@npm:8.41.0":
+ version: 8.41.0
+ resolution: "@eslint/js@npm:8.41.0"
+ checksum: af013d70fe8d0429cdf5cd8b5dcc6fc384ed026c1eccb0cfe30f5849b968ab91645111373fd1b83282b38955b1bdfbe667c1a7dbda3b06cae753521223cad775
languageName: node
linkType: hard
@@ -10759,27 +10780,27 @@ __metadata:
languageName: node
linkType: hard
-"@frsource/base64@npm:1.0.5":
- version: 1.0.5
- resolution: "@frsource/base64@npm:1.0.5"
- checksum: ba526dd81df4e91b0abbcc34fc6818c8ff132e5230c23a4448a365ba934f782a86abb2a8566050f9450905851e467a7160f01f3d321fbb0fa3c8c516c5a82b9b
+"@frsource/base64@npm:1.0.14":
+ version: 1.0.14
+ resolution: "@frsource/base64@npm:1.0.14"
+ checksum: 9a5b718e4ac12fd1b5bfdefcdf669fb0a125599fb6cd55564da3beeccd7a5707f58bc41f572268a8120af15ccca32355e8384341561f738397521020e0c2564c
languageName: node
linkType: hard
"@frsource/cypress-plugin-visual-regression-diff@npm:^3.2.8":
- version: 3.2.14
- resolution: "@frsource/cypress-plugin-visual-regression-diff@npm:3.2.14"
+ version: 3.3.1
+ resolution: "@frsource/cypress-plugin-visual-regression-diff@npm:3.3.1"
dependencies:
- "@frsource/base64": 1.0.5
+ "@frsource/base64": 1.0.14
glob: 8.0.3
- meta-png: 1.0.5
+ meta-png: 1.0.6
move-file: 2.1.0
pixelmatch: 5.3.0
- pngjs: 6.0.0
+ pngjs: 7.0.0
sharp: 0.31.2
peerDependencies:
cypress: ">=4.5.0"
- checksum: 1650eded6db559ef13d0d8b3aba8b19e703dc103a9e806c87cb49ce495a37e296c041530f509f4c0372c15217c8b54a17f51b034261b5b109f4503ab24a8181f
+ checksum: fae1e9de89fcc0f75a71dd7cc78cb870fa4d0989a0dd2e1084eec2fdc95f9ff503a124f05ea88f87b52c3d03463a79e96439e5620a6c0f24ac39135c81af9edc
languageName: node
linkType: hard
@@ -12856,6 +12877,162 @@ __metadata:
languageName: node
linkType: hard
+"@mui/base@npm:5.0.0-alpha.127":
+ version: 5.0.0-alpha.127
+ resolution: "@mui/base@npm:5.0.0-alpha.127"
+ dependencies:
+ "@babel/runtime": ^7.21.0
+ "@emotion/is-prop-valid": ^1.2.0
+ "@mui/types": ^7.2.4
+ "@mui/utils": ^5.12.0
+ "@popperjs/core": ^2.11.7
+ clsx: ^1.2.1
+ prop-types: ^15.8.1
+ react-is: ^18.2.0
+ peerDependencies:
+ "@types/react": ^17.0.0 || ^18.0.0
+ react: ^17.0.0 || ^18.0.0
+ react-dom: ^17.0.0 || ^18.0.0
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ checksum: 330baeef1fdaa513707f295e07a3436af24d0831a18109ed877f76b86cf1f392309833d33a2c7ca250db79fdf53f5e88c2618f876f50dbbbf9323bbf08e367e7
+ languageName: node
+ linkType: hard
+
+"@mui/core-downloads-tracker@npm:^5.12.2":
+ version: 5.12.2
+ resolution: "@mui/core-downloads-tracker@npm:5.12.2"
+ checksum: d748bdc56df6fdfe6712550a94263cf094c53ddcb70f6a8f633caf23927edf5ac88b1f888429d895fe2a5045b27eb7aa9826ccee5b917e31973667d604ed87fe
+ languageName: node
+ linkType: hard
+
+"@mui/material@npm:^5.12.2":
+ version: 5.12.2
+ resolution: "@mui/material@npm:5.12.2"
+ dependencies:
+ "@babel/runtime": ^7.21.0
+ "@mui/base": 5.0.0-alpha.127
+ "@mui/core-downloads-tracker": ^5.12.2
+ "@mui/system": ^5.12.1
+ "@mui/types": ^7.2.4
+ "@mui/utils": ^5.12.0
+ "@types/react-transition-group": ^4.4.5
+ clsx: ^1.2.1
+ csstype: ^3.1.2
+ prop-types: ^15.8.1
+ react-is: ^18.2.0
+ react-transition-group: ^4.4.5
+ peerDependencies:
+ "@emotion/react": ^11.5.0
+ "@emotion/styled": ^11.3.0
+ "@types/react": ^17.0.0 || ^18.0.0
+ react: ^17.0.0 || ^18.0.0
+ react-dom: ^17.0.0 || ^18.0.0
+ peerDependenciesMeta:
+ "@emotion/react":
+ optional: true
+ "@emotion/styled":
+ optional: true
+ "@types/react":
+ optional: true
+ checksum: a3464dfbcc496164967e134d6f1d40e060ee02fc2ddb5fcf648ca85580efdbd5eff5aab6a73486d0a7f329f7299127b52501a13993bb131cbd4e310c7f2e633f
+ languageName: node
+ linkType: hard
+
+"@mui/private-theming@npm:^5.12.0":
+ version: 5.12.0
+ resolution: "@mui/private-theming@npm:5.12.0"
+ dependencies:
+ "@babel/runtime": ^7.21.0
+ "@mui/utils": ^5.12.0
+ prop-types: ^15.8.1
+ peerDependencies:
+ "@types/react": ^17.0.0 || ^18.0.0
+ react: ^17.0.0 || ^18.0.0
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ checksum: 761bc7a57e1643c2c4c327886882fa5efc7bacae1c6fffe6be4197f49d337261c916a883d96996445efcdedc0672251725c1e5b264b6250d6c9527fd0cafcc62
+ languageName: node
+ linkType: hard
+
+"@mui/styled-engine@npm:^5.12.0":
+ version: 5.12.0
+ resolution: "@mui/styled-engine@npm:5.12.0"
+ dependencies:
+ "@babel/runtime": ^7.21.0
+ "@emotion/cache": ^11.10.7
+ csstype: ^3.1.2
+ prop-types: ^15.8.1
+ peerDependencies:
+ "@emotion/react": ^11.4.1
+ "@emotion/styled": ^11.3.0
+ react: ^17.0.0 || ^18.0.0
+ peerDependenciesMeta:
+ "@emotion/react":
+ optional: true
+ "@emotion/styled":
+ optional: true
+ checksum: 4a415473cf62aa05012f667dd2e9b1dc2fb175be5b0c4d0b8df541e2dac3d7db410e920e0d5910c8e2b8996a4fb51f74d79483e2878a9b5c0d334498f5537d74
+ languageName: node
+ linkType: hard
+
+"@mui/system@npm:^5.12.1":
+ version: 5.12.1
+ resolution: "@mui/system@npm:5.12.1"
+ dependencies:
+ "@babel/runtime": ^7.21.0
+ "@mui/private-theming": ^5.12.0
+ "@mui/styled-engine": ^5.12.0
+ "@mui/types": ^7.2.4
+ "@mui/utils": ^5.12.0
+ clsx: ^1.2.1
+ csstype: ^3.1.2
+ prop-types: ^15.8.1
+ peerDependencies:
+ "@emotion/react": ^11.5.0
+ "@emotion/styled": ^11.3.0
+ "@types/react": ^17.0.0 || ^18.0.0
+ react: ^17.0.0 || ^18.0.0
+ peerDependenciesMeta:
+ "@emotion/react":
+ optional: true
+ "@emotion/styled":
+ optional: true
+ "@types/react":
+ optional: true
+ checksum: b951959bf5e5af581319354c044f441d97849ff120cfec111d2ed5e7fa05efd63721acff96f48093b8e2bdeb5ccbe35c48613fb925be2b58c596447d10dbed3e
+ languageName: node
+ linkType: hard
+
+"@mui/types@npm:^7.2.4":
+ version: 7.2.4
+ resolution: "@mui/types@npm:7.2.4"
+ peerDependencies:
+ "@types/react": "*"
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ checksum: 16bea0547492193a22fd1794382f314698a114f6c673825314c66b56766c3a9d305992cc495684722b7be16a1ecf7e6e48a79caa64f90c439b530e8c02611a61
+ languageName: node
+ linkType: hard
+
+"@mui/utils@npm:^5.12.0":
+ version: 5.12.0
+ resolution: "@mui/utils@npm:5.12.0"
+ dependencies:
+ "@babel/runtime": ^7.21.0
+ "@types/prop-types": ^15.7.5
+ "@types/react-is": ^16.7.1 || ^17.0.0
+ prop-types: ^15.8.1
+ react-is: ^18.2.0
+ peerDependencies:
+ react: ^17.0.0 || ^18.0.0
+ checksum: 87b2c7468803b083f50af28d7c215c45291e73fef16570848b596d0f1cde1fc613c20e8951f431217b31451de254744abd50eda5013dedec4982420b5bf1c6b6
+ languageName: node
+ linkType: hard
+
"@n1ru4l/push-pull-async-iterable-iterator@npm:^3.1.0":
version: 3.1.0
resolution: "@n1ru4l/push-pull-async-iterable-iterator@npm:3.1.0"
@@ -13162,20 +13339,19 @@ __metadata:
linkType: hard
"@octokit/auth-app@npm:^4.0.0":
- version: 4.0.9
- resolution: "@octokit/auth-app@npm:4.0.9"
+ version: 4.0.13
+ resolution: "@octokit/auth-app@npm:4.0.13"
dependencies:
"@octokit/auth-oauth-app": ^5.0.0
"@octokit/auth-oauth-user": ^2.0.0
"@octokit/request": ^6.0.0
"@octokit/request-error": ^3.0.0
"@octokit/types": ^9.0.0
- "@types/lru-cache": ^5.1.0
deprecation: ^2.3.1
- lru-cache: ^6.0.0
+ lru-cache: ^9.0.0
universal-github-app-jwt: ^1.1.1
universal-user-agent: ^6.0.0
- checksum: 3846ebeda40bf88684fa310741ec4b5838d57e18ba5c38986e422161e1ce95c750053fbb2aa18bdce120d6eb857d16bb8e9988597c3dfda40fec985dbdda1b2a
+ checksum: 809004bc3e985fd4911cc42060fecd7b88e609e1334b90c4f79711aa27cade03fa1d930945ea8f7339ddd8d4514dd220a6ae8489faefa9e0ce6881519a02fc37
languageName: node
linkType: hard
@@ -13289,19 +13465,19 @@ __metadata:
linkType: hard
"@octokit/graphql@npm:^5.0.0":
- version: 5.0.5
- resolution: "@octokit/graphql@npm:5.0.5"
+ version: 5.0.6
+ resolution: "@octokit/graphql@npm:5.0.6"
dependencies:
"@octokit/request": ^6.0.0
"@octokit/types": ^9.0.0
universal-user-agent: ^6.0.0
- checksum: eb2d1a6305a3d1f55ff0ce92fb88b677f0bb789757152d58a79ef61171fb65ecf6fe18d6c27e236c0cee6a0c2600c2cb8370f5ac7184f8e9361c085aa4555bb1
+ checksum: 7be545d348ef31dcab0a2478dd64d5746419a2f82f61459c774602bcf8a9b577989c18001f50b03f5f61a3d9e34203bdc021a4e4d75ff2d981e8c9c09cf8a65c
languageName: node
linkType: hard
"@octokit/oauth-app@npm:^4.0.4, @octokit/oauth-app@npm:^4.0.6, @octokit/oauth-app@npm:^4.2.0":
- version: 4.2.1
- resolution: "@octokit/oauth-app@npm:4.2.1"
+ version: 4.2.2
+ resolution: "@octokit/oauth-app@npm:4.2.2"
dependencies:
"@octokit/auth-oauth-app": ^5.0.0
"@octokit/auth-oauth-user": ^2.0.0
@@ -13312,7 +13488,7 @@ __metadata:
"@types/aws-lambda": ^8.10.83
fromentries: ^1.3.1
universal-user-agent: ^6.0.0
- checksum: 0f5d4036b027c6611147e5669e3fed0319d486149587c9e408751fd6cf1b4bd9b29b4acd00d51feb33dc1d146bc433c6e5fae96b065804c8f0dc3a5718a42dcf
+ checksum: a15a849fce7c9b95d3d28583ee20a3a6b4df3d972bf65506204e05ef36998b8bc3359f918524b090157153fb3461e222b7094894bd85374159e84ad774f06ccd
languageName: node
linkType: hard
@@ -13509,8 +13685,8 @@ __metadata:
linkType: hard
"@octokit/request@npm:^6.0.0":
- version: 6.2.3
- resolution: "@octokit/request@npm:6.2.3"
+ version: 6.2.5
+ resolution: "@octokit/request@npm:6.2.5"
dependencies:
"@octokit/endpoint": ^7.0.0
"@octokit/request-error": ^3.0.0
@@ -13518,7 +13694,7 @@ __metadata:
is-plain-object: ^5.0.0
node-fetch: ^2.6.7
universal-user-agent: ^6.0.0
- checksum: fef4097be8375d20bb0b3276d8a3adf866ec628f2b0664d334f3c29b92157da847899497abdc7a5be540053819b55564990543175ad48f04e9e6f25f0395d4d3
+ checksum: 856451ea8cc6b1dd0f6e350a141e65c318b5e3a25b8dea373d3afd115f9a3077535a0330f5d90e9db81dc3234dba1dd64edd31e68f639553baa10b4d02b99498
languageName: node
linkType: hard
@@ -13768,6 +13944,13 @@ __metadata:
languageName: node
linkType: hard
+"@popperjs/core@npm:^2.11.7":
+ version: 2.11.7
+ resolution: "@popperjs/core@npm:2.11.7"
+ checksum: 5b6553747899683452a1d28898c1b39173a4efd780e74360bfcda8eb42f1c5e819602769c81a10920fc68c881d07fb40429604517d499567eac079cfa6470f19
+ languageName: node
+ linkType: hard
+
"@protobufjs/aspromise@npm:^1.1.1, @protobufjs/aspromise@npm:^1.1.2":
version: 1.1.2
resolution: "@protobufjs/aspromise@npm:1.1.2"
@@ -13864,6 +14047,22 @@ __metadata:
languageName: node
linkType: hard
+"@react-hookz/web@npm:^23.0.0":
+ version: 23.0.0
+ resolution: "@react-hookz/web@npm:23.0.0"
+ dependencies:
+ "@react-hookz/deep-equal": ^1.0.4
+ peerDependencies:
+ js-cookie: ^3.0.1
+ react: ^16.8 || ^17 || ^18
+ react-dom: ^16.8 || ^17 || ^18
+ peerDependenciesMeta:
+ js-cookie:
+ optional: true
+ checksum: 230bff62291bcafa65e0b9adcc3f0769fd63fabc226c77149e7797d1ea67362e9ad581ceff3cdfe2949698798d2deefb223c05bdfed1e465b5d92298d48cf3e5
+ languageName: node
+ linkType: hard
+
"@remix-run/router@npm:1.3.2":
version: 1.3.2
resolution: "@remix-run/router@npm:1.3.2"
@@ -13999,8 +14198,8 @@ __metadata:
linkType: hard
"@roadiehq/backstage-plugin-github-insights@npm:^2.0.5":
- version: 2.3.11
- resolution: "@roadiehq/backstage-plugin-github-insights@npm:2.3.11"
+ version: 2.3.12
+ resolution: "@roadiehq/backstage-plugin-github-insights@npm:2.3.12"
dependencies:
"@backstage/catalog-model": ^1.3.0
"@backstage/core-components": ^0.13.0
@@ -14022,7 +14221,7 @@ __metadata:
react: ^16.13.1 || ^17.0.0
react-dom: ^16.13.1 || ^17.0.0
react-router: 6.0.0-beta.0 || ^6.3.0
- checksum: 175b8b1f7e307fe5e06c3caa2845cee45840e64dfb0fd8a4a7e44f6bfa45a4c0ecc07998ec4239ca39246c073ae55bc4541650b0bb1e43d2ee3441efbedfe3cd
+ checksum: 4c2b14b43e0daa6aa17aef44b51c74c74a3aa41d48d50644cae58e5e9ae5fdf656d2b71aa7175a3c9c8269ac9cdacfa64c1339f212273849e83020342298ed8c
languageName: node
linkType: hard
@@ -14958,90 +15157,90 @@ __metadata:
languageName: node
linkType: hard
-"@swc/core-darwin-arm64@npm:1.3.51":
- version: 1.3.51
- resolution: "@swc/core-darwin-arm64@npm:1.3.51"
+"@swc/core-darwin-arm64@npm:1.3.59":
+ version: 1.3.59
+ resolution: "@swc/core-darwin-arm64@npm:1.3.59"
conditions: os=darwin & cpu=arm64
languageName: node
linkType: hard
-"@swc/core-darwin-x64@npm:1.3.51":
- version: 1.3.51
- resolution: "@swc/core-darwin-x64@npm:1.3.51"
+"@swc/core-darwin-x64@npm:1.3.59":
+ version: 1.3.59
+ resolution: "@swc/core-darwin-x64@npm:1.3.59"
conditions: os=darwin & cpu=x64
languageName: node
linkType: hard
-"@swc/core-linux-arm-gnueabihf@npm:1.3.51":
- version: 1.3.51
- resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.51"
+"@swc/core-linux-arm-gnueabihf@npm:1.3.59":
+ version: 1.3.59
+ resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.59"
conditions: os=linux & cpu=arm
languageName: node
linkType: hard
-"@swc/core-linux-arm64-gnu@npm:1.3.51":
- version: 1.3.51
- resolution: "@swc/core-linux-arm64-gnu@npm:1.3.51"
+"@swc/core-linux-arm64-gnu@npm:1.3.59":
+ version: 1.3.59
+ resolution: "@swc/core-linux-arm64-gnu@npm:1.3.59"
conditions: os=linux & cpu=arm64 & libc=glibc
languageName: node
linkType: hard
-"@swc/core-linux-arm64-musl@npm:1.3.51":
- version: 1.3.51
- resolution: "@swc/core-linux-arm64-musl@npm:1.3.51"
+"@swc/core-linux-arm64-musl@npm:1.3.59":
+ version: 1.3.59
+ resolution: "@swc/core-linux-arm64-musl@npm:1.3.59"
conditions: os=linux & cpu=arm64 & libc=musl
languageName: node
linkType: hard
-"@swc/core-linux-x64-gnu@npm:1.3.51":
- version: 1.3.51
- resolution: "@swc/core-linux-x64-gnu@npm:1.3.51"
+"@swc/core-linux-x64-gnu@npm:1.3.59":
+ version: 1.3.59
+ resolution: "@swc/core-linux-x64-gnu@npm:1.3.59"
conditions: os=linux & cpu=x64 & libc=glibc
languageName: node
linkType: hard
-"@swc/core-linux-x64-musl@npm:1.3.51":
- version: 1.3.51
- resolution: "@swc/core-linux-x64-musl@npm:1.3.51"
+"@swc/core-linux-x64-musl@npm:1.3.59":
+ version: 1.3.59
+ resolution: "@swc/core-linux-x64-musl@npm:1.3.59"
conditions: os=linux & cpu=x64 & libc=musl
languageName: node
linkType: hard
-"@swc/core-win32-arm64-msvc@npm:1.3.51":
- version: 1.3.51
- resolution: "@swc/core-win32-arm64-msvc@npm:1.3.51"
+"@swc/core-win32-arm64-msvc@npm:1.3.59":
+ version: 1.3.59
+ resolution: "@swc/core-win32-arm64-msvc@npm:1.3.59"
conditions: os=win32 & cpu=arm64
languageName: node
linkType: hard
-"@swc/core-win32-ia32-msvc@npm:1.3.51":
- version: 1.3.51
- resolution: "@swc/core-win32-ia32-msvc@npm:1.3.51"
+"@swc/core-win32-ia32-msvc@npm:1.3.59":
+ version: 1.3.59
+ resolution: "@swc/core-win32-ia32-msvc@npm:1.3.59"
conditions: os=win32 & cpu=ia32
languageName: node
linkType: hard
-"@swc/core-win32-x64-msvc@npm:1.3.51":
- version: 1.3.51
- resolution: "@swc/core-win32-x64-msvc@npm:1.3.51"
+"@swc/core-win32-x64-msvc@npm:1.3.59":
+ version: 1.3.59
+ resolution: "@swc/core-win32-x64-msvc@npm:1.3.59"
conditions: os=win32 & cpu=x64
languageName: node
linkType: hard
"@swc/core@npm:^1.3.46":
- version: 1.3.51
- resolution: "@swc/core@npm:1.3.51"
+ version: 1.3.59
+ resolution: "@swc/core@npm:1.3.59"
dependencies:
- "@swc/core-darwin-arm64": 1.3.51
- "@swc/core-darwin-x64": 1.3.51
- "@swc/core-linux-arm-gnueabihf": 1.3.51
- "@swc/core-linux-arm64-gnu": 1.3.51
- "@swc/core-linux-arm64-musl": 1.3.51
- "@swc/core-linux-x64-gnu": 1.3.51
- "@swc/core-linux-x64-musl": 1.3.51
- "@swc/core-win32-arm64-msvc": 1.3.51
- "@swc/core-win32-ia32-msvc": 1.3.51
- "@swc/core-win32-x64-msvc": 1.3.51
+ "@swc/core-darwin-arm64": 1.3.59
+ "@swc/core-darwin-x64": 1.3.59
+ "@swc/core-linux-arm-gnueabihf": 1.3.59
+ "@swc/core-linux-arm64-gnu": 1.3.59
+ "@swc/core-linux-arm64-musl": 1.3.59
+ "@swc/core-linux-x64-gnu": 1.3.59
+ "@swc/core-linux-x64-musl": 1.3.59
+ "@swc/core-win32-arm64-msvc": 1.3.59
+ "@swc/core-win32-ia32-msvc": 1.3.59
+ "@swc/core-win32-x64-msvc": 1.3.59
peerDependencies:
"@swc/helpers": ^0.5.0
dependenciesMeta:
@@ -15068,16 +15267,16 @@ __metadata:
peerDependenciesMeta:
"@swc/helpers":
optional: true
- checksum: f4e72d347b26353fbb48eae110a63c939922a38b20730ea010f5ae3dd15434f212dce582df05556ec35e677c089dfb6d00f5dd6fc655f8c9a7829458e4301469
+ checksum: 0283f39cf49cd12a6dc7062ef9ea4fa93e1a4f622ce46903a09605219f4f47ed5ad03925c6146d09ffe6ee02a89bb14e3c82eb86b4c60ecce4985ea6e078ffcf
languageName: node
linkType: hard
"@swc/helpers@npm:^0.5.0":
- version: 0.5.0
- resolution: "@swc/helpers@npm:0.5.0"
+ version: 0.5.1
+ resolution: "@swc/helpers@npm:0.5.1"
dependencies:
tslib: ^2.4.0
- checksum: 61c9c7dddb707deb58b85328cfe9d211887145f1311ae6a6e6c0fa9f781fb29916a8669a7d479e46e26a32a89d6ef4f293a22dee4925e009c84051e9dd10e8b7
+ checksum: 71e0e27234590435e4c62b97ef5e796f88e786841a38c7116a5e27a3eafa7b9ead7cdec5249b32165902076de78446945311c973e59bddf77c1e24f33a8f272a
languageName: node
linkType: hard
@@ -16261,13 +16460,6 @@ __metadata:
languageName: node
linkType: hard
-"@types/lru-cache@npm:^5.1.0":
- version: 5.1.1
- resolution: "@types/lru-cache@npm:5.1.1"
- checksum: e1d6c0085f61b16ec5b3073ec76ad1be4844ea036561c3f145fc19f71f084b58a6eb600b14128aa95809d057d28f1d147c910186ae51219f58366ffd2ff2e118
- languageName: node
- linkType: hard
-
"@types/lunr@npm:^2.3.3":
version: 2.3.4
resolution: "@types/lunr@npm:2.3.4"
@@ -16293,9 +16485,9 @@ __metadata:
linkType: hard
"@types/marked@npm:^4.0.0":
- version: 4.0.8
- resolution: "@types/marked@npm:4.0.8"
- checksum: 68278fa7acaa5d920cdc239d675b5daf842e0ad4779e4848cd617d9baf2ac1afccb5a264c331e37d80031d647e1640cb983cd31e73d45b28552670b4853fad8e
+ version: 4.3.1
+ resolution: "@types/marked@npm:4.3.1"
+ checksum: eb6891b925d53ea53057f088b28f9232016499e62639cbb4a67f7d34f288ec6a8e40aae4836dbd06bd0fc3c541fca1175cd50d9e8d405547b6be7b7781e6a2a5
languageName: node
linkType: hard
@@ -16386,12 +16578,12 @@ __metadata:
linkType: hard
"@types/node-fetch@npm:^2.5.0, @types/node-fetch@npm:^2.5.12, @types/node-fetch@npm:^2.5.7, @types/node-fetch@npm:^2.6.1":
- version: 2.6.3
- resolution: "@types/node-fetch@npm:2.6.3"
+ version: 2.6.4
+ resolution: "@types/node-fetch@npm:2.6.4"
dependencies:
"@types/node": "*"
form-data: ^3.0.0
- checksum: b68cda58e91535a42dd5337932443c37f8e198ca1e8deeb95bd92a64a9a84d92071867b91c5eb84ee8e13f33d45a70549fe2bc11dd070a894dd561909f4d39f5
+ checksum: f3e1d881bb42269e676ecaf49f0e096ab345e22823a2b2d071d60619414817fe02df48a31a8d05adb23054028a2a65521bdb3906ceb763ab6d3339c8d8775058
languageName: node
linkType: hard
@@ -16405,9 +16597,9 @@ __metadata:
linkType: hard
"@types/node@npm:*, @types/node@npm:>=12.12.47, @types/node@npm:>=13.7.0":
- version: 20.1.4
- resolution: "@types/node@npm:20.1.4"
- checksum: bffa6a6e92831cc805b13658c55be8e04abe3202d5e57ddd7fee4cfbe269656a1f475909a9f9514e1aff50310d0d90c516ac2c649cb6f1c77d4b1079c2fd1e88
+ version: 20.2.2
+ resolution: "@types/node@npm:20.2.2"
+ checksum: a39bef01b7592fd35c5704c74b9167c154a9a357017db8cd8644461c6e6ad87be19f82dfc65ecb2f35a8fb143fc8a0587f17507bc0b0c9bfee676b3fb4bc89ae
languageName: node
linkType: hard
@@ -16440,16 +16632,16 @@ __metadata:
linkType: hard
"@types/node@npm:^16.0.0, @types/node@npm:^16.11.26, @types/node@npm:^16.9.2":
- version: 16.18.30
- resolution: "@types/node@npm:16.18.30"
- checksum: 2975519e337a3f29c495b97aa7510ef3f4ac5d3c9356f7886698a4abf8b12641c1f1247512b525599cba6aefe774735ef25fc83555e989033bdbcc4a2b1c7401
+ version: 16.18.32
+ resolution: "@types/node@npm:16.18.32"
+ checksum: c5966c8e671205b2971ae66ae548ce92235cef89ae1a0f2ecbf118e775923259dc85f57c58cfc56267089d56dfce967700c058276199c6ed9510d0a0b077af2d
languageName: node
linkType: hard
"@types/node@npm:^18.11.17":
- version: 18.16.9
- resolution: "@types/node@npm:18.16.9"
- checksum: 7fe0ef372ba8b157bd646efe29b0ece92ccb9f455171a7ceb4c92d6b490789ff0f14411b1dc6ad203351a0efa2b435072dfab5566fb6eaaaa5cd549e1fb22afa
+ version: 18.16.14
+ resolution: "@types/node@npm:18.16.14"
+ checksum: c11cb3c787236414efe58240ae71854971592554d82ff9d201876ce7cafd51c37aaa001c63602d002e8238614d7331bd6d48ac4c1c0caa826799980b6846fb08
languageName: node
linkType: hard
@@ -16603,7 +16795,7 @@ __metadata:
languageName: node
linkType: hard
-"@types/prop-types@npm:*, @types/prop-types@npm:^15.0.0, @types/prop-types@npm:^15.7.3":
+"@types/prop-types@npm:*, @types/prop-types@npm:^15.0.0, @types/prop-types@npm:^15.7.3, @types/prop-types@npm:^15.7.5":
version: 15.7.5
resolution: "@types/prop-types@npm:15.7.5"
checksum: 5b43b8b15415e1f298243165f1d44390403bb2bd42e662bca3b5b5633fdd39c938e91b7fce3a9483699db0f7a715d08cef220c121f723a634972fdf596aec980
@@ -16669,6 +16861,15 @@ __metadata:
languageName: node
linkType: hard
+"@types/react-is@npm:^16.7.1 || ^17.0.0":
+ version: 17.0.3
+ resolution: "@types/react-is@npm:17.0.3"
+ dependencies:
+ "@types/react": "*"
+ checksum: 6abb7c47d54f012272650df8a962a28bd82f219291e5ef8b4dfa7fe0bb98ae243b060bf9fbe8ceff6213141794855a006db194b490b00ffd15842ae19d0ce1f0
+ languageName: node
+ linkType: hard
+
"@types/react-redux@npm:^7.1.16":
version: 7.1.19
resolution: "@types/react-redux@npm:7.1.19"
@@ -16717,12 +16918,12 @@ __metadata:
languageName: node
linkType: hard
-"@types/react-transition-group@npm:^4.2.0":
- version: 4.2.4
- resolution: "@types/react-transition-group@npm:4.2.4"
+"@types/react-transition-group@npm:^4.2.0, @types/react-transition-group@npm:^4.4.5":
+ version: 4.4.5
+ resolution: "@types/react-transition-group@npm:4.4.5"
dependencies:
"@types/react": "*"
- checksum: a8abb3ad3c6e0575c630b591503a78ae3a94e21d1285905a49c36168e5d3de68b0886e2c6d75b751e30f2dc6e4245351cde30e4b3ff2649aec345f2088961e2c
+ checksum: 265f1c74061556708ffe8d15559e35c60d6c11478c9950d3735575d2c116ca69f461d85effa06d73a613eb8b73c84fd32682feb57cf7c5f9e4284021dbca25b0
languageName: node
linkType: hard
@@ -18779,6 +18980,17 @@ __metadata:
languageName: node
linkType: hard
+"babel-plugin-macros@npm:^3.1.0":
+ version: 3.1.0
+ resolution: "babel-plugin-macros@npm:3.1.0"
+ dependencies:
+ "@babel/runtime": ^7.12.5
+ cosmiconfig: ^7.0.0
+ resolve: ^1.19.0
+ checksum: 765de4abebd3e4688ebdfbff8571ddc8cd8061f839bb6c3e550b0344a4027b04c60491f843296ce3f3379fb356cc873d57a9ee6694262547eb822c14a25be9a6
+ languageName: node
+ linkType: hard
+
"babel-plugin-polyfill-corejs2@npm:^0.3.1":
version: 0.3.1
resolution: "babel-plugin-polyfill-corejs2@npm:0.3.1"
@@ -19048,13 +19260,13 @@ __metadata:
linkType: hard
"better-sqlite3@npm:^8.0.0":
- version: 8.3.0
- resolution: "better-sqlite3@npm:8.3.0"
+ version: 8.4.0
+ resolution: "better-sqlite3@npm:8.4.0"
dependencies:
bindings: ^1.5.0
node-gyp: latest
prebuild-install: ^7.1.0
- checksum: 00fc9f12058d2d157f56fe57b0f5c8ba705aee22a1dfe33ef8f60755531eda8f809cdb2377af314f6ed9396ad036094576e0596649bd6ca5bcaec172613e2dc9
+ checksum: f8b180c26428a2d381482e83b4519d0d81a918e00f92cafd255f42eb9583f49b2fed1015121ad49ebe1f3f790cc8c6f4697d1e805193d65e70dacf2e8abbd6af
languageName: node
linkType: hard
@@ -20234,7 +20446,7 @@ __metadata:
languageName: node
linkType: hard
-"clsx@npm:^1.0.2, clsx@npm:^1.0.4, clsx@npm:^1.1.1":
+"clsx@npm:^1.0.2, clsx@npm:^1.0.4, clsx@npm:^1.1.1, clsx@npm:^1.2.1":
version: 1.2.1
resolution: "clsx@npm:1.2.1"
checksum: 30befca8019b2eb7dbad38cff6266cf543091dae2825c856a62a8ccf2c3ab9c2907c4d12b288b73101196767f66812365400a227581484a05f968b0307cfaf12
@@ -20817,12 +21029,10 @@ __metadata:
languageName: node
linkType: hard
-"convert-source-map@npm:^1.6.0, convert-source-map@npm:^1.7.0":
- version: 1.7.0
- resolution: "convert-source-map@npm:1.7.0"
- dependencies:
- safe-buffer: ~5.1.1
- checksum: bcd2e3ea7d37f96b85a6e362c8a89402ccc73757256e3ee53aa2c22fe915adb854c66b1f81111be815a3a6a6ce3c58e8001858e883c9d5b4fe08a853fa865967
+"convert-source-map@npm:^1.5.0, convert-source-map@npm:^1.6.0, convert-source-map@npm:^1.7.0":
+ version: 1.9.0
+ resolution: "convert-source-map@npm:1.9.0"
+ checksum: dc55a1f28ddd0e9485ef13565f8f756b342f9a46c4ae18b843fe3c30c675d058d6a4823eff86d472f187b176f0adf51ea7b69ea38be34be4a63cbbf91b0593c8
languageName: node
linkType: hard
@@ -21214,20 +21424,20 @@ __metadata:
linkType: hard
"css-loader@npm:^6.5.1":
- version: 6.7.3
- resolution: "css-loader@npm:6.7.3"
+ version: 6.7.4
+ resolution: "css-loader@npm:6.7.4"
dependencies:
icss-utils: ^5.1.0
- postcss: ^8.4.19
+ postcss: ^8.4.21
postcss-modules-extract-imports: ^3.0.0
- postcss-modules-local-by-default: ^4.0.0
+ postcss-modules-local-by-default: ^4.0.1
postcss-modules-scope: ^3.0.0
postcss-modules-values: ^4.0.0
postcss-value-parser: ^4.2.0
semver: ^7.3.8
peerDependencies:
webpack: ^5.0.0
- checksum: 473cc32b6c837c2848e2051ad1ba331c1457449f47442e75a8c480d9891451434ada241f7e3de2347e57de17fcd84610b3bcfc4a9da41102cdaedd1e17902d31
+ checksum: 6021fa9e375d767b9675e295c1513f2ee4ae04f76d9de69a75b8446e05f6e02b2170407ea72939925b788dcd5aa308527f6b41be3870dc1f4b0bfff8d2532c6e
languageName: node
linkType: hard
@@ -21442,10 +21652,10 @@ __metadata:
languageName: node
linkType: hard
-"csstype@npm:^3.0.2, csstype@npm:^3.0.6":
- version: 3.0.7
- resolution: "csstype@npm:3.0.7"
- checksum: 2f30c993be570c6d0de334b979a718370ee9bca9569c90340f13e05e542146c55b22e87372b858c061f9f8ded494da7a4715957882f9356cf9993ba11ab6f09c
+"csstype@npm:^3.0.2, csstype@npm:^3.0.6, csstype@npm:^3.1.2":
+ version: 3.0.9
+ resolution: "csstype@npm:3.0.9"
+ checksum: 199f9af7e673f9f188525c3102a329d637ff46c52f6385a4427ff5cb17adcb736189150170a7af7c5701d18d7704bdad130273f4aa7e44c6c4f9967e6115dc93
languageName: node
linkType: hard
@@ -23508,13 +23718,13 @@ __metadata:
linkType: hard
"eslint-plugin-testing-library@npm:^5.9.1":
- version: 5.10.3
- resolution: "eslint-plugin-testing-library@npm:5.10.3"
+ version: 5.11.0
+ resolution: "eslint-plugin-testing-library@npm:5.11.0"
dependencies:
"@typescript-eslint/utils": ^5.58.0
peerDependencies:
eslint: ^7.5.0 || ^8.0.0
- checksum: 3033121a0040b98280cd41856273ad1b268f56083759401e7af72ac8a96dcb213892f1248983aa9a18988b44913263e93f0d182dbb0c5b27b00242bfffc9cdcc
+ checksum: 7f19d3dedd7788b411ca3d9045de682feb26025b9c26d97d4e2f0bf62f5eaa276147d946bd5d0cd967b822e546a954330fdb7ef80485301264f646143f011a02
languageName: node
linkType: hard
@@ -23528,13 +23738,13 @@ __metadata:
languageName: node
linkType: hard
-"eslint-scope@npm:^7.1.1":
- version: 7.1.1
- resolution: "eslint-scope@npm:7.1.1"
+"eslint-scope@npm:^7.2.0":
+ version: 7.2.0
+ resolution: "eslint-scope@npm:7.2.0"
dependencies:
esrecurse: ^4.3.0
estraverse: ^5.2.0
- checksum: 9f6e974ab2db641ca8ab13508c405b7b859e72afe9f254e8131ff154d2f40c99ad4545ce326fd9fde3212ff29707102562a4834f1c48617b35d98c71a97fbf3e
+ checksum: 64591a2d8b244ade9c690b59ef238a11d5c721a98bcee9e9f445454f442d03d3e04eda88e95a4daec558220a99fa384309d9faae3d459bd40e7a81b4063980ae
languageName: node
linkType: hard
@@ -23556,10 +23766,10 @@ __metadata:
languageName: node
linkType: hard
-"eslint-visitor-keys@npm:^3.0.0, eslint-visitor-keys@npm:^3.3.0, eslint-visitor-keys@npm:^3.4.0":
- version: 3.4.0
- resolution: "eslint-visitor-keys@npm:3.4.0"
- checksum: 33159169462d3989321a1ec1e9aaaf6a24cc403d5d347e9886d1b5bfe18ffa1be73bdc6203143a28a606b142b1af49787f33cff0d6d0813eb5f2e8d2e1a6043c
+"eslint-visitor-keys@npm:^3.0.0, eslint-visitor-keys@npm:^3.3.0, eslint-visitor-keys@npm:^3.4.1":
+ version: 3.4.1
+ resolution: "eslint-visitor-keys@npm:3.4.1"
+ checksum: f05121d868202736b97de7d750847a328fcfa8593b031c95ea89425333db59676ac087fa905eba438d0a3c5769632f828187e0c1a0d271832a2153c1d3661c2c
languageName: node
linkType: hard
@@ -23580,13 +23790,13 @@ __metadata:
linkType: hard
"eslint@npm:^8.33.0, eslint@npm:^8.6.0":
- version: 8.38.0
- resolution: "eslint@npm:8.38.0"
+ version: 8.41.0
+ resolution: "eslint@npm:8.41.0"
dependencies:
"@eslint-community/eslint-utils": ^4.2.0
"@eslint-community/regexpp": ^4.4.0
- "@eslint/eslintrc": ^2.0.2
- "@eslint/js": 8.38.0
+ "@eslint/eslintrc": ^2.0.3
+ "@eslint/js": 8.41.0
"@humanwhocodes/config-array": ^0.11.8
"@humanwhocodes/module-importer": ^1.0.1
"@nodelib/fs.walk": ^1.2.8
@@ -23596,9 +23806,9 @@ __metadata:
debug: ^4.3.2
doctrine: ^3.0.0
escape-string-regexp: ^4.0.0
- eslint-scope: ^7.1.1
- eslint-visitor-keys: ^3.4.0
- espree: ^9.5.1
+ eslint-scope: ^7.2.0
+ eslint-visitor-keys: ^3.4.1
+ espree: ^9.5.2
esquery: ^1.4.2
esutils: ^2.0.2
fast-deep-equal: ^3.1.3
@@ -23606,13 +23816,12 @@ __metadata:
find-up: ^5.0.0
glob-parent: ^6.0.2
globals: ^13.19.0
- grapheme-splitter: ^1.0.4
+ graphemer: ^1.4.0
ignore: ^5.2.0
import-fresh: ^3.0.0
imurmurhash: ^0.1.4
is-glob: ^4.0.0
is-path-inside: ^3.0.3
- js-sdsl: ^4.1.4
js-yaml: ^4.1.0
json-stable-stringify-without-jsonify: ^1.0.1
levn: ^0.4.1
@@ -23625,7 +23834,7 @@ __metadata:
text-table: ^0.2.0
bin:
eslint: bin/eslint.js
- checksum: 73b6d9b650d0434aa7c07d0a1802f099b086ee70a8d8ba7be730439a26572a5eb71def12125c82942be2ec8ee5be38a6f1b42a13e40d4b67f11a148ec9e263eb
+ checksum: 09979a6f8451dcc508a7005b6670845c8a518376280b3fd96657a406b8b6ef29d0e480d1ba11b4eb48da93d607e0c55c9b877676fe089d09973ec152354e23b2
languageName: node
linkType: hard
@@ -23636,14 +23845,14 @@ __metadata:
languageName: node
linkType: hard
-"espree@npm:^9.0.0, espree@npm:^9.5.1":
- version: 9.5.1
- resolution: "espree@npm:9.5.1"
+"espree@npm:^9.0.0, espree@npm:^9.5.2":
+ version: 9.5.2
+ resolution: "espree@npm:9.5.2"
dependencies:
acorn: ^8.8.0
acorn-jsx: ^5.3.2
- eslint-visitor-keys: ^3.4.0
- checksum: cdf6e43540433d917c4f2ee087c6e987b2063baa85a1d9cdaf51533d78275ebd5910c42154e7baf8e3e89804b386da0a2f7fad2264d8f04420e7506bf87b3b88
+ eslint-visitor-keys: ^3.4.1
+ checksum: 6506289d6eb26471c0b383ee24fee5c8ae9d61ad540be956b3127be5ce3bf687d2ba6538ee5a86769812c7c552a9d8239e8c4d150f9ea056c6d5cbe8399c03c1
languageName: node
linkType: hard
@@ -23731,6 +23940,13 @@ __metadata:
languageName: node
linkType: hard
+"event-source-polyfill@npm:^1.0.31":
+ version: 1.0.31
+ resolution: "event-source-polyfill@npm:1.0.31"
+ checksum: 973f226404e2a1b14ed7ef15c718b89e213b41d7cfeeb1c10937fd09229f13904f3d7c3075ab28ccf858c213007559908eecdd577577330352f53a351383dd75
+ languageName: node
+ linkType: hard
+
"event-stream@npm:=3.3.4":
version: 3.3.4
resolution: "event-stream@npm:3.3.4"
@@ -25608,6 +25824,13 @@ __metadata:
languageName: node
linkType: hard
+"graphemer@npm:^1.4.0":
+ version: 1.4.0
+ resolution: "graphemer@npm:1.4.0"
+ checksum: bab8f0be9b568857c7bec9fda95a89f87b783546d02951c40c33f84d05bb7da3fd10f863a9beb901463669b6583173a8c8cc6d6b306ea2b9b9d5d3d943c3a673
+ languageName: node
+ linkType: hard
+
"graphiql@npm:^1.5.12, graphiql@npm:^1.8.8":
version: 1.11.5
resolution: "graphiql@npm:1.11.5"
@@ -26064,7 +26287,7 @@ __metadata:
languageName: node
linkType: hard
-"hoist-non-react-statics@npm:^3.0.0, hoist-non-react-statics@npm:^3.2.1, hoist-non-react-statics@npm:^3.3.0, hoist-non-react-statics@npm:^3.3.2":
+"hoist-non-react-statics@npm:^3.0.0, hoist-non-react-statics@npm:^3.2.1, hoist-non-react-statics@npm:^3.3.0, hoist-non-react-statics@npm:^3.3.1, hoist-non-react-statics@npm:^3.3.2":
version: 3.3.2
resolution: "hoist-non-react-statics@npm:3.3.2"
dependencies:
@@ -26603,15 +26826,6 @@ __metadata:
languageName: node
linkType: hard
-"indefinite-observable@npm:^2.0.1":
- version: 2.0.1
- resolution: "indefinite-observable@npm:2.0.1"
- dependencies:
- symbol-observable: 1.2.0
- checksum: b4305c999b7596901f8798e569b8faa030361dfb77f8b720e229558a29f544826f7e8987c55cc2a84c37ff2723594a965b96a40a6c71daae92b918f3eb393077
- languageName: node
- linkType: hard
-
"indent-string@npm:^4.0.0":
version: 4.0.0
resolution: "indent-string@npm:4.0.0"
@@ -28363,13 +28577,6 @@ __metadata:
languageName: node
linkType: hard
-"js-sdsl@npm:^4.1.4":
- version: 4.1.4
- resolution: "js-sdsl@npm:4.1.4"
- checksum: 1977cea4ab18e0e03e28bdf0371d8b443fad65ca0988e0faa216406faf6bb943714fe8f7cc7a5bfe5f35ba3d94ddae399f4d10200f547f2c3320688b0670d726
- languageName: node
- linkType: hard
-
"js-tokens@npm:^3.0.0 || ^4.0.0, js-tokens@npm:^4.0.0":
version: 4.0.0
resolution: "js-tokens@npm:4.0.0"
@@ -28952,76 +29159,76 @@ __metadata:
linkType: hard
"jss-plugin-camel-case@npm:^10.5.1":
- version: 10.6.0
- resolution: "jss-plugin-camel-case@npm:10.6.0"
+ version: 10.9.2
+ resolution: "jss-plugin-camel-case@npm:10.9.2"
dependencies:
"@babel/runtime": ^7.3.1
hyphenate-style-name: ^1.0.3
- jss: 10.6.0
- checksum: 75c23826deef63c3603cfb47331d1eaf9feeafd097bd115a076f2ee9fb696855d3f18b3f41455a046120fddf0ea11985259c1b8b8a37b3556f4de1a1c83affd5
+ jss: 10.9.2
+ checksum: 5fa617b23ce9718244691c59ace6a0d1271dbcb4430ce3e13b851ee1879c1db8ecab7e941c33802bea763a0f0e2b609d004b8a975b2063f213cdd639cdd384d2
languageName: node
linkType: hard
"jss-plugin-default-unit@npm:^10.5.1":
- version: 10.6.0
- resolution: "jss-plugin-default-unit@npm:10.6.0"
+ version: 10.9.2
+ resolution: "jss-plugin-default-unit@npm:10.9.2"
dependencies:
"@babel/runtime": ^7.3.1
- jss: 10.6.0
- checksum: 7ae36fadf4f206a16e49c40806ef92ba1f0e60395488ab8ad4df96796b408013b38ea5ed975155ecd7833a42a96c8d5cb1e90aef011279816633e60f807ec330
+ jss: 10.9.2
+ checksum: 48d8d836d36dd15513d98de11fba6be373ac29e6fd5702eb2edd143c815fb9e2f9969b2af6b1b964e9b8a052828690887042f6bcb34836836d5c359e52702d0f
languageName: node
linkType: hard
"jss-plugin-global@npm:^10.5.1":
- version: 10.6.0
- resolution: "jss-plugin-global@npm:10.6.0"
+ version: 10.9.2
+ resolution: "jss-plugin-global@npm:10.9.2"
dependencies:
"@babel/runtime": ^7.3.1
- jss: 10.6.0
- checksum: 7aab58408c77071c571dd2c2132edad8d40b683513a8de534f0ec7f63926fd9d9fcf6bdda82103eb541452a723b992f061720f8e5cf2014acb7f6bbbde111f56
+ jss: 10.9.2
+ checksum: 9b29b0c1f169d5a1033890875df072d76364a902d0f6470f448544669a388612a9a4d51844fb2bcb6d25a1c43d67c1637f11a162c2cdd9f4b6b0a8f9c94f6090
languageName: node
linkType: hard
"jss-plugin-nested@npm:^10.5.1":
- version: 10.6.0
- resolution: "jss-plugin-nested@npm:10.6.0"
+ version: 10.9.2
+ resolution: "jss-plugin-nested@npm:10.9.2"
dependencies:
"@babel/runtime": ^7.3.1
- jss: 10.6.0
+ jss: 10.9.2
tiny-warning: ^1.0.2
- checksum: 38095127e8b5ddb0a33ccaf61a4d89dc1b0f78e6d06d079a47a14bca4aed4e885f1957d83f11c5da08b4249b2c629e8bc62b2996f1674ca1302575a7b2b11171
+ checksum: ee08df07f3d553931b48037674842a8314bbc7857cc954a52f962a516bfc4b2d4e9871578b06b8fa3981edf5a927cea00021fd368d4ce315870065b7647f7b57
languageName: node
linkType: hard
"jss-plugin-props-sort@npm:^10.5.1":
- version: 10.6.0
- resolution: "jss-plugin-props-sort@npm:10.6.0"
+ version: 10.9.2
+ resolution: "jss-plugin-props-sort@npm:10.9.2"
dependencies:
"@babel/runtime": ^7.3.1
- jss: 10.6.0
- checksum: 2917ff301e667f75efa15df865a860a50d4319d415d1169c213e66b464edc2b37b6f428be2d974ccdde7c8d61c50123f18e788143a96eacc2a1c42ad250ae375
+ jss: 10.9.2
+ checksum: 70bd181a458a6078f19ad4d7350570c78d26b9aabc25a1fbde673839edcc19825af7b636861b208a38aa17e551e68d0ea38599480716b4aec08e353bbe737222
languageName: node
linkType: hard
"jss-plugin-rule-value-function@npm:^10.5.1":
- version: 10.6.0
- resolution: "jss-plugin-rule-value-function@npm:10.6.0"
+ version: 10.9.2
+ resolution: "jss-plugin-rule-value-function@npm:10.9.2"
dependencies:
"@babel/runtime": ^7.3.1
- jss: 10.6.0
+ jss: 10.9.2
tiny-warning: ^1.0.2
- checksum: 709e1ce0afdc39a52cb78e371fef626f933e99992790b15771d85056176bdf69365d62cfed6ce95434752cc1a1e7e05a6f2548e4cd5999808d50a28174315be3
+ checksum: b1a03209d0249f13ea6de766d3ee14c1769cd1f67d8c543c7d1ce6178c32cf15507c021ecb3e3b7585a8a7a2425dddbe0bdae02f4135c4598725a4152bebfc99
languageName: node
linkType: hard
"jss-plugin-vendor-prefixer@npm:^10.5.1":
- version: 10.6.0
- resolution: "jss-plugin-vendor-prefixer@npm:10.6.0"
+ version: 10.9.2
+ resolution: "jss-plugin-vendor-prefixer@npm:10.9.2"
dependencies:
"@babel/runtime": ^7.3.1
css-vendor: ^2.0.8
- jss: 10.6.0
- checksum: 9db048022ee2fb79a223a9f1be5976e131715057e3c0200cfcead9b9f8625023942534afa261e3c967cee6ad716bfd7d4a2f356556178f60f4eddcf83bcd8856
+ jss: 10.9.2
+ checksum: a5c352a500fea82e8a782a090cc9815f6331259f1a331158ed74ed77c750fb45750f5ae95f07d27922742830b45d4c3592cfaab194b3ba4a50591acbdeab04d8
languageName: node
linkType: hard
@@ -29045,16 +29252,15 @@ __metadata:
languageName: node
linkType: hard
-"jss@npm:10.6.0":
- version: 10.6.0
- resolution: "jss@npm:10.6.0"
+"jss@npm:10.9.2":
+ version: 10.9.2
+ resolution: "jss@npm:10.9.2"
dependencies:
"@babel/runtime": ^7.3.1
csstype: ^3.0.2
- indefinite-observable: ^2.0.1
is-in-browser: ^1.1.3
tiny-warning: ^1.0.2
- checksum: 529edd871ddf059beef55ee0f974ad8436fbcf050d6538e6d2d7edab53ce2c09983d2f863e42a1473dd0e42a0447e9912bce6706bb0e539226d92cdaad128d46
+ checksum: 7ae5cd2f8602bf197ec90251d774b9f10d55eb2db0854ac78dc7fb6983828c202e8eb0d5c8c59c73b2f64718ebd33d6063afa799d625a995986a22dc1cc27230
languageName: node
linkType: hard
@@ -29480,8 +29686,8 @@ __metadata:
linkType: hard
"lint-staged@npm:^13.0.0":
- version: 13.2.1
- resolution: "lint-staged@npm:13.2.1"
+ version: 13.2.2
+ resolution: "lint-staged@npm:13.2.2"
dependencies:
chalk: 5.2.0
cli-truncate: ^3.1.0
@@ -29495,10 +29701,10 @@ __metadata:
object-inspect: ^1.12.3
pidtree: ^0.6.0
string-argv: ^0.3.1
- yaml: ^2.2.1
+ yaml: ^2.2.2
bin:
lint-staged: bin/lint-staged.js
- checksum: 5788d3fe38e69b7f7b7f700284d4e10738978a0916bc77d3f6253c43a030fc4f01f89c09da349fb658f929f3393d8b1e3eaabaac5b604416ebc33476640b51ce
+ checksum: f34f6e2e85e827364658ab8717bf8b35239473c2d4959d746b053a4cf158ac657348444c755820a8ef3eac2d4753a37c52e9db3e201ee20b085f26d2f2fbc9ed
languageName: node
linkType: hard
@@ -30023,6 +30229,13 @@ __metadata:
languageName: node
linkType: hard
+"lru-cache@npm:^9.0.0":
+ version: 9.1.1
+ resolution: "lru-cache@npm:9.1.1"
+ checksum: 4d703bb9b66216bbee55ead82a9682820a2b6acbdfca491b235390b1ef1056000a032d56dfb373fdf9ad4492f1fa9d04cc9a05a77f25bd7ce6901d21ad9b68b7
+ languageName: node
+ linkType: hard
+
"lunr@npm:^2.3.9":
version: 2.3.9
resolution: "lunr@npm:2.3.9"
@@ -30569,10 +30782,10 @@ __metadata:
languageName: node
linkType: hard
-"meta-png@npm:1.0.5":
- version: 1.0.5
- resolution: "meta-png@npm:1.0.5"
- checksum: b8c92a696d5e78ef7f0ab53eb9039f108ee0c55cdac9d70e92e5fe2187b090176c0489426d58e594c7d1096481dac37913dd1265f28dfa39926db4d702a5e21d
+"meta-png@npm:1.0.6":
+ version: 1.0.6
+ resolution: "meta-png@npm:1.0.6"
+ checksum: aed14b3b53189c9d32002d76c40926bd93dd9d439bae3ad23ffb2645c375c9772c160879aa8af59ac85a2f43ae8bbe06b9648a53fe27815f4aeab238f4e9b79d
languageName: node
linkType: hard
@@ -31035,13 +31248,13 @@ __metadata:
linkType: hard
"mini-css-extract-plugin@npm:^2.4.2":
- version: 2.7.2
- resolution: "mini-css-extract-plugin@npm:2.7.2"
+ version: 2.7.6
+ resolution: "mini-css-extract-plugin@npm:2.7.6"
dependencies:
schema-utils: ^4.0.0
peerDependencies:
webpack: ^5.0.0
- checksum: cd65611d6dc452f230c6ebba8a47bc5f5146b813b13b0b402c6f4a69f6451242eeea781152bebd31cad8ca7c7e95dac91e7e464087f18fb65b2d1097b58cf4ae
+ checksum: be6f7cefc6275168eb0a6b8fe977083a18c743c9612c9f00e6c1a62c3393ca7960e93fba1a7ebb09b75f36a0204ad087d772c1ef574bc29c90c0e8175a3c0b83
languageName: node
linkType: hard
@@ -31347,75 +31560,6 @@ __metadata:
languageName: node
linkType: hard
-"msw@npm:^0.47.0":
- version: 0.47.4
- resolution: "msw@npm:0.47.4"
- dependencies:
- "@mswjs/cookies": ^0.2.2
- "@mswjs/interceptors": ^0.17.5
- "@open-draft/until": ^1.0.3
- "@types/cookie": ^0.4.1
- "@types/js-levenshtein": ^1.1.1
- chalk: 4.1.1
- chokidar: ^3.4.2
- cookie: ^0.4.2
- graphql: ^15.0.0 || ^16.0.0
- headers-polyfill: ^3.1.0
- inquirer: ^8.2.0
- is-node-process: ^1.0.1
- js-levenshtein: ^1.1.6
- node-fetch: ^2.6.7
- outvariant: ^1.3.0
- path-to-regexp: ^6.2.0
- statuses: ^2.0.0
- strict-event-emitter: ^0.2.6
- type-fest: ^2.19.0
- yargs: ^17.3.1
- peerDependencies:
- typescript: ">= 4.2.x <= 4.8.x"
- peerDependenciesMeta:
- typescript:
- optional: true
- bin:
- msw: cli/index.js
- checksum: 10ff632641d40384d6622abf4df6399e4ae649db0f676b5d1ee2d0a515ec96f33abe9d4fecba08cdba4b2e43255af419da9eefc020d40a7e10669d0906457197
- languageName: node
- linkType: hard
-
-"msw@npm:^0.49.0":
- version: 0.49.3
- resolution: "msw@npm:0.49.3"
- dependencies:
- "@mswjs/cookies": ^0.2.2
- "@mswjs/interceptors": ^0.17.5
- "@open-draft/until": ^1.0.3
- "@types/cookie": ^0.4.1
- "@types/js-levenshtein": ^1.1.1
- chalk: 4.1.1
- chokidar: ^3.4.2
- cookie: ^0.4.2
- graphql: ^15.0.0 || ^16.0.0
- headers-polyfill: ^3.1.0
- inquirer: ^8.2.0
- is-node-process: ^1.0.1
- js-levenshtein: ^1.1.6
- node-fetch: ^2.6.7
- outvariant: ^1.3.0
- path-to-regexp: ^6.2.0
- strict-event-emitter: ^0.4.3
- type-fest: ^2.19.0
- yargs: ^17.3.1
- peerDependencies:
- typescript: ">= 4.4.x <= 4.9.x"
- peerDependenciesMeta:
- typescript:
- optional: true
- bin:
- msw: cli/index.js
- checksum: 8322cd42cd69f289c05517d02bde22fc2f10e86fc2d0d209d9df54bd03d10b8123723c5587a2654dcd2cd0f314a016f9eccac88cffa30fafd1f9fead16db639e
- languageName: node
- linkType: hard
-
"msw@npm:^1.0.0, msw@npm:^1.0.1":
version: 1.2.0
resolution: "msw@npm:1.2.0"
@@ -32439,9 +32583,9 @@ __metadata:
linkType: hard
"openapi-types@npm:^12.0.0":
- version: 12.1.0
- resolution: "openapi-types@npm:12.1.0"
- checksum: d8f3e2bae519aa6bcf2012f4a5592b7283fe928c06f3bdc182776ce637c7ed8d5f9f342724f68c95c9572aefe21ed5e89b18a0295a703da61af5f97bd2aea9a7
+ version: 12.1.1
+ resolution: "openapi-types@npm:12.1.1"
+ checksum: 881dbc514e22046eb790c81370e912ca2daf5beec13cde77e8a15b5ec2635140487abdebf681ec969777067bcbb56b3c0880a0a22aa236d075d8fca5da9535ad
languageName: node
linkType: hard
@@ -33584,7 +33728,14 @@ __metadata:
languageName: node
linkType: hard
-"pngjs@npm:6.0.0, pngjs@npm:^6.0.0":
+"pngjs@npm:7.0.0":
+ version: 7.0.0
+ resolution: "pngjs@npm:7.0.0"
+ checksum: b19a018930d27de26229c1b3ff250b3a25d09caa22cbb0b0459987d91eb0a560a18ab5d67da45a38ed7514140f26d1db58de83c31159ec101f2bb270a3c707f1
+ languageName: node
+ linkType: hard
+
+"pngjs@npm:^6.0.0":
version: 6.0.0
resolution: "pngjs@npm:6.0.0"
checksum: ab6c285086060087097eab9fe6b5a528a24f9e79c03dea2b4fd6264ed4fdb5beff4a3257eeeaf2a9dc18249b539609c2a4e4013c567164a1f6b5ba2c974d5ecb
@@ -33773,16 +33924,16 @@ __metadata:
languageName: node
linkType: hard
-"postcss-modules-local-by-default@npm:^4.0.0":
- version: 4.0.0
- resolution: "postcss-modules-local-by-default@npm:4.0.0"
+"postcss-modules-local-by-default@npm:^4.0.0, postcss-modules-local-by-default@npm:^4.0.1":
+ version: 4.0.1
+ resolution: "postcss-modules-local-by-default@npm:4.0.1"
dependencies:
icss-utils: ^5.0.0
postcss-selector-parser: ^6.0.2
postcss-value-parser: ^4.1.0
peerDependencies:
postcss: ^8.1.0
- checksum: 6cf570badc7bc26c265e073f3ff9596b69bb954bc6ac9c5c1b8cba2995b80834226b60e0a3cbb87d5f399dbb52e6466bba8aa1d244f6218f99d834aec431a69d
+ checksum: 1a95eb8bc54a363a77dbd77a0a88f500e7937ecbed5903becef9362eace28de406e6fdf62640126c22964678370e87eb10481eea2703702772935b4515603bfd
languageName: node
linkType: hard
@@ -34013,7 +34164,7 @@ __metadata:
languageName: node
linkType: hard
-"postcss@npm:^8.1.0, postcss@npm:^8.4.19":
+"postcss@npm:^8.1.0, postcss@npm:^8.4.21":
version: 8.4.23
resolution: "postcss@npm:8.4.23"
dependencies:
@@ -34571,7 +34722,7 @@ __metadata:
languageName: node
linkType: hard
-"qs@npm:6.11.0, qs@npm:^6.10.1, qs@npm:^6.10.2, qs@npm:^6.11.0, qs@npm:^6.9.1, qs@npm:^6.9.4, qs@npm:^6.9.6":
+"qs@npm:6.11.0":
version: 6.11.0
resolution: "qs@npm:6.11.0"
dependencies:
@@ -34580,6 +34731,15 @@ __metadata:
languageName: node
linkType: hard
+"qs@npm:^6.10.1, qs@npm:^6.10.2, qs@npm:^6.11.0, qs@npm:^6.9.1, qs@npm:^6.9.4, qs@npm:^6.9.6":
+ version: 6.11.2
+ resolution: "qs@npm:6.11.2"
+ dependencies:
+ side-channel: ^1.0.4
+ checksum: e812f3c590b2262548647d62f1637b6989cc56656dc960b893fe2098d96e1bd633f36576f4cd7564dfbff9db42e17775884db96d846bebe4f37420d073ecdc0b
+ languageName: node
+ linkType: hard
+
"qs@npm:~6.5.2":
version: 6.5.3
resolution: "qs@npm:6.5.3"
@@ -35378,9 +35538,9 @@ __metadata:
languageName: node
linkType: hard
-"react-transition-group@npm:^4.0.0, react-transition-group@npm:^4.4.0":
- version: 4.4.1
- resolution: "react-transition-group@npm:4.4.1"
+"react-transition-group@npm:^4.0.0, react-transition-group@npm:^4.4.0, react-transition-group@npm:^4.4.5":
+ version: 4.4.5
+ resolution: "react-transition-group@npm:4.4.5"
dependencies:
"@babel/runtime": ^7.5.5
dom-helpers: ^5.0.1
@@ -35389,7 +35549,7 @@ __metadata:
peerDependencies:
react: ">=16.6.0"
react-dom: ">=16.6.0"
- checksum: 0bcd8af483709832e318dcef84c26ebddeb866bf4f58010286367ef0c1e7c5106e00cfc65688b9102414cb3d572c63909c2eb7ea972b4420fc70a78c10b6e8ad
+ checksum: 75602840106aa9c6545149d6d7ae1502fb7b7abadcce70a6954c4b64a438ff1cd16fc77a0a1e5197cdd72da398f39eb929ea06f9005c45b132ed34e056ebdeb1
languageName: node
linkType: hard
@@ -35429,12 +35589,12 @@ __metadata:
linkType: hard
"react-virtualized-auto-sizer@npm:^1.0.11, react-virtualized-auto-sizer@npm:^1.0.6":
- version: 1.0.16
- resolution: "react-virtualized-auto-sizer@npm:1.0.16"
+ version: 1.0.17
+ resolution: "react-virtualized-auto-sizer@npm:1.0.17"
peerDependencies:
react: ^15.3.0 || ^16.0.0-alpha || ^17.0.0 || ^18.0.0-rc
react-dom: ^15.3.0 || ^16.0.0-alpha || ^17.0.0 || ^18.0.0-rc
- checksum: 68319e26b162dd3f5186ed88f3977658a9da5963a250567d7fe0cd44671a87b765652248d3c39e1f02aa46c22df51a34748e11f436a70296b37ee509be89dab6
+ checksum: a9fc3db981e34e95fa1baf278e0fb5be9c31ae34092b4d3059cb55478a4652efca3f1b0f4253d62d099594173e1c1f45a724730b5eecde34a9fc23fbc70c215c
languageName: node
linkType: hard
@@ -37383,6 +37543,13 @@ __metadata:
languageName: node
linkType: hard
+"source-map@npm:^0.5.7":
+ version: 0.5.7
+ resolution: "source-map@npm:0.5.7"
+ checksum: 5dc2043b93d2f194142c7f38f74a24670cd7a0063acdaf4bf01d2964b402257ae843c2a8fa822ad5b71013b5fcafa55af7421383da919752f22ff488bc553f4d
+ languageName: node
+ linkType: hard
+
"source-map@npm:^0.6.0, source-map@npm:^0.6.1, source-map@npm:~0.6.0, source-map@npm:~0.6.1":
version: 0.6.1
resolution: "source-map@npm:0.6.1"
@@ -37727,7 +37894,7 @@ __metadata:
languageName: node
linkType: hard
-"statuses@npm:2.0.1, statuses@npm:^2.0.0":
+"statuses@npm:2.0.1":
version: 2.0.1
resolution: "statuses@npm:2.0.1"
checksum: 18c7623fdb8f646fb213ca4051be4df7efb3484d4ab662937ca6fbef7ced9b9e12842709872eb3020cc3504b93bde88935c9f6417489627a7786f24f8031cbcb
@@ -37829,7 +37996,7 @@ __metadata:
languageName: node
linkType: hard
-"strict-event-emitter@npm:^0.2.4, strict-event-emitter@npm:^0.2.6":
+"strict-event-emitter@npm:^0.2.4":
version: 0.2.8
resolution: "strict-event-emitter@npm:0.2.8"
dependencies:
@@ -38126,11 +38293,11 @@ __metadata:
linkType: hard
"style-loader@npm:^3.3.1":
- version: 3.3.2
- resolution: "style-loader@npm:3.3.2"
+ version: 3.3.3
+ resolution: "style-loader@npm:3.3.3"
peerDependencies:
webpack: ^5.0.0
- checksum: 5ee5ce2dc885369eccb55d429376e83d02570d473ac5edeb69fd65ee894847f1e51429cf078351f617bd04516ece8a1dd967f9f40464bd8fa76d903c6b2a6f08
+ checksum: f59c953f56f6a935bd6a1dfa409f1128fed2b66b48ce4a7a75b85862a7156e5e90ab163878962762f528ec4d510903d828da645e143fbffd26f055dc1c094078
languageName: node
linkType: hard
@@ -38184,10 +38351,10 @@ __metadata:
languageName: node
linkType: hard
-"stylis@npm:^4.0.6":
- version: 4.0.7
- resolution: "stylis@npm:4.0.7"
- checksum: 4f9fdc4b131b54cdc5988aaf23e796fcf77927c9d2f3147f6b23b8f3a9568eb38ce91b338b9d1b50a50391da32969c34ff68ff971c453fc3a5af89941c60ab06
+"stylis@npm:4.1.3, stylis@npm:^4.0.6":
+ version: 4.1.3
+ resolution: "stylis@npm:4.1.3"
+ checksum: d04dbffcb9bf2c5ca8d8dc09534203c75df3bf711d33973ea22038a99cc475412a350b661ebd99cbc01daa50d7eedcf0d130d121800eb7318759a197023442a6
languageName: node
linkType: hard
@@ -38489,8 +38656,8 @@ __metadata:
linkType: hard
"tar@npm:^6.0.2, tar@npm:^6.1.0, tar@npm:^6.1.11, tar@npm:^6.1.12, tar@npm:^6.1.2":
- version: 6.1.14
- resolution: "tar@npm:6.1.14"
+ version: 6.1.15
+ resolution: "tar@npm:6.1.15"
dependencies:
chownr: ^2.0.0
fs-minipass: ^2.0.0
@@ -38498,7 +38665,7 @@ __metadata:
minizlib: ^2.1.1
mkdirp: ^1.0.3
yallist: ^4.0.0
- checksum: a1be0815a9bdc97dfca7c6c2d71d1b836f8ba9314684e2c412832f0f59cc226d4c13da303d6bc30925e82f634cc793f40da79ae72f3e96fb87c23d0f4efd5207
+ checksum: f23832fceeba7578bf31907aac744ae21e74a66f4a17a9e94507acf460e48f6db598c7023882db33bab75b80e027c21f276d405e4a0322d58f51c7088d428268
languageName: node
linkType: hard
@@ -38592,8 +38759,8 @@ __metadata:
linkType: hard
"terser-webpack-plugin@npm:*, terser-webpack-plugin@npm:^5.1.3":
- version: 5.3.8
- resolution: "terser-webpack-plugin@npm:5.3.8"
+ version: 5.3.9
+ resolution: "terser-webpack-plugin@npm:5.3.9"
dependencies:
"@jridgewell/trace-mapping": ^0.3.17
jest-worker: ^27.4.5
@@ -38609,7 +38776,7 @@ __metadata:
optional: true
uglify-js:
optional: true
- checksum: 0ffc2a1949b1fd60ef9c815c4629b9817656db612bb58c5db96e3b04204c86afd142b115392e48733364edc7bf95131f54c10174c05f046ba8f2adead6b06c3c
+ checksum: 41705713d6f9cb83287936b21e27c658891c78c4392159f5148b5623f0e8c48559869779619b058382a4c9758e7820ea034695e57dc7c474b4962b79f553bc5f
languageName: node
linkType: hard
@@ -41087,7 +41254,7 @@ __metadata:
languageName: node
linkType: hard
-"yaml@npm:^2.0.0, yaml@npm:^2.1.1, yaml@npm:^2.2.1":
+"yaml@npm:^2.0.0, yaml@npm:^2.1.1, yaml@npm:^2.2.1, yaml@npm:^2.2.2":
version: 2.2.2
resolution: "yaml@npm:2.2.2"
checksum: d90c235e099e30094dcff61ba3350437aef53325db4a6bcd04ca96e1bfe7e348b191f6a7a52b5211e2dbc4eeedb22a00b291527da030de7c189728ef3f2b4eb3