diff --git a/.changeset/backstage-changelog.js b/.changeset/backstage-changelog.js
index ea8ca2300b..22038b348b 100644
--- a/.changeset/backstage-changelog.js
+++ b/.changeset/backstage-changelog.js
@@ -23,13 +23,13 @@ const {
async function getDependencyReleaseLine(changesets, dependenciesUpdated) {
if (dependenciesUpdated.length === 0) return '';
- const updatedDepenenciesList = dependenciesUpdated.map(
+ const updatedDependenciesList = dependenciesUpdated.map(
dependency => ` - ${dependency.name}@${dependency.newVersion}`,
);
// Return one `Updated dependencies` bullet instead of repeating for each changeset; this
// sacrifices the commit shas for brevity.
- return ['- Updated dependencies', ...updatedDepenenciesList].join('\n');
+ return ['- Updated dependencies', ...updatedDependenciesList].join('\n');
}
module.exports = {
diff --git a/.changeset/beige-mangos-knock.md b/.changeset/beige-mangos-knock.md
new file mode 100644
index 0000000000..d8723c3f87
--- /dev/null
+++ b/.changeset/beige-mangos-knock.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-github-actions': patch
+---
+
+Show empty state only when workflow API call has completed
diff --git a/.changeset/beige-news-cover.md b/.changeset/beige-news-cover.md
new file mode 100644
index 0000000000..70cebcd76f
--- /dev/null
+++ b/.changeset/beige-news-cover.md
@@ -0,0 +1,5 @@
+---
+'@backstage/core-app-api': patch
+---
+
+Deprecated `Auth0Auth`, pointing to using `OAuth2` directly instead.
diff --git a/.changeset/big-cougars-glow.md b/.changeset/big-cougars-glow.md
deleted file mode 100644
index d1630905db..0000000000
--- a/.changeset/big-cougars-glow.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/dev-utils': patch
----
-
-Add theme switcher to sidebar of dev app.
diff --git a/.changeset/big-months-float.md b/.changeset/big-months-float.md
deleted file mode 100644
index 9acb7002e7..0000000000
--- a/.changeset/big-months-float.md
+++ /dev/null
@@ -1,6 +0,0 @@
----
-'@backstage/plugin-catalog': patch
----
-
-Remove the "View Api" icon in the AboutCard, as the information is misleading for some users and is
-duplicated in the tabs above.
diff --git a/.changeset/blue-bikes-explode.md b/.changeset/blue-bikes-explode.md
deleted file mode 100644
index 1c10a08a46..0000000000
--- a/.changeset/blue-bikes-explode.md
+++ /dev/null
@@ -1,14 +0,0 @@
----
-'@backstage/config-loader': minor
----
-
-Update `loadConfig` to return `LoadConfigResult` instead of an array of `AppConfig`.
-
-This function is primarily used internally by other config loaders like `loadBackendConfig` which means no changes are required for most users.
-
-If you use `loadConfig` directly you will need to update your usage from:
-
-```diff
-- const appConfigs = await loadConfig(options)
-+ const { appConfigs } = await loadConfig(options)
-```
diff --git a/.changeset/cost-insights-two-crabs-evolve.md b/.changeset/cost-insights-two-crabs-evolve.md
deleted file mode 100644
index 8a932ea59c..0000000000
--- a/.changeset/cost-insights-two-crabs-evolve.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/plugin-cost-insights': patch
----
-
-Fixed generation of sample data in the example Cost Insights client
diff --git a/.changeset/early-cobras-explode.md b/.changeset/early-cobras-explode.md
deleted file mode 100644
index 34b4cb0e98..0000000000
--- a/.changeset/early-cobras-explode.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/catalog-client': patch
----
-
-Update to the right version of @backstage/errors
diff --git a/.changeset/eight-months-agree.md b/.changeset/eight-months-agree.md
deleted file mode 100644
index 0f117d8a40..0000000000
--- a/.changeset/eight-months-agree.md
+++ /dev/null
@@ -1,19 +0,0 @@
----
-'@backstage/plugin-gcp-projects': patch
----
-
-UI updates to GCP-projects plugin
-
-Adds the following to the project list page:
-
-- pagination
-- filtering
-- sorting
-- rows per page
-- show/hide columns
-
-Makes breadcrumb a link back to project list for the project details and new project views.
-
-In project list page, updates New project button to use RouterLink instead of `href` to avoid login prompt.
-
-In project details view, links to project details and logs now work, clicking on these will open the project or logs in GCP in new tab.
diff --git a/.changeset/empty-dots-attend.md b/.changeset/empty-dots-attend.md
deleted file mode 100644
index 3903dfa22b..0000000000
--- a/.changeset/empty-dots-attend.md
+++ /dev/null
@@ -1,8 +0,0 @@
----
-'@backstage/catalog-model': patch
-'@backstage/cli': patch
-'@backstage/config-loader': patch
-'@backstage/plugin-scaffolder': patch
----
-
-Update the json-schema dependency version.
diff --git a/.changeset/forty-ligers-protect.md b/.changeset/forty-ligers-protect.md
deleted file mode 100644
index e3e46fb7f3..0000000000
--- a/.changeset/forty-ligers-protect.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/cli': patch
----
-
-remove double config dep
diff --git a/.changeset/fresh-zebras-hug.md b/.changeset/fresh-zebras-hug.md
deleted file mode 100644
index c295dc2287..0000000000
--- a/.changeset/fresh-zebras-hug.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/plugin-kafka-backend': patch
----
-
-Update Kafka configuration types
diff --git a/.changeset/giant-drinks-wave.md b/.changeset/giant-drinks-wave.md
deleted file mode 100644
index ecf4c8fbdd..0000000000
--- a/.changeset/giant-drinks-wave.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/dev-utils': patch
----
-
-Migrated to using `@backstage/app-defaults`.
diff --git a/.changeset/happy-rice-tickle.md b/.changeset/happy-rice-tickle.md
deleted file mode 100644
index 1e39dc2e9c..0000000000
--- a/.changeset/happy-rice-tickle.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/backend-common': patch
----
-
-Added the `isDatabaseConflictError` function.
diff --git a/.changeset/hot-walls-fail.md b/.changeset/hot-walls-fail.md
deleted file mode 100644
index 3728e10ff6..0000000000
--- a/.changeset/hot-walls-fail.md
+++ /dev/null
@@ -1,13 +0,0 @@
----
-'@backstage/create-app': patch
----
-
-Migrated the app template use the new `@backstage/app-defaults` for the `createApp` import, since the `createApp` exported by `@backstage/app-core-api` will be removed in the future.
-
-To migrate an existing application, add the latest version of `@backstage/app-defaults` as a dependency in `packages/app/package.json`, and make the following change to `packages/app/src/App.tsx`:
-
-```diff
--import { createApp, FlatRoutes } from '@backstage/core-app-api';
-+import { createApp } from '@backstage/app-defaults';
-+import { FlatRoutes } from '@backstage/core-app-api';
-```
diff --git a/.changeset/hungry-wombats-happen.md b/.changeset/hungry-wombats-happen.md
deleted file mode 100644
index 018e7ae9e8..0000000000
--- a/.changeset/hungry-wombats-happen.md
+++ /dev/null
@@ -1,6 +0,0 @@
----
-'@backstage/backend-common': patch
-'@backstage/cli': patch
----
-
-Update internal usage of `configLoader.loadConfig` that now returns an object instead of an array of configs.
diff --git a/.changeset/khaki-rice-kick.md b/.changeset/khaki-rice-kick.md
deleted file mode 100644
index 54819b855a..0000000000
--- a/.changeset/khaki-rice-kick.md
+++ /dev/null
@@ -1,6 +0,0 @@
----
-'@backstage/core-components': patch
-'@backstage/plugin-user-settings': patch
----
-
-Add Props Icon for Sidebar Item SidebarSearchField and Settings
diff --git a/.changeset/little-news-retire.md b/.changeset/little-news-retire.md
deleted file mode 100644
index 4304cf2d19..0000000000
--- a/.changeset/little-news-retire.md
+++ /dev/null
@@ -1,6 +0,0 @@
----
-'@backstage/plugin-bazaar': patch
-'@backstage/plugin-bazaar-backend': patch
----
-
-A Bazaar project has been extended with the following fields: size, start date (optional), end date (optional) and a responsible person.
diff --git a/.changeset/little-numbers-thank.md b/.changeset/little-numbers-thank.md
deleted file mode 100644
index f444a904c0..0000000000
--- a/.changeset/little-numbers-thank.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/core-components': patch
----
-
-Changing the `Header` styles to use more theme variables. With this the title `font-size` will not change on resizing the window.
diff --git a/.changeset/many-sloths-cross.md b/.changeset/many-sloths-cross.md
deleted file mode 100644
index 07cb6d2f61..0000000000
--- a/.changeset/many-sloths-cross.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/create-app': patch
----
-
-Refactor and add regression tests for create-app tasks
diff --git a/.changeset/moody-snails-admire.md b/.changeset/moody-snails-admire.md
deleted file mode 100644
index 7622546989..0000000000
--- a/.changeset/moody-snails-admire.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/cli': minor
----
-
-Tweaked style insertion logic to make sure that JSS stylesheets always receive the highest priority.
diff --git a/.changeset/nasty-impalas-travel.md b/.changeset/nasty-impalas-travel.md
deleted file mode 100644
index f6eb321628..0000000000
--- a/.changeset/nasty-impalas-travel.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/backend-common': patch
----
-
-Paths can be specified in backend.reading.allow to further restrict allowed targets
diff --git a/.changeset/nice-seahorses-look.md b/.changeset/nice-seahorses-look.md
new file mode 100644
index 0000000000..9652898c54
--- /dev/null
+++ b/.changeset/nice-seahorses-look.md
@@ -0,0 +1,5 @@
+---
+'@backstage/core-plugin-api': patch
+---
+
+Deprecated `auth0AuthApiRef`, `oauth2ApiRef`, `oidcAuthApiRef`, `samlAuthApiRef`, and marked the rest of the auth `ApiRef`s as experimental. For more information on how to address the deprecations, see https://backstage.io/docs/api/deprecations#generic-auth-api-refs.
diff --git a/.changeset/nine-bananas-mate.md b/.changeset/nine-bananas-mate.md
deleted file mode 100644
index e119eb722f..0000000000
--- a/.changeset/nine-bananas-mate.md
+++ /dev/null
@@ -1,6 +0,0 @@
----
-'@backstage/core-app-api': patch
-'@backstage/test-utils': patch
----
-
-Migrated to using new `ErrorApiError` and `ErrorApiErrorContext` names.
diff --git a/.changeset/ninety-grapes-love.md b/.changeset/ninety-grapes-love.md
deleted file mode 100644
index 9143bddd30..0000000000
--- a/.changeset/ninety-grapes-love.md
+++ /dev/null
@@ -1,6 +0,0 @@
----
-'@backstage/core-components': patch
-'@backstage/plugin-auth-backend': patch
----
-
-Update OAuthAdapter to create identity.token from identity.idToken if it does not exist, and prevent overwrites to identity.toke. Update login page commonProvider to prefer .token over .idToken
diff --git a/.changeset/ninety-spies-prove.md b/.changeset/ninety-spies-prove.md
deleted file mode 100644
index 509aedd66f..0000000000
--- a/.changeset/ninety-spies-prove.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/plugin-scaffolder-backend': patch
----
-
-Skip empty file names when scaffolding with nunjucks
diff --git a/.changeset/orange-experts-approve.md b/.changeset/orange-experts-approve.md
deleted file mode 100644
index 13d1b022da..0000000000
--- a/.changeset/orange-experts-approve.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/plugin-catalog-backend': patch
----
-
-Adjust entity query construction to ensure sub-queries are always isolated from one another.
diff --git a/.changeset/proud-bottles-cheat.md b/.changeset/proud-bottles-cheat.md
deleted file mode 100644
index 0c724352c7..0000000000
--- a/.changeset/proud-bottles-cheat.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/backend-common': patch
----
-
-Add `AbortSignal` support to `UrlReader`
diff --git a/.changeset/rare-lemons-boil.md b/.changeset/rare-lemons-boil.md
deleted file mode 100644
index b882ab0b91..0000000000
--- a/.changeset/rare-lemons-boil.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/core-app-api': patch
----
-
-Deprecated the `BackstagePluginWithAnyOutput` type.
diff --git a/.changeset/rich-pillows-cough.md b/.changeset/rich-pillows-cough.md
deleted file mode 100644
index 959eb69214..0000000000
--- a/.changeset/rich-pillows-cough.md
+++ /dev/null
@@ -1,12 +0,0 @@
----
-'@backstage/backend-common': patch
----
-
-Make sure that server builder `start()` propagates errors (such as failing to bind to the required port) properly and doesn't resolve the promise prematurely.
-
-After this change, the backend logger will be able to actually capture the error as it happens:
-
-```
-2021-11-11T10:54:21.334Z backstage info Initializing http server
-2021-11-11T10:54:21.335Z backstage error listen EADDRINUSE: address already in use :::7000 code=EADDRINUSE errno=-48 syscall=listen address=:: port=7000
-```
diff --git a/.changeset/rotten-clouds-kick.md b/.changeset/rotten-clouds-kick.md
deleted file mode 100644
index 2c4772c6e5..0000000000
--- a/.changeset/rotten-clouds-kick.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/core-app-api': patch
----
-
-Start exporting and marking several types as public to address errors in the API report.
diff --git a/.changeset/sharp-meals-fetch.md b/.changeset/sharp-meals-fetch.md
deleted file mode 100644
index 1d3df65ba4..0000000000
--- a/.changeset/sharp-meals-fetch.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/core-plugin-api': minor
----
-
-Removed the unused `UserFlags` type.
diff --git a/.changeset/sharp-moons-jog.md b/.changeset/sharp-moons-jog.md
deleted file mode 100644
index d3329af08e..0000000000
--- a/.changeset/sharp-moons-jog.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/core-plugin-api': patch
----
-
-Deprecated the `theme` property on `AppTheme`, replacing it with `Provider`. See https://backstage.io/docs/api/deprecations#app-theme for more details.
diff --git a/.changeset/shiny-starfishes-float.md b/.changeset/shiny-starfishes-float.md
deleted file mode 100644
index 0673791375..0000000000
--- a/.changeset/shiny-starfishes-float.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/cli': patch
----
-
-Added a scaffolder backend module template for the `create` command.
diff --git a/.changeset/silent-taxis-tan.md b/.changeset/silent-taxis-tan.md
deleted file mode 100644
index 286ef40a4c..0000000000
--- a/.changeset/silent-taxis-tan.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/core-plugin-api': minor
----
-
-Remove exports of unused types(`RouteOptions` and `RoutePath`).
diff --git a/.changeset/slow-moles-act.md b/.changeset/slow-moles-act.md
deleted file mode 100644
index ab920bfa5d..0000000000
--- a/.changeset/slow-moles-act.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/test-utils': patch
----
-
-Migrated to using `createSpecializedApp`.
diff --git a/.changeset/sour-cameras-hide.md b/.changeset/sour-cameras-hide.md
deleted file mode 100644
index a31e7a13c3..0000000000
--- a/.changeset/sour-cameras-hide.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/cli': patch
----
-
-Fixed a bug where calling `backstage-cli backend:bundle --build-dependencies` with no dependencies to be built would cause all monorepo packages to be built instead.
diff --git a/.changeset/spicy-parents-fold.md b/.changeset/spicy-parents-fold.md
new file mode 100644
index 0000000000..1ba056c7c8
--- /dev/null
+++ b/.changeset/spicy-parents-fold.md
@@ -0,0 +1,13 @@
+---
+'@backstage/create-app': patch
+---
+
+Updated the root `package.json` to include files with `.cjs` and `.mjs` extensions in the `"lint-staged"` configuration.
+
+To make this change to an existing app, apply the following changes to the `package.json` file:
+
+```diff
+ "lint-staged": {
+- "*.{js,jsx,ts,tsx}": [
++ "*.{js,jsx,ts,tsx,mjs,cjs}": [
+```
diff --git a/.changeset/spicy-rice-build.md b/.changeset/spicy-rice-build.md
deleted file mode 100644
index c0322d778a..0000000000
--- a/.changeset/spicy-rice-build.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/backend-common': patch
----
-
-Do not redact empty or one-character strings. These imply that it's just a test or local dev, and unnecessarily ruin the log output.
diff --git a/.changeset/strong-doors-destroy.md b/.changeset/strong-doors-destroy.md
new file mode 100644
index 0000000000..d568ed4e07
--- /dev/null
+++ b/.changeset/strong-doors-destroy.md
@@ -0,0 +1,5 @@
+---
+'@backstage/cli': patch
+---
+
+Add support for `.cjs` and `.mjs` extensions in local and dependency modules.
diff --git a/.changeset/strong-paws-laugh.md b/.changeset/strong-paws-laugh.md
new file mode 100644
index 0000000000..de39440e34
--- /dev/null
+++ b/.changeset/strong-paws-laugh.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-auth-backend': patch
+---
+
+export minimal typescript types for OIDC provider
diff --git a/.changeset/tame-buckets-move.md b/.changeset/tame-buckets-move.md
deleted file mode 100644
index f7ee3deb90..0000000000
--- a/.changeset/tame-buckets-move.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-'@backstage/plugin-azure-devops': patch
-'@backstage/plugin-azure-devops-backend': patch
-'@backstage/plugin-azure-devops-common': minor
----
-
-Improved Date handling for the Azure DevOps set of plugins by using strings and letting the frontend handle the conversion to DateTime
diff --git a/.changeset/techdocs-chatt-months-report-too.md b/.changeset/techdocs-chatt-months-report-too.md
deleted file mode 100644
index 612a4506a5..0000000000
--- a/.changeset/techdocs-chatt-months-report-too.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/plugin-techdocs': patch
----
-
-Fixed entity triplet case handling for certain locales.
diff --git a/.changeset/techdocs-chatty-months-report.md b/.changeset/techdocs-chatty-months-report.md
deleted file mode 100644
index 7d3fa773bf..0000000000
--- a/.changeset/techdocs-chatty-months-report.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/techdocs-common': patch
----
-
-Added OpenStack Swift case migration support.
diff --git a/.changeset/techdocs-famous-donuts-warn.md b/.changeset/techdocs-famous-donuts-warn.md
deleted file mode 100644
index 2fd9346ee2..0000000000
--- a/.changeset/techdocs-famous-donuts-warn.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@techdocs/cli': patch
----
-
-Add support for specifying bucketRootPath for AWS and GCS publishers
diff --git a/.changeset/techdocs-orange-cougars-relax.md b/.changeset/techdocs-orange-cougars-relax.md
deleted file mode 100644
index 376de6a0e5..0000000000
--- a/.changeset/techdocs-orange-cougars-relax.md
+++ /dev/null
@@ -1,6 +0,0 @@
----
-'@backstage/techdocs-common': patch
-'@backstage/plugin-techdocs-backend': patch
----
-
-Allow amazon web services s3 buckets to pass an server side encryption configuration so they can publish to encrypted buckets
diff --git a/.changeset/techdocs-sharp-knives-unite.md b/.changeset/techdocs-sharp-knives-unite.md
deleted file mode 100644
index aa3625b883..0000000000
--- a/.changeset/techdocs-sharp-knives-unite.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/plugin-techdocs': patch
----
-
-Use a better checkbox rendering in a task list.
diff --git a/.changeset/techdocs-silver-plums-speak.md b/.changeset/techdocs-silver-plums-speak.md
deleted file mode 100644
index 84d04fc1ef..0000000000
--- a/.changeset/techdocs-silver-plums-speak.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/plugin-techdocs': patch
----
-
-Updates reader component used to display techdocs documentation. A previous change made this component not usable out of a page which don't have entityRef in url parameters. Reader component EntityRef parameter is now used instead of url parameters. Techdocs documentation component can now be used in our custom pages.
diff --git a/.changeset/tender-gorillas-peel.md b/.changeset/tender-gorillas-peel.md
deleted file mode 100644
index f7d7022740..0000000000
--- a/.changeset/tender-gorillas-peel.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/cli': patch
----
-
-bump `@rollup/plugin-commonjs` from 17.1.0 to 21.0.1
diff --git a/.changeset/thirty-ways-attend.md b/.changeset/thirty-ways-attend.md
new file mode 100644
index 0000000000..b294b4bfb0
--- /dev/null
+++ b/.changeset/thirty-ways-attend.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-catalog-react': patch
+---
+
+`useEntityTypeFilter`: Skip updating selected types if a kind filter change did not change them.
diff --git a/.changeset/tidy-beans-reflect.md b/.changeset/tidy-beans-reflect.md
deleted file mode 100644
index 20796075f0..0000000000
--- a/.changeset/tidy-beans-reflect.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/cli': patch
----
-
-Introduces new `backstage-cli create` command to replace `create-plugin` and make space for creating a wider array of things. The create command also adds a new template for creating isomorphic common plugin packages.
diff --git a/.changeset/twenty-swans-matter.md b/.changeset/twenty-swans-matter.md
deleted file mode 100644
index 55cd3d6dc3..0000000000
--- a/.changeset/twenty-swans-matter.md
+++ /dev/null
@@ -1,9 +0,0 @@
----
-'@backstage/core-app-api': patch
----
-
-The `createApp` function from `@backstage/core-app-api` has been deprecated, with two new options being provided as a replacement.
-
-The first and most commonly used one is `createApp` from the new `@backstage/app-defaults` package, which behaves just like the existing `createApp`. In the future this method is likely to be expanded to add more APIs and other pieces into the default setup, for example the Utility APIs from `@backstage/integration-react`.
-
-The other option that we now provide is to use `createSpecializedApp` from `@backstage/core-app-api`. This is a more low-level API where you need to provide a full set of options, including your own `components`, `icons`, `defaultApis`, and `themes`. The `createSpecializedApp` way of creating an app is particularly useful if you are not using `@backstage/core-components` or MUI, as it allows you to avoid those dependencies completely.
diff --git a/.changeset/violet-panthers-care.md b/.changeset/violet-panthers-care.md
deleted file mode 100644
index 7a43c87f37..0000000000
--- a/.changeset/violet-panthers-care.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/plugin-catalog-backend': patch
----
-
-adds getDefaultProcessor method to CatalogBuilder
diff --git a/.changeset/weak-berries-heal.md b/.changeset/weak-berries-heal.md
new file mode 100644
index 0000000000..4160d078fc
--- /dev/null
+++ b/.changeset/weak-berries-heal.md
@@ -0,0 +1,14 @@
+---
+'@backstage/plugin-apache-airflow': minor
+---
+
+Introduces a new plugin for the Apache Airflow workflow management platform.
+This implementation has been tested with the Apache Airflow v2 API,
+authenticating with basic authentication through the Backstage proxy plugin.
+
+Supported functionality includes:
+
+- Information card of version information of the Airflow instance
+- Information card of instance health for the meta-database and scheduler
+- Table of DAGs with meta information and status, along with a link to view
+ details in the Airflow UI
diff --git a/.changeset/yellow-deers-act.md b/.changeset/yellow-deers-act.md
deleted file mode 100644
index a9008ea41e..0000000000
--- a/.changeset/yellow-deers-act.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/core-plugin-api': patch
----
-
-Deprecated the `Error` and `ErrorContext` types, replacing them with identical `ErrorApiError` and `ErrorApiErrorContext` types.
diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index 9be92d294e..ed4b61099f 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -8,6 +8,8 @@
/docs/features/techdocs @backstage/techdocs-core
/docs/features/search @backstage/techdocs-core
/docs/assets/search @backstage/techdocs-core
+/plugins/allure @backstage/reviewers @deepak-bhardwaj-ps
+/plugins/circleci @backstage/reviewers @adamdmharvey
/plugins/code-coverage @backstage/reviewers @alde @nissayeva
/plugins/code-coverage-backend @backstage/reviewers @alde @nissayeva
/plugins/cost-insights @backstage/silver-lining
@@ -18,6 +20,20 @@
/plugins/techdocs-backend @backstage/techdocs-core
/plugins/ilert @backstage/reviewers @yacut
/plugins/home @backstage/techdocs-core
+/plugins/azure-devops @backstage/reviewers @marleypowell @awanlin
+/plugins/azure-devops-backend @backstage/reviewers @marleypowell @awanlin
+/plugins/azure-devops-common @backstage/reviewers @marleypowell @awanlin
+/plugins/jenkins @backstage/reviewers @timja
+/plugins/jenkins-backend @backstage/reviewers @timja
+/plugins/kafka @backstage/reviewers @nirga
+/plugins/kafka-backend @backstage/reviewers @nirga
+/plugins/scaffolder-backend-module-yeoman @backstage/reviewers @pawelmitka
+/plugins/scaffolder-backend-module-rails @backstage/reviewers @angeliski
+/plugins/git-release-manager @backstage/reviewers @erikengervall
+/tech-insights-backend @backstage/reviewers @xantier @iain-b
+/tech-insights-backend-module-jsonfc @backstage/reviewers @xantier @iain-b
+/tech-insights-tech-insights-common @backstage/reviewers @xantier @iain-b
+/tech-insights-tech-insights-node @backstage/reviewers @xantier @iain-b
/packages/embedded-techdocs-app @backstage/techdocs-core
/packages/search-common @backstage/techdocs-core
/packages/techdocs-cli @backstage/techdocs-core
diff --git a/.github/stale.yml b/.github/stale.yml
deleted file mode 100644
index 3cd0d53720..0000000000
--- a/.github/stale.yml
+++ /dev/null
@@ -1,21 +0,0 @@
-# Number of days of inactivity before an issue becomes stale
-daysUntilStale: 60
-# Number of days of inactivity before a stale issue is closed
-daysUntilClose: 7
-# Issues with these labels will never be considered stale
-exemptLabels:
- - pinned
- - security
- - plugin
- - help wanted
- - good first issue
- - rfc
-# Label to use when marking an issue as stale
-staleLabel: stale
-# Comment to post when marking an issue as stale. Set to `false` to disable
-markComment: >
- This issue has been automatically marked as stale because it has not had
- recent activity. It will be closed if no further activity occurs. Thank you
- for your contributions.
-# Comment to post when closing a stale issue. Set to `false` to disable
-closeComment: false
diff --git a/.github/styles/vocab.txt b/.github/styles/vocab.txt
index d65e31b4c4..4ec62923d8 100644
--- a/.github/styles/vocab.txt
+++ b/.github/styles/vocab.txt
@@ -189,6 +189,7 @@ oidc
Okta
onboarding
Onboarding
+OpenShift
orgs
pagerduty
pageview
diff --git a/.github/workflows/snyk-github-issue-sync.yml b/.github/workflows/snyk-github-issue-sync.yml
index 0c50b2c505..7b93374609 100644
--- a/.github/workflows/snyk-github-issue-sync.yml
+++ b/.github/workflows/snyk-github-issue-sync.yml
@@ -6,6 +6,8 @@ on:
jobs:
sync:
+ if: github.repository == 'backstage/backstage' # prevent running on forks
+
runs-on: ubuntu-latest
strategy:
diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml
new file mode 100644
index 0000000000..96a2a20109
--- /dev/null
+++ b/.github/workflows/stale.yml
@@ -0,0 +1,30 @@
+name: 'Stale workflow'
+on:
+ workflow_dispatch:
+ schedule:
+ - cron: '*/10 * * * *' # run every 10 minutes as it also removes labels.
+
+jobs:
+ stale:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/stale@main
+ id: stale
+ with:
+ stale-issue-message: >
+ This issue has been automatically marked as stale because it has not had
+ recent activity. It will be closed if no further activity occurs. Thank you
+ for your contributions.
+ days-before-issue-stale: 60
+ days-before-issue-close: 7
+ exempt-issue-labels: 'pinned,security,plugin,help wanted,good first issue,rfc'
+ stale-issue-label: stale
+ stale-pr-message: >
+ This PR has been automatically marked as stale because it has not had
+ recent activity from the author. It will be closed if no further activity occurs.
+ If you are the author and the PR has been closed, feel free to re-open the PR and continue the contribution!
+ days-before-pr-stale: 7
+ days-before-pr-close: 3
+ exempt-pr-labels: reviewer-approved,awaiting-review
+ stale-pr-label: stale
+ operations-per-run: 100
diff --git a/.tugboat/config.yml b/.tugboat/config.yml
index b8c3c127c8..883708bef7 100644
--- a/.tugboat/config.yml
+++ b/.tugboat/config.yml
@@ -1,7 +1,7 @@
services:
backstage:
image: tugboatqa/node:lts
- expose: 7000
+ expose: 7007
default: true
commands:
init:
@@ -14,4 +14,4 @@ services:
- yarn workspace example-app build
start:
# wget the endpoint. Will retry every 2 seconds. 30 retries = 1m for service to come up. Plenty.
- - wget -O /dev/null -o /dev/null --tries=30 --timeout=5 --retry-connrefused http://localhost:7000
+ - wget -O /dev/null -o /dev/null --tries=30 --timeout=5 --retry-connrefused http://localhost:7007
diff --git a/ADOPTERS.md b/ADOPTERS.md
index 4f1d7fbfe8..43e7fba68b 100644
--- a/ADOPTERS.md
+++ b/ADOPTERS.md
@@ -5,7 +5,7 @@
| [DFDS](https://www.dfds.com) | [@carlsendk](https://github.com/carlsendk) | V2 self-service platform. |
| [Roadie](https://roadie.io) | [@dtuite](https://github.com/dtuite) | Hosted, managed Backstage with easy set-up |
| [Roku](https://www.roku.com) | [@timurista](https://github.com/timurista) | Initial work on Cloud engineering service platform. |
-| [SDA SE](https://sda.se) | [@Fox32](https://github.com/Fox32) | Central place for developing and sharing services in our insurance ecosystem. |
+| [SDA SE](https://sda.se) | [@dschwank](https://github.com/dschwank), [@iammnils](https://github.com/iammnils) | Central place for developing and sharing services in our insurance ecosystem. |
| [H-E-B](https://www.heb.com) | [@german-j-rodriguez](https://github.com/german-j-rodriguez) | Initial work on Engineering Portal service platform. |
| [American Airlines](https://www.aa.com) | [@paulpach](https://github.com/paulpach) | Central place for developers to develop and maintain applications |
| [Kiwi.com](https://kiwi.com) | [@aexvir](https://github.com/aexvir) | Replacing the frontend of [The Zoo](https://github.com/kiwicom/the-zoo), their service registry. |
@@ -66,6 +66,12 @@
| [Palo Alto Networks](https://www.paloaltonetworks.com) | [Jeremy Guarini](https://github.com/jeremyguarini), [Brian Lomeland](https://github.com/bbbmmmlll), [Palo Alto Networks](https://github.com/PaloAltoNetworks) | Developer portal, service catalog, documentation and tooling |
| [Signal Iduna Group](https://www.signal-iduna.de/) | [Jonas Thomsen](https://github.com/JoThomsen) | Developer Portal, documentation, monitoring, service catalog for our insurance ecosystem |
| [Tradeshift](https://www.tradeshift.com/) | [Soren Mathiasen](https://github.com/sorenmat) | Developer Portal: documentation, monitoring, service templates, service catalog for our micro services |
-| [Unity](https://unity.com) | [Ted Cordery](https://github.com/TeddyBallGame) | A centralized service catalog with documentation for our service engineers. |
-| [PicPay](https://www.picpay.com) | [Luis Baroni](https://github.com/lcsbaroni), [Renata Poluceno](https://github.com/renatapoluceno), [PicPay](https://github.com/picpay) | Developer portal for building services throught templates, service catalog with ownership of services, documentation and metrics providing autonomy and visibility for all. |
+| [Unity](https://unity.com) | [Ted Cordery](https://github.com/TeddyBallGame) | A centralized service catalog with documentation for our service engineers. |
+| [PicPay](https://www.picpay.com) | [Luis Baroni](https://github.com/lcsbaroni), [Renata Poluceno](https://github.com/renatapoluceno), [PicPay](https://github.com/picpay) | Developer portal for building services throught templates, service catalog with ownership of services, documentation and metrics providing autonomy and visibility for all. |
| [Epic Games](https://www.epicgames.com) | [Brian Jung](https://github.com/brian-at-epic), [Jeff Goldian](https://github.com/jeffgoldian-Epic) | Developer Portal: Service Catalog, Documentation, Software Templates and more making our internal teams' lives easier! |
+| [Globo](https://globo.com) | [Carlos Gusmão](https://github.com/caeugusmao), [Guilherme Vierno](https://github.com/vierno), [Denis Aoki](https://github.com/dnsaoki2), [Maycon Dionisio](https://github.com/MayconDionisio), | Reduce the friction of accessing the information engineers need about Globo's digital services through a coherent and centralized experience. |
+| [QBE](https://www.qbe.com/) | [Daniel Steel](https://github.com/danielsteelqbe), [Pete Jespers](https://github.com/petejespersqbe) | Developer portal allowing our global teams to explore and create applications, documentation and cloud infrastructure easily and quickly 🚀 |
+| [LogMeIn](https://www.logmein.com) | [Lorenzo Orsatti](https://github.com/lorsatti) | Improve onboarding experience of new developers. Discover faster and painlessly developer documentation, API definitions and team information. Provide useful dev metrics in a central place. Provide easy-to-use templates for new services. |
+| [Telstra](https://www.telstra.com.au) | [@kiranpatel11](https://github.com/kiranpatel11), [JasonC](https://github.com/JasonC17) | Primary usage: software catalog and templates
Emerging usage : TechDocs, Explore Ecosystem, TechRadar, etc |
+| [Mosaico](https://www.mosaico.com.br/) | [Wédney Yuri](https://github.com/wedneyyuri),[@tino.milton](https://github.com/miltonjacomini) | A centralized service catalog of our documentation for our service engineers. |
+| [Mox Bank](https://www.mox.com/) | [Nick Laqua](https://github.com/nick-laqua-dragon), [Gauthier Roebroeck](https://github.com/gauthier-roebroeck-mox) | "Single pane of glass" developer portal for providing a best-in-class developer experience to our product teams and making Mox the best tech environment in Hongkong 🥰🚀 |
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 99d63cf0b4..31f912f43e 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -122,7 +122,9 @@ We use [changesets](https://github.com/atlassian/changesets) to help us prepare
Any time a patch, minor, or major change aligning to [Semantic Versioning](https://semver.org) is made to any published package in `packages/` or `plugins/`, a changeset should be used. It helps to align your change to the [Backstage stability index](https://backstage.io/docs/overview/stability-index) for the package you are changing, for example, when to provide additional clarity on deprecation or impacting changes which will then be included into CHANGELOGs.
-In general, changesets are not needed for the documentation, build utilities, contributed samples in `contrib/`, or the [example `packages/app`](packages/app).
+In general, changesets are only needed for changes to packages within `packages/` or `plugins/` directories, and only for the packages that are not marked as `private`. Changesets are also not needed for changes that do not affect the published version of each package, for example changes to tests or in-line source code comments.
+
+Changesets **are** needed for new packages, as that is what triggers the package to be part of the next release.
### How to create a changeset
diff --git a/app-config.yaml b/app-config.yaml
index 8aa3bc569c..6cd05f44e8 100644
--- a/app-config.yaml
+++ b/app-config.yaml
@@ -23,9 +23,14 @@ app:
title: '#backstage'
backend:
- baseUrl: http://localhost:7000
+ # Used for enabling authentication, secret is shared by all backend plugins
+ # See backend-to-backend-auth.md in the docs for information on the format
+ # auth:
+ # keys:
+ # - secret: ${BACKEND_SECRET}
+ baseUrl: http://localhost:7007
listen:
- port: 7000
+ port: 7007
database:
client: sqlite3
connection: ':memory:'
@@ -92,6 +97,11 @@ proxy:
headers:
Authorization: ${ILERT_AUTH_HEADER}
+ '/airflow':
+ target: https://your.airflow.instance.com/api/v1
+ headers:
+ Authorization: ${AIRFLOW_BASIC_AUTH_HEADER}
+
organization:
name: My Company
@@ -272,24 +282,6 @@ scaffolder:
# email: scaffolder@backstage.io
# Use to customize the default commit message when new components are created
# defaultCommitMessage: 'Initial commit'
- github:
- token: ${GITHUB_TOKEN}
- visibility: public # or 'internal' or 'private'
- gitlab:
- api:
- baseUrl: https://gitlab.com
- token: ${GITLAB_TOKEN}
- visibility: public # or 'internal' or 'private'
- azure:
- baseUrl: https://dev.azure.com/{your-organization}
- api:
- token: ${AZURE_TOKEN}
- bitbucket:
- api:
- host: https://bitbucket.org
- username: ${BITBUCKET_USERNAME}
- token: ${BITBUCKET_TOKEN}
- visibility: public # or or 'private'
auth:
### Add auth.keyStore.provider to more granularly control how to store JWK data when running
@@ -450,3 +442,6 @@ azureDevOps:
host: dev.azure.com
token: my-token
organization: my-company
+
+apacheAirflow:
+ baseUrl: https://your.airflow.instance.com
diff --git a/contrib/chart/backstage/files/app-config.development.yaml.tpl b/contrib/chart/backstage/files/app-config.development.yaml.tpl
index 6d3ded16c1..105ba3b259 100644
--- a/contrib/chart/backstage/files/app-config.development.yaml.tpl
+++ b/contrib/chart/backstage/files/app-config.development.yaml.tpl
@@ -1,7 +1,7 @@
backend:
lighthouseHostname: {{ include "lighthouse.serviceName" . | quote }}
listen:
- port: {{ .Values.appConfig.backend.listen.port | default 7000 }}
+ port: {{ .Values.appConfig.backend.listen.port | default 7007 }}
database:
client: {{ .Values.appConfig.backend.database.client | quote }}
connection:
diff --git a/contrib/chart/backstage/templates/ingress.yaml b/contrib/chart/backstage/templates/ingress.yaml
index 7231afda13..9340467800 100644
--- a/contrib/chart/backstage/templates/ingress.yaml
+++ b/contrib/chart/backstage/templates/ingress.yaml
@@ -1,7 +1,13 @@
{{- $frontendUrl := urlParse .Values.appConfig.app.baseUrl}}
{{- $backendUrl := urlParse .Values.appConfig.backend.baseUrl}}
{{- $lighthouseUrl := urlParse .Values.appConfig.lighthouse.baseUrl}}
+
+{{/* Determine the api type for the ingress */}}
+{{- if lt .Capabilities.KubeVersion.Minor "19" }}
apiVersion: networking.k8s.io/v1beta1
+{{- else if ge .Capabilities.KubeVersion.Minor "19" }}
+apiVersion: networking.k8s.io/v1
+{{- end }}
kind: Ingress
metadata:
name: {{ include "backstage.fullname" . }}-ingress
diff --git a/contrib/chart/backstage/values.yaml b/contrib/chart/backstage/values.yaml
index 9f70dac6dc..6ffe076e57 100644
--- a/contrib/chart/backstage/values.yaml
+++ b/contrib/chart/backstage/values.yaml
@@ -26,7 +26,7 @@ backend:
repository: martinaif/backstage-k8s-demo-backend
tag: 20210423T1550
pullPolicy: IfNotPresent
- containerPort: 7000
+ containerPort: 7007
serviceType: ClusterIP
postgresCertMountEnabled: true
resources:
@@ -96,7 +96,7 @@ appConfig:
backend:
baseUrl: https://demo.example.com
listen:
- port: 7000
+ port: 7007
cors:
origin: https://demo.example.com
database:
diff --git a/contrib/docker/devops/makefile b/contrib/docker/devops/makefile
index 3ae89a161b..048edc8886 100644
--- a/contrib/docker/devops/makefile
+++ b/contrib/docker/devops/makefile
@@ -9,8 +9,8 @@ docker_name_prefix := backstage-make
# to the host computer
frontend_port := 3000
frontend_host_port := 3000
-backend_port := 7000
-backend_host_port := 7000
+backend_port := 7007
+backend_host_port := 7007
# path to this "makefile"
my_dir_path = $(dir $(CURDIR)/$(firstword $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST)))
@@ -191,10 +191,10 @@ test: check-tests
check: check-code check-docs check-type-dependencies check-styles
# run development instance
-# BUG: the frontend seems to run on "$(backend_port)" (7000 default).
+# BUG: the frontend seems to run on "$(backend_port)" (7007 default).
# The documentation states "This is going to start two things,
-# the frontend (:3000) and the backend (:7000)."
-# However, the frontend seems to end up running on 7000.
+# the frontend (:3000) and the backend (:7007)."
+# However, the frontend seems to end up running on 7007.
.PHONY: dev
dev: build
@docker run --rm -it \
diff --git a/contrib/kubernetes/basic_kubernetes_example_with_helm/backend.yaml b/contrib/kubernetes/basic_kubernetes_example_with_helm/backend.yaml
index f0695753fd..c8d60a9c1b 100644
--- a/contrib/kubernetes/basic_kubernetes_example_with_helm/backend.yaml
+++ b/contrib/kubernetes/basic_kubernetes_example_with_helm/backend.yaml
@@ -22,6 +22,6 @@ spec:
image: spotify/backstage-backend:latest
imagePullPolicy: IfNotPresent
ports:
- - containerPort: 7000
+ - containerPort: 7007
name: backend
protocol: TCP
diff --git a/contrib/kubernetes/basic_kubernetes_example_with_helm/backstage/values.yaml b/contrib/kubernetes/basic_kubernetes_example_with_helm/backstage/values.yaml
index d91808ed28..a293dc12fb 100644
--- a/contrib/kubernetes/basic_kubernetes_example_with_helm/backstage/values.yaml
+++ b/contrib/kubernetes/basic_kubernetes_example_with_helm/backstage/values.yaml
@@ -63,7 +63,7 @@ backend:
pullPolicy: IfNotPresent
service:
type: ClusterIP
- port: 7000
+ port: 7007
ingress:
enabled: false
annotations:
diff --git a/contrib/kubernetes/basic_kubernetes_example_with_helm/service.yaml b/contrib/kubernetes/basic_kubernetes_example_with_helm/service.yaml
index 4d947b7afc..e1da35b598 100644
--- a/contrib/kubernetes/basic_kubernetes_example_with_helm/service.yaml
+++ b/contrib/kubernetes/basic_kubernetes_example_with_helm/service.yaml
@@ -30,6 +30,6 @@ spec:
component: backend
ports:
- name: backend
- port: 7000
+ port: 7007
protocol: TCP
targetPort: backend
diff --git a/cypress/cypress.json b/cypress/cypress.json
index 3ef3df8e65..7335d0f62a 100644
--- a/cypress/cypress.json
+++ b/cypress/cypress.json
@@ -1,5 +1,5 @@
{
- "baseUrl": "http://localhost:7000",
+ "baseUrl": "http://localhost:7007",
"integrationFolder": "./src/integration",
"supportFile": "./src/support",
"fixturesFolder": "./src/fixtures",
diff --git a/cypress/yarn.lock b/cypress/yarn.lock
index baf0d92715..96bc765d0d 100644
--- a/cypress/yarn.lock
+++ b/cypress/yarn.lock
@@ -13,9 +13,9 @@
figures "^1.7.0"
"@cypress/request@^2.88.5":
- version "2.88.5"
- resolved "https://registry.npmjs.org/@cypress/request/-/request-2.88.5.tgz#8d7ecd17b53a849cfd5ab06d5abe7d84976375d7"
- integrity sha512-TzEC1XMi1hJkywWpRfD2clreTa/Z+lOrXDCxxBTBPEcY5azdPi56A6Xw+O4tWJnaJH3iIE7G5aDXZC6JgRZLcA==
+ version "2.88.10"
+ resolved "https://registry.npmjs.org/@cypress/request/-/request-2.88.10.tgz#b66d76b07f860d3a4b8d7a0604d020c662752cce"
+ integrity sha512-Zp7F+R93N0yZyG34GutyTNr+okam7s/Fzc1+i3kcqOP8vk6OuajuE9qZJ6Rs+10/1JFtXFYMdyarnU1rZuJesg==
dependencies:
aws-sign2 "~0.7.0"
aws4 "^1.8.0"
@@ -24,19 +24,17 @@
extend "~3.0.2"
forever-agent "~0.6.1"
form-data "~2.3.2"
- har-validator "~5.1.3"
- http-signature "~1.2.0"
+ http-signature "~1.3.6"
is-typedarray "~1.0.0"
isstream "~0.1.2"
json-stringify-safe "~5.0.1"
mime-types "~2.1.19"
- oauth-sign "~0.9.0"
performance-now "^2.1.0"
qs "~6.5.2"
safe-buffer "^5.1.2"
tough-cookie "~2.5.0"
tunnel-agent "^0.6.0"
- uuid "^3.3.2"
+ uuid "^8.3.2"
"@cypress/xvfb@^1.2.4":
version "1.2.4"
@@ -68,16 +66,6 @@
resolved "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.2.tgz#a811b8c18e2babab7d542b3365887ae2e4d9de47"
integrity sha512-7EJYyKTL7tFR8+gDbB6Wwz/arpGa0Mywk1TJbNzKzHtzbwVmY4HR9WqS5VV7dsBUKQmPNr192jHr/VpBluj/hg==
-ajv@^6.12.3:
- version "6.12.6"
- resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
- integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
- dependencies:
- fast-deep-equal "^3.1.1"
- fast-json-stable-stringify "^2.0.0"
- json-schema-traverse "^0.4.1"
- uri-js "^4.2.2"
-
ansi-escapes@^3.0.0:
version "3.2.0"
resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b"
@@ -539,16 +527,6 @@ extsprintf@^1.2.0:
resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f"
integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8=
-fast-deep-equal@^3.1.1:
- version "3.1.3"
- resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
- integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
-
-fast-json-stable-stringify@^2.0.0:
- version "2.1.0"
- resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
- integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
-
fd-slicer@~1.1.0:
version "1.1.0"
resolved "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e"
@@ -645,19 +623,6 @@ graceful-fs@^4.1.6, graceful-fs@^4.2.0:
resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.5.tgz#bc18864a6c9fc7b303f2e2abdb9155ad178fbe29"
integrity sha512-kBBSQbz2K0Nyn+31j/w36fUfxkBW9/gfwRWdUY1ULReH3iokVJgddZAFcD1D0xlgTmFxJCbUkUclAlc6/IDJkw==
-har-schema@^2.0.0:
- version "2.0.0"
- resolved "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92"
- integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=
-
-har-validator@~5.1.3:
- version "5.1.5"
- resolved "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd"
- integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==
- dependencies:
- ajv "^6.12.3"
- har-schema "^2.0.0"
-
has-ansi@^2.0.0:
version "2.0.0"
resolved "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
@@ -675,14 +640,14 @@ has-flag@^4.0.0:
resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
-http-signature@~1.2.0:
- version "1.2.0"
- resolved "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1"
- integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=
+http-signature@~1.3.6:
+ version "1.3.6"
+ resolved "https://registry.npmjs.org/http-signature/-/http-signature-1.3.6.tgz#cb6fbfdf86d1c974f343be94e87f7fc128662cf9"
+ integrity sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==
dependencies:
assert-plus "^1.0.0"
- jsprim "^1.2.2"
- sshpk "^1.7.0"
+ jsprim "^2.0.2"
+ sshpk "^1.14.1"
human-signals@^1.1.1:
version "1.1.1"
@@ -796,15 +761,10 @@ jsbn@~0.1.0:
resolved "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM=
-json-schema-traverse@^0.4.1:
- version "0.4.1"
- resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
- integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
-
-json-schema@0.2.3:
- version "0.2.3"
- resolved "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
- integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=
+json-schema@0.4.0:
+ version "0.4.0"
+ resolved "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5"
+ integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==
json-stringify-safe@~5.0.1:
version "5.0.1"
@@ -820,14 +780,14 @@ jsonfile@^6.0.1:
optionalDependencies:
graceful-fs "^4.1.6"
-jsprim@^1.2.2:
- version "1.4.1"
- resolved "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2"
- integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=
+jsprim@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.npmjs.org/jsprim/-/jsprim-2.0.2.tgz#77ca23dbcd4135cd364800d22ff82c2185803d4d"
+ integrity sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==
dependencies:
assert-plus "1.0.0"
extsprintf "1.3.0"
- json-schema "0.2.3"
+ json-schema "0.4.0"
verror "1.10.0"
lazy-ass@^1.6.0:
@@ -985,11 +945,6 @@ number-is-nan@^1.0.0:
resolved "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=
-oauth-sign@~0.9.0:
- version "0.9.0"
- resolved "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455"
- integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==
-
object-assign@^4.1.0:
version "4.1.1"
resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
@@ -1084,7 +1039,7 @@ punycode@1.3.2:
resolved "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=
-punycode@^2.1.0, punycode@^2.1.1:
+punycode@^2.1.1:
version "2.1.1"
resolved "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
@@ -1191,7 +1146,7 @@ slice-ansi@0.0.4:
resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35"
integrity sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=
-sshpk@^1.7.0:
+sshpk@^1.14.1:
version "1.16.1"
resolved "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877"
integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==
@@ -1353,13 +1308,6 @@ untildify@^4.0.0:
resolved "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b"
integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==
-uri-js@^4.2.2:
- version "4.4.1"
- resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e"
- integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==
- dependencies:
- punycode "^2.1.0"
-
url@^0.11.0:
version "0.11.0"
resolved "https://registry.npmjs.org/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"
@@ -1373,10 +1321,10 @@ util-deprecate@~1.0.1:
resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
-uuid@^3.3.2:
- version "3.4.0"
- resolved "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
- integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
+uuid@^8.3.2:
+ version "8.3.2"
+ resolved "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
+ integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==
verror@1.10.0:
version "1.10.0"
diff --git a/docs/api/deprecations.md b/docs/api/deprecations.md
index 774c8ef03d..04c3da92bc 100644
--- a/docs/api/deprecations.md
+++ b/docs/api/deprecations.md
@@ -54,3 +54,132 @@ const darkTheme = {
),
};
```
+
+Note that the existing `AppTheme` type still requires the `theme` property to be
+set since it's the type that's consumed in the `AppThemeApi`, and it would be a
+breaking change to make `theme` optional. This means that if you currently
+construct the themes that you pass on to `createApp` using `AppTheme` as an
+intermediate type, you will need to work around this in some way, for example by
+passing the themes to `createApp` more directly.
+
+### Generic Auth API Refs
+
+`Released 2021-12-16 in @backstage/core-plugin-api v0.3.1`
+
+There are four auth Utility API references in `@backstage/core-plugin-api` that
+were too generic to be useful. The APIs in question are `auth0AuthApiRef`,
+`oauth2ApiRef`, `oidcAuthApiRef`, and `samlAuthApiRef`. The issue with these
+APIs was that they had no actual contract of what the backing auth provider was.
+This made it more or less impossible to use these providers in open source
+plugins in any meaningful way. We also did not want to keep these Utility API
+references around just as helpers either, instead opting to remove them and let
+integrators define their own APIs that are more specific to their auth provider.
+This is also falls in line with a long-term goal to unify all auth providers to
+not have separate frontend implementations.
+
+If you're currently using one of these API references for either Sign-In or
+access delegation within an app, there are a couple of steps you need to take to
+migrate to your own custom API.
+
+First, you'll need to define a new Utility API reference. If you're only using
+the API for sign-in, you can put the definition in `packages/app/src/apis.ts`.
+However, if you need to access your auth API inside plugins you you'll need to
+export it from a common package. If you don't already have one we recommended
+creating `@internal/apis` and from there export the API reference.
+
+```ts
+// `ProfileInfoApi & BackstageIdentityApi & SessionApi` are required for sign-in
+// Include `OAuthApi & OpenIdConnectApi` only if applicable
+export const acmeAuthApiRef: ApiRef<
+ OAuthApi &
+ OpenIdConnectApi &
+ ProfileInfoApi &
+ BackstageIdentityApi &
+ SessionApi
+> = createApiRef({
+ id: 'internal.auth.acme',
+});
+```
+
+Next you'll want to wire up the API inside `packages/app/src/apis.ts`, which
+varies depending on which API you're replacing. If you for example are replacing
+the `oauth2ApiRef`, the factory might look like this:
+
+```ts
+// oauth2
+createApiFactory({
+ api: acmeAuthApiRef,
+ deps: {
+ discoveryApi: discoveryApiRef,
+ oauthRequestApi: oauthRequestApiRef,
+ configApi: configApiRef,
+ },
+ factory: ({ discoveryApi, oauthRequestApi, configApi }) =>
+ OAuth2.create({
+ discoveryApi,
+ oauthRequestApi,
+ environment: configApi.getOptionalString('auth.environment'),
+ }),
+});
+```
+
+Provider specific factory implementations, copy the code you need into the
+factory method depending on which apiRef you previously used.
+
+```ts
+// samlAuthApiRef
+SamlAuth.create({
+ discoveryApi,
+ environment: configApi.getOptionalString('auth.environment'),
+});
+
+// oidcAuthApiRef
+OAuth2.create({
+ discoveryApi,
+ oauthRequestApi,
+ provider: {
+ id: 'oidc',
+ title: 'Your Identity Provider',
+ icon: () => null,
+ },
+ environment: configApi.getOptionalString('auth.environment'),
+});
+
+// auth0AuthApiRef
+OAuth2.create({
+ discoveryApi,
+ oauthRequestApi,
+ provider: {
+ id: 'auth0',
+ title: 'Auth0',
+ icon: () => null,
+ },
+ defaultScopes: ['openid', 'email', 'profile'],
+ environment: configApi.getOptionalString('auth.environment'),
+});
+```
+
+Finally, for the provider to show up in your settings menu, you also need to
+update the settings route in `packages/app/src/App.tsx` to pass the
+`acmeAuthApiRef` to the `UserSettingsPage`. This replaces all existing provider
+items, so you might want to add back any of the default ones that you are using
+from the
+[DefaultProviderSettings](https://github.com/backstage/backstage/blob/a3ec122170e0205fd3f9c307b98b1c5e4f55bf5f/plugins/user-settings/src/components/AuthProviders/DefaultProviderSettings.tsx#L35).
+
+```tsx
+