diff --git a/.changeset/afraid-horses-argue.md b/.changeset/afraid-horses-argue.md new file mode 100644 index 0000000000..fa4b46df5d --- /dev/null +++ b/.changeset/afraid-horses-argue.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-kubernetes-backend': patch +--- + +Updated kubernetes config schema to match available options diff --git a/.changeset/bright-hats-compare.md b/.changeset/bright-hats-compare.md new file mode 100644 index 0000000000..148eaa29ce --- /dev/null +++ b/.changeset/bright-hats-compare.md @@ -0,0 +1,5 @@ +--- +'@backstage/cli-node': minor +--- + +Introduced the new `@backstage/cli-node` package, which provides utilities for use across Backstage CLIs. diff --git a/.changeset/calm-geese-obey.md b/.changeset/calm-geese-obey.md new file mode 100644 index 0000000000..b45295f8ff --- /dev/null +++ b/.changeset/calm-geese-obey.md @@ -0,0 +1,7 @@ +--- +'@backstage/plugin-kubernetes': minor +--- + +refactor kubernetes error detection to make way for proposed solutions + +**BREAKING**: `DetectedError` now appears once per Kubernetes resource per error instead of for all resources which have that error, `namespace` and `name` fields are now in `sourceRef` object `message` is now a `string` instead of a `string[]`. `ErrorDetectableKind` has been removed. diff --git a/.changeset/cold-seahorses-greet.md b/.changeset/cold-seahorses-greet.md new file mode 100644 index 0000000000..71bc5db2cc --- /dev/null +++ b/.changeset/cold-seahorses-greet.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend': patch +--- + +Updates and moves OpenAPI spec to `src/schema/openapi.yaml` and uses `ApiRouter` type from `@backstage/backend-openapi-utils` to handle automatic types from the OpenAPI spec file. diff --git a/.changeset/create-app-1681222813.md b/.changeset/create-app-1681222813.md new file mode 100644 index 0000000000..b50d431d4b --- /dev/null +++ b/.changeset/create-app-1681222813.md @@ -0,0 +1,5 @@ +--- +'@backstage/create-app': patch +--- + +Bumped create-app version. diff --git a/.changeset/dependabot-ff5881d.md b/.changeset/dependabot-ff5881d.md new file mode 100644 index 0000000000..d08ceea0e4 --- /dev/null +++ b/.changeset/dependabot-ff5881d.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-code-coverage-backend': patch +--- + +Bump `xml2js` from 0.4.23 to 0.5.0 diff --git a/.changeset/famous-olives-try.md b/.changeset/famous-olives-try.md new file mode 100644 index 0000000000..3150197203 --- /dev/null +++ b/.changeset/famous-olives-try.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder': patch +--- + +Fix some hard-coded white font colors in scaffolder diff --git a/.changeset/forty-adults-divide.md b/.changeset/forty-adults-divide.md new file mode 100644 index 0000000000..55d1e3f5d8 --- /dev/null +++ b/.changeset/forty-adults-divide.md @@ -0,0 +1,5 @@ +--- +'@backstage/cli': patch +--- + +Internal refactor to move many internal utilities to the new `@backstage/cli-node` package. diff --git a/.changeset/fresh-lions-compete.md b/.changeset/fresh-lions-compete.md new file mode 100644 index 0000000000..87f15f538d --- /dev/null +++ b/.changeset/fresh-lions-compete.md @@ -0,0 +1,5 @@ +--- +'@backstage/repo-tools': minor +--- + +Adding two new commands to support OpenAPI spec writing, `schema:openapi:generate` to generate the Typescript file that `@backstage/backend-openapi-utils` needs for typing and `schema:openapi:verify` to verify that this file exists and matches your `src/schema/openapi.yaml` file. diff --git a/.changeset/itchy-kiwis-unite.md b/.changeset/itchy-kiwis-unite.md new file mode 100644 index 0000000000..0e3bcae282 --- /dev/null +++ b/.changeset/itchy-kiwis-unite.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-explore': patch +--- + +Extracted generic `CatalogKindExploreContent` component so that it is easy to show any component kinds in their own tab in the explore page. diff --git a/.changeset/late-waves-march.md b/.changeset/late-waves-march.md new file mode 100644 index 0000000000..0691abd0fd --- /dev/null +++ b/.changeset/late-waves-march.md @@ -0,0 +1,7 @@ +--- +'@backstage/plugin-lighthouse-backend': minor +--- + +Lighthouse backend plugin can now use an authenticated catalog backend API. + +- Breaking \* You must now pass the `tokenManager` to the lighthouse `createScheduler`. diff --git a/.changeset/mean-rice-beg.md b/.changeset/mean-rice-beg.md new file mode 100644 index 0000000000..19cef51292 --- /dev/null +++ b/.changeset/mean-rice-beg.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-vault': patch +--- + +Use `fetchApi` instead of raw `fetch` in order to pass auth header if necessary. diff --git a/.changeset/mighty-tips-flow.md b/.changeset/mighty-tips-flow.md new file mode 100644 index 0000000000..514d514588 --- /dev/null +++ b/.changeset/mighty-tips-flow.md @@ -0,0 +1,16 @@ +--- +'@backstage/plugin-auth-backend': patch +--- + +The `microsoft` (i.e. Azure) auth provider now supports negotiating tokens for +Azure resources besides Microsoft Graph (e.g. AKS, Virtual Machines, Machine +Learning Services, etc.). When the `/frame/handler` endpoint is called with an +authorization code for a non-Microsoft Graph scope, the user profile will not be +fetched. Similarly no user profile or photo data will be fetched by the backend +if the `/refresh` endpoint is called with the `scope` query parameter strictly +containing scopes for resources besides Microsoft Graph. + +Furthermore, the `offline_access` scope will be requested by default, even when +it is not mentioned in the argument to `getAccessToken`. This means that any +Azure access token can be automatically refreshed, even if the user has not +signed in via Azure. diff --git a/.changeset/odd-plums-bake.md b/.changeset/odd-plums-bake.md new file mode 100644 index 0000000000..427ab776b5 --- /dev/null +++ b/.changeset/odd-plums-bake.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-adr-common': patch +'@backstage/plugin-adr': patch +--- + +use path attribute to fetch files instead of name and update the UI to navigate over subdirectories diff --git a/.changeset/plenty-eels-listen.md b/.changeset/plenty-eels-listen.md new file mode 100644 index 0000000000..6b4776f808 --- /dev/null +++ b/.changeset/plenty-eels-listen.md @@ -0,0 +1,19 @@ +--- +'@backstage/plugin-catalog-react': minor +--- + +Attempt to load entity owner names in the EntityOwnerPicker through the `by-refs` endpoint. If `spec.profile.displayName` or `metadata.title` are populated, we now attempt to show those before showing the `humanizeEntityRef`'d version. + +**BREAKING**: `EntityOwnerFilter` now uses the full entity ref instead of the `humanizeEntityRef`. If you rely on `EntityOwnerFilter.values` or the `queryParameters.owners` of `useEntityList`, you will need to adjust your code like the following. + +```tsx +const { queryParameters: { owners } } = useEntityList(); +// or +const { filter: { owners } } = useEntityList(); + +// Instead of, +if (owners.some(ref => ref === humanizeEntityRef(myEntity))) ... + +// You'll need to use, +if (owners.some(ref => ref === stringifyEntityRef(myEntity))) ... +``` diff --git a/.changeset/poor-horses-approve.md b/.changeset/poor-horses-approve.md new file mode 100644 index 0000000000..ecd60e2c6c --- /dev/null +++ b/.changeset/poor-horses-approve.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-react': patch +--- + +Add an indication that the validators are running when clicking `next` on each step of the form. diff --git a/.changeset/pre.json b/.changeset/pre.json index bf70830cad..74f1480f09 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -216,34 +216,45 @@ "@backstage/plugin-scaffolder-backend-module-confluence-to-markdown": "0.0.0", "@backstage/plugin-search-backend-module-catalog": "0.0.0", "@backstage/plugin-search-backend-module-explore": "0.0.0", - "@backstage/plugin-search-backend-module-techdocs": "0.0.0" + "@backstage/plugin-search-backend-module-techdocs": "0.0.0", + "@backstage/backend-openapi-utils": "0.0.0", + "@backstage/cli-node": "0.0.0" }, "changesets": [ + "afraid-horses-argue", "all-my-auth-wanna-ride-today", "blue-walls-drop", + "bright-hats-compare", "bright-pumpkins-bake", + "calm-geese-obey", "calm-otters-destroy", "chatty-coats-thank", "clean-dolls-search", "clean-items-draw", "clean-teachers-thank", "clever-lizards-whisper", + "cold-seahorses-greet", "create-app-1679405836", + "create-app-1681222813", "curly-boats-trade", "curly-jobs-kneel", "curly-steaks-mate", "curvy-rocks-guess", + "dependabot-ff5881d", "eight-trainers-smoke", "eleven-bats-tease", "eleven-coats-refuse", "fair-roses-stare", "famous-beds-break", "famous-beds-repair", + "famous-olives-try", "fast-gorillas-approve", "fast-snakes-buy", "flat-ways-compete", + "forty-adults-divide", "forty-days-tell", "forty-gorillas-help", + "fresh-lions-compete", "fresh-schools-fly", "funny-pots-hide", "funny-rivers-grin", @@ -255,56 +266,79 @@ "hungry-lies-cry", "hungry-monkeys-reply", "itchy-ads-sit", + "itchy-kiwis-unite", "khaki-cars-drum", "khaki-doors-compare", "khaki-guests-turn", + "late-waves-march", "lazy-apples-destroy", "lazy-monkeys-worry", "long-gorillas-remain", "many-eggs-press", + "mean-rice-beg", "mighty-lamps-cross", + "mighty-tips-flow", "modern-snakes-check", "nasty-nails-appear", "neat-donkeys-work", "neat-pears-argue", "new-pigs-jam", "odd-grapes-double", + "odd-plums-bake", "old-cougars-sit", "olive-cycles-join", "olive-months-talk", "orange-rabbits-jam", "perfect-deers-add", + "plenty-eels-listen", "poor-cars-fold", + "poor-horses-approve", "popular-parents-crash", "popular-radios-visit", "pretty-carpets-cross", "rare-seals-decide", "renovate-179fa0e", + "renovate-3e8a992", + "renovate-8010f99", "renovate-a9116b7", "renovate-c574b04", "rotten-carrots-cheer", + "serious-items-walk", "seven-gifts-fetch", + "shaggy-crews-carry", "short-panthers-float", + "silent-nails-bake", "silly-adults-accept", "six-jobs-hear", + "sixty-insects-visit", + "slimy-scissors-play", + "slow-ravens-destroy", + "smart-crabs-dream", "soft-roses-cover", "sour-buttons-collect", "sour-dragons-cheat", + "sour-laws-walk", + "spicy-carrots-argue", "stale-cobras-beg", + "stale-files-sniff", "stale-paws-sparkle", "strong-crews-repeat", "stupid-laws-play", + "sweet-eels-hunt", "swift-meals-live", "tall-chairs-explain", + "tall-meals-dress", "tall-oranges-own", "ten-hounds-bathe", "ten-mayflies-beam", "tender-parrots-fry", + "tender-terms-return", "thick-forks-prove", "thin-spoons-prove", "thirty-crabs-tell", "tiny-apes-scream", "tough-cameras-beam", + "tricky-beans-knock", "twelve-parrots-camp", "twelve-vans-sell", "unlucky-snakes-smile", @@ -314,6 +348,7 @@ "wet-lamps-happen", "wise-garlics-camp", "witty-berries-love", - "witty-points-visit" + "witty-points-visit", + "yellow-candles-kiss" ] } diff --git a/.changeset/renovate-3e8a992.md b/.changeset/renovate-3e8a992.md new file mode 100644 index 0000000000..2c76f0e050 --- /dev/null +++ b/.changeset/renovate-3e8a992.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-react': patch +--- + +Updated dependency `@rjsf/core-v5` to `npm:@rjsf/core@5.5.2`. diff --git a/.changeset/renovate-8010f99.md b/.changeset/renovate-8010f99.md new file mode 100644 index 0000000000..64817f07be --- /dev/null +++ b/.changeset/renovate-8010f99.md @@ -0,0 +1,5 @@ +--- +'@backstage/cli': patch +--- + +Updated dependency `@swc/helpers` to `^0.5.0`. diff --git a/.changeset/serious-items-walk.md b/.changeset/serious-items-walk.md new file mode 100644 index 0000000000..c4cdfe34c4 --- /dev/null +++ b/.changeset/serious-items-walk.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-backend': patch +--- + +Stripped entity types and namespace before passing to GitHub API diff --git a/.changeset/shaggy-crews-carry.md b/.changeset/shaggy-crews-carry.md new file mode 100644 index 0000000000..db9aa5225b --- /dev/null +++ b/.changeset/shaggy-crews-carry.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-search-backend-module-elasticsearch': patch +--- + +fix ElasticSearch throwing error when index is missing diff --git a/.changeset/silent-nails-bake.md b/.changeset/silent-nails-bake.md new file mode 100644 index 0000000000..1161686b34 --- /dev/null +++ b/.changeset/silent-nails-bake.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-auth-backend': patch +--- + +Add common identify resolvers for `oidc` auth provider. diff --git a/.changeset/sixty-insects-visit.md b/.changeset/sixty-insects-visit.md new file mode 100644 index 0000000000..adbe27e0ac --- /dev/null +++ b/.changeset/sixty-insects-visit.md @@ -0,0 +1,9 @@ +--- +'@backstage/core-app-api': minor +--- + +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 +`RefreshingAuthSessionManager` passes any scopes in its `GetSessionRequest` +appropriately. diff --git a/.changeset/slimy-scissors-play.md b/.changeset/slimy-scissors-play.md new file mode 100644 index 0000000000..4a65bc8dce --- /dev/null +++ b/.changeset/slimy-scissors-play.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-kubernetes': patch +--- + +fixes a bug where an empty authorization header was provided to the proxy endpoint when a cluster had a server-side auth provider diff --git a/.changeset/slow-ravens-destroy.md b/.changeset/slow-ravens-destroy.md new file mode 100644 index 0000000000..a75793f86f --- /dev/null +++ b/.changeset/slow-ravens-destroy.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-backend': minor +--- + +Allow for a commit message to differ from the PR title when publishing a GitHub pull request. diff --git a/.changeset/smart-crabs-dream.md b/.changeset/smart-crabs-dream.md new file mode 100644 index 0000000000..3699021482 --- /dev/null +++ b/.changeset/smart-crabs-dream.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-react': patch +--- + +Reverted the check if the selected options list is different than the query parameters list before invoking `setSelectedOptions` method. This was preventing updating list items when a query string was already present in the URL when loading the page. diff --git a/.changeset/sour-laws-walk.md b/.changeset/sour-laws-walk.md new file mode 100644 index 0000000000..073e3dc6a8 --- /dev/null +++ b/.changeset/sour-laws-walk.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-auth-backend': patch +--- + +Export Azure Easy Auth provider so it can actually be used. diff --git a/.changeset/spicy-carrots-argue.md b/.changeset/spicy-carrots-argue.md new file mode 100644 index 0000000000..b6475b1f7d --- /dev/null +++ b/.changeset/spicy-carrots-argue.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend': minor +--- + +Add monorepo support to CodeOwnersProccesor. diff --git a/.changeset/stale-files-sniff.md b/.changeset/stale-files-sniff.md new file mode 100644 index 0000000000..b6f35645c4 --- /dev/null +++ b/.changeset/stale-files-sniff.md @@ -0,0 +1,5 @@ +--- +'@backstage/catalog-model': minor +--- + +Modified the regex for DNS label validation to support IDN domains diff --git a/.changeset/sweet-eels-hunt.md b/.changeset/sweet-eels-hunt.md new file mode 100644 index 0000000000..39f124a860 --- /dev/null +++ b/.changeset/sweet-eels-hunt.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-kubernetes': patch +--- + +`KubernetesBackendClient` now requires a `kubernetesAuthProvidersApi` value to be provided. `KubernetesApi` interface now has a proxy method requirement. diff --git a/.changeset/tall-meals-dress.md b/.changeset/tall-meals-dress.md new file mode 100644 index 0000000000..3d39c369fe --- /dev/null +++ b/.changeset/tall-meals-dress.md @@ -0,0 +1,7 @@ +--- +'@backstage/plugin-events-backend': patch +--- + +Export `DefaultEventBroker` to allow decoupling of the catalog and events backends in the `example-backend`. + +Please look at `plugins/events-backend/README.md` for the currently advised way to set up the event backend and catalog providers. diff --git a/.changeset/tender-terms-return.md b/.changeset/tender-terms-return.md new file mode 100644 index 0000000000..9e8ab6beb7 --- /dev/null +++ b/.changeset/tender-terms-return.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-techdocs': patch +--- + +Fix a bug in sub-path navigation due to double addition of a sub-path if one was set up in `app.baseUrl`. diff --git a/.changeset/tricky-beans-knock.md b/.changeset/tricky-beans-knock.md new file mode 100644 index 0000000000..1bdd95a365 --- /dev/null +++ b/.changeset/tricky-beans-knock.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-openapi-utils': patch +--- + +New plugin! Primary focus is to support types on `Router`s in backend packages. Developers can use the `ApiRouter` from this package in their packages to support a typed experience based on their OpenAPI specs. The `ApiRouter` supports request bodies, response bodies, query parameters and path parameters, as well as full path-based context of the above. This means no more guessing on an endpoint like `req.post('/not-my-route', (req, res)=>{res.send(req.body.badparam)})`. Typescript would catch `/not-my-route`, `req.body.badparam`, `res.send(req.body.badparam)`. diff --git a/.changeset/yellow-candles-kiss.md b/.changeset/yellow-candles-kiss.md new file mode 100644 index 0000000000..e365be2a0a --- /dev/null +++ b/.changeset/yellow-candles-kiss.md @@ -0,0 +1,21 @@ +--- +'@backstage/core-components': minor +--- + +**BREAKING:** Removing `Tabs` component from `core-components` as it is neither used in the core Backstage app nor in the monorepo plugins. If you are using this component in your instance please consider replacing it with the [Material UI `Tabs`](https://v4.mui.com/components/tabs/#tabs) component like the following: + +```diff +- , +- content:
Label
, +- }]} +- /> + ++ ++ } ++ /> ++ +``` diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index b4be92e4ec..19e8559e87 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -26,13 +26,13 @@ yarn.lock @backstage/maintainers @back /plugins/azure-devops-common @backstage/maintainers @marleypowell @awanlin /plugins/bitbucket-cloud-common @backstage/maintainers @pjungermann /plugins/bitrise @backstage/maintainers @backstage/sda-se-reviewers -/plugins/catalog @backstage/maintainers @backstage/catalog-core -/plugins/catalog-* @backstage/maintainers @backstage/catalog-core -/plugins/catalog-backend-module-aws @backstage/maintainers @backstage/catalog-core @pjungermann -/plugins/catalog-backend-module-bitbucket-cloud @backstage/maintainers @backstage/catalog-core @pjungermann -/plugins/catalog-backend-module-msgraph @backstage/maintainers @backstage/catalog-core @pjungermann -/plugins/catalog-backend-module-puppetdb @backstage/maintainers @backstage/catalog-core @tdabasinskas -/plugins/catalog-graph @backstage/maintainers @backstage/catalog-core @backstage/sda-se-reviewers +/plugins/catalog @backstage/maintainers @backstage/catalog-maintainers +/plugins/catalog-* @backstage/maintainers @backstage/catalog-maintainers +/plugins/catalog-backend-module-aws @backstage/maintainers @backstage/catalog-maintainers @pjungermann +/plugins/catalog-backend-module-bitbucket-cloud @backstage/maintainers @backstage/catalog-maintainers @pjungermann +/plugins/catalog-backend-module-msgraph @backstage/maintainers @backstage/catalog-maintainers @pjungermann +/plugins/catalog-backend-module-puppetdb @backstage/maintainers @backstage/catalog-maintainers @tdabasinskas +/plugins/catalog-graph @backstage/maintainers @backstage/catalog-maintainers @backstage/sda-se-reviewers /plugins/circleci @backstage/maintainers @adamdmharvey /plugins/cloudbuild @backstage/maintainers @trivago/ebarrios /plugins/code-coverage @backstage/maintainers @alde @nissayeva diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index cd67d2742a..fb03709cce 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -92,6 +92,9 @@ jobs: - name: verify api reference run: node scripts/verify-api-reference.js + - name: verify openapi yaml file matches generated ts file + run: yarn backstage-repo-tools schema:openapi:verify + - name: verify doc links run: node scripts/verify-links.js diff --git a/.github/workflows/uffizzi-preview.yaml b/.github/workflows/uffizzi-preview.yaml index 6390671bbd..bb496dbe3d 100644 --- a/.github/workflows/uffizzi-preview.yaml +++ b/.github/workflows/uffizzi-preview.yaml @@ -14,6 +14,7 @@ jobs: if: ${{ github.event.workflow_run.conclusion == 'success' }} outputs: compose-file-cache-key: ${{ env.COMPOSE_FILE_HASH }} + git-ref: ${{ env.GIT_REF }} pr-number: ${{ env.PR_NUMBER }} steps: - name: 'Download artifacts' @@ -67,10 +68,15 @@ jobs: id: pr run: echo "PR_NUMBER=${{ fromJSON(env.EVENT_JSON).number }}" >> $GITHUB_ENV + - name: Read Git Ref From Event Object + id: ref + run: echo "GIT_REF=${{ fromJSON(env.EVENT_JSON).head.sha }}" >> $GITHUB_ENV + - name: DEBUG - Print Job Outputs if: ${{ runner.debug }} run: | echo "PR number: ${{ env.PR_NUMBER }}" + echo "Git Ref: ${{ env.GIT_REF }}" echo "Compose file hash: ${{ env.COMPOSE_FILE_HASH }}" cat event.json @@ -85,8 +91,9 @@ jobs: # and this reusable workflow will delete the preview deployment. compose-file-cache-key: ${{ needs.cache-compose-file.outputs.compose-file-cache-key }} compose-file-cache-path: docker-compose.rendered.yml - server: https://app.uffizzi.com + git-ref: ${{ needs.cache-compose-file.outputs.git-ref }} pr-number: ${{ needs.cache-compose-file.outputs.pr-number }} + server: https://app.uffizzi.com permissions: contents: read pull-requests: write diff --git a/ADOPTERS.md b/ADOPTERS.md index 306ae24280..fdc64b72b6 100644 --- a/ADOPTERS.md +++ b/ADOPTERS.md @@ -237,3 +237,6 @@ _You can do this by using the [Adopter form](https://info.backstage.spotify.com/ | [Comcast](https://comcast.github.io/) | [Ryan Emerle](https://github.com/remerle) | Developer portal enabling discovery of products, services, and documentation throughout the enterprise to ultimately reduce friction and improve time-to-market. | | [Syntasso](https://www.syntasso.io/) | [@syntassodev](https://github.com/syntassodev) | Backstage is used as a optional UI for the [Kratix project](https://kratix.io), a framework for building platforms. | [Bankdata](https://www.bankdata.dk) | [Thomas Grønbæk](https://www.linkedin.com/in/thomas-grønbæk/) | We are assessing Backstage as our internal developer portal @Bankdata. Goal is to reduce cognitive load and friction for developers and thereby improving developer experience, onboarding and productivity. Expect use of Software Catalog for discoverability and ownership, Tech Docs and Software Templates to integrate tooling and best practices. +| [B3](https://www.b3.com.br/) | [Marcos Rodrigues](https://www.linkedin.com/in/marcos-rodrigues-cloud/) | B3 (Brazilian Stock Exchange) will implement a self-service platform focused on software development based on Backstage. The tool will primarily focus on product development and software engineering teams, as well as professionals from other areas who are also involved in software delivery. The new platform will function as a portal where teams can access tools, codes, and templates that have already been tested and are available, serving as building blocks for the development of new solutions. | +| [Porto](https://www.portoseguro.com.br/) | [Camilo Alessandro](https://www.linkedin.com/in/camilo-alessandro/) | Porto (Brazilian insurance company) Centralized developer portal with software catalog, application templates, maturity radar, component taxonomy standardization, and automation in the integration with DevSecOps processes. | +| [Einride](https://github.com/einride) | [@odsod](https://github.com/odsod/) | We use Backstage to create a great developer experience across Einride's entire software stack - from autonomous and electric vehicles to cloud systems - and we've developed a [Backstage Go SDK](https://github.com/einride/backstage-go) for interfacing with Backstage from our Go tooling. diff --git a/OWNERS.md b/OWNERS.md index 2124863f8d..a362a95e43 100644 --- a/OWNERS.md +++ b/OWNERS.md @@ -20,9 +20,14 @@ These are the separate project areas of Backstage, each with their own project a Team: @backstage/catalog-maintainers -| Name | Organization | Team | GitHub | Discord | -| ---- | ------------ | --------- | ---------------------------- | ------- | -| TBD | Spotify | Chipmunks | [TBD](http://github.com/TBD) | - | +Scope: The catalog plugin and catalog model + +| Name | Organization | Team | GitHub | Discord | +| -------------- | ------------ | --------- | ---------------------------------------- | ---------------- | +| Rickard Dybeck | Spotify | Chipmunks | [alde](http://github.com/alde) | rdybeck#8083 | +| Mike Blockley | Spotify | Chipmunks | [mikeyhc](http://github.com/mikeyhc) | mikey-spot#5363 | +| Elon Jefferson | Spotify | Chipmunks | [Edje-C](http://github.com/Edje-C) | elon-spotty#6086 | +| Nurit Izrailov | Spotify | Chipmunks | [nuritizra](http://github.com/nuritizra) | - | ### Discoverability diff --git a/docs/auth/microsoft/azure-easyauth.md b/docs/auth/microsoft/azure-easyauth.md index 4daf0851f0..8ea626288c 100644 --- a/docs/auth/microsoft/azure-easyauth.md +++ b/docs/auth/microsoft/azure-easyauth.md @@ -1,10 +1,12 @@ --- -id: azure-easy-auth +id: easy-auth title: Azure EasyAuth Provider -sidebar_label: Azure EasyAuth +sidebar_label: Azure Easy Auth description: Adding Azure's EasyAuth Proxy as an authentication provider in Backstage --- +The Backstage `core-plugin-api` package comes with a Microsoft authentication provider that can authenticate users using Azure Active Directory for PaaS service hosted in Azure that support Easy Auth, such as Azure App Services. + ## Backstage Changes Add the following into your `app-config.yaml` or `app-config.production.yaml` file diff --git a/docs/features/kubernetes/proxy.md b/docs/features/kubernetes/proxy.md index 7b6837dd7d..5811ff8ec4 100644 --- a/docs/features/kubernetes/proxy.md +++ b/docs/features/kubernetes/proxy.md @@ -14,42 +14,16 @@ Kubernetes backend plugin's proxy endpoint to allow them to make arbitrary requests to the [REST API](https://kubernetes.io/docs/reference/using-api/api-concepts/). -Here is a snippet fetching namespaces from a cluster configured with the -`google` [auth provider](https://backstage.io/docs/features/kubernetes/configuration#clustersauthprovider): +Here is a snippet fetching namespaces using the `KubernetesBackendClient` library ```typescript -import { - discoveryApiRef, - googleAuthApiRef, - useApi, - identityApiRef, -} from '@backstage/core-plugin-api'; +import { useApi } from '@backstage/core-plugin-api'; +import { kubernetesApiRef } from '@backstage/plugin-kubernetes'; const CLUSTER_NAME = ''; // use a known cluster name -// get a bearer token from Google -const googleAuthApi = useApi(googleAuthApiRef); -const token = await googleAuthApi.getAccessToken( - 'https://www.googleapis.com/auth/cloud-platform', -); - -// get a backstage ID token -const identityApi = useApi(identityApiRef); -const { token: userToken } = await identityApi.getCredentials(); - -const discoveryApi = useApi(discoveryApiRef); -const kubernetesBaseUrl = await discoveryApi.getBaseUrl('kubernetes'); -const kubernetesProxyEndpoint = `${kubernetesBaseUrl}/proxy`; - -// fetch namespaces -await fetch(`${kubernetesProxyEndpoint}/api/v1/namespaces`, { - method: 'GET', - headers: { - 'Backstage-Kubernetes-Cluster': CLUSTER_NAME, - 'Backstage-Kubernetes-Authorization': `Bearer ${token}`, - Authorization: `Bearer ${userToken}`, - }, -}); +const kubernetesApi = useApi(kubernetesApiRef); +await kubernetesApi.proxy(CLUSTER_NAME, '/api/v1/namespaces'); ``` ## How it works diff --git a/docs/integrations/bitbucketCloud/discovery.md b/docs/integrations/bitbucketCloud/discovery.md index c5a7eee4a0..6e1533dea0 100644 --- a/docs/integrations/bitbucketCloud/discovery.md +++ b/docs/integrations/bitbucketCloud/discovery.md @@ -76,36 +76,37 @@ Additionally, you need to decide how you want to receive events from external so Set up your provider -```ts title="packages/backend/src/plugins/catalogEventBasedProviders.ts" +```ts title="packages/backend/src/plugins/catalog.ts" +import { CatalogBuilder } from '@backstage/plugin-catalog-backend'; /* highlight-add-start */ -import { CatalogClient } from '@backstage/catalog-client'; import { BitbucketCloudEntityProvider } from '@backstage/plugin-catalog-backend-module-bitbucket-cloud'; /* highlight-add-end */ -import { EntityProvider } from '@backstage/plugin-catalog-node'; -import { EventSubscriber } from '@backstage/plugin-events-node'; + +import { ScaffolderEntitiesProcessor } from '@backstage/plugin-scaffolder-backend'; +import { Router } from 'express'; import { PluginEnvironment } from '../types'; -export default async function createCatalogEventBasedProviders( - /* highlight-remove-next-line */ - _: PluginEnvironment, - /* highlight-add-next-line */ +export default async function createPlugin( env: PluginEnvironment, -): Promise> { - const providers: Array< - (EntityProvider & EventSubscriber) | Array - > = []; - // add your event-based entity providers here +): Promise { + const builder = await CatalogBuilder.create(env); + builder.addProcessor(new ScaffolderEntitiesProcessor()); /* highlight-add-start */ - providers.push( - BitbucketCloudEntityProvider.fromConfig(env.config, { + const bitbucketCloudProvider = BitbucketCloudEntityProvider.fromConfig( + env.config, + { catalogApi: new CatalogClient({ discoveryApi: env.discovery }), logger: env.logger, scheduler: env.scheduler, tokenManager: env.tokenManager, - }), + }, ); + env.eventBroker.subscribe(bitbucketCloudProvider); + builder.addEntityProvider(bitbucketCloudProvider); /* highlight-add-end */ - return providers.flat(); + const { processingEngine, router } = await builder.build(); + await processingEngine.start(); + return router; } ``` diff --git a/docs/integrations/github/discovery.md b/docs/integrations/github/discovery.md index fb65173b28..7d7744cb09 100644 --- a/docs/integrations/github/discovery.md +++ b/docs/integrations/github/discovery.md @@ -69,37 +69,36 @@ Additionally, you need to decide how you want to receive events from external so Set up your provider -```ts title="packages/backend/src/plugins/catalogEventBasedProviders.ts" +```ts title="packages/backend/src/plugins/catalog.ts" +import { CatalogBuilder } from '@backstage/plugin-catalog-backend'; /* highlight-add-next-line */ import { GithubEntityProvider } from '@backstage/plugin-catalog-backend-module-github'; -import { EntityProvider } from '@backstage/plugin-catalog-node'; -import { EventSubscriber } from '@backstage/plugin-events-node'; +import { ScaffolderEntitiesProcessor } from '@backstage/plugin-scaffolder-backend'; +import { Router } from 'express'; import { PluginEnvironment } from '../types'; -export default async function createCatalogEventBasedProviders( - /* highlight-remove-next-line */ - _: PluginEnvironment, - /* highlight-add-next-line */ + +export default async function createPlugin( env: PluginEnvironment, -): Promise> { - const providers: Array< - (EntityProvider & EventSubscriber) | Array - > = []; - // add your event-based entity providers here +): Promise { + const builder = await CatalogBuilder.create(env); + builder.addProcessor(new ScaffolderEntitiesProcessor()); /* highlight-add-start */ - providers.push( - GithubEntityProvider.fromConfig(env.config, { - logger: env.logger, - // optional: alternatively, use scheduler with schedule defined in app-config.yaml - schedule: env.scheduler.createScheduledTaskRunner({ - frequency: { minutes: 30 }, - timeout: { minutes: 3 }, - }), - // optional: alternatively, use schedule - scheduler: env.scheduler, + const githubProvider = GithubEntityProvider.fromConfig(env.config, { + logger: env.logger, + // optional: alternatively, use scheduler with schedule defined in app-config.yaml + schedule: env.scheduler.createScheduledTaskRunner({ + frequency: { minutes: 30 }, + timeout: { minutes: 3 }, }), - ); + // optional: alternatively, use schedule + scheduler: env.scheduler, + }); + env.eventBroker.subscribe(githubProvider); + builder.addEntityProvider(demoProvider); /* highlight-add-end */ - return providers.flat(); + const { processingEngine, router } = await builder.build(); + await processingEngine.start(); + return router; } ``` diff --git a/docs/integrations/github/org.md b/docs/integrations/github/org.md index 8f67e2a43f..ccffe60bd1 100644 --- a/docs/integrations/github/org.md +++ b/docs/integrations/github/org.md @@ -79,25 +79,21 @@ Additionally, you need to decide how you want to receive events from external so Set up your provider -```ts title="packages/backend/src/plugins/catalogEventBasedProviders.ts" +```ts title="packages/backend/src/plugins/catalog.ts" +import { CatalogBuilder } from '@backstage/plugin-catalog-backend'; /* highlight-add-next-line */ import { GithubOrgEntityProvider } from '@backstage/plugin-catalog-backend-module-github'; -import { EntityProvider } from '@backstage/plugin-catalog-node'; -import { EventSubscriber } from '@backstage/plugin-events-node'; +import { ScaffolderEntitiesProcessor } from '@backstage/plugin-scaffolder-backend'; +import { Router } from 'express'; import { PluginEnvironment } from '../types'; -export default async function createCatalogEventBasedProviders( - /* highlight-remove-next-line */ - _: PluginEnvironment, - /* highlight-add-next-line */ + +export default async function createPlugin( env: PluginEnvironment, -): Promise> { - const providers: Array< - (EntityProvider & EventSubscriber) | Array - > = []; - // add your event-based entity providers here +): Promise { + const builder = await CatalogBuilder.create(env); + builder.addProcessor(new ScaffolderEntitiesProcessor()); /* highlight-add-start */ - providers.push( - GithubOrgEntityProvider.fromConfig(env.config, { + const githubOrgProvider = GithubOrgEntityProvider.fromConfig(env.config, { id: 'production', orgUrl: 'https://github.com/backstage', logger: env.logger, @@ -105,10 +101,12 @@ export default async function createCatalogEventBasedProviders( frequency: { minutes: 60 }, timeout: { minutes: 15 }, }), - }), - ); + env.eventBroker.subscribe(githubOrgProvider); + builder.addEntityProvider(githubOrgProvider); /* highlight-add-end */ - return providers.flat(); + const { processingEngine, router } = await builder.build(); + await processingEngine.start(); + return router; } ``` diff --git a/docs/plugins/backend-plugin.md b/docs/plugins/backend-plugin.md index 9ce835f5f5..73b8f9027a 100644 --- a/docs/plugins/backend-plugin.md +++ b/docs/plugins/backend-plugin.md @@ -184,9 +184,10 @@ export async function createRouter( options: RouterOptions, ): Promise { const router = Router(); + const { identity } = options; router.post('/example', async (req, res) => { - const identity = await identity.getIdentity({ request: req }); + const userIdentity = await identity.getIdentity({ request: req }); ... }); ``` diff --git a/docs/releases/v1.13.0-next.3-changelog.md b/docs/releases/v1.13.0-next.3-changelog.md new file mode 100644 index 0000000000..80da2aaa77 --- /dev/null +++ b/docs/releases/v1.13.0-next.3-changelog.md @@ -0,0 +1,2087 @@ +# Release v1.13.0-next.3 + +## @backstage/catalog-model@1.3.0-next.0 + +### Minor Changes + +- be9c4228073: Modified the regex for DNS label validation to support IDN domains + +### Patch Changes + +- Updated dependencies + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + +## @backstage/cli-node@0.1.0-next.0 + +### Minor Changes + +- 3156b0d85dc: Introduced the new `@backstage/cli-node` package, which provides utilities for use across Backstage CLIs. + +### Patch Changes + +- Updated dependencies + - @backstage/cli-common@0.1.12 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + +## @backstage/core-app-api@1.7.0-next.3 + +### Minor Changes + +- 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 + `RefreshingAuthSessionManager` passes any scopes in its `GetSessionRequest` + appropriately. + +### Patch Changes + +- Updated dependencies + - @backstage/config@1.0.7 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/types@1.0.2 + - @backstage/version-bridge@1.0.4-next.0 + +## @backstage/core-components@0.13.0-next.3 + +### Minor Changes + +- 01cd4e25754: **BREAKING:** Removing `Tabs` component from `core-components` as it is neither used in the core Backstage app nor in the monorepo plugins. If you are using this component in your instance please consider replacing it with the [Material UI `Tabs`](https://v4.mui.com/components/tabs/#tabs) component like the following: + + ```diff + - , + - content:
Label
, + - }]} + - /> + + + + + } + + /> + + + ``` + +### Patch Changes + +- Updated dependencies + - @backstage/config@1.0.7 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/errors@1.1.5 + - @backstage/theme@0.2.19-next.0 + - @backstage/version-bridge@1.0.4-next.0 + +## @backstage/repo-tools@0.2.0-next.2 + +### Minor Changes + +- a876e69b20e: Adding two new commands to support OpenAPI spec writing, `schema:openapi:generate` to generate the Typescript file that `@backstage/backend-openapi-utils` needs for typing and `schema:openapi:verify` to verify that this file exists and matches your `src/schema/openapi.yaml` file. + +### Patch Changes + +- Updated dependencies + - @backstage/cli-common@0.1.12 + - @backstage/errors@1.1.5 + +## @backstage/plugin-catalog-backend@1.9.0-next.3 + +### Minor Changes + +- 92a4590fc3a: Add monorepo support to CodeOwnersProccesor. + +### Patch Changes + +- be5aca50114: Updates and moves OpenAPI spec to `src/schema/openapi.yaml` and uses `ApiRouter` type from `@backstage/backend-openapi-utils` to handle automatic types from the OpenAPI spec file. +- Updated dependencies + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/backend-common@0.18.4-next.2 + - @backstage/backend-plugin-api@0.5.1-next.2 + - @backstage/catalog-client@1.4.1-next.1 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/integration@1.4.4-next.0 + - @backstage/types@1.0.2 + - @backstage/plugin-catalog-common@1.0.13-next.1 + - @backstage/plugin-catalog-node@1.3.5-next.3 + - @backstage/plugin-permission-common@0.7.5-next.0 + - @backstage/plugin-permission-node@0.7.7-next.2 + - @backstage/plugin-scaffolder-common@1.2.7-next.2 + - @backstage/plugin-search-backend-module-catalog@0.1.0-next.2 + - @backstage/plugin-search-common@1.2.3-next.0 + +## @backstage/plugin-catalog-react@1.5.0-next.3 + +### Minor Changes + +- a49fb39df5a: Attempt to load entity owner names in the EntityOwnerPicker through the `by-refs` endpoint. If `spec.profile.displayName` or `metadata.title` are populated, we now attempt to show those before showing the `humanizeEntityRef`'d version. + + **BREAKING**: `EntityOwnerFilter` now uses the full entity ref instead of the `humanizeEntityRef`. If you rely on `EntityOwnerFilter.values` or the `queryParameters.owners` of `useEntityList`, you will need to adjust your code like the following. + + ```tsx + const { queryParameters: { owners } } = useEntityList(); + // or + const { filter: { owners } } = useEntityList(); + + // Instead of, + if (owners.some(ref => ref === humanizeEntityRef(myEntity))) ... + + // You'll need to use, + if (owners.some(ref => ref === stringifyEntityRef(myEntity))) ... + ``` + +### Patch Changes + +- d1f5324dff7: Reverted the check if the selected options list is different than the query parameters list before invoking `setSelectedOptions` method. This was preventing updating list items when a query string was already present in the URL when loading the page. +- Updated dependencies + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/core-components@0.13.0-next.3 + - @backstage/catalog-client@1.4.1-next.1 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/errors@1.1.5 + - @backstage/integration@1.4.4-next.0 + - @backstage/theme@0.2.19-next.0 + - @backstage/types@1.0.2 + - @backstage/version-bridge@1.0.4-next.0 + - @backstage/plugin-catalog-common@1.0.13-next.1 + - @backstage/plugin-permission-common@0.7.5-next.0 + - @backstage/plugin-permission-react@0.4.12-next.1 + +## @backstage/plugin-kubernetes@0.8.0-next.3 + +### Minor Changes + +- 754be7c5106: refactor kubernetes error detection to make way for proposed solutions + + **BREAKING**: `DetectedError` now appears once per Kubernetes resource per error instead of for all resources which have that error, `namespace` and `name` fields are now in `sourceRef` object `message` is now a `string` instead of a `string[]`. `ErrorDetectableKind` has been removed. + +### Patch Changes + +- e7fb0117485: fixes a bug where an empty authorization header was provided to the proxy endpoint when a cluster had a server-side auth provider +- c159ab64a60: `KubernetesBackendClient` now requires a `kubernetesAuthProvidersApi` value to be provided. `KubernetesApi` interface now has a proxy method requirement. +- Updated dependencies + - @backstage/plugin-catalog-react@1.5.0-next.3 + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/core-components@0.13.0-next.3 + - @backstage/config@1.0.7 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/errors@1.1.5 + - @backstage/theme@0.2.19-next.0 + - @backstage/plugin-kubernetes-common@0.6.2-next.2 + +## @backstage/plugin-lighthouse-backend@0.2.0-next.3 + +### Minor Changes + +- 7a89555e73d: Lighthouse backend plugin can now use an authenticated catalog backend API. + + - Breaking \* You must now pass the `tokenManager` to the lighthouse `createScheduler`. + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/backend-common@0.18.4-next.2 + - @backstage/backend-tasks@0.5.1-next.2 + - @backstage/catalog-client@1.4.1-next.1 + - @backstage/config@1.0.7 + - @backstage/types@1.0.2 + - @backstage/plugin-lighthouse-common@0.1.1 + +## @backstage/plugin-scaffolder-backend@1.13.0-next.3 + +### Minor Changes + +- d7c8c222e25: Allow for a commit message to differ from the PR title when publishing a GitHub pull request. + +### Patch Changes + +- f37a95adcd8: Stripped entity types and namespace before passing to GitHub API +- Updated dependencies + - @backstage/plugin-catalog-backend@1.9.0-next.3 + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/backend-common@0.18.4-next.2 + - @backstage/backend-plugin-api@0.5.1-next.2 + - @backstage/backend-tasks@0.5.1-next.2 + - @backstage/catalog-client@1.4.1-next.1 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/integration@1.4.4-next.0 + - @backstage/types@1.0.2 + - @backstage/plugin-auth-node@0.2.13-next.2 + - @backstage/plugin-catalog-common@1.0.13-next.1 + - @backstage/plugin-catalog-node@1.3.5-next.3 + - @backstage/plugin-permission-common@0.7.5-next.0 + - @backstage/plugin-permission-node@0.7.7-next.2 + - @backstage/plugin-scaffolder-common@1.2.7-next.2 + - @backstage/plugin-scaffolder-node@0.1.2-next.3 + +## @backstage/app-defaults@1.3.0-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-app-api@1.7.0-next.3 + - @backstage/core-components@0.13.0-next.3 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/theme@0.2.19-next.0 + - @backstage/plugin-permission-react@0.4.12-next.1 + +## @backstage/backend-openapi-utils@0.0.1-next.0 + +### Patch Changes + +- 62fe726fdc5: New plugin! Primary focus is to support types on `Router`s in backend packages. Developers can use the `ApiRouter` from this package in their packages to support a typed experience based on their OpenAPI specs. The `ApiRouter` supports request bodies, response bodies, query parameters and path parameters, as well as full path-based context of the above. This means no more guessing on an endpoint like `req.post('/not-my-route', (req, res)=>{res.send(req.body.badparam)})`. Typescript would catch `/not-my-route`, `req.body.badparam`, `res.send(req.body.badparam)`. + +## @backstage/catalog-client@1.4.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/errors@1.1.5 + +## @backstage/cli@0.22.6-next.3 + +### Patch Changes + +- 3156b0d85dc: Internal refactor to move many internal utilities to the new `@backstage/cli-node` package. +- 9bbb00d5b49: Updated dependency `@swc/helpers` to `^0.5.0`. +- Updated dependencies + - @backstage/cli-node@0.1.0-next.0 + - @backstage/cli-common@0.1.12 + - @backstage/config@1.0.7 + - @backstage/config-loader@1.1.9 + - @backstage/errors@1.1.5 + - @backstage/eslint-plugin@0.1.3-next.0 + - @backstage/release-manifests@0.0.9 + - @backstage/types@1.0.2 + +## @backstage/create-app@0.4.39-next.3 + +### Patch Changes + +- Bumped create-app version. +- Updated dependencies + - @backstage/cli-common@0.1.12 + +## @backstage/dev-utils@1.0.14-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.5.0-next.3 + - @backstage/core-app-api@1.7.0-next.3 + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/core-components@0.13.0-next.3 + - @backstage/app-defaults@1.3.0-next.3 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/integration-react@1.1.12-next.3 + - @backstage/test-utils@1.3.0-next.3 + - @backstage/theme@0.2.19-next.0 + +## @backstage/integration-react@1.1.12-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.0-next.3 + - @backstage/config@1.0.7 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/integration@1.4.4-next.0 + - @backstage/theme@0.2.19-next.0 + +## @techdocs/cli@1.4.1-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/backend-common@0.18.4-next.2 + - @backstage/cli-common@0.1.12 + - @backstage/config@1.0.7 + - @backstage/plugin-techdocs-node@1.6.1-next.3 + +## @backstage/test-utils@1.3.0-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-app-api@1.7.0-next.3 + - @backstage/config@1.0.7 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/theme@0.2.19-next.0 + - @backstage/types@1.0.2 + - @backstage/plugin-permission-common@0.7.5-next.0 + - @backstage/plugin-permission-react@0.4.12-next.1 + +## @backstage/plugin-adr@0.4.2-next.3 + +### Patch Changes + +- 77aa3a4d47e: use path attribute to fetch files instead of name and update the UI to navigate over subdirectories +- Updated dependencies + - @backstage/plugin-adr-common@0.2.8-next.1 + - @backstage/plugin-catalog-react@1.5.0-next.3 + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/core-components@0.13.0-next.3 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/integration-react@1.1.12-next.3 + - @backstage/theme@0.2.19-next.0 + - @backstage/plugin-search-common@1.2.3-next.0 + - @backstage/plugin-search-react@1.5.2-next.3 + +## @backstage/plugin-adr-backend@0.3.2-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-adr-common@0.2.8-next.1 + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/backend-common@0.18.4-next.2 + - @backstage/catalog-client@1.4.1-next.1 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/integration@1.4.4-next.0 + - @backstage/plugin-search-common@1.2.3-next.0 + +## @backstage/plugin-adr-common@0.2.8-next.1 + +### Patch Changes + +- 77aa3a4d47e: use path attribute to fetch files instead of name and update the UI to navigate over subdirectories +- Updated dependencies + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/integration@1.4.4-next.0 + - @backstage/plugin-search-common@1.2.3-next.0 + +## @backstage/plugin-airbrake@0.3.17-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.5.0-next.3 + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/core-components@0.13.0-next.3 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/dev-utils@1.0.14-next.3 + - @backstage/test-utils@1.3.0-next.3 + - @backstage/theme@0.2.19-next.0 + +## @backstage/plugin-allure@0.1.33-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.5.0-next.3 + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/core-components@0.13.0-next.3 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/theme@0.2.19-next.0 + +## @backstage/plugin-analytics-module-ga@0.1.28-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.0-next.3 + - @backstage/config@1.0.7 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/theme@0.2.19-next.0 + +## @backstage/plugin-apache-airflow@0.2.10-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.0-next.3 + - @backstage/core-plugin-api@1.5.1-next.1 + +## @backstage/plugin-api-docs@0.9.2-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.5.0-next.3 + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/core-components@0.13.0-next.3 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/theme@0.2.19-next.0 + - @backstage/plugin-catalog@1.10.0-next.3 + +## @backstage/plugin-apollo-explorer@0.1.10-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.0-next.3 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/theme@0.2.19-next.0 + +## @backstage/plugin-auth-backend@0.18.2-next.3 + +### Patch Changes + +- 475abd1dc3f: The `microsoft` (i.e. Azure) auth provider now supports negotiating tokens for + Azure resources besides Microsoft Graph (e.g. AKS, Virtual Machines, Machine + Learning Services, etc.). When the `/frame/handler` endpoint is called with an + authorization code for a non-Microsoft Graph scope, the user profile will not be + fetched. Similarly no user profile or photo data will be fetched by the backend + if the `/refresh` endpoint is called with the `scope` query parameter strictly + containing scopes for resources besides Microsoft Graph. + + Furthermore, the `offline_access` scope will be requested by default, even when + it is not mentioned in the argument to `getAccessToken`. This means that any + Azure access token can be automatically refreshed, even if the user has not + signed in via Azure. + +- 6a900951336: Add common identify resolvers for `oidc` auth provider. + +- a0ef1ec7349: Export Azure Easy Auth provider so it can actually be used. + +- Updated dependencies + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/backend-common@0.18.4-next.2 + - @backstage/catalog-client@1.4.1-next.1 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + - @backstage/plugin-auth-node@0.2.13-next.2 + +## @backstage/plugin-azure-devops@0.2.8-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.5.0-next.3 + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/core-components@0.13.0-next.3 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/errors@1.1.5 + - @backstage/theme@0.2.19-next.0 + - @backstage/plugin-azure-devops-common@0.3.0 + +## @backstage/plugin-azure-sites@0.1.6-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.5.0-next.3 + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/core-components@0.13.0-next.3 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/theme@0.2.19-next.0 + - @backstage/plugin-azure-sites-common@0.1.0 + +## @backstage/plugin-badges@0.2.41-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.5.0-next.3 + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/core-components@0.13.0-next.3 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/errors@1.1.5 + - @backstage/theme@0.2.19-next.0 + +## @backstage/plugin-badges-backend@0.1.38-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/backend-common@0.18.4-next.2 + - @backstage/catalog-client@1.4.1-next.1 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + +## @backstage/plugin-bazaar@0.2.7-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/cli@0.22.6-next.3 + - @backstage/plugin-catalog-react@1.5.0-next.3 + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/core-components@0.13.0-next.3 + - @backstage/catalog-client@1.4.1-next.1 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/errors@1.1.5 + - @backstage/theme@0.2.19-next.0 + - @backstage/plugin-catalog@1.10.0-next.3 + +## @backstage/plugin-bitrise@0.1.44-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.5.0-next.3 + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/core-components@0.13.0-next.3 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/theme@0.2.19-next.0 + +## @backstage/plugin-catalog@1.10.0-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.5.0-next.3 + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/core-components@0.13.0-next.3 + - @backstage/catalog-client@1.4.1-next.1 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/errors@1.1.5 + - @backstage/integration-react@1.1.12-next.3 + - @backstage/theme@0.2.19-next.0 + - @backstage/types@1.0.2 + - @backstage/plugin-catalog-common@1.0.13-next.1 + - @backstage/plugin-search-common@1.2.3-next.0 + - @backstage/plugin-search-react@1.5.2-next.3 + +## @backstage/plugin-catalog-backend-module-aws@0.1.18-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/backend-common@0.18.4-next.2 + - @backstage/backend-plugin-api@0.5.1-next.2 + - @backstage/backend-tasks@0.5.1-next.2 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/integration@1.4.4-next.0 + - @backstage/types@1.0.2 + - @backstage/plugin-catalog-common@1.0.13-next.1 + - @backstage/plugin-catalog-node@1.3.5-next.3 + - @backstage/plugin-kubernetes-common@0.6.2-next.2 + +## @backstage/plugin-catalog-backend-module-azure@0.1.15-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/backend-common@0.18.4-next.2 + - @backstage/backend-plugin-api@0.5.1-next.2 + - @backstage/backend-tasks@0.5.1-next.2 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/integration@1.4.4-next.0 + - @backstage/types@1.0.2 + - @backstage/plugin-catalog-common@1.0.13-next.1 + - @backstage/plugin-catalog-node@1.3.5-next.3 + +## @backstage/plugin-catalog-backend-module-bitbucket@0.2.11-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/backend-common@0.18.4-next.2 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/integration@1.4.4-next.0 + - @backstage/types@1.0.2 + - @backstage/plugin-bitbucket-cloud-common@0.2.5-next.0 + - @backstage/plugin-catalog-node@1.3.5-next.3 + +## @backstage/plugin-catalog-backend-module-bitbucket-cloud@0.1.11-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/backend-common@0.18.4-next.2 + - @backstage/backend-plugin-api@0.5.1-next.2 + - @backstage/backend-tasks@0.5.1-next.2 + - @backstage/catalog-client@1.4.1-next.1 + - @backstage/config@1.0.7 + - @backstage/integration@1.4.4-next.0 + - @backstage/plugin-bitbucket-cloud-common@0.2.5-next.0 + - @backstage/plugin-catalog-common@1.0.13-next.1 + - @backstage/plugin-catalog-node@1.3.5-next.3 + - @backstage/plugin-events-node@0.2.5-next.2 + +## @backstage/plugin-catalog-backend-module-bitbucket-server@0.1.9-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/backend-common@0.18.4-next.2 + - @backstage/backend-plugin-api@0.5.1-next.2 + - @backstage/backend-tasks@0.5.1-next.2 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/integration@1.4.4-next.0 + - @backstage/plugin-catalog-node@1.3.5-next.3 + +## @backstage/plugin-catalog-backend-module-gerrit@0.1.12-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/backend-common@0.18.4-next.2 + - @backstage/backend-plugin-api@0.5.1-next.2 + - @backstage/backend-tasks@0.5.1-next.2 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/integration@1.4.4-next.0 + - @backstage/plugin-catalog-node@1.3.5-next.3 + +## @backstage/plugin-catalog-backend-module-github@0.2.7-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-backend@1.9.0-next.3 + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/backend-common@0.18.4-next.2 + - @backstage/backend-plugin-api@0.5.1-next.2 + - @backstage/backend-tasks@0.5.1-next.2 + - @backstage/catalog-client@1.4.1-next.1 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/integration@1.4.4-next.0 + - @backstage/types@1.0.2 + - @backstage/plugin-catalog-common@1.0.13-next.1 + - @backstage/plugin-catalog-node@1.3.5-next.3 + - @backstage/plugin-events-node@0.2.5-next.2 + +## @backstage/plugin-catalog-backend-module-gitlab@0.2.0-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/backend-common@0.18.4-next.2 + - @backstage/backend-plugin-api@0.5.1-next.2 + - @backstage/backend-tasks@0.5.1-next.2 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/integration@1.4.4-next.0 + - @backstage/types@1.0.2 + - @backstage/plugin-catalog-node@1.3.5-next.3 + +## @backstage/plugin-catalog-backend-module-incremental-ingestion@0.3.1-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-backend@1.9.0-next.3 + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/backend-common@0.18.4-next.2 + - @backstage/backend-plugin-api@0.5.1-next.2 + - @backstage/backend-tasks@0.5.1-next.2 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/plugin-catalog-node@1.3.5-next.3 + - @backstage/plugin-events-node@0.2.5-next.2 + - @backstage/plugin-permission-common@0.7.5-next.0 + +## @backstage/plugin-catalog-backend-module-ldap@0.5.11-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/backend-tasks@0.5.1-next.2 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + - @backstage/plugin-catalog-common@1.0.13-next.1 + - @backstage/plugin-catalog-node@1.3.5-next.3 + +## @backstage/plugin-catalog-backend-module-msgraph@0.5.3-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/backend-common@0.18.4-next.2 + - @backstage/backend-plugin-api@0.5.1-next.2 + - @backstage/backend-tasks@0.5.1-next.2 + - @backstage/config@1.0.7 + - @backstage/plugin-catalog-common@1.0.13-next.1 + - @backstage/plugin-catalog-node@1.3.5-next.3 + +## @backstage/plugin-catalog-backend-module-openapi@0.1.10-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-backend@1.9.0-next.3 + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/backend-common@0.18.4-next.2 + - @backstage/config@1.0.7 + - @backstage/integration@1.4.4-next.0 + - @backstage/types@1.0.2 + - @backstage/plugin-catalog-common@1.0.13-next.1 + - @backstage/plugin-catalog-node@1.3.5-next.3 + +## @backstage/plugin-catalog-backend-module-puppetdb@0.1.1-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/backend-common@0.18.4-next.2 + - @backstage/backend-plugin-api@0.5.1-next.2 + - @backstage/backend-tasks@0.5.1-next.2 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + - @backstage/plugin-catalog-node@1.3.5-next.3 + +## @backstage/plugin-catalog-common@1.0.13-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/plugin-permission-common@0.7.5-next.0 + - @backstage/plugin-search-common@1.2.3-next.0 + +## @backstage/plugin-catalog-graph@0.2.29-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.5.0-next.3 + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/core-components@0.13.0-next.3 + - @backstage/catalog-client@1.4.1-next.1 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/theme@0.2.19-next.0 + +## @backstage/plugin-catalog-graphql@0.3.20-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/config@1.0.7 + - @backstage/types@1.0.2 + +## @backstage/plugin-catalog-import@0.9.7-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.5.0-next.3 + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/core-components@0.13.0-next.3 + - @backstage/catalog-client@1.4.1-next.1 + - @backstage/config@1.0.7 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/errors@1.1.5 + - @backstage/integration@1.4.4-next.0 + - @backstage/integration-react@1.1.12-next.3 + - @backstage/plugin-catalog-common@1.0.13-next.1 + +## @backstage/plugin-catalog-node@1.3.5-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/backend-plugin-api@0.5.1-next.2 + - @backstage/catalog-client@1.4.1-next.1 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + - @backstage/plugin-catalog-common@1.0.13-next.1 + +## @backstage/plugin-cicd-statistics@0.1.19-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.5.0-next.3 + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/core-plugin-api@1.5.1-next.1 + +## @backstage/plugin-cicd-statistics-module-gitlab@0.1.13-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/plugin-cicd-statistics@0.1.19-next.3 + +## @backstage/plugin-circleci@0.3.17-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.5.0-next.3 + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/core-components@0.13.0-next.3 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/theme@0.2.19-next.0 + +## @backstage/plugin-cloudbuild@0.3.17-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.5.0-next.3 + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/core-components@0.13.0-next.3 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/theme@0.2.19-next.0 + +## @backstage/plugin-code-climate@0.1.17-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.5.0-next.3 + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/core-components@0.13.0-next.3 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/theme@0.2.19-next.0 + +## @backstage/plugin-code-coverage@0.2.10-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.5.0-next.3 + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/core-components@0.13.0-next.3 + - @backstage/config@1.0.7 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/errors@1.1.5 + - @backstage/theme@0.2.19-next.0 + +## @backstage/plugin-code-coverage-backend@0.2.10-next.3 + +### Patch Changes + +- d3645a62b74: Bump `xml2js` from 0.4.23 to 0.5.0 +- Updated dependencies + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/backend-common@0.18.4-next.2 + - @backstage/catalog-client@1.4.1-next.1 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/integration@1.4.4-next.0 + +## @backstage/plugin-codescene@0.1.12-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.0-next.3 + - @backstage/config@1.0.7 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/errors@1.1.5 + - @backstage/theme@0.2.19-next.0 + +## @backstage/plugin-config-schema@0.1.40-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.0-next.3 + - @backstage/config@1.0.7 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/errors@1.1.5 + - @backstage/theme@0.2.19-next.0 + - @backstage/types@1.0.2 + +## @backstage/plugin-cost-insights@0.12.6-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.5.0-next.3 + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/core-components@0.13.0-next.3 + - @backstage/config@1.0.7 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/theme@0.2.19-next.0 + - @backstage/plugin-cost-insights-common@0.1.1 + +## @backstage/plugin-dynatrace@4.0.0-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.5.0-next.3 + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/core-components@0.13.0-next.3 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/theme@0.2.19-next.0 + +## @backstage/plugin-entity-feedback@0.2.0-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.5.0-next.3 + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/core-components@0.13.0-next.3 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/errors@1.1.5 + - @backstage/theme@0.2.19-next.0 + - @backstage/plugin-entity-feedback-common@0.1.1-next.0 + +## @backstage/plugin-entity-feedback-backend@0.1.2-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/backend-common@0.18.4-next.2 + - @backstage/catalog-client@1.4.1-next.1 + - @backstage/config@1.0.7 + - @backstage/plugin-auth-node@0.2.13-next.2 + - @backstage/plugin-entity-feedback-common@0.1.1-next.0 + +## @backstage/plugin-entity-validation@0.1.2-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.5.0-next.3 + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/core-components@0.13.0-next.3 + - @backstage/catalog-client@1.4.1-next.1 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/errors@1.1.5 + - @backstage/theme@0.2.19-next.0 + - @backstage/plugin-catalog-common@1.0.13-next.1 + +## @backstage/plugin-events-backend@0.2.5-next.3 + +### Patch Changes + +- 3538d9ad2c4: Export `DefaultEventBroker` to allow decoupling of the catalog and events backends in the `example-backend`. + + Please look at `plugins/events-backend/README.md` for the currently advised way to set up the event backend and catalog providers. + +- Updated dependencies + - @backstage/backend-common@0.18.4-next.2 + - @backstage/backend-plugin-api@0.5.1-next.2 + - @backstage/config@1.0.7 + - @backstage/plugin-events-node@0.2.5-next.2 + +## @backstage/plugin-explore@0.4.2-next.3 + +### Patch Changes + +- f9ea944422e: Extracted generic `CatalogKindExploreContent` component so that it is easy to show any component kinds in their own tab in the explore page. +- Updated dependencies + - @backstage/plugin-catalog-react@1.5.0-next.3 + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/core-components@0.13.0-next.3 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/errors@1.1.5 + - @backstage/theme@0.2.19-next.0 + - @backstage/plugin-explore-common@0.0.1 + - @backstage/plugin-explore-react@0.0.28-next.1 + - @backstage/plugin-search-common@1.2.3-next.0 + - @backstage/plugin-search-react@1.5.2-next.3 + +## @backstage/plugin-firehydrant@0.2.1-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.5.0-next.3 + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/core-components@0.13.0-next.3 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/theme@0.2.19-next.0 + +## @backstage/plugin-fossa@0.2.49-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.5.0-next.3 + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/core-components@0.13.0-next.3 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/errors@1.1.5 + - @backstage/theme@0.2.19-next.0 + +## @backstage/plugin-gcalendar@0.3.13-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.0-next.3 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/errors@1.1.5 + - @backstage/theme@0.2.19-next.0 + +## @backstage/plugin-gcp-projects@0.3.36-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.0-next.3 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/theme@0.2.19-next.0 + +## @backstage/plugin-git-release-manager@0.3.30-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.0-next.3 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/integration@1.4.4-next.0 + - @backstage/theme@0.2.19-next.0 + +## @backstage/plugin-github-actions@0.5.17-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.5.0-next.3 + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/core-components@0.13.0-next.3 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/integration@1.4.4-next.0 + - @backstage/theme@0.2.19-next.0 + +## @backstage/plugin-github-deployments@0.1.48-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.5.0-next.3 + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/core-components@0.13.0-next.3 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/errors@1.1.5 + - @backstage/integration@1.4.4-next.0 + - @backstage/integration-react@1.1.12-next.3 + - @backstage/theme@0.2.19-next.0 + +## @backstage/plugin-github-issues@0.2.6-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.5.0-next.3 + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/core-components@0.13.0-next.3 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/errors@1.1.5 + - @backstage/integration@1.4.4-next.0 + - @backstage/theme@0.2.19-next.0 + +## @backstage/plugin-github-pull-requests-board@0.1.11-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.5.0-next.3 + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/core-components@0.13.0-next.3 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/integration@1.4.4-next.0 + - @backstage/theme@0.2.19-next.0 + +## @backstage/plugin-gitops-profiles@0.3.35-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.0-next.3 + - @backstage/config@1.0.7 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/theme@0.2.19-next.0 + +## @backstage/plugin-gocd@0.1.23-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.5.0-next.3 + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/core-components@0.13.0-next.3 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/errors@1.1.5 + - @backstage/theme@0.2.19-next.0 + +## @backstage/plugin-graphiql@0.2.49-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.0-next.3 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/theme@0.2.19-next.0 + +## @backstage/plugin-graphql-backend@0.1.34-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.4-next.2 + - @backstage/config@1.0.7 + - @backstage/plugin-catalog-graphql@0.3.20-next.2 + +## @backstage/plugin-graphql-voyager@0.1.2-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.0-next.3 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/theme@0.2.19-next.0 + +## @backstage/plugin-home@0.4.33-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.5.0-next.3 + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/core-components@0.13.0-next.3 + - @backstage/config@1.0.7 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/theme@0.2.19-next.0 + +## @backstage/plugin-ilert@0.2.6-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.5.0-next.3 + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/core-components@0.13.0-next.3 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/errors@1.1.5 + - @backstage/theme@0.2.19-next.0 + +## @backstage/plugin-jenkins@0.7.16-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.5.0-next.3 + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/core-components@0.13.0-next.3 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/errors@1.1.5 + - @backstage/theme@0.2.19-next.0 + - @backstage/plugin-jenkins-common@0.1.15-next.1 + +## @backstage/plugin-jenkins-backend@0.1.34-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/backend-common@0.18.4-next.2 + - @backstage/catalog-client@1.4.1-next.1 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/plugin-auth-node@0.2.13-next.2 + - @backstage/plugin-jenkins-common@0.1.15-next.1 + - @backstage/plugin-permission-common@0.7.5-next.0 + +## @backstage/plugin-jenkins-common@0.1.15-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-common@1.0.13-next.1 + - @backstage/plugin-permission-common@0.7.5-next.0 + +## @backstage/plugin-kafka@0.3.17-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.5.0-next.3 + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/core-components@0.13.0-next.3 + - @backstage/config@1.0.7 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/theme@0.2.19-next.0 + +## @backstage/plugin-kafka-backend@0.2.37-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/backend-common@0.18.4-next.2 + - @backstage/backend-plugin-api@0.5.1-next.2 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + +## @backstage/plugin-kubernetes-backend@0.10.0-next.3 + +### Patch Changes + +- 56a28b559e5: Updated kubernetes config schema to match available options +- Updated dependencies + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/backend-common@0.18.4-next.2 + - @backstage/backend-plugin-api@0.5.1-next.2 + - @backstage/catalog-client@1.4.1-next.1 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/plugin-auth-node@0.2.13-next.2 + - @backstage/plugin-catalog-node@1.3.5-next.3 + - @backstage/plugin-kubernetes-common@0.6.2-next.2 + - @backstage/plugin-permission-common@0.7.5-next.0 + - @backstage/plugin-permission-node@0.7.7-next.2 + +## @backstage/plugin-kubernetes-common@0.6.2-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/plugin-permission-common@0.7.5-next.0 + +## @backstage/plugin-lighthouse@0.4.2-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.5.0-next.3 + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/core-components@0.13.0-next.3 + - @backstage/config@1.0.7 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/theme@0.2.19-next.0 + - @backstage/plugin-lighthouse-common@0.1.1 + +## @backstage/plugin-linguist@0.1.2-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.5.0-next.3 + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/core-components@0.13.0-next.3 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/errors@1.1.5 + - @backstage/theme@0.2.19-next.0 + - @backstage/plugin-linguist-common@0.1.0 + +## @backstage/plugin-linguist-backend@0.2.1-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/backend-common@0.18.4-next.2 + - @backstage/backend-tasks@0.5.1-next.2 + - @backstage/catalog-client@1.4.1-next.1 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + - @backstage/plugin-auth-node@0.2.13-next.2 + - @backstage/plugin-linguist-common@0.1.0 + +## @backstage/plugin-microsoft-calendar@0.1.2-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.0-next.3 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/errors@1.1.5 + - @backstage/theme@0.2.19-next.0 + +## @backstage/plugin-newrelic@0.3.35-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.0-next.3 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/theme@0.2.19-next.0 + +## @backstage/plugin-newrelic-dashboard@0.2.10-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.5.0-next.3 + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/core-components@0.13.0-next.3 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/errors@1.1.5 + +## @backstage/plugin-octopus-deploy@0.1.1-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.5.0-next.3 + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/core-components@0.13.0-next.3 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/theme@0.2.19-next.0 + +## @backstage/plugin-org@0.6.7-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.5.0-next.3 + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/core-components@0.13.0-next.3 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/theme@0.2.19-next.0 + +## @backstage/plugin-org-react@0.1.6-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.5.0-next.3 + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/core-components@0.13.0-next.3 + - @backstage/catalog-client@1.4.1-next.1 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/theme@0.2.19-next.0 + +## @backstage/plugin-pagerduty@0.5.10-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.5.0-next.3 + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/core-components@0.13.0-next.3 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/errors@1.1.5 + - @backstage/theme@0.2.19-next.0 + +## @backstage/plugin-periskop@0.1.15-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.5.0-next.3 + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/core-components@0.13.0-next.3 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/errors@1.1.5 + - @backstage/theme@0.2.19-next.0 + +## @backstage/plugin-playlist@0.1.8-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.5.0-next.3 + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/core-components@0.13.0-next.3 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/errors@1.1.5 + - @backstage/theme@0.2.19-next.0 + - @backstage/plugin-catalog-common@1.0.13-next.1 + - @backstage/plugin-permission-common@0.7.5-next.0 + - @backstage/plugin-permission-react@0.4.12-next.1 + - @backstage/plugin-playlist-common@0.1.6-next.0 + - @backstage/plugin-search-react@1.5.2-next.3 + +## @backstage/plugin-playlist-backend@0.2.7-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/backend-common@0.18.4-next.2 + - @backstage/catalog-client@1.4.1-next.1 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/plugin-auth-node@0.2.13-next.2 + - @backstage/plugin-permission-common@0.7.5-next.0 + - @backstage/plugin-permission-node@0.7.7-next.2 + - @backstage/plugin-playlist-common@0.1.6-next.0 + +## @backstage/plugin-rollbar@0.4.17-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.5.0-next.3 + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/core-components@0.13.0-next.3 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/theme@0.2.19-next.0 + +## @backstage/plugin-scaffolder@1.13.0-next.3 + +### Patch Changes + +- 7917cfccfc7: Fix some hard-coded white font colors in scaffolder +- Updated dependencies + - @backstage/plugin-catalog-react@1.5.0-next.3 + - @backstage/plugin-scaffolder-react@1.3.0-next.3 + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/core-components@0.13.0-next.3 + - @backstage/catalog-client@1.4.1-next.1 + - @backstage/config@1.0.7 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/errors@1.1.5 + - @backstage/integration@1.4.4-next.0 + - @backstage/integration-react@1.1.12-next.3 + - @backstage/theme@0.2.19-next.0 + - @backstage/types@1.0.2 + - @backstage/plugin-catalog-common@1.0.13-next.1 + - @backstage/plugin-permission-react@0.4.12-next.1 + - @backstage/plugin-scaffolder-common@1.2.7-next.2 + +## @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.1.0-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-backend@1.13.0-next.3 + - @backstage/backend-common@0.18.4-next.2 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/integration@1.4.4-next.0 + - @backstage/types@1.0.2 + - @backstage/plugin-scaffolder-node@0.1.2-next.3 + +## @backstage/plugin-scaffolder-backend-module-cookiecutter@0.2.19-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-backend@1.13.0-next.3 + - @backstage/backend-common@0.18.4-next.2 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/integration@1.4.4-next.0 + - @backstage/types@1.0.2 + - @backstage/plugin-scaffolder-node@0.1.2-next.3 + +## @backstage/plugin-scaffolder-backend-module-gitlab@0.1.0-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/integration@1.4.4-next.0 + - @backstage/plugin-scaffolder-node@0.1.2-next.3 + +## @backstage/plugin-scaffolder-backend-module-rails@0.4.12-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-backend@1.13.0-next.3 + - @backstage/backend-common@0.18.4-next.2 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/integration@1.4.4-next.0 + - @backstage/types@1.0.2 + - @backstage/plugin-scaffolder-node@0.1.2-next.3 + +## @backstage/plugin-scaffolder-backend-module-sentry@0.1.4-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/plugin-scaffolder-node@0.1.2-next.3 + +## @backstage/plugin-scaffolder-backend-module-yeoman@0.2.17-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/config@1.0.7 + - @backstage/types@1.0.2 + - @backstage/plugin-scaffolder-node@0.1.2-next.3 + +## @backstage/plugin-scaffolder-common@1.2.7-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/types@1.0.2 + - @backstage/plugin-permission-common@0.7.5-next.0 + +## @backstage/plugin-scaffolder-node@0.1.2-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/backend-plugin-api@0.5.1-next.2 + - @backstage/types@1.0.2 + - @backstage/plugin-scaffolder-common@1.2.7-next.2 + +## @backstage/plugin-scaffolder-react@1.3.0-next.3 + +### Patch Changes + +- d2488f5e54c: Add indication that the validators are running +- 8c40997df44: Updated dependency `@rjsf/core-v5` to `npm:@rjsf/core@5.5.2`. +- Updated dependencies + - @backstage/plugin-catalog-react@1.5.0-next.3 + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/core-components@0.13.0-next.3 + - @backstage/catalog-client@1.4.1-next.1 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/errors@1.1.5 + - @backstage/theme@0.2.19-next.0 + - @backstage/types@1.0.2 + - @backstage/version-bridge@1.0.4-next.0 + - @backstage/plugin-scaffolder-common@1.2.7-next.2 + +## @backstage/plugin-search@1.2.0-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.5.0-next.3 + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/core-components@0.13.0-next.3 + - @backstage/config@1.0.7 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/errors@1.1.5 + - @backstage/theme@0.2.19-next.0 + - @backstage/types@1.0.2 + - @backstage/version-bridge@1.0.4-next.0 + - @backstage/plugin-search-common@1.2.3-next.0 + - @backstage/plugin-search-react@1.5.2-next.3 + +## @backstage/plugin-search-backend-module-catalog@0.1.0-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/backend-common@0.18.4-next.2 + - @backstage/backend-plugin-api@0.5.1-next.2 + - @backstage/backend-tasks@0.5.1-next.2 + - @backstage/catalog-client@1.4.1-next.1 + - @backstage/config@1.0.7 + - @backstage/plugin-catalog-common@1.0.13-next.1 + - @backstage/plugin-permission-common@0.7.5-next.0 + - @backstage/plugin-search-backend-node@1.2.0-next.2 + - @backstage/plugin-search-common@1.2.3-next.0 + +## @backstage/plugin-search-backend-module-elasticsearch@1.2.0-next.3 + +### Patch Changes + +- 104b6b19487: fix ElasticSearch throwing error when index is missing +- Updated dependencies + - @backstage/backend-common@0.18.4-next.2 + - @backstage/backend-plugin-api@0.5.1-next.2 + - @backstage/config@1.0.7 + - @backstage/plugin-search-backend-node@1.2.0-next.2 + - @backstage/plugin-search-common@1.2.3-next.0 + +## @backstage/plugin-search-backend-module-techdocs@0.1.0-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/backend-common@0.18.4-next.2 + - @backstage/backend-plugin-api@0.5.1-next.2 + - @backstage/backend-tasks@0.5.1-next.2 + - @backstage/catalog-client@1.4.1-next.1 + - @backstage/config@1.0.7 + - @backstage/plugin-catalog-common@1.0.13-next.1 + - @backstage/plugin-permission-common@0.7.5-next.0 + - @backstage/plugin-search-backend-node@1.2.0-next.2 + - @backstage/plugin-search-common@1.2.3-next.0 + - @backstage/plugin-techdocs-node@1.6.1-next.3 + +## @backstage/plugin-search-react@1.5.2-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.0-next.3 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/theme@0.2.19-next.0 + - @backstage/types@1.0.2 + - @backstage/version-bridge@1.0.4-next.0 + - @backstage/plugin-search-common@1.2.3-next.0 + +## @backstage/plugin-sentry@0.5.2-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.5.0-next.3 + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/core-components@0.13.0-next.3 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/theme@0.2.19-next.0 + +## @backstage/plugin-shortcuts@0.3.9-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.0-next.3 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/theme@0.2.19-next.0 + - @backstage/types@1.0.2 + +## @backstage/plugin-sonarqube@0.6.6-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.5.0-next.3 + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/core-components@0.13.0-next.3 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/theme@0.2.19-next.0 + - @backstage/plugin-sonarqube-react@0.1.5-next.2 + +## @backstage/plugin-sonarqube-react@0.1.5-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/core-plugin-api@1.5.1-next.1 + +## @backstage/plugin-splunk-on-call@0.4.6-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.5.0-next.3 + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/core-components@0.13.0-next.3 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/theme@0.2.19-next.0 + +## @backstage/plugin-stack-overflow@0.1.13-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.0-next.3 + - @backstage/config@1.0.7 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/theme@0.2.19-next.0 + - @backstage/plugin-home@0.4.33-next.3 + - @backstage/plugin-search-common@1.2.3-next.0 + - @backstage/plugin-search-react@1.5.2-next.3 + +## @backstage/plugin-stackstorm@0.1.1-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.0-next.3 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/errors@1.1.5 + - @backstage/theme@0.2.19-next.0 + +## @backstage/plugin-tech-insights@0.3.9-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.5.0-next.3 + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/core-components@0.13.0-next.3 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/errors@1.1.5 + - @backstage/theme@0.2.19-next.0 + - @backstage/types@1.0.2 + - @backstage/plugin-tech-insights-common@0.2.10 + +## @backstage/plugin-tech-insights-backend@0.5.10-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/backend-common@0.18.4-next.2 + - @backstage/backend-tasks@0.5.1-next.2 + - @backstage/catalog-client@1.4.1-next.1 + - @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-node@0.4.2-next.2 + +## @backstage/plugin-tech-radar@0.6.3-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.0-next.3 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/theme@0.2.19-next.0 + +## @backstage/plugin-techdocs@1.6.1-next.3 + +### Patch Changes + +- 2e493480626: Fix a bug in sub-path navigation due to double addition of a sub-path if one was set up in `app.baseUrl`. +- Updated dependencies + - @backstage/plugin-catalog-react@1.5.0-next.3 + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/core-components@0.13.0-next.3 + - @backstage/config@1.0.7 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/errors@1.1.5 + - @backstage/integration@1.4.4-next.0 + - @backstage/integration-react@1.1.12-next.3 + - @backstage/theme@0.2.19-next.0 + - @backstage/plugin-search-common@1.2.3-next.0 + - @backstage/plugin-search-react@1.5.2-next.3 + - @backstage/plugin-techdocs-react@1.1.5-next.3 + +## @backstage/plugin-techdocs-addons-test-utils@1.0.12-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-app-api@1.7.0-next.3 + - @backstage/plugin-techdocs@1.6.1-next.3 + - @backstage/core-components@0.13.0-next.3 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/integration-react@1.1.12-next.3 + - @backstage/test-utils@1.3.0-next.3 + - @backstage/theme@0.2.19-next.0 + - @backstage/plugin-catalog@1.10.0-next.3 + - @backstage/plugin-search-react@1.5.2-next.3 + - @backstage/plugin-techdocs-react@1.1.5-next.3 + +## @backstage/plugin-techdocs-backend@1.6.1-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/backend-common@0.18.4-next.2 + - @backstage/backend-plugin-api@0.5.1-next.2 + - @backstage/catalog-client@1.4.1-next.1 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/integration@1.4.4-next.0 + - @backstage/plugin-catalog-common@1.0.13-next.1 + - @backstage/plugin-permission-common@0.7.5-next.0 + - @backstage/plugin-search-backend-module-techdocs@0.1.0-next.2 + - @backstage/plugin-search-common@1.2.3-next.0 + - @backstage/plugin-techdocs-node@1.6.1-next.3 + +## @backstage/plugin-techdocs-module-addons-contrib@1.0.12-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.0-next.3 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/integration@1.4.4-next.0 + - @backstage/integration-react@1.1.12-next.3 + - @backstage/theme@0.2.19-next.0 + - @backstage/plugin-techdocs-react@1.1.5-next.3 + +## @backstage/plugin-techdocs-node@1.6.1-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/backend-common@0.18.4-next.2 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/integration@1.4.4-next.0 + - @backstage/integration-aws-node@0.1.2 + - @backstage/plugin-search-common@1.2.3-next.0 + +## @backstage/plugin-techdocs-react@1.1.5-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/core-components@0.13.0-next.3 + - @backstage/config@1.0.7 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/version-bridge@1.0.4-next.0 + +## @backstage/plugin-todo@0.2.19-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.5.0-next.3 + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/core-components@0.13.0-next.3 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/errors@1.1.5 + - @backstage/theme@0.2.19-next.0 + +## @backstage/plugin-todo-backend@0.1.41-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/backend-common@0.18.4-next.2 + - @backstage/backend-plugin-api@0.5.1-next.2 + - @backstage/catalog-client@1.4.1-next.1 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/integration@1.4.4-next.0 + - @backstage/plugin-catalog-node@1.3.5-next.3 + +## @backstage/plugin-user-settings@0.7.2-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.5.0-next.3 + - @backstage/core-app-api@1.7.0-next.3 + - @backstage/core-components@0.13.0-next.3 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/errors@1.1.5 + - @backstage/theme@0.2.19-next.0 + - @backstage/types@1.0.2 + +## @backstage/plugin-user-settings-backend@0.1.8-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/backend-common@0.18.4-next.2 + - @backstage/backend-plugin-api@0.5.1-next.2 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + - @backstage/plugin-auth-node@0.2.13-next.2 + +## @backstage/plugin-vault@0.1.11-next.3 + +### Patch Changes + +- 7c7f8d38a51: Use `fetchApi` instead of raw `fetch` in order to pass auth header if necessary. +- Updated dependencies + - @backstage/plugin-catalog-react@1.5.0-next.3 + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/core-components@0.13.0-next.3 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/errors@1.1.5 + - @backstage/theme@0.2.19-next.0 + +## @backstage/plugin-xcmetrics@0.2.37-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.0-next.3 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/errors@1.1.5 + - @backstage/theme@0.2.19-next.0 + +## example-app@0.2.82-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-kubernetes@0.8.0-next.3 + - @backstage/plugin-scaffolder@1.13.0-next.3 + - @backstage/cli@0.22.6-next.3 + - @backstage/plugin-explore@0.4.2-next.3 + - @backstage/plugin-catalog-react@1.5.0-next.3 + - @backstage/plugin-scaffolder-react@1.3.0-next.3 + - @backstage/core-app-api@1.7.0-next.3 + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/plugin-techdocs@1.6.1-next.3 + - @backstage/core-components@0.13.0-next.3 + - @backstage/app-defaults@1.3.0-next.3 + - @backstage/config@1.0.7 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/integration-react@1.1.12-next.3 + - @backstage/theme@0.2.19-next.0 + - @backstage/plugin-airbrake@0.3.17-next.3 + - @backstage/plugin-apache-airflow@0.2.10-next.3 + - @backstage/plugin-api-docs@0.9.2-next.3 + - @backstage/plugin-azure-devops@0.2.8-next.3 + - @backstage/plugin-azure-sites@0.1.6-next.3 + - @backstage/plugin-badges@0.2.41-next.3 + - @backstage/plugin-catalog-common@1.0.13-next.1 + - @backstage/plugin-catalog-graph@0.2.29-next.3 + - @backstage/plugin-catalog-import@0.9.7-next.3 + - @backstage/plugin-circleci@0.3.17-next.3 + - @backstage/plugin-cloudbuild@0.3.17-next.3 + - @backstage/plugin-code-coverage@0.2.10-next.3 + - @backstage/plugin-cost-insights@0.12.6-next.3 + - @backstage/plugin-dynatrace@4.0.0-next.3 + - @backstage/plugin-entity-feedback@0.2.0-next.3 + - @backstage/plugin-gcalendar@0.3.13-next.3 + - @backstage/plugin-gcp-projects@0.3.36-next.3 + - @backstage/plugin-github-actions@0.5.17-next.3 + - @backstage/plugin-gocd@0.1.23-next.3 + - @backstage/plugin-graphiql@0.2.49-next.3 + - @backstage/plugin-home@0.4.33-next.3 + - @backstage/plugin-jenkins@0.7.16-next.3 + - @backstage/plugin-kafka@0.3.17-next.3 + - @backstage/plugin-lighthouse@0.4.2-next.3 + - @backstage/plugin-linguist@0.1.2-next.3 + - @backstage/plugin-linguist-common@0.1.0 + - @backstage/plugin-microsoft-calendar@0.1.2-next.3 + - @backstage/plugin-newrelic@0.3.35-next.3 + - @backstage/plugin-newrelic-dashboard@0.2.10-next.3 + - @backstage/plugin-org@0.6.7-next.3 + - @backstage/plugin-pagerduty@0.5.10-next.3 + - @backstage/plugin-permission-react@0.4.12-next.1 + - @backstage/plugin-playlist@0.1.8-next.3 + - @backstage/plugin-rollbar@0.4.17-next.3 + - @backstage/plugin-search@1.2.0-next.3 + - @backstage/plugin-search-common@1.2.3-next.0 + - @backstage/plugin-search-react@1.5.2-next.3 + - @backstage/plugin-sentry@0.5.2-next.3 + - @backstage/plugin-shortcuts@0.3.9-next.3 + - @backstage/plugin-stack-overflow@0.1.13-next.3 + - @backstage/plugin-stackstorm@0.1.1-next.3 + - @backstage/plugin-tech-insights@0.3.9-next.3 + - @backstage/plugin-tech-radar@0.6.3-next.3 + - @backstage/plugin-techdocs-module-addons-contrib@1.0.12-next.3 + - @backstage/plugin-techdocs-react@1.1.5-next.3 + - @backstage/plugin-todo@0.2.19-next.3 + - @backstage/plugin-user-settings@0.7.2-next.3 + - @internal/plugin-catalog-customized@0.0.9-next.3 + +## example-backend@0.2.82-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-kubernetes-backend@0.10.0-next.3 + - @backstage/plugin-catalog-backend@1.9.0-next.3 + - @backstage/plugin-code-coverage-backend@0.2.10-next.3 + - @backstage/plugin-lighthouse-backend@0.2.0-next.3 + - @backstage/plugin-auth-backend@0.18.2-next.3 + - @backstage/plugin-scaffolder-backend@1.13.0-next.3 + - @backstage/plugin-search-backend-module-elasticsearch@1.2.0-next.3 + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/plugin-events-backend@0.2.5-next.3 + - example-app@0.2.82-next.3 + - @backstage/backend-common@0.18.4-next.2 + - @backstage/backend-tasks@0.5.1-next.2 + - @backstage/catalog-client@1.4.1-next.1 + - @backstage/config@1.0.7 + - @backstage/integration@1.4.4-next.0 + - @backstage/plugin-adr-backend@0.3.2-next.3 + - @backstage/plugin-app-backend@0.3.44-next.2 + - @backstage/plugin-auth-node@0.2.13-next.2 + - @backstage/plugin-azure-devops-backend@0.3.23-next.2 + - @backstage/plugin-azure-sites-backend@0.1.6-next.2 + - @backstage/plugin-badges-backend@0.1.38-next.3 + - @backstage/plugin-catalog-node@1.3.5-next.3 + - @backstage/plugin-entity-feedback-backend@0.1.2-next.3 + - @backstage/plugin-events-node@0.2.5-next.2 + - @backstage/plugin-explore-backend@0.0.6-next.2 + - @backstage/plugin-graphql-backend@0.1.34-next.3 + - @backstage/plugin-jenkins-backend@0.1.34-next.3 + - @backstage/plugin-kafka-backend@0.2.37-next.3 + - @backstage/plugin-linguist-backend@0.2.1-next.3 + - @backstage/plugin-permission-backend@0.5.19-next.2 + - @backstage/plugin-permission-common@0.7.5-next.0 + - @backstage/plugin-permission-node@0.7.7-next.2 + - @backstage/plugin-playlist-backend@0.2.7-next.3 + - @backstage/plugin-proxy-backend@0.2.38-next.2 + - @backstage/plugin-rollbar-backend@0.1.41-next.2 + - @backstage/plugin-scaffolder-backend-module-rails@0.4.12-next.3 + - @backstage/plugin-search-backend@1.3.0-next.2 + - @backstage/plugin-search-backend-module-pg@0.5.5-next.2 + - @backstage/plugin-search-backend-node@1.2.0-next.2 + - @backstage/plugin-search-common@1.2.3-next.0 + - @backstage/plugin-tech-insights-backend@0.5.10-next.3 + - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.28-next.2 + - @backstage/plugin-tech-insights-node@0.4.2-next.2 + - @backstage/plugin-techdocs-backend@1.6.1-next.3 + - @backstage/plugin-todo-backend@0.1.41-next.3 + +## example-backend-next@0.0.10-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-kubernetes-backend@0.10.0-next.3 + - @backstage/plugin-catalog-backend@1.9.0-next.3 + - @backstage/plugin-scaffolder-backend@1.13.0-next.3 + - @backstage/backend-defaults@0.1.9-next.2 + - @backstage/plugin-app-backend@0.3.44-next.2 + - @backstage/plugin-auth-node@0.2.13-next.2 + - @backstage/plugin-permission-backend@0.5.19-next.2 + - @backstage/plugin-permission-common@0.7.5-next.0 + - @backstage/plugin-permission-node@0.7.7-next.2 + - @backstage/plugin-search-backend@1.3.0-next.2 + - @backstage/plugin-search-backend-module-catalog@0.1.0-next.2 + - @backstage/plugin-search-backend-module-explore@0.1.0-next.1 + - @backstage/plugin-search-backend-module-techdocs@0.1.0-next.2 + - @backstage/plugin-search-backend-node@1.2.0-next.2 + - @backstage/plugin-techdocs-backend@1.6.1-next.3 + - @backstage/plugin-todo-backend@0.1.41-next.3 + +## e2e-test@0.2.2-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/create-app@0.4.39-next.3 + - @backstage/cli-common@0.1.12 + - @backstage/errors@1.1.5 + +## techdocs-cli-embedded-app@0.2.81-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/cli@0.22.6-next.3 + - @backstage/core-app-api@1.7.0-next.3 + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/plugin-techdocs@1.6.1-next.3 + - @backstage/core-components@0.13.0-next.3 + - @backstage/app-defaults@1.3.0-next.3 + - @backstage/config@1.0.7 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/integration-react@1.1.12-next.3 + - @backstage/test-utils@1.3.0-next.3 + - @backstage/theme@0.2.19-next.0 + - @backstage/plugin-catalog@1.10.0-next.3 + - @backstage/plugin-techdocs-react@1.1.5-next.3 + +## @internal/plugin-catalog-customized@0.0.9-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.5.0-next.3 + - @backstage/plugin-catalog@1.10.0-next.3 + +## @internal/plugin-todo-list@1.0.12-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.0-next.3 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/theme@0.2.19-next.0 diff --git a/microsite/data/plugins/api-spectral-linter.yaml b/microsite/data/plugins/api-spectral-linter.yaml new file mode 100644 index 0000000000..292279e324 --- /dev/null +++ b/microsite/data/plugins/api-spectral-linter.yaml @@ -0,0 +1,10 @@ +--- +title: API Spectral Linter +author: dweber019 +authorUrl: https://github.com/dweber019 +category: Linting +description: API Spectral Linter is a quality assurance tool that checks the compliance of API's specifications Spectral rule sets. +documentation: https://github.com/dweber019/backstage-plugin-api-docs-spectral-linter +iconUrl: https://raw.githubusercontent.com/dweber019/backstage-plugin-api-docs-spectral-linter/main/plugins/api-docs-spectral-linter/docs/pluginIcon.png +npmPackageName: '@dweber019/backstage-plugin-api-docs-spectral-linter' +addedDate: '2023-03-27' diff --git a/microsite/data/plugins/bulletin-board.yaml b/microsite/data/plugins/bulletin-board.yaml new file mode 100644 index 0000000000..67791f6f84 --- /dev/null +++ b/microsite/data/plugins/bulletin-board.yaml @@ -0,0 +1,10 @@ +--- +title: Bulletin Board +author: v-ngu +authorUrl: https://github.com/v-ngu +category: Discovery +description: Share interesting ideas, news and links with your teammates within Backstage. +documentation: https://github.com/v-ngu/backstage-plugin-bulletin-board +iconUrl: /img/bulletin-board.png +npmPackageName: 'backstage-plugin-bulletin-board' +addedDate: '2023-04-01' diff --git a/microsite/package.json b/microsite/package.json index 09409518ee..76696ce939 100644 --- a/microsite/package.json +++ b/microsite/package.json @@ -32,7 +32,7 @@ "@docusaurus/core": "2.4.0", "@docusaurus/plugin-client-redirects": "^2.3.1", "@docusaurus/preset-classic": "2.4.0", - "@swc/core": "^1.3.36", + "@swc/core": "^1.3.46", "clsx": "^1.1.1", "docusaurus-plugin-sass": "^0.2.3", "prism-react-renderer": "^1.3.5", diff --git a/microsite/sidebars.json b/microsite/sidebars.json index 09727685a0..b3e6f07b0e 100644 --- a/microsite/sidebars.json +++ b/microsite/sidebars.json @@ -277,15 +277,16 @@ "items": [ "auth/auth0/provider", "auth/atlassian/provider", - "auth/bitbucket/provider", "auth/microsoft/provider", + "auth/microsoft/easy-auth", + "auth/bitbucket/provider", "auth/github/provider", "auth/gitlab/provider", "auth/google/provider", "auth/google/gcp-iap-auth", "auth/okta/provider", - "auth/onelogin/provider", - "auth/oauth2-proxy/provider" + "auth/oauth2-proxy/provider", + "auth/onelogin/provider" ] }, "auth/identity-resolver", diff --git a/microsite/static/img/bulletin-board.png b/microsite/static/img/bulletin-board.png new file mode 100644 index 0000000000..918d81827a Binary files /dev/null and b/microsite/static/img/bulletin-board.png differ diff --git a/microsite/yarn.lock b/microsite/yarn.lock index 021d21a043..8b254d6d9a 100644 --- a/microsite/yarn.lock +++ b/microsite/yarn.lock @@ -2624,90 +2624,92 @@ __metadata: languageName: node linkType: hard -"@swc/core-darwin-arm64@npm:1.3.42": - version: 1.3.42 - resolution: "@swc/core-darwin-arm64@npm:1.3.42" +"@swc/core-darwin-arm64@npm:1.3.46": + version: 1.3.46 + resolution: "@swc/core-darwin-arm64@npm:1.3.46" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@swc/core-darwin-x64@npm:1.3.42": - version: 1.3.42 - resolution: "@swc/core-darwin-x64@npm:1.3.42" +"@swc/core-darwin-x64@npm:1.3.46": + version: 1.3.46 + resolution: "@swc/core-darwin-x64@npm:1.3.46" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@swc/core-linux-arm-gnueabihf@npm:1.3.42": - version: 1.3.42 - resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.42" +"@swc/core-linux-arm-gnueabihf@npm:1.3.46": + version: 1.3.46 + resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.46" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@swc/core-linux-arm64-gnu@npm:1.3.42": - version: 1.3.42 - resolution: "@swc/core-linux-arm64-gnu@npm:1.3.42" +"@swc/core-linux-arm64-gnu@npm:1.3.46": + version: 1.3.46 + resolution: "@swc/core-linux-arm64-gnu@npm:1.3.46" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-arm64-musl@npm:1.3.42": - version: 1.3.42 - resolution: "@swc/core-linux-arm64-musl@npm:1.3.42" +"@swc/core-linux-arm64-musl@npm:1.3.46": + version: 1.3.46 + resolution: "@swc/core-linux-arm64-musl@npm:1.3.46" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@swc/core-linux-x64-gnu@npm:1.3.42": - version: 1.3.42 - resolution: "@swc/core-linux-x64-gnu@npm:1.3.42" +"@swc/core-linux-x64-gnu@npm:1.3.46": + version: 1.3.46 + resolution: "@swc/core-linux-x64-gnu@npm:1.3.46" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-x64-musl@npm:1.3.42": - version: 1.3.42 - resolution: "@swc/core-linux-x64-musl@npm:1.3.42" +"@swc/core-linux-x64-musl@npm:1.3.46": + version: 1.3.46 + resolution: "@swc/core-linux-x64-musl@npm:1.3.46" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@swc/core-win32-arm64-msvc@npm:1.3.42": - version: 1.3.42 - resolution: "@swc/core-win32-arm64-msvc@npm:1.3.42" +"@swc/core-win32-arm64-msvc@npm:1.3.46": + version: 1.3.46 + resolution: "@swc/core-win32-arm64-msvc@npm:1.3.46" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@swc/core-win32-ia32-msvc@npm:1.3.42": - version: 1.3.42 - resolution: "@swc/core-win32-ia32-msvc@npm:1.3.42" +"@swc/core-win32-ia32-msvc@npm:1.3.46": + version: 1.3.46 + resolution: "@swc/core-win32-ia32-msvc@npm:1.3.46" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@swc/core-win32-x64-msvc@npm:1.3.42": - version: 1.3.42 - resolution: "@swc/core-win32-x64-msvc@npm:1.3.42" +"@swc/core-win32-x64-msvc@npm:1.3.46": + version: 1.3.46 + resolution: "@swc/core-win32-x64-msvc@npm:1.3.46" conditions: os=win32 & cpu=x64 languageName: node linkType: hard -"@swc/core@npm:^1.3.36": - version: 1.3.42 - resolution: "@swc/core@npm:1.3.42" +"@swc/core@npm:^1.3.46": + version: 1.3.46 + resolution: "@swc/core@npm:1.3.46" dependencies: - "@swc/core-darwin-arm64": 1.3.42 - "@swc/core-darwin-x64": 1.3.42 - "@swc/core-linux-arm-gnueabihf": 1.3.42 - "@swc/core-linux-arm64-gnu": 1.3.42 - "@swc/core-linux-arm64-musl": 1.3.42 - "@swc/core-linux-x64-gnu": 1.3.42 - "@swc/core-linux-x64-musl": 1.3.42 - "@swc/core-win32-arm64-msvc": 1.3.42 - "@swc/core-win32-ia32-msvc": 1.3.42 - "@swc/core-win32-x64-msvc": 1.3.42 + "@swc/core-darwin-arm64": 1.3.46 + "@swc/core-darwin-x64": 1.3.46 + "@swc/core-linux-arm-gnueabihf": 1.3.46 + "@swc/core-linux-arm64-gnu": 1.3.46 + "@swc/core-linux-arm64-musl": 1.3.46 + "@swc/core-linux-x64-gnu": 1.3.46 + "@swc/core-linux-x64-musl": 1.3.46 + "@swc/core-win32-arm64-msvc": 1.3.46 + "@swc/core-win32-ia32-msvc": 1.3.46 + "@swc/core-win32-x64-msvc": 1.3.46 + peerDependencies: + "@swc/helpers": ^0.5.0 dependenciesMeta: "@swc/core-darwin-arm64": optional: true @@ -2729,7 +2731,7 @@ __metadata: optional: true "@swc/core-win32-x64-msvc": optional: true - checksum: 5c28c03ee6a4e1f630c4a519b56d7e23a0102f70fad977a3ab144a3da96231cf4849e473cdc9ee7be6b9266ba0838d0bc0b6b3575a75540f302befe96cc9606e + checksum: bd1773bf9e7940b540d4f7a36bf109594562fcca338ec60d5a95bd1bc9fc2e3e632351c3c9cf803f6947bf7ebc200e5260d034c49db8d28689d96d031e2836b1 languageName: node linkType: hard @@ -3732,7 +3734,7 @@ __metadata: "@docusaurus/plugin-client-redirects": ^2.3.1 "@docusaurus/preset-classic": 2.4.0 "@spotify/prettier-config": ^14.0.0 - "@swc/core": ^1.3.36 + "@swc/core": ^1.3.46 "@tsconfig/docusaurus": ^1.0.6 "@types/webpack-env": ^1.18.0 clsx: ^1.1.1 diff --git a/mkdocs.yml b/mkdocs.yml index 4b5c2cf7a2..4a75c3f67f 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -6,6 +6,7 @@ edit_uri: edit/master/docs plugins: - techdocs-core +# For sidebar navigation on https://backstage.io/, see `microsite/sidebars.json` nav: - Overview: - What is Backstage?: 'overview/what-is-backstage.md' diff --git a/package.json b/package.json index e6f04eac95..5bf140d66b 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,7 @@ "@types/react": "^17", "@types/react-dom": "^17" }, - "version": "1.13.0-next.2", + "version": "1.13.0-next.3", "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 b33264451c..e8ad84d5d7 100644 --- a/packages/app-defaults/CHANGELOG.md +++ b/packages/app-defaults/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/app-defaults +## 1.3.0-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-app-api@1.7.0-next.3 + - @backstage/core-components@0.13.0-next.3 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/theme@0.2.19-next.0 + - @backstage/plugin-permission-react@0.4.12-next.1 + ## 1.3.0-next.2 ### Patch Changes diff --git a/packages/app-defaults/package.json b/packages/app-defaults/package.json index 08b726cbbe..b8bbec2227 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.0-next.2", + "version": "1.3.0-next.3", "publishConfig": { "access": "public", "main": "dist/index.esm.js", diff --git a/packages/app/CHANGELOG.md b/packages/app/CHANGELOG.md index 3cc4aa0190..2cfd48a509 100644 --- a/packages/app/CHANGELOG.md +++ b/packages/app/CHANGELOG.md @@ -1,5 +1,74 @@ # example-app +## 0.2.82-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-kubernetes@0.8.0-next.3 + - @backstage/plugin-scaffolder@1.13.0-next.3 + - @backstage/cli@0.22.6-next.3 + - @backstage/plugin-explore@0.4.2-next.3 + - @backstage/plugin-catalog-react@1.5.0-next.3 + - @backstage/plugin-scaffolder-react@1.3.0-next.3 + - @backstage/core-app-api@1.7.0-next.3 + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/plugin-techdocs@1.6.1-next.3 + - @backstage/core-components@0.13.0-next.3 + - @backstage/app-defaults@1.3.0-next.3 + - @backstage/config@1.0.7 + - @backstage/core-plugin-api@1.5.1-next.1 + - @backstage/integration-react@1.1.12-next.3 + - @backstage/theme@0.2.19-next.0 + - @backstage/plugin-airbrake@0.3.17-next.3 + - @backstage/plugin-apache-airflow@0.2.10-next.3 + - @backstage/plugin-api-docs@0.9.2-next.3 + - @backstage/plugin-azure-devops@0.2.8-next.3 + - @backstage/plugin-azure-sites@0.1.6-next.3 + - @backstage/plugin-badges@0.2.41-next.3 + - @backstage/plugin-catalog-common@1.0.13-next.1 + - @backstage/plugin-catalog-graph@0.2.29-next.3 + - @backstage/plugin-catalog-import@0.9.7-next.3 + - @backstage/plugin-circleci@0.3.17-next.3 + - @backstage/plugin-cloudbuild@0.3.17-next.3 + - @backstage/plugin-code-coverage@0.2.10-next.3 + - @backstage/plugin-cost-insights@0.12.6-next.3 + - @backstage/plugin-dynatrace@4.0.0-next.3 + - @backstage/plugin-entity-feedback@0.2.0-next.3 + - @backstage/plugin-gcalendar@0.3.13-next.3 + - @backstage/plugin-gcp-projects@0.3.36-next.3 + - @backstage/plugin-github-actions@0.5.17-next.3 + - @backstage/plugin-gocd@0.1.23-next.3 + - @backstage/plugin-graphiql@0.2.49-next.3 + - @backstage/plugin-home@0.4.33-next.3 + - @backstage/plugin-jenkins@0.7.16-next.3 + - @backstage/plugin-kafka@0.3.17-next.3 + - @backstage/plugin-lighthouse@0.4.2-next.3 + - @backstage/plugin-linguist@0.1.2-next.3 + - @backstage/plugin-linguist-common@0.1.0 + - @backstage/plugin-microsoft-calendar@0.1.2-next.3 + - @backstage/plugin-newrelic@0.3.35-next.3 + - @backstage/plugin-newrelic-dashboard@0.2.10-next.3 + - @backstage/plugin-org@0.6.7-next.3 + - @backstage/plugin-pagerduty@0.5.10-next.3 + - @backstage/plugin-permission-react@0.4.12-next.1 + - @backstage/plugin-playlist@0.1.8-next.3 + - @backstage/plugin-rollbar@0.4.17-next.3 + - @backstage/plugin-search@1.2.0-next.3 + - @backstage/plugin-search-common@1.2.3-next.0 + - @backstage/plugin-search-react@1.5.2-next.3 + - @backstage/plugin-sentry@0.5.2-next.3 + - @backstage/plugin-shortcuts@0.3.9-next.3 + - @backstage/plugin-stack-overflow@0.1.13-next.3 + - @backstage/plugin-stackstorm@0.1.1-next.3 + - @backstage/plugin-tech-insights@0.3.9-next.3 + - @backstage/plugin-tech-radar@0.6.3-next.3 + - @backstage/plugin-techdocs-module-addons-contrib@1.0.12-next.3 + - @backstage/plugin-techdocs-react@1.1.5-next.3 + - @backstage/plugin-todo@0.2.19-next.3 + - @backstage/plugin-user-settings@0.7.2-next.3 + - @internal/plugin-catalog-customized@0.0.9-next.3 + ## 0.2.82-next.2 ### Patch Changes diff --git a/packages/app/package.json b/packages/app/package.json index 155f33250a..b9f64ddd75 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -1,6 +1,6 @@ { "name": "example-app", - "version": "0.2.82-next.2", + "version": "0.2.82-next.3", "private": true, "backstage": { "role": "frontend" diff --git a/packages/backend-next/CHANGELOG.md b/packages/backend-next/CHANGELOG.md index d325959c18..bb2599b189 100644 --- a/packages/backend-next/CHANGELOG.md +++ b/packages/backend-next/CHANGELOG.md @@ -1,5 +1,27 @@ # example-backend-next +## 0.0.10-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-kubernetes-backend@0.10.0-next.3 + - @backstage/plugin-catalog-backend@1.9.0-next.3 + - @backstage/plugin-scaffolder-backend@1.13.0-next.3 + - @backstage/backend-defaults@0.1.9-next.2 + - @backstage/plugin-app-backend@0.3.44-next.2 + - @backstage/plugin-auth-node@0.2.13-next.2 + - @backstage/plugin-permission-backend@0.5.19-next.2 + - @backstage/plugin-permission-common@0.7.5-next.0 + - @backstage/plugin-permission-node@0.7.7-next.2 + - @backstage/plugin-search-backend@1.3.0-next.2 + - @backstage/plugin-search-backend-module-catalog@0.1.0-next.2 + - @backstage/plugin-search-backend-module-explore@0.1.0-next.1 + - @backstage/plugin-search-backend-module-techdocs@0.1.0-next.2 + - @backstage/plugin-search-backend-node@1.2.0-next.2 + - @backstage/plugin-techdocs-backend@1.6.1-next.3 + - @backstage/plugin-todo-backend@0.1.41-next.3 + ## 0.0.10-next.2 ### Patch Changes diff --git a/packages/backend-next/package.json b/packages/backend-next/package.json index 9ad6d2f7a1..f8b1e4138f 100644 --- a/packages/backend-next/package.json +++ b/packages/backend-next/package.json @@ -1,6 +1,6 @@ { "name": "example-backend-next", - "version": "0.0.10-next.2", + "version": "0.0.10-next.3", "main": "dist/index.cjs.js", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/packages/backend-openapi-utils/.eslintrc.js b/packages/backend-openapi-utils/.eslintrc.js new file mode 100644 index 0000000000..e2a53a6ad2 --- /dev/null +++ b/packages/backend-openapi-utils/.eslintrc.js @@ -0,0 +1 @@ +module.exports = require('@backstage/cli/config/eslint-factory')(__dirname); diff --git a/packages/backend-openapi-utils/CHANGELOG.md b/packages/backend-openapi-utils/CHANGELOG.md new file mode 100644 index 0000000000..9887ddf8d5 --- /dev/null +++ b/packages/backend-openapi-utils/CHANGELOG.md @@ -0,0 +1,7 @@ +# @backstage/backend-openapi-utils + +## 0.0.1-next.0 + +### Patch Changes + +- 62fe726fdc5: New plugin! Primary focus is to support types on `Router`s in backend packages. Developers can use the `ApiRouter` from this package in their packages to support a typed experience based on their OpenAPI specs. The `ApiRouter` supports request bodies, response bodies, query parameters and path parameters, as well as full path-based context of the above. This means no more guessing on an endpoint like `req.post('/not-my-route', (req, res)=>{res.send(req.body.badparam)})`. Typescript would catch `/not-my-route`, `req.body.badparam`, `res.send(req.body.badparam)`. diff --git a/packages/backend-openapi-utils/README.md b/packages/backend-openapi-utils/README.md new file mode 100644 index 0000000000..51455ccccb --- /dev/null +++ b/packages/backend-openapi-utils/README.md @@ -0,0 +1,45 @@ +# @backstage/openapi-utils + +## Summary + +This package is meant to provide a typed Express router for an OpenAPI spec. Based on the [`oatx`](https://github.com/varanauskas/oatx) library and adapted to override Express values. + +## Getting Started + +### Configuration + +1. Run `yarn --cwd backstage-cli package schema:openapi:generate` to translate your `src/schema/openapi.yaml` to a new Typescript file in `src/schema/openapi.ts`. In the case of projects that require linting + a license header, you will need to do this manually. + +2. In your plugin's `src/service/createRouter.ts`, + +```ts +import {ApiRouter} from `@backstage/backend-openapi-utils`; +import spec from '../schema/openapi' +... + +export function createRouter(){ + const router = Router() as ApiRouter; + ... +} +``` + +### Limitations + +1. `as const` makes all fields `readonly` + To ensure a good DX of using a simple imported JSON spec, we want to remove any type issues between `readonly` arrays and mutable arrays. Typescript does not allow them to be compared, so converting all imports from the `openapi3-ts` library to `readonly` is important. This is achieved through the `ImmutableObject` type in `types/immutable.ts`. + +```ts +... +// We want an interface like this, +Router() as ApiRouter + +// Not an interface like this, +Router() as ApiRouter> +... +``` + +## Future Work + +### Runtime validation + +Using a package like [`express-openapi-validator`](https://www.npmjs.com/package/express-openapi-validator), would allow us to remove [validation of request bodies with `AJV`](https://github.com/backstage/backstage/blob/master/plugins/catalog-backend/src/service/util.ts#L58). However, `AJV` currently doesn't have support for OpenAPI 3.1 and `express-openapi-validator` enforces full URL matching for paths, meaning it cannot be mounted at the router level. diff --git a/packages/backend-openapi-utils/api-report.md b/packages/backend-openapi-utils/api-report.md new file mode 100644 index 0000000000..180a7846ed --- /dev/null +++ b/packages/backend-openapi-utils/api-report.md @@ -0,0 +1,644 @@ +## API Report File for "@backstage/backend-openapi-utils" + +> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). + +```ts +import type { ContentObject } from 'openapi3-ts'; +import type core from 'express-serve-static-core'; +import { FromSchema } from 'json-schema-to-ts'; +import { JSONSchema7 } from 'json-schema-to-ts'; +import type { OpenAPIObject } from 'openapi3-ts'; +import type { ParameterObject } from 'openapi3-ts'; +import type { ReferenceObject } from 'openapi3-ts'; +import type { RequestBodyObject } from 'openapi3-ts'; +import type { ResponseObject } from 'openapi3-ts'; +import { Router } from 'express'; +import type { SchemaObject } from 'openapi3-ts'; + +// @public +export interface ApiRouter extends Router { + // (undocumented) + all: DocRequestMatcher; + // (undocumented) + delete: DocRequestMatcher; + // (undocumented) + get: DocRequestMatcher; + // (undocumented) + head: DocRequestMatcher; + // (undocumented) + options: DocRequestMatcher; + // (undocumented) + patch: DocRequestMatcher; + // (undocumented) + post: DocRequestMatcher; + // (undocumented) + put: DocRequestMatcher; +} + +// @public (undocumented) +type ComponentRef< + Doc extends RequiredDoc, + Type extends ComponentTypes, + Ref extends ImmutableReferenceObject, +> = Ref extends { + $ref: `#/components/${Type}/${infer Name}`; +} + ? Name extends keyof Doc['components'][Type] + ? Doc['components'][Type][Name] extends ImmutableReferenceObject + ? ComponentRef + : Doc['components'][Type][Name] + : never + : never; + +// @public (undocumented) +type ComponentTypes = Extract< + keyof Doc['components'], + string +>; + +// @public (undocumented) +type ConvertAll = []> = T extends [ + infer First extends JSONSchema7, + ...infer Rest, +] + ? ConvertAll]> + : R; + +// @public (undocumented) +interface CookieObject extends ParameterObject { + // (undocumented) + in: 'cookie'; + // (undocumented) + style?: 'form'; +} + +// @public (undocumented) +type CookieSchema< + Doc extends RequiredDoc, + Path extends PathTemplate>, + Method extends DocPathMethod, +> = ParametersSchema, Method, ImmutableCookieObject>; + +// @public (undocumented) +type DiscriminateUnion = Extract< + T, + Record +>; + +// @public (undocumented) +type DocOperation< + Doc extends RequiredDoc, + Path extends keyof Doc['paths'], + Method extends keyof Doc['paths'][Path], +> = Doc['paths'][Path][Method]; + +// @public (undocumented) +type DocParameter< + Doc extends RequiredDoc, + Path extends Extract, + Method extends keyof Doc['paths'][Path], + Parameter extends keyof Doc['paths'][Path][Method]['parameters'], +> = DocOperation< + Doc, + Path, + Method +>['parameters'][Parameter] extends ImmutableReferenceObject + ? 'parameters' extends ComponentTypes + ? ComponentRef< + Doc, + 'parameters', + DocOperation['parameters'][Parameter] + > + : never + : DocOperation['parameters'][Parameter]; + +// @public (undocumented) +type DocParameters< + Doc extends RequiredDoc, + Path extends Extract, + Method extends keyof Doc['paths'][Path], +> = DocOperation['parameters'] extends ReadonlyArray + ? { + [Index in keyof DocOperation< + Doc, + Path, + Method + >['parameters']]: DocParameter; + } + : never; + +// @public +type DocPath< + Doc extends PathDoc, + Path extends PathTemplate>, +> = ValueOf<{ + [Template in Extract< + keyof Doc['paths'], + string + >]: Path extends PathTemplate